31
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 4466 Android aplikaciju za suradno opažanje semafora Vladimir Dragutin Livaja Zagreb, lipanj 2016.

Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

ZAVRŠNI RAD br. 4466

Android aplikaciju za suradno opažanje

semafora

Vladimir Dragutin Livaja

Zagreb, lipanj 2016.

Page 2: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

1

Page 3: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

2

Page 4: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

3

Sadržaj

Uvod……………………………………………………………………………………….4

1. Korištenje ugrađenog akcelerometra.........................................................5

1.1. Akcelerometar s poništenom gravitacijom…………..……..….…...7

2. Poslužiteljska komponenta aplikacije…………………………….…………..8

2.1. Sučelje REST za dohvat senzorskih očitanja…………...………….8

2.2 Sučelje REST za unos senzorskih očitanja …………………...……9

3. Prepoznavanje aktivnosti korisnika……………….…………………………12

4. Prikazivanje podataka na karti……………………...………………………..13

5. Klijentska komponenta aplikacije……………………………………….……14

5.1. Dizajn sustava………..………………………………………………15

5.2. Tehničke značajke…………………………………………………...17

5.3. Programske značajke……….……………………………………….19

5.4. Funkcionalni zahtjevi……….……..………………………………....25

5.5. Upute za instalaciju…..………………………………………………26

Zaključak………………………………………………………………………………..27

Literatura..………………………………………………………………………………28

Sažetak…….……………………………………………………………………………29

Page 5: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

4

Uvod

Zadatak ovog rada bio je ostvarenje aplikacije za označavanje semafora koji usporavaju promet na karti. Takvi semafori uzrokuju pretjeran broj zaustavljanja i naglih ubrzanja. Razvijena aplikacija prepoznaje i pohranjuje podatke o takvim semaforima te korisnicima omogućava prikaz problematičnih semafora na karti.

Aplikacija je razvijena za operacijski sustav Android te je testirana u stvarnoj upotrebi.

Za izradu ove aplikacije koristilo se već ugrađeni senzor u uređaje s operacijskim sustavom android zvan akcelerometar. Ovaj senzor prepoznaje ubrzavanje i usporavanje u m/s2. Aplikacija ima i poslužiteljski dio na koji se sprema lokacija prepoznatog semafora te se dohvaćaju informacije o semaforima za prikaz korisniku. Komunikacija između poslužitelja i klijenta je ostvarena korištenjem sučelja REST, a razmijenjene poruke su u formatu GeoJSON. Konačno, aplikacija koristi i Googlovu programsku knjižnicu ActivityRecognition API za prepoznavanje vrste kretanja korisnika tj. razlikovanje kretanja u automobilu od stajanja u mjestu.

Page 6: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

5

1. Korištenje ugrađenog akcelerometra

Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor

akcelerometar. Akcelerometri se općenito koriste za detekciju kretanja i za

mjerenje promjena u brzini kretanja. Akcelerometri su još poznati kao „gravitacijski

senzori“ jer mjere akceleraciju na temelju kretanja i gravitacije.

Akceleracija se može mjeriti u tri dimenzije:

a. Lijevo-desno (bočno)

b. Naprijed-nazad (uzdužni)

c. Gore-dole (vertikalni)

Androidova komponenta „Sensor Manager“ dojavljuje senzorske promjene

akcelerometra u svim smjerovima.

Slika 1. prikazuje mapiranje svih smjerova akceleracije u odnosu na uređaj u

mirovanju u svojoj prirodnoj orijentaciji.

a. X-os (bočni) – Bočna (lijevo-desno) akceleracija, za koje pozitivne

vrijednosti predstavljaju pokreti udesno, a negativne vrijednosti

akceleracije predstavljaju pokreti ulijevo.

b. Y-os (uzdužni) – Akceleracija unaprijed ili unazad, za koje vrijedi da

akceleracija unaprijed predstavlja pokret u kojem gornji dio uređaja

se pomiče prema naprijed, a to rezultira pozitivnom akceleracijom,

dok unazad predstavlja negativnu vrijednost akceleracije.

c. Z-os (vertikalni) – Gore/dole akceleracija za koju vrijedi da kretanje

uređaja prema gore predstavlja pozitivnu vrijednost akceleracije, a

prema dole predstavlja negativnu vrijednost akceleracije. Uređaj u

prirodnoj orijentaciji pri mirovanju će registrirati -9.8m/s2 kao rezultat

