42
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 4086 Lokacijska aplikacija za pametni sat s operacijskim sustavom Android Wear Matija Cvetnić Zagreb, srpanj 2015.

Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

ZAVRŠNI RAD br. 4086

Lokacijska aplikacija za pametni sat s

operacijskim sustavom Android Wear

Matija Cvetnić

Zagreb, srpanj 2015.

Page 2: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi
Page 3: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi
Page 4: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

Sadržaj

Uvod .................................................................................................................................. 1

1. Android Wear ............................................................................................................ 2

1.1. Osnovne značajke .............................................................................................. 2

1.1.1. Obavijesti ................................................................................................... 2

1.1.2. Biblioteke korisničkog sučelja .................................................................. 4

1.1.3. Glasovne naredbe ...................................................................................... 7

1.1.4. Komunikacija s Android Wear uređajem ................................................ 10

1.2. Razvoj aplikacije na Android Wear-u ............................................................. 11

1.3. Android Wear aplikacija za pametni telefon ................................................... 12

2. Mini maps aplikacija s GPS rutom .......................................................................... 14

2.1. Opis sustava ..................................................................................................... 15

2.1.1. Komunikacija unutar sustava .................................................................. 16

2.1.2. Aplikacija za pametni telefon .................................................................. 22

2.1.3. Aplikacija za pametni sat ......................................................................... 24

2.1.4. Datoteka GPX .......................................................................................... 26

2.1.5. Cross track error ...................................................................................... 27

3. Upute za korištenje aplikacije ................................................................................. 30

4. Zaključak ................................................................................................................. 34

Literatura ......................................................................................................................... 35

Sažetak ............................................................................................................................ 36

Abstract ........................................................................................................................... 37

Skraćenice ....................................................................................................................... 38

Page 5: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

1

Uvod

Područje malih prenosivih pametnih spravica (engl. wearable gadgets) je vrlo

interesantno područje. Ono postoji na tržištu već više od desetljeća u obliku satova, slušalica,

odjeće, uređaja za praćenje aktivnosti (engl. activity trackers) i fotoaparata. Kroz razne

filmove i serije kao što su "The Jetsons", "Star Trek", "Dick Tracy" i drugi, maštamo o

pametnim satovima pa stoga ne čudi veliki interes za takvu vrstu uređaja.

Google je pokrenuo svoju tehnologiju Glass u 2012. godini s impresivnom

demonstracijom koja je pokazala kako mali uređaj može imati puno funkcionalnosti. 2014.

godine Google je nastavio tim putem predstavivši Android Wear SDK (Android Wear

Software Development Kit), koji uvodi novi način razmišljanja o nosivim uređajima (engl.

wearable). Nosivi uređaj više nije samostalan uređaj koji može komunicirati s telefon ili

računalom; to je uređaj koji proširuje mogućnosti Vašeg telefona što predstavlja jedinstveni

novi način razmišljanja o Vašim osobnim uređajima. Telefon je vaš primarni uređaj, a

možete ga proširiti s novim funkcijama spajanjem nosivog uređaja s njime. [1]

Cilj ovog rada je proučiti i analizirati programsku podršku za razvoj aplikacija za pametne

satove s operacijskim sustavom Android Wear. Pri tome će se detaljno obraditi programska

podrška za izradu lokacijskih aplikacija koje koriste sustav GPS (Global Positioning

System). Na kraju će biti predstavljena lokacijska aplikacija za pametni sat koja je razvijana

u praktičnom dijelu ovog rada. Ova aplikacija prikazuje kartu sa stazom koja je definirana

kao niz geografskih koordinata te upozorava korisnika ukoliko se udalji od nje.

Page 6: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

2

1. Android Wear

Android Wear je Google-ov pokušaj uvođenja reda na tržište nosivih uređaja koje je

povijesno bilo prilično razasuto. Gledajući prijašnja izdanja u kategoriji pametnih satova i

ostalih nosivih uređaja, primijetit ćete da je većina proizvođača uređaja, kao što su Samsung

i Sony, koristili vlastite alate i biblioteke. Ovo stavlja razvijatelja aplikacija trećih strana

(engl. third-party developers) u neugodan položaj. Razvijatelj može raditi aplikaciju za samo

jedan sustav kao što je Samsung Tizen ili može razvijati jednu puno kompleksniju aplikaciju

koja koristi SDK od više različitih proizvođača uređaja.

Kako bi se uređaj pokretan Android Wear-om mogao povezati na pametni telefon

potrebno je da pametni telefon ima operacijski sustav Android 4.3 „Jelly Bean“ (API 18)

(Application Programming Interface 18) ili noviji. Posljednja verzija operacijskog sustava

Android Wear temelji se na verziji Android 5.1.1 „Lollipop“ (API 22).

1.1. Osnovne značajke

Android Wear se temelji na operacijskom sustavu Android. Kako je sama namjena

Android Wear-a na nosivim uređajima tako su neke funkcionalnosti samog operacijskog

sustava Android uklonjena dok su neke mogućnosti dodane. Glavni razlog je što su uređaji

pokretani Android Wear-om zamišljeni kao dodatak pametnim telefonima koji proširuje

njihove funkcionalnosti, a ne kao samostalni uređaji.

1.1.1. Obavijesti

Obavijesti (engl. Notifications) su jedan od dva osnovna načina kako korisnika

obavijestiti o onome što se trenutno događa. Od objavljivanja, Android je mijenjao način

obavijesti od prikazivanja jednostavnih poruka na zaslonu pa sve do danas kada su one

postale temeljni interaktivni elementi aplikacije temeljene na Android operacijskom sustavu.

Počevši negdje od verzije Android 4.1, mogli ste graditi velike prilagođene obavijesti s

više izbornih radnji koje vode izravno na svoje temeljne aplikacije. Ovo olakšava i

pojednostavljuje interakciju s aplikacijom.

S Android Wear-om, Google je nastavio istim smjerom. Obavijesti igraju veliku ulogu u

tome kako korisnik komunicira s aplikacijom, kroz ono što Google naziva microinteractions.

Page 7: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

3

Svaka se obavijest u Android Wear-u može sastojati od mnogo podobavijesti (engl.

subnotifications) koje se još nazivaju i stranice. Svaka stranica je mali dio skupa obavijesti,

kao što su informacije, interakcija, ili povratne informacije.

Obavijesti o nosivim uređajima rade slično kao i na pametnim telefonima. Međutim,

umjesto predstavljanja svih obavijesti u grafičkoj komponenti ListView, Android Wear ima

drugačiji pristup. On koristi grafičku komponentu GridView, kao što je prikazano na slici

(Slika 1.1). Svaka kartica ili obavijesti zauzima cijeli zaslon, a kretanje kroz obavijesti vrši

se klizećim potezima. Također vidimo da jedna obavijest može sadržavati više poruka.

Slika 1.1 Android Wear navigacija i obavijesti [1]

Page 8: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

4

Za obavijesti na Android Wear-u koristi se standardni Android API, ali također dostupne

su i dodatne mogućnosti za obavijesti, specifične za Android Wear, kroz

NotificationCompat.WearableExtender klasu. Tablica 1.1 opisuje neke nove specifične

metode obavijesti u Android Wearu-u. One se koriste instancirajući klasu

WearableExtender.

Tablica 1.1 Neke nove metode za obavijesti

METODA OPIS

