huawei hms awareness kit

HMS Awareness Kit – co smartfon może wiedzieć o otoczeniu użytkownika?

7 minut czytania
Komentarze

Cześć! W poprzednich artykułach opisywałem, czym jest HMS oraz jak można go wdrożyć do naszych aplikacji tak, aby jego użycie było niemalże przeźroczyste. Omawiałem również, w jaki sposób można wykorzystać ML Kit i sugerowałem sposoby na połączenie jego funkcjonalności w celu jeszcze lepszego dopieszczenia naszych użytkowników.

Poznajmy kolejną bibliotekę z HMS – Awareness Kit

huawei hms awareness kit

Dzisiaj postanowiłem wziąć pod lupę Awareness Kit. W dużym skrócie możemy określić go jako bardzo dobre narzędzie, które daje nam możliwości określenia naszego użytkownika. Wiemy, czym zajmuje się w danej chwili, w jakim jest otoczeniu i co może być dla niego przydatne.

Zanim przejdę do przedstawienia możliwości usługi, przypomnę jeszcze, że aby móc testować HMS na urządzeniu należy włączyć odpowiednie usługi w konsoli. Jeśli pominiemy ten krok, to czeka nas dłuższe walenie głową w ścianę, szukając jednocześnie powodu, dla którego nasz super poprawny kod nie działa.

Co wiemy o naszym użytkowniku, a raczej co wie HMS Awareness Kit?

Często w naszych aplikacjach potrzebna jest nam wiedza na temat użytkownika. Nie wystarcza zwykły e-mail, którego użył do logowania. Musimy mieć informacje bardziej szczegółowe, dotyczące na przykład tego, czym zajmuje się w danej chwili lub gdzie przebywa. Tutaj właśnie błyszczą usługi typu Awareness Kit. Wiedza ta może być wykorzystana na przykład do poprawy obsługi naszej aplikacji. Można ją też użyć w celach bardziej komercyjnych, np. do personalizacji reklam.

jak napisac aplikacje hms core poradnik rejestracja

Należy tutaj zaznaczyć, że HMS nie daje nam wolnej ręki. Nie możemy tak po prostu śledzić użytkownika i wysyłać informacji w świat. Pierwszym krokiem, który musimy wykonać, jest oczywiście prośba o odpowiednie uprawnienia. Dopiero gdy użytkownik wyrazi zgodę na nasze działania, to możemy przejść do sedna. Odczytać możemy naprawdę dużo:

  1. Lokalizacja
  2. Czas lokalny
  3. Zachowanie
  4. Intensywność światła
  5. Status podpięcia słuchawek
  6. Wykrywanie beaconów

Lokalizacja jest nam wszystkim znana i nie stanowi żadnego odkrycia – ot, po prostu współrzędne GPS. Odczyt zdarzeń związanych z czasem jest już czymś mniej banalnym. Jeśli ktoś pomyślał w tej chwili, że Huawei stworzyło własne API, aby zastąpić System.currentTimeMillis(), to jest w błędzie. W tym miejscu mamy dostęp do danych w pewnym sensie specyficznych dla danej lokalizacji.

Zobacz też: Jak zwiększyć swoje szanse na zdobycie pracy programisty?

API daje możliwość odczytu na przykład czasu wschodu i zachodu słońca. Huawei zebrało także informacje z wielu krajów. Dzięki temu z łatwością możemy sprawdzić, czy danego dnia nie ma przypadkiem jakiegoś święta. Jeśli jesteśmy za granicą, to wierzcie mi, nic tak nie zaskakuje, jak zablokowane drogi i zamknięte sklepy w środku tygodnia. Znalazłem tylko jeden minus. Nie udało mi się znaleźć sposobu na odczyt takich danych dla dat innych niż obecna. Możemy z rana powiadomić użytkownika, że dziś jest 4 lipca i będąc w USA, może spodziewać się fajerwerków. Nie możemy jednak mu tej informacji przekazać poprzedniego dnia wieczorem. Samo HMS Awareness Kit działa więc poprawnie, ale jest jeszcze miejsce na usprawnienia.

Co obecnie robi użytkownik naszej aplikacji?

huawei hms awareness kit

Wiemy już, gdzie jest nasz użytkownik oraz czy ma trochę wolnego czasu, bo na przykład jest święto lub weekend. API daje nam możliwość, aby sprawdzić, czy czas ten jest wykorzystany aktywnie. Obecnie można śmiało założyć, że większość osób (a przynajmniej większość naszych użytkowników) nie rozstaje się z telefonem na krok. Dzięki odpowiednim sensorom nasz sprzęt jest w stanie z dużą dozą prawdopodobieństwa określić bieżącą aktywność posiadacza telefonu. Na chwilę obecną HMS Awareness Kit potrafi wskazać następujące czynności:

  1. Jazda autem
  2. Jazda rowerem
  3. Chodzenie
  4. Bieganie
  5. Stanie