djelovanja gravitacije.

Page 7: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

6

Za praćenje promjene u akceleraciji se koristiti slušač senzorskog događaja(engl.

sensor event listener) kao što je prikazano na slici 2.

Slika 1. prikaz akceleracijski osi na uređaju.

Page 8: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

7

Slika 2. slušač senzorskog događaja

1.1 Akcelerometar s poništenom gravitacijom

Za potrebe ove aplikacije akcelerometar je korišten na način da zamjećuje nagla

ubrzavanja pa pritom treba otkloniti utjecaj već postojeće gravitacije. Kako bi se to

izvelo, u metodi „onSensorChanged“ se rješava taj problem kao što je prikazano

na slici 3.

Page 9: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

8

Slika 3. Programski kod za uklanjanje gravitacije.

2. Poslužiteljska aplikacija

Poslužiteljska komponenta omogućava pohranjivanje novih senzorskih očitanja te dohvaćanje prethodno pohranjenih podataka. Komunikacija između klijentske i poslužiteljske komponente ostvarena je korištenjem sučelja REST. Razmijenjene poruke su u formatu GeoJSON.

2.1 Sučelje REST za dohvat senzorskih očitanja

Poslužitelj pruža REST sučelje za dohvat senzorskih podataka koje je prikazano na slici 4. Za dohvat podataka se na poslužitelj šalje HTTP GET zahtjev. Parametrima se filtriraju traženi podaci, pri čemu su parametri opcionalni. Uz ograničenje da se pri slanju zahtjeva preda barem jedan parametar, jer bi se u suprotnom dohvatio cjelokupni skup podataka. Poslužitelj šalje odgovor u kojem su podaci strukturirani kao GeoJSON. Slika 4 prikazuje primjer odgovora GET zahtjeva. Za Potrebe ove Androidove aplikacije, nama isključivo treba parametar sensorType pomoću kojeg možemo označavati da se radi o senzoru koji opaža semafore. GET zahtjevi se upućuju na URL

„http://161.53.19.88:3001/api/readings“.

Page 10: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

9

Slika 4. Dohvat senzorskih očitanja za koordinate semafora.

U kodu se pristup poslužitelju obavlja u pozadinskoj dretvi pomoću klase

„HttpUrlConnection“ koja obavlja dohvaćanje podataka.

2.2 Sučelje REST za unos senzorskih očitanja

Poslužitelj pruža REST sučelje za unos senzorskih očitanja. Za unos senzorskih očitanja šalje se HTTP POST zahtjev(slika 5). Podaci se šalju u tijelu HTTP poruke, pri čemu su strukturirani u GeoJSON formatu.

Page 11: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

10

Slika 5. POST zahtjev na poslužitelj

Na slici 6 je prikazana struktura zahtjeva pri unosu problematičnog semafora i odgovor od strane poslužitelja.

Page 12: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

11

Slika 6. struktura zahtjeva i odgovora za poslužitelja

Page 13: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

12

3. Prepoznavanje aktivnosti korisnika

ActivityRecognition API je Google-ova programska knjižnica za detekciju aktivnosti

korisnika. Aktivnosti su detektirane periodički pomoću senzora ugrađenih u uređaj

s operacijskim sustavom Android. ActivityRecognition API koristi samo senzore s

malim troškom energije tako da omogući što dulje trajanje bateriju uređaja. Na

primjer, korištenjem ove programske knjižnice se iz aplikacije može detektirati

hoda li trenutno korisnik ili se vozi u motornom vozilu, na biciklu ili stoji na mjestu.

Vremenski interval detekcije aktivnosti korisnika se može kontrolirati parametrom

„detectionIntervalMillis“. Veće vrijednosti tog parametra će rezultirati manjim

brojem detekcija aktivnosti, ali u poboljšanje trajanje baterije tj. uštedu energije.

Manje vrijednosti tog parametra će rezultirati većim brojem detekcija aktivnosti

korisnika, ali uz konzumiranje više energije i skraćivanje trajanja baterije uređaja.

Kako bi se sačuvala baterija i produljio njeno trajanje, objavljivanje detekcije

aktivnosti se može zaustaviti ako je uređaj nepokretan dulje vremena. Detekcija

aktivnosti će se nakon toga nastaviti kad uređaj bude bio u pokretu ponovno. Ovo

se odvija samo na uređajima koji podržavaju tip senzora