addAction(Action) Omogućuje dodavanja akcija koje su dostupne

samo na Wear uređajima

addPage(Notification) Dodaje dodatne stranice na glavnu obavijest

setBackground(Bitmap) Omogućuje dodavanja pozadinske slike u

obavijest

setContentAction(int) Omogućuje povezivanje akcije direktno s

obavijesti

setGravity(int) Omogućuje postavljanje položaja obavijesti na

ekranu

setHintHideIcon(boolean) Sakriva ikonu aplikacije

1.1.2. Biblioteke korisničkog sučelja

Svi vizualni elementi u Android aplikaciji zasnivaju se na objektima View i ViewGroup.

View je objekt koji prikazuje interaktivni sadržaj na ekran. ViewGroup je objekt koji sadrži

više View i ViewGroup objekata kako bi definirao izgled sučelja.

Korisničko sučelje (engl. user interface, UI) za svaku komponentu aplikacije definirano

je korištenjem hijerarhije objekata View i ViewGroup, kako je prikazano na slici (Slika 1.2).

Svaki ViewGroup sadrži nevidljivi spremnik koji organizira sadržane View-ove, dok View

Page 9: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

5

može biti ulazna kontrolna tipka ili druga grafička komponenta koja prikazuje neki dio

korisničkog sučelja. Takvo hijerarhijsko stablo može biti jednostavno ili komplicirano

ovisno o tome što zahtijeva aplikacija ali bi zbog brzine izvođenja trebalo težiti

jednostavnosti.

Slika 1.2 Primjer View hijerarhije koja definira korisničko sučelje [7]

Google je predstavljajući Android Wear dodao nove klase i komponente grafičkog sučelja

koji pomažu pri stvaranju aplikacije koja slijedi smjernice dizajna Android Wear-a i ostalih

uređaja s malim ekranima. U tablici (Tablica 1.2) su prikazane neke od novih klasa i

grafičkih komponenti. Sve te klase moguće je pronaći u paketu

android.support.wearable.view.

Tablica 1.2 Nove klase i grafičke komponente korisničkog sučelja

NAZIV OPIS

CardFragment Fragment koji sadrži klizajuće kartice (engl. scrollable

card). Po zadanom izgledu kartice uključuju naslov, opisni

tekst i izbornu ikonu. Moguće je izgraditi i vlastito sučelje

za ovaj fragment.

Page 10: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

6

CardFrame Stvara okvir s bijelom pozadinom i zaobljenim rubovima

umjesto standardnog crnog.

CardScrollView Spremnik za jedan CardFrame čime omogućuje pomicanje

okvira. Pogodno kada okvir sadrži više teksta.

CircledImageView Standardni widget za prikazivanje slika. Moguće je sliku

staviti u krug koji ima mogućnost dodavanja kružnog

indikatora napretka.

ConfirmationActivity Pomoćna klasa za stvaranje atraktivnih animacija kao

povratnih informacija za akcije korisnika.

CrossfadeDrawable Dodaje vizualni efekt blijeđenja.

DelayedConfirmationView Potklasa CircledImageview klase koja omogućuje

izvođenje neke akcije nakon nekog vremena. Daje

mogućnost korisniku da prekine akcije prije nego se ona

izvrši.

DismissOverlayView Dodavanje interakcije za odbacivanje aktivnosti.

FragmentGridPagerAdapter Adapter stranice koji sadrži fragmente. Koristi se s

GridViewPager.

GridViewPager Dvodimenzionalna mreža sučelja koja omogućuje

pomicanje u oba smjera.

InsetActivity Aktivnost s ugrađenom mogućnosti otkrivanja tipa ekrana

na Wear uređaju. Alternativa WatchViewStub-a.

WatchViewStub Jedna od najvažnijih dodataka za Wear. Omogućuje

otkrivanje tipa ekrana (okrugli ili četvrtasti) te učitava

odgovarajuće sučelje za taj tip ekrana.

WearableListView Implementacija ListView klase koja je prilagođena malim

zaslonima.

Page 11: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

7

1.1.3. Glasovne naredbe

Postoji više vrsta glasovnih naredbi. Prvoj vrsti pripadaju jednostavne glasovne naredbe

koji dajete pametnom satu, te ih onda sat uspoređuje s prethodno snimljenim glasovnim

naredbama koje su dodijeljene nekoj akciji i odmah izvršava tu akciju.

Druga vrsta je kada Android Wear uređaj primi zvukovni niz koji digitalizira i prenosi na

pametni telefon ili tablet s kojim je povezan. Taj zvukovni niz onda može koristiti neki drugi

uređaj za rad algoritma za prepoznavanje glasovnih naredbi. Na primjer za slanje glasovne

naredbe ili informacije cloud servisu za upravljanje udaljenom memorijom ili liječenja na

daljinu. Ovo je vrsta glasovnih naredbi gdje pametni sat šalje podatke na drugi sustav da ih

isti koristi.

Konačno, pametni sat ili bilo koji drugi Android Wear uređaj može jednostavno koristiti

glasovne naredbe kao reakciju na obavijesti koje dolaze s pametnog telefona ili tableta. Ova

vrsta naredbi je malo drugačija jer pametni sat šalje naredbe ili podatke na uređaj s kojim je

povezan. U tom slučaju, uređaj na koji je povezan očekuje odgovor u tekstualnom obliku

koje će biti unesen kao glasovna naredba. Problem je u tome što uređaji nisu optimizirani za

virtualne tipkovnice koja bi se koristila u ovom slučaju.

U Tablica 1.3 su prikazane sve mogućnosti korištenja glasovnih naredbi u Android Wear-

u. Svaki način interakcije zahtijeva drugačiji skup naredbi u aplikaciji na pametnom telefonu

i aplikaciji na Android Wear uređaju kako bi obje aplikacije radile sinkronizirano. Jedina

iznimka je zadnja interakcija – pokreće naredbu bez povezanog drugog uređaja. [1]

Tablica 1.3 Tipovi glasovnih interakcija

INTERAKCIJA OBJAŠNJENJE

Slanje naredbe na povezani uređaj Wear uređaj prepozna glasovnu naredbu i

šalje ju na povezani uređaj. U službenoj

dokumentaciji ta vrsta interakcije naziva se

app‐provided voice capabilities.

Slanje teksta na povezani uređaj Wear uređaj snimi zvuk te ga kodira kao niz

bajtova koji onda može poslati na povezani

uređaj.

Page 12: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

8

Odgovor na upit povezanog uređaja Kada dođe obavijest moguće je dobiti skup

prethodno definiranih odgovora putem

kojih korisnik jednostavno može odgovoriti

pomoću glasovne naredbe.

Odgovor na upit povezanog uređaja kao

tekstualna poruka

Kada dođe obavijest, na primjer e-mail

poruka, moguće je odgovoriti na isti

govoreći u Wear uređaj koji onda taj glas

pretvara u tekstualnu poruku i šalje kao

odgovor

Izvršavanje jednostavnih sistemskih

naredbi

Wear uređaj prepoznaje glasovne naredbe

pomoću prethodno definiranih namjera. U

službenoj dokumentaciji ta vrsta interakcije

naziva se system‐provided voice

capabilities

Justin Kob, jedan od razvijatelja Android Wear operacijskog sustava rekao je: „Voice is

an array of bytes. Make sure you have the right codecs.“ – Zvuk je polje bajtova. Budite

