Erd˝ o¨ okol´ ogiai terepi adatgy˝ ujt˝ o kliensalkalmaz´ as fejleszt´ ese Android platformon szakdolgozat
K´esz´ıtette: Koz´ ak Csaba M´ern¨ok informatikus BSc hallgat´o
Konzulensek: Tornai K´ alm´ an, Dr. Ol´ ah Andr´ as
P´azm´any P´eter Katolikus Egyetem Inform´aci´os Technol´ogiai ´es Bionikai Kar 2013
Alul´ırott Koz´ak Csaba, a P´ azm´any P´eter Katolikus Egyetem Inform´aci´ os Technol´ ogiai ´es Bionikai Kar´anak hallgat´oja kijelentem, hogy ezt a szakdolgozatot meg nem engedett seg´ıts´eg n´elk¨ ul, saj´at magam k´esz´ıtettem, ´es a szakdolgozatban csak a megadott forr´asokat haszn´altam fel. Minden olyan r´eszt, melyet sz´o szerint, vagy azonos ´ertelemben, de ´ atfogalmazva m´ as forr´asb´ ol ´atvettem, egy´ertelm˝ uen a forr´as megad´ as´aval megjel¨ oltem. Ezt a Szakdolgozatot m´ as szakon m´eg nem ny´ ujtottam be. ..................................... Koz´ak Csaba
Tartalomjegyz´ ek Absztrakt
3
Abstract
4
1 Bevezet´ es ´ es motiv´ aci´ o
5
2 Helymeghat´ aroz´ o rendszerek ´ es helyf¨ ugg˝ o alkalmaz´ asok
7
2.1
2.2
2.3
Helymeghat´ aroz´ o rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1.1
A helymeghat´ aroz´o technol´ogi´ak oszt´alyoz´asa . . . . . . . . . . . .
7
2.1.2
Global Positioning System . . . . . . . . . . . . . . . . . . . . . . .
8
2.1.3
A Google helymeghat´aroz´o szolg´altat´asa . . . . . . . . . . . . . . .
10
Mobil platformok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2.1
Az Android mobilplatform . . . . . . . . . . . . . . . . . . . . . . .
12
2.2.2
Az iOS mobilplatform . . . . . . . . . . . . . . . . . . . . . . . . .
14
L´etez˝ o, el´erhet˝ o megold´asok . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3 Keretrendszer POI-alap´ u t´ erinformatikai alkalmaz´ asokhoz 3.1
17
Specifik´ aci´ o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.1
´ Altal´ anos le´ır´ as . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.2
Forgat´ ok¨ onyv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.1.3
Haszn´ alati esetek . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2
Architekt´ ura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3
Megval´ os´ıt´ as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3.1
A megval´ osult szoftverarchitekt´ ura r¨ovid bemutat´asa . . . . . . . .
21
3.3.2
K´eperny˝ ok´epek . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4 Terepi mobil kliensalkalmaz´ as biodiverzit´ as felm´ er´ es´ ehez 4.1
4.2
25
Funkcion´ alis specifik´ aci´o . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.1.1
A f˝ ok´eperny˝ or˝ ol el´erhet˝o funkci´ok
. . . . . . . . . . . . . . . . . .
26
4.1.2
K¨ ozvetlen¨ ul a felm´er´eshez kapcsol´od´o k´eperny˝ok . . . . . . . . . .
27
4.1.3
Az u ˝rlapon szerepl˝o lehets´eges k´erd´est´ıpusok . . . . . . . . . . . .
28
Architekt´ ura terv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2.1
Autentik´ aci´ o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.2.2
H´ al´ ozati kommunik´aci´o . . . . . . . . . . . . . . . . . . . . . . . .
32
1
4.3
4.4
4.2.3
Adatb´ azis-kezel´es . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.2.4
˝ Urlap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
Megval´ os´ıt´ as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.3.1
A megval´ osult szoftverarchitekt´ ura . . . . . . . . . . . . . . . . . .
36
4.3.2
K´eperny˝ ok´epek . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Tesztel´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.4.1
A JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.4.2
A Robolectric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.4.3
A Mockito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.4.4
A Crittercism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
¨ 5 Osszefoglal´ as, a dolgozat eredm´ enyei
43
Irodalomjegyz´ ek
44
F¨ uggel´ ek
47
A Adatb´ azisszerkezet
47
˝ B Urlap XML le´ır´ as
48
C H´ al´ ozati XML napl´ o
49
D CD mell´ eklet tartalma
50
2
Absztrakt Napjainkban egyre nagyobb teret h´od´ıtanak az okostelefonok, amelyek lassan minden ember sz´ am´ara hozz´af´erhet˝ov´e v´ alnak. Ezen k´esz¨ ul´ekek terjed´es´evel p´arhuzamosan beindult az u ´gynevezett kontextusf¨ ugg˝o, illetve helyf¨ ugg˝ o alkalmaz´ asok egyre sz´elesebb k¨ or˝ u haszn´alata is, melyek megk¨ onny´ıtik, meggyors´ıtj´ak a mindennapos feladatok elv´egz´es´et. El´erhet˝oek m´ar olyan mobilalkalmaz´asok, amelyek figyelembe veszik a felhaszn´al´o aktu´alis poz´ıci´ oj´ at ´es annak f¨ uggv´eny´eben v´egeznek meghat´ arozott feladatokat. Ezeket viszont ´altal´aban egy adott speci´alis c´elra fejlesztett´ek, funkcionalit´ asuk nem b˝ ov´ıthet˝o, nem rugalmasak, az u ´jonnan jelentkez˝o felhaszn´al´oi ig´enyekre nem adnak v´alaszt. A szakdolgozat els˝ o fele egy olyan keretrendszer fejleszt´ es´ et mutatja be, amely b´ armilyen Point of Interest (POI) alap´ u alkalmaz´ as k´ esz´ıt´ es´ et lehet˝ ov´ e teszi u ´ gy, hogy a rendszer f¨ ol´ e gyorsan, az ig´ enyeknek megfelel˝ oen lehessen ul a keretrendszernek olyan szerkezet˝ unek fejleszteni az adott programot. Ezen k´ıv¨ kell lennie, hogy az specializ´aci´o n´elk¨ ul is alapvet˝o, a´ltal´anos c´elokra haszn´alhat´o legyen. A dolgozat m´ asodik r´ esz´ eben egy, a keretrendszerre ´ ep¨ ult konkr´ et alkalmaz´ as ker¨ ul bemutat´ asra. A program egy komplex erd˝oo¨kol´ogiai projekt keret´en bel¨ ul k´esz¨ ul el, melynek c´elja adatotokat gy˝ ujteni a hazai erd˝okben azok biol´ogiai sokf´eles´eg´enek megtart´asa ´erdek´eben. Az alkalmaz´ as k¨ uls˝ o ig´enyek alapj´an, a biol´ ogiai felm´er´esi szempontok figyelembev´etel´evel k´esz¨ ul el ´es vesz r´eszt a felm´er´esben. Az adatokat pontokhoz ´es ter¨ uletekhez rendeli, biztons´agosan t´arolja ´es tov´abb´ıtja a k¨ozponti szerver fel´e. Ezeket az adatokat szak´ert˝oi csoport ´ert´ekeli ki ´es k´esz´ıt bel˝ole olyan adatb´azist, mely seg´ıts´eg´evel megval´os´ıthat´o az erd˝ok biodiverzit´as´anak meg˝orz´ese ´es a fajok min´el teljesk¨ or˝ ubb v´edelme. A dolgozat bemutatja az alkalmaz´ as teljes fejleszt´esi ciklus´at a program r´eszletes specifik´aci´oj´ at´ol kezdve a tervez´esen a´t a v´egs˝o implement´ aci´oig ´es tesztel´esig, ´ıgy a´tfog´o k´epet ad egy komoly, kontextusf¨ ugg˝ o mobilalkalmaz´as fejleszt´es´enek l´ep´eseir˝ol.
3
Abstract Nowadays smartphones intensely gather ground and slowly will be available for all people. In parallel with the spread of these devices the wider use of so-called context- and location-based applications has been started, which facilitate and expedite the completion of everyday tasks. Now applications are already available which take into account the user’s current position and carry out pre-defined tasks according to the context, but these are usually developed for a specific purpose, the functionality of them can not be expanded and these are not flexible enough to fulfill emerging user needs. The first part of the thesis describes the development of a framework that allows the creation of any Point of Interest (POI) based application quickly over the system for the given needs. In addition, the framework must be constructed so that the core can be used for general purposes without any specialization. In the second part of the thesis a specific application is presented which is built on the top of the framework. The program is made within a complex ecological forest project to collect data of national forests in order to maintain their biological diversity. The application is based on external demand, respects the needs of the biological assessment and participates in the survey. The program assigns the data to points and areas, stores them safely and transmits them to the central server. These data will be evaulated by an expert group, who puts it into a database. This datastore helps the preservation of species and the protection of forest biodiversity. This paper presents the complete application development cycle from the detailed specification through the program design to the final implementation and testing, hence it provides a comprehensive picture of the development steps of a serious, context-aware mobile application.
4
1.
Bevezet´ es ´ es motiv´ aci´ o
Az elm´ ult ´evekben az okostelefonok robban´asszer˝ u fejl˝od´esen mentek kereszt¨ ul, ´es sz´elesk¨or˝ uen elterjedtek a h´etk¨oznapi felhaszn´al´ok k¨oz¨ott is. Ezen k´esz¨ ul´ekek m´ar magukba integr´ alva tartalmazz´ak a k¨ ul¨onb¨oz˝ o helymeghat´aroz´ o hardvereket, technol´ ogi´akat. Mivel egy egys´egen bel¨ ul adott az okostelefon platform rugalmass´aga, tov´abb´a a helymeghat´aroz´as lehet˝os´ege is, ´ıgy a helyf¨ ugg˝ o alkalmaz´asok k´esz´ıt´ese lehet˝ov´e v´ alt a mobiltelefonokra. Ezek az alkalmaz´ asok megk¨ onny´ıtik, automatiz´alj´ ak azokat a folyamatokat, amiket a felhaszn´al´onak manu´alisan k´ene elv´egeznie, amennyiben az adott helysz´ın k¨ozel´ebe ´er, tov´ abb´a egy teljesen u ´j koncepci´oba helyezik a mobilprogramoz´ast. A klasszikus t´erk´ep ´es navig´aci´ os alkalmaz´ asokon k´ıv¨ ul ma m´ ar szinte minden komolyabb program rendelkezik kontextusf¨ ugg˝o almodullal, tov´abb´a eg´eszen u ´ jfajta alkalmaz´asok k´esz¨ ulnek, melyek a helymeghat´ aroz´ o technol´ ogi´ akat kihaszn´alj´ak. B´ar a helyf¨ ugg˝o mobilalkalmaz´asok sz´eles r´etege ´erhet˝ o el, azok m´eg sem tudj´ak teljess´eggel lefedni a piaci ig´enyeket. Az ilyen alkalmaz´ asok ´ altal´aban az adott c´elra k´esz¨ ulnek el, fix funkci´okkal rendelkeznek, tov´ abbi lehet˝os´egek be´ep´ıt´es´et nem teszik lehet˝ov´e. Ez´ert van l´etjogosults´aga egy olyan keretrendszernek, amely helymeghat´ aroz´o technol´ogi´ akat haszn´ al, ´es u ´ gy van kialak´ıtva, hogy az adott ig´eny alapj´an egy u ´ j, specializ´alt alkalmaz´ast lehessen elk´esz´ıteni a seg´ıts´eg´evel a lehet˝o legr¨ovidebb id˝on bel¨ ul. A dolgozat els˝o fele egy ilyen keretalkalmaz´as fejleszt´es´enek menet´et ´ırja le, amely azon k´ıv¨ ul, hogy platformot szolg´altat a specializ´alt megold´asok fel´e, ¨onmag´aban is elegend˝o funkcionalit´ assal b´ır a h´etk¨ oznapi felhaszn´al´ashoz. A dolgozat m´asodik fele egy, a keretrendszerre ´ep¨ ult specializ´aci´ot mutat be. Ez a program egy nagyobb projekt keret´en bel¨ ul k´esz¨ ul el, melyet egy sv´ajci alap t´amogat, ´es c´elja a magyarorsz´ agi erd˝ok biodiverzit´ as´anak felm´er´ese. Az alkalmaz´ast a felm´er´est v´egz˝ o o¨kol´ogiai kutat´ ocsoport specifik´ alta, ´es feladata az adott pontok ment´en r¨ogz´ıteni el˝ore meghat´arozott v´altoz´ ok ´ert´ekeit, ezeket ¨osszegy˝ ujteni, t´arolni ´es egy k¨ozponti szervernek elk¨ uldeni egy adott felm´er´esi id˝ oszak v´eg´en. Az adatok o¨sszegy˝ ujt´ese ut´an egy szakmai csoport ´ert´ekeli azokat, statisztik´akat k´esz´ıt azokb´ol, majd egy olyan adatb´azisba szervezi, amely nagy seg´ıts´eget ad a magyarorsz´agi erd˝ok ´es azok fajainak min´el tart´osabb meg˝orz´es´ehez. Mivel Magyarorsz´ agon m´eg nem k´esz¨ ult ilyen program, a fejleszt´es nagy kih´ıv´ast jelent ´es a keretrendszert is pr´ob´ ara teszi, amely alapjain meg´ep¨ ul. A dolgozat m´asodik r´esze az adatgy˝ ujt˝o alkalmaz´as fejleszt´es´enek teljes ´ıv´et le´ırja, a specifik´aci´ot´ol kezdve az implement´aci´ oig ´es tesztel´esig, majd ´ert´ekeli az elk´esz¨ ult programot ´es a 5
fejleszt´es sor´ an el˝ oj¨ ott tapasztalatokat levonja. A dolgozat fel´ep´ıt´ese a k¨ ovetkez˝ o: - az 1. fejezet le´ırja, hogy milyen el˝ozm´enyek alapj´an vet˝ od¨ott fel a keretrendszer alkalmaz´as ´es az arra ´ep¨ ul˝o adatgy˝ ujt˝o program fejleszt´ese, ´es ezek milyen motiv´aci´ ok ment´en k´esz¨ ulnek el; - a 2. fejezet ´altal´anoss´ agban t´argyalja a helymeghat´aroz´ o technol´ogi´akat ´es az azokat felhaszn´al´ o helyf¨ ugg˝o alkalmaz´asokat. Milyen m´odszerekkel t¨ort´enik a helymeghat´aroz´as, milyen param´etereket kell figyelembe venni ilyen szolg´altat´as integr´ al´asa sor´an, hogyan lehet csoportos´ıtani ezeket. R¨ovid piackutat´assal sorra veszi a m´ar l´etez˝o, el´erhet˝o megold´ asokat a POI alap´ u alkalmaz´asok k¨ oz¨ ott. Tov´abb´a r¨oviden bevezeti a mobilplatformokat, ezek k¨oz¨ ul k´et piacvezet˝ot r´eszletesebben is t´argyalja; - a 3. fejezet le´ırja a keretrendszer alkalmaz´as specifik´aci´oj´at mind funkcion´ alis, mind felhaszn´al´oi fel¨ ulet szempontj´ab´ol, tov´ abb´a t´argyalja a szoftver teljes tervez´esi folyamat´ at ´es a tervezet alapj´an t¨ort´en˝o implement´aci´oj´ at Android mobilplatformon; - a 4. fejezet r´eszletezi az o¨kol´ ogiai adatgy˝ ujt˝o alkalmaz´as specifik´ aci´ oj´at, bemutatja a felhaszn´al´ oi fel¨ ulet, az u ¨zleti logika, az adatb´ azis, tov´abb´ a a teljes rendszer terv´et. Bemutatja az alkalmaz´as megval´os´ıt´as´at, az elk´esz¨ ult modulokat, ´es sorra veszi a felhaszn´ alt programk¨onyvt´arakat. A fejezet utols´ o r´esz´eben t´argyalja a tesztel´eshez haszn´alt m´ odszereket ´es technol´ ogi´akat; ujt˝o - az 5. fejezet ´ert´ekeli az elv´egzett munk´at mind a keretrendszer, mind az adatgy˝ alkalmaz´as tekintet´eben, tov´abb´a levonja azokat a k¨ovetkeztet´eseket, amelyekre a fejleszt´es k¨ ul¨ onb¨ oz˝ o l´ep´esei sor´ an jutni lehet.
6
2.
Helymeghat´ aroz´ o rendszerek ´ es helyf¨ ugg˝ o alkalmaz´ asok
Az elm´ ult ´evekben a technol´ogia fejl˝od´ese ´es a sz¨ uks´eges hardverelemek a´r´ anak drasztikus cs¨okken´ese lehet˝ov´e tette, hogy m´ar a bel´ep˝ oszint˝ u telefonok is rendelkeznek olyan eszk¨oz¨okkel, amelyekkel a felhaszn´al´o poz´ıci´ oj´at meg lehet val´os id˝oben hat´ arozni. Ezeknek az eszk¨ oz¨oknek a seg´ıts´eg´evel m´ar el´erhet˝oek k¨ ul¨onb¨oz˝o alkalmaz´ asok, melyek megk¨ onny´ıtik a feladatokat az aktu´ alis poz´ıci´o ig´enybev´etel´evel. Ez a fejezet a helymeghat´aroz´o technol´ ogi´ akat ´es az ezeket felhaszn´al´o mobilalkalmaz´asokat mutatja be.
2.1.
Helymeghat´ aroz´ o rendszerek
Napjainkban az okostelefonok mindegyik´en el´erhet˝ o valamely eszk¨ oz, amely a k´esz¨ ul´ek f¨oldrajzi hely´et k´epes meghat´arozni valamely pontoss´aggal. A k¨ovetkez˝o fejezetek a helymeghat´ aroz´ ashoz haszn´alhat´ o technol´ogi´ akat t´ argyalj´ ak az els˝ok´ent megjelent rendszerekt˝ ol kezdve a legfrissebb megold´asokig.
2.1.1.
A helymeghat´ aroz´ o technol´ ogi´ ak oszt´ alyoz´ asa
Az 1. t´ abla a fontosabb tulajdons´agok alapj´an veszi sorra a k¨ ul¨ onb¨oz˝o technol´ogi´akat [2]. LBS t´ıpusa
Pontoss´ ag
K¨ olts´ eg
TTFF
Lefedetts´ eg
Cell ID
h´ al´ ozat-alap´ u
300m-20km
alacsony
gyors
k¨ozepes
Cell ID + jeler˝ oss´eg
h´ al´ ozat-alap´ u
250m-12km
k¨ozepes
gyors
magas
AOA
h´ al´ ozat-alap´ u
100-200m
k¨ozepes
k¨ozepes
j´o
50-200m
alacsony
k¨ozepes
j´o
20-200m
magas
k¨ozepes
j´o
30-80m
alacsony
lass´ u
v´altoz´o
5-50m
k¨ozepes
k¨ozepes
v´altoz´o
10m
k¨ozepes
k¨ozepes
k¨ozepes
h´ al´ ozat-alap´ u ´es
TOA
k´esz¨ ul´ek assziszt´alt h´ al´ ozat-alap´ u ´es
U-TDOA
k´esz¨ ul´ek assziszt´alt GPS
k´esz¨ ul´ek alap´ u h´ al´ ozat-alap´ u ´es
AGPS
k´esz¨ ul´ek assziszt´alt WLAN/RF
h´ al´ ozat-alap´ u
1. t´ abl´ azat. Helymeghat´aroz´o rendszerek ¨osszehasonl´ıt´asa
A helymeghat´ aroz´ asi technol´ ogi´ak oszt´alyoz´asi szempontjai a k¨ovetkez˝ok: 7
- Pontoss´ ag: Az egyik legfontosabb tulajdons´ag, a m´ert poz´ıci´o megb´ızhat´os´aga a legjobban ett˝ol f¨ ugg. Leg´erthet˝ obb m´er˝ osz´ama a val´os poz´ıci´o ´es a m´ert poz´ıci´o k¨oz¨otti t´avols´ag, amely a m´er´es hib´aj´at jelenti. A pontoss´ag nem csak az eszk¨oz karakterisztik´ aj´ ab´ ol ad´ odhat, nagyban az adott k¨or¨ ulm´enyek hat´arozz´ak meg.
- Lefedetts´ eg: Nagyon fontos t´enyez˝ o, hogy a helymeghat´aroz´o szolg´altat´asnak milyen el´erhet˝ os´ege van az adott k¨ornyezetben. L´enyeges k¨ ul¨onbs´eg van ´altal´aban az ´ep¨ uleten bel¨ uli, ´es azon k´ıv¨ uli lefedetts´eg k¨oz¨ott. Illetve azt is figyelembe kell venni, hogy az adott szolg´ altat´as glob´ alisan, vagy az adott orsz´agban, esetleg enn´el is csak sz˝ ukebb k¨ ornyezetben ´erhet˝o el.
- Fel´ all´ asi id˝ o: megmutatja azt, hogy mennyi id˝ o kell ahhoz, hogy a rendszer m˝ uk¨od´ese elinduljon ´es megadja az els˝ o koordin´ at´akat. Az ind´ıt´as ´es a f¨oldrajzi helyzet els˝ o v´etele k¨ ozti id˝ o a fel´ all´asi id˝o (time to first fix, TTFF).
- Energiahaszn´ alat: A fogyaszt´ ast is figyelembe kell venni. K¨ ul¨on¨osen megker¨ ulhetetlen olyan esetekben, amikor az energiaforr´ as er˝osen limit´alt (akkumul´ator), ahogy az a mobilplatformokra is jellemz˝o.
- CPU ´ es s´ avsz´ eless´ eg sz¨ uks´ eglet: Egyr´eszt k´erd´es az, hogy a megkapott adatokb´ol mennyire neh´ez feladat kisz´amolni a poz´ıci´ot. Bizonyos esetekben ez k¨ozel sem trivi´alis kalkul´ aci´ot jelent, amely komolyabb CPU-id˝ot eredm´enyez, k¨ ul¨on¨ osen nagyobb pontoss´ ag´ u ´es s˝ ur˝ u m´er´esi id˝opontok eset´en. A s´avsz´eless´eget is figyelembe kell venni: milyen frekvencias´ avban ´es mekkora energi´ aval kell adni a jelet, illetve milyen er˝ oss´eg˝ u antenna kell a kapott jelek elfogadhat´o min˝os´eg˝ u v´etel´ehez. ´ technol´ogia bevet´ese sz¨ uks´eges, vagy m´ ar megl´ev˝ o elemeket - Infrastrukt´ ura: Uj lehet u ´jrafelhaszn´ alni.
- K¨ olts´ eg: Mennyi p´enzbe ker¨ ul a technol´ogia integr´al´asa ´es licencel´ese, illetve haszn´alata.
Kimondhat´o, hogy jelenleg nincs olyan m´odszer, amelyik mindegyik krit´erium alapj´an egy´ertelm˝ uen legjobbnak tekinthet˝ o. Mivel ez a dolgozat a mobilplatformokra koncentr´al, ez´ert a k¨ovetkez˝okben az a´tlagos, kommerci´alis, h´etk¨oznapi embereknek el´erhet˝ o okostelefon-k´esz¨ ul´ekeken alkalmazott helymeghat´aroz´o rendszerek bemutat´asa k¨ovetkezik. 8
2.1.2.
Global Positioning System
A GPS a legismertebb helymeghat´aroz´o rendszer, alapjai m´er´esi referenciapontok: m˝ uholdak, melyek k¨oz¨ ul jelenleg 24 van szolg´alatban. A m˝ uholdak nagyj´ab´ol 14 000 km/h sebess´eggel, k¨or¨ ulbel¨ ul 20 000 km magasan helyezkednek el ´es 12 o´ra alatt tesznek meg egy k¨ ort a F¨ old k¨or¨ ul. Kering´esi p´aly´ ajuk val´ oban k¨ozel k¨or alak´ u, a szatellitek u ´gy vannak elhelyezve, hogy a bolyg´o eg´esz felsz´ın´et lefedj´ek, ´ıgy a F¨oldr˝ol legrosszabb esetben is legal´abb n´egy l´athat´ o k¨ oz¨ ul¨ uk. A m˝ uholdak atom´ora pontoss´aggal m´erik az id˝ot, ez´altal a GPS k´esz¨ ul´ek a saj´at o´r´aja seg´ıts´eg´evel a szatellit ´es o¨nmaga t´avols´ ag´at kisz´ am´ıthatja. Ezt az u ´gynevezett trilater´aci´ os sz´amol´ asi m´ odszerrel hat´arozza meg: adott 3 v´ altoz´o (3 dimenzi´os koordin´ata), melyeket a kapott 4 m˝ uhold poz´ıci´o alapj´an 4 egyenletb˝ol lehet kisz´amolni: p (xA − x1 )2 + (yA − y1 )2 + (zA − z1 )2 + cδt p p2 = (xA − x2 )2 + (yA − y2 )2 + (zA − z2 )2 + cδt p p3 = (xA − x3 )2 + (yA − y3 )2 + (zA − z3 )2 + cδt p p4 = (xA − x4 )2 + (yA − y4 )2 + (zA − z4 )2 + cδt p1 =
pi = pszeudot´avols´agok; cδt = ´orahiba hat´asa ´ A GPS rendszert az Egyes¨ ult Allamok hozta l´etre ´es u ¨ zemelteti, eredetileg katonai c´elokra tervezt´ek, k´es˝obb a polg´ ari haszn´alatot is el´erhet˝ov´e tett´ek. Polg´ari alkalmaz´ as eset´en a pontoss´agot direkt rontj´ak, a katonai eszk¨oz¨ ok j´oval nagyobb pontoss´ agot k´epesek el´erni. A GPS rendszer USA-t´ol val´o f¨ ugg˝ os´ege igen nagy kock´azatot jelent az egy´eb orsz´agok sz´am´ara, ez´ert t¨obben m´ar elkezdtek saj´at m˝ uhold alap´ u helymeghat´ aroz´o rendszert ki´ep´ıteni. Ilyen az Eur´opai Uni´o ´altal fejlesztett Galileo, Oroszorsz´ag ´altal fejlesztett GLONASS ´es a K´ınai N´epk¨ ozt´arsas´ag ´altal k´esz´ıtett Compass. Ezek k¨oz¨ ul jelenleg csak a GLONASS haszn´alhat´o t´enylegesen a GPS-en k´ıv¨ ul [5].
1. ´ abra. GPS m˝ uholdak ´es a vev˝o [24] 9
2. ´abra. P´aly´ak a F¨old k¨or¨ ul [23]
2.1.3.
A Google helymeghat´ aroz´ o szolg´ altat´ asa
A Google pozicion´al´o rendszere j´oval kisebb pontoss´agot k´epes el´erni, mint a GPS, viszont a helymeghat´aroz´ ashoz sz¨ uks´eges energiaig´enye alacsonyabb. A Google szolg´altat´asa alapvet˝oen k´et, t´erer˝ oss´eg alap´ u technol´ ogi´ at haszn´ al: a GSM cella ID alap´ u, illetve a WiFi Access Point ID alap´ u helymeghat´aroz´ast. A helyzet lek´er´ese sor´an nem megadhat´o, hogy melyikkel dolgozzon, a rendszer a k¨ or¨ ulm´enyeknek megfelel˝oen az a´ltala v´elt legjobb m´odszert v´alasztja ki [4]. A cellainform´ aci´ okon” alapul´o pozicion´al´as azt haszn´alja ki, hogy a felsz´ın a mobil” szolg´altat´as szempontj´ab´ol cell´akra van osztva. Minden egyes cell´anak van egy egyedi azonos´ıt´oja, amely id˝oben nem v´altozik (elvileg). A cell´ ak m´erete nem egys´eges, az adott ter¨ uleten a forgalom s˝ ur˝ us´eg´et˝ol f¨ ugg. Jellemz˝oen vid´eki k¨ornyezetben ak´ar 30 km-es sugar´ u, k¨ ulv´arosban p´ar kilom´eteres, belv´arosban 100 m´eteres lehet. A femtocell´ak m´eg enn´el is kisebbek, egy-egy ´ep¨ uletet szolg´alnak ki. A mobiltelefon m˝ uk¨od´ese sor´an mindig egyetlen egy cell´ahoz van k¨otve, azon kereszt¨ ul kommunik´al a h´al´ozattal. Amennyiben ismert a kurrens cella azonos´ıt´oja, illetve a cella poz´ıci´oja, ez a poz´ıci´ o a telefonk´esz¨ ul´ekhez k¨othet˝o. L´enyeg´eben ´ıgy m˝ uk¨ odik a Google rendszere is: a mobiltelefon poz´ıci´ oja ´ıgy a cella ´ altal lefedett ter¨ ulet lesz, ami az el˝ obb le´ırt m´ odon a cella nagys´ ag´ at´ol f¨ ugg˝oen p´ ar sz´az m´etert˝ol p´ar km-ig terjedhet. A legnagyobb feladatot itt a cell´ak poz´ıci´ oj´anak felt´erk´epez´ese jelenti. A Google-nek o´ri´ asi adatb´azisa van, amely t¨obb mint 200 orsz´ agot, illetve t¨obb mint 200 szolg´ altat´ ot fed le. A WiFi t´erer˝ oss´eg alap´ u helymeghat´ aroz´as a Google szolg´ altat´as´ an´al hasonl´ o m´ odon m˝ uk¨odik, mint a cella ID alap´ u. Publikus WiFi h´al´ozatok azonos´ıt´oj´at ´es helyzet´et gy˝ ujt¨ott´ek o¨ssze egy nagy adatb´azisba, ´es ez alapj´an is t¨ort´enik a pozicion´al´as. Azonban ez a m´ odszer egy komoly adatv´edelmi agg´ alyt vetett fel, ugyanis egy priv´at WiFi h´al´ ozat adatainak ilyenform´ an t¨ort´en˝o haszn´alata jogs´ert˝o lehet. Az erre vonatkoz´o v´adakra reag´alva a Google felk´ın´al egy m´odszert, amivel elt´avol´ıthat´o az adott WiFi h´al´ozat az adatb´azis´ab´ol [21]. A Google szolg´altat´asa j´ol m˝ uk¨odik, azonban z´art, nem lehet abb´ol saj´at c´elra adatokat kinyerni. Ugyanakkor l´eteznek olyan hasonl´o adatb´azisok, amelyek ny´ıltak, b´arki sz´am´ara el´erhet˝oek. Egy p´elda ilyen adatb´azisra az opencellid [13], amely egy egyszer˝ u webes Application Programming Interface-el (API) ´erhet˝o el. B´arki lek´erheti a pontok list´aj´at, illetve maga is szerkesztheti az adatb´ azist, teh´at t¨ olthet fel cell´ akat poz´ıci´oval. A projekt c´elja nem csak az adatb´azis l´etrehoz´asa, friss´ıt´ese ´es karbantart´asa, hanem olyan eszk¨oz¨ok k¨ozz´et´etele is, amelyekkel az adatb´azisb´ol poz´ıci´o inform´aci´o kinyerhet˝o, tov´abb´a az 10
adatb´ azist szerkeszteni lehet.
3. ´ abra. GSM cell´ ak elhelyezked´ese [3]
4. a´bra. Poz´ıci´o becsl´es bizonytalans´aga
Egy enn´el professzion´alisabb adatb´azis a Location API [14], amelynek cell´ akr´ol ´es WiFi h´al´ ozatokr´ol vannak adatai t¨obb mint 200 orsz´ agban, ´es ´atlagosan glob´ alisan a helymeghat´aroz´o k´er´esek 96% -´at tudja sikeresen teljes´ıteni. Magyarorsz´agon p´eld´aul 137269 cell´ar´ol ´es 1199089 WiFi access pointr´ol van poz´ıci´oinform´aci´ojuk. Ilyen mennyis´eg˝ u inform´aci´ot azonban nem adnak ingyen: az els˝o 100 lek´er´es tesztjelleggel ingyenes, viszont ezen t´ ul m´ar fizet˝os a lek´er´esek mennyis´eg´enek f¨ uggv´eny´eben. Szint´en webes API-juk van, amellyel a jelenlegi cella ID-t megadva a v´alaszban k¨ozlik a hozz´avet˝ oleges poz´ıci´ot. L´athat´o, hogy b´ar ez a megold´as sokkal kevesebb energi´at fogyaszt, mint a GPS, viszont internet el´er´es sz¨ uks´eges hozz´ a, amelynek ´ar´at a felhaszn´al´onak kell megfizetnie.
11
2.2.
Mobil platformok
Az elm´ ult ´evtizedben nagyon sokf´ele mobil platform, oper´aci´os rendszer ker¨ ult kifejleszt´esre, k¨oz¨ ul¨ uk n´eh´ any ma is haszn´alatban van, sok pedig m´ar elvesztette felhaszn´al´oi b´azis´at, ahogy az a 5. a´br´an is l´athat´o. A ma m´ar nem haszn´alatos oper´ aci´os rendszerekre n´eh´any p´elda: Maemo (fejleszt˝ o: Nokia), MeeGo (fejleszt˝o: Linux Foundation), Palm OS/Garnet OS (fejleszt˝ o: Access Co.), Windows Mobile (fejleszt˝o: Microsoft). A napjainkban legjobban elterjedt rendszerek a k¨ovetkez˝ oek: Android (fejleszt˝o: Google), iOS (fejleszt˝o: Apple), BlackBerry (fejleszt˝ o: RIM) ´es Windows Phone (fejleszt˝o: Microsoft). ´ Erdemes m´eg megeml´ıteni k´et u ´ j, m´eg tesztel´esi f´azisban l´ev˝o oper´aci´os rendszert: a Firefox OS a Mozilla alap´ıtv´ anyt´ ol, illetve a Ubuntu Touch OS a Canonical-t´ol.
5. a´bra. Mobil oper´ aci´os rendszerek piaci r´eszesed´es´enek v´altoz´asa id˝oben, 2013 harmadik negyed´ev´eig [17]
2.2.1.
Az Android mobilplatform
Az Android egy Linux-alap´ u, ny´ılt-forr´ask´od´ u mobil oper´aci´os rendszer, amelyet els˝osorban ´erint˝ok´eperny˝ os eszk¨oz¨okre terveztek, mint p´eld´aul a okostelefonok ´es t´ablasz´am´ıt´og´epek. A rendszert az Android Inc. kezdte el fejleszteni, ezt 2005-ben a Google felv´as´arolta ´es folytatta a fejleszt´est. A rendszert a sz˝ uk szakmai k¨oz¨ ons´eg sz´ am´ara 2007-ben mutatt´ak be, az els˝o kommerci´alis, ilyen rendszerrel m˝ uk¨od˝ o telefont pedig 2008-ban kezdt´ek el forgalmazni. Az Android alapja Linux kernel, azonban ez nem azonos az asztali, illetve szerverg´epekben haszn´alatos Linux kernellel, de a fejleszt´ese abb´ol ´agazott ki. T¨orekv´esek vannak arra, hogy az Android egy az egyben ugyanazt a kernelt haszn´alja, de ezek 12
egyel˝ore nem ´ertek el eredm´enyt. A kernel f¨ol¨ott C nyelven ´ırt API-k vannak, amelyek a legalapvet˝ obb szolg´altat´ asokat adj´ak, tov´ abb´a a strukt´ ura egyik legfontosabb eleme a Dalvik VM virtu´ alis g´ep. Ez a regiszter-alap´ u VM futtatja az androidos alkalmaz´ asokat, melyek Java nyelven vannak meg´ırva. Minden egyes processzhez a virtu´alis g´ep egy fut´ o p´eld´anya tartozik, ´ıgy biztos´ıtva a reszponzivit´ast ´es a biztons´agot. A VM rendelkezik automatikus mem´oriaszem´et gy˝ ujt˝ o alrendszerrel ´es t´ amogatja a t¨obbsz´ al´ u programoz´ ast. A rendszer r´eszei tov´abb´a a Java k¨ onyvt´arak, amelyeket k¨ozvetlen¨ ul az alkalmaz´asok fejleszt˝oi el´erhetnek. Lehet˝ os´eg van nat´ıv k´oddal rendelkez˝o programok fejleszt´es´ere is, de ez l´enyegesen nehezebb feladat, mintha Java nyelven t¨ort´enne a fejleszt´es. Az Android f˝ o hardverplatformja az ARM, de ezen k´ıv¨ ul m´ as platformokra is t¨ ort´enik portol´as napjainkban is.
6. ´ abra. Az Android rendszer architekt´ ur´aja [15]
Az els˝o sz´eles k¨ orben el´erhet˝o Android verzi´o az 1.0 volt, amely 2008-ban ker¨ ult kiad´asra. Ez stabil volt ugyan, de nem volt n´epszer˝ u, ´es nem igaz´an nyerte el a felhaszn´al´ok tetsz´es´et. Az els˝ o kiad´ as o´ta az Android rengeteget fejl˝ od¨ott, jelenleg a stabil v´altozata a 4.4 -es verzi´osz´amn´al tart. Az u ´jabb ´es u ´jabb verzi´ok a´ltal´aban mindig u ´j funkci´okat hoznak magukkal, illetve a megl´ev˝oket jav´ıtj´ak, sebess´eget n¨ovelik, a sebezhet˝os´egeket foltozz´ak be. Azonban a k¨ ul¨ onb¨oz˝o verzi´okkal az API is sokszor megv´ altozik, ami megnehez´ıti a fejleszt´es folyamat´at. Sokszor el˝ofordul az, hogy a r´egi, j´ol bev´alt megold´asok helyet egy u ´ jfajta fel¨ uletet haszn´ alat´ ara k´enyszer´ıti a programoz´okat a Google. Ez k¨ ul¨ on¨ osen fell´ep akkor, amikor az eddig megl´ev˝o funkci´okat elavult jelz˝ovel l´atja el (deprecated). Ez azt jelenti, hogy az adott funkci´o m´eg bennmarad a programoz´asi k¨onyvt´arban, de m´ar nem fejlesztik tov´abb, ´es b´armikor kivehetik, teh´at nem ´erdemes haszn´alni. Az Android a´lland´o v´altoz´asa miatt neh´ez frissen tartani a szoftvereket. A m´asik probl´ema 13
az, hogy neh´ez olyan alkalmaz´ ast fejleszteni, amely mindegyik Android verzi´ot teljess´eggel t´amogatja, az el˝obb felsorolt probl´em´ak miatt. Az Android fejleszt´es nagy h´ atr´anya m´eg, hogy p´eld´ aul az iOS-el szemben rengeteg fajta hardver ´erhet˝ o el, ´es sokszor ezek egyazon API h´ıv´ast k¨ ul¨onb¨oz˝ o m´ odon hajtanak v´egre, teh´at nem csak a verzi´okkal, hanem a telefonokon l´ev˝ o k¨ ul¨ onb¨ oz˝ o implement´ aci´okkal is meggy˝ ulik a programoz´ok baja.
7. ´abra. A haszn´ alt Android verzi´ ok eloszl´asa 2013. harmadik negyed´ev´eig [16] Az Android mobilplatformon rengeteg el´erhet˝o szolg´ altat´as van a programoz´ok r´esz´ere. A dolgozat t´em´ aj´ at tekintve a legfontosabb a helymeghat´aroz´ as: mind a GPS alap´ u, mind a Google-f´ele kevert cella ´es WiFi h´al´ozat alap´ u szolg´altat´as el´erhet˝o. A rendszer t´ amogatja tov´abb´ a k¨ ul¨onb¨oz˝o szenzorok haszn´alat´at, u ´ gy mint a giroszk´ op, t´avols´ag´erz´ekel˝o, f´eny´erz´ekel˝o, gyorsul´asm´er˝ o, h˝om´er˝ o, l´egnyom´asm´er˝o, m´ agneses ir´anyt˝ u, p´aratartalom m´er˝o. T´amogatja a k´ep ´es videofelv´etelt, ak´ar fullHD min˝os´egben is. Mind a GSM, mind a Code Division Multiple Access (CDMA) h´al´ ozaton haszn´ alhat´o a telefon´al´as, SMS, MMS ´es a mobilinternet szolg´ altat´as. T´ amogatja a WiFi, a Bluetooth ´es a Near Field Communication (NFC) t¨ obbf´ele verzi´oit [7]. 2.2.2.
Az iOS mobilplatform
Az iOS oper´ aci´os rendszert az Apple fejlesztette ki. Z´art forr´ask´ od´ u, ´es kiz´ar´ olag iPhone, iPod Touch ´es iPad k´esz¨ ul´ekeken futtathat´o, ARM processzoron, Power VR grafikus gyors´ıt´ok´arty´ aval. Az iOS az OSX-b˝ ol sz´armazik, ´ıgy osztozik a Darwin alapon, ez ut´obbi az Apple 2000-es ´evek elej´en kifejlesztett, UNIX-alap´ u oper´aci´os rendszere. Az els˝o publikusan el´erhet˝o verzi´o 2007. j´ unius 29-´en jelent meg, a legfrissebb, 7.0.4 pedig 2013. november 14-´en [18]. 14
A rendszer n´egy absztrakci´ os r´etegre bonthat´o fel [20], amelyeket a 8. A legals´o szinten helyezkedik el a Core OS r´eteg, amely l´enyeg´eben a kernelt tartalmazza, illetve a hardverk¨ozeli, alacsony-szint˝ u szolg´altat´ asokat. A Core Services r´eteg adja az alkalmaz´asok sz´am´ ara az alapvet˝o rendszerszolg´altat´ asokat, ilyenek p´eld´aul az automatikus referencia sz´aml´al´as, blokk objektumok, adatv´edelem, aszinkron v´egrehajt´asi sorok. A Media r´eteg tartalmazza azokat a grafikai, audi´o ´es vide´o technol´ogi´akat, amelyek a multim´edia alkalmaz´asok fejleszt´es´et lehet˝ov´e teszik, a teljess´eg ig´enye n´elk¨ ul: hardveresen gyors´ıtott rajzol´as, 2D ´es k´ep alap´ u renderel´es, m´edialej´atsz´o modul, k´odekek, stb. A legfels˝o szinten a Cocoa Touch a´ll, amely az alkalmaz´asok ´ep´ıt˝oelemeit tartalmazza, mint p´eld´aul gombok, panelek, sz¨ ovegmez˝ok. Fontos megjegyezni, hogy a Cocoa Touch a Model-View-Controller architekt´ ur´at k¨oveti. Az iOS programok k´esz´ıt´es´ehez fejleszt˝oeszk¨oz¨ ok sz´eles sk´al´aja ´ all rendelkez´esre, azonban ezek nagy r´esze szinte kiz´ ar´ olag OSX oper´ aci´os rendszeren fut. Az alkalmaz´asok implement´aci´ os nyelve az Objective-C, illetve az alacsonyabb szint˝ u API-k eset´en a C. A rendszer z´arts´aga miatt a verzi´ oprobl´em´ak nem l´epnek fel, mint Android eset´eben. Gyakorlatilag csak egy hardverre kell fejleszteni, mivel csak Apple k´esz¨ ul´eken fog futni az alkalmaz´as. Tov´abb´a az eddig megjelent k´esz¨ ul´ekek k¨ ul¨onb¨ oz˝o verzi´oi sem t´ernek el nagyban egym´ast´ ol, olyannyira, hogy az utols´o kett˝ ot eltekintve a k´eperny˝ ok m´erete is egy az egyben megegyezik.
8. ´ abra. Az iOS rendszer architekt´ ur´aja [19]
15
2.3.
L´ etez˝ o, el´ erhet˝ o megold´ asok
Term´eszetesen m´ar vannak hasonl´o mobilalkalmaz´asok, amelyek a dolgozatban t´ argyalt keretrendszer funkcionalit´asait r´eszben megval´ os´ıtj´ ak. Az Android alkalmaz´asboltj´aban, a Google Play-ben tal´ alhat´ o p´ ar ilyen program, a 2. t´abl´azat ezeket hasonl´ıtja ¨ossze. N´ ev
El˝ ony¨ ok
H´ atr´ anyok
Meghat´ arozhat´ o au-
Nincs t´ erk´ ep, nehe-
Proximity Alert
tomatikus m˝ uveletek
zen ´ atl´ athat´ o, csak
(Patrick J. Doran)
a
k´ ezzel lehet felvenni
pont
k¨ orzet´ ebe
´ erkez´ eskor
´ Ar
Let¨ olt´ esek
´ ekel´ Ert´ es
Ingyenes
10000
4.2
Ingyenes
5000
3.8
Ingyenes
1000
4.2
Ingyenes
50000
3.1
1861 Ft
100000
4.8
pontokat
Nagyfok´ u testreszabElavult GUI, csak Proximity Alerts
hat´ os´ ag, informat´ıv
(4real.gr)
t´ erk´ epes
k´ ezzel lehet felvenni reprepontokat zent´ aci´ o Pont k¨ ozel´ ebe ´ erve
Proximity Alert (AndroidRaj)
Modern felhaszn´ al´ oi
egy
fel¨ ulet,
fel-
akci´ ot
tud
csak
ex-
v´ egrehajtani:
SMS
vett
a pontok
automatikus
port´ alhat´ oak, illetve
k¨ uld´ est.
A felvett
import´ alhat´ oak
pontok list´ aja nem kezelhet˝ o.
Nagyon
intuit´ıv
UI, kedvenc pontok Nincs kezel´ ese,
figyel-
Location Alert
meztet´ esek
k¨ ot´ ese
(Jarvisware)
id˝ ointervallumhoz,
automatikus
akci´ o v´ egrehajt´ as, a k´ esz´ıtett POI lista nem ´ attekinthet˝ o
elmenthet˝ o,
lista nem is import´ alhat´ o
megjelen´ıt´ ese d´ atum szerint Rendk´ıv¨ ul
test-
reszabhat´ o,
sok
H´ etk¨ oznapi
fel-
haszn´ al´ oknak
bo-
funkcionalit´ assal, Locus Pro (Assam Software)
nyolult t¨ obbf´ ele
fel¨ ulet,
a
offline dem´ o id˝ oszak ut´ an
t´ erk´ ep, POI lista imviszonylag dr´ ag´ anak port´ al´ asa/export´ al´ asa tekinthet˝ o t¨ obb form´ atumban
2. t´ abl´ azat. El´erhet˝ o megold´asok ¨osszehasonl´ıt´asa
A 2. t´abl´ab´ol kiolvashat´o, hogy b´ar t¨ obb l´etez˝o program is el´erhet˝o m´ar, ezek k¨oz¨ ul egyik sem ad teljes funkcionalit´ast a felhaszn´al´ ok sz´am´ara, tov´abb´a nem is b˝ov´ıthet˝o tetsz˝oleges m´odon, ´ıgy van ig´eny olyan keretrendszerre, amely f¨ol´e az adott ig´enyek szerinti helyf¨ ugg˝ o mobilalkalmaz´ ast lehet ´ep´ıteni.
16
3.
Keretrendszer
POI-alap´ u
t´ erinformatikai
alkal-
maz´ asokhoz Ez a fejezet egy olyan keretrendszer specifik´al´as´at, tervez´es´et ´es megval´os´ıt´as´at mutatja be, amelyb˝ol b´armilyen ig´enynek megfelel˝o specializ´alt Point of Interest (POI) alap´ u helyf¨ ugg˝ o mobilalkalmaz´ ast lehet fejleszteni.
3.1.
Specifik´ aci´ o
A k¨ovetkez˝ o alfejezetek a keretrendszer r´eszletes specifik´aci´oj´at t´ argyalj´ak, bemutatj´ak a felhaszn´ al´ oi interf´eszt, tov´ abb´ a r´eszletesen le´ırj´ak az alkalmaz´as funkci´oit is. 3.1.1.
´ Altal´ anos le´ır´ as
A keretrendszer olyan alkalmaz´asok fejleszt´es´et teszi lehet˝ov´e, amelyek megk¨onny´ıtik a felhaszn´al´o t´erk´eppel t¨ort´en˝o t´aj´ekoz´ od´as´at. Az alkalmaz´as f˝o k´eperny˝oj´en egy t´erk´epn´ezet jelenik meg, ezen POI-k helyezhet˝oek el, amikre kattintva a felhaszn´ al´o inform´aci´okat szerezhet az adott helyr˝ol. Az alkalmaz´ asb´ol lek´erhet˝o az aktu´alis poz´ıci´ o is, melyet a telefon be´ep´ıtett GPS modulja ´es/vagy a Google cella alap´ u szolg´altat´as ad meg. A felhaszn´al´o kijel¨olhet egy, vagy t¨obb meghat´arozott POI-t, ´es ha ez egy megadott t´avols´agon bel¨ ul ker¨ ul, akkor az alkalmaz´ as figyelmezteti o˝t, vagy egy´eb el˝ ore meghat´ arozott akci´ okat hajt v´egre. A keretrendszert u ´gy kell elk´esz´ıteni, hogy egy olyan alapot adjon a fejleszt˝ok sz´am´ara, amib˝ol t¨obbf´ele POI alkalmaz´as alak´ıthat´o ki, azonnal specializ´alhat´o legyen a k¨ ul¨onb¨oz˝o ig´enyekre, p´eld´ aul: - t¨ omegk¨ ozleked´esben az ´ allom´ashelyre val´o be´erkez´es jelz´es´ere, - t´ ur´ az´ oknak, kir´ andul´ oknak Geocaching c´elokra, - v´ arosn´ez˝ oknek, nem ismert ´erdekes pontok megtal´al´as´ara, - aut´ ovezet˝ oknek kritikus hely, p´eld´aul benzink´ ut k¨ozels´eg´enek figyelmeztet´es´ere, - sportol´ oknak figyelmeztet´esre, ha szakaszhat´arhoz ´ertek, - ´es ezekhez hasonl´ o b´ armilyen helyhez k¨ot¨ott rutin elv´egz´es´ere.
17
3.1.2.
Forgat´ ok¨ onyv
A 9. ´abra az alkalmaz´as k´eperny˝ oinek elrendez´es´et, funkcionalit´as´at ´es a k´eperny˝ok k¨oz¨otti relevanci´ akat szeml´elteti.
9. ´ abra. Az u ´gynevezett GUI storyboard” ” A forgat´ok¨ onyvben szerepl˝ o k´eperny˝o ´allapotok a k¨ovetkez˝oek: 1.
k´ eperny˝ o: A program ´altal´anos f˝ok´eperny˝oje, a t´erk´epen megjelen˝o POI-kkal ´es az egyik adatait tartalmaz´ o bubor´ekkal.
2.
k´ eperny˝ o: A k´esz¨ ul´ek hardveres men¨ ugombj´ar´ol ny´ıl´o men¨ uje.
3.
k´ eperny˝ o: A t´erk´epn´ezet felett megjelen˝o, Load KML” men¨ upontb´ol h´ıvhat´o ” dial´ogus, amellyel az online POI-kat lehet let¨olteni.
4.
k´ eperny˝ o: Ezen a fel¨ uleten a felhaszn´al´o be´ all´ıthatja azt a t´ avols´agot, amelyen bel¨ ulre ´erve az alkalmaz´ as figyelmezteti ˝ot a POI k¨ozels´eg´er˝ol.
5.
k´ eperny˝ o: Azt a list´ at demonstr´ alja, amelyen a felhaszn´al´ o kiv´ alaszthatja azt a POI-t, amelyikre t´ avols´ agi figyelmeztet´est szeretne kapni. 18
6.
k´ eperny˝ o: Itt a be´all´ıt´asok l´athat´oak, ezeknek teljes list´aj´at a specifik´aci´o nem hat´ arozza meg, a terven csak k´et p´eld´at l´athatunk. A forgat´ok¨ onyv¨ on j´ol l´atszik, hogy az egyes funkci´ok a t´erk´epn´ezet felett megjelen˝o
men¨ ub˝ol ´erhet˝oek el. Azok a funkci´ok, amelyek nagyobb mennyis´eg˝ u u ´ j inform´aci´ ot adnak a felhaszn´al´onak, u ´ j ablakban ny´ılnak meg, az egy´eb funkci´ok pedig mod´ alis dial´ogusablakokon kereszt¨ ul ´erhet˝oek el. 3.1.3.
Haszn´ alati esetek
A 10. a´bra az alkalmaz´as haszn´alati eseteit mutatja be, azt, hogy kik ´es mire haszn´alj´ak a rendszert, tov´ abb´ a milyen egy´eb felt´eteleknek kell teljes¨ ulni¨ uk a specifik´ aci´onak megfelel˝oen.
MobilWPOIWAdatbázis
<uses>
5 POIWKiválaszóWmodul
6
<uses>
<uses>
POIWmegjelenítés
Térkép
<extends>
WifiWlokalizáció
GPS <uses>
<uses>
GSMWCellaWinfo Lokalizáció
Beállítások
TérképWNézet <uses>
<uses>
POIWExportálás <uses>
POIWAdatbázis POIWImportálás
<uses>
5
Riasztás
3
User
10. ´ abra. Az alkalmaz´as UML use-case diagramja
3.2.
Architekt´ ura
Az alkalmaz´as t¨ obb alrendszerb˝ol ´ep¨ ul fel, amelyek k¨ ul¨ on´all´oan is k´epesek funkci´ ot bet¨olteni. Ezek kapcsolatban vannak egym´assal, ´es k¨oz¨osen val´os´ıtj´ak meg a specifik´aci´ oban le´ırt funkci´ okat: - Mobil POI adatb´ azis: SQLite adatb´azisban t´ arolja a POI-kat. Ez az alrendszer k¨ozponti szerepet t¨olt be. Kapcsol´odik hozz´a a POI kezel˝o, megjelen´ıt˝o ´es a riaszt´as´ert felel˝os alrendszer is.
19
- T´ erk´ ep ´ es POI megjelen´ıt´ es:
Ez az alrendszer jelen´ıti meg a t´erk´epet ´es az
aktu´alis n´ezeten l´athat´o ´erdekes pontokat is. K¨ozvetlen¨ ul a POI adatb´azist´ol k´eri le a megjelen´ıtend˝o adatokat. K´et r´etege van: a t´erk´ep, amelyet egy megl´ev˝o komponens felhaszn´al´as´aval rajzol ki, illetve a POI pontok r´etege. - POI kezel´ es:
´ Erdekes pontok import´al´as´at, szerkeszt´es´et ´es export´al´as´at mag´aban
foglal´o alrendszer. Az import´al´ ashoz kapcsolatban a´ll k¨ uls˝o POI adatb´azisokkal, valamint a felhaszn´al´o ´altal ¨ossze´all´ıtott POI f´ajlt is tudja import´alni. Ezeket az adatokat a POI adatb´azis alrendszer menti el. - Helymeghat´ aroz´ o modul: Helymeghat´aroz´as´ert felel˝os modul, mely mag´aban foglalja a GPS, WiFi ´es GSM cella adatok alapj´an t¨ort´en˝o lokaliz´aci´ot is. Ezeket a hardveres szolg´altat´asokat az Android SDK a´ltal biztos´ıtott, magasabb szint˝ u absztrakci´os r´etegen kereszt¨ ul ´eri el. A Riaszt´as modul ennek seg´ıts´eg´evel tudja meghat´arozni, hogy t¨ ort´ent-e kiv´ alasztott POI-khoz k¨ot¨ ott esem´eny. A t´erk´epn´ezet ezen alrendszer alapj´an hat´arozza meg, ´es rajzolja ki a felhaszn´al´o aktu´alis poz´ıci´oj´at. ort´en˝o - Riaszt´ as modul: Ez a modul felel az ´erdekes pontok hat´ask¨or´ebe ´erkez´eskor t¨ riaszt´as´ert. Adatait a POI adatb´ azist´ol kapja ´es riaszt´ ashoz a lokaliz´aci´os modult´ol kapott inform´ aci´okat is felhaszn´alja. Amennyiben a felhaszn´ al´o kezeli a riaszt´ ast, akkor a t´erk´ep megjelen´ıt˝o modul szolg´ altat´ as´ at h´ıvja meg.
TérképQnézet
POIQszerkesztésQésQkiválasztás
ImportálásQésQExportálás
Riasztás
POIQAdatbázis
MédiaQésQfájlQkezelés HálózatiQkommunikáció
SQLite
Lokalizáció
AndroidQDalvikQVM LinuxQkernel
11. ´ abra. Az alkalmaz´ as r´etegzett architekt´ ura diagramja
20
3.3.
Megval´ os´ıt´ as
A keretrendszer alkalmaz´as elk´esz¨ ult implement´aci´oj´at t´argyalja ez a fejezet, bemutatva az architekt´ ura megval´os´ıt´as´at, tov´abb´a a k´esz felhaszn´al´oi fel¨ uletet k´eperny˝ ok´epeken kereszt¨ ul.
3.3.1. cd UMLClassDiagram1
A megval´ osult szoftverarchitekt´ ura r¨ ovid bemutat´ asa
A k¨ ovetkez˝o szakasz a programk´odot alkot´ o oszt´alyok m˝ uk¨od´es´et, ´es azok kapcsolat´at t´argyalja, melyek a 12. ´ abr´ an j´ ol megfigyelhet˝oek. ProximityAlertService ProximityServiceConnection SettingsActivity
Attributes Attributes
Attributes # # # # # # #
Operations
cellCheckBox : CheckBox gspCheckBox : CheckBox saveSelectedCheckBox : CheckBox saveSettingCheckBox : CheckBox serviceButton : Button serviceCheckBox : CheckBox settings : SharedPreferences
+ + + + +
ProximityServiceConnection
getService() : ProximityAlertService onServiceConnected(Component, IBinder) : void onServiceDisconnected(ComponentName) : void ProximityServiceConnection() setService(ProximityAlertService) : void ProximityServiceConnection
N
MainActivity
1
# # # #
ProximityAlertService
1
1
locationManager : LocationManager proximityPosition : int proximityValues : Integer[] selected : ArrayList
Operations + getServiceConnection() : ServiceConnection + ProximityAlertService() - addProximityAlert(double, double, int) : void - addProximityAlerts() : void - removeProximityAlerts()
Operations
MainActivity GeoLocatorTask Attributes Attributes
# # # # # #
# currentLocation : Location Operations - GeoLocatorTask() # doInBackground(Object[]) : Object # onPostExecute(Object[]) : void
ProximityIntentReceiver
LocationManager : locationManager mapOverlays : List placeMarks : ArrayList poiOverlay : PlaceMarkOverlay proximityValues : Integer[] selected : ArrayList
Attributes Operations + onReceive(Context, Intent) : void + ProximityIntentReceiver() - createNotification(PendingIntent) : Notification
Operations -
DoubleTapMapView DoubleTapMapView
MainActivity
Attributes 1
# getureDetector : GestureDetector
1
Operations + + + + +
DoubleTapMapView(Context, AttributeSet) DoubleTapMapView(Context, AttributeSet, int) DoubleTapMapView(Context, String) onSaveInstanceState(Bundle) : void onTouchEvent(MotionEvent) : boolean
addLocationOverlay() : void bindService() : void handeProximity() : void handleAbout() : void handleLocation() : void handlePOILoading() : void handlePoiSelect() : void handleSettings() : void populatePOIOverlay() : void readLists() : void unBindService() : void
MainActivity
PlaceMarkOverlay
MainActivity 1
Attributes
PlaceMarkOverlay
# dialogIcon : Drawable # overlays : ArrayList
N
Operations + + + + + + + #
1
addOverlay(OverlayItem) : void draw(Canvas, MapView, boolean) : void onTap(int) : boolean PlaceMarkOverlay(Drawable) PlaceMarkOverlay(Drawable, Context, Drawable) populateOverlay() : void size() : int createItem(int) : void
CoordinateUtils Attributes Operations
PlaceMarkSaxHandler
+ + + + +
SelectPoiActivity
coordinateToGeoPoint1(double, double) : GeoPoint CoordinateUtils() getSimpleStringFromAddress(Address) : String locationToGeoPoint(Location) : GeoPoint placeMarkToOverlayItem(PlaceMark) : OverlayItem
Attributes # # # # # # #
Attributes # # # # # #
coordinates : boolean current : boolean description : boolean name : boolean placeMark : boolean point : boolean
Operations ParcelableGeoPoint
Operations
Attributes
+ + + + + +
Operations
characters(char[], int, int) : void endElemenet(String, String, String) : void getPlaceMarks() : ArrayList PlaceMarkSaxHandler() startDocument() : void startElement(String, String, String, Attributes…
+ ParcelableGeoPoint() + ParcelableGeoPoint(int, int) + ParcelableGeoPoint(GeoPoint) - ParcelableGeoPoint(Parcel) - writeToParcel(Parcel) : void
PlaceMark ParcelableGeoPoint 1
PlaceMark 1 PlaceMark
PlaceMarkSaxHandler
adapter : PlaceMarkAdapter filtered : HashMap filterText : EditText filterTextWatcher : TextWatcher list : ListView selected : ArrayList selectionChanged : boolean
Attributes - coordinates : ParcelableGeoPoint - description : String - title : String Operations
N
N PlaceMark 1
+ PlaceMark(String, String, String) + PlaceMark(String, String, double, double) + PlaceMark(String, String, int, int, boolean) + writeToParcel(Parcel, int) : void - readObject(ObjectInputStream) : void - writeObject(ObjectOutputStream) : void
12. ´ abra. Az alkalmaz´as UML oszt´alydiagramja
PlaceMark:
Egy POI-t reprezent´al´ o oszt´ aly, tartalmazza a POI r¨ovid c´ım´et ´es
egy hosszabb le´ır´ast r´ola, tov´abb´a mag´aba foglalja a POI koordin´at´ait, ami a ParcelableGeoPoint oszt´aly egy p´eld´ anyak´ent jelenik meg. A PlaceMark oszt´aly megval´os´ıtja az Android Parcelable interf´esz´et, illetve a Java Serializable interf´esz´et, ´ıgy 21
k¨onnyen k¨ uldhet˝ o k´eperny˝ ok k¨ oz¨ ott Intent-eken ´at ´es szerializ´aci´oval f´ajlba menthet˝o.
ParcelableGeoPoint: lesz´armazottja.
A
Google
APIs-ban
megtal´alhat´ o
GeoPoint
oszt´aly
A nev´eb˝ol is ad´ od´oan megval´os´ıtja a Parcelable interf´eszt, ´ıgy
k¨onnyen elk¨ uldhet˝o k´eperny˝ok k¨ oz¨ ott. Erre az´ert is sz¨ uks´eg van, mert a PlaceMark, amely szint´en Parcelable, az oszt´ aly egy p´eld´any´at tartalmazza. DoubleTapMapView: Szint´en egy Google APIs-ban elhelyezked˝o oszt´ aly, a MapView lesz´armazottja. Az ˝ ososzt´ alyhoz k´epest annyi plusz funkcionalit´ast ad, hogy dupla ´erint´es eset´en r´anagy´ıt a t´erk´epfel¨ uletre, ahogy azt a legt¨obb ilyen alkalmaz´as teszi. A dupla ´erint´es detekt´ al´ as´ at egy GestureDetector objektummal teszi meg.
PlaceMarkOverlay:
Az ItemizedOverlay oszt´aly lesz´armazottja. A Google APIs-ban
ez az oszt´ aly val´os´ıtja meg a t´erk´epfel¨ uletre egy jel¨ol˝o halmaz rajzol´as´ at. Az oszt´ aly PlaceMark objektumokat k´epes megjelen´ıteni a t´erk´epfel¨ uleten, mindegyiket egy-egy jel¨ol˝o form´ aj´aban. Amennyiben erre kattint a felhaszn´ al´o, az onTap() met´odus megh´ıv´asa sor´an egy felugr´ o ablakban megjelen´ıti az adott ´erdekes pont r´eszletes adatait.
PlaceMarkSaxHandler:
Az XML-alap´ u POI form´atumok ´ertelmez´es´et, feldolgoz´as´at
megval´ os´ıt´o oszt´ aly. A Simple API for XML (SAX) a Document Object Model-el (DOM) ellent´etben nem egy f´at ´ep´ıti fel a dokumentum alapj´an, melynek elemeit tetsz˝ oleges r´eszletess´eg˝ u lek´erdez´esekkel lehet el´erni, hanem egy menetben v´egigolvassa a f´ajlt, ´es azonnal ´ertelmezi is. Az olvas´ as k¨ozben esem´enyeket ´eszlel, mint p´eld´ aul egy XML elem kezdete, vagy v´ege. Ilyen esetben h´ıv´ odnak meg az oszt´aly f¨ uggv´enyei. Az oszt´aly logikai v´altoz´okkal tartja sz´amon, hogy melyik XML elemn´el tart ´eppen az olvas´as, ´es ezeket felt´etelk´ent felhaszn´alva el´ agaz´asokkal dolgozza fel a f´ ajlt. Fontos megjegyezni, hogy a SAX -nak az a nagy el˝onye a DOM -al szemben, hogy j´oval kevesebb mem´ori´at fogyaszt, illetve a CPU-ig´enye is alacsonyabb, ´ıgy ide´alis mobilk´esz¨ ul´ekeken val´o haszn´alatra.
ProximityAlertService:
Ez az oszt´aly az alkalmaz´as lelke, ugyanis ez val´os´ıtja meg
a POI-k helyzet´enek figyel´es´et ´es a riaszt´ast. Ez az oszt´aly a Service lesz´armazottja, ´es nev´eb˝ol is l´ atszik, hogy egy h´ att´erbeli szolg´altat´ast v´egez. A Service-t a felhaszn´al´o b´armikor le´ all´ıthatja a be´all´ıt´asok k´eperny˝or˝ol. Ez a szolg´altat´as elindul´ asakor az Android rendszerben regisztr´alja, hogy mely koordin´at´ ak k¨ozels´eg´ere kell figyelni, illetve le´all´asakor ezeket a figyel´eseket t´avol´ıtja el. Ezt mindenk´eppen meg kell tenni, k¨ ul¨onben azok a v´egtelens´egi m˝ uk¨ odnek, feleslegesen fogyasztva a k´esz¨ ul´ek er˝oforr´asait. 22
ProximityIntentReceiver:
A felhaszn´al´o figyelmeztet´es´et ez az oszt´aly v´egzi.
Amennyiben egy kijel¨olt ´erdekes ponthoz ´er¨ unk, megh´ıv´odik az onReceive() met´odusa, amely egy Notification objektumot k´esz´ıt el. Ez ut´obbi a figyelmeztet´est mind a k´eperny˝o tetej´en tal´alhat´o ´ertes´ıt´esi ter¨ uleten, mind a villog´o LED-en jelzi a felhaszn´al´o fel´e. MainActivity:
Az alkalmaz´as k¨ ozponti oszt´ alya. Ez jelen´ıti meg a t´erk´epn´ezetet,
´es innen ´erhet˝o el a t¨ obbi Activity is a men¨ un kereszt¨ ul. Az oszt´aly hosszan tart´o m˝ uveleteket is elv´egez, ilyen p´eld´ aul a POI-k f´ajlba ment´ese, avagy a felhaszn´ al´o aktu´alis poz´ıci´oj´anak lek´er´ese. Ezeket egy k¨ ul¨on sz´alon futtatja, ´ıgy a GUI tov´abbra is reszponz´ıv marad. SelectPoiActivity:
A POI-k kezel´es´et val´os´ıtja meg. F˝o eleme egy ListView, amellyel
list´aban jelen´ıti meg a let¨olt¨ott ´erdekes pontokat ´es azok lehets´eges be´all´ıt´asait. Az egyszer˝ ubb kezelhet˝os´eget el˝ oseg´ıtve egy sz˝ ur˝omez˝ot tartalmaz, ami g´epel´es k¨ ozben azonnal sz˝ urt tal´ alatokat jelen´ıt meg a list´aban. Ezt a funkci´ot a TextWatcher oszt´aly egy p´eld´any´aval ´eri el, amely minden sz¨ovegv´altoztat´as eset´en egy esem´enyt k¨ uld, illetve egy Filter lesz´armazottal, amely a konkr´et sz˝ ur´est v´egzi. A sz˝ urt adatokat has´ıt´ o t´abl´aban t´arolja, ´ıgy rendk´ıv¨ ul gyorsan, konstans id˝o alatt k´epes lek´erni a sz˝ urt elemek indexeit.
23
3.3.2.
K´ eperny˝ ok´ epek
A 13. ´abr´ an a megval´os´ıtott androidos alkalmaz´ as k´eperny˝oment´esei l´athat´oak, HTC Sensation k´esz¨ ul´eken, Android 4.0.2 oper´aci´ os rendszeren futtatva. A h´arom k´epen az elk´esz¨ ult alkalmaz´ as h´arom ´allapota l´ athat´ o. Az Android nat´ıv GUI elemeit haszn´alva belesimul az oper´aci´os rendszer ´es a t¨obbi alkalmaz´as felhaszn´al´oi fel¨ ulet´ebe, ez´altal egy konzisztens felhaszn´al´oi ´elm´enyt ny´ ujt. A felhaszn´ al´onak nem kell u ´ jra felfedezni az alkalmaz´ ast: a m´ar megszokott mint´akat haszn´ alva tudja el´erni a bizonyos funkci´ okat. L´athat´o, hogy a men¨ u nem teljesen egyezik meg a tervekkel: az implement´aci´o a klasszikus men¨ u helyett az u ´ gynevezett Action Bar -t haszn´alja, amely az alkalmaz´ as c´ım´evel egy vonalban helyezkedik el, a legfels˝o sorba helyezi a men¨ ugombokat, ezzel is t¨obb helyet hagyva a l´enyegi tartalomnak. Azok a men¨ uelemek, amelyek m´ ar nem f´ernek ilyen m´odon ´ ki a k´eperny˝ore, a 3 ponttal jelzett gombbal el˝oh´ıvhat´oak. Erdemes megjegyezni, hogy a r´egebbi Android verzi´ okon ez a fajta men¨ uelrendez´es alap´ertelmez´esben nem ´erhet˝o el. ´Igy az alkalmaz´ ast r´egebbi k´esz¨ ul´ekeken futtatva a klasszikus, a GUI terveken is megtal´alhat´o men¨ u jelenik meg.
13. ´ abra. K´eperny˝ok´epek az alkalmaz´asr´ol
24
4.
Terepi
mobil
kliensalkalmaz´ as
biodiverzit´ as
felm´ er´ es´ ehez Az alkalmaz´as egy - a sv´ ajci alap ´ altal t´ amogatott projekt keret´eben k´esz¨ ul el, melynek c´elja a magyarorsz´agi erd˝ ok biodiverzit´ as´anak min´el alaposabb megismer´ese [22]. Az erd˝ok v´altozatoss´ ag´anak meg˝orz´ese kritikus Magyarorsz´ag sz´am´ ara, de az orsz´agban eddig nem volt ilyen teljes k¨or˝ u felm´er´es, az egyes m´er´esek izol´ altak voltak, tov´ abb´ a nem adtak kiel´eg´ıt˝ o r´eszletess´eg˝ u k´epet a hazai erd˝ ok ´allapot´ ar´ol. A felm´er´es kezdetben az ´ Eszaki-k¨ oz´ephegys´eg erd˝oiben fog zajlani, ´es az el˝ozetes eredm´enyek ki´ert´ekel´ese ut´an az orsz´ag t¨ obbi erd˝ oj´ere is kiterjedhet majd. A projekt biol´ogiai szakmai feladatait az ¨ ogiai ´es Elm´eleti Biol´ogiai Tansz´ek, tov´abb´a a Duna-Ipoly ELTE N¨ov´enyrendszertani, Okol´ Nemzeti Park v´egzi el, a felm´er´esben 20-30 ember fog r´eszt venni. A mintav´eteli pontok egy ponth´ al´o ment´en lesznek kijel¨olve. A szisztematikus mintav´etel sor´an minden v´altoz´ora k¨ ul¨on-k¨ ul¨on k´esz´ıthet˝o egy pontt´erk´ep, amely intrapol´aci´o seg´ıts´eg´evel teljes lefed´es˝ u t´erk´epek el˝ o´all´ıt´as´at teszi lehet˝ov´e. A projekt keret´en bel¨ ul sor ker¨ ul n´eh´any faj ´el˝ ohely-megfelel˝os´egi vizsg´alat´ ara, amely sor´an kider¨ ul, hogy milyen ´el˝ohelyi elemekre ´es abb´ol mennyire van sz¨ uks´ege az adott fajnak. Ennek k¨osz¨onhet˝oen el´er˝ojelz´eseket is lehet majd adni az adott faj el˝ofordul´as´ara. A t´erk´epek birtok´ aban javaslatok tehet˝oek a beavatkoz´asok hely´enek megad´as´ara, hogy azok a lehet˝o legkisebb v´altoz´ ast okozz´ ak az erd˝ ok biol´ ogiai sokf´eles´eg´eben.
4.1.
Funkcion´ alis specifik´ aci´ o
A program a terepi felm´er´esben vesz r´eszt, egyfajta fel¨ uletet ad az adatok bevitel´ere. Az alkalmaz´as egy kliens, melyhez egy szerveroldal is tartozik, ez ut´obbi szolg´altatja a felm´er´esi feladatokat, v´ altoz´okat, amelyeket a felm´er˝ o a program seg´ıts´eg´evel kit¨ olt, ´es az adatokat visszat¨ olti a szerverre.
25
Az alkalmaz´as platformja Android 4+ mobil oper´ aci´ os rendszer, feladatai a k¨ovetkez˝ oek: - a felhaszn´ al´ okat autentik´ alni; - FTP-n kereszt¨ ul a felhaszn´al´ o m´er´esi feladatait (csomagjait) le-, illetve felt¨ olteni; - felk´ın´alni szerkeszt´ esre az adatgy˝ ujt˝on l´ev˝o csomagokat, illetve azok mintav´eteli pontokhoz tartoz´ o rekordjait; - a mintav´eteli pont rekord kiv´ alaszt´ as´ anak seg´ıt´ ese (n´ev, k´eszenl´eti ´allapot alapj´an, sok rekord k¨ oz¨ ul); - menedzselni az egy mintav´eteli ponton t¨ort´en˝o adatgy˝ ujt´ es folyamat´ at; - k¨ ovetni a csomagok felt¨ olt¨ otts´egi, k´eszenl´eti ´allapot´at, metaadatait; - kezelni a rekord metaadatait; - regisztr´ alni ´es a felt¨olt´es sor´an a csomaggal egy¨ utt mozgatni a r¨ogz´ıt´esre ker¨ ult m´edia anyagot (k´ep, hang), metaadatokat. A 14. a´bra a felm´er´esi rutin szok´asos menet´et mutatja be, jelezve, hogy melyik m˝ uvelet melyik k´eperny˝ oh¨ oz tartozik.
Felmérés
Init
Első init?
Nem
Napi letöltés
Csomag kiválasztás
Pont kiválasztás
Mozgás pontra
Űrlap kitöltése
Napi feltöltés
Igen Bejelentkezés
14. ´ abra. A felm´er´es egyszer˝ us´ıtett folyamat´abr´aja Az alkalmaz´as ind´ıt´asakor a bejelentkez˝o k´eperny˝o jelenik meg, amely k´et sz¨ovegmez˝ot tartalmaz a felhaszn´ al´on´ev ´es jelsz´o be´ır´as´ahoz, valamint egy Bel´ep´es” gombot, amelyre ” kattintva a program a f˝ ok´eperny˝ ore ugrik, amennyiben a be´ırt adatok helyesek. 4.1.1.
A f˝ ok´ eperny˝ or˝ ol el´ erhet˝ o funkci´ ok
A f˝ok´eperny˝o a k¨ovetkez˝ o tov´abbl´ep´esi lehet˝os´egeket tartalmazza: Felm´er´es”, Let¨olt´es”, ” ” Felt¨ olt´es”, Be´all´ıt´ asok”, Kil´ep´es”. Mindegyik gomb ´ertelemszer˝ uen az adott funkci´ ot ” ” ” megval´os´ıt´o k´eperny˝ ore ugrik, a Kil´ep´es” gombra kattintva az alkalmaz´as le´all. ” 26
Felm´ er´ es:
A k´eperny˝o list´azza a let¨olt¨ott csomagokat, egy csomagra kattintva az adott
csomag pontjait list´az´o k´eperny˝ ore v´ alt. Az egyes csomagok listaelemekk´ent vannak megjelen´ıtve, ezen elemek tartalmazz´ak a csomag nev´et, illetve azt, hogy a csomag milyen k´esz¨ ults´egi szinten ´ all (elk´esz¨ ult pontok sz´ama/¨osszes pont sz´ama).
15. ´ abra. Bejelentkez´es
Let¨ olt´ es:
16. ´abra. F˝ok´eperny˝o
17. ´abra. Csomaglista
Internet kapcsolat eset´en az adott felhaszn´al´onak kiadott csomagokat lehet
let¨olteni a szerverr˝ol. Egy list´aban megjelen´ıti az el´erhet˝o csomagokat, melyekb˝ol a felhaszn´al´o kiv´ alaszthatja, melyeket szeretne let¨olteni. Let¨olt´es eset´en a csomagok t´arol´ odnak a k´esz¨ ul´ek SD k´ arty´aj´an.
Felt¨ olt´ es:
Internet kapcsolat eset´en a felhaszn´al´o az elk´esz¨ ult felm´er´esi csomagokat
felt¨oltheti a szerverre. Csak a val´oban elk´esz¨ ult csomagokat aj´anlja fel list´aban a program, ezek k¨ oz¨ ul a felhaszn´ al´o kiv´alaszthatja ´es felt¨oltheti az adott csomagokat. Amennyiben teljess´eggel sikeres egy csomag felt¨olt´ese, az t¨orl˝odik a k´esz¨ ul´ek h´att´ert´arj´ar´ol.
Be´ all´ıt´ asok:
A be´all´ıthat´o funkci´okat list´azza a program ezen k´eperny˝on. Egyel˝ore k´et
ilyen be´all´ıt´asi lehet˝os´eg van: a csomagokat kezel˝o szerver c´ıme, illetve a fajnevekben t¨ort´en˝ o keres´es m´ odszere. Az alkalmaz´as nyelv´et automatikusan nem lehet be´all´ıtani, viszont az Android rendszerben ´eppen aktu´ alisan kiv´alasztott nyelvet a program figyelembe veszi.
4.1.2.
K¨ ozvetlen¨ ul a felm´ er´ eshez kapcsol´ od´ o k´ eperny˝ ok
Az alkalmaz´ as legfontosabb feladata egy adott ter¨ ulet m´er´esi pontjainak felm´er´ese. Ez az alfejezet azt ´ırja le, hogy a felm´er´eshez kapcsol´ od´o k´eperny˝ok pontosan milyen funkcionalit´assal rendelkeznek. 27
Pontok list´ az´ asa:
A felm´er´esi pontokat a program egy r´ acsszerkezetben jelen´ıti meg.
A GUI-n megfelel˝o poz´ıci´ o a r´acsban k¨ ozel´ıt´est ad a felhaszn´ al´onak a pont val´ os fizikai helyzet´ere. A pontok h´att´ersz´ıne jelzi az adott pont k´esz¨ ults´egi ´ allapot´ at. Fekete sz´ın jelzi a nem felm´erend˝o pontot, a piros a felm´erend˝o de m´eg el nem kezdett pontot, s´arga a folyamatban l´ev˝o pontot, k´ek a befejezett pontot. A legk¨ozelebbi pontot a program egy k¨or f¨ol´e rajzol´ as´ aval k¨ ul¨ onb¨ ozteti meg. K´ erd´ escsoportok list´ az´ asa:
Az adott ponton a navig´aci´o befejez´ese ut´an az adott
pontra vonatkoz´o u ˝ rlapot t¨ oltheti ki a felhaszn´al´ o. Az u ˝ rlap k´erd´escsoportokba van rendezve, ez a k´eperny˝o ezeket list´azza ki. Adott k´erd´escsoport csak akkor nyithat´o meg, ha az el˝oz˝o m´ ar be van fejezve. A befejez´es azt jelenti egy k´erd´escsoport eset´eben, hogy a tartalmazott o¨sszes k¨otelez˝ o k´erd´es m´ ar kit¨olt´esre ker¨ ult. Egy k´erd´escsoportra kattintva az adott k´erd´escsoport els˝ o k´erd´es´evel kezdve jelenik meg az u ˝rlap megfelel˝o r´esze. ˝ Urlap:
Adott k´erd´escsoportban tal´alhat´ o k´erd´eseket jelen´ıti meg ´es teszi kit¨olthet˝ ov´e.
Egyszerre alapesetben egy k´erd´est jelen´ıt meg, kiv´eteles esetben r¨ ovid k´erd´esek eset´en t¨obbet. A k´erd´esek k¨oz¨ ott (k¨ovetkez˝o, el˝ oz˝o) u ´gynevezett swipe gesztussal lehet v´altani. Amennyiben a k´erd´es k¨otelez˝ oen kit¨oltend˝o ´es m´eg nincs kit¨oltve, akkor a k¨ovetkez˝ o k´erd´esre nem enged ugrani, tov´abb´a ha egy k´erd´esre helytelen v´alaszt ad a felhaszn´al´o, szint´en letilt´asra ker¨ ul a tov´abbugr´as. Minden k´erd´es eset´en lehet˝os´eg van b´ armikor a k´erd´escsoportokat list´ az´ o k´eperny˝ ore visszal´epni.
18. ´abra. Pontok list´ az´ asa
4.1.3.
19. ´ abra. K´erd´escsoportok
˝ 20. ´abra. Urlap
Az u ˝ rlapon szerepl˝ o lehets´ eges k´ erd´ est´ıpusok
´ Altal´ anosan:
Minden egyes k´erd´esn´el a k´eperny˝o tetej´en a k´erd´es c´ıme jelenik meg.
Egy k´erd´esnek lehetnek megszor´ıt´ asai, mely azt jelenti, hogy sz˝ uk´ıti a v´alaszok halmaz´at 28
az adott vagy m´as k´erd´esek m´ ar megl´ev˝o v´alaszai alapj´an. Amennyiben a felhaszn´al´o nem ebb˝ ol a halmazb´ol ad v´ alaszt, akkor az nem ker¨ ul r¨ogz´ıt´esre ´es a program figyelmeztet a helytelen v´ alaszr´ol. A k´erd´esek relevanci´aval is rendelkezhetnek, ez azt jelenti, hogy nem a k¨ovetkez˝ o k´erd´esre, hanem egy m´asik megadott k´erd´esre ugorhatnak.
Egyszeres v´ alaszt´ as: A v´alaszt´asi lehet˝os´egeket list´aban, r´adi´ogombokk´ent jelen´ıti meg. Minden lehet˝ os´eg eset´en a v´alasztott ´ert´ek fel van t¨ untetve. A v´alasz kiv´alaszt´asa ut´an a k¨ ovetkez˝ o k´erd´esre navig´al az alkalmaz´as.
T¨ obbsz¨ or¨ os v´ alaszt´ as:
A v´alaszt´asi lehet˝os´egeket list´aban jelen´ıti meg, minden lista-
elem ´all egy jel¨ol˝ on´egyzetb˝ol, amely a kiv´alaszt´ast reprezent´ alja, tov´abb´a az ´ert´ekb˝ol, sz¨ovegesen megjelen´ıtve. Ezekben a list´akban el˝ofordulhat az egyik sem” pont, amely ” v´ alaszt´asa eset´en ellentmond´as fordulhat el˝ o (m´ as lehet˝os´egek is kiv´ alasztva lehetnek). Ha ez az ellentmond´as felmer¨ ul, akkor a program sz¨ovegesen figyelmezteti a felhaszn´al´ ot annak felold´ as´ ara.
Sz¨ oveges bevitel: Ilyen k´erd´es eset´en egy szerkeszthet˝ o sz¨ovegmez˝obe lehet bevinni a v´alaszt. Alapvet˝oen k´etf´ele ilyen k´erd´es lehets´eges: sz¨oveges vagy eg´esz sz´am ´ert´ek. Amennyiben eg´esz sz´am t´ıpus´ u az adott k´erd´es, akkor a billenty˝ uzeten csak a sz´amok billenty˝ ui jelennek meg.
Egyszeres v´ alaszt´ as leg¨ ord¨ ul˝ o list´ aval:
R¨ovid v´alaszt´asi list´aval rendelkez˝o egy-
szeres v´ alaszt´ast u ´ gynevezett Spinner -rel jelen´ıt meg. Ez az aktu´alisan kiv´alasztott ´ert´eket mutatja egy dobozban, amire kattintva egy leg¨ord¨ ul˝ o lista jelenik meg. A lista egy elem´ere kattintva az u ´jonnan v´alasztott ´ert´ek az adott listaelemben szerepl˝o lesz.
K´ epek v´ alaszt´ asa: Lehet˝os´eg van t¨obbsz¨or¨os ´es egyszeres v´ alaszt´ as eset´en k´epeket felaj´ anlani v´alaszt´ asi lehet˝ os´egk´ent. Ekkor a k´epek egy r´ acson ker¨ ulnek megjelen´ıt´esre, egy adott k´epre kattintva annak kerete megv´altozik, jelezve ezzel a v´alaszt´as ´allapot´at.
Fot´ o:
Az ilyen t´ıpus´ u k´erd´es megjelen´ıt egy k´epmez˝ot, melyen a kamera k´epe jelenik
meg, tov´ abb´a egy gombot, amelyre kattintva r¨ogz´ıt´esre ker¨ ul a fot´o a kamer´an kereszt¨ ul. Az ilyen t´ıpus´ u k´erd´es mindig fekv˝o m´odban jelenik meg.
T´ abl´ azatos k´ erd´ es: T¨obb v´alasz ad´as´at teszi lehet˝ov´e, tov´abb´a a m´ar bet´ apl´alt v´ alaszok teljes t¨orl´es´et. A v´alaszokat egy list´ aban jelen´ıti meg, u ´ j v´ alasz ad´as´ at a jobb 29
fels˝o sarokban tal´alhat´o +” gombra kattintva lehet elv´egezni. Ekkor a lista v´eg´ere ” besz´ ur´asra ker¨ ul egy u ¨res v´alasz ´es a k´eperny˝o ehhez g¨orget˝ odik. Amennyiben a v´alasznak egy f˝o ´ert´eke van, el˝osz¨or ez ker¨ ul bet´apl´al´asra egy m´asik k´eperny˝on kereszt¨ ul. A v´alasz al´ert´ekei alapesetben ¨ osszefoglal´ o m´odon az adott lista eleme jobb sz´el´en jelennek meg. Ezeket szerkeszteni nem lehet ilyen a´llapotban. A szerkeszt´es megkezd´es´ehez a lista elemre kell kattintani, amely leny´ılik ´es m´asodik megjelent sor´aban mutatja a szerkeszthet˝o mez˝oket. A v´ alasz els˝o sor´ara kattintva ¨ osszecsuk´ odik az adott sor. Az adott v´alasz sor´an hossz´ u kattint´assal az u ´ gynevezett Contextual Action Bar jelenik meg. Ekkor a k´eperny˝ o fels˝o sor´an, az u ´ gynevezett Action Bar -on, elt˝ unik az adott men¨ u ikonja, hely´ere t¨orl´es gomb ker¨ ul. Az egyes listaelemekre (v´ alaszokra) kattintva t¨obb v´alasz is kijel¨olhet˝o, a t¨orl´es gombra kattintva a v´ alaszok elt´avol´ıt´asra ker¨ ulnek. A bal fels˝ o sarokban a K´esz” gombra kattintva a t¨orl´es ´es kijel¨ ol´es m˝ uvelete befejezhet˝o ´es megint a ” szok´asos men¨ u jelenik meg.
21. ´ abra. T´abl´azatos k´erd´es
´j k´eperny˝o V´ alasz ad´ asa kereshet˝ o list´ aval: Ha ilyen k´erd´esre kattintunk, akkor egy u jelenik meg, amelyben egy lista van megjelen´ıtve a lehets´eges v´alaszokkal. A fels˝o sorban egy keres˝omez˝o tal´alhat´o, ebben sz¨ ovegesen ´ırva miden egyes g´epel´eskor a lista sz˝ uk¨ ul, csak azokat az elemeket jelen´ıti meg, amelyekben a keres˝ osz´ o megtal´ alhat´ o. Lehets´eges, hogy o¨sszetett v´alaszt´asi lehet˝ os´egek vannak. Ekkor csak a kit¨ untetett (f˝ o) ´ert´ek jelenik meg a list´aban, de keresve az adott v´ alasz alternat´ıv r´eszeiben is keres az alkalmaz´as. Lehets´eges, hogy egy k´erd´esre t¨obb lista is rendelkez´esre ´all. Ezek k¨ oz¨ott v´altani a jobb fels˝ o sarokban l´ev˝o gombbal lehet. Amennyiben list´at v´ altunk, az u ´j lista jelenik meg, ´es a keres˝ osz´o t¨ orl˝odik. A list´ aban egy elemre kattintva kiv´alasztjuk az adott lehet˝ os´eget, a program visszaugrik az el˝oz˝o (a k´erd´es) k´eperny˝oj´ere, ´es abban megjelen´ıti a v´alasztott lehet˝os´eget. 30
22. a´bra. Egyszeres v´alaszt´as Id˝ ov´ altoz´ o:
23. ´abra. T¨obbsz¨or¨os v.
24. ´abra. Kereshet˝o lista
Egyes k´erd´esekn´el sz¨ uks´eg van arra, hogy a k´erd´esn´el mennyi id˝ot t¨olt¨ott
el a felhaszn´ al´o. Ez´ert ez m´er´esre ker¨ ul. Amennyiben a felhaszn´ al´ o visszat´er a k´erd´eshez, az id˝ o hozz´ aad´ odik a m´ ar megl´ev˝oh¨oz, nem fel¨ ul´ır´odik.
4.2.
Architekt´ ura terv
Ez a fejezet az alkalmaz´as szerkezet´et t´argyalja ´es mutatja be az egyes modulok fel´ep´ıt´es´enek terv´et. Az alkalmaz´as r´etegzett architekt´ ura modellje, mely a szerkezetet ´ırja le, a 25. ´ abr´ an l´ athat´ o.
Pontok,XcsomagokXnézete
ŰrlapXnézet
Pontok,XcsomagokXkezelése
ŰrlapXlogika
AdatbázisXkezelő
XMLXfeldolgozó
MédiaXésXfájlXkezelés
HálózatiXkommunikáció
SQLite
AndroidXDalvikXVM
LinuxXkernel
25. ´ abra. Az alkalmaz´as r´etegzett architekt´ ura modellje
31
4.2.1.
Autentik´ aci´ o
A felhaszn´al´o bel´ep´esi azonos´ıt´oj´at ´es jelszav´at a k¨ ozponti szerver adminisztr´ator´ at´ol kapja meg, az alkalmaz´asba t¨ort´en˝o bel´ep´eskor ezeket kell beg´epelnie. Amennyiben az adatok helyesek, az alkalmaz´as elind´ıt egy munkafolyamatot, megjegyzi a felhaszn´al´o bel´epett a´llapot´at ´es nem k´eri u ´jb´oli megnyit´askor megint azokat. Ezen adatok t´arol´ asa az alkalmaz´as saj´at bels˝ o, m´as alkalmaz´ asok sz´am´ara nem el´erhet˝o t´arhely´en t¨ort´enik. A jelsz´o t´arol´as´an´al nem o¨nmag´at, hanem a jelsz´o MD5 hash lek´epz´es´et t´arolja a program. Az FTP szerverrel val´ o kommunik´aci´o sor´an ezt az MD5 kulcsot k¨ uldi jelsz´ok´ent, ´ıgy a felhaszn´ al´o t´enyleges jelszava nem kompromitt´al´odhat. Az FTP szerver fel´e t¨ort´en˝o autentik´aci´o az FTP szabv´ any [25] szerint hajt´odik v´egre.
4.2.2.
H´ al´ ozati kommunik´ aci´ o
Az adott k´erd´esek le- ´es felt¨olt´ese a szerverre WiFi-n t¨ ort´enik. A csomagokat a program egy erre a c´elra fejlesztett FTP szerverr˝ ol t¨ olti le. A felt¨olt´es k´et u ´ton zajlik: egyr´eszt az el˝obb eml´ıtett szerverre, m´asr´eszt egyfajta biztons´ agi tartal´ekk´ent megadott Dropbox [39] t´ arhelyre. Dropbox eset´en az elk´esz¨ ult csomagokat egy dedik´ alt szinkroniz´al´ asi mapp´ aba helyezi a program. A Dropbox-al t¨ ort´en˝o szinkroniz´aci´o nem ezen alkalmaz´as feladata, azt egy k¨ uls˝o program v´egzi el. A h´al´ ozati rendszert egyszer˝ us´ıtve a 26. a´bra mutatja be. Minden egyes felhaszn´al´onak saj´ at mapp´ at kap az FTP-szerveren ´es kiz´ar´olag csak ezt ´eri el. Mivel az FTP szerverrel nem lehet interakt´ıvan kommunik´ alni, parancsokat v´egrehajtani az egyszer˝ u f´ ajlm˝ uveleteken k´ıv¨ ul, ez´ert a h´al´ozati kommunik´aci´ o protokollja egy XML log f´ajlban ker¨ ul bevezet´esre, amelyre p´elda a C f¨ uggel´ekben tal´alhat´o. A szerver felel˝oss´ege, hogy az XML log f´ajlt egyidej˝ uleg ne tudja a kliens is ´ırni: amennyiben a szerver ´ır, ideiglenesen elt´avol´ıtja a kliens ´ır´ asi jog´at a f´ajlr´ol. A h´al´ozati kommunik´aci´ o ´es a napl´oz´asi protokoll l´ep´esei a k¨ ovetkez˝oek: - a szerver ´ altal csomag kihelyez´es´ere FTP mapp´aba, bejegyz´es az XML-be, - a kliens let¨ olti az u ¨res” csomagot, siker eset´en err˝ol bejegyz´est tesz, ” - a kliens egy csomag v´egleges´ıt´ese ut´an azt felt¨olt˝odik a szerverre, siker eset´en err˝ol bejegyz´est tesz, - a szerver mindek¨ozben periodikus ellen˝orz´eseket v´egez, a sikeresen let¨olt¨ ott u ¨res csomagokat t¨orli, a sikeresen felt¨olt¨ott v´egleges´ıtett csomagokat a´thelyezi a PostgreSQL adatb´azis´ aba, 32
- a kliens a csomagok list´ az´asakor ellen˝orzi, hogy a felt¨olt¨ott v´egleges´ıtett csomagot a szerver feldolgozta-e m´ ar, ez esetben t¨orli a csomagot a mobil t´arhely´er˝ol.
Felhasználó 1
Kiértékelés
Felhasználó 2
Szerver
SQLite Csomag1
SQLite Csomag2
FTP szerver
PostgreSQL
SQLite Csomag1
SQLite Csomag2
26. ´ abra. A rendszer h´al´ozati ´attekint´ese
4.2.3.
Adatb´ azis-kezel´ es
Egy csomag egy SQLite adatb´azis f´ajlt jelent. Ezen f´ajlok t´arol´asa az SD k´arty´an t¨ ort´enik. Amennyiben egy adott csomaggal szeretne a felhaszn´ al´o foglalkozni, a program lez´arja az el˝oz˝oleg megnyitott .db f´ajlt, ´es az u ´ jat megnyitja. A let¨olt´eskor a .db f´ ajl tartalmazza a csomag adatait, a pontok list´ aj´at ´es a pontok adatait, tov´ abb´a a v´alaszok t´abl´ait kit¨oltetlen¨ ul. Ezekbe a t´ abl´akba a program besz´ urja az adatokat. Minden egyes csomagn´al egy mapp´aban t´arol´odik a .db f´ajl, valamint a l´etrehozott egy´eb m´ediaf´ajlok. Egy csomag v´egleges´ıt´ese ut´ an a program kim´asolja azt egy dedik´alt k¨onyvt´ arba, ahonnan majd a h´ al´ ozattal t¨ ort´en˝ o szinkroniz´aci´o t¨ort´enik. Az u ˝rlap flexibilis kezel´ese ´erdek´eben p´ar szab´ aly ker¨ ult lefektet´esre, melyek alapj´ an a k´erd´esek a t´ abl´akba lettek sorolva. Ennek k¨osz¨onhet˝oen a programba nem kell r¨ogz´ıteni, 33
hogy pontosan melyik adatot hova kell besz´ urnia, a pont azonos´ıt´oja, a k´erd´es azonos´ıt´oja, a k´erd´es t´ıpusa illetve v´ alaszthat´o t´ıpus eset´en a v´alasz azonos´ıt´oja sz¨ uks´eges csak az adatb´azis-kezel˝o modulnak a megfelel˝o ment´esi hely megtal´al´as´ahoz. Amennyiben egyszeres v´alaszt´as, vagy sz¨oveges bevitel t´ıpus´ u k´erd´es az aktu´alis, egyszer˝ uen egy oszlop sz¨ uks´eges csak, ahova a v´alasz be´ırhat´o. T¨obbsz¨ or¨os v´ alaszt´as eset´en a helyzet bonyolultabb: amennyiben kev´es v´alaszlehet˝os´eg adott, mindegyiknek egy oszlop van fenntartva, melyek Boolean ´ert´ekeket t´arolnak a kiv´alaszt´ as f¨ uggv´eny´eben. Amennyiben sok v´alaszlehet˝os´eg van megadva, akkor egy k¨ ul¨on t´ abl´aban t´arolja a program a v´alaszokat. Az adatb´ azis r¨ovid a´ttekint´es´et az A f¨ uggel´ek mutatja be. A csomag t´abla szerkezete statikus, egy kiadott feladatcsomagot reprezent´ al. A ppont t´ abla szerkezete szint´en nem v´altozik, egy elm´eleti felm´er´esi pontot jelent. Minden egyes ppont egyedhez tartozik egy mpont ´es egy szakasz, ez ut´obbiak a t´enyleges felm´ert pontadatokat tartalmazz´ak. Az el˝obb bemutatott szab´ alyrendszer a p´elda-adatb´ azisdiagramon a k¨ovetkez˝ ok´epp val´ osul meg: a favane oszlop egy egyszeres v´ alaszt´ast, az n2k prefix˝ u oszlopok a t¨obbsz¨or¨os v´alaszt´as t´arol´as´anak els˝o verzi´oj´at realiz´alj´ak, m´ıg a faallomany t´abla a t¨obbsz¨or¨ os v´alaszt´as t´arol´ asi szab´ aly´ anak m´ asodik verzi´oj´at. 4.2.4.
˝ Urlap
Az u ˝rlap le´ır´asa a k´esz¨ ul´ek SD k´arty´aj´an, a program saj´at mapp´aj´aban t´arol´odik, XML f´ ajl form´aj´ aban. Az XML f´ ajl felsorolja az ¨osszes k´erd´escsoportot, az ¨ osszes k´erd´est. A k´erd´eseknek k¨ otelez˝o egy egyedi azonos´ıt´oval rendelkezni¨ uk, tov´ abb´ a aj´ anlott egy le´ır´ast adni hozz´ajuk. Az XML f´ajl tartalmazza a k´erd´esek k¨oz¨otti relevanci´akat is, azaz, hogy k¨ ul¨onb¨oz˝o v´alaszok eset´en melyik k´erd´es a k¨ovetkez˝o, ugr´asn´al melyikre v´altson a program. A k´erd´esek megszor´ıt´asait is t´arolja, amely a v´alaszok lehet˝os´eg´et sz˝ uk´ıti le megadhat´o szab´alyok szerint. Amennyiben egyszeres vagy t¨obbsz¨ or¨os v´ alaszt´as t´ıpus´ u k´erd´esr˝ol van sz´o, a v´alaszlehet˝os´egeket is ezen XML f´ajl t´arolja. Lehet˝os´eg van arra, hogy inline, a k´erd´es defin´ıci´oj´ aban t¨ort´enjen ez, illetve arra is, hogy egy m´ asik XML f´ ajlban. Ez akkor hasznos, ha a v´alaszok list´ aja meglehet˝ osen hossz´ u, ´es ´ atl´ athatatlann´a tenn´ek az XML szerkezet´et. Mivel egy teljesen flexibilis, dinamikus u ˝ rlap f´ajlban t´arol´odik a k´erd´esek fel´ep´ıt´ese, logik´aja, ez´ert sz¨ uks´eg eset´en k¨onnyen lehet m´odos´ıtani a k´erd´esfolyamot a program megv´altoztat´asa n´elk¨ ul. Az alkalmaz´as a t¨obbnyelv˝ us´eget is t´amogatja: amennyiben tal´al olyan XML f´ajlt, amely a rendszer jelenlegi nyelvi be´all´ıt´asaihoz illik, akkor az adott nyelven t¨olti be az u ˝rlapot ´es az adott nyelven jelen´ıti meg a k´erd´essort a felhaszn´al´o fel´e. Az XML f´ ajl szerkezet´et egy r¨ovid p´eld´an kereszt¨ ul a B f¨ uggel´ek mutatja be. 34
4.3.
Megval´ os´ıt´ as
Ez a fejezet az alkalmaz´as implement´ aci´oj´ at mutatja be. Mivel a program meglehet˝osen bonyolult, o¨sszetett, ez´ert csak a l´enyeges r´eszeket emeli ki. A fejezet bemutatja tov´ abb´ a az elk´esz¨ ult szoftver k´eperny˝ ok´epeit is. Answer Interface
Answer
Questions
Question
Choice
FTPManager
Class
Class
Class
AbstractListActivity Class
Question
FTPManager SelectQuestions
QuestionGroup
TextInputQuestion
SelectQuestion
PackageListActivity
PointListActivity
Class
Class
Class
Class
Class
Question
Question
Question
AbstractListActivity
AbstractListActivity
SelectQuestion
SingleSelectQuestion
MultiSelectQuestion
QuestionParser
Class
Class
Class
FormParser Q… Class
SelectQuestion
FormParser
AbstractActivity
TextInputQuestionParser
Class
Class QuestionParser
LoginActivity
FormActivity
MainActivity
Class
Class
Class
AbstractActivity
AbstractActivity
AbstractActivity
FormController Class
FormController
QuestionFragment
DatabaseManager
Class
DatabaseManager
DatabaseManager
FormNavigator
Class
FormNavigator
QuestionFragments
Class
Package Package Class
QuestionGroupFragment Class
Point
Form
QuestionFragment
Point
Form
Class
Class
27. ´ abra. Az egyszer˝ us´ıtett oszt´alydiagram
4.3.1.
A megval´ osult szoftverarchitekt´ ura
A 27. ´abr´an a program elk´esz¨ ult l´enyeges moduljai ´es azok kapcsol´od´ asai l´ athat´oak. Az al´ abbi fejezet az mutatja be, hogy az egyes modulok hogyan vannak implement´alva 35
´es milyen k¨ uls˝o komponenseket haszn´alnak fel, mind az Android SDK-b˝ol, mind egy´eb forr´asb´ol. Mivel az alkalmaz´as Android 4 platformra k´esz¨ ul, ig´enybe tudja venni az Android 3 (API 11) [26] ´es az Android 4 (API 14) SDK [27] u ´jdons´agait.
GUI elemek Az u ˝rlap megjelen´ıt´ese nagyr´eszt az Android 3-ban bevezetett Fragment-eken alapul [8]. Az u ˝ rlapban a k´erd´escsoportokon bel¨ uli k´erd´esek k¨oz¨ott jobbra ´es balra t¨ ort´en˝o u ´ .n. swipe gesztussal lehet navig´alni. Mivel a k´erd´esek nem alkotnak o¨n´all´o k´eperny˝oegys´eget, nem nyitnak u ´ j k´eperny˝ot, ez´ert nem az Activity oszt´aly lesz´armazottai, hanem a Fragment-´e. A Fragment egy ¨ on´all´o egys´eg, rendelkezik esem´enykezel´essel, GUI-val, vez´erl´esi logik´aval. Rendk´ıv¨ ul flexibilisen haszn´alhat´o: egy k´eperny˝on (Activity-n) bel¨ ul ak´ ar t¨ obb is elhelyezhet˝ o, ez´altal u ´ gymond alk´eperny˝ oket l´etrehozva. Ezt a funkci´ot ki is haszn´alja a program. Amennyiben t¨obb k´erd´est kell egyszerre megjelen´ıteni, p´eld´aul a GPS X ´es Y koordin´at´aj´at bevinni, 3 Fragment-et jelen´ıt meg egyszerre a k´eperny˝on: mag´ at a k´erd´escsoport´et, tov´ abb´ a a k´et k´erd´es´et a k´erd´escsoporton bel¨ ul. Nagyon fontos, hogy a lapoz´as ut´ an a k´erd´es a´llapot´at vissza kell tudni az alkalmaz´asnak a´ll´ıtani, mivel a Fragment illetve a hozz´a tartoz´o widget-ek nagy mem´oriaig´eny˝ uek, nem lehets´eges, hogy egyszerre az ¨ osszes k´erd´eshez tartoz´ o a mem´ori´aban legyen [10]. A program a k¨ ul¨ onb¨oz˝ o men¨ uk megjelen´ıt´es´ere az Action Bar -t haszn´ alja. Ez egy u ´j GUI elem, mely a program k´eperny˝oj´enek fels˝o s´ avj´ aban foglal helyet. Ezen alapvet˝ oen jobb oldalt lehet elhelyezni a men¨ upontokat. A szok´asos men¨ uh¨oz k´epest itt nem c´ımk´eket, hanem ikonokat haszn´ alnak - kevesebb helyet foglalnak el, tov´abb´ a gondosan tervezett k´ep eset´en a program kezel˝oje gyakori haszn´alattal gyorsan megtanulja, melyik men¨ upont mire val´o [9]. A bal oldali alkalmaz´as log´o szerepe is megv´altozott: be´all´ıthat´o, hogy r´akattintva az el˝ oz˝o k´eperny˝ ore t´erjen vissza az alkalmaz´as, ez az opci´o szint´en bele van ´ep´ıtve a programba. Az Action Bar -nak van egy speci´ alis lehet˝os´ege is: kontextus men¨ uk´ent is k´epes m˝ uk¨odni. A t´abl´azatos k´erd´esekn´el a lista elemek kijel¨ol´es´enek vizualiz´aci´oj´at val´os´ıtja meg a Contextual Action Bar. List´ak eset´en nagyban seg´ıti a felhaszn´al´ ot az, hogyha a m˝ uveleteket valamilyen anim´aci´o k¨oveti, amely reprezent´alja a logik´ aban v´egrehajtott t´enyleges v´altoz´ asokat. Ilyen p´eld´ aul egy elem t¨orl´ese, besz´ ur´asa, a´thelyez´ese stb. Ebb˝ol a c´elb´ol a program a ListViewAnimations[28] Android programk¨onyvt´arat haszn´alja. Ezzel a library-vel k¨onnyen hozz´a lehet adni anim´aci´okat a lista m˝ uveletekhez, tov´abb´a olyan bev´alt UI mint´akat is meg lehet val´os´ıtani, mint a swipe-to-dismiss, ami v´ızszintes eldob´as” gesztussal kit¨or¨ol ” egy adott elemet a list´ ab´ ol. 36
AndroidAnnotations Az elm´ ult id˝oszakban kezdtek el elterjedni a k¨ ul¨onb¨ oz˝o Dependency injection” prog” ramk¨onyvt´arak, amelyekkel egy modul f¨ ugg˝ os´egeit dinamikusan ´es k´enyelmesen lehet kezelni, csatolni. Egy ilyen library az AndroidAnnotations[29] is, amely az alapvet˝o f¨ ugg˝os´egkezel´esen k´ıv¨ ul Android specifikus opci´okat is felk´ın´al. A k¨onyvt´ar Java 5 annot´aci´okat haszn´al a f¨ ugg˝os´egek jel¨ol´es´ere. Ezeket az annot´aci´ okat ford´ıt´asi id˝oben elemzi, majd k´odot gener´al. Ennek l´enyege az, hogy a repetit´ıv, plusz funkcionalit´ast nem ad´o, csak technikai k´odr´eszleteket elrejtei a gener´alt k´ odban, ´ıgy a programoz´ o val´ oban csak a hasznos r´eszekre koncentr´alhat. Ezt a k¨onyvt´arat haszn´ al´o programok nem lassulnak semmit sem, hiszen a gener´ al´as ford´ıt´ asi id˝oben t¨ ort´enik. Egyetlen apr´o h´ atr´anya akad csak: a programoz´onak a gener´alt neveket kell haszn´alnia, amelyek egy karakterben t´ernek el a t´enyleges oszt´ alynevekt˝ ol.
˝ Urlapkezel´ es A k´erd´esek sorozata egy XML f´ajlban van t´arolva, ´ertelemszer˝ uen ezt fel kell dolgozni, hogy a program a mem´ori´aban fel´ep´ıtett modellel tudjon dolgozni. Az XML feldolgoz´as´ara alapvet˝oen k´et m´odszer k´ın´ alkozik: a Simple API for XML (SAX), ami egymenetben iter´ al v´egig a f´ ajlon, kev´es mem´ori´ at fogyaszt ´es gyors feldolgoz´ asra k´epes; illetve a Document Object Model (DOM), amely egy f´at ´ep´ıt fel a mem´ori´aban, emiatt lassabb ´es nagyobb mem´oriaig´eny˝ u, de bonyolultabb strukt´ ur´ akat k´epes kezelni. A mobilos programok eset´en ´altal´aban a SAX -ot illetve annak v´alfajait szokt´ak alkalmazni kis k¨olts´ege miatt, de ebben esetben a DOM -ra esett a v´alaszt´as. A k´erd´eseket tartalmaz´o XML meglehet˝osen r´eszletes, szerte´agaz´o, neh´ez lenne egymenetben feldolgozni. Tov´abb´a a feldolgoz´as csak a program indul´asakor t¨ort´enik meg, egyszer, ´ıgy nem vesz el sok id˝ ot a felhaszn´ al´ ot´ol. A program nem a be´ep´ıtett W3C DOM implement´aci´ ot haszn´alja, hanem egy k¨ uls˝o k¨onyvt´arat, a JDOM -ot [31]. Ez sokkal k´enyelmesebben ´es gyorsabban haszn´alhat´o API-t biztos´ıt, tov´abb´a a teljes´ıtm´enye is jobb. Mag´at a k¨ onyvt´arat a Java specifik´aci´oba is be akart´ ak ´ep´ıteni a Java Community Process keret´en bel¨ ul JSR 102 [30] k´odn´ev alatt, de ezt az´ota elvetett´ek. Ett˝ol f¨ uggetlen¨ ul a k¨onyvt´ar az´ota is rendszeresen kap friss´ıt´eseket.
A k´erd´esek u ´gynevezett relevanci´ akat ´es megszor´ıt´ asakot is specifik´alhatnak, ahogy az az el˝oz˝o szekci´okban m´ar t´argyalva volt. Ezeknek a le´ır´as´ara egy szkript fel¨ uletet biztos´ıt a program az XML-en bel¨ ul, melyekre a B f¨ uggel´ekben mutat egy p´eld´at. A program a szkriptek ´ertelmez´es´ere ´es v´egrehajt´ as´ara az Apache Commons Jexl programk¨ onyvt´ arat [32] haszn´alja. Ahogyan az a nev´eben is van, ez Java Expression Language (Jexl) 37
szintaxis´ u szkripteket k´epes kezelni. A Jexl a 6-os verzi´o ´ota a Java Enterprise Edition szabv´any r´esze, de a Java Standard Edition-ben, ´es ez´altal az Androidban, nincs benne. A Jexl l´enyeg´eben a Java szintaxis´at biztos´ıtja, a programk¨onyvt´ar pedig lehet˝os´eget ad a szkriptek v´egrehajt´as´ ara, aktu´alis v´altoz´ ok behelyettes´ıt´es´ere, egy´eni f¨ uggv´enyek h´ıv´as´ara, ´ıgy teljes m´ert´ekben megfelel a program c´eljainak.
Adatb´ aziskezel´ es Objektum-orient´alt programok eset´en mindig is neh´ezkes volt az adatb´azisok kezel´ese, ugyanis az adatb´azis t´abl´ ak r´eszben hasonl´ıtanak az oszt´alyokra, a rekordok a p´eld´anyokra, de m´egis m´as elvek ment´en kell kezelni ˝ oket. Ezen k´ıv¨ ul neh´ezkes az, hogy SQL parancsokon kereszt¨ ul kell vez´erelni az adatb´azis lek´erdez˝o ´es m´odos´ıt´o m˝ uveleteket, holott a objektum-orient´alt eszk¨oz¨okkel sokkal egyszer˝ ubb lenne. Ezt a dilemm´at pr´ob´alja feloldani az objektum-rel´aci´os lek´epez´es, mely egy hidat biztos´ıt az adatb´azisok ´es az objektum-orient´alt vil´ag k¨oz¨ ott. Az adatb´azis rekordjait objektumokba t¨olti be, melyeken ´ıgy a programoz´o k´enyelmesen dolgozhat, ´es egyszer˝ uen mentheti el ´ allapotukat vissza az adatb´ azisba, ´ıgy l´etrehozva a perzisztens objektumokat, avagy akt´ıv rekordokat. Rengeteg objektum-rel´aci´ os lek´epez´est implement´al´ o library k´esz¨ ult, de ezek nagy r´esze igen nagy fut´ asidej˝ u t¨ obbletk¨olts´eggel rendelkezik, ´es v´ allalati alkalmaz´asokhoz k´esz¨ ult. Az ebben a programban haszn´alt OrmLite[33] viszont minim´alis m˝ uveletig´enyt ad, ´ıgy mobil eszk¨oz¨ok¨on is hat´ekonyan haszn´alhat´o. Az Android-specifikus java SQLite API-t is t´amogatja, ´ıgy k¨ onnyen be´ep´ıthet˝ o b´ armely androidos alkalmaz´asba.
H´ al´ ozati kommunik´ aci´ o A h´al´ozati kommunik´aci´o FTP-n kereszt¨ ul val´osul meg, illetve egy XML napl´of´ ajl kezel´es´evel. Az FTP u ¨ zenetek k¨ uld´es´ehez ´es fogad´as´ahoz az Apache Commons Net[34] programk¨onyvt´ar lett be´ep´ıtve az alkalmaz´asba. Ez a library az FTP-n k´ıv¨ ul sz´amos ismert ´es bev´alt h´al´ozati protokollt implement´al (pl. SMTP, POP3, Telnet, stb). Haszn´alat´aval egyszer˝ uen lehet kommunik´alni az FTP szerverrel, mivel egy absztrakci´os r´eteget helyez a protokoll f¨ol´e: a t´enyleges h´al´ozati u ¨zenetekkel a programoz´onak nem kell foglalkoznia, el´eg a megadott m˝ uveletek v´egrehajt´ as´ara f´okusz´alnia.
4.3.2.
K´ eperny˝ ok´ epek
A 28., a 29. ´es 30. a´br´akon az elk´esz¨ ult alkalmaz´ as screenshotjai l´athat´ oak, a programot Android 4.2-es emul´ atoron futtatva. 38
28. ´abra. K´eperny˝ok´epek
29. ´ abra. K¨ ul¨onb¨oz˝o k´erd´est´ıpusok
4.4.
Tesztel´ es
Az alkalmaz´ as el´egg´e bonyolult, o¨sszetett, sok modul egy¨ uttes helyes m˝ uk¨ od´es´et k¨ oveteli meg. Ez´ert nagyon fontos a megfelel˝o tesztek elv´egz´ese, ´es rendszeres futtat´asa. A tesztek biztos´ıtj´ak azt, hogy a program az el˝ o´ırt specifik´aci´ok szerint m˝ uk¨odik, az elv´art m˝ uk¨od´est biztos´ıtja ´es a program m´odos´ıt´asa eset´en azonnal kiugrik az esetlegesen okozott hiba. Viszont mindenk´eppen figyelembe kell venni azt, hogy a tesztek csak a benn¨ uk el˝o´ırt szab´alyokra m˝ uk¨odnek, a le nem fedett hibalehet˝os´egeket nem fogj´ak semmi esetben sem felt´arni. Az alkalmaz´ as h´ arom tesztel´est seg´ıt˝ o keretrendszert, illetve egy t´avoli hib´akat jelent˝o rendszert haszn´ al. A k¨ ovetkez˝ okben ezek fognak r¨oviden bemutat´asra ker¨ ulni. 39
30. ´ abra. T´abl´azatos k´erd´es
4.4.1.
A JUnit
A JUnit[35] egy egys´egtesztel˝o keretrendszer, Java nyelven ´ırva. Egys´egeket tesztel, teh´at az egyes modulok ¨ on´ all´ oan elv´ art viselked´es´et, a t¨obbit˝ol f¨ uggetlen¨ ul. El˝oseg´ıti az automatiz´alt tesztel´est: egy kattint´assal v´egrehajthat´o az alkalmaz´ashoz ´ırt o¨sszes teszt. S˝ot, ak´ar a ford´ıt´asi folyamat r´esz´ev´e is lehet tenni, ´ıgy az programk´odot nem engedi addig leford´ıtani, am´ıg az o¨sszes teszt nem fut le hib´atlanul. A JUnit nagyban el˝oseg´ıti a ´ tesztvez´erelt programoz´ast, azaz a programk´od ´es a tesztek egy¨ uttes ´ır´as´at. Altal´ aban egy JUnit tesztesetet egy junit.framework.TestCase-b´ol ¨or¨ok¨olt oszt´aly val´os´ıtja meg, ´es a´ltal´aban egy Java oszt´ aly m˝ uk¨od´es´et szokt´ak vele vizsg´ alni. A tesztel˝o met´odusait Java 5 annot´aci´ okkal kell megjel¨ olni, ´ıgy kifejezve, hogy melyik pontosan milyen tesztfeladatot hajt v´egre.
4.4.2.
A Robolectric
A Robolectric[38], a JUnit-hoz hasonl´oan szint´en egy egys´egtesztel˝ o k¨ ornyezet, de ez Android-spefikus teszteket k´epes v´egrehajtani.
´ Altal´ aban a JUnit-tal egy¨ utt
szok´as haszn´alni, ´ıgy a tesztesetek v´egrehajt´ as´at a JUnit, az Android rendszerrel val´ o egy¨ uttm˝ uk¨od´est pedig a Robolectric adja.
´ Altal´ aban Activity-ket, View-kat,
Adapter-eket tesztelnek vele, de szok´as API -k, callback -eket ´es h´al´ozati kommunik´ac´o egys´egtesztel´es´ere is haszn´ alni. A keretrendszer rengeteg oszt´alyt, met´odust ´es seg´edletet ad, egy androidos alkalmaz´ as teljes tesztel´es´ere fel¨ uletet biztos´ıt. 40
4.4.3.
A Mockito
Az egys´egtesztel´es eset´en fontos, hogy csak mag´ at az adott modult tesztelje, m´ asokat ne is h´ıvjon meg. Ez azonban els˝o nekifut´asra szinte lehetetlen v´allalkoz´asnak t˝ unhet, hiszen m´ar a legegyszer˝ ubb program r´esze is f¨ ugghetnek egym´ast´ol. Ennek a probl´em´anak a felold´as´ara j¨ottek l´etre az u ´gynevezett mocking, ut´ anz´ o” keretrendszerek. Ezek lehet˝ov´e ” teszik azt, hogy bizonyos modulok, objektumok l´atsz´olagos m˝ uk¨od´es´et lem´asol´o egyszer˝ u ut´anzatok j¨ ojjenek l´etre, ´es ezek viselked´ese testre szabhat´o legyen. Biztos´ıtj´ak tov´abb´ a azt, hogy az ut´anzatok a val´os modulok hely´ere injekt´alhat´ oak legyenek. Amennyiben a teszt szempontj´ ab´ ol t¨ ok´eletes m˝ uk¨od´es˝ u ut´ anzat objektumokat haszn´ alnak a tesztelt modul dependenci´ajak´ent, az egys´eg teszt val´oban csak az adott egys´eget teszteli le, hiszen a dependenci´ ak m˝ uk¨od´ese el˝ore meghat´arozott, biztosan helyes (vagy ak´ ar biztosan helytelen), elv´art eredm´enyt adja vissza [11]. Egy ilyen keretrendszer a Mockito[36], melyet szint´en a JUnit-tal egy¨ utt szok´ as alkalmazni, ´es ezt haszn´ alja a terepi program is tesztel´esre. 4.4.4.
A Crittercism
A Crittercism [37] az el˝oz˝oekkel ellent´etben nem teljesen a tesztel´est szolg´ alja, hanem egy hibajelent˝o keretrendszer. A mobilalkalmaz´asokn´al k¨ ul¨on¨osen neh´ez kezelni a felhaszn´al´as k¨ ozbeni probl´em´akat, hiszen mobilr´ol l´ev´en sz´ o b´ arhol, b´armikor bek¨ovetkezhet a hiba. Ilyen esetben j¨ohet k´epbe a hibajelent˝o keretrendszer. A Crittercism az alap´ertelmezett kiv´etel kezel˝ot fel¨ ul´ırja ´es saj´at mag´ at ´ekeli be, ´ıgy ´ertes¨ ul arr´ol, ha az alkalmaz´as lefagy ´es ´ertes´ıti err˝ol a fejleszt˝ot, tov´abb´a a le´all´as r´eszleteit is k¨ozli. Amennyiben ez azonnal nem lehets´eges, mert nincs internet el´er´es, akkor sorba a´ll´ıtja a jelent´eseket, ´es a legk¨ozelebbi adand´ o alkalommal k¨ uldi el. Lehet˝ os´eget ad nem fat´ alis kiv´etelek jelent´es´ere is, tov´abb´a a programoz´ o is hagyhat jel¨ol˝ oket a programk´odban, ´ıgy azok v´egrehajt´asa is jegyz´esre ker¨ ul a jelent´esekben, ´ıgy k¨onnyebben kider´ıthet˝o, mi v´ altotta ki a hib´at. A fizet˝os verzi´ o ezeken k´ıv¨ ul a teljes´ıtm´eny, a h´al´ozat monitoroz´as´at, val´ osidej˝ u figyel´est, k¨ ul¨onb¨oz˝o statisztik´ ak k´esz´ıt´es´et is biztos´ıtja.
41
5.
¨ Osszefoglal´ as, a dolgozat eredm´ enyei
A szakdolgozat bemutatta a helymeghat´aroz´ o technol´ogi´ akat, ¨osszehasonl´ıtotta azokat t¨obbf´ele szempont szerint. Ismertette a legn´epszer˝ ubb mobil oper´aci´os rendszereket, amelyek a helymeghat´ aroz´o technol´ogi´ akat is felhaszn´ alj´ ak, tov´ abb´a o¨sszegy˝ ujt¨ otte a megl´ev˝ o olyan alkalmaz´ asokat, melyek a keretrendszerhez hasonl´ oan m˝ uk¨ odnek. A megval´ osult keretrendszer megfelel a l´atsz´ olag ellentmond´ o, el˝ozetesen t´ amasztott k¨ ovetelm´enyeknek: i) ¨on´all´o alkalmaz´ask´ent is haszn´alhat´o, ugyanakkor ii) keretrendszerk´ent is funkcion´ al, melyb˝ol tov´abb speci´alis c´el´ u alkalmaz´asok (pl. terepi adatgy˝ ujt˝o kliensalkalmaz´as) is fejleszthet˝ ok. A keretrendszer alapjaira t´ amaszkodva megval´ osult a biodiverzit´ as felm´er˝ o alkalmaz´as, amely, egy a sv´ajci alap a´ltal t´ amogatott projekt rendszer´enek meghat´aroz´ o komponense. Az alkalmaz´as az ´altala bet¨ olt¨ott k¨ozponti szerepe miatt a rendszer t¨ obbi r´esze ´altal szigor´ uan specifik´alt. Nagyon ´ert´ekes tapasztalatokat eredm´enyezett a kutat´ ocsoportban dolgoz´o koll´eg´akkal t¨ort´en˝o egy¨ uttm˝ uk¨od´es: i) megrendel˝oi szerepben a m´ern¨ okit˝ol elt´er˝o szempontok domin´altak, amelyeket a fejleszt´es sor´an kezelni kellett, ii) szakmai okok miatt a specifik´aci´ot a fejleszt´es sor´an dinamikusan v´altoztatt´ak, ami miatt az alkalmaz´ast folyamatosan u ´jra kellett tervezni, iii) hasonl´oan a felhaszn´alhat´o hardverelemekben is t¨obbsz¨or v´altoztat´ast k´ertek, ami az architekt´ ur´aban m´odos´ıt´asokat eredm´enyezett, ugyanakkor iv) a projekt el˝ orehalad´as´at szolg´al´o tal´alkoz´ok ´es megbesz´el´esek rendk´ıv¨ ul sok pozit´ıv tapasztalatot jelentettek. Az elk´esz¨ ult alkalmaz´ as szoftverfejleszt´esi ´eletciklus´at tekintve alfa verzi´ oj´ u megval´ os´ıt´ ast jelent. A c´elfelhaszn´al´ ok (terepi felm´er˝ok) 2014. janu´ arj´aban kezdik meg az erd˝ok biodiverzit´as´anak felm´er´es´et, ami az alkalmaz´as szempontj´ab´ol ´eles tesztnek tekinthet˝o, amely k´et t´ıpus´ u fejleszt´esi feladatot hoz mag´aval: i) az ´eles teszt alatt felmer¨ ul˝ o esetleges hib´akat jav´ıtani kell, ii) a tervez˝oasztal mellett ki nem der´ıthet˝o probl´em´ ak megold´ as´ ahoz sz¨ uks´eges u ´j funkci´okat is be kell ´ep´ıteni az alkalmaz´asba.
43
Irodalomjegyz´ ek [1] Android referencia hivatkoz´ as: developer.android.com/reference [2] Neil Shah, Location Based Services Part I: Technologies in Wireless Networks hivatkoz´as technowizz.wordpress.com/2010/01/03/lbs-technologies-part-1 [3] Ravi Jain and Google LBS Team, Location Based Services: From Promise to Reality, 2008. szeptember 10., hivatkoz´as: kb.mit.edu/confluence/pages/viewpage. action?pageId=3907111 [4] Zhengrong Ji ´es Ravi Jain Google enables Location-aware Applications for 3rd Party Developers, 2008. j´ unius 6. hivatkoz´ as: googlemobile.blogspot.hu/2008/ 06/google-enables-location-aware.html ah Andr´as Bevezet´es a m´er´estechnik´ aba ´es jelfeldolgoz´ asba, 6. el˝ oad´ as, 2012. [5] Dr. Ol´ m´arcius 21. [6] Rikard Windh DEVELOPMENT OF LOCATION BASED SERVICES, 2010. hivatkoz´as
mediaevolution.se/nordicgame/wp-content/uploads/2010/04/
Whitepaper-Development-of-LBS-Rev-A.pdf [7] Chris Haseman, Android Essentials, Apress, 2008 [8] Mark Murphy, Beginning Android 3, Apress, 2011 [9] Grant Allen, Beginning Android 4, Apress, 2012 [10] Grant Allen, Pro Android 4, Apress [11] Robert C. Martin Clean Code, Prentice Hall, 2009 [12] Google, Location strategies, hivatkoz´as developer.android.com/guide/topics/ location/strategies.html [13] OpenCellID weboldal, hivatkoz´ as: www.opencellid.org [14] Location API weboldal, hivatkoz´ as: www.location-api.com [15] Android (operating system) (Wikipedia), hivatkoz´as en.wikipedia.org/wiki/ Android_(operating_system) [16] Android version history (Wikipedia), hivatkoz´as: Android_version_history 44
en.wikipedia.org/wiki/
[17] Mobile operating system (Wikipedia), hivatkoz´as: en.wikipedia.org/wiki/Mobile_ operating_system [18] iOS (Wikipedia), hivatkoz´ as: en.wikipedia.org/wiki/IOS as: [19] K´ep, hivatkoz´
http://wiki.inf.utfsm.cl/index.php?title=Archivo:IOS.
jpg [20] iOS Technology Overview, hivatkoz´as:
developer.apple.com/library/ios/
#documentation/miscellaneous/conceptual/iphoneostechoverview [21] Configure access points with Google Location Service, hivatkoz´as: support.google. com/maps/bin/answer.py?hl=en&answer=1725632 o¨ okol´ ogiai [22] Erd˝
felm´er´esi
projekt
a
Sv´ ajci
Alap
honlapj´ an,
hivatkoz´as:
www.swiss-contribution.admin.ch/hungary/en/Home/Projects/Approved_ projects?projectinfoID=208635#form2 [23] K´ep, hivatkoz´ as: www.gps.gov/systems/gps/space [24] K´ep, hivatkoz´ as: gis.ednet.ns.ca/GPS/how_does_gps_work.htm [25] File Transfer Protocol, hivatkoz´as: http://www.ietf.org/rfc/rfc959.txt [26] Android 3 New Developer Features, hivatkoz´ as: http://developer.android.com/ about/versions/android-3.0-highlights.html#DeveloperApis [27] Android 4 New Developer Features, hivatkoz´ as: http://developer.android.com/ about/versions/android-4.0-highlights.html#DeveloperApis [28] ListViewAnimations,
hivatkoz´as:
https://github.com/nhaarman/
hivatkoz´as:
https://github.com/excilys/
ListViewAnimations [29] AndroidAnnotations, androidannotations [30] Java Community Process, hivatkoz´as: http://en.wikipedia.org/wiki/Java_ Community_Process [31] JDOM, hivatkoz´ as: http://jdom.org/ [32] Apache Commons Jexl,
hivatkoz´ as:
commons-jexl/ 45
http://commons.apache.org/proper/
[33] OrmLite, hivatkoz´ as: http://ormlite.com/ [34] Apache Commons Net,
hivatkoz´as:
http://commons.apache.org/proper/
commons-net/ [35] JUnit, hivatkoz´ as: http://junit.org/ [36] Mockito, hivatkoz´ as: http://code.google.com/p/mockito/ [37] Crittercism, hivatkoz´ as: https://www.crittercism.com/ [38] Robolectric, hivatkoz´ as: http://robolectric.org/ [39] Dropbox, hivatkoz´ as: http://dropbox.com/
46
F¨ uggel´ ek A.
Adatb´ azisszerkezet
A 31. a´bra az adatgy˝ ujt˝o alkalmaz´as adatb´ azis-szerkezet´et mutatja be: a t´abl´ akat, azok kapcsolat´ at ´es jellemz˝ o attrib´ utumait. csomag csomag_id
PK
int
FK
PK
ppont_id
int
int
n2k_szbog
int
FK
ppont_id
int
FK
csomag_id
PK
FK
csomag_nev
text
mintater
text
epont_id
int
nk2_nhcinc
int
felmero
text
sorszam
int
nk2_nhacinc
int
int
hatarido
int
sor
int
nk2_ngycinc
sor
int
oszlop
int
...
oszlop
int
feladat
int
felmeres
int
mpont PK
szakasz
ppont
ppont_id
int
szakaszleiras
int
gps_eszkoz
kihagy_oka
text
wsg84_lat
int
wsg84_long
int
faallomany fafajsor_id
int
ppont_id
int
int
fafaj_id
int
gps_lat
int
tom0008
int
gps_long
int
tom0920
int
favane
int
PK
FK
...
31. ´ abra. Az adatgy˝ ujt˝o alkalmaz´as adatb´azisdiagramja
47
B.
˝ Urlap XML le´ır´ as
A 32. ´abra az adatgy˝ ujt˝ o alkalmaz´ as u ˝rlapj´at mutatja be egy p´eld´an kereszt¨ ul.
32. ´ abra. P´elda az adatgy˝ ujt˝ o alkalmaz´as u ˝rlapj´anak XML le´ır´as´ara
48
C. A 33.
H´ al´ ozati XML napl´ o ´ abra az adatgy˝ ujt˝ o alkalmaz´as h´ al´ozati kommunik´aci´oj´aban szerepl˝o XML
napl´of´ ajlj´ ara mutat egy p´eld´ at. 010012 Nagy Peter 2013−12−10 15:30:24 2014−02−10 12:00:00 <statusz> 2013−12−10 15:32:10 2013−12−12 09:10:32 2013−02−02 12:45:10 2013−02−02 19:20:42 2013−02−04 10:06:12 <MD5 le>f8bfb2779e5c839cafecc99135e11a48 <MD5 fel>deb02ea559954c678fadcf6a30fbfa7c
33. ´ abra. P´elda az adatgy˝ ujt˝o alkalmaz´as egy h´al´ozati napl´obejegyz´es´ere
49
D.
CD mell´ eklet tartalma
A csatolt CD-mell´eklet a k¨ ovetkez˝ o f´ ajlokat tartalmazza: - a szakdolgozat PDF f´ ajlform´ atumban - a keretrendszer alkalmaz´ as Android telep´ıt˝ocsomagja APK form´atumban - a terepi adatgy˝ ujt˝ o alkalmaz´as Android telep´ıt˝ ocsomagja APK form´ atumban, ahol a bel´ep´eshez sz¨ uks´eges felhaszn´ al´ on´ev ´es jelsz´o a test.
50