Nowa wersja aplikacji mobilnej 1.4.0.GPS
została właśnie zgłoszona do publikacji w Google Play
dodaliśmy ją też do naszego serwisu OTA
https://powiedz.co/ota/
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:
- Zobaczyć ile zmian lokalizacji zostało wykrytych
- Zobaczyć ile zmian zostało zaraportowanych do bramki
- Zobaczyć aktualne współrzędne urządzenia i dokładność z jaką je znamy
- Wymusić pobranie i wysłanie aktualnej lokalizacji do bramki
- 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.
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
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:
-
nazwa automatyzacji
-
akcja 1. żądanie aktualizacji lokalizacji
-
akcja 2. komunikat głosowy informujący, że usługa jest wywołana
-
akcja 3. opóźnienie 10 sekund
-
akcja 4. wywołanie sprawdzenia lokalizacji
Każdą automatyzację możemy uruchomić komendą głosową: Uruchom <nazwa automatyzacji