sigurni da imate prave audio kodeke. Drugim riječima ako koristite Android Wear uređaj

kao prijenosni mikrofon budite sigurni da uređaj može kodirati i dekodirati zvuk u pravom

formatu kako bi aplikacija ispravno radila. Kodek pokušava zvuk komprimirati da bude što

lakši dok uređaj koji primi takav niz mora biti sposoban ispravno ga dekodirati. Podržani

audio formati su: AAC LC, HE-AACv1 (AAC+), HE-AACv2 (poboljšani AAC+), AAC

ELD (poboljšani AAC+ s manjim kašnjenjem), AMR-NB, AMR-WB, FLAC, MP3, MIDI,

Vorbis, PCM/WAVE i Opus. [4]

U tablici (Tablica 1.4) su prikazane namjere koje nudi platforma Android Wear koje se

temelje na jednostavnim akcijama korisnika. Kada se koriste glasovne naredbe svaka

rečenica treba početi s „OK, Google.“. Ta fraza je odabrana kako bi se spriječile slučajne

aktivacije i prepoznavanja glasovnih naredbi.

Page 13: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

9

Tablica 1.4 Predefinirane glasovne naredbe

IME NAREDBE FRAZA IME NAREDBE FRAZA

Pozovi auto/taxi “OK, Google, get

me a taxi.”

“OK, Google, call

me a car.”

Počni/završi vožnju

biciklom (odnosi se

na snimanje

aktivnosti)

“OK, Google, start

cycling.”

“OK, Google, start my

bike ride.”

“OK, Google, stop

cycling.”

Zapiši bilješku “OK, Google, take a

note.”

“OK, Google, note

to self.”

Počni/završi trčanje

(odnosi se na

snimanje aktivnosti)

“OK, Google, track

my run.”

“OK, Google, start

running.”

“OK, Google, stop

running.”

Postavi alarm “OK, Google, set an

alarm for 8 a.m.”

“OK, Google, wake

me up at 6

tomorrow.”

Počni/završi

vježbanje (odnosi se

na snimanje

aktivnosti)

“OK, Google, start a

workout.”

“OK, Google, track

my workout.”

“OK, Google, stop

workout.”

Postavi brojač “OK, Google, set a

timer for 10

minutes.”

Pokaži broj otkucaja

srca

“OK, Google, what’s

my heart rate?”

“OK, Google, what’s

my bpm?”

Pokaži broj

napravljenih koraka

“OK, Google, how

many steps have I

taken?”

“OK, Google,

what’s my step

count?”

Page 14: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

10

1.1.4. Komunikacija s Android Wear uređajem

Kako je sama filozofija Android Wear-a dodatno povećanje mogućnosti primarnog

pametnog telefona ili tableta nosivim uređajem, izuzetno je bitna komunikacija između to

dvoje uređaja. Android Wear podržava više nosivih uređaja povezanih na isti primarni

pametni uređaj pa tako na primjer kada korisnik spremi bilješku na svome pametnom

telefonu ona se automatski pojavi na svim povezanim nosivim uređajima. Za sinkronizaciju

podataka između uređaja koristi se čvorište u „oblaku“ (engl. cloud node) unutar Googlovog

poslužitelja kako je prikazano na slici (Slika 1.3). Sistem sinkronizira podatke direktno na

povezane uređaje te nosive uređaje koji su povezani preko WiFi na to čvorište.

Mogućnost povezivanja nosivih uređaja preko WiFi-a s pametnim telefonom ili tabletom

je najnovija mogućnost koju je Google uveo s verzijom Android Wear 5.1.1. Ona omogućuje

da ostavite pametni telefon kod kuće, a pametnim satom ostanete povezani s pametnim

telefonom dok god pametni sat ima pristup internetu (WiFi ili mobilni internet).

Slika 1.3 Jednostavna mreža čvorova između pametnog telefona i nosivih uređaja [4]

Servisi unutar Android Wear platforme sastoje se od tri API-a koja pomažu pri

komunikaciji pametnog telefona ili tableta s Wear uređajem. To su API za podatke, API za

Page 15: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

11

poruke i API za čvorove. Svaki od njih se brine za drugi dio izmjene informacija između

uređaja.

1.1.4.1 API za podatke

API za podatke (engl. data API) omogućuje stavljanje podataka u virtualnu privremenu

memoriju kojoj mogu pristupiti svi povezani uređaji. Korištenje je vrlo jednostavno i sastoji

se od stavljanja i povlačenja podataka iz te virtualne privremene memorije u oba smjera (tj.

s nosivog uređaja i s pametnog telefona).

Vrlo korisno kada se izmjenjuju slike jer se tada ne mora ista slika slati više puta da bi na

svim uređajima bila vidljiva čime se štedi baterija.

1.1.4.2 API za poruke

API za poruke (engl. message API) izmjenjuje polje bajtova između povezanih uređaja.

Na primjer kada korisnik snimi glas s pametnim satom te ga šalje, nakon što je digitaliziran,

na pametni telefon.

1.1.4.3 API za čvorove

API za čvorove (engl. node API) provjerava kada čvorovi postanu dostupni u mreži. Ta

se funkcionalnost može koristiti za provjeru dostupnosti nekog uređaja drugome. Isto tako

omogućuje stavljanje uređaja u način spavanja (engl. sleep mode) ukoliko je prošlo dosta

vremena od kada je uređaj bio aktivan.

1.2. Razvoj aplikacije na Android Wear-u

Razvoj aplikacije na Android Wear platformi ne razlikuje se puno od razvoja aplikacije

za pametni telefon. Osnovno je pravilo Android Wear-a da svaka aplikacija za Wear uređaj

mora imati svoju aplikaciju na pametnom telefonu. [3] [4]

Novost u datoteci AndroidManifest.xml je ova linija:

<uses-feature android:name="android.hardware.type.watch" />

Time specificiramo da je za normalno funkcioniranje aplikacije potreban pametni sat.

Page 16: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

12

U mapi res (resursi aplikacije) maknuta je mapa menu iz razloga što se ne očekuje da

aplikacija na pametnom satu ima izbornik koji se kosi s osnovnom filozofijom aplikacije na

pametnom satu.

Razlika je i u mapi layout u kojoj uz datoteku activity_main.xml postoje i datoteke

rect_activity_main.xml i round_activity_main.xml. Kako pametni satovi dolaze u dva oblika

ekrana, okrugli i četverokutni, potrebno je i prilagoditi razmještaj i prikaz elemenata na

ekranu. U svakoj datoteci možemo prilagoditi izgled određenoj vrsti sata, a datoteka

activity_main.xml onda brine o prikazu kroz klasu WatchViewStub. U nastavku je prikaz

koda (Kod 1.1) osnovne activity_main.xml datoteke.

<?xml version="1.0" encoding="utf-8"?>

<android.support.wearable.view.WatchViewStub

mlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/watch_view_stub"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:rectLayout="@layout/rect_activity_main"

app:roundLayout="@layout/round_activity_main"

tools:context=".MainActivity"

tools:deviceIds="wear"></android.support.wearable.view.Wa

tchViewStub>

Kod 1.1 activity_main.xml datoteka Android Wear aplikacije

1.3. Android Wear aplikacija za pametni telefon

Android Wear aplikacija za pametni telefon je neophodna za normalno funkcioniranje i

