Primož Režek
TEHNOLOGIJA BLUETOOTH NA PLATFORMI ANDROID
Diplomsko delo
Maribor, junij 2012
I
TEHNOLOGIJA BLUETOOTH NA PLATFORMI ANDROID
Diplomsko delo
Študent: Primož Režek
Študijski program: VS ŠP Računalništvo in informacijske tehnologije
Mentor: doc. dr. Matej Črepinšek
II
III
ZAHVALA
Zahvaljujem se mentorju doc. dr. Mateju
Črepinšku za pomoč in vodenje pri pripravi
diplomskega dela.
Zahvaljujem se podjetju LXNAV za sodelovanje
ter za pridobljene življenjske in strokovne izkušnje.
IV
Tehnologija Bluetooth na platformi Android
Ključne besede: platforma Android, Bluetooth tehnologija, NMEA protokol, razvoj
Android aplikacij
UDK: 004.777 (043.2)
Povzetek
V diplomskem delu smo preučili platformo Android, Bluetooth tehnologijo in NMEA
protokol. Vse skupaj smo povezali celoto in implementirali Android aplikacijo NanoConfig,
ki uporablja Bluetooth tehnologijo za povezovanje z snemalcem leta Nano in se
sporazumeva po NMEA protokolu. Osredotočili smo se na opis razvojnega okolja,
funkcionalnosti, implementacijo in vzdrževanje aplikacije z Android razvojno konzolo. Pri
implementaciji je ključnega pomena programska koda, ki služi za vzpostavitev Bluetooth
povezave in pošiljanje podatkov med napravama. Na koncu smo še omenili statistiko
uporabe in uporabnikov aplikacije ter možne nadgradnje aplikacije v prihodnosti.
V
Bluetooth technology on Android platform
Key words: Android platform, Bluetooth technology, NMEA protocol, Android application
development
UDK: 004.777 (043.2)
Abstract
In this thesis we have studied about the Android platform, Bluetooth technology and the
NMEA protocol. With the obtained knowledge we implemented the NanoConfig Android
application, which uses Bluetooth technology for connecting with a Nano flight recorder
and communicating over the NMEA protocol. We focused to describe the development
environment, functionalities, implementation and the maintenance of our application with
the Android developer console. An important point in the implementation is the
programming code that is establishing the Bluetooth connection and sending data
between the devices. At the end we mentioned about the usage, user statistics and the
possible upgrades for NanoConfig in the future.
VI
Kazalo vsebine
1 Uvod ............................................................................................................................... 1
2 Platforma Android........................................................................................................... 2
2.1 Kaj je Android .................................................................................................................. 2
2.2 Razvoj .............................................................................................................................. 2
Bolj prepoznavna podjetja v združenju OHA ...................................................................... 2
2.3 Uporaba ........................................................................................................................... 3
3 Tehnologija Bluetooth .................................................................................................... 5
3.1 Splošno ............................................................................................................................ 5
3.2 Razvoj .............................................................................................................................. 6
3.3 Kako deluje ...................................................................................................................... 6
3.4 Varnost ............................................................................................................................. 7
4 Protokol NMEA ............................................................................................................... 8
Primer standardnega GPS stavka GGA [27] ...................................................................... 9
5 Podjetje LXNAV ............................................................................................................ 10
5.1 Naprave .......................................................................................................................... 10
LX 9000 .................................................................................................................................. 10
LX 8000 .................................................................................................................................. 11
V7............................................................................................................................................ 11
NANO ..................................................................................................................................... 11
5.2 Programska oprema ..................................................................................................... 12
LX Sim .................................................................................................................................... 12
NanoConfig ............................................................................................................................ 12
6 Razvojno okolje ............................................................................................................ 13
6.1 Osnovno ......................................................................................................................... 13
6.2 Razvojno okolje Android .............................................................................................. 14
VII
Urejevalnik Java kode .......................................................................................................... 14
DDMS (Dalvik Debug Monitor Server) ............................................................................... 15
7 Aplikacija nanoconfig ................................................................................................... 16
7.1 Cilj ................................................................................................................................... 16
7.2 Funkcionalnosti ............................................................................................................. 16
OSNOVNE funkcionalnosti .................................................................................................. 16
DODATNE funkcionalnosti .................................................................................................. 17
7.3 Implementacija .............................................................................................................. 17
Osnovno ogrodje .................................................................................................................. 18
Bluetooth komunikacija z napravo Nano ........................................................................... 19
Zavihki .................................................................................................................................... 24
7.4 Objava na Google Play ................................................................................................ 28
7.5 Vzdrževanje ................................................................................................................... 29
Statistika ................................................................................................................................ 29
Zbiranje povratnih informacij ............................................................................................... 30
Odpravljanje napak .............................................................................................................. 30
8 Sklep ............................................................................................................................. 32
Literatura .............................................................................................................................. 33
Priloge .................................................................................................................................... 1
A. Nano specifikacija podatkovnega protokola ................................................................ 1
B. Izjava o avtorstvu ............................................................................................................ 9
C. Izjava o ustreznosti diplomskega dela ....................................................................... 10
D. Izjava o istovetnosti tiskane in elektronske verzije diplomskega dela in objavi
osebnih podatkov diplomantov ........................................................................................... 11
VIII
Kazalo slik
Slika 1 : Nvidia logotip [7] .............................................................................................................. 2
Slika 2 : Google logotip [9] ............................................................................................................ 3
Slika 3 : Sony SmartWatch [6] ...................................................................................................... 3
Slika 4 : HTC Dream [5] ................................................................................................................. 4
Slika 5 : Bluetooth logotip [13] ...................................................................................................... 5
Slika 6: GPS sprejemnik Globalsat BT-359 [26] ........................................................................ 8
Slika 7: LX 9000 [19] .................................................................................................................... 10
Slika 8: LX 8000 [20] .................................................................................................................... 11
Slika 9: V7 [21] .............................................................................................................................. 11
Slika 10: NANO [22] ..................................................................................................................... 11
Slika 11: LX SIm [23] ................................................................................................................... 12
Slika 12: NanoConfig Windows [24] ........................................................................................... 12
Slika 13: NanoConfig Android [24] ............................................................................................. 12
Slika 14 : Chrome (levo) in RapidSVN (desno) na Ubuntu 11.04 .......................................... 13
Slika 15 : Urejevalnik Java kode ................................................................................................ 14
Slika 16 : DDMS ........................................................................................................................... 15
Slika 17 : Grafični urejevalnik uporabniškega vmesnika ......................................................... 15
Slika 18 : Zavihki .......................................................................................................................... 18
Slika 19 : Meni .............................................................................................................................. 18
Slika 20 : Dedovanje TabHost razreda ...................................................................................... 18
Slika 21 : onCreate metoda v TabActivity ................................................................................. 18
Slika 22 : Deklaracija servisa kot svoj proces ........................................................................... 19
Slika 23 : Dovoljenja za delo z Bluetooth čipom ...................................................................... 19
Slika 24 : Funkcija za pregled seznanjenih naprav .................................................................. 20
Slika 25 : Iskanje novih naprav ................................................................................................... 20
IX
Slika 26 : Priprava BluetoothSocket za povezavo ................................................................... 21
Slika 27 : Vzpostavljanje povezave ............................................................................................ 21
Slika 28 : Inicializacija podatkovnega toka ................................................................................ 22
Slika 29 : Branje iz podatkovnega toka ..................................................................................... 22
Slika 30 : Pisanje v podatkovni tok............................................................................................. 23
Slika 31 : Zavihek Main................................................................................................................ 24
Slika 32 : Zavihek Logbook ......................................................................................................... 25
Slika 33 : Zavihek Pilot ................................................................................................................ 25
Slika 34 : Zavihek Task................................................................................................................ 27
Slika 35 : Zavihek Settings .......................................................................................................... 27
Slika 36 : Objavljena aplikacija na Google Play ....................................................................... 28
Slika 37 : Statistika na Google Play ........................................................................................... 29
Slika 38 : Poročilo o napaki ......................................................................................................... 30
Slika 39 : Posodabljanje aplikacije ............................................................................................. 31
Kazalo tabel
Tabela 1 : Razredi oddajnih moči [16][17] ................................................................................. 7
Tabela 2 : Nmea primer dekodiranja [27] .................................................................................... 9
Tabela 3 : Primer naloge (task-a) ............................................................................................... 26
X
Seznam uporabljenih kratic:
OHA – Open Handset Alliance
ARM – Advanced RISC Machines
WPAN – Wireless Personal Area Network
SIG – Special Interest Group
NMEA – National Marine Electronics Association
GPS – Global Positioning System
ADT – Android Developer Tools
SDK – Android software development
DDMS – Dalvik Debug Monitor Server
XML – Extensible Markup Language
USB – Universal Serial Bus
RFCOMM – Radio frequency communication
MAC – Media Access Control
1
1 UVOD
Hitrejši in enostavnejši prenos informacij je danes cilj skorajda vsakega podjetja ali
posameznika. Do tega mišljenja nas je pripravil hiter razvoj vseh vrst tehnologij, katere že
vsakodnevno in samoumevno uporabljamo. Eden izmed zadnjih prodorov na področju
zabavne elektronike so tako imenovani pametni mobilni telefoni, katerih uporaba strmo
narašča. Vgrajene strojne komponente, katerih je vedno več, nudijo uporabnikom vedno
več načinov uporabe pametnega telefona in omogočajo reševanje problemov, za katere
še je ne daleč nazaj veljalo, da so znanstvena fantastika. Eden izmed vzrokov za uspeh
pametnih telefonov je odprtokodni operacijski sistem, ki se je razvil pod okriljem svetovno
znanega podjetja Google in se danes uporablja na velikem številu naprav po vsem svetu.
Govor je o operacijskem sistemu Android. Dobro zasnovano in dostopno razvojno okolje
razvijalcem omogoča enostavno uporabo v telefon vgrajenih tehnologij, kot so Bluetooth,
GPS, Wifi, idr. Vsaka tehnologija pa omogoča širok spekter uporabe.
Namen diplomskega dela je preučiti Bluetooth tehnologijo in razvojno okolje Android
ter kot praktični del implementirati Android aplikacijo, ki bo komunicirala in izmenjevala
podatke preko Bluetooth tehnologije z napravo za snemanje letov Nano, katero razvija in
proizvaja podjetje LXNAV iz Celja.
Najprej smo splošno opisali platformo Android, omenili kdo jo razvija in kje vse se
danes že uporablja. V tretjem poglavju smo se lotili Bluetooth tehnologije. Opisali smo
njen namen in kako deluje. Nato smo prikazali sintakso in primer dekodiranja NMEA
protokola po katerem bomo prenašali podatke med Android napravo in Nanotom. V petem
poglavju smo omenili podjetje LXNAV v okviru katerega smo implementirali Android
aplikacijo in prikazali nekaj njihovih pomembnejših izdelkov. Nato smo opisali razvojno
okolje v katerem smo razvili aplikacijo in orodja katera so nam bila pri tem v pomoč. V
sedmem poglavju pa smo se posvetili podrobnejšemu opisu implementacije aplikacije v
razvojnem okolju, prikazali ključne dele programske kode ter opisali zgradbo in
funkcionalnosti aplikacije.
2
2 PLATFORMA ANDROID
2.1 KAJ JE ANDROID
Android je angleška beseda za robota, ki je na videz podoben človeku in se vede kot
človek. Kadar govorimo o platformi Android, pa gre za odprtokodni operacijski sistem,
zasnovan na Linux jedru. Android je bil prvotno načrtovan kot operacijski sistem za
mobilne telefone, danes pa ga srečamo tudi na tabličnih računalnikih in drugih napravah,
njegova uporabnost pa se iz dneva v dan veča [1].
2.2 RAZVOJ
Prva omemba Android platforme se je pojavila 5. novembra 2007, ko je podjetje Google
najavilo nov operacijski sistem za mobilne naprave. Obenem so predstavili OHA (Open
Handset Alliance), ki je nekako združenje podjetij, katero bi z sodelovanjem Googla
revolucioniralo trg mobilnih naprav in storitev. V OHA danes sodeluje 47 podjetij iz
področij programske, strojne opreme in telekomunikacij. Veliko izmed njih je prepoznavno
na svetovni ravni, spodaj bomo našteli le najbolj pomembna [2][3].
BOLJ PREPOZNAVNA PODJETJA V ZDRUŢENJU OHA:
Operaterji mobilne telefonije:
T-Mobile
Vodafone
Proizvajalci vezij:
ARM
Intel Corporation
NVIDIA Corporation (slika 1)
Texas Instruments Incorporated
Proizvajalci naprav (mobilni telefoni in tablični računalniki):
ASUSTeK Computer Inc.
Garmin International, Inc.
Slika 1 : Nvidia logotip [7]
3
HTC Corporation
LG Electronics, Inc.
Motorola, Inc.
Samsung Electronics
Sony Ericsson
Toshiba Corporation
Programska oprema:
eBay Inc.
Google Inc. (slika 2)
2.3 UPORABA
Android je bil prvotno oblikovan za pametne telefone in kasneje za tablične računalnike.
Odprtost, dostopnost in možnost prilagajanja pa je privedla do uporabe Android
operacijskega sistema na veliki množici naprav, kot so [4]:
Prenosni računalniki,
netbook-i,
elektronski bralniki,
pametna televizija,
ročne ure (slika 3),
slušalke,
avtomobilski CD in DVD predvajalniki,
pametna očala,
hladilniki,
inteligentne hišne inštalacije,
igralne konzole,
kamere,
prenosni medijski predvajalniki.
Slika 3 : Sony SmartWatch [6]
Slika 2 : Google logotip [9]
4
Prva javnosti dostopna Android naprava je bil mobilni
telefon HTC Dream (slika 4), ki je prispel na Ameriški
trg 22. oktobra leta 2008 [4].
Slika 4 : HTC Dream [5]
5
3 TEHNOLOGIJA BLUETOOTH
3.1 SPLOŠNO
Je tehnologija za prenos podatkov med različnimi
elektronskimi napravami. Za prenos podatkov
uporablja elektromagnetno valovanje frekvence
2,4GHz. Za omenjeno frekvenco je znano, da je
domet kratek, moč šibka in hitrost prenosa srednja. Tehnologija je torej primerna za
prenos podatkov manjšega obsega. Dejstvo, da je Bluetooth tehnologija namenjena
povezovanju naprav le na kratke razdalje, hitro omeji, na kakšen način se bo tehnologija
uporabljala in za katere naprave je primerna. Velik plus je zelo nizka poraba energije, zato
se je uveljavil na področju mobilnih naprav, saj imajo te na voljo le omejeno zalogo
energije. Govorimo o napravah kot so mobilni telefoni, tablični računalniki, dlančniki, GPS
sprejemniki in še bi lahko naštevali. Kadar govorimo o Bluetooth povezavi, gre za
povezovanje dveh ali več naprav v WPAN (Wireless Personal Area Network), kar pomeni
»brezžično osebno omrežje«, torej gre za osebno omrežje naprav. Tako se Bluetooth
znajde v najrazličnejših napravah, ki jih človek nosi s seboj (primer Bluetooth slušalke) in
se uporablja pri prenosu podatkov iz ene naprave na drugo, primer prenos slik iz
mobilnega telefona na računalnik [10].
Ime Bluetooth je dobila tehnologija od Danca z imenom »Harold Bluetooth« (Slovensko
»Harald Modrozob«) iz 10. stoletja, ki je pripomogel k združitvi Danske in Norveške z
enotnim političnim standardom, podobno kot je namen tehnologije združevati različne
naprave med seboj [11].
Slika 5 : Bluetooth logotip [13]
6
3.2 RAZVOJ
Tehnologijo Bluetooth so razvili leta 1994 inženirji Švedskega podjetja Ericsson. V letu
1998 je več podjetij skupaj ustanovilo združenje Bluetooth SIG (Special Interest Group),
tako so se podjetja skupaj lotila problema, kako bi povezali njihove naprave med seboj. V
SIG sodeluje veliko število podjetij, ki skupaj razvijajo in vzdržujejo tehnologijo Bluetooth.
Torej ni podjetja ali posameznika, ki bi si to tehnologijo lastilo [12].
3.3 KAKO DELUJE
Pri razvoju nove brezžične tehnologije je potrebno definirati frekvenčno območje, ki ga bo
ta uporabljala, da ne pride do prepletanja z drugimi napravami. Izbor frekvenčnega
prostora je zapleteno, saj ga otežujeta najmanj dve oviri, ki novim tehnologijam ne
dopuščata veliko izbire [14]:
Prenatrpanost frekvenčnega območja (vedno več novih naprav)
Plačevanje davkov državi (licence) za uporabo frekvenčnih območij
Zato Bluetooth komunicira v frekvenčnem pasu med 2,4 in 2,5GHz. Ta frekvenca je po
mednarodni pogodbi zastonj na voljo industrijskim, znanstvenim in zdravstvenim
napravam kot so daljinski upravljalniki, brezžični hišni telefoni, mikrovalovne pečice in tako
dalje. Težava je, da je v tem pasu prenatrpanost zelo velika, saj ogromno naprav, ki jih
vsakodnevno uporabljamo že koristi to območje. Tako je Bluetooth primoran uporabljati
učinkovite metode za preprečevanje prepletanja z drugimi napravami [14].
Rešitev za preprečevanje prepletanja je izjemno hitro menjavanje frekvence
komuniciranja (frequency hopping) med napravama. Seveda morata napravi biti usklajeni
katero frekvenco bosta na katerem intervalu uporabljale. Menjavanje frekvence se torej
vnaprej določi in izmenjuje med napravama. Frekvenca se lahko menja po vsakem
prejetem ali poslanem paketu, kar je lahko tudi do 1600-krat na sekundo [15].
7
Tehnologija je bila načrtovana za prenos podatkov na kratke razdalje, posledično mora biti
oddajna moč šibka. Bluetooth je zato definiran v treh razredih dosega, kot je prikazano
spodaj (tabela 1) [15].
Tabela 1 : Razredi oddajnih moči [16][17]
Razred Doseg
(pribliţno)
Radijska oddajna
moč
1 100m 100 mW (20 dBm)
2 10m 2.5mW (4 dBm)
3 1m 1mW (0 dBm)
3.4 VARNOST
Varnost prenosa podatkov v brezžičnih omrežjih je vedno večjega pomena. Pri razvoju
tehnologije Bluetooth so se tega zavedali in tako vključili naslednje varnostne mehanizme
[18]:
Obvezna seznanitev naprav (izmenjava ključev) pred komunikacijo,
možnost izklopiti vidnost naprave,
povezava zaščitena z do 128-bitno enkripcijo,
zelo hitro menjavanje frekvence (do 1600-krat na sekundo),
majhen doseg (prej omenjeni trije razredi dosegov).
8
4 PROTOKOL NMEA
NMEA (National Marine Electronics Association) je podatkovna specifikacija za
komunikacijo med napravami. Prvotno je bil razvit za medsebojno povezavo naprav na
navtičnih plovilih, kot so sonarji, avtopiloti in GPS sprejemniki. Danes se NMEA uporablja
v različnih področjih, kot na primer za povezavo naprav v jadralnem letalstvu, v vgrajenih
in mobilnih GPS zaslonih in navigacijskih sistemih. Razvilo ga je združenje »National
Marine Electronics Association« katerega kratica je hkrati ime standarda [25].
Preprost primer vsakdanje uporabe NMEA
protokola je naprava GPS sprejemnik, katera
vsebuje GPS in Bluetooth čip. Preko GPS čipa
naprava pridobi trenutno lokacijo iz GPS satelitov,
katero preko Bluetooth čipa neprekinjeno oddaja
(»bruha«) v obliki NMEA stavkov. Na primer, ta
naprava še je nedavno bila popularna kot zunanji
GPS sprejemnik za mobilne telefone kateri še
takrat niso imeli vgrajenega GPS sprejemnika.
Tako se lahko na telefonu, kateri nima lastnega GPS sprejemnika poganja program za
avtomobilsko navigacijo.
Nmea stavki vključujejo več podatkov v obliki črk in števil med sabo ločeni z vejico.
Začetek stavka je označen z znakom »$« nato sledi ime protokola. Na primer $GP
pomeni, da gre za prenos podatkov o zemeljski lokaciji ali GPS in ali informacije o njej.
Naslednje tri črke pa pomenijo vrsto protokola. Naprimer GGA pomeni Fix information
oziroma podatki o trenutni lokaciji iz GPS sprejemnika [27].
Slika 6: GPS sprejemnik
Globalsat BT-359 [26]
9
PRIMER STANDARDNEGA GPS STAVKA GGA [27]:
$GPGGA,221738,4617.370,N,01536.019,E,1,04,0.8,980.0,M,26.3,M,,*47
Tabela 2 : Nmea primer dekodiranja [27]
GGA Podatki o položaju GPS
221738 Položaj zabeležen ob času 22:17:38 UTC
4617.370,N Zemljepisna širina 46 stopinj 17.370' N (sever)
01536.019,E Zemljepisna dolžina 15 stopinj 36.019' E (vzhod)
1
Kakovost signala:
0 = neveljaven
1 = GPS položaj (SPS)
2 = DGPS položaj
3 = PPS položaj
4 = realno časovni Kinematic
5 = plavajoč RTK
6 = slepo ocenjen
7 = ročni način vnosa
8 = simulacijski način
04 Število najdenih satelitov
0.8 Vodoravna oslabitev položaja
980.0,M Nadmorska višina v metrih
26.3,M Višina geoida (povprečna nadmorska višina)
(prazno polje) Čas v sekundah od zadnje DGPS posodobitve
(prazno polje) ID številka DGPS postaje
*47 Kontrolna vsota, ki se vedno začne z *
10
5 PODJETJE LXNAV
Podjetje LXNAV d.o.o. deluje v poslovnih prostorih na Kidričevi 24a v Celju. Ustanovila sta
ga Uroš Krašovic in Erazem Polutnik, oktobra 2009. Organizirano je v dveh delih:
Proizvodnja, v kateri se izvajajo zaključna dela proizvodnje navigacijskih naprav,
snemalcev leta, vario enot in ostalih naprav za jadralna letala.
Razvoj. Tukaj se razvijajo nove naprave in projekti, prav tako se tukaj razvija vsa
programska oprema za njihove naprave, kot so: Operacijski sistemi za naprave,
konfiguracijski programi za PC, simulatorji naprav itd.
Jadralni piloti po celem svetu uporabljajo njihove naprave, sodelujejo pa tudi z Slovenskim
podjetjem Pipistrel, ki izdeluje ultra lahka letala.
5.1 NAPRAVE
LX 9000
Visokokakovostna navigacija z vario sistemom. Odlikuje jo zelo svetel 5,6“ ekran, ki
je dobro berljiv na soncu, 800MHz ARM procesor, 4GB spominskega prostora, 16
kanalni uBlox GPS sprejemnik in še bi lahko naštevali [19].
Slika 7: LX 9000 [19]
11
LX 8000
Navigacija z vario sistemom, katera
ima vgrajen 3,5“ ekran, ki je zelo
dobro berljiv na soncu, 800MHz
ARM procesor, 16 kanalni uBLOX
GPS sprejemnik, senzor višine in
opcijsko še Flarm modul [20].
V7
Samostojni, digitalni „speed-to-flight“ variometer. Trenutni vario
prikazuje mehanska igla, katero poganja koračni motor. Ostale
spremenljive parametre prikazuje uporabniku preko 2“ barvnega
ekrana. Poganja ga ARM procesor, vgrajen pa ima tudi
pospeškomer [21].
NANO
Najmanjši snemalec leta, ki ima vgrajeno GPS
anteno, Bluetooth sprejemnik, Litij ionsko baterijo
in micro SD režo za spominsko kartico (priloženo
2GB), na katero zapisuje let v igc formatu [22].
Slika 8: LX 8000 [20]
Slika 9: V7 [21]
Slika 10: NANO [22]
12
5.2 PROGRAMSKA OPREMA
LX SIM
Je simulator naprav LX 8000 in LX 9000,
ki podpira vse njune funkcionalnosti.
Teče na Windows operacijskih sistemih.
Omogoča pregled in ponovno
predvajanje letov, shranjenih v igc
formatu ter priklop spominske kartice
[23].
NANOCONFIG
Orodje za konfiguriranje snemalca
letov Nano. Obstaja različica za
Windows in za Android operacijski
sistem. Z njim lahko spreminjamo
podatke o pilotu, deklariramo nalogo in
konfiguriramo nastavitve snemalca
letov [24].
Slika 11: LX SIm [23]
Slika 12: NanoConfig Windows [24]
Slika 13: NanoConfig Android [24]
13
6 RAZVOJNO OKOLJE
6.1 OSNOVNO
Razvojno okolje smo imeli vzpostavljeno na lastnem prenosnem računalniku, z
odprtokodnim operacijskim sistemom Linux distribucije Ubuntu. Pri sodelovanju s
podjetjem smo uporabljali Subversion program RapidSVN (slika 14) in za iskanje
informacij po spletu, brskalnik Google Chrome (slika 14).
Slika 14 : Chrome (levo) in RapidSVN (desno) na Ubuntu 11.04
V pomoč nam je bil tudi program za pregledovanje različic Meld, s katerim smo lahko
preverili enakost originalne datoteke in tiste katera se je prenesla preko Bluetooth
vmesnika na telefon.
Za komunikacijo z mentorjem iz podjetja pa smo uporabljali elektronsko pošto in program
Skype, ki je: »brezplačno telefonsko omrežje (VoIP) in omogoča medsebojno
komuniciranje uporabnikov« [29].
14
6.2 RAZVOJNO OKOLJE ANDROID
Aplikacijo smo razvijali v programskem orodju Eclipse. Eclipse je odprtokodno razvojno
programsko orodje z možnostjo razširitve (plug-in), ki omogoča programiranje v različnih
jezikih. Namenjeno je programiranju v Javi ali odvisno od nameščenih razširitev za delo z
drugimi programskimi jeziki [28].
Za programiranje v Android okolju potrebujemo dodatne razširitve (plug-in) za Eclipse:
ADT plug-in: Android Development Tools razširitev za razvoj aplikacij za Android
naprave.
Android SDK: Software development kit je osnovno programsko ogrodje za razvoj
Android aplikacij.
UREJEVALNIK JAVA KODE: V njem se ureja in piše izvedljiva programska koda v
jeziku Java. Urejevalnik sproti opozarja na sintaktične in tudi na nekatere semantične
programske napake in nam ne dovoli prevesti projekta preden niso vse te odpravljene.
Omogoča nam tudi samodejno dokončanje imena spremenljivk, funkcij in razredov ter
prikaže okno z naborom struktur, ki so smiselne v trenutnem kontekstu (t.i. Content/Code
Assist). Če se postavimo na eno izmed možnih programskih struktur v pojavnem oknu se
nam prikaže opis v črnem oblačku, kot je vidno na sliki 15.
Slika 15 : Urejevalnik Java kode
15
DDMS (DALVIK DEBUG MONITOR SERVER) : je nepogrešljivo orodje za odpravo
napak in tudi testiranje aplikacij (slika 16), ki je del ADT. Omogoča nam port-forwarding
storitve, zajem zaslonskih slik iz naprav, informacije o nitih in kopicah na napravi, izpis
Log sporočil
kjerkoli iz
programske kode
(LogCat),
prestrezanje SMS
sporočil,
prestrezanje GPS
podatkov in še bi
lahko naštevali
[30].
UREJEVALNIK UPORABNIŠKEGA VMESNIKA : Grafični uporabniški vmesnik v
Android okolju je zasnovan kot xml dokument, kar pomeni, da bi lahko v celoti razvili
uporabniški vmesnik, brez kakršnega koli dodatnega programa. Vendar večina razvijalcev
posega po grafičnem urejevalniku uporabniškega vmesnika (slika 17), ki je del ADT.
Napredni razvijalci in tudi začetniki, kadar ne gre drugače, urejajo neposredno xml
datoteko, saj se
še nekaterih
gradnikov ali
lastnosti ne da
prilagoditi samo z
grafičnim
orodjem, zato ta
tudi omogoča
enostaven preklop
iz grafičnega v
izvorni način, kjer
lahko urejamo xml
datoteko.
Slika 16 : DDMS
Slika 17 : Grafični urejevalnik uporabniškega vmesnika
16
7 APLIKACIJA NANOCONFIG
NanoConfig je že obstoječa aplikacija, ki teče na operacijskih sistemih Windows in
omogoča konfiguriranje naprave Nano preko USB vmesnika. Ime je izpeljanka iz besed
Nano in Configuration, kar v kontekstu pomeni »Konfiguriranje naprave Nano«. Nano je
naprava za snemanje letov, ki jo izdeluje podjetje LXNAV, kot smo že omenili v 5.
poglavju.
7.1 CILJ
Cilj je bil implementirati aplikacijo za Android naprave, ki bo imela podobne
funkcionalnosti kot že obstoječa aplikacija za Windows operacijske sisteme. Komunikacija
med Android napravo in Nanotom bo potekala preko Bluetooth vmesnika, po vnaprej
določenem protokolu, ki ga je razvilo podjetje LXNAV in temelji na NMEA specifikaciji.
7.2 FUNKCIONALNOSTI
Osnovni cilj je bil povzeti funkcionalnosti po NanoConfig za Windows, ampak ker imajo
Android naprave širok spekter strojne opreme in operacijski sistem, ki razvijalcem ponuja
enostavno implementacijo zahtevnih funkcionalnosti, se je nabor funkcionalnosti hitro
povečal in aplikacija je postala vse bolj uporabna.
OSNOVNE FUNKCIONALNOSTI:
Branje in pisanje osnovnih podatkov (pilot, copilot, tip letala, registracija, razred
letala, tekmovalna oznaka)
Branje in pisanje nastavitev naprave (interval snemanja, samodejno končanje leta,
samodejni izklop naprave, NMEA izhod, NMEA boudrate)
Branje, urejanje in pisanje opravila (task). Pilot si pred začetkom leta vnaprej
določi točke oziroma koordinate katere bo preletel. Točke se naložijo iz datoteke
17
cup formata, za katero pilot določi aplikaciji kje se ta nahaja. Točke je možno
dodajati, brisati in spreminjati
DODATNE FUNKCIONALNOSTI:
Pregled podatkov o napravi (ime, verzija, datum verzije, serijska številka, status
beleženja…itd), njenem stanju (napetost baterije, polnjenje baterije in nadmorska
višina) in NMEA izhodu (GPS ura, signal in število satelitov),
pregled knjižnice letenja (logbook). Iz naprave se prenesejo in prikažejo osnovni
podatki o datotekah (letih) igc formata, ki so shranjeni na spominski kartici na
Nanotu (Datum, čas vzleta, pristanka in ime datoteke),
prenos igc datoteke iz Nanota na Android napravo,
nalaganje letov samo iz telefona (kadar ni povezave z Nanotom),
deljenje datotek (letov) iz Android naprave (Gmail, Dropbox, Bluetooth…itd),
prikazovanje reklamnega materiala podjetja.
7.3 IMPLEMENTACIJA
Pred implementacijo smo se dogovorili za nekaj osnovnih zahtev in pravil projekta. Prva
takšna zahteva je bila, da bo aplikacija podprta za čim več različnih naprav, kar je zelo
pomemben podatek za izbiro verzije Android SDK v katerem bo tekla naša aplikacija.
Podjetje se je odločilo za verzijo 2.1, tako bo naša aplikacija lahko tekla na napravah z
Android verzije 2.1 ali višje, kar je večina trenutnih naprav na trgu, starejše verzije se še
samo redko uporabljajo.
Celotni uporabniški vmesnik aplikacije bo v angleškem jeziku, ker so stranke podjetja
(bodoči uporabniki) iz vseh koncev sveta in se angleščina smatra kot svetoven jezik.
Prav tako smo se dogovorili, da bo aplikacija zasnovana na osnovi zavihkov. Vsak
zavihek bo predstavljal eno ali več funkcionalnosti in jih po kontekstu ločeval od drugih
zavihkov. Vsak zavihek pa bo podpiral sistemski meni, na katerem bodo gumbi za izhod,
o aplikaciji in nastavitve aplikacije, odvisno od zavihka pa še dodatni gumbi.
Kot smo že omenili, bo aplikacija razdeljena na zavihke, ki med sabo tudi ločujejo
funkcionalnosti, zato bomo v nadaljevanju opisali implementacijo aplikacije ločeno po
zavihkih in s tem tudi funkcionalnostih. Pred tem pa še bomo opisali omenjeno osnovno
ogrodje aplikacije in Android servis v katerem se odvija vsa Bluetooth komunikacija z
Nanotom.
18
OSNOVNO OGRODJE
Je temeljni del aplikacije, ki je viden in dostopen v celotni aplikaciji. K njemu spada
TabActivity, ki je gradnik za delo z zavihki (slika 18), k njemu dodana naslovna vrstica,
kjer so vidni podatki o povezavi in bateriji Nanota in sistemski meni (slika 19, ki je
dostopen preko fizične tipke menu.
TabActivity je uporabljen tako, da naredimo nov razred in k njemu pripadajoč grafični
vmesnik (layout), enako kot za navaden activity vendar ga razširimo z TabActivity
razredom (slika 20).
Nato v onCreate metodi, ki se proži ob zagonu acivity-ja nanj zvežemo grafični vmesnik
(layout) in pridobimo instanco TabHost iz podedovanega razreda. Na TabHost pa sedaj
lahko dodamo naše zavihke z njimi pripadajočimi imeni in povezavami do njihovih
posameznih Activity-jev (slika 21).
TabActivity razred si lahko predstavljamo kot očeta zavihkov, kateri so podedovali razred
Activity in so vezani na pripadajoče grafične uporabniške vmesnike. Vsak zavihek je torej
svoj Activity in deluje ločeno od ostalih.
Slika 20 : Dedovanje TabHost razreda
Slika 21 : onCreate metoda v TabActivity
Slika 19 : Meni
Slika 18 : Zavihki
19
BLUETOOTH KOMUNIKACIJA Z NAPRAVO NANO
Komunikacija med napravama mora biti dostopna iz več activity-jev in povezava se mora
vzpostaviti in ostati aktivna dokler je ne prekinemo, ne glede na trenutno dejanje
uporabnika. Da lahko te pogoje omogočimo, smo se odločili za implementacijo
komunikacije v Android Servisu. To je že pripravljen razred, ki se podeduje in nato lahko
uporabimo njegove metode.
Servis zaženemo podobno kot nov activity. Prednost je, da servis teče v ozadju, dokler ga
ne prekinemo, ne glede na naše prehajanje med activity.
Z deklaracijo v Android manifestu (Slika 22) postane naš servis nov za sebe delujoč
proces na Android napravi, kar pomeni hitreje delovanje ob večjih obremenitvah.
Sedaj, če je naš package name (ime paketa) : »com.lxnav.nanocofig« bo ime glavnega
procesa enako imenu paketa, zraven njega pa še bo tekel proces
»com.lxnav.nanoconfig.connection«, kar je naš Android servis.
Vsi activity-ji, ki bodo potrebovali povezavo z Nanotom so vezani na naš servis. Servis
zaženemo takoj po zagonu glavne activity, ustavi pa sam sebe takrat, ko so vsi activity-ji
prekinili vezavo na servis. To se zgodi na primer takrat, ko pritisnemo tipko nazaj in se vsi
activity-ji uničijo, torej prekinejo tudi njihove povezave z servisom.
Delo z Bluetooth tehnologijo v Android okolju je dokaj preprosto, saj so razvijalci že
pripravili razrede, ki implementirajo delo z Bluetooth čipom. Najpomembnejši razred tukaj
je BluetoothSocket, s pomočjo katerega lahko vzpostavimo povezavo, pošiljamo in
sprejemamo podatke preko RFCOMM (Radio frequency communication) protokola. Da na
Android napravi sploh lahko upravljamo z Bluetooth čipom moramo tako rekoč »vprašati
za dovoljenje«, kar izvedemo tako, da v Android manifest dodamo dovoljenja
(permissions) za delo z bluetoothom (slika 23).
Preden se lahko povežemo z drugo Bluetooth podprto napravo moramo seveda biti
seznanjeni z napravo s katero se bomo povezali, kot je to znano pri vseh napravah, ki
delajo z Bluetooth tehnologijo. Zato uporabniku na glavnem zavihku (main) omogočimo
izbiro med samo tistimi napravami, ki so že seznanjene z uporabnikovo napravo. Za
Slika 22 : Deklaracija servisa kot svoj proces
Slika 23 : Dovoljenja za delo z Bluetooth čipom
20
pridobitev seznama seznanjenih naprav smo implementirali funkcijo (Slika 24), ki iz
operacijskega sistema zahteva vse takšne naprave in jih shranimo v svoj seznam. Iz
dobljenih podatkov lahko dobimo ime in MAC naslov od seznanjene naprave.
Za uporabnike, ki pa se bi radi povezali na še ne seznanjene naprave pa smo poskrbeli
tako, da smo pod meni dodali gumb išči (scan). Ta sproži nov activity, ki nemudoma
začne z iskanjem novih, še ne seznanjenih naprav, katere izpiše v seznam. Za pridobitev
še ne seznanjenih naprav nam je v pomoč razred BroadCastReceiver (Slika 25).
Uporabnik sedaj izbere želeno napravo in sproži se postopek za seznanjanje naprav, ki
pa je že implementiran v Android OS in ga samo prikličemo.
Sedaj, ko smo pridobili ime in naslov naprave, s katero se želimo povezati bomo zagnali
nit v servis procesu, ki bo skušala vzpostaviti povezavo. Vzpostavitev povezave traja
nekaj sekund in, če bi jo želeli implementirati na glavni niti uporabniškega vmesnika, bi se
naša aplikacija nehala odzivati, zato smo za ta namen implementirali novo nit. V
konstruktorju niti ustvarimo iz BluetoothDevice (to so podatki o napravi na katero se
povezujemo) nov RFCOMM BluetoothSocket (Slika 26).
Slika 24 : Funkcija za pregled seznanjenih naprav
Slika 25 : Iskanje novih naprav
21
Sedaj poskušamo vzpostavit povezavo z napravo, ki traja nekaj sekund. To storimo v
telesu niti (slika 27).
Uspešno smo vzpostavili Bluetooth povezavo z Nanotom. Sledi izmenjava podatkov med
napravama, ki jo bomo izvajali po NMEA specifikaciji protokola, ki ga je definiralo podjetje
LXNAV. Napravi si bosta izmenjevali PLXVC stavke ki so natančneje opisani v Nano
specifikaciji podatkovnega protokola1.
Pri implementaciji še moramo omenit, kako smo z razredom BluetoothSocket pošiljali in
sprejemali podatke oziroma PLXVC stavke. Vsaka komunikacija med napravama poteka v
niti, ki teče v servis procesu in je implementirana s pomočjo AsyncTask razreda.
AsyncTask razred je v bistvu nit, ki je optimizirana za Android naprave. Ker je za vsako
1 Glej prilogo A
Slika 26 : Priprava BluetoothSocket za povezavo
Slika 27 : Vzpostavljanje povezave
22
funkcionalnost osnovna komunikacija (pošiljanje in sprejemanje podatkov) enaka, jo bomo
prikazali tukaj, v nadaljevanju pa bomo prikazali posamezne funkcionalnosti ločeno po
zavihkih.
Najprej inicializiramo podatkovni tok (data stream), ki ga dobimo iz razreda
BluetoothSocket (slika 28).
Sedaj je komunikacija zelo preprosta s klicem funkcij read in write. Za prejemanje
podatkov smo uporabili razred DataInputStream, ki nam omogoča branje vrstico po vrstico
z funkcijo readLine (slika 29).
Slika 28 : Inicializacija podatkovnega toka
Slika 29 : Branje iz podatkovnega toka
23
Za pošiljanje podatkov pa smo uporabili InputStream, ki je preprostejši in zadovolji naše
potrebe, saj pošiljamo podatke vedno samo vrstico po vrstico (slika 30).
Po takšnem principu komuniciramo med napravama, le PLXVC stavki so različni.
Nazadnje si še poglej primer kako je videti preprostejša zahteva za branje nastavitve
»samodejni izklop Nanota« in odgovor iz Nanota z podatkom:
Zahteva (pošljemo Nanotu):
$PLXVC,SET,R,AUTOOFF*2D
PLXVC - Ime protokola
SET - nastavitve Nanota (Settings)
R - zahteva za branje (read)
AUTOOFF - nastavitev »samodejni izkop Nanota«
*2D - kontrolna vsota (Checksum)
Odgovor (prejmemo od Nanota):
$PLXVC,SET,A,AUTOOFF,0*22
Tukaj je struktura stavka podobna zgornji, le namesto zahteve R (branje) je tukaj
A kot odgovor (answer) in na koncu je vrednost nastavitve 0, kar pomeni, da je
nastavitev izklopljena (1 bi pomenilo, da je vklopljena).
Slika 30 : Pisanje v podatkovni tok
24
ZAVIHKI
V nadaljevanju bomo opisali implementacijo posameznega zavihka, njegov videz in
funkcionalnosti, ki jih omogoča.
Main
Je glavni oziroma tisti zavihek, ki je ob zagonu aplikacije izbran. Namenjen je za
delo s povezavo in prikaz podatkov. Na njem lahko iščemo nove naprave
(meni>scan), povezujemo z že znanimi napravami in ob vzpostavljeni povezavi
lahko vidimo podatke o napravi Nano, njeno
stanje in podatke o GPS-u (če je na Nanotu
vključen NMEA output). Podatke o GPS-u berem
iz GPGGA stavkov, ki jih Nano pošilja enkrat na
sekundo. To je standardni stavek, ki nam pove
veliko o GPS stanju in lokaciji. Omenjeni podatki
so pod ločilno črto (slika 31). Podatke o napravi
Nano (nad ločilno črto, slika 31) pa zahtevamo z
PLXVC,INFO stavkom. K tem podatkom spada
tudi stanje baterije Nanota (modra naslovna
vrstica, slika 31), katero preračunamo iz dobljene
napetosti baterije v voltih, v odstotke. Dobimo
tudi podatek o tem, če se baterija polni ali ne in
če se polni to prikažemo zraven odstotkov v
naslovni vrstici z oznako: »(charging)«.
Ta in naslednji zavikek (Logbook) še vsebujeta reklamni pano, ki prikazuje več
različnih reklamnih vsebin (slika 31) iz podjetja LXNAV. Reklame so slike, ki
prihajajo iz leve strani na zaslon in prekrije prejšnjo sliko.
Logbook
Prikazuje osnovne podatke o igc datotekah (letih), ki so na spominski kartici (če
nismo povezani z Nanotom) ali na napravi Nano (če smo povezani). Če smo torej
povezani se ob prvem kliku na zavihek sproži nalaganje seznama letov, ki poteka
prek Bluetooth povezave. Vidimo datum leta, ime datoteke, čas vzleta, čas
pristanka, trajanje leta in velikost datoteke.
Slika 31 : Zavihek Main
25
Ob kliku na izbran let se sproži prenos datoteke iz Nanota na Android napravo.
Datoteko prenašamo vrstico po vrstico, vendar zaradi hitrosti prenosa ne pošiljamo
zahteve za vsako vrstico posebej ampak za blok
vrstic (npr. od 0 do 50, nato od 50 do 100…itd.).
Velikost bloka za pošiljanje vrstic lahko
spreminjamo v menu>settings. Če je let uspešno
prenesen na Android napravo, se na desni strani
izriše ikonica, če še leta ni na spominski kartici
pa ikonice preprosto ni. Z dolgim pritiskom na
izbran let pa sprožimo deljenje (share) igc
datoteke. Odpre se nam menu za izbiro
programa s katerim želimo datoteko deliti
(seznam je odvisen od tega katere programe
imamo nameščene). V meniju se še nahaja
gumb »refresh«, kar pomeni osveži in sproži
ponovno nalaganje seznama letov.
Pilot
Na tem zavihku vnašamo, beremo ali spreminjamo osnovne podatke o pilotu,
copilotu, letalu, razredu letala, registraciji in tekmovalni oznaki. Tudi če nismo
povezani z Nanotom lahko vnašamo ali
spreminjamo podatke in se nam ti shranijo. Ko
pa imamo vzpostavljeno povezavo pa
pritisnemo tipko »write«, podatki se zapišejo v
deklaracijsko datoteko in nato se datoteka
prenese preko Bluetooth komunikacije na
Nanota. Gumb »read« pa pošlje Nanotu
zahtevo za prenos deklaracijske datoteke in ta
jo začne pošiljat vrstico po vrstico. Ko datoteko
prejmemo v celoti, iz nje razpoznamo podatke
in jih prikažemo. Deklaracijska datoteka ostane
shranjena na spominski kartici naprave.
Vrednost »Glider type« (ime letala) je pred
naložen seznam imen in se odpre ob pritisku na
gumb. Uporabnik tako lahko poišče svoje letalo
Slika 32 : Zavihek Logbook
Slika 33 : Zavihek Pilot
26
in ga izbere. Enak postopek velja za vrednost »Class«. Ostale vrednosti se
vnašajo tekstovno iz tipkovnice, ki se pojavi na ekranu, pri čemer je vnos znakov
omejen na ASCII znake in izključeni so znaki; ' * ' , '$' in ' , '.
Task
Je tesno povezan z zavihkom Pilot, saj se podatki iz teh dveh zavihkov zapisujejo
v isto deklaracijsko datoteko. Pri NanoConfig za Windows so te funkcionalnosti
združene v isti sklop, pri Android različici, pa smo prišli do težave, da na zaslonu
preprosto ni dovolj prostora, da bi lahko omogočili uporabnikom enostavno
upravljanje z aplikacijo. Task pomeni naloga, torej pilot si pred poletom določi
nalogo, katere točke bo preletel (tabela 3).
Tabela 3 : Primer naloge (task-a)
Točka Zemljepisna
širina
Zemljepisna
dolžina
Razdalja
[km]
Kurz
[°]
Vzlet Celje hangar N46°15,333' E015°13,317'
1. točka Rateče Mejnipreh N46°29,867' E013°42,267' 119,5 256
2. točka Semic Zelezniska N45°38,550' E015°09,750' 147,3 50
3. točka Maribor N46°28,800' E015°13,317' 101,5 157
Pristanek Celje hangar N46°15,333' E015°13,317' 43,5 305
Skupna dolžina naloge: 411,8km
Seveda pilot ne rabi vedet vseh točk iz glave ampak se tukaj uporablja datoteka
formata cup v kateri so vse te točke opisane s imenom, zemljepisno širino in
dolžino. Naša aplikacija omogoča, da uporabnik nastavi pot do te datoteke, ki si jo
je predhodno shranil na primer na spominsko kartico Android naprave. Za izbiro te
datoteke smo implementirali preprost pregledovalnik datotek (file explorer), ki
uporabniku omogoči sprehod po datotečnem sistemu (v obliki seznama) in
prikazuje le datoteke s končnico .cup in mape, tako da uporabniku ni možno izbrati
napačne datoteke. Ko ima uporabnik določeno lokacijo cup datoteke, se lahko loti
ustvarjanja naloge. Kadar uporabnik želi dodati novo točko ali spremeniti
obstoječo, razpoznamo cup datoteko in prikažemo točke (imena točk) v seznamu,
uporabnik izbere želeno točko in nato zapremo seznam ter sprožimo funkcijo za
preračun naloge. Računamo razdalje in kurz med točkami po vrstnem redu, na
koncu pa seštejemo dolžine in dobimo dolžino celotne naloge. Točke lahko tudi
27
odstranjujemo z pritiskom na gumb v obliki
smetnjaka ali pa dodajamo nove točke z
pritiskom na plus znak spodaj ali z dolgim
pritiskom na točko vstavimo novo točko pred
izbrano.
Ko ima pilot urejeno nalogo po svojih željah
in je povezan z Nanotom preprosto pritisne
gumb »Write«, naloga se zapiše v isto
deklaracijsko datoteko kot smo omenili pri
zavihku Pilot in se preko Bluetooth
komunikacije prenese na napravo Nano.
Gumb »Read« pa pošlje zahtevo Nanotu za
prenos deklaracijske datoteke, katero
prejmemo, razpoznamo in prikažemo nalogo
na napravi.
Settings
Delovanje tega zavihka je strogo vezano na uspešno vzpostavljeno povezavo z
Nanotom. Če nimamo vzpostavljene povezave zavihek onemogočimo, torej ga ni
možno izbrati. Tukaj spreminjamo nastavitve
delovanja naprave Nano, kot so: Interval
snemanja leta, samodejno končanje snemanja,
samodejni izklop naprave ob neaktivnosti, vklop
in izklop NMEA izhoda (stavki z podatki o
stanju GPS) in NMEA baudrate. Interval
snemanja reguliramo z drsnikom (»seek bar«),
kot je vidno na sliki 35. Naslednje tri nastavitve
so logičnega tipa (vklopljeno ali izklopljeno) in
se nastavljajo z »check box« gradnikom.
Zadnjo nastavitev (Baudrate) pa izbiramo po
vnaprej naloženem seznamu vrednosti, ki se
odpre ob kliku na gumb v katerem je izpisana
trenutna vrednost nastavitve. Ob vsaki
spremembi le ene od nastavitev se sproži
pošiljanje zahteve Nanotu, za spremembo omenjene nastavitve. Nano ob
Slika 34 : Zavihek Task
Slika 35 : Zavihek Settings
28
pravilnem stavku spremeni nastavitev in nam za potrditev vrne na novo
nastavljeno vrednost nastavitve, katero ustrezno prikažemo na uporabniškem
vmesniku.
7.4 OBJAVA NA GOOGLE PLAY
Ko je aplikacija zadostila zahtevam funkcionalnosti, se je podjetje LXNAV odločilo, da bi jo
objavili na spletišču Google Play. Play (nekdanji Android market) je uradna spletna
trgovina podjetja Google, kjer so na voljo plačljive in tudi brezplačne Android aplikacije.
Spletišče je ponudbo razširilo tudi na glasbo, filme in knjige, vendar v Sloveniji so trenutno
na voljo samo aplikacije [31].
Podjetje je pripravilo slike, logotip in opis aplikacije, se registriralo na spletišču Google
Play in pripravilo vse za objavo aplikacije. S pomočjo Android orodij smo iz razvojnega
programa Eclipse izvozili namestitveni paket s končnico apk, kateri je podpisan s ključem
razvijalca in primeren za objavo. Aplikacijo smo uspešno objavili na Google Play in je tako
postala dostopna za uporabnike. Dostopna je na naslovu:
https://play.google.com/store/apps/details?id=com.lxnav.nanoconfig
Slika 36 : Objavljena aplikacija na Google Play
29
7.5 VZDRŢEVANJE
Z vzdrževanjem aplikacije imamo v mislih spremljanje statistike uporabe, zbiranje
povratnih informacij od uporabnikov in odpravljanje napak. Glede omenjenih pojmov so že
zelo dobro poskrbeli Google-ovi razvijalci s tem, ko so implementirali »Android developer
console«, kar pomeni razvojna konzola, kjer lahko dobro spremljamo in popravljamo našo
objavljeno aplikacijo.
STATISTIKA
Pregledujemo lahko statistiko uporabe (slika 37) in izvemo tudi veliko podatkov o
uporabnikih in njihovih napravah. Vsi podatki so vidni v obliki grafov, kjer je zelo dobro
razviden trend uporabe.
Slika 37 : Statistika na Google Play
30
ZBIRANJE POVRATNIH INFORMACIJ
Zbiranje povratnih informacij je zelo pomembno, kadar želimo uporabnike obdržati, v
smislu, da aplikacije ne odstranijo zaradi nekaj manjših napak, za katere ne moremo
drugače izvedeti kot od uporabnikov.
Google Play omogoča, da uporabniki, ocenjujejo aplikacije tako, da oddajo oceno za
posamezno aplikacijo med 1 in 5 zvezdic, pri čemer je 1 najslabša, 5 pa najboljša možna
ocena. Prav tako še ob ocenitvi lahko objavijo komentar, kar je sporočilo njihovega
mnenja namenjeno drugim uporabnikom, za lažjo odločitev, če bi aplikacijo namestili ali
ne.
Objavljen je tudi kontakt razvijalca, kamor so uporabniki naprošeni javiti najdene napake,
želene nove funkcionalnosti ali tudi samo deliti mnenje o aplikaciji z nami.
ODPRAVLJANJE NAPAK
Je verjetno najpomembnejši del vzdrževanja aplikacije, saj je od tega lahko odvisen
uspeh aplikacije na Google Play in temu primeren tudi uspeh za podjetje.
Google je razvil zelo dobro ogrodje za javljanje napak razvijalcem, ki je dostopno iz
razvojne konzole. Kadar se pri uporabniku zgodi kritična napaka, operacijski sistem
sporoči uporabniku, da je prišlo do nepopravljive napake in se aplikacija mora zapreti.
Tukaj je v rokah uporabnika ali bo pritisnil gumb »zapri« ali »poročaj«, gumb »zapri«
varno zaustavi nepravilno delovanje aplikacije, pri čemer pa gumb »poročaj« uporabniku
ponudi možnost vnosa komentarja o napaki in pošiljanje poročila o napaki neposredno v
razvojno konzolo razvijalcev. Zraven komentarja uporabnika še razvijalec dobi podatke iz
operacijskega sistema o sesutju aplikacije, ime napake, kje v programski kodi je prišlo do
napake (slika 38 – modro označen tekst) in včasih tudi že namig za odpravo omenjene
napake (slika 38). S pridobljenimi podatki nam je veliko lažje najti vzrok napake in jo
uspešno odpraviti, čeprav je včasih ne moremo reproducirati.
Slika 38 : Poročilo o napaki
31
Napako odpravimo, aplikacijo testiramo in objavimo novo različico naše aplikacije na Play.
To ponovno storimo preko razvojne konzole tako, da izvozimo nov apk, ki ima vrednost
»Version code« v Android manifestu višjo od prejšnje različice. Tako naprave uporabnikov
prepoznajo, da je na voljo nova različica in jih naprava samodejno ponudi posodobitev. Na
tak način pridejo popravki zelo hitro in enostavno do uporabnikov. Na sliki 39 je dobro
razvidno, kako smo posodabljali našo aplikacijo in izdajali nove različice (na sliki so vidne
samo trenutna in prejšnje 3 različice).
Slika 39 : Posodabljanje aplikacije
32
8 SKLEP
V pripravi diplomskega dela smo se osredotočili na uporabo Bluetooth tehnologije za
komuniciranje in izmenjavo podatkov med Android napravo in snemalnikom leta Nano.
Podrobno smo se posvetili implementaciji aplikacije na Android razvojnem okolju, katere
osnovni cilj je bil omogočati funkcionalnosti kot jih omogoča NanoConfig za Windows
okolje. Osnovni cilj smo presegli in nastala je aplikacija, ki omogoča pregled, prenos,
deljenje letov in brezžično konfiguriranje Nanota kjerkoli na poti.
Pri implementaciji aplikacije pa moramo omenit, da ni šlo vedno brez težav. Največja
težava pri implementaciji je nastala, ko smo prenašali let (igc datoteko) iz Nanota na
Android napravo. Ob velikem številu zaporedno prejetih PLXVC stavkov je prihajalo do
zaustavitve prenosa in BluetoothSocket se je nehal odzvati. Težavo smo rešili tako, da od
Nanota zahtevamo le določen blok vrstic iz datoteke leta, na primer prvih 50 vrstic
prejmemo in shranimo, nato naslednjih 50 vrstic itd. dokler ne prenesemo celotne
datoteke. Velikost bloka za pošiljanje podatkov smo ponudili uporabnikom za samostojno
nastavljanje v nastavitvah aplikacije, saj nekatere naprave povzročajo manj ali več težav.
NanoConfig je ugledal luč sveta 11.4.2012, ko smo ga objavili na Google Play, takrat še
brez nekaterih funkcionalnosti, ampak te smo do sedaj že dodelali in redno skrbeli za
popravljanje napak. Danes (15.7.2012) šteje naša aplikacija 107 uporabnikov, ki imajo
aplikacijo nameščeno. Uporabniki so iz različnih držav po svetu, največ (24%) ZDA,
Nemčija (18%), nato Anglija in Avstralija z 8%, Češka (7%) ter države z majn kot 6%
(Kanada, Slovenija, Francija, Brazilija…idr.). Do sedaj smo izdali 17 posodobitev in prešli
od prve 1.0 različice do 1.3.1 ter dosegli povprečno oceno uporabnikov 4,8 (1-slabo, 5-
odlično) na podlagi 8 glasov.
Realizirali smo cilje, pridobili novo znanje iz področja Bluetooth tehnologije in razvoja
aplikacij za Android okolje, ter implementirali Android aplikacijo, ki obsega 5184 vrstic
programske kode.
S podjetjem LXNAV smo dogovorjeni za nadaljnjo sodelovanje in vzdrževanje aplikacije
NanoConfig, ter smo se že pogovarjali o možnosti nadgradnje aplikacije z novimi
funkcionalnostmi kot je posodobitev naprave Nano z Android aplikacijo NanoConfig in
povezovanje aplikacije z novo oblačno storitvijo SeeYou Cloud, ki bi omogočala
shranjevanje letov iz logbook-a na oblak.
33
LITERATURA
[1] Podlesnik Matej: Kaj je Android: O Androidu. Dostopno na: http://slo-
Android.si/prispevki/kaj-je-Android.html [5.6.2012]
[2] Podlesnik Matej: Kaj je Android: Kaj je Open Handset Alliance? Dostopno na:
http://slo-Android.si/prispevki/kaj-je-Android.html [6.6.2012]
[3] Podlesnik Matej: Podjetja v združenju Open Handset Alliance. Dostopno na:
http://slo-Android.si/prispevki/item/61.html [6.6.2012]
[4] Android (operating system): Uses. Dostopno na:
http://en.wikipedia.org/wiki/Android_(operating_system) [6.6.2012]
[5] HTC Dream pictures. Dostopno na: http://www.gsmarena.com/htc_dream-pictures-
2665.php [6.6.2012]
[6] SmartWatch. Dostopno na:
http://www.sonymobile.com/gb/products/accessories/smartwatch/ [6.6.2012]
[7] Nvidia logo. Dostopno na: http://en.wikipedia.org/wiki/File:Nvidia_logo.svg
[6.6.2012]
[8] Gargenta M. Learning Android. Sebastopol, Kalifornija: O’Reilly Media, 2011.
[9] Google logo. Dostopno na: http://en.wikipedia.org/wiki/File:Googlelogo.png
[6.6.2012]
[10] Bluetooth tehnologija: Kaj je Bluetooth. Dostopno na:
http://www.leoss.si/?lng=slo&vie=ctl&gr1=strSvt&gr2=&id=2005032114494520
[6.6.2012]
[11] Bluetooth tehnologija: O imenu Bluetooth. Dostopno na:
http://www.leoss.si/?lng=slo&vie=ctl&gr1=strSvt&gr2=&id=2005032114494520
[6.6.2012]
[12] Fast facts : When was Bluetooth technology invented? Dostopno na:
http://www.Bluetooth.com/Pages/Fast-Facts.aspx [6.6.2012]
[13] Bluetooth logo. Dostopno na:
http://en.wikipedia.org/wiki/File:BluetoothLogo.svg [6.6.2012]
34
[14] Modri zob: Kako deluje? Dostopno na: http://splet-stari.fnm.uni-
mb.si/pedagoska/krasna/www/didaktika2/milenacaks/ModriZob.htm#delovanje
[12.6.2012]
[15] Modri zob: Fizični sloj. Dostopno na: http://splet-stari.fnm.uni-
mb.si/pedagoska/krasna/www/didaktika2/milenacaks/ModriZob.htm#delovanje
[12.6.2012]
[16] Modri zob: Razredi radijskih oddajnih moči. Dostopno na: http://splet-
stari.fnm.uni-
mb.si/pedagoska/krasna/www/didaktika2/milenacaks/ModriZob.htm#delovanje
[12.6.2012]
[17] Bluetooth basics: Range. Dostopno na:
http://www.Bluetooth.com/Pages/Basics.aspx [12.6.2012]
[18] Bluetooth: Varnost. Dostopno na: http://sl.wikipedia.org/wiki/Bluetooth
[12.6.2012]
[19] LX 9000. Dostopno na: http://www.LXNAV.com/products/lx9000.html
[19.6.2012]
[20] LX 8000. Dostopno na: http://www.LXNAV.com/products/lx8000.html
[19.6.2012]
[21] V7. Dostopno na: http://www.LXNAV.com/products/v7.html [19.6.2012]
[22] NANO. Dostopno na: http://www.LXNAV.com/products/nano.html
[19.6.2012]
[23] LX Sim. Dostopno na:http://www.lxnav.com/products/lxsim.html [19.6.2012]
[24] NanoConfig. Dostopno na:
http://www.LXNAV.com/products/nanoconfig.html [19.6.2012]
[25] What is NMEA. Dostopno na: http://www.ravtrack.com/what-is-NMEA
[20.6.2012]
[26] Globalsat BT-359 Bluetooth GPS Receiver. Dostopno na:
http://www.gpslodge.com/archives/005743.php [20.6.2012]
[27] NMEA data: NMEA sentences: GGA. Dostopno na:
http://www.gpsinformation.org/dale/NMEA.htm#NMEA [23.6.2012]
[28] Eclipse (software). Dostopno na:
http://en.wikipedia.org/wiki/Eclipse_(software) [30.6.2012]
[29] Skype. Dostopno na http://sl.wikipedia.org/wiki/Skype [10.7.2012]
[30] Using DDMS. Dostopno na
http://developer.Android.com/tools/debugging/ddms.html [10.7.2012]
35
[31] Google Play. Dostopno na: http://sl.wikipedia.org/wiki/Google_Play
[15.7.2012]
[32] Darcey L., Conder S. Sams Teach Yourself AndroidTM Application
Development in 24 Hours. Indianapolis, Indiana: Sams, 2010.
PRILOGE
Priloga
A. NANO SPECIFIKACIJA PODATKOVNEGA PROTOKOLA
Priloga
B. IZJAVA O AVTORSTVU
Priloga
C. IZJAVA O USTREZNOSTI DIPLOMSKEGA DELA
Priloga
D. IZJAVA O ISTOVETNOSTI TISKANE IN ELEKTRONSKE VERZIJE
DIPLOMSKEGA DELA IN OBJAVI OSEBNIH PODATKOV DIPLOMANTOV