„Sensor.TYPE_SIGNIFICANT_MOTION“.

Aktivnosti koje su mogu detektirati su definirane u klasi DetectedActivity, a to

su:

1. IN_VEHICLE – uređaj se nalazi u motornom vozilu

2. ON_BICYCLE – uređaj se nalazi kod korisnika koji je na biciklu

3. ON_FOOT – uređaj je kod korisnika koji je na nogama

4. RUNNING – uređaj je kod korisnika koji trći

5. STILL – uređaj je u nepokretnom stanju

6. TILTING – nagim uređaja relativno u odnosu na gravitaciju se drastično

promijenio

7. UNKNOWN – nemoguće je detektirati aktivnost

8. WALKING – uređaj je kod korisnika koji hoda

Page 14: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

13

Dvije metode najveće važnosti za dobivanje trenutne aktivnosti korisnika i

postotak sigurnosti vezano za tu detekciju su getConfidence() i getType().

Metoda getType vraća tip aktivnosti koji je detektiran, a getConfidence vraća

broj između 0 i 100. Za broj iznad 50, se pretpostavlja da je detekcija točna.

Na slici 7 je vidljiv primjer koda koji koristi ActivityRecognition API radi ispitivanja

detektiranih aktivnosti u logu.

Slika 7. Primjer korištenja ActivityRecognition API-ja

4. Prikazivanje podataka na karti

Biblioteka Google maps android API utility nudi mogućnosti stvaranja toplinskih

karata, pretvaranja KML objekata u geografske, stvaranje slojeva na mapi,

upravljanje markerima u obliku grozda, izračun udaljenosti i površina pomoću

sferne geometrije i prikaz informacija na zasebnim markerima. Zasebni markeri

omogućuju da ikone markera izgledaju kao informacijski prozori, koji sadrže tekst i

Page 15: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

14

druge stvari. Prednost ovakvih markera leži u tome što više od jednog markera

može biti otvoren u istom trenutku, dok samo jedan informacijski prozor može biti

otvoren u nekom danom trenutku. Također se mogu koristit razni stilovi markera, a

njihova orijentacija se može mijenjati.

5. O razvijenoj aplikaciji

U ovom poglavlju se detaljno opisuje aplikacija za suradno opažanje semafora

koja predstavlja praktični dio ovog završnog rada. Ona omogućava korisnicima da

na brz i jednostavan način pri vožnji opažaju semafore koji izazivaju nagla

usporenja i nagla ubrzanja motornog vozila te da ih spremi za kasnije prikazivanje

i pregledavanje. Aplikacija pri radu koristi unutarnje senzore samog uređaja za

prepoznavanje pozitivne i negativne akceleracije tj. ubrzavanje i usporenje.

Potreban joj je stalni pristup internetu za komunikaciju s poslužiteljem tj.

spremanje trenutnih podataka o lokaciji opaženog semafora te pristup lokaciji

korisnika(GPS) za dobivanje informacije o geografskoj širini i geografskoj dužini.

Pojedinačne komponente aplikacije se izvode u zasebnim dretvama kako bi rad

same aplikacije bio optimiziran.

Page 16: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

15

5.1. Dizajn Sustava

Sučelje aplikacije se sastoji od dva Activity-a; MainActivity i

GoogleMapsActivity(SemaforMaps). MainActivity prikazan na slici 8. se prikazuje

prvi pri pokretanju aplikacije i nudi korisniku dvije opcije pomoću dva gumba, a to

su „Start App“ koji pokreće rad aplikacije tj. suradno opažanje semafora i gumb

„View Semaphores On Map“ koja prebacuje korisnika na GoogleMaps tj. slikoviti

prikaz semafora koji su bili do sad zabilježeni i spremljeni.

Slika 8. MainActivity

Nakon što korisnik stisne na Gumb „Start App“, na sredini ekrana se pojavljuje

komponenta za prikaz količine obavljenog posla(engl. progressbar) kao što

prikazuje slika 9; koji služi lakšem razumijevanju korisnika da se nešto obrađuje u

pozadini. Pri tome se naziv gumba mijenja iz „Start App“ u „Stop App“. U sredini

komponente za prikaz količine obavljenog posla(engl. progressbar) se nalazi i

Page 17: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

16

kučica za tekst(engl. textbox) koji služi kao brojač dodanih semafora tijekom

korištenja aplikacije. Također preostaje gumb „View Semaphores On Map“ koji