povezivanje pametnog sata s Android Wear-om s pametnim telefonom. Aplikacija

omogućuje kontrolu glasovnim naredbama sa sata i podešavanje prikaza obavijesti na satu.

Donosi razne mogućnost konfiguriranja sata. Na slici (Slika 1.4) možemo vidjet prikaz

nekoliko ekrana s mogućnostima koje nudi Android Wear aplikacija za pametni telefon.

Uz standardne mogućnosti izmjene izgleda sata, u izborniku postavke možemo naći

kontrolu nad obavijestima, mogućnost sinkronizacije preko bežične internet mreže, ukoliko

Page 17: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

13

je dostupna na pametnom satu i postavka za ispitivanje programa preko bežične veze

protokolom Bluetooth. Odabirom gumba s nazivom pametnog sata, Smartwatch 3, otvaraju

nam se dodatne postavke sata kao što su kontrola nad paljenjem ekrana na satu i prikaz

statusa baterije i memorije sata. Jedna od bitnijih naredbi koju u tom izborniku možemo naći

je Resync apps.

Resync apps omogućuje da se sinkroniziraju sve aplikacije na vašem pametnom telefonu

s pametnim satom, odnosno da za sve vaše aplikacije na pametnom telefonu aplikacija će

provjeriti da li imaju svoju aplikaciju za pametni sat i ukoliko ima instalirati će je automatski

na vaš sat. Isto tako ako neku aplikaciju obrišete a nije se obrisala na satu ova opcija će to

učiniti i na satu. U pravilu bi to se trebalo dogoditi automatski kada instalirate ili obrišete

aplikaciju s pametnim telefona međutim u praksi i nije baš tako pa se ta opcija pokazala kao

jako korisna.

Od ostalih postavki možete pronaći opciju za odspajanje sata od pametnog telefona,

Forget Watch. Uzimanje slike trenutnog zaslona (engl. Take wearable screenshot) opcija se

nalazi kada odaberete izbornik s 3 točkice u desnom gornjem rubu ekrana. Opcija uzimanje

slike trenutnog zaslona ima jednu grešku, a to je da kada stvori sliku na pametnom telefonu

ne doda nastavak jpg u naziv datoteke koji označava format. Iz toga razloga ju Android

sustav ne prepoznaje kao sliku nego kao datoteku File, te je nije moguće vidjeti u galeriji

pametnog telefona nego se mora ručno pronaći kroz aplikaciju za prikaz datoteka pametnog

telefona.

Slika 1.4 Prikaz Android Wear aplikacije za pametni telefon

Page 18: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

14

2. Mini maps aplikacija s GPS rutom

Aplikacija Mini maps se sastoji od dvije aplikacije, aplikacija za pametni telefon te

aplikacije za pametni sat. Aplikacija omogućuje korisniku pregled karte s trenutnom

lokacijom na pametnom satu. Dodatno ima mogućnost da se učita GPX datoteka koja se

sastoji od niza zemljopisnih točaka koji jednom povezani čine željenu rutu, stazu, koju

korisnik želi pratiti. Ukoliko se korisnik udalji od željene rute više od 50 metara sat mu to

signalizira putem vibracije.

Kako bi se usluga mogla koristiti, potrebno je posjedovati pametni sat s Android Wear-

om te pametni telefon s verzijom Android 4.3 ili novijom. Za početno učitavanje karata

potreban je pristup internetu (Wi-Fi, EDGE, UMTS).

Pojednostavljeni prikaz komponenti sustava može se vidjeti na slici (Slika 2.1).

Slika 2.1 Komponente sustava Mini maps

Page 19: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

15

2.1. Opis sustava

Sustav Mini maps sastoji se od tri komponente, a to su: Google-ov poslužitelj, aplikacija

na pametnom telefonu i aplikacija na pametnom satu.

Google-ov poslužitelj obrađuje zahtjeve i šalje potrebne podatke korisničkoj aplikaciji.

Ova komponenta je neophodna samo na početku dok se ne dohvate karte. Ukoliko se dohvate

sve potrebne karte i ne mijenja se GPX ruta aplikacija će raditi i bez Google poslužitelja.

Aplikacija na pametnom telefonu s Android operacijskim sustavom je glavni dio sustava.

Ona dohvaća karte s Google-ovih poslužitelja, provjerava da li je pametni sat spojen na

pametni telefon, šalje karte na pametni sat, provjerava da li korisnik prati zadanu rutu i šalje

trenutne GPS podatke ukoliko pametni sat nema ugrađen GPS modul. Također dohvaća GPX

rutu te ju obrađuje. Ova komponenta je neophodna za rad sustava, iako pametni sat može

raditi bez pametnog telefona jednom kada se učitaju sve karte te ako sat ima ugrađen GPS

modul, no neće moći provjeriti da li korisnik prati rutu i signalizirati ukoliko ne prati.

Aplikacija na pametnom satu s Android Wear-om prikazuje kartu na svome ekranu.

Ukoliko je odabrana GPX ruta onda prikazuje i nju na karti te ukoliko se korisnik udalji od

rute više od 50 metara upozori vibracijom. Aplikacija provjerava da li pametni sat ima

ugrađen GPS modul te o tome izvještava aplikaciju na pametnom telefonu, te ukoliko ima

modul koristi ga za lociranje, a ako ne onda prima podatke o trenutnoj lokaciji od pametnog

telefona. Prima karte od pametnog telefona te ih sprema u svoju memoriju. Ova komponenta

je neophodna za zamišljeno funkcioniranje sustava.

Dijagram prikazan na slici (Slika 2.2) daje uvid u poslove koje obavljaju pojedini dijelovi

sustava.

Page 20: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

16

Slika 2.2 Dijelovi sustava i njegove funkcionalnosti

2.1.1. Komunikacija unutar sustava

Unutar sustava Mini maps vrši se komunikacija između Google poslužitelja i aplikacije

za pametni telefon te komunikacija između pametnog telefona i pametnog sata. Ovo

poglavlje će opisati koje su se tehnologije koristile u ostvarivanju, kasnije će se analizirati

tok razmjena poruka unutar sustava.

2.1.1.1 Komunikacija s Google poslužiteljem

Mini maps aplikacija komunicira s Google-ovim poslužiteljem preko zahtjeva HTTP

GET. Kao URL (Uniform Resource Locator) adresa šalje se adresa na Google Static Maps

API. Google Static Maps API omogućuje prikaz Google karata bez JavaScript-a ili bilo kojih

drugih dinamičkih objekata. Kao odgovor dobiva se slika tražene Google-ove karte. Unutar

zahtjeva HTTP GET proslijede se sljedeći parametri koji određuju kartu: trenutna geografska

lokacija, željena razina povećanja karte, format slike te opcionalno GPX ruta koja se šalje

kao niz geografskih točaka. Kod (Kod 2.1) prikazuje primjer HTTP zahtjeva. S parametrom

center odabiremo gdje je središte karte, tu se prosljeđuje trenutna lokacija. Parametar

zoom nam određuje koju razinu povećanja karte želimo. Metodom pokušaja i pogreške

Page 21: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

17

došao sam do zaključka da je 16 optimalan zum za pametni sat jer je bitno da se vide sve

okolne ulice, a da nije presitno niti prekrupno. Parametar maptype nam određuje kojeg