Jeśli piszecie aplikację trenera personalnego, to dość łatwo można sprawdzić, czy użytkownik stosuje się do zaleceń lub po prostu marnuje bezcenny czas. Zakładam oczywiście, że jeśli ktoś jest zbyt leniwy, aby się poruszać, to będzie też zbyt leniwy, aby szukać sposobów na oszukanie aplikacji.

Dbajmy o wzrok, sprawdźmy jak jasno jest w otoczeniu

huawei hms awareness kit

Przyznam szczerze, że nie spotkałem jeszcze aplikacji, która starałaby się zadbać o mój wzrok, kiedy jej używam. Jeśli czytam artykuł lub oglądam film, używając telefonu, to chciałbym, aby ekran dostosował się do warunków zewnętrznych. Większość aplikacji posiada opcje pozwalające na zmianę kolorystyki lub wybranie trybu nocnego. Możliwe, że przyszłością będą aplikacje, które potrafią to zrobić automatycznie. To jednak są tylko gdybania. Jeśli się spełnią, to już istnieje rozwiązanie, które może nam pomóc.

Beacony to kolejna część HMS Awareness Kit

Nie jestem pewien, czy mamy w Polsce zgrabne tłumaczenie tego słowa. Mowa tu o małych urządzeniach, nadajnikach, które okresowo wysyłają sygnały do urządzeń w pobliżu. Zasięg takich nadajników nie jest duży i dlatego nadają się do zastosowań lokalnych. Dobrym przykładem może być testowanie, w którym pokoju znajduje się użytkownik, albo do którego sklepu galerii wszedł. HMS oferuje wsparcie dla urządzeń nadających w formatach iBeacon lub Eddystone-UID. Rozpoznawanie beacona odbywa się dzięki unikalnemu kluczowi. Jeśli dwa lub więcej nadajników posiada taki sam identyfikator, są one traktowane jako ten sam.

HMS Awareness Kit jest przede wszystkim prosty dla programisty

W poprzedniej części celowo nie podawałem żadnego kodu. Wszystkie elementy tej usługi mają API tak podobne, że w zasadzie powtarzałbym wszędzie to samo.

Awareness.getCaptureClient(activity).lightIntensity
        .addOnSuccessListener { response ->
        }
        .addOnFailureListener { e ->
        }

W miejsce lightIntensity możemy wstawić np. headsetStatus, location lub behavior. Kod będzie wyglądał tak samo, zmieni się jedynie typ odpowiedzi.

Jak należy używać HMS Awareness Kit?

huawei hms awareness kit

Kod, który przed chwilą pokazałem, ma jedną wadę – podaje nam jedynie wartość chwilową. Jeśli chcielibyśmy reagować w czasie rzeczywistym, to zmuszeni bylibyśmy do napisania jakiegoś rodzaju pętli lub użylibyśmy innego mechanizmu, który pozwalałbym nam w miarę często odczytywać aktualne wartości. Takie rozwiązanie jest oczywiście nieakceptowalne. Głównym zarzutem byłoby prawdopodobnie nadmierne zużycie energii, a więc i pośrednio szybsza degradacja akumulatora. W tym miejscu przychodzi z pomocą niejako drugi tryb pracy Awareness Kit. Mowa tutaj o „barierach”.

Każda z usług w ramach Awareness Kit pozwala na zdefiniowanie pewnych wymagań, których spełnienie spowoduje uruchomienie naszego kodu. Oznacza to, że nie musimy wcale czytać co chwilę, czy użytkownik biegnie, ma ciemno w pokoju lub jest w pobliżu beacona. Możemy poprosić system, aby nas powiadomił dokładnie w momencie, gdy te zdarzenia nastąpią.

val beginWalkingBarrier = BehaviorBarrier.beginning(BehaviorBarrier.BEHAVIOR_WALKING)
val request = builder.addBarrier(label, beginWalkingBarrier, pendingIntent).build()
Awareness.getBarrierClient(context).updateBarriers(request)

Słowo podsumowania: Awareness Kit pozwoli nam lepiej zrozumieć, czym zajmuje się nasz użytkownik oraz jakie jest jego otoczenie. Huawei dostarcza nam wysoce precyzyjne dane. To jak wykorzystamy tę wiedzę, zależy już od nas.

Zobacz też: YouTube podnosi poprzeczkę – wysoka jakość to już nie 720p.

W kolejnym odcinku postaram się zgłębić temat promowania aplikacji w AppGallery. Na koniec tradycyjnie zachęcam Was do odwiedzenia naszego forum dla programistów. Równocześnie nie zapominajcie na bieżąco śledzić sekcji artykułów o programowaniu, która stale się rozwija.

Motyw