opet vodi do slikovitog prikaza semafora na karti.

Slika 9. MainActivity nakon stiskanja Start App

Nakon stiskanja gumba „View Semaphores On Map “, vidljivi su svi semafori kao što prikazuje slika 10.“GoogleMapsActivity“ koristi poseban marker koji cijelo

Page 18: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

17

vrijeme prikazuje informacije tj. u ovom slučaju prikazuje datum kad je određeni semafor opažen.

Slika 10. prikaz semafora na karti

5.2. Tehničke značajke

Za izradu aplikacije korištena je objektno usmjerena arhitektura

programskog jezika Java (jdk 1.8.0_20) uz programski okvir Android Tools (23.0.1)

unutar razvojnog okruženja Android Studio verzije 1.0. Ovo okruženje je

namijenjeno i specijalizirano za razvoj i testiranje Android aplikacija. Android

Studio nudi mnoge dodatke i proširenja koja olakšavaju izradu same aplikacije. Za

pokretanje, testiranje i nadogradnju aplikacije zadužen je sustav Gradle Build

(Gradle 2.2.1) koji generira izvršnu Android .apk datoteku za pokretanje aplikacije

Page 19: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

18

na mobilnom uređaju. Ovaj sustav sadrži build.gradle datoteku s konfiguracijskim

opcijama specifičnim za izgradnju Androidove aplikacije i deklaracijama svih

ovisnosti (engl. dependencies) koje se uključuju prilikom prevođenja (slika 11).

Slika 11. build.gradle datoteka aplikacije

Kako bi biblioteke bile uključene u izgradnju projekta moraju se nalaziti unutar

ovisnosti(engl. dependencies) elementa koji kod razvijene aplikacije sadrži

podršku Android biblioteka com.android.support:appcompat-v7 ,

com.google.android.gms:play-services:8.1.0 i com.google.maps.android:android-

maps-utils:0.3+.Prva biblioteka omogućava korištenje razreda ActionBar za

implementaciju alatne trake, a druga korištenje Googleov API ActivityRecognition

API za detektiranje aktivnosti korisnika i treća je za korištenje posebnih vrsta

markera za označivanje karte u GoogleMapsu. Prve dvije biblioteke predstavljaju

proširenja za Android uređaje s razinom API-ja većom od 7, a treća za Android

uređaje s razinom API-ja većom od 9. Proširenje za izradu posebnih markera na

Page 20: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

19

Google karti(engl. Google maps) omogućena je uključivanjem biblioteke

com.google.maps.android.ui.IconGenerator, a programska podrška za

ActivityRecognition API u kodu je osigurana uključivanjem biblioteke

com.google.android.gms.location.ActivtiyRecognitionResult.

5.3. Programske značajke

Aplikacija se sastoji od dva Activity-a, glavnog Activity-a zvan MainActivity za pokretanje opažanje semafora koji se otvara odmah pri pokretanju i Activity-a PrikazSemaforaMaps koji se rabi za pregledavanje lokaciju semafora na karti.

Također postoji još i usluga DetectedActivitiesIntentService koji se pokreće pri pokretanju aplikacije tj. stiskom na gumb „Start App“ koji se nalazi u MainActivity-u. Ta usluga u pozadini motri aktivnosti korisnika i šalje globalnu objavu(engl. broadcast) čim dobavi trenutne aktivnosti korisnika koji se pritom koriste u MainActivity-u i dobavljaju pomoću „broadcast receiver-a“. Usluge se mora deklarirati u manifestu android aplikacije što je prikazano na slici 12.

Slika 12. deklaracija servisa u android manifestu.

U MainActivity-u osim pokretanja servisa implementiramo još i sučelja SensorEventListener i LocationListener koja nam nude mogućnost

nadjačavanja specifičnih metoda od kojih su najvažniji „onSensorChanged“ koji uz

deklariranja akcelerometra bilježi sve promjene u akceleraciji; odsječak koda se vidi na slici 13.

Page 21: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

20

Slika 13. odsječak metode onSensorChange

Također implementirajući LocationListener-a i stvaranjem objekta tipa

LocationManager motrimo promjene u lokaciji korisnika. Nadjačana metoda

onLocationChanged se može vidjeti na slici 14, a u njoj se samo spremaju

trenutne vrijednosti geografske širine i geografske dužine.

Slika 14. nadjačana metoda onLocationChanged