tipa će biti slika koju će nam vratiti poslužitelj, dok parametar path je opcionalan i putem

njega ucrtavamo GPX rutu na kartu. Korištenjem parametra color odabiremo boju rute,

parametar weight određuje debljinu crte, a u nastavku su geografske koordinate GPX rute

odvojene znakom uspravne crte (|, pipe). Koordinate su odijeljene zarezom.

Problem kod HTTP zahtjeva je bio što HTTP GET metoda ne prepoznaje znak uspravne

crte |, to se riješi tako da umjesto tog znaka se šalje "%7C" kojega onda poslužitelj zna

prevesti u znak uspravne crte.

Ograničenje veličine HTTP zahtjeva je 2048 znakova, što se na prvi tren čini dosta veliko

međutim u praksi nije tako. Što je više točaka GPX rute ona bolje ocrtava željeni put iz

razloga što se ruta ocrtava kao dužina između dvije geografske koordinate a što je manji

razmak između koordinata to je i sama ruta točnija. Više točaka jasno povlači i puno znakova

HTTP zahtjeva. Fiksni, obavezni, dio zahtjeva iznosi 144 znakova što znači da za

prosljeđivanje GPX rute preostaje 1904 znaka. Ako znamo da jedna koordinata zauzima 10

znakova, a imamo dvije koordinate, plus jedan znak zarez i jedan znak ravne crte, znači da

za jednu geografsku točku treba 22 znaka. Jednostavnom matematikom dolazimo do

zaključka da imamo na raspolaganju 86 točaka koje možemo proslijediti. 86 točaka je vrlo

malo ako se želi točna ruta ispisati, moja neka mjerenja su pokazala da za precizan prikaz

rute na putu od jednog kilometra potrebno je barem 20 točaka (ruta je precizna u par metara).

To ograničenje utječe na preciznost same rute, a posljedično tome i signalizaciji ako se

korisnik udaljio više od 50 metara od zadane rute. Naime ako sama ruta odstupa više od 50

metara od stvarnog stanja onda sat signalizira korisniku, iako je on na pravom putu.

http://maps.googleapis.com/maps/api/staticmap?center=45.82672

6,16.006689&zoom=16&size=256x282&maptype=jpg&format=%s&path=c

olor:0x0000ff|weight:5|45.8266050,16.0065090|45.8265360,16.00

69890|45.8265590,16.0070320|45.8265810,16.0070640|45.8185946,

16.0129398

Kod 2.1 Primjer HTTP zahtjeva za Google static maps

Page 22: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

18

2.1.1.2 Komunikacija između aplikacije na pametnom telefonu i

pametnom satu

Komunikacija se vrši preko bežične veze protokolom Bluetooth verzije 4.0.

Metoda findWearableNodeAndBlock u aplikaciji na pametnom telefonu vrši

povezivanje sa satom. Ona traži čvor pametnog sata uz pomoć API-a za čvorove koji je ranije

opisan. Traženje čvora možemo vidjet i u isječku koda (Kod 2.2). Ako je pronađen čvor

pametnoga sata on se sprema u mWearableNode.

Isto tako u aplikaciji na pametnom satu metoda findPhoneNode je zadužena za

traženje čvora pametnog telefona uz pomoć API-a za čvorove. Isječak koda je potpuno

istovjetan kodu (Kod 2.2) na pametnom telefonu samo što sprema čvor u varijablu

mPhoneNode.

PendingResult<NodeApi.GetConnectedNodesResult> nodes =

Wearable.NodeApi.getConnectedNodes(mGoogleApiClient);

