# 📱 Aplikacja mobilna w wersji 1.4.0.GPS - opis zmian

**URL:** https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610
**Category:** Ogłoszenia
**Created:** [30 Lipiec 2020 15:15 UTC](https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610 "2020-07-30T15:15:21Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)
#### Data publikacji: [30 Lipiec 2020 15:15 UTC](https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610/1 "2020-07-30T15:15:21Z")

</div>

## Nowa wersja aplikacji mobilnej 1.4.0.GPS

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/f/f15079731cb1558ea79d4e30f8816aaa863a9299.png)

dodaliśmy ją też do naszego serwisu OTA  
[https://powiedz.co/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ć).

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/375cbd9f87178245db48de1a0f100168d1d42c6a.png)

## 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

> **[Fused Location Provider API  |  Google for Developers](https://developers.google.com/location-context/fused-location-provider)**
>
> Get an overview of this battery-efficient location API and links to guides about how to use it.

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:

> <https://github.com/sviete/AIS-dom/blob/e5c4136d92ca7d9eb3c1ea009fc39d597cedee2c/AisPanelApp/src/main/java/pl/sviete/dom/AisFuseLocationService.java#L185>

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/e/e0bdfcf359c9ca94c9fe424239a349b4d676c725.png)

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.

> ⚠ Rejestrację sensorów robimy przy logowaniu z aplikacji mobilnej - żeby pojawił się sensor z baterią trzeba wylogować się z aplikacji i zalogować ponownie.
> 
> ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/89d5405660760bb7245f8cd2bc47370814ed04c5.png)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/88a9113210bae183b34ca842c67d46001cfd1959.png)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/85c4b42059aca3fb947a8445bf1fcb9c63827d11.png)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/a/a87e50f6e60472b0b5f61c9d21751f22b48975f3.png)

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/5/5d974340b6a8a8370dc2d4dd8fcdc33940c1f550.jpeg)

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/1/1065963ac20d62acd31f0807342fdbf8f3d4cfe3.png)

np na karcie typu obraz

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/5/5e3087790fe69e9557083a60e76ea0a756b742d9.jpeg)

oczywiście ze stosownym pięknym obrazem z galerii 🙂

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/0/011a058f37a8a5e9f0c300436e725b02ceb15440.jpeg)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/3c46b4be00b1777f36aabc1afc2b787e3338d2e8.png)

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/31343c65721d800942674803e280dfdc7962fb95.jpeg)

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):

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/ca2977eb7b0da75b75b2c385ff7e3e9401171b0d.jpeg)

### 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:

> **[Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging)**
>
> Firebase Cloud Messaging (FCM) is a cross-platform messaging solution that lets you reliably send messages.

#### 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](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](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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/4/41009c6dbb01541838ec3ac4dd4cde5c269a8261.png)

#### 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`

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/d/d8bcadf32674114b661bd60b5ee94f73a35c9f14.png)

---

<div class="post-metadata">

### Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)
#### Data publikacji: [31 Lipiec 2020 08:19 UTC](https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610/2 "2020-07-31T08:19:53Z")

</div>

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.

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/c57542989989e4427224d53e9f1ff5a3cc3318ab.jpeg)

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/848057f1636ca89ca1f74f254407f379deccf497.png)

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 🎉

# Jesteśmy otwarci 🙂 Twoja pomoc jest mile widziana!

Kod aplikacji jest dostępny w Github:

> **[sviete/AIS-dom](https://github.com/sviete/AIS-dom)**
>
> This is our main application that works both on the gateway and on other devices including: tablets, phones, Android TV. - sviete/AIS-dom

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** 👋 . Dzięki ❤

---

<div class="post-metadata">

### Autor: ![Iron](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/iron/32/63_2.png) [@Iron](https://ai-speaker.discourse.group/u/Iron)
#### Data publikacji: [1 Sierpień 2020 08:41 UTC](https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610/3 "2020-08-01T08:41:30Z")

</div>

> [@jolka](#):
>
> 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** 👋 . Dzięki ❤

Testujemy, testujemy… 🙂 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. 😉  
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.

---

<div class="post-metadata">

### Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)
#### Data publikacji: [3 Sierpień 2020 12:04 UTC](https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610/4 "2020-08-03T12:04:48Z")

</div>

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

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/f/f12f08b12d44dc978f5cee447d14a129b8e1fc60.png)

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

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/cba9a19157da412fcd28f2b32d3648aa87c1648f.png)

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](https://source.android.com/devices/tech/perf/lmkd)  
to oczywiście poprawimy ten błąd 🙂

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.

---

<div class="post-metadata">

### Autor: ![Iron](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/iron/32/63_2.png) [@Iron](https://ai-speaker.discourse.group/u/Iron)
#### Data publikacji: [4 Sierpień 2020 19:03 UTC](https://ai-speaker.discourse.group/t/aplikacja-mobilna-w-wersji-1-4-0-gps-opis-zmian/610/5 "2020-08-04T19:03:00Z")

</div>

> [@jolka](#):
>
> - Zobaczyć ile zmian lokalizacji zostało wykrytych
> - Zobaczyć ile zmian zostało zaraportowanych do bramki

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.
