📱 Aplikacja mobilna w wersji 1.4.0.GPS - opis zmian

Nowa wersja aplikacji mobilnej 1.4.0.GPS

została właśnie zgłoszona do publikacji w Google Play

image

dodaliśmy ją też do naszego serwisu OTA
https://powiedz.co/ota/

:key: Jest to wersja podpisana tym samym kluczem co wersja opublikowana przez Google Play. Dzięki temu powinno dać się zaktualizować wersję zainstalowaną z Google Play, pobierając z OTA (gdy wydana zostanie kolejna wersja przez Google Play, to też się będzie automatycznie aktualizować).

Co nowego

Poprawki w raportowaniu lokalizacji

Nie odczytujemy już lokalizacji bezpośrednio z GPS-a, przełączyliśmy się na API Android Fused Location Provider

Stosujemy takie parametry:

  • UPDATE_INTERVAL_IN_MILLISECONDS = 30000; // 30 sec
  • FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS = UPDATE_INTERVAL_IN_MILLISECONDS / 2;
  • LOCATION_DISTANCE = 10f;

Czyli zgłaszamy do API, że co 30 sekund chcemy otrzymać aktualizację lokalizacji (chyba że inna aplikacja [np nawigacja czy mapa] dostała aktualizacje lokalizacji to wtedy chcemy znać dostać aktualizację co 15 sekund). Raportujemy tylko zmiany większe niż 10 metrów.

Tu jest link do tego miejsca w kodzie gdyby ktoś chciał sobie skopiować to i eksperymentować z innymi parametrami:

O tym, że działa raportowanie lokalizacji informujemy w osobnej notyfikacji

można na tej notyfikacji:

  1. Zobaczyć ile zmian lokalizacji zostało wykrytych
  2. Zobaczyć ile zmian zostało zaraportowanych do bramki
  3. Zobaczyć aktualne współrzędne urządzenia i dokładność z jaką je znamy
  4. Wymusić pobranie i wysłanie aktualnej lokalizacji do bramki
  5. Wyłączyć raportowanie lokalizacji do bramki

ilości 1. i 2. mogą być różne (2. może być mniejsze od 1.), bo jeżeli w momencie, kiedy zarejestrowaliśmy zmianę lokalizacji, nie mamy transmisji danych, to próba wysłania się nie powiedzie. Nie buforujemy zmian lokalizacji i nie wysyłamy ich po wznowieniu transmisji danych, bo powodowałoby niepotrzebne uruchamianie automatyzacji (zmiana strefy), co mogłoby być gorsze niż brak informacji.

Raportowanie statusu baterii

Dodaliśmy raportowanie stanu baterii. Na początku dane o stanie baterii (ilość procent) raportujemy tylko w momencie wysyłania danych o lokalizacji. Z czasem dodamy porządniejszą obsługę sensorów dostępnych w telefonie i będziemy raportować zmiany online.

:warning: Rejestrację sensorów robimy przy logowaniu z aplikacji mobilnej - żeby pojawił się sensor z baterią trzeba wylogować się z aplikacji i zalogować ponownie.

tu powinniśmy mieć już nową encję - sensor bateria z telefonu:

oczywiście możemy teraz zmienić jej nazwę i dodać do interfejsu

np na karcie typu obraz

oczywiście ze stosownym pięknym obrazem z galerii :slight_smile:

po kliknięciu na ikonkę baterii, możemy mieć coś takiego

Oczywiście możemy dodać sobie automatyzację bazującą na stanie baterii w telefonie i np. przed wyjściem do pracy informować, że stan baterii jest niski więc trzeba zabrać ładowarkę… itp

Możemy też zapytać o status baterii (tak samo jak o status każdego sensora w systemie):

Wysłanie komendy (zapytania/żądania) do aplikacji mobilnej z bramki

Usługa ais_ai_service.mob_request pozwala na wysłanie komendy do aplikacji mobilnej.
Jest to realizowane tym samym mechanizmem ( Firebase Cloud Messaging) co usługa ais_ai_service.mob_notify, z tą tylko różnicą, że nie wysyłamy powiadomienia ale komendę do wykonania. Więcej o FCM:

Obecnie (aplikacja mobilna w wersji 1.4.0.GPS) są dostępne:

komenda dane/parametry opis
micOn Zdalne włączenie mikrofonu na urządzeniu w celu odebrania komendy głosowej
locationUpdate Wysłania żądania aktualizacji lokalizacji, uruchomienie serwisu lokalizacji na 30 sekund
locationServiceOn Zdalne włączenie serwisu lokalizacji na telefonie
locationServiceOff Zdalne wyłączenie serwisu lokalizacji na telefonie
hotWordServiceOn Zdalne włączenie serwisu nasłuchiwania słowa aktywującego komendę głosową na telefonie
hotWordServiceOff Zdalne wyłączenie serwisu nasłuchiwania słowa aktywującego komendę głosową na telefonie
audioServiceOn Zdalne włączenie serwisu odtwarzacza audio na telefonie
audioServiceOff Zdalne wyłączenie serwisu odtwarzacza audio na telefonie
sayIt { “text”: “Cześć co słychać” } Przesłanie do telefonu tekstu do powiedzenia
playAudio { “url”: “https://an.cdn.eurozet.pl/ant-kat.mp3” } Przesłanie do telefonu adresu audio do odtwarzania
playAudio { “url”: “https://an.cdn.eurozet.pl/ant-kat.mp3” } Przesłanie do telefonu adresu audio do odtwarzania
stopAudio Zdalne zatrzymanie odtwarzania audio na telefonie
findPhone Zdalne włączenie wyszukiwania telefonu - telefon zwiększa głośność na 100%, mówi “Tu jestem” i dzwoni

Testowanie komendy

Działanie usługi można wypróbować w narzędziach deweloperskich

Dodanie komendy do automatyzacji

Komendę wysyłaną do telefonu tak samo jak każdą usługę możemy uruchomić w automatyzacji. Przykładowo dodajemy automatyzację Zlokalizuj telefon Jolki która wyśle do telefonu Jolki żądanie aktualizacji lokalizacji i po 10 sekundach sprawdzi gdzie jest osoba o imieniu Jolka:

Każdą automatyzację możemy uruchomić komendą głosową: Uruchom <nazwa automatyzacji

4 polubienia

Za pomocą usług:

locationServiceOn Zdalne włączenie serwisu lokalizacji na telefonie
locationServiceOff Zdalne wyłączenie serwisu lokalizacji na telefonie

Możemy oczywiście optymalizować działanie serwisu lokalizacji na telefonie, np. automatyzując wyłączenie o określonej porze (gdy jesteśmy w domu czy w pracy). W ten sposób nie będziemy niepotrzebnie zużywali baterii, gdy jesteśmy w miejscu, gdzie nie potrzebujemy raportować lokalizacji.

Pomysły

  1. Nie lokalizować gdy mamy połączenie WiFi

Myślimy nad tym, żeby zarządzanie usługą lokalizacji zrobić bardziej “smart” i prawdopodobnie (jeżeli to rozwiązanie się sprawdzi w naszych testach) to zaimplementujemy automatyczne wyłączanie usługi lokalizacji w aplikacji mobilnej, gdy telefon będzie miał połączenie wifi.
Przed wyłączeniem wyślemy lokalizację, a gdy telefon straci połączenie wifi, to ponownie włączymy usługę lokalizacji.

wystarczy, że miejsca w których mamy wifi zdefiniujemy jako strefy i to powinno działać lepiej :slight_smile:

  1. Reverse geocoding

Wyświetlanie współrzędnych w powiadomieniu jest raczej mało czytelne. Dlatego docelowo chcemy zrobić odwrotne geokodowanie - czyli zamianę położenia na czytelny adres lub nazwę miejsca.

Dzięki temu “Zlokalizuj telefon Jolki” będzie mogło zwracać nazwę strefy lub adres :tada:

Jesteśmy otwarci :slight_smile: Twoja pomoc jest mile widziana!

Kod aplikacji jest dostępny w Github:

Prosimy o zgłaszanie błędów i pomysłów na usprawnienie aplikacji bezpośrednio w Github - mile widziany jest wkład, który pomoże ulepszyć AIS :wave: . Dzięki :heart:

2 polubienia

Testujemy, testujemy… :slight_smile: Wyłączenie lokalizacji w strefie WiFi fajny pomysł. Z doświadczenia z GPSLoggerem faktycznie zdarza się że będąc w domu gdy ilość satelit maleje pokazuje że jestem np. 100m za strefą. Może zablokować raportowanie przy małej ilości satelit bo to świadczy o tym że jesteśmy w budynku.
Teraz to rozwiązałem w ten sposób że przy person mam GPSLoggera i Wifi i działa idealnie.
U mnie powyższy pomysł chyba się nie sprawdzi bo w nocy wyłączam WiFi. Oczywiście można to obejść automatyzacją że raportowanie geolokalizacji wyłącza się np. w danych godzinach nocnych ewentualnie lunatykowanie w nocy i otwarcie drzwi włącza raportowanie. :wink:
Problem też będą mieli użytkownicy których dla oszczędzania energii wyłącza się wifi nawet w ciągu dnia.

Jeśli chodzi o błędy to u mnie w Lenovo K6 Note jest inny problem. Aplikacja AIS działająca w tle nagle znika… Player oraz GPS. Wczoraj pobrałem aktualną wersję i to samo. Z playerem tak było od początku a teraz GPS i to jest większy problem.
Tak jak pisałem wcześniej w telefonie wszystko sprawdziłem kilka razy i mam takie same ustawienia jak przy GPSLogger który nigdy nie zniknął. Spróbuję jeszcze wyczyścić cache, odinstalować apke i zainstalować ponownie. Przychodzi mi jeszcze na myśl czy korzystanie z tych samych sensorów np. GPS nie ubija waszej aplikacji? Wiadomo że nie powinno bo przy korzystaniu z GPSLogger np. google i inne też korzystają z sensora GPS i wszystko jest ok.

Hej, dostaliśmy kilka raportów błędów - dzięki :slight_smile:

z dobrych wiadomości - w tej wersji nie mamy, żadnego zgłoszenia typu ARN (aplikacja nie odpowiada)

Mamy kilka crashes, w tym na Lenovo Lenovo TAB3 10 Plus (TB3-X70L), 2048MB RAM, Android 6.0

Przyjrzymy się temu. Jeżeli nie jest to spowodowane tym, że Andoid ma za mało pamięci (bo są uruchamiane inne procesy) i uruchamia LMK (Low Memory Killer) który ubija co się da/rusza żeby nie wywalił się system https://source.android.com/devices/tech/perf/lmkd
to oczywiście poprawimy ten błąd :slight_smile:

Dodaliśmy:

  1. sprawdzanie adresu:

  2. automatyczne wyłączanie usługi lokalizacji gdy jest połączenie wifi

  3. automatyczne włączanie usługi lokalizacji gdy nie ma wifi

Testujemy to jeszcze u siebie i wydamy kolejną wersję z poprawkami jak będzie OK.

1 polubienie

Coś w pętli wysyłającej jest nie tak. Bo dokładność jest ok np. 13m, Wykryte 46, po ręcznym klikaniu raportuj. Przy włączonym i wyłączonym WiFi. Transmisja danych GSM włączona. Wysłanych TYLKO 5.