nodes.setResultCallback(new

ResultCallback<NodeApi.GetConnectedNodesResult>() {

@Override

public void onResult(NodeApi.GetConnectedNodesResult

result) {

if(result.getNodes().size()>0) {

mWearableNode = result.getNodes().get(0);

} else {

mWearableNode = null;

}

}

Kod 2.2 Isječak koda metode findWearableNodeAndBlock

Pri slanju poruke metodom sendToWearable provjerava se da li je u varijabli

mWearableNode spremljen čvor te ako je šalje se poruka preko id čvora. Isječak koda

(Kod 2.3) metode sendToWearable prikazuje slanje slanje poruke na sat.

Isto vrijedi i za aplikaciju na satu. Kod metode sendToPhone je potpuno istovjetan

kodu (Kod 2.3) na pametnom telefonu.

Page 23: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

19

if (mWearableNode != null) {

PendingResult<MessageApi.SendMessageResult> pending =

Wearable.MessageApi.sendMessage(mGoogleApiClient,

mWearableNode.getId(), path, data);

pending.setResultCallback(new

ResultCallback<MessageApi.SendMessageResult>() {

@Override

public void onResult(MessageApi.SendMessageResult

result) {

if (callback != null) {

callback.onResult(result);

}

}

});

} else {

//greška, uređaj mora biti pronađen prije slanja

}

}

Kod 2.3 Isječak koda za slanje poruke metode sendToWearable

Za povezivanje je korišten protokol Bluetooth jer je nadogradnja za pametni sat Sony

Smartwatch 3 došla prekasno. Najnovija inačica Android Wear-a verzije 5.1.1 omogućuje

povezivanje preko bežične WiFi mreže s pametnim telefonom . Ta mogućnost bi uvelike

unaprijedila i ovu aplikaciju stoga smatram da promjenom načina komunikacije između

pametnog sata i pametnog telefona, aplikacija bi bila još neovisnija o pametnom telefonu

nego što je trenutno. Google najavljuje da će biti moguća komunikacija između pametnog

sata i pametnog telefona iako nisu u istoj mreži. Ta činjenica bi omogućila da se pametni

telefon može ostaviti kod kuće dok normalno koristimo aplikaciju Mini maps te ukoliko

trebate skinuti nove karte samo je potrebno pronaći pristup internetu. [9]

2.1.1.3 Komunikacija unutar sustava

Komunikacija unutar sustava počinje kada pametni sat pronađe čvor telefona i pošalje

poruku „start“ metodom sendToPhone te status o dostupnosti GPS modula. Kada

telefon primi poruku on također pronađe čvor sata i poveže se na njega te ukoliko sat nema

GPS modul šalje metodom sendToWearable trenutnu lokaciju u obliku geografske

Page 24: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

20

točke. Sat šalje zahtjev za kartom, ukoliko već od prije nema u memoriji kartu za trenutnu

lokaciju, porukom o svojoj trenutnoj lokaciji u obliku geografske širine i duljine te razine

željenog zuma karte. Kada pametni telefon primi zahtjev za kartom, koristi standardnu

metodu HTTP GET za dohvat iste s Google-ovog poslužitelja. Zahtjev šalje u obliku HTTP

zahtjeva kao što je ranije opisano. Kartu dohvaća u obliku polja bajtova te šalje na sat već

spomenutom metodom. Sat pri primitku tražene karte prikazuje istu na svome ekranu. Ovaj

postupak se ponavlja sve dok su aktivne aplikacije.

Slijedni dijagram komunikacije je prikazan na slici (Slika 2.3).

Page 25: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

21

Slika 2.3 Sekvencijski dijagram Mini maps sustava

Page 26: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

22

2.1.2. Aplikacija za pametni telefon

U programskom jeziku Java pomoću Android SDK i razvojnog okruženja Android studio

je razvijena aplikacija za pametni telefon koja dohvaća karte, uz mogućnost GPX rute, te ih

šalje na pametni sat.

Aplikacija šalje poslužitelju zahtjeve GET, odgovore prima u obliku formata jpg slike

koju šalje na pametni sat u obliku polja bajtova. Cilj ove aplikacije je API 20, no može

podržavati API 18 i nadalje iz razloga što Android Wear zahtijeva minimalni API 18.

Dijagram razreda za aplikaciju je prikazan na slici (Slika 2.4).

Slika 2.4 Dijagram razreda aplikacije za pametni telefon

MainActivity je glavna klasa aplikacije i unutar nje su definirana dva gumba.

Pomoću gumba Izaberi_GPX_Rutu pristupa se aktivnostima koje reprezentira klasa

Page 27: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

23

FileChooser, dok pomoću gumba Obrisi_GPX_Rutu poništavamo odabir rute.

Metoda doOpen pohranjuje informaciju o putu do odabrane GPX datoteke.

Unutar klase DataLayerListenerService definiran je atribut points koji

predstavlja polje geografskih točaka te je definiran kao Point. U atribut

mWearableNode koji je tipa Node pohranjuje se čvor pametnog sata kada se pronađe.

Metoda sendToWearable služi za slanje podataka na pametni sat, prije slanja metoda

findWearableNodeAndBlock pronađe čvor sata. Metode onMessageStart,

onMessagePing, onMessageStop, onMessageLocate i onMessageGet

obrađuju različite zahtjeve koji stignu sa sata. onMessageGet obrađuje zahtjev za kartom,

dok onMessageLocate daje trenutnu lokaciju ukoliko sat nema ugrađen GPS modul.

onMessageMyLocation metoda provjerava udaljenost trenutne lokacije od rute, te šalje

satu signal za vibraciju ukoliko je udaljenost veća od 50 metara (cross track error).

decodeGPX metoda obradi datoteku GPX i vraća polje geografskih točaka rute.

distance i bearing metode služe za izračunavanje udaljenosti trenutne lokacije od rute

i obje vračaju vrijednost double. downloadUrl2 metoda šalje HTTP GET zahtjev Google-

ovom poslužitelju za karte, a kao povratnu vrijednost dobiva polje bajtova koji predstavljaju

jpg sliku karte. Metoda onCreate koja je definirana u klasama MainActivity,

DataLayerListenerService i FileChooser označava koje radnje će se izvršiti

unutar aktivnosti kada je ona kreirana. onLocationChanged metoda dohvati trenutnu

lokaciju čim se ona promjeni što dovodi do uštede baterije kada se korisnik ne kreće.

Klasa point sadrži dva atributa koja predstavljaju zemljopisnu dužinu i širinu.

Metodama getX i getY vraća se vrijednost zemljopisne dužine odnosno širine. toString

metoda pretvara uređeni par u String.

Klase FileChooser, FileArrayAdapter i Option zaduženi su za odabir GPX

datoteke. U klasi Option, metode getName, getData i getPath vraćaju podatke o

atributima name, data i path. Metoda getView klase FileArrayAdapter prikazuje

na ekranu izlist svih dostupnih datoteka i foldera. Klasa FileChooser kroz atribut

fileSelected vraća datoteku koja je odabrana putem metode onListItemClick. U

atributu extensions nalaze se podržani formati dok atribut fileFilter sadrži formate

koji će se prikazati, pa tako u Mini maps aplikaciji prikazuje se samo GPX format datoteke.

currentDir atribut sadrži put do trenutnog direktorija. Metoda fill popuni adapter

Page 28: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

24

koji je tipa FileArrayAdapter koji kako je već spomenuto prikaže popis datoteka na

ekranu telefona.

2.1.3. Aplikacija za pametni sat

U programskom jeziku Java pomoću Android SDK i razvojnog okruženja Android studio

je razvijena aplikacija za pametni sat koja prikazuje kartu s trenutnom lokacijom.

Aplikacija šalje telefonu zahtjeve, dok odgovore prima u obliku polja bajtova koji

predstavljaju jpg slike karte. Cilj ove aplikacije je API 20, što je ujedno i minimum iz razloga

što u prijašnjim verzijama nije podržan Android Wear.

Dijagram razreda za aplikaciju je prikazan na slici (Slika 2.5).

Slika 2.5 Dijagram razreda aplikacije za pametni sat

MainActivity je glavna klasa aplikacije u kojoj je definiran atribut mCacheDir u

kojemu je pohranjen put do memorije pametnog sata gdje se pohranjuju karte.

mPhoneNode sadrži čvor telefona kada ga metoda findPhoneNode pronađe. mapR služi

pri računanju prikazanih piksela karte na ekranu s metodom frameTo.

sendTileRequest i sendTileRequestAndWait metode šalje zahtjev za kartama.

onMessageLocation i onMessageResponse metode obrađuju odgovore koji stižu s

pametnog telefona. setYouAreHere metoda postavlja oznaku trenutne lokacije na karti,

Page 29: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

25

dok metoda hasGps provjerava da li sat ima GPS modul. Metoda onCreate označava

koje radnje će se izvršiti unutar aktivnosti kada je ona kreirana dok onPause označava koje

radnje će se izvršiti kada aplikacija bude pauzirana, stavljena u pozadinu. onResume

metoda se izvršava kada se aplikacija ponovno otvori nakon što je bila pauzirana, a

onDestroy metoda izvršava radnje kada se aplikacija potpuno ugasi. Metoda

sendToPhone šalje informacije na pametni telefon.

Jedan od problema koje sam uvidio tijekom izrade i testiranja je zaslon. Sama logika

nalaže da očekujete kako će karta na pametnom satu biti stalno na zaslonu, no Android Wear

je podešen da ukoliko ne dirate aplikaciju ona se u roku 3 sekunde makne sa zaslona i ukoliko

želite ponovo prikazati karte morate ponovno ići u izbornik i paliti aplikaciju. Android ne

nudi nikakve mogućnosti podešavanja vremena nakon koliko će izaći iz aplikacije i otići u

stand by mod. Štoviše niti pod postavke za razvijatelje programa na Android Wear nema

mogućnosti da zaslon bude budan cijelo vrijeme već samo nudi tu opciju kada je pametni sat

spojen na računalo. Postoje načini kako da aplikacija ostane u fokusu i drži pametni sat

budnim sve dok korisnik ručno ne ugasi aplikaciju, a jedan od tih načina sam i ja upotrijebio.

[6]

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Ovom linijom koda aplikacija ostaje na ekranu sve dok ju korisnik sam ne ugasi. Google

to izričito ne preporuča, a i sam sam otkrio zašto. Nakon kratkog testiranja sata s tom opcijom

evo nekoliko zaključaka. Prva stvar je što je pametni sat nakon 5 minuta bio osjetno topao,

štoviše na ruci na kojoj sam ga nosio osjetilo se kako neugodno grije. Osjećaj koji definitivno

nije ugodan na dulje vrijeme, a i upitno je koliko je to dobro za sam pametni sat da se toliko

grije, pregrijava.

Druga stvar, koja je vrlo vjerojatno povezana s pregrijavanjem je potrošnja baterije. U

šetnju sam krenuo sa 100 % napunjenosti baterije i nakon 15 minuta ona je pala na 70 %.

Potrošnja od 30 % baterije u samo 15 minuta je jako velika jer dolazimo do zaključka da

sama aplikacija može raditi jedan sat, te će se tada ugasiti pametni sat. Testiranje sam izveo

na sunčan dan tako da je osvijetljene ekrana bilo na maksimumu međutim to ne opravdava

previše. Uz oblačniji dan vjerujem da bi mogli izvući još pola sata iz baterije ali ni sat i pol

Page 30: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

26

nije neko trajanje baterije pogotovo ako se čovjek osloni samo na pametni sat i odluči otići

u šetnju bez pametnog telefona.

2.1.4. Datoteka GPX

Format GPX ili GPS za razmjenu (engl. GPS Exchange Format) ruta, staza i putnih

točaka je XML shema zamišljena kao zajednički format GPS podataka za softverske

aplikacije. Format je otvorenog tipa i može se koristiti bez plaćanja licenci. Njime se može

bilježiti geografska lokacija, nadmorska visina te vrijeme kada smo bili na toj lokaciji, iz tog

razloga vrlo je popularan kao format za razmjenu podataka između različitih GPS uređaja i

programskih paketa. Razni internet servisi za praćenje vaših dnevnih aktivnosti omogućuju

unos podataka preko GPX datoteke te nudi razne analize podataka od prijeđenog puta,

svladane visinske razlike, potrošnji kalorija te vizualizacija istih podataka putem dijagrama.

Svaka GPX datoteka mora sadržavati geografsku dužinu i širinu, ostali podaci kao

vrijeme i nadmorska visina su opcionalni. Zemljopisna dužina i širina prikazana je kao

decimalni broj u stupnjevima koristeći WGS84. WGS84 (World Geodetic System 1984) je

naziv elipsoida koji se koristi kao referentni koordinatni sustav a koristi se kao standard u

kartografiji, geodeziji i navigaciji te ga danas koriste svi GPS uređaji.

Primjer GPX datoteke možete vidjeti u kodu (Kod 2.4).

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

<gpx xmlns="http://www.topografix.com/GPX/1/1"

xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3

"

xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExte

nsion/v1" creator="Oregon 400t" version="1.1"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.topografix.com/GPX/1/1

http://www.topografix.com/GPX/1/1/gpx.xsd

http://www.garmin.com/xmlschemas/GpxExtensions/v3

http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd

http://www.garmin.com/xmlschemas/TrackPointExtension/v1

http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd">

<metadata>

Page 31: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

27

<link href="http://www.garmin.com">

<text>Garmin International</text>

</link>

<time>2009-10-17T22:58:43Z</time>

</metadata>

<trk>

<name>Example GPX Document</name>

<trkseg>

<trkpt lat="45.800840" lon="15.970779">

<ele>4.46</ele>

<time>2009-10-17T18:37:26Z</time>

</trkpt>

</trkseg>

</trk>

</gpx>

Kod 2.4 Primjer datoteke GPX s jednom točkom

U aplikaciji Mini maps kada se učita datoteka GPX treba ju obraditi kako bi dobili čiste

geografske koordinate. Ostali podaci su nam nebitni, kao što je vrijeme i nadmorska visina.

Za obradu datoteke koristi se metoda decodeGPX koja kao argument prima datoteku a

vraća listu geografskih lokacija. Te lokacije se onda dodaju HTTP zahtjevu kako bi se

iscrtala ruta na karti u već spomenutom formatu.

2.1.5. Cross track error

Cross track error je službeni termin kada korisnik odluta od zadane rute. Računa se kao

udaljenost toče, koja predstavlja trenutnu lokaciju, od rute, odnosno najbliže dvije točke

trenutnoj lokaciji. Primjer udaljenosti trenutne lokacije i rute je na slici (Slika 2.6). Iako se

ne očekuje velika udaljenost između točaka pa bi se lako moglo gledati Zemlja kao ravna

ploha a ne kao sfera, korišten je sferni izračun. Korištena je haversinusna formula iz razloga

što ima najmanju pogrešku pri izračunu udaljenosti na zemlji.

Page 32: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

28

Slika 2.6 Prikaz udaljenosti trenutne lokacije od rute (Cross track error) [10]

Izračun se vrši na sljedeći način, prvo se moraju naći dvije najbliže točke zadane rute

trenutnoj lokaciji. Za izračun udaljenosti dviju točaka koristi se haversinusna formula (1):

a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)