Komunikacija sa poslužiteljem se obavlja za spremanje geografske širine i geografske dužine i za dobavljanje svih lokacija tih semafora. Spremanje tih lokacija se obavlja u pozadinskoj dretvi u kojemu pomoću HttpUrlConnection-a uspostavljamo konekciju sa poslužiteljem. Zahtjev prema poslužitelju mora biti složen u GeoJSON formatu da bi se uspješno spremio, a primjer toga je vidljiv na slici 15.

Page 22: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

21

Slika 15 . Trenutna lokacija spremljena u GeoJSON formatu

Za rad aplikacije je potrebno imat stalnu vezu s internetom i uključen GPS što povlači da moraju biti definirana određena dopuštenja(engl. permissions) u Android manifest datoteci. Od raznih dopuštenja, definirana moraju biti dopuštenja za grubu(engl. coarse) lokaciju, preciznu(engl. fine) lokaciju, dopuštenje za Internet, dopuštenje za ActivityRecognition API, dopuštenje za pristup stanju mreže (engl. access network state), dopuštenje za čitanje i pisanje na vanjskim izvorima (engl. write external storage). Sva dopuštenja su definirana u manifest datoteci i vidljiva su na slici 16.

Slika 16. dopuštenja u manifest datoteci

U Activity-u PrikazSemaforaMaps pozivamo metodu httpGet u onCreate metodi

u kojoj je sadržan i u kojem se pokreće pozadinska dretva u kojem se dohvaćaju svi trenutno spremljeni semafori i prikazuju na karti što je vidljivo na slici 17.

Page 23: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

22

Slika 17. GET zahtjev za dobivanje svih semafora

Nakon GET zahtjeva, poslužitelj nam pošalje informacije vezane za semafore u obliku GeoJSON-a iz kojih se pritom izvlači nužne informacije tj. geografsku širinu i dužinu semafora što je vidljivo na slici 18.

Page 24: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

23

Slika 18. izvlačenje koordinata iz GeoJSON zapisa.

Kad se sve koordinate semafora dohvate s poslužitelja, spremaju se u listu koje

sadrži objekte tipa „LatLng“, a koje se pritom u onPostExecute metodi ispisu na

karti koristeći posebno definiranu metodu koja upravo koristi biblioteku Google

maps Utility za posebne(engl. custom) markere. Slika 19 prikazuje metodu

addIcon.

Slika 19. dodavanje posebnih markera na karti.

Page 25: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

24

Vrlo je bitna usluga „DetectedActivitiesIntentService“ koji prati detektirane

aktivnosti korisnika i u metodi onHandleInent objavljuje (engl. broadcast)

informacije o aktivnostima korisnika ostalim Activity-ima u aplikaciji(slika 20).

Slika 20. slanje obavijesti o aktivnostima korisnika

Da bi se koristio ActivityRecognition API mora se implementirat Googleov API

klijent koji se izvodi u metodi „buildGoogleApiClient“(slika 21).

Slika 21. gradnja google-ovog api klijenta

Pritom pritiskom gumba „Start App“ se pokreće praćenje korisnikove aktivnosti, a stiskom na „Stop App“ se zaustavlja praćenje korisnikove aktivnosti. Primjer toga je vidljiv na slici 22.

Slika 22. pokretanje praćenje korisnikove aktivnost

Page 26: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

25

5.4. Funkcionalni zahtjevi

Cilj aplikacije je omogućivanju korisniku da pri vožnji u automobilu samo pokrene

aplikaciju i ne dira ju, jer sama aplikacija sve motri i obavlja dok korisnik sam ne

odluči zaustavit njen rad. Sama aplikacija mora opažat semafore pomoću

ugrađenih senzora te uspostavit konekciju s poslužiteljem i uz konstantno praćenje

trenutne lokacije korisnika, spremit lokaciju opaženog semafora. Također korisniku

treba omogućiti pregledavanje trenutnih semafora koji su dosad bili opaženi od

strane aplikacije. Funkcionalni zahtjevi aplikacije su vidljivi na slici 23.

Slika 13. funkcionalni zahtjevi aplikacije

Page 27: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

26

5.5. Upute za instalaciju

Instalacija same aplikacije je izuzetno jednostavna i obavlja se u nekoliko koraka:

1. Prvo treba ući u postavke i dalje u sigurnost u kojoj treba stavit kvačicu na „Nepoznati izvori“ koja dopušta instalaciju aplikacija i iz pouzdanih i iz nepouzdanih izvora.

