Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
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.
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
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.
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.
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]
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
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.
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.
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.
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.
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?”
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
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.
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
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
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
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.
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
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
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.
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
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).
21
Slika 2.3 Sekvencijski dijagram Mini maps sustava
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
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
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,
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
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>
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.
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):
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.
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.
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
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.
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.
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.
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.
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
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
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