Lokacijska aplikacija za pametni sat s operacijskim sustavom Android Wear

Similar documents
1. Instalacija programske podrške

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Podešavanje za eduroam ios

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

SAS On Demand. Video: Upute za registraciju:

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

Port Community System

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Upute za korištenje makronaredbi gml2dwg i gml2dgn

Tutorijal za Štefice za upload slika na forum.

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Office 365, upute za korištenje elektroničke pošte

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

Windows Easy Transfer

Otpremanje video snimka na YouTube

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

Mindomo online aplikacija za izradu umnih mapa

Uvod u relacione baze podataka

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

za STB GO4TV in alliance with GSS media

VIŠEKORISNIČKA IGRA POGAĐANJA ZA OPERACIJSKI SUSTAV ANDROID

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

BENCHMARKING HOSTELA

Upute za VDSL modem Innbox F60 FTTH

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017. GIF FORMAT (.

Uvod u MS Word. Nova znanja. Novi pojmovi

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Upotreba selektora. June 04

FAQ - najčešće postavljana pitanja. PBZ Wave2Pay usluga

Bušilice nove generacije. ImpactDrill

UPUTE ZA INSTALACIJU PROGRAMA FINBOLT 2007 tvrtke BOLTANO d.o.o.

PROJEKTNI PRORAČUN 1

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU RAČUNARSTVO ROBERT PRAŠNIČKI

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

DZM Aplikacija za servise

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Nejednakosti s faktorijelima

Klasterizacija. NIKOLA MILIKIĆ URL:

Osmišljavanje računalnog oblaka

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

Informacijski sustav primarne zdravstvene zaštite Republike Hrvatske

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Pravljenje Screenshota. 1. Korak

MOBILNA APLIKACIJA MOJE DIJETE

CRNA GORA

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

Uputstvo za konfigurisanje uređaja Roadstar

sys.monitor Published on sys.portal (

Kooperativna meteorološka stanica za cestovni promet

Udaljeno upravljanje tablet računalima za edukaciju

ONLINE APLIKACIJA ZA SLANJE OBAVIJESTI U PREDDEFINIRANO VRIJEME

Uputstva za upotrebu štampača CITIZEN S310II

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

ZAVOD ZA AUTOMATIKU I PROCESNO RAČUNARSTVO FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SVEUČILIŠTE U ZAGREBU HTTP PROTOKOL OTVORENO RAČUNARSTVO

Uvod u micro:bit Tomislav Pandurić

Priprema podataka. NIKOLA MILIKIĆ URL:

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET!

DIPLOMSKI RAD. Ispitivanje mogućnosti klasične baze prostornih podataka kod aplikacija za praćenje objekata u realnom vremenu

Primjeri pitanja iz 1. ili 2. skupine (za 2 ili 4 boda po pitanju) -

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

Upravljanje kvalitetom usluga. doc.dr.sc. Ines Dužević

KABUPLAST, AGROPLAST, AGROSIL 2500

Bear management in Croatia

STRUKTURNO KABLIRANJE

VÍVOACTIVE 3. Korisnički priručnik

Sound Bar. Upute za upotrebu HT-MT500/MT501

MASKE U MICROSOFT ACCESS-u

Uputstvo za aktivaciju i korišćenje msberbankbl aplikacije

DALJINSKI NADZOR I UPRAVLJANJE BEŽIČNIM ČVOROVIMA

Provjera opreme 6 Priprema Kreiranje nove veze za povezivanje na Internet u Windows XP Povezivanje na Internet 14

UPUTE ZA RAD S MODULOM "ČLANOVI" U SUSTAVU "VATRONET"

Diplomski rad. Prikupljanje i izvoz OpenStreetMap podataka. Izradila: Sanja Stilinović. Mentor: prof. dr.sc. Damir Medak. Zagreb, lipanj 2013.

SADRŽAJ. Besplatna registracija. Odabir platforme za trgovanje. Čime želimo trgovati? Trgovanje

Svojstva olovke x (0,0)

RAČUNALNA APLIKACIJA ZA RFID EVIDENCIJU STUDENATA NA NASTAVI

Aplikacija za dojavu događaja na uređajima s operacijskim sustavom Android

3. Obavljanje ulazno-izlaznih operacija, prekidni rad

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C

MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU

UTJECAJ BOJE U DIGITALNIM MEDIJIMA NA DOŽIVLJAJ DIZAJNA I KORISNIČKO ISKUSTVO

Najnoviju verziju uputa skinite na: Stranica. barxprint upute (verzija 26/04/2012)

EKSPLORATIVNA ANALIZA PODATAKA IZ SUSTAVA ZA ISPORUKU OGLASA

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

USB Key Uputa za instaliranje programske potpore i registraciju korisnika

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

Praćenje, ispravljanje i obrada pogrešaka

Web usluge. Web usluge

Mogudnosti za prilagođavanje

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

KORISNIČKE UPUTE Servis e-regos

OTVARANJE BAZE PODATAKA U MICROSOFT ACCESSU XP

Transcription:

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

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. 1

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. 2

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] 3

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 addaction(action) addpage(notification) setbackground(bitmap) setcontentaction(int) setgravity(int) sethinthideicon(boolean) OPIS Omogućuje dodavanja akcija koje su dostupne samo na Wear uređajima Dodaje dodatne stranice na glavnu obavijest Omogućuje dodavanja pozadinske slike u obavijest Omogućuje povezivanje akcije direktno s obavijesti Omogućuje postavljanje položaja obavijesti na ekranu 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 4

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 CardFragment OPIS 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. 5

CardFrame CardScrollView CircledImageView ConfirmationActivity CrossfadeDrawable Stvara okvir s bijelom pozadinom i zaobljenim rubovima umjesto standardnog crnog. Spremnik za jedan CardFrame čime omogućuje pomicanje okvira. Pogodno kada okvir sadrži više teksta. Standardni widget za prikazivanje slika. Moguće je sliku staviti u krug koji ima mogućnost dodavanja kružnog indikatora napretka. Pomoćna klasa za stvaranje atraktivnih animacija kao povratnih informacija za akcije korisnika. 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 WatchViewStub WearableListView Aktivnost s ugrađenom mogućnosti otkrivanja tipa ekrana na Wear uređaju. Alternativa WatchViewStub-a. 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. Implementacija ListView klase koja je prilagođena malim zaslonima. 6

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 Wearu. 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 Slanje naredbe na povezani uređaj Slanje teksta na povezani uređaj OBJAŠNJENJE 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. Wear uređaj snimi zvuk te ga kodira kao niz bajtova koji onda može poslati na povezani uređaj. 7

Odgovor na upit povezanog uređaja Odgovor na upit povezanog uređaja kao tekstualna poruka Izvršavanje jednostavnih sistemskih naredbi Kada dođe obavijest moguće je dobiti skup prethodno definiranih odgovora putem kojih korisnik jednostavno može odgovoriti pomoću glasovne naredbe. 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 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. 8

Tablica 1.4 Predefinirane glasovne naredbe IME NAREDBE FRAZA IME NAREDBE FRAZA Pozovi auto/taxi OK, Google, get Počni/završi vožnju OK, Google, start me a taxi. biciklom (odnosi se cycling. OK, Google, call me a car. na snimanje aktivnosti) OK, Google, start my bike ride. OK, Google, stop cycling. Zapiši bilješku OK, Google, take a Počni/završi trčanje OK, Google, track note. (odnosi se na my run. OK, Google, note to self. snimanje aktivnosti) OK, Google, start running. OK, Google, stop running. Postavi alarm OK, Google, set an Počni/završi OK, Google, start a alarm for 8 a.m. vježbanje (odnosi se workout. OK, Google, wake me up at 6 na snimanje aktivnosti) OK, Google, track my workout. tomorrow. OK, Google, stop workout. Postavi brojač OK, Google, set a Pokaži broj otkucaja OK, Google, what s timer for 10 srca my heart rate? minutes. OK, Google, what s my bpm? Pokaži broj OK, Google, how napravljenih koraka many steps have I taken? OK, Google, what s my step count? 9

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 10

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. 11

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 12

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 13

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 Wearom 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 14

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. 15

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 16

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 17

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. 18

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 19

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). 20

Slika 2.3 Sekvencijski dijagram Mini maps sustava 21

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 22

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 Googleovom 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 23

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, 24

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 25

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

<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. 27

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( a, (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): 28

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. 29

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. 30

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 31

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. 32

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. 33

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. 34

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. 35

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 36

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 37

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 38