c = 2 ⋅ atan2( √𝑎, √(1 − a) ) (1)

d = R ⋅ c

Gdje je φ1 - zemljopisna širina prve točke u radijanima, φ2 - zemljopisna širina druge

točke u radijanima, λ - zemljopisna dužina u radijanima, R – ekvatorni polumjer Zemlje

koji iznosi 6 371 km i d je tražena udaljenost. Atan2 je poopćenje funkcije arctan(y/x) koja

pokriva cijeli kružni opseg. [5]

U aplikaciji ovaj izračun se vrši u metodi distance koja prima dvije točke koje

predstavljaju uređeni par zemljopisne širine i dužine. Metoda vraća udaljenost.

Kada smo pronašli dvije najbliže točke onda treba izračunati azimut između te dvije

točke te prve točke i trenutne lokacije. Azimut se računa po sljedećoj formuli (2):

θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ ) (2)

Gdje je θ – traženi azimut, Δλ – je razlika između zemljopisnih dužina dviju točaka u

radijanima, φ1 – zemljopisna širina prve točke u radijanima, φ2 - zemljopisna širina druge

točke u radijanima. Atan2 je poopćenje funkcije arctan(y/x) koja pokriva cijeli kružni

opseg. [5]

U aplikaciji izračun azimuta vrši se u metodi bearing koja prima dvije točke koje

predstavljaju uređeni par zemljopisne širine i dužine. Metoda vraća azimut.

Konačno imamo sve potrebne parametre za izračun udaljenosti trenutne lokacije od rute

koja se računa formulom (3):

Page 33: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

29

dxt = arcsin( sin(δ13) ⋅ sin(θ13−θ12) ) ⋅ R (3)

Gdje je dxt – tražena udaljenost od rute, δ13 – udaljenost prve točke od trenutne lokacije,

θ13 – azimut između prve točke i trenutne lokacije, θ12 - azimut između dvaju točaka rute,

R – ekvatorni polumjer Zemlje koji iznosi 6 371 000 metara. Udaljenost je izražena u

metrima. [5]

Provjera udaljenosti od rute vrši se svaku promjenu trenutne lokacije. Na temelju

testiranja i svog osobnog iskustva kritična udaljenost je postavljena na 50 metara.

Page 34: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

30

3. Upute za korištenje aplikacije

Pokretanje aplikacije za pametni telefon vrši se odabirom ikone na zaslonu ekran (Slika

3.1) te se otvara zaslon prikazan na slici (Slika 3.2). Na raspolaganju su dvije tipke.

Odabirom opcije Izaberi GPX rutu otvara se aktivnost za izbor datoteke GPX kao na

slici (Slika 3.3). Odabir se vrši jednostavnim klikom na odabranu datoteku. Odabrana ruta

se onda obradi i šalje Google-ovom poslužitelju unutar zahtjeva HTTP GET.

Slika 3.1 Prikaz ikone aplikacije na pametnom telefonu

Slika 3.2 Početni zaslon aplikacije na pametnom telefonu

Odabirom opcije Obriši GPX rutu briše se odabrana ruta s karte. Ukoliko nije

