Upload
madarasztamas
View
39
Download
0
Embed Size (px)
Citation preview
5/22/2018 Android Prog
1/67
Debreceni Egyetem
Informatikai Kar
Alkalmazsfejleszts Android platformra
Belstmavezet: Klstmavezet: Ksztette:
Btfai Norbert Szabkos Kovcs Szilrd
Egyetemitanrsegd Micont Kft. Programtervezinformatikus
Debrecen
2011
5/22/2018 Android Prog
2/67
2
1. Bevezets
2. Android platform
2.1. Mi is az az Android?
2.1.1. Sajtossgok
2.1.2. Architektra
2.1.3. Alkalmazsok
2.1.4. Alkalmazs keretrendszer
2.1.5. Knyvtrak
2.1.6. Android futsi krnyezet
2.1.7. Linux kernel
2.2. Android alapelemek
2.2.1. Activity-k
2.2.1.1. Activity-k letciklusa
2.2.2. Szolgltatsok
2.2.3. Broadcast receiver-ek
2.2.4. Tartalom szolgltatk
2.2.5. Intent-ek s intent szrk
2.3. AndroidManifest.xml
2.4. Felhasznli fellet
2.4.1. Megjelentelemek hieachija
2.4.2. UI definils XML-ben
2.5. Alkalmazs erforrsok
2.5.1. Erforrs tipusok
2.6. Adattrols
3. Egy alkalmazs Android Platformon: Voice+
3.1. Voice+ architektrja
5/22/2018 Android Prog
3/67
3
3.2. Voice+ felhasznli fellete
3.2.1. Voice+ funkcii 3.2.1.1. Belltsok megtekintse
3.2.1.2. Google account kezelse
3.2.1.3. Visszahvs telefonszmainak megjelentse
3.2.1.4. Telefonszm lista megjelentse hvs indtsakor
3.2.1.5. Hvs sttusz
3.3. Megvalsts
3.3.1. Belltsok
3.3.1.1. Kimenhvs integrci
3.3.1.2. Google account
3.3.1.3. Visszahvs szmai
3.3.2. Hvs indtsa
3.3.2.1. GoogleVoice osztly
3.3.2.2. Bejelentkezs
3.3.2.3. Visszahvs telefonszmainak lekrse
3.3.2.4. Hvskezels
3.4. Tesztels
3.5. A Voice+ publiklsa az Android Marketbe
4. sszefoglals
5. Ksznetnyilvnts
6. Irodalomjegyzk
5/22/2018 Android Prog
4/67
4
1. BevezetsA multimdis kszlkek, mint a szmtgp, televzi, internet s mobiltelefon napjainkbanmr termszetes, mindennap hasznlatos eszkzkk vltak. Mivel ezekeket gyakran hasznljuk,
nem felttlenl vesszk szre, hogy ezek a valaha forradalmi jdonsgoknak szmt eszkzk
mennyire befolysoljk mindennapjainkat s mekkora hatsuk van letnk fontosabb terleteire.
Ezen kszlkek lelke idrl idre egyre kisebb s kompaktabb, viszont a teljestmnyk
nvekszik. Elrtnk arra a szintre, hogy legtbbszr egyszerbb egy begyazott rendszerbe olyan
sztenderd s elterjedt hardverelemeket pteni, amelyeket egy opercis rendszer is alapbl
tmogat, gy a hardver- s szoftverfejleszts ideje egyarnt tredkre cskken.
Linux alap eszkzk szmtalan termkben fordulnak el, gy az Android opercis rendszer
Linux alapokkal, Java tmogatssal s remek megjelents kezeljvel elg gyorsan npszerv
vlt.
Legelterjedtebb Androidos kszlkek a mobiltelefonok. Mivel ez az opercis rendszer Linux
alapokra plt, gy kezdett veszi a begyazott rendszerekben val elterjedse is. gy a Java-ban
val fejleszts el
nyei - a gyorsabb s biztonsgosabb termkek ksztse - is kihasznlsrakerlnek.
A diplomamunkmban segtsget nyjt cg a MICONT Kft. sajt kszts intelligens
laksautomatikhoz tervezett begyazott rendszereit olyan hardverekkel vltja ki, melyeken
kpes futni az Android rendszer. Abbl indultunk ki, hogy az alapoktl kezdve elszr egy
mkd rendszerre, azaz egy mobiltelefonra kszljn el egy olyan alkalmazs, amely az
Android rendszer fbb rszeit hasznlja ki, gy, mint a megjelents, internet kapcsolat,
rendszeresemnyek, adattrols. Msrszt fontosnak tartottuk, hogy komplett, msok ltal ishasznlhat legyen a programunk. Ezzel fogjuk bizonytani magunknak, hogy tudunk az Android
rendszerrel termk minsg alkalmazst fejleszteni s rdemes a jvben is erre a rendszerre
alapozni.
5/22/2018 Android Prog
5/67
5
Jelen dolgozatom clja bemutatni az Android platformot, annak rszeit s alapvetmkdst,
tovbb a telekomminikcis megoldsok kzl egy Google Voice szolgltatsra pl kliensalkalmazs megvalstst Android platformon.
5/22/2018 Android Prog
6/67
6
2. Android platform2.1. Mi is az az Android?Az Android platformot az Open Handset Alliance (OHA) konzorcium, egy multinacionlis
szvetsg hozta nyilvnossgra 2007. november 12.-n. Az OHA a vezetmobil- s technolgiai
trsasgok egy csoportja, melynek eddig sszesen nyolcvan hardver, szoftver s
telekommunikcis cg a tagja, mint pldul a Google, LG, Samsung, Vodafone.
Az Android platform az alapoktl kezdve plt fel, hogy lehetsget biztostson a fejlesztknek
olyan j s innovatv mobil alkalmazsok ltrehozsra, melyek kihasznljk az internet
csatlakozsra kpes eszkzk sszes elnyt.Az Android platform magba foglalja a Dalvik virtulis gpet, hogy maximalizlja az
alkalmazsok teljestmnyt, a hordozhatsgot s a biztonsgot, tovbb optimalizlja a
memria s a hardver erforrsokat mobil krnyezetben.
Az Android SDK gazdag eszkztrval lehetv teszi a fejlesztknek az alkalmazsok
fejlesztst erre a platformra. Ide tartoznak a specilis fejleszt s hibakeres eszkzk, gazdag
knyvtrak, egy igazi eszkz emultor, rszletes dokumentci, minta projektek s tmutatk. A
fejlesztk zkkenmentes munkjt egy Eclipse plugin segti, mely ezeket az eszkzket
integrlja az Eclipse integtegrlt fejleszteszti krnyezethez.
Az Android elretrsnek legnagyobb nyertesei a ktsgtelenl kszlkgyrtk. 2009-ben a
vilggazdasgi vlsgnak ksznheten rezheten cskkentek az eladsok, viszont a Gartner
Inc., a vilg vezet informci- technolgiai kutat s tancsad trsasga szerint a mobil
kszlkekbl 2010-ben vilgviszonylatban kzel 1,6 millird db-ot adtak el, amely a 2009-es
adatokhoz kpest 31,8% nvekedst jelent. Ezen bell az okostelefon eladsok 2010-ben 72,1%-
kal nvekedtek az elz vhez kpest, az sszes 2010-ben eladott mobil kszlk 19%-a (297
milli darab) okostelefon volt.
5/22/2018 Android Prog
7/67
7
Mobil kszlkek eladsai vilgviszonylatban 2010-ben (ezer darab):
Gyrt cg 2010 eladottmennyisg
2010 piacirszeseds (%)
2009 eladottmennyisg
2009 piacirszeseds (%)
Nokia 461 318,2 28,9 440 881,6 36,4Samsung 281 065,8 17,6 235 772,0 19,5LG Electronics 114 154,6 7,1 121 972,1 10,1Research In Motion 47 451,6 3,0 34 346,6 2,8Apple 46 598,3 2,9 24 889,7 2,1Sony Ericsson 41 819,2 2,6 54 956,6 4,5Motorola 38 553,7 2,4 58 475,2 4,8ZTE 28 768,7 1,8 16 026,1 1,3HTC 24 688,4 1,5 10 811,9 0,9Huawei 23 814,7 1,5 13 490,6 1,1Tbbi 488 569,3 30,6 199 617,2 16,5sszesen 1 596 802,4 100,0 1 211 239,6 100,0
Forrs: Gartner (2011 februr)
Az okostelefonok piaca tovbbra is a fejlett orszgokban koncentrldik, ahol a vevk jvedelme
nagyobb s ahol a hlzatok elg gyorsak ahhoz, hogy maradktalanul ki lehessen hasznlni az
okostelefonok tudst. Ez magyarzza azt, hogy 2010. negyedik negyedvben az okos telefoneladsok 52,3%-a, valamint az sszes mobiltelefon rtkestsek kzel fele Nyugat-Eurpban s
szak-Amerikban trtnt. Az ers verseny 2010 v vgre elrte az okostelefon piac legnagyobb
szereplit is.
Okos telefonok eladsai vilgviszonylatban 2010-ben opercis rendszer szerint (ezer darab):
Opercis rendszer2010 eladott
mennyisg2010 piaci
rszeseds (%)2009 eladott
mennyisg2009 piaci
rszeseds (%)
Symbian 111 576,7 37,6 80 878,3 46,9Android 67 224,5 22,7 6 798,4 3,9BlackBerry 47 451,6 16,0 34 346,6 19,9iOS 46 598,3 15,7 24 889,7 14,4Windows 12 378,2 4,2 15 031,0 8,7Tbbi 11 417,4 3,8 10 432,1 6,1sszesen 296 646,6 100,0 172 376,1 100,0
Forrs: Gartner (2011 februr)
5/22/2018 Android Prog
8/67
8
Az okos telefon piacon az Androidos kszlkek eladsa 888,8%-al nvekedett 2009-hez kpest
s gy piaci rszeseds szempontjbl a 2010-ben a msodik helyre kerlt. A Nokia tovbbra is alegnagyobb okostelefon-gyrt, hiszen a Symbian szinte teljes egszben az kszlkeiben
tallhat meg.
Az Android tbb gyrt termkben is megjelenik. A kt legnagyobb a Samsung s a HTC - ezek
egytt adtk 2010-ben az sszes Androidos kszlk forgalmnak csaknem felt. A
www.unwiredview.com szerint csak a Samsung az eladsok 34%-t tudhatta magnak, ezzel a
Google legfbb partnerv vlt.
sszessgben elmondhat, hogy a Google opercis rendszert felhasznl gyrtk profitltak az
Android elterjedsbl, mivel a LG, Samsung, HTC okos telefonokbl szrmaz forgalma
jelents nvekedst mutatott, radsul a cscskszlkeken kvl a kzpkategris termkek
eladsa is emelkedett a Canalys elemzcg szerint.
Az elemzcgek 2011-re is kilezett versenyt jsolnak a gyrtk, valamint a mobil opercis
rendszerek kztt.
2.1.1. Sajtossgok Alkalmazs keretrendszer:a komponensek cserjhez s jrafelhasznlshoz Dalvik virtulis gp:mobileszkzkre optimalizlva Integrlt bngsz: nylt forrs WebKit motorra ptve Optimalizlt rajzols:a 2D rajzolshoz egyedi grafikus knyvtrat biztost; a 3D rajzols az
OpenGL ES 1.0 specifikcira pl (opcionlis hardver gyorstssal)
SQLite:a strukturlt adattrolshoz Mdia tmogats:tmogatja az sszes elterjedt audio, video s kpformtumot (MPEG4,
H.264, MP3, AAC, AMR, JPG, PNG, GIF)
GSM Telephony:(hardver fgg) Bluetooth, EDGE, 3G s WiFi:(hardver fgg) Kamera, GPS, irnyts gyorsulsmr:(hardver fgg)
5/22/2018 Android Prog
9/67
9
Gazdag fejleszti krnyezet:magban foglalja a telefon emultort, a nyomkvetshezszksges eszkzket, memria- s teljestmnymrst, tovbb az Eclipse IDE-hezszksges plugint.
2.1.2. ArchitektraAz albbi kp az Android opercis rendszer fkomponenseit brzolja, melyek ksbb rszletes
bemutatsra kerlnek.
2.1.3. AlkalmazsokAz Android eleve tartalmaz egy alkalmazs alapcsomagot, tbbek kztt egy levelez klienst,
SMS programot, naptrt, trkpeket, bngszt, nvjegyzk kezelt, s sok mst. Az
alkalmazsok Java programozsi nyelven kszltek.
5/22/2018 Android Prog
10/67
10
2.1.4. Alkalmazs keretrendszerA nylt fejleszti krnyezettel az Android lehetsget biztost a fejlesztknek, hogy a lehetlegmagasabb sznvonal s innovatv alkalmazsokat ksztsenek. A fejlesztk szabadon
kihasznlhatjk az adott eszkz hardware kpessgeit, hozzfrnek az sszes informcihoz,
futtathatnak httrszolgltatsokat, riasztsokat llthatnak be, zeneteket rhatnak ki a fejlcre, s
mg sok-sok mst.
A fejlesztk teljes hozzfrssel rendelkeznek a mag-alkalmazsok ltal hasznlt keretrendszer
API-khoz. Az alkalmazs architektra tervezse sorn elsdleges szempont volt a komponensek
egyszer jrafelhasznlhatsga; brmely alkalmazs publiklhatja a sajt kpessgeit, s
brmely ms alkalmazs ignybe veheti azokat (a keretrendszer ltal meghatrozott biztonsgi
elrsok figyelembe vtelvel). Ugyanez a mechanizmus teszi lehetv a felhasznlk szmra a
komponensek cserjt.
Az alkalmazsok htterben tallhat jpr szolgltats s rendszer, mint pldul:
Alkalmazsfejlesztshez hasznlt Nzetek egy sokrt s bvthet halmaza, idertve alistkat, tblzatokat, rcsokat, szvegdobozokat, gombokat, vagy akr a begyazhatbngszt is.
Tartalom szogltatk, melyeknek segtsgvel az alkalmazsok ms alkalmazsok adataihozfrhetnek hozz (pldul a Nvjegyzk), vagy megoszthatjk sajt adataikat.
Erforrs kezel, forrskdon kvli erforrsok elrshez, mint pldul adott nyelv(lokalizlt) stringek, grafikk, stb.
rtests kezel, aminek segtsgvel az alkalmazsok sajt rtestseket, figyelmeztetseketjelenthetnek meg az informcis svon.
Tevkenysg kezel, ami az alkalmazsok letciklust vezrli s egy kzs navigcisfelletet biztost.
5/22/2018 Android Prog
11/67
11
2.1.5. KnyvtrakAz Android tartalmaz egy C/C++ knvtrat, amit az Android rendszer tbb komponense ishasznl. Ezeket a lehetsgeket az Android alkalmazs keretrendszeren keresztl rhetik el a
fejlesztk. A plda kedvrt felsorolunk nhny alapknyvtrat:
C Rendszerknyvtr az alap C rendszerknyvtr (libc) egy BSD-szrmaztatottimplementcija, Linux alap begyazott rendszerekre hangolva.
Mdia Knyvtrak PacketVideo OpenCORE alap; a knyvtrak tmogatjk a legtbbelterjedt audio- s video- formtum visszajtszst s rgztst, akrcsak a legtbb
kpformtumot, mint pldul: MPEG4, H.264, MP3, AAC, AMR, JPG, vagy PNG.
Fellet Manager a megjelentalrendszerhez trtnhozzfrseket manageli, sfolyamatosan kezeli a klnbzalkalmazsok ltal ellltott 2D s 3D grafikus rtegek
akadlytalan megjelentst.
LibWebCore korszerinternetbngszmotor, amely egyarnt kiszolglja az Android s abegyazott bngszket.
SGL a 2D grafikus motor. 3D knyvtrak OpenGL ES 1.0 API-kra plimplementci; a knytrak vagy 3D
hardware gyorstst hasznlnak (ahol elrhet) vagy egy optimalizlt 3D szoftveres
raszterizert.
FreeType bitmap s vector bettpus renderel. SQLite robosztus s pehelysly relcis adatbzismotor, amely minden alkalmazs
szmra hozzfrhet.
2.1.6. Android futsi krnyezetAz Android tartalmaz egy alap knytrat, amely megvalstja a Java programozsi nyelv
funkcionalitsnak tlnyom rszt.
Minden Android alkalmazs sajt szlon fut s sajt Dalvik virtulis gp pldnnyal rendelkezik.
A Dalvik-ot gy rtk meg, hogy az eszkz tbb Virtulis Gpet is tudjon futtatni egyszerre
hatkonyan. A Dalvik VM (Virtual Machine Virtulis Gp) Dalvik Futtathat Fjl (.dex)
5/22/2018 Android Prog
12/67
12
formtumot futtatja, amit minimlis memriahasznlatra optimalizltak. A VM regiszter-alap,
s Java nyelvi fordtval ksztett osztlyokat futtat amelyeket .dex formtumra alaktottak akapcsold dx eszkzzel.
A Dalvik VM a Linux kernelre tmaszkodik az alacsonyszint funkcionalitssal kapcsolatban,
mint pldul a szlkezels vagy az alacsony szintmemriakezels.
2.1.7. Linux kernelAz Android a 2.6 Linux verzira pl a rendszerszolgltatsokkal kapcsolatban, mint a biztonsg,
memriakezels, szlkezels, hlzatkezels s meghajt modellek. A mag ezen fell
absztrakcis rtegknt is viselkedik a hardver/ s a szoftverrteg kztt.
2.2. Android alapelemekAz Android alkalmazsok Java programozsi nyelven kszlnek. Az Android SDK eszkzk
fordtjk le a forrskdot a szksges adat s nyersanyag fjlokkal egytt egy Android
csomagg, ami .apk kiterjesztssel rendelkezik. Egy .apk fjlban tallhat sszes kd egyetlen
alkalmazsnak minsl, ez az a fjl amit az Android eszkzk fel tudnak hasznlni arra, hogyteleptsg az alkalmazst.
Miutn felteleplek az eszkzre, minden Android alkalmazs a sajt biztonsgi homokozjban
(sandbox) l tovbb:
Az Android opercis rendszer egy tbbfelhasznls Linux rendszer, amiben mindenalkalmazs egy kln felhasznlknt jelenik meg.
Alaphelyzetben a rendszer minden alkalmazsnak oszt egy egyedi Linux felhasznl ID-t (eztaz ID-t csak a rendszer hasznlja, az adott alkalmazs nem ismeri a sajt ID-jt). A rendszer
lltja be a jogosultsgokat az alkalmazsban tallhat fjlokhoz, gy csak a megadott
felhasznl ID-vel rendelkezalkalmazsok rhetik el.
Minden folyamatnak sajt virtulis gpe (VM) van, gy egy adott alkalmazs kdjaelklntve fut az sszes tbbi alkalmazstl.
5/22/2018 Android Prog
13/67
13
Alaphelyzetben minden alkalmazs a sajt Linux folyamatt futtatja. Az Android elindtja afolyamatot, amikor az alkalmazs valamelyik komponenst futtatni kell, majd lelltja afolyamatot, amikor mr nincs r szksg vagy a rendszernek ms alkalmazsok szmra
memrit kell felszabadtania.
ly mdon az Android rendszer megvalstja a legkisebb jogosultsg elvt. Ez azt jelenti, hogy
alaphelyzetben minden alkalmazs csak a szmra szksges komponensekhez fr hozz, s
tbbhz nem. Ez egy nagyon biztonsgos krnyezetet teremt, amiben egy alkalmazs nem frhet
hozz a rendszer olyan rszeihez amihez nincs jogosultsga.
Ettl fggetlenl azonban van r md, hogy egy alkalmazs ms alkalmazsokkal osszon meg
adatokat vagy rendszerszolgltatsokat rjen el:
Megoldhat, hogy kt alkalmazs ugyanazt a Linux felhasznl ID-t hasznlja, gy ebben azesetben hozzfrhetnek egyms fjljaihoz. A rendszer erforrsok megfelel kihasznlsa
rdekben az ugyanolyan felhasznl ID-vel rendelkezalkalmazsok futhatnak ugyanazon a
Linux folyamaton s megoszthatjk ugyanazt a VM-et (az alkalmazsoknak ugyanazzal atanstvnnyal is kell rendelkeznik).
Egy alkalmazs engedlyt krhet arra, hogy eszkz adatokhoz frjen hozz, mint pldul anvjegyzk, SMS zenetek, felcsatolhat trolk (SD krtya), kamera, Bluetooth, stb. Minden
alkalmazs engedlyt a felhasznlnak kell megadnia teleptskor.
Ezzel le is fedtk az alapokat azzal kapcsolatban, hogy hogyan is ltezik egy Android alkalmazs
a rendszerben. A dolgozat htralvrszben bemutatjuk:
A belskeretrendszer komponenseket, amelyek meghatrozzk az alkalmazst. A manifest fjlt, amiben deklarljuk az alkalmazs szmra szksges komponenseket s
kszlk jellemzket.
Azokat az erforrsokat, amelyek elklnlnek az alkalmazs kdjtl, s lehetv teszik azalkalmazs szmra, hogy knnyedn optimalizlja a viselkedst a klnbz eszkz
konfigurcikon.
5/22/2018 Android Prog
14/67
14
Az alkalmazs komponensek az Android alkalmazsok alap ptkvei. Minden komponens egy
pont, amin keresztl a rendszer be tud lpni az adott alkalmazsba. Nem minden komponenstnyleges belpsi pont a felhasznl szmra, ezen fell egyes komponensek egymstl
fggenek, de mindegyik nll pldnyban ltezik s egy megszabott szerepet tlt be minden
szerep egyedi ptelem ami segt meghatrozni az alkalmazs ltalnos viselkedst.
Ngy alkalmazs komponens tpust klnbztetnk meg. Mindegyik tpus egy adott clt szolgl,
s adott letciklusa van, ami meghatrozza hogyan jn ltre a komponens s hogyan sznik meg.
Az alkalmazs komponensek ngy tpusa a kvetkez:
Activity Szolgltatsok Broadcast receiver-ek Tartalom szolgtatk
2.2.1. Activity-kEgy tevkenysg (Activity)egyetlen, felhasznli fellettel rendelkez kpernyt jelkpez.Pldul, egy email alkalmazsnak lehet egy tevkenysge, ami az j levelek listjt jelenti meg,
egy msik tevkenysg a levlrst valstja meg, egy msik tevkenysg pedig a levlolvasst
szolglja. Br a tevkenysgek egyttmkdve adnak ki egy teljeskr felhasznli lmnyt
(levelezklienst), alapveten egymstl fggetlenek. Ezek alapjn egy msik alkalmazs
elindthatja ezen tevkenysgek brmelyikt (amennyiben az email alkalmazs engedlyezi).
Pldul, egy kamera alkalmazs elindthatja a levelezalkalmazs j levl tevkenysgt, hogy a
felhasznl elkldhesse msoknak az adott fnykpet.
Egy tevkenysget az Activity osztlyt kiterjesztalosztlyknt lehet megvalstani.
2.2.1.1.Activity-k letciklusaA tevkenysgek letciklusnak kezelse callback (visszahv) metdusok implementlsval
ltfontossg egy robosztus s rugalmas alkalmazs fejlesztshez. Egy tevkenysg letciklust
5/22/2018 Android Prog
15/67
15
kzvetlenl befolysolja a ms tevkenysgekkel val kapcsolata, feladatai s httr verme (back
stack).
Egy tevkenysg alapveten hrom llapotban lehet:
Fut (Resumed): A tevkenysg a kijelzeltern van s birtokolja a felhasznli fkuszt.(Ezt az llapotot fut (running) llapotnak is szoktk nevezni)
Felfggesztett (Paused):Egy msik tevkenysg van a kijelzeltern felhasznli fkusszal,de ez a tevkenysg tovbbra is lthat. Azaz, egy msik tevkenysg lthat erre a
tevkenysgre rrajzolva, de az a tevkenysg vagy rszlegesen ttetsz
vagy nem fedi le ateljes kijelzt. Egy felfggesztett tevkenysg teljes mrtkben l (az Activity objektum a
memriban marad, megtartja az sszes llapot- s taginformcijt, s csatlakozva marad az
ablakkezelhz), de a rendszer elpusztthatja kritikusan alacsony memriaszint esetn.
Lelltott (Stopped): A tevkenysget teljes mrtkben lefedi egy msik tevkenysg (atevkenysg most a httrben van). Egy lelltott tevkenysg tovbbra is l (az Activity
objektum a memriban marad, megtartja az sszes llapot- s taginformcijt, de nem
csatlakozik az ablakkezelhz). Ugyanakkor mr nem lthat a felhasznl szmra, gy a
rendszer brmikor elpusztthatja az objektumot, ha mshol van szksg az ltala lefoglalt
memriaterletre.
Ha egy tevkenysg felfggesztett vagy lelltott, a rendszer eltvolthatja a memribl vagy
gy, hogy megkri, fejezze be a mkdst (meghvja a finish() metdust) vagy egyszeren
lelltja a folyamatt. Amikor egy tevkenysget jra megnyitunk (miutn befejezdtt vagy
elpusztult), jra ltre kell hozni.
sszevetve ezeket a metdusok hatrozzk meg egy tevkenysg teljes letciklust. Ezen
metdusok megvalstsval hrom begyazott ciklust kvethetnk nyomon a tevkenysg
letciklusban:
Ateljes letciklusaegy tevkenysgnek az onCreate() s az onDestroy() metdusokmeghvsa kztt zajlik. Az adott tevkenysgnek egy globlis llapot belltst kellene
vgrehajtania (pldul a grafikus elemek elrendezse) az onCreate()metdusban, s minden
5/22/2018 Android Prog
16/67
16
erforrst el kell engednie az onDestroy() metdusban. Pldul, ha a tevkenysg a httrben
futtat egy szlat adatok letltsre a hlzatrl, akkor illik, hogy az onCreate()ben hozzaltre, s az onDestroy()-ban sznteti meg azt a szlat.
A lthat letciklusaegy tevkenysgnek az onStart() s az onStop()metdusok meghvsakztt zajlik. Ez id alatt a felhasznl ltja a tevkenysget a kijelzn s kommuniklhat
vele. Pldul, az onStop() meghvsra kerl, amikor egy j tevkenysg indul s ez mr nem
lthat. A fenti kt metdus kztt megtarthatjuk a szksges erforrsokat ahhoz, hogy
megjelentsk a felhasznl szmra a tevkenysget. Pldul, regisztrlhatunk
egy BroadcastReceiverobjektumot az onStart()metdusban, hogy nyomon kvessk azokata vltozsokat, amelyek hatssal vannak a felhasznli felletre (UI User Interface). Majd
felszabadthatjuk az objektumot az onStop() metdusban, amikor a felhasznl mr nem
lthatja, amit megjelentnk. A rendszer tbbszr is meghvhatja az
onStart()s onStop()metdusokat egy tevkenysg teljes letciklusa sorn, mivel a
tevkenysg vltogathat a felhasznl szmra lthat s nem lthat llapotai kztt.
Az eltr letcilusaegy tevkenysgnek az onResume()s az onPause() metdusokmeghvsa kztt zajlik. Ez id
alatt a tevkenysg minden ms tevkenysg el
tthelyezkedik el a kijelzn s birtokolja a felhasznli fkuszt. Egy tevkenysg gyakran
kerlhet ki s be az eltrbe pldul, az onPause()metdust kerl meghvsra, amikor az
eszkz alv zemmdba vlt, vagy amikor megjelenik egy prbeszdablak. Mivel ez az
llapot gyakran vltozik, a fenti kt metdus kztt kd lehetleg kicsi legyen a lass
vltsok s a felhasznli vrakozs elkerlse vgett.
5/22/2018 Android Prog
17/67
Az albbi bra bemutatj
tvonalakat az llapotok kmegvalsthatjuk a tevk
tmenet sorn.
17
ezeket a ciklusokat s a tevkenysg
ztt. A tglalapok visszahv metdusokatnysg ltal vgrehajtand utastsokat az
ltal bejrhat klnbz
szimbolizlnak, amikbenegyes llapotok kztti
5/22/2018 Android Prog
18/67
18
A fenti visszahvs metdusok megtallhatak az albbi tblzatban is, amely rszletesebben
lerja az egyes metdusok mkdst s helyt egy tevkenysg teljes letciklusban, illetve,hogy a rendszer megszntetheti-e a tevkenysget miutn a visszahvs metdus futsa
befejezdik.
Metdus Lers Ezutnmegszn-tethet?
Kvetkez
onCreate() A tevkenysg ltrehozsakor hvdikmeg. Itt kell az sszes normlis statikus
belltst elvgezni nzetek ltrehozsa,adatok listkhoz ktse, stb. Ez a metdusmegkap egy Bundle objektumot, amely atevkenysg elz llapott tartalmazza,amennyiben az rgztsre kerlt(lsd Tevkenysg llapotok Trolsa,fejezet).Minden esetben az onStart() metduskveti.
Nem onStart()
onRestart() Egy lelltott tevkenysg jra elindtsaeltt kzvetlenl kerl meghvsra.Minden esetben az onStart() metduskveti.
Nem onStart()
onStart() Egy tevkenysg a felhasznl szmralthatv vlsa eltt kzvetlenl kerlmeghvsra.Az onResume()metdus kveti, ha atevkenysg az eltrbe kerl, vagyaz onStop()ha rejtett vlik.
Nem onResume()vagyonStop()
onResume() Kzvetlenl az eltt kerl meghvsramieltt egy tevkenysg interaktvv vlnaa felhasznl szmra. Ezen a ponton atevkenysg a tevkenysg-verem tetejnvan, s felhasznli inputot fogad.Minden esetben az onPause() metduskveti.
Nem onPause()
onPause() Akkor kerl meghvsra, mikor a rendszeregy msik tevkenysget kszl folytatni(jraindtani). Ennek a metdusnak atipikus felhasznlsa az el nem mentett
Igen onResume()vagyonStop()
5/22/2018 Android Prog
19/67
19
Metdus Lers Ezutn
megszn-tethet?
Kvetkez
vltozsok elmentse perzisztens adatt,animcik lelltsa s ms dolgok amik aprocesszor erforrst foglalhatjk, stb.Brmit is tesz azonban, azt j ha nagyongyorsan teszi, mert a kvetkeztevkenysg nem kerl tnylegesenfolytatsra (jraindtsra) amg ez ametdus vissza nem tr.Az onResume() metdus kveti
amennyiben a tevkenysg visszatr azeltrbe, vagy az onStop() ha a felhasznlszmra lthatatlann vlik.
onStop() Ez a metdus akkor kerl meghvsra,mikor a tevkenysg mr nem lthat afelhasznl szmra. Ez trtnhet azrt,mert a tevkenysg objektum megsznik,vagy mert egy msik tevkenysg (akr j,akr mr ltez) jraindtsra kerlt seltakarja a kijelzn.Az onRestart() metdus kveti, ha atevkenysg visszatr a felhasznlszmra interaktv llapotba, vagyaz onDestroy()ha a tevkenysg vglegmegsznni kszl.
Igen onRestart()vagyonDestroy()
onDestroy() A tevkenysg megsznsekor kerlmeghvsra. Ez a legutols hvs amit atevkenysg megkap. Trtnhet azrt,mert a tevkenysg befejezdik (valakimeghvta r a finish()metdust), vagymert a rendszer tmenetileg megsznteti a
tevkenysg pldnyt, hogy trhelyetszabadtson fel. A kt vltozat kztt azisFinishing() metdus segtsgvel tudunkklnbsget tenni.
Igen semmi
Az "Ezutn megszntethet?" oszlop azt mutatja, hogy a rendszer megszntetheti-e a
tevkenysget kiszolgl folyamatot brmikor az adott visszahv metdus lefutsa utn anlkl,
5/22/2018 Android Prog
20/67
20
hogy akr a tevkenysg egyetlen tovbbi sor kdjt is vgrehajtan. Hrom metdus kapott
Igen cmkt: (onPause(), onStop(), s onDestroy()). Mivel az onPause() az els ebbl ahrmasbl, miutn a tevkenysg pldny ltrejn, az onPause() lesz az a metdus amely
garantltan meghvsra kerl mieltt a folyamatot meg lehet szntetni. Amennyiben a
rendszernek vszhelyzet esetn memrit kell felszabadtani, akkor az onStop() s onDestroy()
metdusok lehet, hogy nem is kerlnek meghvsra. Ebbl kifolylag javasolt
az onPause()metdusban elhelyezni minden fontos perzisztens adat (pldul felhasznli adatok)
eltrolsra vonatkoz kdot. Ugyanakkor rdemes nagyon jl megvlogatni, hogy mit kell
az onPause()segtsgvel eltrolni mert brmilyen hossz, blokkol eljrs ebben a metdusban
blokkolja a kvetkeztevkenysgre val tvltst, s lasstja a felhasznli lmnyt.
Az "Ezutn megszntethet?" oszlopban Nem cmkvel elltott metdusok megvdik a
tevkenysget kiszolgl folyamatot a megszntetssel szemben attl a pillanattl kezdve, hogy
meghvsra kerltek. gy egy tevkenysg az onPause()visszatrse s az onResume() meghvsa
kztt megszntethet, de egszen addig vdettsget lvez, amg az onPause() jra meghvsra
nem kerl s lefut.
2.2.2. SzolgltatsokEgy szolgltatsegy olyan komponens, amely a httrben fut s hossztv mveleteket vgez,
vagy tvoli folyamatok szmra dolgozik. Egy szolgltats nem nyjt felhasznli felletet.
Pldul, egy szolgltats zent jtszhat le a httrben, amg a felhasznl egy msik
alkalmazsban van, vagy adatot tlt le a hlzatrl anlkl, hogy a felhasznlt akadlyozn ms
tevkenysgek hasznlatban. Egy msik komponens, pldul egy tevkenysg, elindthat egy
szolgltatst s hagyhatja futni, vagy r is csatlakozhat, hogy kommunikljon vele.
2.2.3. Broadcast receiver-ekEgy zenetszrs fogad (broadcast receiver) egy olyan komponens, amely rendszer-szint
broadcast zenetekre reagl. A legtbb zenetszrs (broadcast) a rendszertl ered pldul egy
ilyen zenetszrs jelezheti, hogy a kijelz kikapcsolsra kerlt, alacsony az akkufeszltsg,
vagy fnykp kszlt. Az alkalmazsok is kezdemnyezhetnek zenetszrst pldul, hogy
5/22/2018 Android Prog
21/67
21
ms alkalmazsokkal tudassk, hogy valamilyen adat letltsre kerlt az eszkzre s elrhetvlt
szmukra. Br az zenetszrs fogadk nem jelentenek meg felhasznli felletet, a sttuszmezre (status bar) rhatnak, hogy figyelmeztessk a felhasznlt, amikor egy zenetszrs
esemny trtnik. Gyakoribb azonban, hogy egy zenetszrs fogad csak egyszer tjr
(gateway) ms komponensekhez, s csak nagyon minimlis munka elvgzsre terveztk. Pldul
elindthat egy szolgltatst, ami majd elvgzi a megfelelmunkt egy esemny bekvetkeztekor.
2.2.4. Tartalom szolgltatkEgy
tartalomszolgltat (content provider) alkalmazs adatok egy megosztott halmazt kezeli.
Adatot trolhatunk a fjlrendszerben, egy SQLLite adatbzisban, a weben, vagy brmely ms
perzisztens trhelyen amit az alkalmazsunk elr. A tartalomszolgltatn keresztl ms
alkalmazsok lekrdezhetik vagy akr mdosthatjk is az adatokat (amennyiben a
tartalomszolgltat engedi ezt). Pldul, az Android rendszer rendelkezsre bocst egy
tartalomszolgltatst, amely a felhasznl nvjegyzk adatait kezeli. Ennek segtsgvel brmely,
megfelel jogosultsggal rendelkez alkalmazs megkrheti a tartalomszolgltatt (mint a
ContactsContact.Data) hogy rja vagy olvassa egy adott szemly kapcsolatinformciit.
A tartalomszolgltatk hasznosak az alkalmazs szmra kizrlagos (nem megosztott) adatok
olvassra/rsra is.
Egy tartalomszolgltatt a ContentProvider alosztlyaknt kell megvalstani, tovbb
implementlnia kell API-k egy szabvnyos halmazt is amely ms alkalmazsok szmra ad
lehetsget tranzakcik vgrehajtsra.
2.2.5. Intent-ek s intent szrkEgy alkalmazs kzponti komponensei kzl hrmat tevkenysgek, szolgltatsok s
zenetszrs fogadk zenetekkel, intent-ekkel (intent szndk) aktivlhatunk. Az intent
zenet egy olyan megolds, amellyel ksi, futsi idej kts kpezhet az egy alkalmazson
belli, vagy pp klnbz alkalmazsok komponensei kztt. Az intent maga, ami
Intent objektum, egy passzv adatstruktra, ami a vgrehajtand mvelet absztrakt lerst
tartalmazza vagy gyakran zenetszrsok esetn, valami megtrtntnek a lerst tartalmazza,
5/22/2018 Android Prog
22/67
22
amit a rendszer gy kzztesz. A klnbz tpus komponensek szmra klnfle
mechanizmusok lteznek az intentek clbajuttatsra:
Egy Intent objektum kerl tadsra aContext.startActivity() vagy Activity.startActivityForResult() metdusoknak, ha egy j
tevkenysg indtsra vagy egy mr ltez tevkenysg valamilyen j mveletnek
elindtsra van szksg. (az objektumot az Activity.setResult() metdusnak is t lehet adni,
hogy a startActivityForResult()metdust tevkenysg szmra adjunk vissza informcit.)
Egy Intent objektum kerl tadsra a Context.startService() metdusnak, hogy elindtsunkegy szolgltatst vagy egy mr ltez szolgltats szmra j utastsokat adjunk.
Hasonlkpp, az intent objektumot a Context.bindService()metdusnak is tadhatjuk a hv
komponens s a clszolgltats kztti kapcsolat kialaktsra. Opcionlisan magt a
szolgltatst is elindthatja, ha az mg nem fut.
Intent objektumot brmilyen zenetszr metdusnak is tadhatunk (pldulContext.sendBroadcast(), Context.sendOrderedBroadcast() ,
vagy Context.sendStickyBroadcast() ), amit aztn minden rintett zenetszrs fogad
megkap. Sokfle zenetszrs a rendszerkdbl szrmazik.
A fenti esetek mindegyikben az Android rendszer megkeresi a megfelel tevkenysget,
szolgltatst vagy zenetszrs fogadk halmazt, ami az intentre vlaszol, s pldnyostja is
azokat, amennyiben szksges. Nincs tfeds ezen zenetkzvett rendszerek kztt: Az
zenetszrs intenteket csak zenetszrs fogadkhoz tovbbtja, s soha nem tevkenysgekhez
vagy szolgltatsokhoz. A startActivity() metdusnak tadott intent csak egy tevkenysghez
kerlhet, s soha nem szolgltatshoz, vagy zenetszrs fogadhoz, stb.
A kvetkez oldalakon az Intent objektumok lersa tallhat. Azutn azokat a szablyokat
mutatjuk be, amelyeket az Android alkalmaz az intentek komponensekre val lekpezshez
hogyan tallja meg, hogy melyik intent zenetet melyik komponensnek kell megkapnia. Azokat
az intenteket amelyek nem mondjk meg explicit mdon, hogy mi a clkomponensk, ez az
eljrs teszteli le intent szrkkel, hogy megtallja a lehetsges clpontjaikat.
5/22/2018 Android Prog
23/67
23
Intent Objectumok
EgyIntentobjektum nem ms, mint adatok egy halmaza. Olyan informcikat tartalmaz,amelyek az intent objektumot megkap komponens szmra rdekesek (pl. a vgrehajtand
mvelet vagy feldolgozsra vr adat cme). Ezen fell tartalmaz az Android rendszer szmra
lnyeges informcikat is (pl. az intent clpontjul szolgl komponens kategrija, vagy a
cltevkenysg elindtsra szolgl utastsok).
Egy intent szr az IntentFilterosztly egy pldnya. Mivel azonban az Android rendszernek
ismernie kell az adott komponens tulajdonsgait mieltt el tudja azt indtani, az intent szrket
ltalban nem a Java kdban inicializljk, hanem az alkalmazs manifest fjljban,
(AndroidManifest.xml) elemekben. (Az egyetlen kivtel ez all az zenetszrs
fogadkra vonatkoz szrk, amelyeket dinamikusan regisztrlhatunk a
Context.registerReceiver() hvsknt, IntentFilterosztly pldnyostssal.)
Egy szregyarnt tartalmaz egy Intent objektum mveletre, adatra s kategrijra vonatkoz
mezket. Egy implicit intentet mindhrom terleten megvizsglunk a szrvel. Ahhoz, hogy a
szrt birtokl komponens megkapja az Intent objektumot, mindhrom teszten t kell mennie. Ha
csak az egyiken is elbukik, az Android rendszer nem fogja tadni az Intent objektumot a
komponensnek legalbbis nem az adott szralapjn. Ugyanakkor, mivel egy komponensnek
tbb szrje is lehet, attl hogy az intent objektum fennakad a komponens egyik szrjn, mg
tmehet egy msikon.
A kvetkezkben rszletesen bemutatjuk a hrom tesztet:
5/22/2018 Android Prog
24/67
24
Mvelet teszt
A manifest fjlban tallhat elem a mveleteket alelemekknt sorolja fel.Pldul:
...
Ahogy a plda is mutatja, mg egyIntentobjektum csak egyetlen mveletet nevez meg, egy szr
akr tbbet is megnevezhet. A lista nem lehet res; egy szrnek legalbb egy elemet
tartalmaznia kell, vagy minden intent objektumot blokkolni fog.
Ahhoz, hogy az Intent objektum tmenjen ezen a teszten, a mveletnek meg kell egyeznie a
szrben felsorolt mveletek egyikvel. Amenyiben az objektum vagy a szr nem ad meg
tevkenysget, az eredmny az albbiak szerint alakul:
Ha a szr nem tartalmaz mveleti listt, az intent objektum mvelete semmivel sem tudmegegyezni, gy minden intent objektum el fog bukni a teszten. Egyetlen intent objektum
sem fog tmenni a szrn.
Msrszt, ha az Intent objektum nem ad meg mveletet, akkor automatikusan tmegy ateszten amennyiben a szrlegalbb egy mveletet tartalmaz.
Kategria teszt
Az elem kategrikat is felsorol alelemknt. Pldul:
...
5/22/2018 Android Prog
25/67
25
Ahhoz, hogy egy intent objektum tmenjen a kategria teszten, az objektumban tallhat sszes
kategrinak meg kell egyeznie a szrben megadott kategrik valamelyikvel. A szrtartalmazhat tovbbi kategrikat, de az intent egyetlen kategrijt sem hagyhatja ki.
Elvileg gy egy kategrik nlkli Intentobjektumnak mindig t kellene mennie a teszten, a szr
tartalmtl fggetlenl. Ez javarszt igaz is. Azonban, egyetlen kivtellel, az Android minden, a
startActivity()metdusnak tadott implicit intentet gy kezel, mintha azok legalbb egy
kategrival rendelkeznnek: "android.intent.category.DEFAULT "
(aCATEGORY_DEFAULTconstans). gy az implicit intent objektumok fogadsra hajland
tevkenysgek szrinek tartalmaznia kell az "android.intent.category.DEFAULT " elemet. (Az
"android.intent.action.MAIN " s "android.intent.category.LAUNCHER " belltsokat tartalmaz
szrk kivtelek. Ezek olyan tevkenysgeket jellnek amelyek j feladatok kezdenek s az
inditkpernyn jelennek meg. Tartalmazhatjk az "android.intent.category.DEFAULT " rtket
is a kategria listban, de nem szksges.)
Adat teszt
Akrcsak a mveletek s kategrik esetben, az adat specifikcik is alelemknt jelennek meg a
szrben. s csakgy, mint a fenti kt esetben, itt is tbb alelem szerepelhet a listban, vagy akr
nulla is. Pldul:
...
Mindenelem egy URI-t s egy adat tpust (MIME mdia tpus) ad meg. Az URI mindenrsznek kln attribtuma van scheme, host, port, and path :
scheme://host:port/path
Pldul, az albbi URI-ban,
content://com.example.project:200/folder/subfolder/etc
5/22/2018 Android Prog
26/67
26
a scheme (sma) "content", a host az "com.example.project", a port "200", s a path (tvonal)
pedig "folder/subfolder/etc". A host s a port egytt adja meg az URI hatskrt; amennyibennincs host megadva, akkor a port figyelmen kvl marad.
Az attribtumok mindegyike opcionlis, de egymstl nem fggetlenek: Ahhoz, hogy egy
hatskr rtelmes legyen, a smt is meg kell adni. Ahhoz, hogy az tvonal rtelmes legyen, a
smt s a hatskrt egyarnt meg kell adni.
Amikor egy Intent objektum URI-ja sszehasonltsra kerl egy szr URI specifikcijval,
voltakppen a szrben tnylegesen megadott URI attribtumok kerlnek sszehasonltsra.
Pldul, ha a szrcsak a smt adja meg, akkor a megfelelsmval rendelkezsszes URI t
fog menni a teszten. Ha a szregy smt s hatskrt ad meg, de tvonalat nem, az sszes URI
t fog menni a teszten, ha megfelel smval s hatskrrel rendelkezik, tvonaltl fggetlenl.
Ha a szr smt, hatskrt s tvonalat egyarnt megad, akkor csak az ugyanolyan smval,
hatskrrel s tvonallal rendelkez URI-k fognak tmenni. Ugyanakkor, egy tvonal
specifikci tartalmazhat joker karaktereket is, ha csak rszleges tvonal illeszkedsre van
szksg.
A elem type attribtuma adja meg az adat MIME tpust. Ez jval gyakoribb a szrkben,
mint az URI hasznlata. Az Intent objektum s a szregyarnt hasznlhat "*" joker karaktert az
altpus mezben pldul "text/*" vagy "audio/*" altpus egyezsekhez.
Az adat teszt egyarnt sszehasonltja az URI-t s az adattpust is az Intentobjektum s a szr
kztt. A szablyok a kvetkezk:
a. Az az Intent objektum, amely nem tartalmaz sem URI-t sem adat tpust csak abban azesetben megy t a teszten, ha az sem tartalmaz semmilyen URI-t vagy adat tpust.
b.Az az Intent objektum, amely tartalmaz URI-t de nem tartalmaz adat tpust (s nem is lehetkikvetkeztetni az URI-bl valamilyen tpust) csak abban az esetben megy t a teszten, ha az
URI-ja megegyezik a szrben megadott URI-k valamelyikvel s a szr szintn nem
tartalmaz egyetlen tpus specifikcit sem. Ez az eset fog bekvetkezni
a mailto:s tel:tpus URI-knl, amelyek nem hivatkoznak tnyleges adatra.
5/22/2018 Android Prog
27/67
27
c. Az az Intentobjektum, amely tartalmaz adat tpust, de nem tartalmaz URI-t csak abban azesetben megy t a teszten, ha a szr ugyanazt az adattpust felsorolja, s nem tartalmazsemmilyen URI-t.
d.Az az Intent objektum, amely egyarnt tartalmaz URI-t s adat tpust (vagy az adat tpuskikvetkeztethetaz URI-bl) csak abban az esetben megy t a teszten, ha a szrfelsorolja
magban az adott adat tpust. tmegy a teszt URI rszn akkor is ha az URI-ja megegyezik a
szrben felsorolt URI-k valamelyikvel, vagy egy content:vagy file:URI-t tartalmaz s a
szr nem tartalmaz egyetlen URI-t sem. Ms szval, egy komponensrl azt felttelezi a
rendszer, hogy tmogatja a content:s file:adatokat ha a szrje csak adatpusokat sorol fel.Ha egy intent tbb tevkenysg vagy szolgltats szrjn is tmegy, akkor a felhasznl
szmra is rkezhet krds, hogy melyik komponenst szeretn aktivlni. Ha egyetlen clpont sem
tallhat, kivtel keletkezik.
ltalnos esetek
Az adat tesztben lert utols szably (d. szably) azt az elvrst tkrzi, hogy a komponensek
kpesek loklis adatok fogadsra fjlbl vagy tartalomszolgltattl. gy a szriknek elg hacsak egy adattpust adnak meg, s nem szksges explicit megneveznik a
content:s file:smkat. Ez egy tipikus eset. Mint pldul az albbi elem, ami azt mondja
meg az Androidnak, hogy a komponens kpes egy tartalomszolgltattl kpadatokat fogadni s
megjelenteni:
Mivel a legtbb elrhetadatot tartalomszolgltatk nyjtjk, taln a leggyakoribb szrk azok,
amelyek adattpust meghatroznak, de URI-t nem.
Egy msik gyakori konfigurci, ha a szrsmt s adat tpust tartalmaz. Az albbi elem
pldul azt mondja meg az Androidnak hogy a komponens kpes a hlzatrl video adatok
fogadsra s megjelentsre:
5/22/2018 Android Prog
28/67
28
Gondoljuk t pldul, hogy mit csinl egy bngsz alkalmazs, amikor a felhasznl rkattint
egy linkre a megjelentett weboldalon. Elszr megprblja megjelenteni az adatot (ami
sikerlne is, ha a link HTML oldalra mutatna). Ha nem tudja megjelenteni az adatot, sszellt
egy implicit intent objektumot a sma s adat tpussal, majd megprbl elindtani egy olyan
alkalmazst, ami el tudja vgezni a munkt. Ha nincs jelentkez, akkor megkri a letlts kezelt,
hogy tltse le az adatot. Az egy tartalomszolgltat fennhatsga al helyezi az adatot, gy
tevkenysgek egy feltehetleg nagyobb csoportja (azok, amelyeknek a szri csak adattpusokat
neveznek meg) vlaszolhat a feladatra.
2.3. AndroidManifest.xmlMieltt az Android rendszer elindthat egy tevkenysg komponenst, tudnia kell, hogy a
komponens ltezik azltal, hogy felolvassa az alkalmazsAndroidManifest.xmlfjljt (a
"manifest" fjlt). Az alkalmazsunknak minden komponenst deklarlnia kell ebben a fjlban,
aminek az alkalmazs knyvtrnak gykerben kell elhelyezkednie.
A manifest egy sor tovbbi dolgot is ellt az alkalmazs komponenseinek deklarlsn tl, mint
pldul:
Lerja az alkalmazs szmra szksges felhasznli jogosultsgokat, mint pldul azInternet elrs, vagy nvjegyzk-olvassi engedly.
Deklarlja az alkalmazs szmra szksges minimum API szintet, az alkalmazs alapjnhasznlt API-k alapjn.
Deklarlja az alkalmazs szmra szksges hardver s szoftver paramtereket, mint pldula kamera, bluetooth szolgltatsok, vagy multitouch kijelz.
Az alkalmazs szmra szksges API knyvtrakat (az Android keretrendszer API-kon tl),mint pldul a Google Maps knyvtr.
5/22/2018 Android Prog
29/67
29
Komponensek deklarlsa
A manifest fjl elsdleges feladata a rendszer tjkoztatsa az alkalmazs komponenseirl.
Pldul a manifest fjl a kvetkezkpp deklarlhat egy tevkenysget:
...
Az elemben az android:iconattribtum az alkalmazs ltal hasznlt ikont
lokalizlja.
Az elemben az android:nameattribtum az Activity osztlybl szrmaztatott alosztly
teljes minstett nevt tartalmazza, az android:labelattribtum pedig a tevkenysg a felhasznl
ltal lthat cmkt adja meg.
Egy alkalmazs sszes komponenseit az albbiak szerint kell deklarlni:
elemek az tevkenysgekhez elemek a szolgltatsokhoz elemek az zenetszrs fogadkhoz elemek a tartalomszolgltatkhoz
Azok a tevkenysgek, szolgltatsok s tartalomszolgltatsok, amelyeket meghivatkozunk a
forrskdunkban, de nem deklarlunk a manifest fjlban nem lthatak a rendszer szmra, gy
ebbl kifolylag soha nem futhatnak le. Ugyanakkor az zenetszrs fogadkat deklarlhatunk a
manifest fjlban vagy dinamikusan a forrskdban is (mint BroadcastReceiverobjektumok)
amiket registerReceiver() metdus hvsval regisztrlhatunk a rendszerben.
5/22/2018 Android Prog
30/67
30
2.4. Felhasznli felletEgy Android alkalmazs esetn a felhasznli fellet Views ViewGroupobjektumbl pl fel.Sokfle tpus nzet s nzetcsoport ltezik, melyeknek mindegyike a View osztly
leszrmazottja.
Az Android platform alap ptkvei a View objektumok. A View osztly a widget-eknek
nevezett alosztlyok se, amik teljesen implementlt UI (User Interface Felhasznli Fellet)
objektumok, mint egy szvegmez vagy gomb. A ViewGroup osztly pedig a layout-oknak
(elrendezseknek) nevezett alosztlyok se, amelyek klnfle elrendezsi stratgikat knlnak,
mint a lineris, tabulris, relatv elrendezs, stb.
Egy View objektum egy olyan adatstruktra, aminek mezi az elrendezsi paramtereket s a
kijelz egy megadott tglalap alap terletnek tartalmt tartalmazzk. Egy View objektum
kezeli a sajt mretezst, elrendezst, rajzolst, fkusz kezelst, grgetst, billenty/rints
kezelst a kijelz azon tglalap alap terletn, amelyet elfoglal. A felhasznli fellet
objektumaknt a View ugyanakkor a felhasznl s az eszkz kztti interakcis pont.
2.4.1. Megjelentelemek hieachijaAz Android platformon egy Tevkenysg (Activity) felhasznli fellett View s ViewGroup
csompontokkal hatrozhatunk meg, ahogy ezt a lenti bra is mutatja. Ez a hierarchia fa lehet
nagyon egyszer vagy akr nagyon bonyolult is az adott alkalmazstl fggen. Knnyedn
felpthetnk egyet az Android elre definilt widgetei s layoutjai, valamit a sajt magunk ltal
ltrehozott View-k segtsgvel.
5/22/2018 Android Prog
31/67
Ahhoz, hogy az adott vie
kell hvnia a setContentVi
Android rendszer megkapj
hierarchia gykr csompo
akik azutn meghvjk a
krhetnek pozcit s mre
egyes gyerekek mretrl
hierarchia fa tetejtl kez
kirajzolsi folyamat inord
terlete/pozcija tfedi eg
sszes alatta lvobjektu
Elrendezs
A legltalnosabb mdja
segtsgvel trtnik. Az
Minden elem az XML-b
leszrmazottja). A View o
(lsd fenn a View Hierarch
31
hierarchia ft hozzcsatoljon a kijelzhz
ew() metdust, amiben tadja a gykr cso
ezt a referencit, majd ezt felhasznlva mr
ntja megkri a gyermek csompontjait, hogy
sajt gyermekcsompontjaikat, s gy tovb
tet a szln bell, de a vgsdnts a szl
. Az Android inorder bejrssal rtkeli
ve), gy hozza ltre a View-kat s csatolj
er jellege miatt ha vannak olyan elemek
ymst, akkor a legutoljra kirajzoland obj
ot az adott terleten.
az definilsnak s a view herarchia me
XML egy ember ltal olvashat formtum
n vagy egy View vagy egy ViewGrou
jektumot a fa levlelemei, a ViewGroupo
ia brt).
, a Tevkenysgnek meg
mpont referencijt. Az
tezi s rajzolja ki a ft. A
rajzoljk meg nmagukat
. A gyerek csompontok
objektum kezben van az
i az egyes elemeket (a
hozz a szl(k)hz. A
a fban, amelyeknek a
ktum el fogja takarni az
adsnak egy XML fjl
ot nyjt, mint a HTML.
objektum (vagy annak
jektumok pedig a fa gai
5/22/2018 Android Prog
32/67
32
Egy XML elem neve a megfelel Java osztly nevt tkrzi. gy egy elem egy
TextView objektumot, mg egy elem egy LinearLayout viewgroup objektumothoz ltre a UI-n. Amikor betltnk egy elrendezst, az Android rendszer az elrendezs elemeinek
megfelelen inicializlja ezeket a futsi-idejobjektumokat.
Pldul, egy egyszerfggleges elrendezs egy text view-al s egy gombbal a kvetkezkppen
nz ki:
Figyeljk meg, hogy a LinearLayoutelem egyarnt tartalmazza a TextViews Buttonelemeket
is. Lehetsgnk van egy msik LinearLayout (vagy brmilyen ms view group tpus)
begyazsra is itt, ha nvelni szeretnnk a view hierarchit s sszetettebb elrendezseket
kszteni.
Felhasznli felletek ptsvel kapcsolatosan rszletesebb informcikat tall az Elrendezsek
Deklarlsa c. fejezetben.
Tipp:View s ViewGroup objektumokat Java kdbl is kirajzolhatunk az addView(View)
metdusokkal, amiknek segtsgvel dinamikusan adhatunk a nzethez j Views ViewGroup
objektumokat.
A view objektumaink elrendezshez tbbfle mdszer is ltezik. A klnbz view groupok
segtsgvel vgtelen szm lehetsgnk van a gyermek view s view groupok elrendezsre.
5/22/2018 Android Prog
33/67
33
Az Android ltal knlt elre definilt view groupok (amelyeket elrendezseknek neveznk) kz
tartozik a LinearLayout, RelativeLayout, TableLayout, GridLayout s msok. Ezek mindegyikeegyedi elrendezsi paramtereket knl, amelyek segtsgvel definilhatjuk a gyermek view-k
pozcijt s elrendezsi struktrjt.
Widget-ek
A widget egy View objektum, amely kapcsoldsi pontot nyjt a rendszer s a felhasznl
kztti interakcira. Az Android egy sor leimplementlt widget-et knl, pldul gombok,
szvegbeviteli mez
k, jell
ngyzetek, stb. formjban, amikkel gyorsan fel tudunk pteni egyfelhasznli felletet. Nhny sszetettebb, az Android ltal knlt widget pldul a dtum
kivlaszt, ra, vagy kicsinyts/nagyts funkcik. Termszetesen nem csak az Android ltal
knlt widget-eket hasznlhatjuk. Ha egyedi elemekre van szksgnk, sajt View objektum
ltrehozsval, vagy a mr ltezwidget-ek kiterjesztsvel s kombinlsval megalkothatjuk a
sajt widget-einket.
Az Android ltal knlt sszes widget megtekintshez az android.widget csomagot rdemes
tnzni.
UI Esemnyek
Miutn hozzadtunk nhny View-t/widget-et a felhasznli fellethez, nylvn szeretnnk tudni
rla, amikor a felhasznl hasznlja ket, hogy klnfle mveleteket vgezhessnk azok
hatsra. Hogy rtestst kapjunk a UI esemnyekrl, az albbi kt dolog egyikre van
szksgnk:
Definiljunk egy esemny figyelt s csatoljuk hozz a View-hoz.Ez a gyakoribb mdjaaz esemnyekre val figyelsnek. A View osztly tartalmaz begyazott interfszek egy
gyjtemnyt (OnListener nevekkel), amelyek mindegyiknek van egy visszahv
metdusa is On() nven. Pldul, View.OnClickListener (a View-n trtn
kattintsok kezelshez), View.OnTouchListener (a View-n trtn rintkperny
esemnyek kezelshez), s View.OnKeyListener (a View-n trtneszkz gombnyomsok
5/22/2018 Android Prog
34/67
34
kezelshez). gy ha azt akarjuk, hogy a View-nk rtestve legyen ha rkattintanak
(pldul kivlaszt a felhasznl rajta egy gombot), implementljuk le az OnClickListenerinterfszt s definiljuk az onClick() visszahv metdust (ahol megadhatjuk a kattints
esemnyre trtn utestsokat), s csatoljuk hozz a View-hoz a setOnClickListener()
metdussal.
Definiljunk fell egy mr ltez visszahv metdust a View-ban. Erre akkor lehetszksgnk, ha sajt View osztlyt implementltunk s bizonyos esemnyekre szeretnnk
figyelni azon bell. Lekezelhet pldaesemnyknt meg lehet itt emlteni a kperny
megrintst (onTouchEvent()), a trackball mozgatst (onTrackballEvent()), vagy amikor
az eszkz egyik gombjt lenyomja a felhasznl (onKeyDown()). Ennek segtsgvel a sajt
View-nkon bell minden esemnyre kln meghatrozhatjuk a megfelel viselkedst s
eldnthetjk, hogy az adott esemnyt esetleg tovbbtjuk-e egy msik gyermek View-nak.
Hangslyozzuk, hogy ezek a visszahv metdusok a View osztlyhoz tartoznak, gy az
egyetlen eslynk, hogy definilhassuk ket az, ha sajt komponenst hozunk ltre.
Menk
A men egy msik fontos rsze az alkalmazs felhasznli felletnek. A menk egy megbzhat
interfszt knlnak a felhasznlnak, amiken keresztl elrheti az alkalmazs klnbzfunkciit
s belltsait. Legltalnosabb alkalmazs men az eszkz MENU gombjnak megnyomsval
rhet el. Ezen tl azonban lehetsgnk van Krnyezetfgg Menk (Context Menu)
ltrehozsra is, amelyeket akkor jelenthetnk meg amikor a felhasznl lenyomva tartja a
gombot/ujjt egy elemen.
A menket szintn a View hierarchival lehet strukturlni, de ez esetben nem mi definiljuk a
stuktrt. Ehelyett az onCreateOptionsMenu()vagy onCreateContextMenu()visszahv
metdusokat definiljuk a Tevkenysgnkhz, majd megadjuk azokat az elemeket, amiket a
menben szerepeltetni szeretnnk. A megfelel idben az Android automatikusan ltrehozza a
szksges View hierarchit a menhz s kirajzolja az egyes menelemeket.
A menk szintn kezelik a sajt esemnyeiket, gy nem szksges esemnyfigyelket regisztrlni
a menelemekhez. Amikor egy menelem kivlasztsra kerl, az
5/22/2018 Android Prog
35/67
35
onOptionsItemSelected() vagy onContextItemSelected() metdus kerl meghvsra a
keretrendszer ltal.
s akrcsak az alkalmazs elrendezs esetben, itt is lehetsgnk van XML fjlban megadni az
egyes menelemeket.
2.4.2. UI definils XML-benAz elrendezs az a szerkezet, amin keresztl a felhasznl kapcsolatba lphet egy
Tevkenysggel. Ez definilja a felhasznl szmra megjelen elemek elhelyezst. Egy
elrendezst ktflekppen deklarlhatunk:
UI elemek deklarlsa XML-ben. Az Android egy egyrtelm XML nyelvezetet knl,amely sszhangban van a Viewosztlyokkal s alosztlyokkal, mint pldul a widget-ek s
elrendezsek.
Elrendezs elemek pldnyostsa futsi idben. Az alkalmazsunk futs kzben kdblis kpes Views ViewGroupobjektumokat ltrehozni (s a tulajdonsgaikat vltoztatni).
Az Android keretrendszer elg rugalmas ahhoz, hogy a fenti kt mdbl egyiket, vagy akregyszerre mindkettt felhasznljuk az alkalmazsunk felhasznli felletnek kialaktshoz s
kezelshez. Pldul, megadhatjuk XML-ben az alkalmazs alapvet elrendezseit, belertve az
egyes elemeket s tulajdonsgaikat, amelyek majd megjelennek a kpernyn. Ezek utn rhatunk
olyan kdrszeket az alkalmazsba, amelyek futsi idben vltoztatjk az XML-ben deklarlt
elemek paramtereit.
Az XML-ben trtn UI megads azzal az elnnyel jr, hogy jobban el lehet klnteni az
alkalmazs megjelentsi rtegt a kd tbbi rsztl. A UI lersok az alkalmazs kdjn kvl,
egy kln fjlban vannak, ami azt jelenti, hogy anlkl lehet megvltoztatni, hogy a forrskdot
mdostani, s emiatt jrafordtani kellene. Pldul, megadhatunk az egyes kperny
helyzetekhez, mretekhez vagy nyelvekhez kln-kln XML elrendezst. Ezen fell az XML-
ben deklarlt elrendezseknek az is az elnye, hogy knnyebben tudjuk olvasni a UI struktrjt,
5/22/2018 Android Prog
36/67
36
gy knnyebben tudjuk az esetleges hibkat is javtani. Ebbl kifolylag most az XML-ben
trtnfelhasznli fellet elrendezs deklarlsra helyezzk a hangslyt.
ltalnossgban elmondhat, hogy a UI deklarlshoz hasznlt XML nyelvezet szorosan kveti
az osztlyok s metdusok elnevezseit, ahol az elemek nevei az osztlyok neveinek, mg az
attribtumok nevei a metdusok neveinek felelnek meg. Ez a megfelels sokszor annyira direkt,
hogy sokszor egyrtelmen meg tudjuk mondani, hogy melyik XML attribtum melyik
osztlymetdusnak, vagy pp melyik XML elem melyik osztlynak felel meg. Ugyanakkor
figyeljnk r, hogy a nyelvezetben nem minden esetben azonos a kt nv. Bizonyos esetekben
elfordulnak kisebb eltrsek. Pldul az EditText elemnek van egy text attribtuma, amely azEditText.setText()metdusnak felel meg.
UI lers XML-ben
Az Android XML nyelvezetvel gyorsan megtervezhetjk a klnfle UI elrendezseket s
tartalmazott kperny elemeket, hasonl mdon a HTML-ben val weboldal tervezshez
begyazott elemek sorozatval.
Minden layout fjlnak pontosan egy gykrelemet kell tartalmaznia, ami vagy egy Viewvagy
egy ViewGroupobjektum kell, hogy legyen. Miutn definiltuk a gykrelemet, tovbbi layout
objektumokat vagy widgeteket adhatunk hozz gyermek elemknt, gy ptve fel a View
hierarchit amely meghatrozza az elrendezsnket. Az albbi pldban egy olyan XML
elrendezs ltszik, amely a LinearLayoutelrendezst hasznlja fel egy TextViews egy Button
tartalmazsra:
5/22/2018 Android Prog
37/67
37
Miutn megadtuk az elrendezsnket XML-ben, mentsk el a .xml kiterjeszts fjt az Android
projekt res/layout/ knyvtban.
2.5. Alkalmazs erforrsokLehetleg minden esetben szervezznk ki minden erforrst pldul kpek, stringek - az
alkalmazsunk kdjbl kln helyre, hogy fggetlenl kezelhessk ket a kd tbbi rsztl. Az
erforrsok kiszervezsvel arra is lehetsg nylik, hogy alternatvkat biztostsunk az
alkalmazsunknak a klnfle eszkzkonfigurcikhoz, pldul ms nyelvek vagy
kpernymretek figyelembe vtelvel. Ez egyre fontosabb dolog, mivel egyre tbbfle Android
eszkz jelenik meg a piacon. Ahhoz, hogy klnfle konfigurcikkal is kompatibilis legyen az
alkalmazsunk, rendszereznnk kell az erforrsokat a projekt res/ knyvtrban alknyvtrak
segtsgvel, amelyek tpusonknt vagy konfigurcinknt csoportostanak.
Minden erforrshoz megadhatunk egy alaprtelmezett s tbb alternatv erforrst az
alkalmazsban:
Az alaprtelmezett erforrsokat eszkzkonfigurcitl fggetlenl fogja hasznlni azalkalmazs, vagy ha nincs az adott konfigurcihoz megadott megfelelalternatva.
5/22/2018 Android Prog
38/67
38
Az alternatv erforrsokat adott konkrt konfigurcihoz tervezzk. Az erforrs csoportottartalmaz knyvtr nevt kiegsztve egy konfigurcis jelzvel megadjuk, hogy milyenkonfigurci esetn hasznlja fel az alkalmazsunk a knyvtrban lv alternatv
erforrsokat. Pldul, mg az alaprtelmezett UI elrendezst a res/layout/knyvtrban
troljuk, egy msik UI elrendezst is megadhatunk arra az esetre, ha a kpernyt elforgatjk
vzszintes skra (landscape orientation), amit a res/layout-land/knyvtrban fogunk
elmenteni. Az Android automatikusan a megfelel erforrsokat fogja felhasznlni gy,
hogy megprblja illeszteni az erforrs knyvtrak neveit az eszkz aktulis
konfigurcijhoz.
1. bra.Kt eszkz az alaprtelmezetterforrsokat hasznlja.
2. bra. Kt eszkz, az egyik alternatverforrsokat hasznl.
Az 1. bra azt mutatja, hogyan lehet alaprtelmezett erforrsok egy gyjtemnyt klnbz
eszkzkn felhasznlni, ha nincs elrhet alternatva. A 2. bra pedig azt pldzza, hogy
ugyanaz az alkalmazs hogyan kpes alternatv erforrsok segtsgvel klnbz
konfigurcikon is helyesen megjelenni.
2.5.1.
Er
forrs tipusokEbben a fejezetben rviden felsorolunk nhny erforrs tpust, amiket az alkalmazsunkhoz
felhasznlhatunk.
Animci erforrsok: Elre meghatrozott animcikat definilnak.A tween tpus animcikat a res/anim/knyvtrban troljuk, s az R.animosztlyon
5/22/2018 Android Prog
39/67
39
keresztl rjk el. A frame tpus animcikat a res/drawable/knyvtrban troljuk s
az R.drawableosztlyon keresztl rjk el. Sznkezelerforrsok: Sznkezelerforrsokat definilnak, amelyek az aktulis View
llapot alapjn vltoznak. A res/color/knyvtrban troljuk s az R.colorosztlyon keresztl
rjk el.
Kirajzolhat erforrsok: KlnbzXML vagy bitmap alap grafikkat definilnak.A res/drawable/knyvtrban troljuk s az R.drawableosztlyon keresztl rjk el.
Elrendezs erforrsok: Az alkalmazs felhasznli felletnek elrendezst definiljk. Ares/layout/knyvtrban troljuk s az R.layoutosztlyon keresztl rjk el.
Men erforrsok: Az alkalmazs menk tartalmt definiljk.A res/menu/knyvtrban troljuk s az R.menuosztlyon keresztl rjk el.
String erforrsok: Stringeket, String tmbket definilnak (formzssal s stlusokkalegytt). A res/values/knyvtrban troljuk s az R.string, R.array, s R.pluralsosztlyokon
keresztl rjk el.
Stlus erforrsok: A UI elemek kinzett s formtumt definiljk.A res/values/knyvtrban troljuk s az R.styleosztlyon keresztl rjk el.
Tovbbi erforrsok:
Klnbz rtkeket (pl. boolean, integer, dimenzi, szn, tmb) definilnak.
A res/values/knyvtrban troljuk, de egyedi Ralosztlyokon keresztl rjk el ket
(pl. R.bool, R.integer, R.dimen, stb.).
2.6. AdattrolsAz Android klnbz lehetsgeket knl az alkalmazs perzisztens adatainak eltrolsra. Amegfelelmegoldst az adott ignyek alapjn vlasztjuk ki, mint pl. az adatot csak az alkalmazs
rhesse el, vagy ms alkalmazsok (vagy a felhasznl) is, mennyi helyre van szksge az
adatoknak, stb.
Az albbi adattrolsi lehetsgeink vannak:
5/22/2018 Android Prog
40/67
40
Megosztott preferencik (SharedPreferences): Privt primitv adatok trolsa kulcs-rtkprokkal.
Belstr: Privt adatok trolsa eszkz belstrjban. Klstr: Publikus adatok trolsa a megosztott klstrban. SQLite adatbzisok: Strukturlt adatok trolsa privt adatbzisban. Hlzati kapcsolat: Adatok trolsa a weben sajt hlzati szerverrel.
Az Android lehetsget knl arra is, hogy a privt adatainkat is megosszuk ms alkalmazsokkal
tartalomszolgltatk segtsgvel. A tartalomszolgltat egy opcionlis komponens, amely
rs/olvass jogokat knl az alkalmazsunk adataira, az ltalunk belltott megktsekfigyelembevtelvel. Rszletekrt lsd a 2.2.4. Tartalomszolgltatk cmfejezetet.
Megosztott preferencik hasznlata
A SharedPreferences osztly egy ltalnos keretrendszert knl, amelynek segtsgvel
elmenthetnk s visszaolvashatunk primitv adattpus kulcs-rtk prokat. A
SharedPreferencessegtsgvel brmilyen primitv adatot elmenthetnk: boolean, float, int, long,
s string. Ezek az adatok megmaradnak kt indts kztt.
A SharedPreferences objektum megfogshoz az albbi kt mdszer egyikt kell hasznlnunk:
getSharedPreferences() Ezt hasznljuk akkor, ha tbb preferencia, nvvel azonostottpreferenciafjlra van szksgnk. A nevet az elsparamterben adjuk t a metdusnak.
getPreferences() Ezt hasznljuk akkor, ha a Tevkenysgnknek egy preferencia fjlra vanszksge. Mivel ez lesz az egyetlen preferencia fjl a Tevkenysgnek, nem adunk meg nevet.
5/22/2018 Android Prog
41/67
41
Pldul:
// Restore preferencesSharedPreferencessettings =getSharedPreferences(PREFS_NAME,0);booleansilent =settings.getBoolean("silentMode",false);setSilent(silent);
// Save preferencesSharedPreferencessettings =getSharedPreferences(PREFS_NAME,0);SharedPreferences.Editoreditor =settings.edit();editor.putBoolean("silentMode",mSilentMode);
// Commit the edits!editor.commit();
Belstr hasznlata
Fjlokat kzvetlenl az eszkz bels trjba is menthetnk. Alaprtelmezsknt a bels trba
mentett fjlok kizrlagosak az alkalmazs szmra, s ms alkalmazsok nem rhetik el (s a
felhasznl sem). Amikor a felhasznl eltvolttja az alkalmazst az eszkzrl, ezek a fjlok
trldnek.
Fjl ltrehozsa s rsa a belstrban:
1.Hvjuk meg az openFileOutput() metdust a fjl nevvel s mveleti mddal. Ez visszaadneknk egy FileOutputStreamobjektumot.
2.A fjlba rni a write() metdussal tudunk.3.Az adatfolyam lezrshoz a close() metdust hasznljuk.
Pldul:
StringFILENAME ="hello_file";Stringstring="hello world!";
FileOutputStreamfos =openFileOutput(FILENAME,Context.MODE_PRIVATE);fos.write(string.getBytes());fos.close();
5/22/2018 Android Prog
42/67
42
A MODE_PRIVATEmveleti md gy hozza ltre a fjlt (vagy rja fell, ha mr ltezik ilyen
nev fjl), hogy kizrlag az alkalmazsunk fogja tudni elrni. Tovbbi mveletimdok: MODE_APPEND,MODE_WORLD_READABLE, s MODE_WORLD_WRITEABLE.
Klstr hasznlata
Minden Android-kompatibilis eszkz tmogat egy megosztott klstrt, amit fjlok trolsra
hasznlhatunk. Ez lehet akr egy hordozhat troleszkz (mint pldul SD krtya) vagy egy
bels(nem hordozhat) tr is. A klstrra mentett fjlok minden alkalmazs szmra elrhetek
s a felhasznli is mdosthatja
ket, ha USB trknt felcsatolja a szmtgpre az Androidoseszkzt.
Fjlok elrse klstron
Ha Level 8 vagy magasabb szint API-t hasznlunk, akkor a getExternalFilesDir() metdussal
nyithatunk meg File objektumot, amely a kls tr mappt kpviseli, ahova menthetjk a
fjljainkat. Ez a metdus egy type paramtert fogad, ami meghatrozza a kvnt alknyvtr
tpust, mint pldul a DIRECTORY_MUSICvagy DIRECTORY_RINGTONES(ha
nullparamtert adunk t, az alkalmazs gykrknyvtrt rjk el). Ez a metdus ltre is hozza akvnt knyvtrat, amennyiben szksges. A knyvtr tpusnak megadsval biztostjuk, hogy
az Android mdia scannere megfelelen kategorizlja be a rendszerben tallhat fjlokat (pldul
a csenghangokat csenghangknt fogja azonostani s nem zeneknt). Ha a felhasznl eltvolt
egy alkalmazst, a hozz tartoz knyvtr s tartalma szintn trldik.
Ha Level 7 vagy alacsonyabb szint API-t hasznlunk, akkor a getExternalStorageDirectory()
metdussal nyithatunk meg Fileobjektumot, amely a kls tr gykert fogja kpviselni. Ezek
utn az albbi knyvtrba rjuk ki az adatokat:
/Android/data//files/
5/22/2018 Android Prog
43/67
43
Adatbzisok hasznlata
Az Android teljeskr tmogatst nyjt az SQLite adatbzisokhoz. A ltrehozott adatbzisokatnv alapjn brmely osztly el tudja rni az alkalmazson bell, de nem elrhetek alkalmazson
kvl.
SQLite adatbzis ltrehozsnak az ajnlott mdja az SQLiteOpenHelperosztly alosztlynak
implementlsval trtnik, amin bell felldefiniljuk az onCreate() metdust, amiben
futtathatjuk a tblkat ltrehoz SQLite parancsokat. Pldul:
publicclassDictionaryOpenHelperextendsSQLiteOpenHelper{privatestaticfinalintDATABASE_VERSION =2;privatestaticfinalStringDICTIONARY_TABLE_NAME ="dictionary";privatestaticfinalStringDICTIONARY_TABLE_CREATE =
"CREATE TABLE "+DICTIONARY_TABLE_NAME +" ("+KEY_WORD +" TEXT, "+KEY_DEFINITION +" TEXT);";
DictionaryOpenHelper(Contextcontext){super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@OverridepublicvoidonCreate(SQLiteDatabasedb){
db.execSQL(DICTIONARY_TABLE_CREATE);}
}
Az ltalunk definilt konstruktorral ltrehozhatunk egy SQLiteOpenHelper implementci
pldnyt. Az adatbzisban val rshoz/olvasshoz hasznljuk agetWritableDatabase() s getReadableDatabase() metdusokat. Mindkett egy SQLiteDatabase
objektumot ad vissza, ami az adatbzist kpviseli s SQLite mveletekhez biztost metdusokat.
SQLite lekrdezseket az SQLiteDatabase query()metdusokkal futtathatunk, amelyek
klnbz lekrdezs paramtereket fogadnak. Ilyenek pldul a lekrdezend tbla neve,
projekci, szelekci, oszlopok, csoportosts, stb. sszetett lekrdezsek esetn, amelyek oszlop
5/22/2018 Android Prog
44/67
44
aliasokat ignyelnek, az SQLiteQueryBuilder osztlyt rdemes hasznlnunk, ami jpr
knyelmes metdust knl lekrdezsek felptshez.
Minden SQLite lekrdezs egy Cursor objektummal tr vissza, amely a lekrdezs
eredmnyeknt elllt sorokra mutat. Minden esetben a Cursor objektummal lesznk kpesek
naviglni az adatbzis lekrdezs eredmnysorai kztt s rhatjuk/olvashatjuk a sorokat s
oszlopkat.
Hlzati kapcsolat hasznlata
A hlzatot is felhasznlhatjuk (amennyiben elrhet) adatok trolsra s visszaolvassra a
sajt web-alap szolgltatsainkon. Hlzati mveletekhez az albbi kt csomag osztlyait kell
hasznlnunk:
java.net.* android.net.*
5/22/2018 Android Prog
45/67
45
3. Egy alkalmazs Android Platformon: Voice+A Google 2007-ben szerezte meg a GrandCentral telekommunikcis cget, melyet tkereszteltGoogle Voice-ra. Sok ember soha nem hasznlta ezt a szolgltatst, mert miutn a Google
tulajdonba kerlt a cg befagyasztotta a hasznlatt 21 hnapra.
2009 mrciusban hozzadott j funkcikkal a Google Voice szolgltats jra elindult:
minden Google felhasznl kaphat egy virtulis telefonszmot mellyel felhvhat brmilyenmobil s vezetkes telefonszm.
szveges zenetek kezelse
hangposta szolgltats alacsony kltsgkonferencia s nemzetkzi hvsok
A Google Voice szolgltats be lett integrlva a Google levelezrendszerbe is, amivel a
felhasznlk a kontaktlistbl felhvhatnak IP alap hanghvssal egy msik felhasznlt, vagy az
egyenleg feltltse utn akr alacsony kltsg nemzetkzi mobil vagy vezetkes telefonhvst
indthatnak.
A clom egy olyan Google Voice kliens fejlesztse volt Android platformra, amivel a
felhasznlk az egsz vilgon a lehet legegyszerbb mdon kpesek internet hvst
kezdemnyezni.
Tovbb clom volt egy olyan alkalmazs kivlasztsa, ami az Android rendszernek olyan alap
rszeit mutatja be, ami ms szmra is hasznos informcival szolglhat: BroadcastReceiver,
Activity, sajt ksztsmegjelentelem, HTTP hasznlata, RegExp kifejezsek.
5/22/2018 Android Prog
46/67
3.1. Voice+ architekt
46
rja
5/22/2018 Android Prog
47/67
47
A Voice+ alkalmazs 2 fkomponensbl ll:
Settings menu: ahol a Google account-tal kapcsolatos belltsokat vgezhetjk el. Kimen hvs integrci: hvs megkezdsekor eldnthetjk, hogy Google Voice vagy
norml GSM hvst szeretnnk indtani.
A Google Voice szolgltats ignybevtelhez szksg van egy Google account-ra s egy
aktivls a Voice szolgltatsra.
3.2. Voice+ felhasznli felleteAzok a felletek, melyeken keresztl a felhasznl bellthatja a Google account paramtereit s
lthatja a hvs kzbeni sttuszokat.
3.2.1. Voice+ funkcii Belltsok megtekintse Google account kezelse Visszahvs telefonszmainak megjelentse Telefonszm lista megjelentse hvs indtsakor Hivs sttusz
3.2.1.1. Belltsok megtekintseAz alkalmazs elindtsakor ezzel a kpernyvel tallkozunk. Itt be-/kikapcsolhatjuk a kimen
hvs integrcit az Android rendszerbe, belphetnk a Google account s telefonszmok
menjbe.
3.2.1.2. Google account kezelseGoogle account megadsa utn automatikusan tnavigl a visszahvs telefonszmainak a
belltsaira.
5/22/2018 Android Prog
48/67
48
3.2.1.3. Visszahvs telefonszmainak megjelentseItt adhatjuk meg azokat a visszahvs telefonszmokat, amelyek megjelennek hvs indtskor.
3.2.1.4. Telefonszm lista megjelentse hvs indtsakorA hvs indtsakor megjelenik elszr egy felugr men, melyben fel vannak sorolva milyen
hvst lehet kezdemnyezni. A lista elejn vannak az ltalunk belltott visszahvs
telefonszmok, alatta a norml GSM hvs lehetsgei.
3.2.1.5. Hvs sttuszA hvs megkezdsekor megjelenik egy sttuszablak s egy hvst befejezgomb arra az esetre,
ha a visszahvs nem kvetkezik be.
5/22/2018 Android Prog
49/67
49
3.3. Megvalsts3.3.1. BelltsokAz alkalmazs elindtsakor a bellts menvel tallkozunk.
A bellts men egy ListActivity-bl szrmaztatott Activity-vel van megvalstva. A lista
elemeit dinamikusan tltjk fel, gy eltrhetnk az alaprtelmezett megjelentstl s sajt
kinzetet definilhatunk.
publicclassSettings extendsListActivity {GVCallerSettingsListAdapter adapter;
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);adapter= new GVCallerSettingsListAdapter(this);setListAdapter(adapter);
}
5/22/2018 Android Prog
50/67
50
@OverrideprotectedvoidonListItemClick(ListView l, View v, intposition, longid) {
adapter.click(this, position);}
@OverrideprotectedvoidonActivityResult(intrequestCode, intresultCode, Intent data) {
adapter.notifyDataSetChanged();super.onActivityResult(requestCode, resultCode, data);
}}
Mivel a lista sorainak tartalma egyedi, a lista adaptere egy BaseAdapter-bl szrmaztatott sajtGVCallerSettingsListAdapter adapterosztly. Ezeknek az egyedi soroknak a kinzete xml-ben
van lerva a layout-ok kztt. Az adapterbe a getView() fggvny megvalstsval tltjk be a
lista sorainak kinzett. A click()esemny figyelve tudunk reaglni a kivlasztott listaelemre.
3.3.1.1.Kimenhvs integrciAz elslistaelem a kimenhvs integracijnak kapcsolja, ez nem csinl mst, mint lementi az
llapotot a SharedPreferences-be amikor megvltozik.
@OverridepublicvoidonCheckedChanged(CompoundButton buttonView, booleanisChecked) {
SharedPreferences settings = context.getSharedPreferences(Constants.PREFERENCE_NAME,MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();editor.putBoolean(Constants.IS_OUTGOING_CALL_INTEGRATION, isChecked);editor.commit();
}
Majd ha kimenhvs trtnik, akkor ugyaninnen fogjuk beolvasni ezt a belltst.
5/22/2018 Android Prog
51/67
51
3.3.1.2.Google accountMegadjuk a bejeletkezshez szksges felhasznlnevet s jelszt:
3.3.1.3.Visszahvs szmaiA harmadik listaelemen bell a visszahvshoz val telefonszmokat rendezgethetjk. A szmok
a Google fikbl tltdnek le. Ezeket a szmokat Voice web-es felletn kellett megadnunk,
nevk forwarding numberss 2 fle funkcit tltenek be:
Egyik funkcija a hvstirnyts: Akkor, ha nem vagyunk elrhetek a Voiceszolgltatson keresztl, akkor hova tovbbtsa a rendszer a hvst.
Msik funkcija a visszahvs: Mi ezt a funkcit hasznljuk most ki. Amikor telefonlunkakkor elszr a Google GrandCentral felhv minket s miutn felvettk trcszza azonnal a
hvottat.
5/22/2018 Android Prog
52/67
52
Ez is egy egyedi lista, radsul ennek a sorait mg cserlgetni is lehet. A jobb szlen lvicon
megrintse utn fel/lehzhat az elem. Szintn a BaseAdapterkiterjesztsvel ksztettem el ezta listt.
publicclassSortableListViewAdapter extendsBaseAdapter {private ArrayList listItems;privateLayoutInflater layoutInflater;privatefloatscale;
publicSortableListViewAdapter(Context context, ArrayList listItems) {layoutInflater= LayoutInflater.from(context);this.listItems= listItems;
scale= context.getResources().getDisplayMetrics().density;}
@OverridepublicintgetCount() {
returnlistItems.size();}
@OverridepublicObject getItem(intposition) {
5/22/2018 Android Prog
53/67
53
returnlistItems.get(position);}
@OverridepubliclonggetItemId(intposition) {
returnlistItems.get(position).getId();}
@OverridepublicView getView(intposition, View convertView, ViewGroup parent) {
if(convertView == null) {convertView = layoutInflater.inflate(R.layout.sortablelistviewitem_template, null);
}
LinearLayout template = (LinearLayout) convertView;SortableListItem listItem = listItems.get(position);
if(listItem.isHeader()){
View view = template.findViewById(R.id.separator);if(view == null) {
view = layoutInflater.inflate(R.layout.sortablelistviewitem_separator, null);template.removeAllViews();template.addView(view, newLayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));}
TextView text = (TextView) view.findViewById(R.id.item_title);text.setText(listItem.getTexts()[0]);
template.setMinimumHeight(0);}elseif(listItem.isEmpty()){
template.removeAllViews();template.setMinimumHeight((int)(58 * scale));
}else{
View view = template.findViewById(R.id.settings);
if(view == null) {view = layoutInflater.inflate(R.layout.sortablelistviewitem_template_row, null);template.removeAllViews();
5/22/2018 Android Prog
54/67
54
template.addView(view, newLayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
}
String[] texts = listItem.getTexts();
TextView text = (TextView) view.findViewById(R.id.item_title);text.setText(texts[0]);
text = (TextView) view.findViewById(R.id.item_subtitle);text.setText(texts[1]);
template.setMinimumHeight(0);}template.requestLayout();
returnconvertView;}
publicvoidsetItem(intposition, SortableListItem listItem) {listItems.set(position, listItem);
}}
A SortableListViewAdapter konstruktorban adhat t a SortableListItemlista mely megjelenik a
lista elemeiknt. Ebben van lerva, hogy egy elem fejlc-e vagy telefonszm s milyen szveget
kell megjelenteni az adott listaelemben. Csak olyan listaelem helyezhett, ami nem fejlc.
3.3.2. Hvs indtsaA telefonlst a telefon brmelyik programjbl kezdemnyezhetjk (telefonknyv, trcsz,
egyb teleptett programbl), mivel az AndroidManifest.xml-ben meg van hatrozva intent-filter-
rel, hogy minden kimenhvsra fusson be az alkalmazsunkba. Mgpedig a Callerosztly van
megadva, mint receiver.
5/22/2018 Android Prog
55/67
55
Teht, a Caller osztly kiterjeszti a BroadcastReceiver abstract osztlyt s az onReceive()
fggvny megvalstsval tudjuk elkapni az sszes kimenhvs kezdemnyezst.
publicclassCaller extendsBroadcastReceiver {staticString lastNumber;staticlonglastTime;
publicstaticbooleanisSkipNext= false;
@OverridepublicvoidonReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
SharedPreferences settings =context.getSharedPreferences(Constants. PREFERENCE_NAME,android.content.Context.MODE_PRIVATE);
if (settings.getBoolean(Constants.IS_OUTGOING_CALL_INTEGRATION, false)) {if (intentAction.equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if(lastNumber!= null&& lastNumber.equals(number) && isSkipNext) {// do nothing, normal call
} else{if(lastNumber!= null&& lastNumber.equals(number) &&
(SystemClock.elapsedRealtime() - lastTime) < 3000) {// deny callsetResultData(null);
} else{lastTime= SystemClock.elapsedRealtime();
lastNumber= number;
setResultData(null);
Intent ctsIntent = newIntent(context, CallTypeSelector.class);ctsIntent.setFlags(Intent. FLAG_ACTIVITY_NEW_TASK);ctsIntent.putExtra(Intent.EXTRA_PHONE_NUMBER, number);context.startActivity(ctsIntent);
5/22/2018 Android Prog
56/67
56
}
}
isSkipNext= false;}
}}
}
Az onReceive() fggvnyben dl el, hogy mit tegynk, ha kimen hvs trtnik. Ha be van
kapcsolva a kimen
hvs integrci, akkor a hvsi folyamat egy msik tevkenysgenfolytatdik, ahol a felhasznl eldntheti milyen tipus (Voice+ vagy GSM) hvst akar
kezdemnyezni. Az onReceive() fggvnyben van egy 3 msodperces jrahvs elleni vdelem
ugyanis hvs indtsakor, ha gyorsan tbbszr nyomjuk meg a hvs gombot, akkor az
onReceive()fggvny is tbbszr fut le egyms utn.
Egy hvsi folyamat kpei:
5/22/2018 Android Prog
57/67
A hvs indtsakor egy povisszahvsi szmokat lth
Home: telefon, mint Google Talk: Google Gizmo5: virtulis U
account, ennek haszn
Phone: norml telefokimen
hvs integr Phone & disable V
Voice+ kimen hv
nem fog Google Voic
57
pup dialogus ablak ugrik fel, a msodik kptjuk s mg plusz 2 opcit a norml GSM h
szkz fog felhvdni, USA SIM krtyval k
Talk kliensen trtnik a visszahvs.
A-beli telefonszmon trtnik a visszahv
latval knyelmesen internet telefonlhatun
nhvst kezdemnyez s vltozatlanul (beka
i.ice+: szintn norml telefonhvst kezde
integrcit. Ezt akkor vlasztja a felhaszn
e szolgltatson keresztl telefonlni.
n lthat is. Az elmentettvsra:
ll rendelkeznie.
. Ehhez tartozik egy SIP
.
pcsolva) marad a Voice+
nyez, de kikapcsolja a
l, ha huzamosabb ideig
5/22/2018 Android Prog
58/67
58
3.3.2.1.GoogleVoice osztlyMagyarorszgon csak a Google Talk vagy virtulis USA telefonszmon tudjuk ignybe venni avisszahvsos Google Voice szolgltatst. Google Talk szolgltats minden Google account-hoz
tartozik. Egy ltalam hasznlt virtulis telefonszm szolgltat, a Gizmo5 is a Google-nek egy
ingyenes szolgltatsa, de nem jr automatikusan. A Gizmo5 a telefonszmon kvl mg SIP
(Session Initiation Protocol) hozzfrst biztost minden regisztrlnak. A Google Voice HTTP
szolgltatsra alapozva ksztettem el a sajt GoogleVoice osztlyomat, mellyel knnyedn
menedzselhetaz account s hvskezels.
Az albbi HTTP API-ra alapozva ksztettem el a GoogleVoice osztlyt:
Bejeletkezs: https://www.google.com/accounts/ClientLogin Alap URL: https://www.google.com/voice/m Hvs: https://www.google.com/voice/m/sendcall Hvs trlse: https://www.google.com/voice/m/callsms Tel.szm lista: https://www.google.com/voice/m/selectphone
Ehhez az API-hoz szksgesek a HTTP header-ek s paramterek az informcicserebiztostshoz. Az albbi elengedhetelen header-ek szksgesek:
Authorization: bejelentkezs utn ezzel tudjuk megadni azAuthentication Token-t a tovbbikommunikcihoz.
User-agent: itt a kvetkezfix paramtert adom meg: Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13
Az, hogy milyen paramtereket adunk mg meg az URL-ben, az API fgg
.
3.3.2.2.BejelentkezsA GoogleVoice osztly konstruktorval lehet bejelentkezni, a Google felhasznlnv s jelsz
szksges a pldnyostshoz. A sikeres bejelentkezs eredmnye egy Authentication Tokenamit
letrolunk. Ltrehoztam egy msik konstruktort is, aminek csak ez az Authentication Token a
paramtere, ugyanis egy ilyen token lettartama akr 2 ht is lehet, gy nem kell felesleges idt
5/22/2018 Android Prog
59/67
59
tlteni azzal, hogy mindig bejelentkeznk minden pldnyostskor. Ez jelentsen felgyorstja a
hvsi folyamatot, a hv gomb elengedse utn szinte azonnal kapjuk a visszahvst.
A bejelentkezshez szksges HTTP header:
User-AgentA bejelentkezshez szksges HTTP paramterek:
Email: Passwd: Service: grandcentral Source: VoicePlus
A HTTP vlaszban pedig megkapjuk azAuthentication Token-t, amivel a tovbbi APIszolgltatsokat ignybe vehetjk.
3.3.2.3.Visszahvs telefonszmainak lekrseSzksges HTTP header-ek:
Authorization User-Agent
HTTP paramterek nincsenek ehhez a szolgltatshoz, itt egy teljes telefonszm listt kapunk.
A HTTP vlasz egyszerbb darabolsa kedvrt ksztettem egy RegExp kifejezst, ami
kivlogatja a szveg kzl a Forwarding Numbernevt, tipust s szmt. A teljes visszahvs
lista lekrse az albbi fggvnnyel trtnik:
publicForwardingNumber[] phones() {ForwardingNumber[] fnRes = null;
try{String phonesString = getRequest(phonesURLString);List fn = newArrayList();Pattern p = Pattern.compile("(name=\"phone\"
5/22/2018 Android Prog
60/67
60
value=\")(.*?)(\\|)(.*?)(\")(.*?)(\\s*)(.*?)(:)");
Matcher m = p.matcher(phonesString);while(m.find()) {fn.add(newForwardingNumber(Integer.parseInt(m.group(4)), m.group(8),
m.group(2)));}
fnRes = fn.toArray(newForwardingNumber[0]);forwardingNumbers= fnRes;
} catch(IOException e) {}
returnfnRes;}
3.3.2.4.HvskezelsA calls cancelCall API szolgltatssal kezdemnyezhetnk hvst, vagy annak visszavonst.
A hvs indtshoz s visszavonshoz szksges HTTP header-ek:
Authorization User-Agent
A hvs indtshoz szksges HTTP paramterek:
Phone: Number:
A hvs visszavonshoz szksges HTTP paramterek:
Cancel: cancel
5/22/2018 Android Prog
61/67
61
3.4. TesztelsA fejleszts vgs fzisa a tesztels, ekkor az elkszlt programot futs kzben alaposanteszteljk. A program mobiltelefonon s emultoron is tesztelsre kerlt. Emultornak az elnyei,
hogy az Android sszes megjelent verziin tesztelhet az alkalmazsunk. A mr kifutott
szriktl kezdve a legjabb cscskategris kszlkeken fut Android verzikon is tudunk
tesztelni. St mg a kiadsra vr Android verzikon is folyhat a tesztels, amelyek mg valdi
eszkzn meg sem jelentek a piacon. Az emultor nem ad valsidejfutsi idt, de a viselkedse
kisebb megszortsokkal szinte megegyezik egy igazi eszkzzel, fejleszts kzben igen nagy
segtsg. Az emultor el
nye tovbb, hogy amikor teljesen ellr
l kezdjk a tesztelst,nyugodtan nyomhatunk gyri bellts visszalltst a teljes felhasznli adat trlshez, egy
valdi eszkzn nem szvesen hajtannk vgre ugyanezt mivel akkor a teljes szemlyes adataink
is trldnek a kszlkrl. Viszont ha emultoron tkletesen fut az alkalmazsunk, valdi
eszkzkn is teszteljk s lehetleg a legtbb fajtn. Egyre tbb mindenkinek van Android
platformmal elltott kszlke, csaldtagok, kollgk, bartok s ismersk krben akad
manapsg nhny kszlk, amin tudunk egy-egy vgstesztet futtatni.
5/22/2018 Android Prog
62/67
62
3.5. A Voice+ publiklsa az Android MarketbeMieltt publikljuk az alkalmazst a marketbe, eltte az albbi teendnket kell elvgezni:
Kszteni kell egy fejleszti profilt az Android Market-en, azaz meg kell adni a fejlesztnevt, email cmt, a fejleszt honlapjnak cmt s telefonszmt. Ezeket a
kontaktinformcikat fogja ltni a vsrl/letlt.
25 USD regisztrcis djat kell fizetni a fejleszti profil ltrehozshoz. Ezzel aregisztrcis djjal jogosult a fejlesztbrmennyi program feltltsre a marketbe.
Ha ksz a fejleszti profil, megkezdhetjk a feltltst. Meg kell adnunk azokat az az
llomnyokat, amiket fel szeretnnk tlteni:
A futtathat llomnyt: VoicePlus.apk. 2 vagy tbb screenshot-ot a programrl melyeknek a felbontsai a kvetkezk lehetnek:
320x480, 480x800, vagy 480x854 pixel mret 24 bites PNG vagy JPEG. Az, hogy
fggleges vagy vzszintes a tjolsa a kpnek az mindegy.
Nagyfelbonts programikon, aminek a mrete 512x512 pixel mret32 bites PNG vagyJPEG.
Egy promcis ikont, aminek a mrete 180x120 pixel mret24 bites PNG vagy JPEG. Egy msik nagyfelbonts kp mely a program sajtossgait tartamazza, aminek a mrete
1024x500 pixel mret24 bites PNG vagy JPEG. Ilyen mretkpekbl kerl ki nhny a
Market foldalra.
Nmi lerst is meg kell adni a programhoz, alapbl az angol nyelv program megnevezst s
lerst ajnlja fel. A program nevhez bertam a Voice+megnevezst s a kvetkez
lerst adtammeg a programhoz:
The Voice+ catches all outgoing calls and uses Google Voice service to connect you with thedialed number by calling you back on your selected callback number first, then calling thenumber you dialed. When you make an outgoing call you can select a callback number from thedisplayed callback list that the Voice+ will use to connect you with the call you initiated. TheVoice+ will connect you with the called partner after both Voice+ initiated calls aresuccessfully established.
5/22/2018 Android Prog
63/67
63
The callback can be redirected to all popular SIP clients (Sipdroid, Fring, ...) on your device tomake calls over the internet or you can combine a virtual phone number + SIP (like Gizmo5) tomake free calls.To configure/modify callback numbers you need to login to your Google Voice account in abrowser.This application uses minimal memory and resources, no voicemail/SMS/alert/notificationsupport.
Mg nhny adatot kell megadnunk arra vonatkozlag, hogy milyen korosztlynak kerl
kipubliklsra a programunk, mely terleten tlthetik le a programunkat, s kontaktinformcit
mdosthatjuk, ha nem ugyanazt szeretnnk megjelenteni, mint amit a fejleszti profilban
megadtunk.
Ezutn nincs ms dolgunk, mint megnyomni a Publishgombot s azonnal kikerl az alkalmazs
az Android Market-be, ettl kezdve brki szmra elrhet a http://market.android.com
webcmen vagy egy Androidos kszlken kzvetlenl:
5/22/2018 Android Prog
64/67
64
5/22/2018 Android Prog
65/67
65
4. sszefoglalsA szakdolgozatom elksztsvel sikerlt betekintst nyerni az Android platformra val fejlesztslpseibe. Els lpsben az Android platform kerlt ismertetsre, mely a bemutatott alkalmazs
implementlsa mellett szmos j lehetsgeket rejt. Mra mr kiforrott mind a platform s mind
a fejleszti krnyezet, mellyel nagyon knnyen fejleszthetnk alkalmazsokat.
Tovbb ismertettem a Voice+ alkalmazs megvalstsnak lpseit. Olyan alkalmazst
valstottam meg, mellyel a Google Voice felhasznlk ezutn mobillal is brhonnan ignybe
tudjk venni ezt a szolgltatst, interneten keresztl telefonlhatnak, ahol van 3G lefedettsg
vagy WiFi elrhet
sg.Mivel az Android nylt forrskd, ezltal szinte azonnal szabadon bvthet a legjabb
technolgik felhasznlsval. Az Android platform fejldse tovbb folytatdik azltal, hogy a
fejleszti kzssgek egytt dolgoznak az innovatv mobil alkalmazsok ltrehozsn.
5/22/2018 Android Prog
66/67
66
5. KsznetnyilvntsSzeretnk ksznetet mondani mindenkinek, aki kzvetlen vagy kzvetett mdon segtette adolgozat elkszlst.
Ksznettel tartozom Btfai Norbert tmavezetmnek, hogy lehetsget biztostott munkm
sikeres elvgzshez s dolgozatom megrshoz. Ksznm segtksz tmogatst s
dolgozatom alapos tnzst.
Ksznm a kls konzulensemnek Szab kosnak a hasznos tancsait s a Micont Kft
eszkzeit a dolgozatom elksztshez.
Vgl szeretnm megksznni a csaldom trelmt s segtsgt.
5/22/2018 Android Prog
67/67
67
6. Irodalomjegyzk Open Handset Alliance
http://www.openhandsetalliance.com
Androidhttp://www.android.com
Android Open Source Projecthttp://source.android.com
Publising on Android Markethttp://market.android.com/publish
Google Voicehttps://www.google.com/voice
Google GrandCentralhttp://www.google.com/grandcentral
Gizmo5http://www.google.com/gizmo5
Gartner IT research and advisory companyhttp://www.gartner.com
Unwiredview mobile technology bloghttp://www.unwiredview.com
Canalys: expert analysis for the high-tech industryhttp://www.canalys.com/