2. Potom treba povezati računalo i Android uređaj pomoću USB kabela i omogućiti prijenos datoteka s računala na Android uređaj.

3. Zatim treba prenijeti app-debug.apk datoteku s računala na Android uređaj.

4. Odspojiti USB sa Android uređaja i računala.

5. Konačno je potrebno pronaći prebačenu/kopiranu datoteku(app-debug.apk) na uređaju, otvoriti datoteku, instalirati je i na kraju pokrenuti aplikaciju.

Page 28: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

27

Zaključak

U današnjem svijetu se mnoge aplikacije fokusiraju na stvarne događaje i opažanje različitih radnji korisnika u stvarnom vremenu. Aplikacija za opažanje semafora je samo jedna od mnogih koji slijede taj obrazac. Opažanjem problematičnih semafora se korisniku pomaže u prepoznavanju puteva koji zbog loše sinkroniziranih semafora nisu najbolji ako korisnik želi doći iz točke A u točci B u najkraćem mogućem vremenu, iako s po kilometrima najkraći. Operacijski sustav Android i njegova platforma omogućuju jednostavno korištenje senzora Android uređaja.

Aplikaciju je moguće poboljšati na sljedeće načine: prilagodba za ostale mobilne platforme, izrada web sučelja pomoću kojeg bi se na karti mogli pregledavati opaženi semafori. Također uz korištenje senzora magnetskog polja u kombinaciji s akcelerometrom bi se mogla otkriti orijentacija kretanja korisnika pa bi se na karti moglo označit semafore koji u trenucima gužve uzrokuju zaustavljanje vozila nešto dalje od semafora zbog vozila koja se nalaze ispred njega.

Page 29: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

28

Literatura:

[1] Reto Meier, „Professional Android 4 application development“,

http://www.wrox.com/WileyCDA/WroxTitle/Professional-Android-4-Application-Development.productCd-1118102274.html

[2] W. Frank Ableson, „Android in action third edition“

[3] Charlie Collins „Android in practice“

[4]ActivityRecognitionApi,

https://developers.google.com/android/reference/com/google/android/gms/location

/ActivityRecognitionApi#public-method-summary

[5] Stepehen Mcdonald, „Google maps Android API utility“,

https://github.com/googlemaps/android-maps-utils

[6]ActivityRecognitionApi,https://github.com/googlesamples/androidplaylocation/tre

e/master/ActivityRecognition

Page 30: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

29

Android aplikaciju za suradno opažanje semafora

Sažetak

Akcelerometar je jednostavan, osjetljiv i lagan senzor za koristit kao i ostali

ugrađeni senzori u androidu. Pogodan je za praćenje svih vrsta promjene brzine, a

u kombinaciji sa LocationListenerom koji prati promjene u lokaciji toliko često

koliko programer sam odluči definirat predstavlja snažan duet i omogućava samo

po sebi rješavanje raznih problema. Također i Googleovih API-ji predstavljaju

moćno oružje, kao u našem slučaju ActivityRecognition API koji kao što se vidjelo,

zahtijeva jako malo koda da se piše od strane programera, jednostavan je i lagan

za koristiti. . Razvijena Android aplikacija nudi korisniku jednostavno sučelje za

opažanje i spremanje semafora te pregled tih semafora na karti poslije.

Ključne riječi: ActivityRecognition API, Akcelerometar, Lokacija, GeoJSON,

android aplikacija, REST sučelje.

Page 31: Android aplikaciju za suradno opažanje · Za mjerenje promjene brzine u danim trenucima se koristi već ugrađeni senzor akcelerometar. Akcelerometri se općenito koriste za detekciju

30

An Application for Crowdsensing of Traffic Lights

Abstract

Accelerometer is a simple, sensitive and easy sensor to use just like the other in

built sensors in android. The accelerometer is great for tracking changes in

velocity in all directions and in combination with the LocationListener which tracks

changes in location as often as the programmer decides; represents a powerful

tool and enables solving many problems. Google Api's also represent a powerful

tool, like in our instance of the ActivityRecognitionApi, which as we have seen

requires very little code from the programmer; it's very easy and simple to use.

The developed android application offers the user an easy user interface for

crowdensing traffic lights, saving their locations and viewing these locations on a

map later.

Key words: Activity Recognition api, Accelerometer, Location, GeoJSON,

android application, REST interface.