odabrana GPX ruta onda se automatski karta prikazuje bez ruta.

Page 35: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

31

Slika 3.3 Aktivnost izbora GPX rute

Nakon što je odabrana ruta ili želite kartu bez rute pokreće se aplikacija na pametnom

satu (Slika 3.4). Ukoliko ste odabrali rutu onda se pokreće karta kao na slici (Slika 3.5), a

ako niste odabrali rutu onda se otvara čista karta kao na slici (Slika 3.6).

Slika 3.4 Prikaz ikona aplikacije na satu

Page 36: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

32

Slika 3.5 Prikaz karte s GPX rutom na pametnom satu

Slika 3.6 Prikaz karte bez GPX rute na pametnom satu

Pomakom karte u svim smjerovima ona se pomiče i može se vidjeti ostali dijelovi karte,

a ujedno se i spremaju slike karata na sat kako bi mogli koristiti aplikaciju bez telefona.

Svakim pomakom aplikacija provjerava da li postoji slika za taj dio karte te ukoliko ne

postoji šalje zahtjev telefonu za istu. Telefon, po primitku zahtjeva šalje zahtjev za tom

kartom i dohvaća ju te šalji na sat.

Ukoliko se obriše ruta odabirom opcije na aplikaciji za pametni telefon ili se ista izmjeni

potrebno je osvježiti karte na satu. Dovoljno je samo dva puta tapnuti na ekran sata i on će

obrisati stari karte i zatražiti nove. Isto tako ta akcija će u centar ekrana vratiti vašu trenutnu

lokaciju.

Page 37: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

33

Trenutna lokacija je prikazana plavim kružićem i plavim trokutićem koji označava smjer

kretanja kao što se vidi na slikama (Slika 3.1 i Slika 3.2).

Za gašenje aplikacije na satu potrebno je pritisnuti i dugo držati prst na zaslonu pametnog

sata.

Page 38: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

34

4. Zaključak

Pametni satovi su probili led u tehnologiji koju čovjek može svakodnevno nositi na sebi,

tehnologiji koja ne samo da ima funkcionalnu vrijednost već je i modni dodatak.

Uz sve svoje mogućnosti koje donosi pametnom telefonu mislim da je tehnologija

pametnih satova još u ranoj fazi razvoja. Trenutno dostupni modeli, kako je i u ovom radu

spomenuto, ne mogu se pohvaliti velikom autonomijom baterije. Za normalnog korištenja

bateriju je potrebno puniti svaki dan što nije previše praktično. Same mogućnosti sata su vrlo

ograničene samom veličinom ekrana. Upravo to vidim kao moguća područja gdje bi trebalo

tražiti bolja rješenja.

Cilj ovoga rada bio je razviti aplikaciju za pametni sat koja ima mogućnost prikaza karte

sa željenom rutom. Korištena tehnologija sastojala se od pametnog sata Sony Smartwatch 3,

pametnog telefona Xiaomi Mi3 W i programsko okruženje Android studio. Za mobilni

uređaj Android razvijena je aplikacija koja dohvaća karte s rutom ili bez te ih šalje

povezanom Android Wear pametnom satu. Za pametni sat razvijena je aplikacija s Android

Wear-om koja omogućuje prikaz karata poslanih s pametnog telefona te signaliziranje

vibracijom ukoliko se previše udaljilo od rute.

U daljnjem radu volio bih isprobati povezivanje sata s telefonom preko bežičnog pristupa

internetu koji se nudi u Android Wear 5.1.1 verziji kojom bi se dala unaprijediti i ova

aplikacija. Kao dodatne mogućnosti na satu bi se moglo dodati praćenje puta, tj. snimanje

puta kojim korisnik ide u GPX format kako bi kasnije mogao taj svoj put izmijeniti sa svim

GPS uređajima i servisima.

Page 39: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

35

Literatura

[1] Ruiz, C. D., Göransson A. Professional Android Wearables, Indianapolis: John

Wiley & Sons, 2015.

[2] Gargenta, M. Naučite Android : [razvoj aplikacija za Android Market], Zagreb :

Dobar plan, 2011.

[3] What is Android?, Android developers,

http://developer.android.com/about/versions/lollipop.html, 1.6.2015.

[4] Building Apps for Wearables,

https://developer.android.com/training/building-wearables.html, 20.5.2015.

[5] Movable Type Scripts, http://www.movable-type.co.uk/scripts/latlong.html,

5.4.2015.

[6] Stack Overflow, http://stackoverflow.com/, 15.4.2015.

[7] Android Wear, http://en.wikipedia.org/wiki/Android_Wear, 2.6.2015.

[8] Mini Maps for Android Wear, https://github.com/dheera/android-wearmaps,

21.2.2015.

[9] Android Wear update news, http://www.androidpit.com/android-wear-update,

4.6.2015.

[10] The functions on a GPS receiver, http://www.sailtrain.co.uk/gps/functions.htm,

1.6.2015.

Page 40: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

36

Sažetak

Naslov: Lokacijska aplikacija za pametni sat s operacijskim sustavom Android Wear

U ovom završnom radu izrađena je aplikacija za operacijski sustav Android Wear. Sustav

omogućuje prikaz karta na pametnom satu te prikaz GPS rute na karti. Pametni sat signalizira

vibracijom korisnika ukoliko se udaljio više od 50 metara od zadane rute. Sva komunikacija

odvija se bežični putem. Sustav se sastoji od dvije aplikacije, aplikacije za pametni sat i

aplikacije za pametni telefon.

Aplikacija na pametnom telefonu dohvaća karte s prikazanom rutom ukoliko je ona

odabrana te karte šalje na pametni sat. Uz karte, aplikacija šalje i trenutnu lokaciju ukoliko

pametni sat nema GPS modul.

Aplikacija na pametnom satu prima karte te ih prikazuje na zaslonu.

Ključni pojmovi

Operacijski sustav Android, operacijski sustav Android Wear, aplikacija za Android,

aplikacija za Android Wear, activity, datoteka manifest, GPS lokacija, Google maps, Cross

track error, Node API

Page 41: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

37

Abstract

Title: Location-based application for Smartwatch with Android Wear

In this final thesis was made an application for the operating system Android Wear. The

system allows you to view maps on a smart watch and display the GPS tracks on the map.

Smart watch warn users if they moved away more than 50 meters from the set route with

vibration. All system parts communicate via wireless Internet access and bluetooth. The

system consists of two applications, applications for smart watch and applications for smart

phones.

The application on your smart phone retrieves maps with plotted route if it is selected and

sends the map to the smart watch. In addition to the map, the application sends the current

location if smart watch doesn't have GPS module.

The application on the smart watch receives the maps and displays them on the screen.

Key terms

Operating system Android, operating system Android Wear, Android Wear application,

Android application, activity, manifest file, GPS location, Google maps, cross track error,

Node API

Page 42: Lokacijska aplikacija za pametni sat s operacijskim ... · user interface, UI) za svaku komponentu aplikacije definirano ... uređaj za rad algoritma za prepoznavanje glasovnih naredbi

38

Skraćenice

API Application Programming Interface aplikacijskom programsko okružje

GPS Global Positioning System globalni pozicijski sustav

GPX GPS Exchange Format format za izmjenu lokacijskih točaka

SDK Software Development Kit alati za razvoj softvera

UI User Interface korisničko sučelje