You are on page 1of 164
im Ee EO EK EN oe ep ep EX. 0. A: ams i om a EE OR i! ie!) a iB!) i! a . A: ‘ ) en a ee Reet eet icy SA anagic3 # " Android efesTo> ova8sgEog® afrecrn Bo8Esqfrcogzooges ofons UREN GD 031 application 60g oqsgpSic8 g6:{Goo2:0} onceScT programming r oxgSci] Android soogcS application 60g eq:as21998: nofgSa0600§2 re cobgg2 wbqe$ ax8ehieracgs® craoklG: ona08 opSepe acBazce io wi 2298 aBx0083, gosSrc02103 005760) Borsaivrs oneSoyeogs20yo8 qaSgeSaned ? ' sober meer programming o8 BoSsloEextopaye03 mogeBdln iy Seqcc5y programming ao& cg}ayorrsog 20305 offoqSeo3d yd ehchrcqisochoBp expeSeorqa_recoi aBor oyaorechid, cocbedgo @ WUT covsporm (hEinien bem Gotghecamone ofgierg on Gfuur.c0 gS: c005a,cBaabgg onbqp [GbegcT Br STADE GoREse Sse: 5 woogeB ofnaSo§ Bionynoce(g6: aeorcSonrurrcn gS: avobreochingeS ip) eq¢ 4aS:0999 Information Communication Technology (ICT) a, or EosocREsaosc5 [Bi on89 [GSeoaeqclBr Sn0g05 efambajcBonsqbc8 . eiipSzodeo8 GebepSanodls ooaboagaondGlues ososeuay |, Ans Breo:eqops091 electronic engineering §&:s8Eqpo8 BofoSen: coyco> i) cGofonegngeog 4eS:oar208, conrannqocl majralfe ghSro8eg§ §— UU Fagoogi woEqySFurrvp20954, ogFayor> oprqSshEqp engp$ioo>: aa€or§isoste0gsaege8 228 oSgeSelonuSu im BoraqSn8 woSG: oroaarrficmyigeog qagzzecd ? er Borxq5cR Goa[GEsa, 80 SroreSqc5 (Bea29 Android application developing =B&qp soafGSacor20r9p:60308 BuSRECRSay cBiogé: _ Mel's soicoahagrieeSi onsooBongSign Java R C/C++ oR oghagorso0yeS i!) e000 ae(Go: smart electronic device 20g§ 2058 aoohedeaaj:qens: UUs” Linux 2098 Java of, C/C++ 8g ancScB opS ojeocoSepbonc5 38 orrcegeBol GoSsocBecpcor.S§euSi avvvh maaijon> vcheBeorp 0 » MBA. BO ee ee es ig!) wr am) am) ie nag: 2 a0 oy 2g 25 29 38 Je JJ JR JG Jo J Jo Q0 aa) aR Android o8 §éo}:008 GE: Baee: wahayeeh oyefeforns Open Source Platform GE: [29:38 08E:08§uorqp:s00308, GdeQodorpSesor0$002(gE: Android of a86:efqp8: Open Handset Alliance eux2805 Android #8 go} Version aps Android § 028: ao}ol:{g&: (Portability)

: obrorigpS: ea0§ao§ conheog 2009 Activities @pt Activity Life Cycle Intent @p: Service apt Content Provider gp: Broadcast Receiver ep: Application Context gp: Project 8083008 gq Yamba Application Design s0ea22009p: Project Design Activity 026903 orpSea025 (86: apfeosbaoc5ageSq Networking g§ a[GocySes008q Multithreading 22 J. oJ R R 99 99 ge 9° oJ 92 9° Bo Go 89 7° R G 9 2 2 o4 endficn (3) af: cdlb:0 9 Project 8o$2005 9.22 Android application 08 aSegig qoaggEicoficg: debug og5(é: 6 Android User Interface 805a008 Bo UL ofBiown a SigSaqe By View qig§ Layout gp: Be Yamba Project o8 oor8org$es0s05&: Bs Status Activity Layout 03 or8orp8ea008(88: B9 Widgets 081 sacs:[a8:e000 properties ap: cy String Resource gp: Bq StatusActivity uge200 Java Class 2088: Co Application 03 (Ggo§:e020 Object gp:g§ Initialization Code 08 «§08:(g&: Bg Code o8 compile opSG&:g§ Project o8 build c98QE: File qp:o8 save o98(68:1 6.20 jtwitter,jar Aorary 8&03 ol S:oop$ (86: Boo Internet Permission soo3o5 Manifest File o8 update op5Gét Boy Android o3038 Log goon8: QE: Bog LogCat Biog.o LogCat 08 Eclipse DDMS Perspective 9 GAGE Boge LogCat o8 command line g [a3a$6é: Bog Android 6) Thread a9¢009 (Threading) Boge Single Thread oydip ©2 °9 °9 09 ey es a2 ee 900 909 209 208 999 9902 998 299 200 mag: cdlé:05 6 Android User Interface 8052005 Bog.) Multi Thread Boge AsyncTask Cog uset interface (UI) ecTe sefgozeon2 event apt BoB Color gpig§ Graphic ep: ovl€:08E: 6.08.0 Image apr(6eS[eE: 6.08.) Color gp: (699g: G09 User Interface 08 Optimize op BE: Coo Hierarchy Viewet Boe enchicn (5) Android application eo: es320210§ 03:(86: wae QE soeor2029p1q>" - ope Mokep§ selaza€:s2epe Android application eqrarc10§ oB: BE: saa0§(g& apgo20nepigp? — o3& loEeg§ wa§:qr: aydp ojo oJ) ajo a89) 929 220 BGR 299 259 298 299 tien anja... Android ce28:g80qSah:a09§ So3E9 §1g§ slErtea02 (Bpdo8Gurrqprt s00g 05 app et eqpooriGoloncoat gorxeSa09§ oeGssonr0}:0§ SER Eagorcowgh enccmnkiat: cobigg§ GScoqlesSi Android of weGiandcSanfSrqpteR sooboSa}:9 Be user interface qo: of o8:GEsi data gp: BErz0p51 store cy6 GE network aphaodianig® GoSsoc8GExg§ soar qpigrecr> soeonsorepic§. of SRE of BreoadigySEcocloeSu foams) veorsoneprepre’ agyrapi edges oBSRE ooclongSs 08:0088E:8§ twitter 303,00 application 08 0§ oB:§EcloaSu eqyrogé opSo0g§ Android app Gres cooyiSoarg GfeopSaacfreifEecr> code pattern qpic8 RSCRE BuS8E toolbox nbqanlgS of Big aSicBeogSs BGI oi Android oo28:g8048 platform of BiggorcopSagnice(G: Bo8érc8Ganr0}ei saqiSiq’: wf §ooay§ GoSsoc8y cnvregSog& Android platform af @pS0308, sbok ghoyfeqoogfeogS: RrogSio8GEcovlepSn Android platform @f gep$:co>:41 Android platform ofa}ze009 application Reh ZogSior:Sasor0841 ord goherbq GoSzochoraS$qy5fieor> application package (APK) oRei opSrongSeaoocBgl GgmraS fRofofenehs qoieoeS ayreocl opSi 080888 Android environment o89o8 ofoSoEeh o8:§Ecoas §:oE:ogo$og cas ptogram apx{@§ soo{GjootdlaopSi obs: B.C. Tech (UCS.Y); D.B.S (V.1-Eco); Dip Info-Tech (NCC, UK) uff encis J 1 coahesonaign BEnge view apeg§ \ interface @\ woe{gSao8o5e0§E: element | ‘Android #§ aaef§d user interfac cmaStmogét layout apie’ us aprsent egepal qoeS: organize opbGo}oRoogSs angerraSGogareodoeSt | | GobofcB:eore application 08 o4acirgSeySooraEa Background | process service ofapiQ: data qpr update oybaog ofeannty service 3 orpSeaoreS$EdlegSu | | ‘pags (0) — Android o8 Bigopsa5 BE ore Android 4§ vdSaacB00q4 | eqacdimdtpErcoopypich SSocors Goong: GEsloey } ‘eofe (j) - QoeSi@’ > Android coskxySogd operating system sf | | ghish woBoSeaQE: sonichiel oaa08lGE Gygopraobiga5 GScloo~Su | |'so0§: (2) - oon8{GEs’ aeS Android application a+ o§8iga00go8 | |cgbc$igé environment o§ orgSeaorcBq§ coSiaa} GSdloogSn ‘saaf: (¢) - 080 w@BcS0§Erep' og& application nb (gdeore0nf. applica sion developer apt cocboB&cont saaffGjenr Android af soBobaaGés compo nent apraacleres8 qfrco8:Goorrdlooghn ‘geo§s (9) - Project 85008" s998 Android a a208:o8:ea0 feature a2: Bhoyraoas 4yq22GS so}ehg Seok rconroove project orb9 Bdclooe8u twofs (@) - Android User Interface BoSancS’ 998 ooh application cooge8 uset interface orghescno8gane(apn6s GBvlooeSu Asx GOL application cqamsfbGESim acGSwcmagep: Bei exte i magi — 9 Android g [jtshnbfit Android =o¢5 (R:dsocSageSeqpeBAoooqprcoaged. SroapSa2o SBE:ogo502: anoni ogg: grrcopSegeS: epSazeas opo}sREaog§ open source platform en89 Bclanz5n gEtc8 Google 9 BaSgoreheraofempcBoannE g&ro(§: Open Handset Alliance 00x85 apbgg 8&=98dloo8i OHA oor8oia0g si oSqeSyhys BppoBhvorqns0§ Geohioobeoqh4E soop:{Gogaptoo 48 §oo8(Gs aqiaocSar2006§ [ed aocBageSogy gSresorE qeSape of Biovras BS aopSu Android 8 oBogSquSaxSc8 BeSaogS:eo:299§ platform ovf 084 hardware 4& gb:acT og conpSaySeqar9§ software of Sras§8 ZopcSeorkE 206$ ocoes}: open platform obe8a{g8 ecTogoSorzen9 Android 2298 AGRE: socBageSeop Bfarreorom08 oftoefFaktcSsofao8eo§a0gSu oo GaaGe: Android ag comprehensive platform ooq(§5ag5u sBeGoopSyo g&:a098 BRELBsQs008ogSeq: BRarcor8qaoogeS Gafgacr> software sogascor ordq (S008 application developer gro, (O3:98oEssohogSoq: BRarrqp:c20g05 application apr agE§qgoSogg> ofo8$Eog§ tool @prgé framework qysiaerte}ic} eoro2a2—80 Android device o6gs00g05 app 0089 corteabico8efokcoregS aBeyS Android gfrooSej:08 Gof ecScasidl Android Software Development Kit (SDK) Fey’ BETRu obi B.C. Tech (UCS,Y); D.B.S (Y.I-Eco); Dip Info-Tech (NCC, UK) wif ooo8 De) @pSQ@a8 aya}+GEear Open Source Platform [gheé: Android 2998 chip apisoogSta2 socgdagSarg8i BEagE:0g€ wecTea0o low- level Linux module gp:goo98 egSoop$ Android 9§:§038 s9098e95e029 code sogsacot native libraries gp:oSeax08\ application framework gprgangS soan§o}: complete application gpicBeaare som) eSages$ ugo}x§Sanp§ open source (g6dTasg8u Bgeoreco: Android of gSEgSa98 wpSoges8 ephoog$ qpdgudqoSa0go5 08 cgcScodge ob yrraoah:lggEear gE heh: G8ave5i 38G8q) developer onb8:ce0g(§§ Android platform anégajisi source code of 9§§EoopSu BoB, q8ErpSooogo8 Android operating system cor8sg8095 (5: opSo3<8, cacpbeySrSeh QoBSqpoomys B88Eo 951 aycSaybag manufacturer oo: gecoakon BaSegé BSopSoyben opSoogh hardware dfisoogaSost Android OS o8 agora arbarcBfGEcogSag8:8E 0080 22 [HBGREeBRurrqpareaoged GdopaSorpSesoacBconi(SE: Android 8 [B:38088:08Ransqpza20308 aocSa008 qaSgoSar gbag08 orpSesoroSconif§&t [gSarpSuo8lGhe) (OHsSGoSEto8Gursyyrali eof, sohbet CB cop§agkioSiorrcoria0951 gov - (RVSREreBQuroqara0—8 ooahcoky AlolexfoargSi moBcohohel grcsrréqeSaog8 qoSqfe cocde& gfqyor> cB10908 ccarbig$ conleBsrepS ovpeSi go8a> pour sag (SS BoRELGOZarr gprs cooicoSe[GSepS [gSc00 wogudroncloroe gcSooBecpay memory 4§ cpSeaorkg§: speed soofaiphay’ sS:o%o728 cook sonafson008 SegupS, (82280 ADEROAG application cqanof SHEED acGincmoqy: us cooe Android 2095 ang: oor rpSearooboBiororgSio orccypa8ape oBo¥,eo09 onfrocbqyeBeqrrc8 cop§ogSroSrorrcon:3(§: enaearsdhG&: GBecoe{aza sedheQogqrrs0g05 §Bcora’ighysar> aaccg.soloii08 qffeorlareSu ABGE Android avg§ gE:c8 copSopEsahiGesS device of BEcpS: cwogeScoon: screen size 1 qSogo8(g&:s22t resolution 1 qgySeSocSco8:9 op$:} seqsoco: chipset exspSoRsaokEs BoSeayppSeog GGEugFEcor> searrGoo4S Android #f core 068 portable design (g8a3,Su 2g Android of a0 8:efpE: = Joo 948038 Google or Android Inc., agSo§tc§ oSegeGeSanzSu Google «5 BRE reS:or8ef: ofBe8 cgeScorcoresSuy cagoo> oof[SHooeSn Booos GSaeorsloro opSo%q) ogeSorGE: o§n ~ J007 036 Open Handset Alliance wu2s8c8a0g.08 egeoor8ofrEs eBE> oxgSn Android eogS: opSagess quzo}ra§Searozoqbimn(G6 open source afG& ooapi08 ofesoo>05n = Jooo 038 Android software development kit (SDK) 1.0 of (6§.4jgo0e5u HT Cg goheq5B: soaeRoog T-mobile 5:9 soo8 ageSeniogfurcSofosoahy g cepSrqjears G1 GoRExg§:09& ofF328 soo}x{Sor95u = soog og Android oBsodGéea> aBfursefid ogoSavToosseSu Android OperatingSystemsi go3oo5 new version qp:a0gS: 3998:28: ogoSeoTovsa081 oes ~ Cupcake (1.5) 1 Donut (1.6) 4§ Eclair (2.0 § 2-1) « B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) J we eae = Jos0 og& Android o268 pooSepSGEy§: smart phone piesa | ooo8rg E098 platform qpisegc$ Blackberry Brag’ qo3eneg epo8, eepadgiooo SopSu Android o& soad:(Gjooos (B:GGohEreockaguSens oBRuv soeqeoego5 Go cays Gcosgoog5u 94 Open Handset Alliance e785 Android 8 Google oBgorgS:8& Sarg}x0e4-mcort0'on ‘eqn Android 8 Open Handset Alliance eur8cSxgo G&=8Eo2—u Open Handset Alliance evr2805003, aa0gSyo ube $oSE:oghweSo§ esorkgespEsqogapn! BRExcBRavs opoSeySagayeg§ solo: cocdoSagap: gievlé: aysaoot correays calgcScop§:d 209 [So0p8u OHA vericicagaoeS So8Erma}oggprel cacog sofodo8 G8acrr8ighaser6 cSoghosciges ySorksga8 SioopSoophu 08 Android @f go3 Version gp: calgor wpSase§ software osfo}oho& Android copSonpS: onfGpS:(GeS: gro af: eorsExaogScoc8 eonakigh SafBSr08n 828, gorSagapech gEvsl gogeoyd version number episoq 88Eox~Si, oo8ecSeaqoSqod) eussiog® Android eh gojeoaBicSig§ EioReh seq sovsSchoh apho} eoblGanidlansSu AMALOAG application cqannfSHEREq aGiacmogy: wg coco ‘Android 1.0 1 Android 1. i Android 1.5 3 Cupcake Andeoid 1.6 4 Donut Android 2.0 5 Ecair Android 2.01 6 dale Android 2.1 7 Edair Android 22 8 Froyo (frozen yogurt) Android 23, 9 Gingerbread ‘Android 23.3 10 Gingerbread ‘Android 3.0 n Honeycomb saegisoslsi:coqjo5qo API level (@Sa2—Su Application Developer 005819064 GE oBeS application aoe wpSan98 BRussegé run o98 BargSc8 API level got soc{§8QB: ah:(GoSqa0—5u API level ao98 o8u§ application o epSoo9§ BRorrgprog& aBayE run epSi epfoop$ oBGorrgniegé Fagyéy run oS ope upeors soqyc8 socByshongSu ob: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) (=) ie 200 Asa G2O@8E application cganaf BGEHE GD ncGScveonopep: mgt — J Android gapi} Android application @pi8 cqzeg$ developer or$cusreSaeq(g§ Android system @) soa8:e0y 8+ layout qpi0} coooigo gorcopScovtdlgave Android platform evTog& soogeSoreg cyS8Ecax2 seepypig§ effobiafocgeSear coopypt oB 3GargarcopSepS (GEvloopSu Android co28:g&048 operating system op$ soqgoeco8008 lo&eax> BoSe§,od:{BigS corogain soqy> ord qgrqErBohEz§ oRoSGE 8ear00 conpem> api g§ spSgaSqyoBap: orpSu ceqgoordqgag§ erBqgoar_8 qErco&iGoSooarge cafGoscalSEsefe ovpoS0d onbqc¥orbq 8FoEsqpopabog Ere: BBoreSn Android axp$ Linux ecTog€ aoo8Scon (8: (gS0—5u Linux RoopSgo socyh cord8seans Gurksg8o48 Operating System (Borbe (G5K:1 eSogea}qog abi§§Ecor 9€:GS Open Source ear oorora}s! ‘RBoSgor'opoé BRE sopSi Android 9 o9S:4a2(§8 Linux o8 soeGaqGEr§ sooleoSesoaSeqnig> § 0281 se8org 0] d1:BE: portability 1 o3GIGE: security ¢§ features gooky ReleHs GSoo—Su \ (30) ww eco be [jo edJohGE: (Portability) Linux aog8 hardware 8oge0095 coSeosdapsrayarogé cacy Sonegad) 1058S e209 portable platform 0289 [gSaop5u Linux gaog8 Android, cooSa0fen8: coreSoBoxpSyo hardware qprc} sockEroor0r8qz008 gj, $oS(BEr (GBao9Su BeGaosSgo Android o8 Linux ovTog’ soefGSoorr[GEreleja§ hardware oh g8(G: feature goto? cophog&roBrora§ ecSapsorzeqit Linux #f low-level wBSRBE: coreor8epraro ed]cl:covo C code gpiBS eqzcorra>68 (66 cornefHoF (Linux of sofys:) Android GE of:eqears B&evrdfisgsooge8 GeSge8 third-party application qote8 socgeSoocg cobanf aypaepoSsul E:05 800551 Android Sai QopS:}soqqr2000§ 0§ (Android Stack) o8 or8eaSerqo5goo) Gog GeSclu JJ GBEE Cecusity Linux 2998 of Gig (§e222 0480289 GSorp5u (BbrorS:ca0s cpSchigécosg mor8§ ofrndgcderpoBork Bir soobeySuyrg> weobeod s$qea7 0480089 [S52098u Androids LinuxsoeuT (Bromgo $8ofSEtel soofo}oE006 aqSgo ob Bigelago§ GSar98u Android applicaton sosra}:a9—§ Linux system on qoorear 38: Gre g§GiqoSeyGF SiG>: Linux process opSesorEqy grt cof§8 soegScgSlHBE: G05 sIohlGSearrdGHré fier: BEqp yofens By sooorbeprapia§ sacheh eopSagrray>:(8: Gbeoovehu aBoforeSy> app cnSga® on89 ongS8ens cacgdcaS[iBe: eupcbaasacfaze§ app onBaq or89 8, Bravorbokaqpainns cbfSigos GfreqpcSeans Googe erf:coxnpSu ATDAROAG application cemfdGidin aGocmapap: Linux kernel ‘Android runtime yQ Features go089 goo8apea02 feature apt For9Su Android aog8 SREGY@xSogeSeqs BReoogpraoeges Linux. opoGok \ecSpocbe8 cBfiayS8S8EGE: memory management 1 dlelof cBfrqyS8O¥E GE power management 4§ op§ercSsocSoguSqogs networking o999§ ob: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) a @) vie ome wg _ Native Libraries apt ~ Android «application layer soogS ceaSeax ofesor8y_ services ap: o§c8:9§ soobe{Geov> Native Libraries eppig> open source community (6 caw Cg C++ oRel libraries qprane GSooin {BE eaoaoBal libraries ReBoogSr abzeoe Fred Webbit ~ Safari 1 Chrome 4§ saGorca20 browser ypiog& 3}:00319—3 web- rendering engine (g8a098u SOLite ~ feature gd1§e22> SQL Database (So0,5" “Apache Harmony ~ opSayosBopyar:g Ee Java 2085 B-GESGo4S Open Soutce implementation 0289 (52098 Open GL ~ s$roo8GE o9Se8 libraties apr GS-80 Open SSL. ~ sbgoBe}coqyo Secure Locket Layer (gS20e8 coche) libraries qp:o8 sohcoo8E: cRoSQoScooheqjearbeng8s Soot C library B G§copSeqeoor(8: seohigearrqogorddjsa[GS Bionic RoagS: eophogé: sgxgonsSn Bionic of sahlgeSuy> cache) scbpErgbebcames Bbores qgSropon ~ coreeS{h: cocbon8sonhGeons Bdurvesranegeh apSasSoneS eaoncb8EBEx a8 Qe — 58:03 QleSegr> agecogqpraa0g08 sea0Se[Gaon9 license fee = application oxo fd GEhip vei acmarpey: ugha ooo [39 SScoxrs08e009 Dalvik soalpé: Dalvik sSo0gSgo Android o0gc8 saogia8:20§, 88E:02058: Google ¢ Dan Bronstein S:es0286009 s2§or orpSecoacSoxra9g§ Virtual Machine (@8 angSu §g§Bia2> Java Virtual Machine coc 8Gemr8rg hea: (98088: |Bosogp: cmaged anoSa008 SrorgSayoS wfo8:coxGé: [Ebonp51 Dalvik |08 se8ercenr{g§ battery (asr§ifg§ corsgEogSqyoS$EgS:a00: processing power 8,0328,c002 [§:3Go8E:oBQooogyrrel zaor§.soarc8qpese0go soso’ ofG cong s2802 8§8:ogo800210395 Dalvik (@ Java Virtual Machine 03 soorr08:qGé:8) og205008 socfoyé:arb aicdgo gS{big license oB8gefeoE GSooSu Java o8oqSor022000011 Java of tool gig Java ef library qptoneS cgoScoSgo aga}sRSeors separ (6 2098 g§easeop8: Java VM (virtual machine) a2pSero: free evrcSeqyn 2809 aooifG§ Dalvik 83088103 Jog 08 oork3[arpSpocogh: exflGaoqoeleao§ of [(GSs0p81 aBcas8 wvegescdogéy Sun 20g [eBtal Java (GE orpScaoocBoos:es09 VM 0 saorxc$:oepa0g6 Open JDK ¢§ Apache Harmony of,copS: fea (800,50 JS Android g& Java 8.03 $E:0p8 BE: Java og& Java source file obgc3 eqzooxBicgé Java compiler ofop:o7 Java byte code 28 ofGoE:cd compile agScBoSoopSu Rogar8 of Java byte code o8 Java VM ofogé run oyaoSa Andtoid aTogég eogeorp202$ Bggpt §oors095u Java soutce file 018903 ofcAG: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) 3 ws oro \ | ongorn(Gecglé Java compiler Bah:00 Java byte code a8 efGobsd compile | |agScRoBa0gSecBorre coogoyGSarzSi Bea oYsasofogé Dalvik compiler] | 8 coblGo5G: Dalvik byte code (G8 cgoSegangS aifjcoaeer> Dalvik byte code cig Dalvik VM avTog$ soopScqSceGés GSa0e81 earache soqSao5y | f GBeSon | De eocelcl.s Da i: Android application cqannfhGEdiq acGdocmomap: ue coco Dalvikbytecode(Scaas8 Javag 080505 compilecgeags Dalvik compiler Of c0s0§ cob3BSielab socefisorBqp: GScors0zSi pows ~ Java byte code [GScoeas9 (Python Beryes Ruby 02>9§) epSan§ ofaSorrar0cm(G§ 88 Android a20goS application gr eqpovar§Eago:BExef GSaopSn agocSor8qjo5yo Android aoogoS Java a268 Java classes oRog8 Scoot class exycScqyt Java ai dcosrs.s0$qp:9> Java Standard Edition ( JSE ) - s¢§% desktop computer gp:00go5 application apt orpSeaoaeSqpogé saa}(GarpSu Java Enterprise Edition ( J2EE ot JaraBE ) - opSc§:(8:0}: Enterprise application gp: orpSesoroSqpog soohe(Goop5i Java Micro Edition (J2ME ot JanaME) ~ (68 :38088:08§0220}: application apr ogc (Sa038u Android og&clo&o0g§ Java library set qptg> Java Standard Edition g§ cok:06a): (G8a081 BgSqai m8 ogolgrrqnbyo JSE g user interface libraries gpro} ecScgoSo$o5(G: Android s80> user interface libraries apt 8 GaSogbtaon{GE: GBorgSu oooh Java ef standard feature @picR coosacrconsoeSg orBEgoSogé feature sobgorcfoogs: Android § GaSgoS copGagSscorrcorvloogSu BA B.C. Tech (UCS,Y); D.B.S (Y.1.-Eeo); Dip Info-Tech (NCC, UK) TERRE SE 36 1-2 Application Framework 5& ocSaoc5sj wifes oreo Android e§ application framework 2228 application developer onBeux>05 a8, wey BicGorboqssooged coacoaeSzargensfEorg§ service qpigodleax. cgSchig® environment oo8— GSax~80 Application Framework oS Android platform (8: Sgo}:a0g08 developer qpig§ coooobaRE ape BLE cacqgal Brag: so8oSa088:e098: (G80,5u Android aojc8 soogionpSesoooScostang§ Java libraries ovlE:gpegoconeS: Application FrameworkaaqgoavTogé 00g 9995 GoareSuofSorpSesoacBe0r2 application ¢ swacBokopsggEng§ ofeaooky service gp: (Android coe8 oreSeqspgpogSqe: locations 1 sor§Sqog dep sensors 1 ¥rd=ms0:{ShghiGBSmocBagSoqiog5 Wi Fi 1 oncbBehis¥Eqp telephony eap8 oRaBcoph: afeoqyredT§oE 203 ,jopSu Android application development o8 epco2030>88:c004(g§ Android stack odTogl qfzo8Era2¢5 soBor S:orgSecpcorqee§ socy2(G6Ex a) Application Framework oiTg dloSeaxsaep component ap:goocog8: 230g209}:(Gqee5 GSooeSu j© Application gptg§ ocSo008q) Application oo 9o098 co8qorgS: single application package (API) GEo08GE GEergSu APK SEordqegs wEEoniGE dloby ab:e Foren application sqannfd GiGi aeGSocmarpy: ue oe | Dalvite ececutable~ Dahik executable ca|g& eGo8:cdcos:e209 application §Eep Java source code seraisqonara0g§ §EGEB: g&:2298 o8c$ application oB coeneS run eoreg§ code [5208 Resources ~ code euncSao0e cospava%e}: soqaecot [g80295u ofe§ application og qShqpri 220588 qSa5GE audio / video clip gpr1 we€:moyés layout 48 oro0v00000r88ep language pack sagsacoroR.cf aoodyoSeoree3 XML file ap: oargSo8a95 resources gpro8 (GSa098u Native libraries — a9§4 p03 C / C++ libraries qp20}28.c002 native code 4p | Bo$ application og& ISagé gf libraries gps oB APK file og eclE:cog§ REoop8u Android application @pc8 device onS—qog6 copSogés install apSupSaBeyé ocoa8igs sign apSqareSn 442 applications} debugkey(GE sign oy6{Goo2%1 opSu oBeS8E application qpic eaeg BB BAgorSehaye @ oBoS8E key GE sign agSoo$cTooSu Android g§ soGoreano platform gp o3(Gorco02 saqyoodqyoSqo application gor BEALE: GSo098u poesden,{gE iPhone (iOS) aah.eor cor8ig046 platform gptogé (APP store 032) aqjsogoSoxSgoxgS:00 application gape cqpbrayged aySoREcoareay FaosSu Android gag cgoSeoSeaxs eqtegeBaaagé 68 B8ceSes0r8a098u coodgogé Android platform seoge5 sa[GBaaqs Android application eqrogcSg> Google ¢ run eg¢o20 "Android Market’ (gSoog5u obser B.C. Tech (UCS,Y); D.B.S (¥.1.Eeo); Dip Info-Tech (NCC, UK) ‘Application epic web (internet) ¢ GAG ucla: GHr2GoREooBayeSoqy B&oxsi browser gors§ APK $808 download soyéi o8 APK §& : install cgSBee§ GSREeq Ful aogSn ASDAROAA application aeoafdGidin aGiuemnee: Androidapplication oo ge develop 0968 qoc00g08 agSc§rgé environment cobach wpSa8, set up cpSopScR grivra§iog6 cagrogzdlopSn 20 Android SDK 08 install 0868: Android 290305 application gpic8 develop opSa§ se8orcGooSangSqo Android Software Development Kit (SDK) @$cloog$u Android SDK og& tool sqeaco:onBgoos0m oecS develop ogSc8oSeo09 application of run B: opSc338, soogScaSarpSe8 Bah Java Development Kit JDK) installer (jdk-7-windows- 1586) o8 double-click cpbayé orBeoSdlgaoo}E: Set-up Wizard soso§a0§ cochevrdlep&u GaiGagrreor> ocpSqpic RSoyrzqdlepSu ule a0 Java(TM) SE Development Kit 7 - Setup ‘Welcome to the Installation Wizard for Java™ SE Development Kit 7 “This wizard wll guide you through the instalation process forthe Java SE Development we. Select optional features to instal from the ist below. You cen change your choice of features after instalation by usng the Add/Remove Programs uty inthe Control Panel fecha) (Me?) (ematimetles t AMAROAG application cqanofBGEiq aeGiocmonpep: Bie exes [ oN (—Conead net 31a) obcRG: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) forall fea Java(TM) SE Development Kit 7 Successfully Installed Product Regetraton s FREE and indudes many benefits Robfcabon of new versons, patches, and updates + Specal offers on Orade products, services and traning + pceass to eal releases and documentation When you ck Fish, product and system data wil be collected and the JOK product elevation foo willbe presented. IF you donot register, none ofthis information wa besaved, For more information on what data Regitraton colects and how its managed and ted, abe the Product Ragetraton Information Page. AMDEROAG application cqanofbGESip acGiacmarpy: ugjs eae 1098 Register JDK (web page) excheoadlen Browser | 8 8oSc8oSqav0 (GSooa5n JDK o§ install egSaophcaa§ Bioyé Android | SDK installer (installer_r1 3-windows) B ode install opSeelopSu cD { installer_r13-windows 8 double-click ogboyé eaeo0Svlseo8&: SetUp Wizard orccoalegSu @ Android SOK Tools Setup Welcome to the Android SDK Tools Setup Wizard This waar wel guide you trough the station of Ars Sx Toot | ‘Its recommended that you dose al other appleatons | before staring Setup. Tew moke poste to update teva aystem fla thou hovng 9 rebook our conpdter. (eck Next to continue. Java SE Development Kit ‘Detect whether Java SE Development Kt snstaked, @ Android SDK Tools Setup c=) a Android SOK relies on the Java SE Development KOK). ‘Sava SE Development Kt (OK) version 1.7 has been found. ute Inetl System v22-Sep:2011 cvs Sa (Qmecwscsep @ Android SOK Tools Setup ‘Choose Install Location ‘Choose the folder in which to instal Android SOK Tooke. Set wl neta andi SD Tok the oi fe r To natal a different folder, cick Browse and select another ‘Nutsot install System 22 Sen-201 cvs — ADAROLG application cqamof HERE aeGincma py: ea eae, (@ Android SOK Tools Setup em <) Fem a Se anaornroees B “Select the Start Menu folder in which you would le to create the program's shorts. You Can abo enter a name to ceate a new folder. 00 not create shortauts ‘teat etal System v22-Sep-2011. ces (toda @ Android SOX Toots Sep Ea vate Cnt B Menu\Programs\Androi Create shortut: C:\ProgranData Mirosoft|\Wndows\Start Mena\Progrem\Andraid.. (3 Completed Fa sot inked stom v22-Sep 2011.09 (oe Eines) (eres B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) aes gia co —<—<<— aa @ Android SOK Tools Setup Completing the Android SDK Tools Setup Wizard ‘Andro SDK Took has been stalled on your computer. (ick Frich to ace the ward Start SOx Manager (to download system mages, et.) —— 3) Stee ntdinerny prot en ‘Yh tla sh Sources (dialog box) & SScGchgons GSorps1 AaAROLAG application cqannfBGEBEep ncGdoconmp: i co00 ( mn ) Android SDK of package gic oofGpSe0g soof:ichagé 88 og §qora® | | caf orrgcSg§ GoScocS Bt SDK manager of gEc$ocloo (eqyorqoSgoo) | | qoRanga003E:) Refresh Sources orcBeorgifog’ cazacSdleo088: download geqoge*sloeSu ‘Android SDK and AVD Manager Tele! & (Desai ‘Downlosding Andtoid SDK Pltform-took, reiion 7 Instaling Android SDK istform-tool, revision 7 ‘dolla ald an manatly rece Installed Android SOK Platform-tool, revi a aortas keeeS APS eon! (an) ‘valid Ando Vitus Device.) Arepiate Andi Vital Devi X An nid Vil Device that Fed loo. Chk’ Deas to see the rer Windows (operating system) § Android SDK project gpiaogcS folder ap: orpSexac8epeg’ epSep:§ space gp edlaofclacommand line apt GE socgSaySqueS GSeoorafajo§ folder fei name gpg space gtarS command line aqspoqE secySSeosTaxgSu C:\ eaeacSeg® apps op s998 corn folder eaoocicSeba§ [aA GoGdla2—Su B.C. Tech (UCS,¥); D.B.S (Y.1-Eco); Dip Info-Tech (NCC, UK) SL e Je Ba ) wie e28 [Andtoid SDK og sa809 tool gp: om §dlofao9§ folder or89 §vlargSu qi tool qi command-line (B§ esTogas:gopS GBeovrdfer§ system PATH 036 C:\android-sdk\tools\ ¢§ C:\android-sdk’\platform-tools\ BR GS geboorsGExSE grtgr soaokc(GeoulaogSu ahgaS:GE tool gp:09 access cgbcSo8E: aoa8<8Eqp folder qoro8 agororagSag anes 20095 so08a00 ago:codogSi ay Eclipse o8 aoabi(Qe: EclipseaogS goosen:(S§ Javaseogo5 IBMg of oBrcarxepSapeshquzopeg §Ea0ph ofoqSep: BGaooqpe open source programming tools sogaseo: (@SaozSu ercacacSegé Java community coogi: developer seoto}e§is 0098, Eclipse Bor BoS(GHo8 o8oSofodiy aySch:gSg Integrated Development Environment (IDE) (5 earqeSasecpSo005u CD § eclipse (folder) oB C:\ caao8ado8, cgrcop$eGoS(Gx eclipse (Folder) © eclipse (application) o8 double-click cpSqyé cobecdorqyoSgoo1 § aw0RE: sas08s08 orcScoavlepSu AMAFOAG application cqanofhGEfEp acGe acomongap: Gr onc0 Ie INDIGO | ercpace uncer Select a workspace Eclipse stores your projects ina folder called a workspace. (Choose a workspace folder to use for this session, Use this as the defauit and do not ask again Workspace Launcher o38cop8: egs2a0§0 orpSeaor08§eon9 C:\ 232008 | {aps (folder) e029 path cora§ safG3Qo8claopSu | | obs: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) aor see jo ) we oxao —Ffeetipse og& meifgGoocBovsevsarn feature gor soqpemfer MimeSch enuecyprdegt ecg qalegSs moleoriqf nbqis5y> Eclipse 98 powerful GearaSaSenq ogheyoooss system resource dfeogSt soyhafienoroe>t Eclipse BopeqaopSg> egzorgicorGup aeoagé Eclipse 08 88Q: oofeslo5 BFufarfolancSu GSREagE coagorseS restart qrrGclonghu Eclipse avg§ oBSogSchisixogzo8 project qpimGS SeyrbgogStovro0—Su Projectaptes Workspace yotaa[g6 con:§anpSn Workspace ao38 69,024°5 404 90g8 (CGooo:Goog§soo8E: folder sofGS orpSfoopSu Windows cerkgSog6 cgi workspace gptel folder name of soepSeorep§ space gor ovlegé (Gago nbs: saegSqSaochaorcoc}sop5u gi Eclipse 08 Android soagoS Development Tools apr o»Ba08(gé: 9. Bdlipse of g§(B:eyo08 Help > Install New Software of click eg60Tn 4. Available Software (dialog box) og& Add o8 click egScle gs edTeosare§ Add Site (dialog box) § Name og& Android Plugin vg RcBoogGolosSu g- Location og§ huips/ /dl-ss.google.com/andeoid/ eclipse vp QoBeoe8s1 opSu cRegac5 OK oR click opSslegSx (wEorngBsocbageSy, clang) enbocboreicigaslgac§bs GSagorlogSn (eosoBoarraokel Gepee8 onge5go 95 - 22) o@& Gabel ASDEROAG application cqannfdGERE aeGdncmoqep: ost wen (AG nap egos sonyiefOIep! ) Cae) “Find more softwaze by working with the “Available Software Sita” preferences. 5 '0.9,75201005071157-36220 (0.9.2.201005071157-36220 show ony the net sons f aa tae Cinematic F coun tems by exes, ‘what sana inated? (contac al update se ring natal oi required softare @ Cena) Crer> C=, 5¢ Available Software list cbog& Developer Tools o8 eag.9f8 (GbvlepSu Developer Tools a cos: check box og§ click-check apS3qgé seo0f ols Seo Android (Dalvik Debug Monitor Servet) DDMS § Android Development Tools 088 coc$c8. select apSagazdlogSu Next of $5clepSu b obscAR: B.C. Tech (UCS,Y); D.B.S (Y.I-Eco); Dip Info-Tech (NCC, UK) yu) i EN Eclipse Java EE IDE for Web Developers Frere a. t= oem. A\sXE2OLA application cqanofdGESEQ aeGimemaep: I [rome — veson LO Thre no stadt. Coan) Cheeta] Whew ony thelaetverins of mabe softnare (Eien naar aay tae Bh crou ee yc) What sande esate? Eh show ony sofa appcableto get eect (© contac pdt tes dng inet nd eqn ste B.C. Tech (UCS,Y); D.B.S (¥.1.Eco); Dip Info-Tech (NCC, UK) oo Vestine [_ ADELA) application eqn BREE so coconocpep: an a =z = at 6. gfeoane Brag’ License Agreement of Accept oySGreqo05 Finish of . Eclipse o8 805: Restart opSqvlopSu qroaoB coyrcovgEro§ Brey’ Standard Android Project gp} oon8 o§8ia§ sosokoo SIE obs: B.C. Tech (UCS,Y); D.B.S (Y.I-Eco); Dip Info-Tech (NCC, UK) ug ooo @ Vsive must bean existing directory | Android Preferences Ktocton | sete Thea OK Tres bli ony ede once you | =a Plug-in Development Remote Systems Run/Debug Sever Team Terminal Usage Data Collector Validation Web Web Services ML Browse For Folder it Apply Te ® [IB Adobe Type Manager i » MB Aleo Software a ADAROAG application cqanofQ84Eq acGdvconarpsp: ws coco 25 Hello World 8.00708 ocova§: Android Project ag soak arog’ sonicge sogarsoagSion8iG: cqprog.y GG Seison§ aoGtqStsd: Hello World (program) o8 oon dlogSu sopfaon(G& a program og8 engocp @pigo edliln Bm S:crpSqo5go Eclipse a9p5 coofarcdyohoong§: predefined template gpg cBo$ project soogaS o2pSesox0Seuroyorea00 2009 project shell o8 copcos08Reoa§ (GSdlo09$u Belipse og& File > New > Other > Android Project 8 egsdlegSu NS To GORRaQ BHGHHAgAE oF: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ‘ Esa Wizards: type filter text G Class) j © interface 1g Java Project 3 Java Project from Existing Ant Buildfile 18 Plug-in Project » & General 4 & Android ® Android Project ‘Ju Androidgest Project [ff Android XML File > @> Connection Profiles > eas ~ ® Ce ee aa) Eclipse cB ooeaiiae(BS run G§og Android project o8 ar} qeSelE estoy geoshcogSt oxemocsloBgpiog§g File > New > Android Project (G6 BBR esToghEoopSeopS: §ulargSu New Project (dialog window) 038 BobgodqueSRcB sooScooSeagregegeyE AMEFOAG application cyanafBGEdii acfamcomonpap: wigju ence EclipseangS soqpaonie}ic8 project qsisa[G6 28:Gor83oqcSqnpSicor:s0¢81 project name opBgarg§ ocatahion8afia> [§So0§o08u CamelCase caogSoorogbarg8 soafcayiai: GBoopSn (CamelCase aBangSgo McDonald iPod: McGuire oa99§ ocoorope 00914 s orbebigS orBahifGe: ogebcobeGors odgorpS:oorsiahs ooBahsso(G8 GepSieqrarr:ap§ eqza}: (GSoo5u) org project of HelloWorld vy coogSovrdloeSu Jo Boye build target B ageqo—Su build target o> gF project axg$ eS a0} Android platform version 200308 orpSearoc5gacd BarpSe8 build tools apie: eGGoeSu Build Target (panel) o0g6 SDK § ofS wS{ge} install ogSeosta09§ platform gpsg§ add-on qp:o8 or§:802 GesSu eqocbatioo Sah: mar8aiichoos ogeehaSclepSu (cRe05 Google APIs oy sovpSgenos tanget gore oogtdlgéu gEtc8o095 Android platform 290305 Google «i g3& proprietary extension gp: [g8aopSn) Android platform soogo8 Android Open Source version aprcfors aaop:G(GE:o> oguelGiobs aqooBcfeGo8s qS:clo0pSn (cob SmacGeoegqris9q gSEgh Ben? cophogbroS:on:8, BaoSaocou) 2. og project ef properties qpro3 (Ga$qepSu application name soe5 system 4§ sv2gjao8Scar0 af application #f aepSyoe wcBa0cB000 (g6 dloogSu Hello, Worldll! vp cvreBoSclogSu (B88SEBoS. onahsaprgé worrsBoR[G§ ovpSeo:REclo091) g- Package Name aog§ Java af onpScaor05g Java Construct 0089 gs. | aoaSu Java og$ source code sontebee8 package apraa(GS o8:Go:8 GonoS qoedistavgSn package RorpS cacmsdletn saclaaEg Bo project 8 java class ees salejoro8 object goo? class maiqt 60g. qeoah coe: B.C. Tech (UCS,Y); D.B.S (Y.1-Eco); Dip Info-Tech (NCC, UK) (at } 9. Project Name aog$ Eclipse af ongSeaoac8@ Eclipse construct (§Sa0pSi" | eR ee (5) ae te : aooSpoScorsore{ao§ FBoopS1 Android ogSeosS: package gproo9S application o8 sign cgSepogé sse:dlaopSo8u Android application apr borogcdy BExjogqriel soeg§eoiogSy2 packge name of SBE $BS:c00285 domain name af eGoS:G§ svpSeo:{eZecpGooSun poe — example.com s€ongaheogoSgo03 §€09 Android developer ao age package qpio8 com.example.calculator | com.example. boardgame o20,5(G& sepSevrcapfarp5u afjorsgSog& package name B com.matakana up soopScorsleaSu 5+ 2880): minimum SDK version sSo0pSqo s0§§2: minimum Android version (6028 API level GE oBSonx{jev5Geop§a0-Su gE:098 gf application 8 run ep§ oBos003& cfaobqyo8 [$8opSu API level 965, BGREa0qy $48, cBcoS2045u oByo09 oBo§ application o8 copfagé:8EopS BBELTIVOBGuv2 cosqsoozoS aprepS (GSoo~Sn cogaoaofgpiac8é: a8agé New Project (dialog window) ax,8 onfecoo q4o54o0) Ga0088: BSeqcTepSu si, it AMDAROAG application cqamof SERED acfSmcmargap: ob: B.C. Tech (UCS,Y); D.B.S (Y.I-Eco); Dip Info-Tech (NCC, UK) _/ i ) Tog onaS:88 SBoogoh manifest file sighs exae en98:§8 manifest file98 componentainra}zo8 aulEropSrqioSaocScorong8u gfr0098 gf application og& opSoopSo8slo8a>98 z9800 building block gp: gp eSarpSoR{GSarg5i opScReor> gf [oeqe5 permission grief ofeoboogS oavpScha8 gfifGe000 file (GBa>¢S0 eaoacBogé oon 8:§6 manifest file ggqoo8 eopeoaREdloogu manifest xmlns :android="http://schemas.and: package="com.marakana" android: versionCode: a1} AVD og& Android af epSaop§ version goo install opSepSo} soddgodol a0pSi ogingzocqzocgoSg> ofo$ SDK cdog& ofS install cpScoox}eo09 platform g§ add-on gpraoc8E: GEvlopSu BRECRBOBRoooc8E scBeBogE SD card dlclaogSu SD card of 33G8Eo09§ ooncnd® Size og aroSgoSqulecSu oqorqoSgagQseo8& GBctareSu ob: B.C. Tech (UCS.Y); D.B.S (¥.1.Eco); Dip Info-Tech (NCC, UK) Property aaeesennenees om fase Abstracted LCD density 240 Max VM application heap si 24 Delete : CO Override the existing AVD with the same name Ccaneet) Coreate neo ) AMAFOAG application cqanofGESiq noGiwemnpag: ome Ge ) ana’ capragrdcaromantig: conch ei Create AVD oop $BcRcSa058 4§ caooc8cl sac38: Emulator TooodlegSn sss4snmone |88o§.B:c002 application § AVD acTog& (HsdGoBEtoBRuos wab4§ ooehE |caas eaqjobyo onbqjcSongSza00 GoopSu as8iyo Sensor aps (GBarzS1 oyfcor> feature aoore5:8:Ul:g> [B:9BREtBRurs woodeochEro0> (FSclanghu ar _o Of obs: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ao—~ ee AAEROAG application emf Gedy aiGioemngee mgt — 5 Android ofeaBdsftsap: ‘Android application qpiBorgSesoocbepag’ oboaScSeGErgpe GE0p8 componentqaeyo application onSqcfifBic8 socSeSon,SearodhopqeeS item gp: (GS5095u application or6 908 oor€o§rorcgé sacocdg [gra0E:ogo:a09$ ajton8 45: Top-Down approach of zoaheGa0620pSu application o8 design ayegié screen qpn Feature greg S:oRaoqiSras: [Sh zocphaoagSagShaync8 oSienqoaesSs avcanerepich onhGEeqps ecorecna$ yg Gafiors soolgin0d aomngSr ee eSincS component apeasepSeqS: epScbenS) adel gSoafasoo w¢5i eBaSarpheocqbe8 opSaSoc56 BroGorSousSoR gfzeo8ign (BEsroc0! u G2 oBs0mg pS: soaoEs0§ cooSeogpoee Twitter 03286209 application or8903 orpSesoon8oGarg$ aclu user a8, status update qpto8 post opSSEqScSara8u o84aS:02 user avp$ agai friend gp: or&eox2 post gind o8$Eq§cSaoabu ceconivloocar2ozqpigSqa095, twitter app or89s90308 seGdavays}: apSesoréqoSyy: GSa2p$u Boood Boyé user ao9$ S8eh twitter account odo8, log in o€e§ username §§ pass word of s005qo88 Ea§c8arg8u 8ofa32§ secoa8el epSesor8qyo8 aprqs00305 screen ad:g0 eSaa5sop5u sgpo8e08 sos08GEeyf ai} application o§ agfeocScoafogeScoxt network (u) ae Connectivity agisophcooGsacgQo& sacaScyScooGangSi a}eGaeSgoR ox] affeoa§oooge® cyS8EaopSpo (rRGREBRo00 online (GBagg} Hoge owitter g data goo} oBRosr0g6i3$§xg local cache a3, ajcorrqesSusrhoBgoreS egnoBcgeSeg’ sacpSagSqqee§ ofcsoasg background service orb95§ database oo8_08 cSaScosve ssn exh background service 8 (3:gGo%EroBRuo> cl gEcGoSangSg§ © run co qeeSu Sgarragé user 2998 09 application of ogSc$oSare5q§ og friends Rai status update qptcR onfiBr cogihgS onc(GesS 20g qeveeSu secochog’ cagicg:9cax sayoSqpiogS, gowrces:ax application 20308 GioS:cao0 swelScBaoSqrBqp: (Ga2~5u Android af component gpxa095 gideodqchgpr8 cocorsEsonpSesSepege orbeqiis 250058 opS8Eqh mnogo cogSiccna8:1 onbgqyfi0r5=058 vfo8ieoara0g§ aaGErapic Bahgenv package orBqnfGS GfoopSecléroS:BEqfaooged copSiemak: aosokel§ cqeSegeoslangSu gy Activities apt Activity BoogSy> soGfooSG$og8 BoBERBoRRoor0T§ user GEqareh screen oo89 [GSccoor~S Application oobgogé activity qpig> §REE: user a0g§ gSio}03 sa[Sfaooy§ opreyeSorfiqieS soopSepSere ForeSe Activity of Gfoorconfsooge8 website GF goe> O ISG: user ao95 o§ web page qprc§ ogeaieS angrapS oysteopGooa}oRo& Android application gp:ogécogS: activity AWALOAG application cqanafd gti mcGioemoqay: peg? §oop5u website ond 908 home page Foo0}o8.o8 Android app o83 ogécoS: main activity QoogSu main activity sop application o8 0028 launch cgScBoSog ecToooeay GarpSu cByooo website o3& web page gp: mafiqiés BoarrsSy ag§:oroho003=808 Android application ogScopS: activity m8aqorda URgapS9 agfroroSccoaabu good a}zsacggGons: web site orSqarp8 safer website r89c3 opSr029 eaTagoroSos03oho8 Android application oof 9copScog8: : application orb908. esTogoroSecoon9$ ows Bqqyé Contacts (application) g contact oo8908 (3a$.qS+ Messaging (application) 08 soo8(§: esTogsoo3=8.1 52 Activity Life Cycle Activity oo8qo8 8oRE(RrQaocBogSeqecBRuo08 launch opSqBEtoo95 Linux process 08908 wf o8:a(gés ab:o(SEogE:§, soqpog, User Interface object gp:s30305 memory 03 Gag0}2§ soa§,3 ofGEx1 screen obgqg:aa2 set up cpSo (BE: ©20fB§ arGmco[BrapsoargSu cha] arfrr00S0r wf o3:cos16099 activity 2965 sanfesgSoqpqyoo> (BBogo#(8: user op cobe) cobs) ox2o8 activity gph wcdcocBuh BiogrroaSsBeg’ BoREroi gS:kEcorrg Seq GScosor70Q5u |QoBESearrolozo§ activity life cycle of Activity Manager (¢§ B§eqSqei n Activity Manager 0098 activity qpo:o8 of 8: GEs1 qySo85:GEag§ oBGrqSBE: gp28 cpSesor8a098u gow - user o application 8908 ocows}raaleS ofS 0008 launch oySofeBegé Activity Manager avg§ gEtel activity of oF 8:c8c5B: screen ecTa8, o€cRoSapSu user o> screen ordachage ca | Activity Manager oo wosé activity 08 uxs08§:8ep holding place als | onfcSoSarg$u ob: B.C. Tech (UCS,Y); D.B.S (Y.1.Bco); Dip Info-Tech (NCC, UK) e agus moe ) } “JexfgaSicorrWS user 065 ovaf activity 98 B§oyriclen SFoqSlGSgo launch cgScus8Sa0pSu eofff socor8 HoapSaoc8 soa}ro[GgSeoo activity eussErqp: Bg destroy gSv8argSu s¥yo0> cooS§ activity soogo8 memory ogScose eS cxf cogepz0g S098 user interface af Gf g§: speed o8 $8 c8rorcScorcoosp5u Android sooged ofooSaqearxGEingS aGoicySchighqyrsooges ofa 6 cqpoorGErg§ soeomoreptaft eogeycay! Android og& application af cgielGa8ig coriepe8 BuScn coBicfeGaErqeoraoeSoo08 ook SaysaopSqprcR AlSFeoreBErdheoS $EBierg. 9065 Activity 0083 GoSaog:oyoxea09 state gpio} cabachorqrb qo, wqSEgeg’ 03,88 225 Starting state Activity ooS;a098 memory avTogé ofearrey oS:098 starting stare GS anp5n g&t soe(Gaq Gog esToz048 callback method qpzo sogeGe8. run SlogSu developer co83:eglB§ Bac Gmogogé callback method gp:c§ sobconia§ (ork8oSkEgE co[Geheo0 qGveSu afizoéBioo running state 8 cepeScovssu startingstateg runningstatec§ soogra2pS 0305 qcbqif computing timegecos§ BeSca socy$or afGiBiongSu BoSaopSqo ogeBqyoSgSteo> computing power oB soogtostoprargSi soorrsocbaxn{g§ GoRErmobcoffofoogS: aoog: apoSeoopiGorahn ayrohogeSa8.eqpeBeans activity gpte§ ajobaée destroy rm wepSvb Ego a800 fsoayrBeleio§oku user on Gfoprenaa$s afreugregSy AZA@ROLG application cqannf a Ghifimy acGimcmmepep: i LonCreate() ;2.onStart() }3.onResume() obs: B.C. Tech (UCS,¥); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ‘ Running state running state § activity go cooS§ screen ouTog& Seq: user 46 wB§aoop$ ocpSaq5oq2058u gf activity og8 oxGo8 (Ex screen o§ cB(GEx button gaic8 R5GEe oxre§ user a caSesorkqnSaaich: GB yxer>dfefo§ gx activity of BrongSep qpbeaoréycS focus activity eyoozSt esToogin woehgord¥ihogé running state focus activity 0989002 §o0p5u running state Focus activity a0p8 Stosteurmm§iog§ Geovrdin§ o&:08 cwlBbgo soepSegScogEa§ercgeS oGeSaop§ memory g§ sorte resource gp: watch:o8 BE:8cB.a065u Pause state Activity onigangS S:npSep focus cosofagé efeoopcasbeoS: screen out caf Fegcooiad [GbqqE GEt08 pause state vp ooTagSu cogpraen(GE anos sooonrc cog qecqeQuln soolrkiy BoRETRBRoora! screen avpS coot coSegecy Rcarrdlaze$ activity orbgor—§ screen orbgofo} ogaori98 Boo: BoopSrovpcbcogSs screen evTogS absopreyoicyp: effarghoogs: G6s0 cnbiggax [G5REcarad{ oH. [GBo0pSn souprconHGE pause state aogS activity cnige! 09,038 dialog box gpt opcScorsg§ wmoGeregd: GSorchooeSu pause state og& activity gor qSogoxaopSu pause state og& eqaas> activity qoteopSeogS: memory g§ axffox restart aySfeE:oog§. memory evTog& object z load apScoig&B: GSecor9[eIoE 69.08, orEcSodygioo ESofG5 eof: activity of 208 oonfofo8:GErc008 qprgo resource aocBorcoag51 Stopped activity ¢pt8 memory g sodifecge (GjoSaqjqioS-86:c8SRECToopSu Destroyed state Destroy c9SeSob(Btcavr activity 2998 memory ecTogé efegoorpcTn Activity Manager 0» of activity a9g8 ecfeoBeorp up af:{GoScGohB: memory oly yb SEreScSecoQu activity ooq08 destroy oxd8og& (save ecgSqearse090 data qote8 save ap6[GEx0308) ayScaorkaq5 saefjc8 agS$Ecor0g5u sfaoo5 pause state og&Goa0> activity ooBqaxpSaopSt destroy cgi BE: SqGEcorrpSn ABfGScaorelEHp§ save opSFExIR, woonyfeBraog§ cqSeaorkayhefio8 destroy obsctigs B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) Barkear nqjohorSqiehq> ~ activity oo$gor95 running state og Soqae8 SBGExqr aosogStaoaoh soopiqicglSErg (BSqusSuy Geo soByrSaorrohg) coqgln running state og& Roqa0g8 geosSeopS: user input cB coakog(SEt Gieo9S: GERECNaogSu socomieyo8 activity ondgon98 stopped state og8 fog ang aBGEtc8 soovacy5qy onySeor9 up Goo avcSgo5q§ oquln gh sos0k grec acd yoSqyo activity ox go098 SionaSqp Focus coao8 og$ Sag(Sé: oGeq(SEx BEegEreg’ RogGEr vGeg[SEr0}, ovToxEo0 sacGaEEr BSao9Sn 5-5 Intent ep: Intent oogSgo Android platform of ofeadgsq8cSm8&:_ building block apt aeg8: soqSsafée cor.agcans message ap: Bdmphn g&:oR a9 activity eoS9eR oorkcoas aay fgjo5or951 service orb 9cR otas Zovgdd soapiondogf ag §(Beio0gSi a8.orgSreu708 agoSagh garcS oooh qpreogS: (ORE o0¢Su ga \ ude eae ~~ [stateal oq,og6 ogSes028a0gSo008 pausedstatesl og.og& opSeaorEaFclongSu | Intent qpso5¢8 asynchronous 99000 GoogSu so8yooSqo intent o} ayoSag§ | eax code o968 intent abrarp$ B cor8q§ ec8clu | Intentor8 garpS o8:{Gorq§te08:098 explicitaosS: GSSEoo95i cepapcbgSeog: | sop$ implicit copS: (GS 3Eo0—5u explicit intent qfsog& GagoSears sender code 2068 cooS8on08(g6t receiving end og& eeSo0g§ component (g& / § epSc8 soc8eomy ev5Go0eSu poor Gacy’ ofo§ application g activity a9, uuset avo: web page or8908 gScoore§ intent o§ Boog8 sBolGu affo8.sGoyé Asa APO {Gl application : eqamof SHERED aeGSaconcrpap: ' Sees (oe r a 8 web page o8 gSqpog8 coogyiog wepcxdqees application oo899 a0g8 qedesor£ qed BreGardomog’ ao[GEobemarScorcvesSn (web page of gfa§ Browser application | memory e638, oxcScose951) (Br980RE: BRoorcdagé Browser application oo8goodiem §REeoa38u 8, application apt sa(GERcvrayé goosv:§.oog8 intent ai copgsige} 95 es0r8q§ epSo09§ application o8 aeo}rGjepSga8:e7 system oo avrcoseeSu app cobgc8 default sofgScox GEE cogS: }oBgo8 ofGqesBEare5u desktop computer appiagSaopSs afdqiehioreS [Beog segoyoeu Intent apie9g8 coo8$ application s906:§ Sco! =>: application aor GBco activity qoig> dlo&ocSaocBeoscong cal ag GEGoR exoacSdlanqSLGjog8 203 $80 l2095u tot obacgs B.C. Tech (UCS.Y); D.B.S (Y.-Eco); Dip Info-Tech (NCC, UK) SE ‘E 0) gi o700 a. is Service @pt Service aprargSoos bacground og& run o4{gStascBo0e8 (G58: userinterface component gp: o§equ gEto8o095 activity qpraao%Er0& saoySay6(GBr user interface o§[G€t000 op:GoxecoangSu screen avTog opSarp§ activity § ego098 (GSeo run ogecozo095 [GScor service qprar$ BoREs{esGo8Goro RE GegoroSarg5u poe aBqagé music player o8 play comqgyS[g§ soo: application gpro8 ajzoq[SSzizu ahoaqpog qfro8tag or8qc5 RoopSy> wre eapicgiooS§eor> Android | Service gptoopS cor8:g&045 operating system @f c$se5qyo5{gSeax> Native Linux service qpu server @pzg§ lower-level component gp: expoSclii Service qpto38 activity eprooc8 §GR:08:600 life cycle GoopSu oor GE: |cocGaaag gS Biahi(GE: socGaoegans GoopSu BEE service qy>:08 program |orgSesos80Sco0rgSie developer o> Bfrabgo8 aof3BEr GSooSn user oo Bowod system ar Bod§a8 BfrqSBE: ovposepeq 808 GSeorr0[e0§ developer soaggé service gare eorkufcSioSoo02gSte> ax} service of run caf (CPU 9§ battery ears) aor app gnrg§ gleoopsdqeas a€:G5qor shared resources 08 eo8zo603 aigeg(GEref: oReoa§ (Bg) soSogS qeoepSu | Service ondgal life cycle o8 or8uoSoreo5 go arqS{QGogE 209 $Ecto0pSu Service on8go098, background og& run 2098 aBGExe(eHo8 s&ong8 98:Gor thread 008 9¢8 amop:QaoaSup 2 oshchogn Biajuas cogi$eocaf eoS zocor. service oobg08 cabcaoskeqas weGoocqaeon’ 28:f9ar thread cobgcR soa}: Bsale@HEl application — cqanofd Gigi. acd ocmmmp: GiaweS pFcoarSn oBa3oupo8dlon user interface arp o8o8a22000 ogzs08: agataoesSi Bave(Seocgefsqooclsog&q UI (user interface) thread upesTeoxs o&e application afi thread ogSoo.qg/8 service gpieep activity ars] sa0gog run §&coa0p5 g& Content Provider ap: Content Provider gp: s$0095yo application gt soqiStaiét data gt gio share opScorag§ interface apt (BBo0p51 dg default soxfG§ Android apS-tysteni esl eS application ‘oabeaS) Seass dat soacbiel olen application @pea® ompeyosagnecod cfio sBiso8, (Scqcon$ soogeS appli- cation on898o88r08 cBoSRE sandbox qpraocgée§ tun dlaozSu data ova gghrdlon intent qpeoee G8 application aagjSiqS: ooou FES gfen5 Gene Ricans maqeseciehes mqbwene data eer oh eegaieons agScoce content provider qpuen BEaa6caqpSevaa:Su content provided oh API (application interface) 998 CRUD principle 08 coné:gs c$aSgoco axa obscAg: B.C. Tech (UCS,Y); D.B.S (¥.I.Eco); Dip Info-Tech (NCC, UK) (t AL 1) uJ ooce “—~jcruD principle s8oopSqo create, read, update and delete usar database 38&ep soa{GS operation scorgc} aBeGlBE: (GSo2g51 CRUD g§oc8ooe8eo00 wikipedia § gftcofsqioBc8 axooxBaljogé aoy §EclaneS1 Create, read, update and delete 1 onan ta eet nr A ea oucnty om us cmt oa ne Et ™ om CAE i on OEE BEET ee ose hee ptr mm ma pn wh i a a (Site weet ce User itartace (20s mete = =a oa sow vce dena F rnpe mis aan enn a a sc ty Mabe ar he {Rate sac ergs eiecceaegewee| ene ‘inctaabentor puma be in sen nna gs en pan me ay a ee en ee te om oe (a ayer bose Sat a te AD@ALOIA application eno} §S4hy afi oemngee ww eco ( E q \ content provider «f CRUD interface a9p5 application oRei sandbox] |qSRBohqp:08 coxffGeSRrcorcSBs ofGor application o§ Goda0c8 gf Gor data gp: eapeSgco share p5$08 exorc8dlaogSsu5$og& sapeorhEclaog$u Database Android system 2998 ghungeprogSc8 covscBergooS soopifGieqaneiu gous Baegé Contacts 928 application qGsB, user a socSaySogheSeBEap soxjoBaoconS contact data sarrefio8 GangS, content provider oob_(GSo0~Su obs: : B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) (/ E 5) uu cose Media Store 2998 on054g§ BaEsqrt o}oReovs SSerodfrgo8 Béigg§ gloog Ro§ eaoo8 goSaop$n Contact (app) 02 sa[§a:08:00§, application aoSa0bo08 (S00p$ ContactProvider o8 aah: GR: socdageSyficdypisGEqomqcSzocodS Raver aGfeocphqngGoR earscbvlargSGGogé sepeorfE longs heh, soqeBvocoBB8ig data storage g§ abtoyBEqare§ ofoaS user inter- face application o8 -8:{G0:8 gogoScoxrcBoS(GEta045 system ecT§ application G:8R coparvagabigepogScoaiicnnais: aa8oheaGE:cSorecnieil& gpige 228538, opoSqpoyScogS:ann08: SBR oScoypSecglZBoor95u Qo0> Boyayé Asa@R@IE application Bom aRedtn adsocnmeg: wghs rao user 2998 BREE :GBwoei gakic) Contacts (app) of eoftsd xofGst Address Book (app) 02808 install «95: Contacts (app) 034 data gproRo8 ewopraygSa0c9o8BorgStovpo8eog8: WiFi / Bluetooth / GPS.ozo0> feature gp: Home screen ecTogof widget qpror8{G: 80586 gE 00308 BRErqfrogaSagSa0g§ opSc§: gregra99§ content provider gral g'fsrsta02 ayoSo3. goo}:{Gjov standard Android platform exTog& agogai ofoS3& application gp} coSedlErcop§(Bt aoohiGagap: sosokeGeqio8 of cB:o>9 saadi{Gjag08c8 sBeaoo${a}ecoaopSu (HTC Sense 0358) 5.9 Broadcast Receiver qt Broadcast Receiver goog Android of system onSgcp:e¥Eep publish/ subscribe mechanism aySesor8y GSap5u receiver BoogSqo oo§aani(GG ESoq§ g&:x8 subscribe oyScostear> [GSq6 event onb9 Gyre soardboE qonea0 code orf 9202 (@8a0p5" system BuSo8Ea098 BBq6 event gpec8 onGGah: opcBog§ brondeast 96g anpSov0 (GSanpSu oBa8, eqeBeyeScgyelain$ oxcle coscogs, Géear SMS Geyo5GExi woEesTaBg incoming call o€coABE omre§ BOaScheh BO socbogeScny BRuray og Go8Es BeaSE: Ga0g5r BOE [Brsoo5ogcSoqy cBRasn system g broadcast opSarg§ soeBeaGeage oaBevig! ory BoREugh: clclogé boot egSEs eave wfGor system aBSep event gpreo,St ZevoopSn B broadeast event apre[ago§ receiver (qprge)o8 trigger (gay: G0§8E8, GarSor05coa0pu L ) obs: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) 1 coco public/subscribe mechanism sSoopSyo message or8gei sender (pulisher) 9 StengSep receiver subscriber) (qp:) 38:8, message c oBo5§o58ogo5e¥o8 conf ofoaSeq:agoon{GE: eRe SagoSyhd messaging pattern (GSo9Su (message BapogS SoBEr§ oR el ooc8Gogs SMS @ message gic sBc8lgE: ev205clu application ep:saqiSralSfazor saG$aoap§agriegang§ oo gricoph eas omanennefG§ asensSyupr machine code message qync8 o8cS(SE: Sdtoo~Su) pub/sub mechanism soefoé: wikipedia g qSreoEryBqprg§ gh Gade qpc8 eaoreBdlmcBEi 20g RECS Si “Te Sa er meer ae seers om wort cern pipe emi the mem Maem eet ms et ny ett on Yn se da TY Aci ary ce AM rpm ig ‘Sram hogan BOOED asp Ey aspen wanton Se HST eau cyst on ee Fae a ee ee application cqanof8GEdip aofdncmanpep: Seat rt et ers ps on tes) rt me i etn, mn cing, a Ne sentra Senos doves hey ee name Pomme Pew start ey arp pee Sapna anne me Disadvantages te ‘ern np ope amma nora emg emt Tp Ph ch ee Se wcitmprnosn nears enrages mernucatyomsrety mb resp sie, te ng. mpc a ogi rm SST a re tn Pl SESE ir nore ates an a ee Te prrecarpecesa cova pen sesgeewnte stn oromnipa tte nt mane nica ty tier nh in edn ‘arte erences Ss pt con an tre bone yo nna en (Cictcpunn cemsenoyerbeee tase mp try tat os mate An ed pi i es re es er eae tonearm chs TL ScD a Py Reterences _ == sn vt ir Extoral inks TES pte teil ai, ont Patera es LORDTRINS sername een en an oT a —— Dafinton oa ‘bem sts anh be ety ny alae el cag se 8 md mma B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ST ADALOAG application cqanafbGiegicp zcGirconmesp: Mya Oieha Stachn ai o he tees HY amen noe yo pr re en ST a rr nec ny eae tp ‘S Objective a fot cotton ot ee ot ph chorea ee aa co hang eens eee pce i, COLETTE cece ae oc eae scam oe iy ey et ema i pc tian Momecenbarontar Dtacow ew coset ponent samen maser be nt re Pen) ge met re te ey ate SESSA SSI ccnp bt eat em any apn ty =a use vt Pat wo 1 Cie he oe dr pen pean TOD RIS Spojemesnrat sure Theta ser ncn ao i as ry cng a rpm hE ay rs pe ery Decor St LP TAA ane nemcometnampne payeam s nt se p Sew aieo vot B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) q 0) J uff ence [oquogEcageagspeors twitter poorg§ GoSaocSqay’ GRE doBQuorei system o§ dlolog’ap5q§ update (service) 8 eorEcoc$areSu oR oor SE afoooge5 (developer soeg(G§) system of boot up cpScaré qed B88 6S efatpE: system 9 agcSg§arg$ broadcast og subscribe ogScostqeoepSi saconieg arcorrenqprsa08Er08 cRoSefoS:a9§ application qpiogcogS: application 1 w8cSe088:e0899 028908, copS:ccnoEs! application 89g | soo: application 08908, copS:e000&: o80S8E broadcast qt o§o8:8Eo0p5u Broadcast receiver gpraogS (GEa22a8 20288: ordorepeopS: wfarp$aofGE g&: Roos memory ooTGoog§s active sacqsocon(g§ run og(GErefe evpoSaon Geoo8 trigger cgScScB SEs SqpopScoslogSora gEtoRoopS activity «891 service nb Boyd ax orb9qc8 of[GE: GSeoo:$ code oabgc8 easibigeh execute eqbenss Su 50 Application Context ¢p: coger cagtag:epoz& activity gps service gp: content provider gon broadcast receiver eptcodfesnic® B§ouGi g&:08, cooredracl&) application 028908 GScoecor~8u orgcSieBoy& cE:o%ooe8 application context oo8gorgSico0g&: §[ejecooopSu Application context 38202899 application 089390308 voSao0Sep compo- nent gpt sosre$: Beg run e46ar goSoeSg§ (3508 (environment and process) (@Sooe8u g&:2998 application or89ze0g05 seo8:o8:ca20 snalS building block component gpisefao: seqcSsecooSqpr data g§ o&:G5ape Amdieoidl application amiaeaty erosions fu ence resources 8 so$cong ofcB:co:2095u application ondgei (activity GScor service GSeo) broadcast (GSeoraa[gor eScopheoep{GSco) ocoeape component «8 soréeRoSa0a85§ application context o8 Android cesk:g&og§ operating system om of o8:cfo5§: 820550 gh application xovc8Geqareg, gh application of context yo RogoeS (GEx2-51 BGS} application context 2098 activity life cycle 9§ ogeSa0cSequu context af reference of Context getApplication() -Rouged ‘Activity.getApplicationContext() ua function esTog(BEramarBE soageSoneg aGEclaogSu activity g& service o8a2—8 context @f subclass qo GboqqS 5: cavsdio§ context si method sporo}roRcopSs inherit qQoonsG (B8 gyq> project cnbig of ci @pSo$c5GEr0§ (GSar45u erhagy> project arpScopSs soscor> agheqp:c8 GpSEqhcGavsngSu cooorstisiieyBcBoSo09$ 44> project 2089 oes, ox. goroopSegeSqueS -(Androide8 eoparncgoog}an0q08) Android=8:a0§ 6§ a0 s8€a09§ Application framework g§ ooSconhears geo s§ aeqo5 crcheBiclic® arghooB8Eg&: QqepSn Roocdeyhg aBqayé (GSc¥2>95 aoegh 208908 BikiaBazicont CoB Sap GE eySGEh vega) crBgear feature o8 saop:{icSoSBEr03E§ corréag§§$Echca. saclayé: cnaét Sque8u Android g§ eafs$:cosragqpt Android platform ecTogé application qnr0§ 08:88:03 aggooréeopanraggp: 8, onEosmorpSim Reabear weorscomgich qRcorcons erfooqyoSo0p5 cmony{erehu Je axBergSroban38 [GSqocS - 4g4> application a098 GigGe: GEogeSq, eaSn ergggqoaneS design 86:48 BiGabgesor€ ongeSrconsS§ orcodSiah: GoSaocheank ofcbigGEicBor aoBooconc0,$u feature arg’ song: cnohaqpcSgapst soasT coBorannGE: eupofolu ay sanee [92 $gq2 Yamba Application ergageaeScorrang§ ggqaq egsoohig captagicoco GSoxp§ Twitter 9§ .0ga009 application (S20g5u Yamba up soepSevrslepSu (gSaoc8ep coro 2025) Yamba 2098 user 08 twitter o3:8 ofeaonty ord9q§ GoSeocSav10,51 friends Rafi status @pro8 sqyayor> [GoosusepS) user af oRoSBE status gp: 8 update orfsoro$ Yamba 328 apSesorkqoSarorr0s0n(G§oEeyé Android s) soclGSpo5(6S (building block) component @pro8 B8ecoaopSu 23{gScaxr0fo32§ Android i eedea> component sa8icSrc8 a9 cBeGorra9208.5 wpSo8, oapSaaS3 api Bo8, Baga gry orGforsSrogSok soq Sq: opSo8, sso gSoqy GSES (Br~$ oarpho8.o§8 g9q2G aoqSce5q$ soGccySayeoo2 application BSehu twitter o3o$sarr of esor8gefzqyr:a0p8 oneg.005 cgasrrapi§iolig§ ogS:0& cy FegecoGBu twitter aopS safaZE:a00{GE s8qcgé facebook g wall «i soaydopS§co088:081 Yamba 2068 sonroh:BeSragniagé opSo8 BSqoeS BoopSo8 squorqodqoqprg daptogS (BeScla application oqamaf ad Gihicy ncGscreammegap: ug enao ny cofgoraggpial status message qpxc cobiGes§ screen (Timeline up esTa098) AD @ 12:03 em Ray Kurzweil Does Not Understand the Brain ttp://bit.ly/3|bOIW 5 hours ag | HP CEO's Browsing History Used Against Him | http://bit.ly/aAZdOF 5 hours ag ofA B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ue 300 user oo 2gaHi status message o8 ScSoog$8Eep§ screen (voowage acTaveS) yA @ 12:04 m Please enter your 140 character AMGRORE application cqannfBGESEP acjimcmarpap: wife one qt user 09 805{G§o5 Preference gptoR fGobad8Eo§ screen A @2 2:19 em r Password ro ael a Should Start on Boot? /, Should Start On Networ! | Should Support Location 2¢, re ee | COC, OR: Ig: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) q n) che es ‘9:) Design aocox009p1 a design ascorsonqpean4S off projecto8 wf cBrssoacBcgSqpog§ onqohisalGS cobipg$ gore sS(G6 Bs ovo BeocSaySqupSeBargS soalGaoaqeRSrog§ (S$ooeS oSioicRror1qu—$ adc8o5BEcGoe GScvusSu oB|GE design avear20rep108 gftoo8sg> yoneeo5 SExae21{BE op socheg§ agSasco8qiaSyrrogE gSaog:y ap: acToosesSascqpaBeogS: gE:co8ic8aSQ: (GSogzrcoo0pSu ofGaS:GaSraé: of:agorep5, ‘Yamba application 298 eovtesn:ccotm oepSi cpSesor8 qoS$Eoep aSecpighE-ompog’ onGS:GoSiqlE: 9h Rtg) Bes) cores oogiSs038 Yamba application a9gS 270g) §S:0e8 eugoSn (facebook account or8ecR engSesoocBo00328, email account oo 908 onSesoaSaa0}<908) oooh: onfaof ass SeyooyeS§ agor0050 calGor8: GoSc0058go soaySaybeqqo—S applicationasg$ 2 [or8: wa9SBSeq qopSn.009 S:aBqoq)§ feature o08 eB eBo%Ere8 earserSeans1 BufossavanheSqSoraSZEea001 coey6eySeoo! ertor ofiea0s sogeSenecnigpisa[gS of o8:G:eq2r5 of application og agrteqpoSqioSaoahons adoSgéan| GScoqepSu epSarehaorbogé aSc$ohargS Seo application 968 ae(Gor8: eaprog.g> sooySoySaqqoeSu AXaAFOAG application cqanofibGtdi eGiacono page ge ceo (q onSqoSor8ajoiog§ develop eg5GE223E:0% cagpq6en application | |B B§copS8oS%ErqopSu sBeRarsSy> cobegean> code apoB qStopoSqepSu design o8 8G: oyScoSsoqeeSu exjarcarrorqpisl BiorpSqyo5yo code afoo0 BFasiag GoncSqeeS GFore51 argqpeBios GaBEsokGEr efGSqu aoaokelG nog mee GeacqgcdErog’ wBSnGEroSerrsalGS codsgoroi[G: oo8gpSor59 ailExogt GoSa008qo—Su sas0§cr8Q8o%8iogScop5s oGo8, GoyoSaulSrogeGE gs | Rooge® sofG cogSagEioSrorqegSy (aggqrga29S. software development 0308 og6crysor> apSadicgSgpSreorr£rqprcBoogS: odlorgS: qfev~9S) 92 Project Design sah: (5) ¢ sagiagiqeSysicoq Android application oo8o098 activities ‘apn services gt! content provider gps! broadcast receiver ep: BcoySaoc$ copS Android af soe§509o8(88 building block qox(G8o09§ ¢€: component apiRo8ags avléroboopSesooSqeeS (§So098u Android af 228m building block component gp:o8909 o$:[8: o2gSes0208e_$ Yamba application (68: or8goh: 8 Design 08 or8ecSorqoSqocI4og& eapera§EcloopSu code gptargS salGors: gS:co8igo 8o58E(8: (GSeq.que5 aie qoorg opSregelezrSic8 083 (8:{GSarp$u acqe§oS:ep$ Yamba application of | oA: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) Yamba app widget § z & = § oA eqn bGERE sae cneonarpap: Amaro ws eae gcfe8E:a0g8 Yamba application af vce mBoSao§E:GEa3$ (eooqodgo = 97 Og (Goorsa93) Status Update Screen o§ 9 epS:orpSesno08GExa2>t Bon conta2Su opSeanr8qia9$ task gpry> activity ord 308 ongSesordS (RE: "| cgforBaocSageSy networking o8 orgSeaoocSGEs §GocpSeso2Eqg multi threading 8 orpScsoroSBErg§ giodeqiig qpeggSioEiGEr debugging of, (S0095u 920 Activity on8e8 onpSeao0SBé: | Android User Interface $8 model 089 08 oor88cSa005REx(8§ so0[Gqeo epS UL 882038 Android ax§ developer gt orebar ogSo83 Gime, cago: sookxsoenStqpg§ ogeGorei n (SooBon$seav0 feature a2pSomor UI GB Java geopSte0r&i1 XML geopSsenn08: g84p5: ater 5§ESEroSorpSeu qteoG:0g6 Status Update Screen mogoS Ul coat ongScaondfSE:09 eagieg? lepSu aoBooson{BE XML 46 Java oR odlEroSBEraoxGE coop [BSear0 Ul 89 of 8:dlegSu Layout @prg® View gprsac(ayeSt1 Android ef unit gpa image gpig§ sacgica5Qi Ul of sofgorfer& soopso8goRohe cnclongS: capicgiclepSu w8enoo2iqepSyror0r Android corksg& 0482}: 3o88:{o5:308Gooeh BEng’: cageSmoon: scteen size g& qhogoS{gétee2: resolution opS-8v8 Gao: 88 ef application og& sa@ScopSio08 gj sacqScopS: [GScoqegs Ul efro8 orpSes0208 g soecpemeScorrErqpio€ GEdloopSu ob: B.C. Tech (UCS.Y); D.B.S (¥.IEco); Dip Info-Tech (NCC, UK) ~ a) a 58) cgferdsooSageSy Networking 5§ §{GocgScsoxEg Multithreading cangbaydegon9§ screen orb 8B sBovgSg§ oBSoRchofesnréys8af, user of input o8 post egqeoeorpvgSu (BEcRcSo§.eaor8y cloud service arpSyo egepeocdio8:§ user gpio cor§eScSean> data qt server Fepsbegé process opSauxS: (GBare8u sapfariGE BERBof esonky cloud service coed client-server avemomepins sacoraocSageSquyogé remote-access system 38 qyepEcBoS BEE GSo0pSx) aBZoophooGE: mopSeySogorg§ screen 9 BSc8Sofesrkgs838, user oi input oB post opSq§aroged Twitter of soohsqoRoqSeod42E Application Program Interface (API) 4g oSegedSoghurcSo§esoréy web service aybesr€qoSgprcaToy[SE call ap 9§ BEcorr soogaepSqpt qoza} (Android platfrom og& ocroreS:0 ovlob os cuSorse00 =8:(g>: qagqa9S) third-party library or89e8 o}:clogSu Network calls og§aocSesT gap: GjogSepogé ogheoodal [ojorboog.o§:8E e009 maef(rEraacdqp:a0e§ soox206[a90E1 orgpSiaGqagié connection soelg aegefogp§: UI anpS agracgiecotadagarg$o3 soo3QSonoSvlana$u network Fh 9(6$0§ 38 Sng latency arg8 Go§qslogé o8Se§ o8:009§ application o3 O2G§y 9SsBEr0g2GE: (og$ qyoroarerqprxsoeaT sor{GS hang ogox{SEx) efro§ [coors oop Baregzsocns:a, cepoqyé Android ef g[gooySearréy multithreading vgear feature o8 oor88c03 qvlepSu multithreading fetaure 20p$ Android platform acT§ GEosad§s0eg so[QrércacdqprcoecTogé 9g §: GeS orpS8eqRErdfto§a5 corrE:g soaySaySar9§ application obec} o§ 08: onpSesorodSEcovlaoahu q application cqanofbGihiq adjimemoqy: ug on00 92x Android application «8 qodeqsg qpeggétco&seq: debug pSGEz Design g§ cooSeog socaa8coonpSco5 G8ra08 on8{BSorgSx{6§ cobogabqy enScanssasley ofGSREdT1 application gps orpSesoaeapogé gioSuxEeyqoey gSt0:BEx debugging 2995 ecleBBrBgorsq6 FBax~Si Android SDK ef tool gic ajtar> oogoyrro} egedogayeGFge qregerg dogs’ gercodey 8 BeovlopSu Developer or8cusse5m0305 debugging 0795 socjSolaqe009 Bg eqjecag BSqclosSu OBA: B.C. Tech (UCS,¥); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) Ge eee ADEALOAG application oannf HEED acGSacmonrgay: (x ___ _____ i maf: — 6 Android User Interface aban Android application gq project 8co02 Yamba seogo5 ocow Bsa}: Activity 08 ofc8:qocSu g:20305 XML layout onf9o8 orpSesoodSqe95u GER Java 9§ GoSaoch qepSu GEogE: View apr (ogpSteoriGE widget gp.) 48 seo8isooy§s Layout qpr socleRoSto8 eopovoqepSu oeySorSqeR 45GEe boton clicks ofan event apsch Java ofoaiorsers0ea(8 82h, B§eqySupSo8 eopcorqepSn | Go Ul o8 wfo8:ea00 gpSs452p05 Android og& user interface (UI) 008908 ofo8iq§ gpS:q50ge5 GooeSu eobgeSigo declarative 9S: (G88: oyfor8qeS:y programmatic 49S | GSaog8u g&so%gSqarp8 or894§ or89 argo ojo}arzSu a%oor8 aoey Sor8ec8 | BicWaceocqeog’ g84pStoa}208 2070003 eqpurcBazrgecy Goroiarehn | | Declarative UI s8028yo Declarative 4§: aBaog$yo HTML{G§ web pageorbqo8 onpSesos05a0e§ gat 48 opooeSn GevTeogScax> Ul ao: XML a}:009 declare epSqGé: GdaogSu screen eologé euTeoococBeor clement gpsrarogeS tag qpio8 eqgav2:9eo0> | HTML page 008903 ssosaa}: pdgiayé Android screen edTogé Ul esSep§ | ak) wile oreo copSs soopogu8GScfazobe cocbeog, Bele8GopSu Declarative gpSt6) soaxoooqoSon8qbgo ao[GEsooRExGevTog§ (what you see is what you get WYSIWYG - *8&80]4* up seadegoSaog$) WYSIWYG tool eproR soo}:QREEEr [GBa0951 a} tool seefjargh Eclipse Android Development ‘Tools (ADT) «i of:4g959 extension og& dloSoogSu Android ¢ oyoSagSEt eugeSaop aafGorayoSagSy Third-parties tools gpicopS: edlclaogSu Bgeoreao:! XML anpS eyorbeurrain§, BEagé svoch emdqprgreRd grrcosSargh o§oaSorrareenctaft (GSeaoed{az§ Android platform 1 framework o8§ BS:eaxr0Q08qq6 Ul osTog& A§ coreeS soepaptcort (NML code of (BQ§BEBE) gfis028§FEcloog5u Declarative g9S:ai coorgpS:qoSgoov: XML i cooo§.soaoc8o8u XML aog8 user interface (UD) of wogeSQEogkzg® GahoysrcdT sooSeqpoSyoR qoSaySepogé conoérar95 gfeooSeogSsr user af input o§ cB§senqrSiqpegég gpSieo8rermr8rorbe ofgSequ Programmatic UI 8202590 Progeammatic ¢gS:co8:a0pS002: Ulordgo8 orgSeaorcbe§oBia§ s00g05 Java code aps eapr22efS&e (GEcoo9pSu gE:o095 sefFareavs offogScorasre0xnr¢t 8 Ul Toolkit apig§ SSvoqraqel a cacdzon,BESaag oopSorSee8 programmaticggS:(G§ of Bi -Sesoro8eR ag button wogo5 variable o8 ofps{o declare cySqu_Su Biqgyé g& variable 68 container or8gqad-8, SqepSn sooep8: 2000211 eacvoisageSseeoti 092058 AMATOAG application cqnof BGERID aoGdaconoqey SR iapiiosey ( aq gSi0q508 FaqE GSogh event / gboe§ action of ofej> declare oy5q Su ghansSeogS: egscBeo8 Java code dq [GBccovghn e[gaqayé Java BE code cacordqpaigrs enpobobafSEe BScoa,Su “| Declarative g25:@§ opSe] GSooqo3Eic3 Programmatic ga8:{eEcoeS: «9S REcoagSu Bead programmatic gaS: (Java (GE code any{GE:) a» aFjocyd anpS SSchcSayé epS8[ESoyrroe8 aBarphea§BEinBoogS: secSaeryarodyos specify opSgSqeososS1 gfarpSofayé programmatic g_S:ei UI saogoS Be cori002905 (G5ain eBoy’ opSar—SaaScosreh oprocSgahin soermntiajiya gbgphroogic} | apGEs BSain (Screen ef layout 4§ widget serch o3a%e020) UI of cadfGrkrarcdoRaog§ sepa: sooged declarative gaS:(8§ XML of o3:eoSupSu BegocS User Interface object qpiei user g& Java code cal@bc8, oGoErcSagoianpSa00 [GB001G§ ooaneS run ovpSyo Java code 202 (§8 | sloogSi et B.C. Tech (UCS.Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) Ceeapb oane§ gf button properties qatoh sochigaS set opSqueSu RSET A EE SEIT on ) ih oe (6. View gp: g§ Layout gp: Android aop§ user interface (Ul) #4 object epro. Views eprg§ Layouts gprnGS 8:[59:8 ZogoSqopS:2025n (GEqarq) button gpx label gps text box |p soarapsacpS view gp: (arg pS:zoniBE widget gp) Sein Layout gto view @p:o8 gopSteoropSu poor Bqayé button 0r894§ label ooSq08 | group @ uGStefen View gp:ao8 Java #} component apg § sacost0y{8:1 Layout qpravgS Java @§ container gpg socvszoga0pS51 view of eepoSabzgears widget g§ App Widget qpig2 018948089 vogcln App Widget s8o0p5yo (Home Screen (App) 0386005) Applicaton (Bsgp: BORE EoyoSor—S§oo9§ app view gp: (cogaSze00:{G§ icon gps) 08 808GEr GécoopSu Layout gpraxeS View gptc8 goostangS SREo00}28) Layout epraogS Layout gota? goorraapSoopS: (BS8E(Ghola0gSu qBarcreqaacor10g6 user interface (Ul) af @.gS:)a095 §:0€:ca0 sacgcncorr0c09d gScog:s09s00! complex (82g2r0,5u Layout avp§ g&:o50g& dlofasg§ child (widget/view/layout) or898c20305 agepBo$o§o8:curqara$u Layout socSto8:o0p§ gf:cRe8 child 2oc8:c8:000: caokianys: BoSofoS:crrG08 eqorqo5goR aoq5[BG0g6 0g SEvlangSu application crane Heal ip neGiremanpeyp: ws coc efpecn soohiGqeeo§eors ve layout (function) qprg> Linearlayout | TableLayout | FrameLayout | Relativelayout g§ AbsoluteLayout 3 [66 onpSt LinearLayout LinearLayoutongS aa§:q8:3929€ soo} a9q21 child goin horizontally Scor vertically (Seo or8¢G: 028% on§:8or egepajargSu socay{eBrongSy> child Rah sosooS [GBoopSu aofBishio> Sea}: oScos0rs eg qpogeyé sooScoreg§ ogfesr> child gprcoogeS screen acTogé egspooggap coreg legia§ GoopSo8q> horizontal g§ vertical o8 (@Sa0—8u ; obschg: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) eR EE ENT 4: layoutor89 (BSa2g51 g&:2095 | |LineatLayoute’ apcqgsleao9 property on89q2 layout_otientation [@809Su LL I TT \ po) ude exco “TLinearLayout o0p8 soGig&:a}:g§ sodrzoqpiap: BSa0e8 g§eaoScopS: eonisgions weuodequ LinearLayout gpro§ gco:egepaqep$ 009 wove: (Roooagé Relativel ayout 328.029 safGor Layout or89q08 9§ og | TableRowaogS 4§ ogoopSu HTML og tablead& cell on 9qi8:8300305 | Sap: Android 038% TableRow 0368, (Gp$eBoSeax view (widger) \qpral sacqsacgoho8cGo5(8: column o8 socGacyar5 aocbgcSanghu cell on8@ S808 B:fFo: GopoSvagcorzeq \TableLayout ef sseq:dleax> property oo8ego stretch_columns (§6a2p80 | |table of opSan6§ column sone ogj/a08,op stretch oySopSoR copghsh§aogiu | column aecio}i08 stretch eSepdahayé * 08 o:§Eoopbu | AMEEOR application cqana§hGheSiqy nejScrconmgp: FrameLayout FrameLayout s0g8 onS{Gotayate 8 coSa00308, eg008 child o> ag, child gp: AB spbogricolh: eq epajavpin egocSeg: child aopS seevTapsogé ForeSu ofl layout sopS tab qpeQeaos view dfrogS soopiorg§anp5u o§[G8 FrameLayout |B © run o§e> w§o3 programmatic 4aS:B§ onfGpSt(G pS: Gehooefa§ fooreeh widget gp:so0go8. container a2fg Scop$: o5:§EaopSu RelativeLayout RelativeLayout 2098 orbegforbg sooSoor—$§ relative GSeqea0> child gpteooge’ sns08eGangSu ofQEsocgaoconionSga8 [GbasTaoqpogé ocfsa8car layout epic nest epScoricep ecGeoorefopa§ g&:o098 songs powerful Sain cogaSteGaqay’ ccTagggcGsoScar> widget moqnogc5oR cog Stahi[GSea0r8 acypqjeoa:£Ear45) 28(G8¢) $68 application #f ooSgap: ghrear8eqeSo8 SBacrrkrg$ corconoeSn Bo, GSoogso0365 Relative ayout og& child widget oo8q8c3&:200305 selGor child qrrg§ socboS relate c9S§E GofGE:g2 ID set or898 Fepaf SaoSoopSu AbsoluteLayout AbsoluteLayout 2968 g&:s4 child qpre8 screen ecTogé coordinate 208 cao egepa|sgSu1 é:0098 WYSIWYG tool qpiso0go5 soog§o§ eagfeo0 layout(gSein cEs065 socy$§ioSreasSc0gS flexible o@Sequ ofuSuGo8:oa00 app af user interface 2965 [RGRoRExeBRor> orb eei Screen oiTog’ so=08 qfGoarbcog5: [BEcgEtsoguS screen size 1 sasorsésoo}seegseco2 orientation Ba B.C. Tech (UCS,Y); D.B.S (Y.LEco); Dip Info-Tech (NCC, UK) a eT (EI ) — Tq SogoSGEsso0: resolution of eGoEiedoyrr09p5g§ soeganeos: qobegEroyo: cvegSt G.g Yamba Project o8 eor8orpSesoa05 Ges Yamba project o8 ocorep$u Eclipse o8 géepSu File > New > Other > Android > Andriod Project 03 eg:sleaSn Bnew Select a wizard Create a Java class Wards: ‘ype filter text (@ Css) B G Interface 1S Java Project { IP Java Project from Biisting Ant Buildfile 18 Plug-in Project > @ General 4 @ Android BB Android Project Jeg. Androidsfest Project [@ Android XML File > @ Connection Profiles > eas = @ ( pop-up menu g Refactor > Rename CB click qdlegSu Rego goopS0de8 SoScop$cBoSclopSn Eclipse o298 egbesor8aqjo5 (G§co0 IDE orf9 (520[8§ avg rename apd BEraopS weeS eGr8:ogorqo008a008 © 'o0'cln project 39 of8Eo8 ag§:cosxc009 reference weg BadgeB: cog 209080] update ogSsvrdlaopSu of feature ao Java file o28§E08 rename opSepog& waoke(geasSaog511 XML file aprogéy wABED socSccqoo8 fully automatic oGScln BGS) afSEo3 rename a5 qpogé R class g g&:08 ag§s3aoph Java code one[agnb:o8y agareqpoS[GEsoES, cBeordlangSu EScasrcfePof StatusActivity o3$ OnCreate() 038 setContentView(R layout.main); o8 setContentView(R layout.status); 02 GEqoleaSu A\AAROAGL application caro EGESEg ahiocmogy: Qf Screen og& dlo&eax component ccorg GulogSu © Screen af 88036 title onb— JopSu gé:ax95 Text View widget [gSopSu + Statusc8 SoScop$REopS orp: 140.3} textarea eB: Bq §epSu r}ooge5 EditText widget 8 2$:clepSu | + Status of update opSq§ oogS button ooSgulepSu gS:a098 Button widget (gSepSu widget soorabsc} vertical socgaooonf§§ or6—Giorb—8or cepa qopStaf 200308 layout o089 cBopSu exfooge8 QifsoSi€: LinearLayout Bar abieSoSupSu Status activity layout 290305 source code aop$ exex0Sulaac8E: (GSclo25u Example 6-1. reslayout/status.xml - < < | ob Es Tech (UCS,Y); D.B.S (Y.I-Eco); Di Info-Tech (NCC, UK) (eb) cae : qq code o8 Eclipse ef Graphical Layout ¢ ogeScorfoS GE: GSoop5u Eclipse Graphical Layout 8 easooSclgogé (BeSolu Please enter your 140-character status oeTetims Se QI] XML resource gprel wBgooSapigé ooSar0SQB: aq,soa$zogE soclBSGE x08 |cagregsS{GIG: GSearSc0p8: aBooScons aeanrBcbanclaso€rsaqpays Geavral a AHEGOAA application = sqarof BREED aegidacononpay: eR ST Sg er Ne a eee i (eq Cg Widget Rei socqy{B:co09 properties apt safGod:(GSequp§ properties grry> layout_height g§ layout_width g&:o8anp$ org widget 08 Gcorr0009 Parent Layout (Brodg avg widget 02 | agep wadgeornEsSucSqaS: sforpSc8 aocSyohonghi on§GiooBqcR pixels | copStecn28n inches (BEcopSterna8n soo: mooriogaggSdh(GS copStemoés cop§ REean8e0g5: gEiavg§ oneadSenbieg& aaahiqmfenrs weapemyorgoS InoRe§ application ang§ screen ogeSzoorrangjeffone$ SORE: Ror> gpiog’ soco8e(go tun SS;q's903651 component gprs sacqngg nih Jearensrqysogubzoort absolute size gp: aocSgo5GEre(Gad BEqsageSeoort sclative size apt avcSgoSo0§ slangSu o8(G5,§ honk GrappicoogeS soecno8 sis con}:GarkareSqo fill parent euyo8 wrap_content (GSctoogSu fill parent SBoogSyo gh widget a8 Parent Layout odp afEargymoySsoofioR eorSta8ang$ wrap_content aBarpSg> widget oop g&iei content of aEioygigg BsoScrecv208 ooySmoficfars corrkssforgS ooc8lGqh oofqicgo API level 8 4§ socoohogé fill_parent o match_parent op eGoSicdoon (GE: BEdloopSe layout_weight layout_weight 2968 0 9§ 1 oB§zg899 or89Soo5Su goefGE gSteokiaraé Status EditText @) layout_weight default o2§ 8:98 0 (@Soo95u layout_ height go fill_parent oB coroE:s§o0e5u afsBayé Update button so8 Screen ody s2{GE98, oghropoheBo5[gEr Sqoveor7ugSu o¥cor5 Status EditText ai layout_weight o8 1 coxreSoBcyéy so8yooSy> gh widget oo—S height obscAg: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) ee ed Goal G§ qfEaoqy somyScoof:Gaho8 Ga SarsSi cos aafGor widger woges (usperegzocozts0q aSqgé Update button s90g0) oSaabcar somyoScvo§: Rg agli vp v8gooSqeoeaSu layout_gravity layout_gravity 9 af Layout 20 38:§ org widget aaa: opSa8.e2S4 eg pqees B Ggo§za0Su or§§rqoroo98 top / center / left oarpSo%, (GSREaogSu (of property g§ exacSoghgSico8:con:o0$ gravity ugeos property oBal cRGo:g98 ro8GeoaiSclorgSx) goe2 Bagyé width o8 fill_parent oofgs ancdgeS set cpScosrea09 widget oof QoopSaSclon g&te8 center 8SExa9Q5 2044 Op2{B: (dco2e98 eupoSul ororsS:o g&: widget a8 Patent Layout BBE sooypichoSaoni{G§ soy] o8e9(Bicco(Gu oBeov8 Title Text view vgears widget 8 width seo: wrap_content 29[g8 a2059o8 set egScorrgiéq layout_ gravity (G§ center corre8oSBEra228 SaEcorrqao808 GSeoREcoso95u gravity gravity gooro: widget 028038 content o§ gE: widget Bog6 epqpajGE:aon: QGgoF:20980 af property 0 sacocdogigé:v8:§a0—§ layout_gravity ugear property 9 eqpecgieapQavgSi ecSarpSo8 oprookageS: opagSeon: 88 opt00g§ widget eh sagoSaverrg’ c$qScarr soogoS[Gbogé: saecTog&o00 orSevarg$u gowr aqayé Title TextView o38 width sexxG§ fill_parent cqScor:§ loo gS: gravity GE soooeS center Gays sepSGEovesSu layout_gravity (BE sooocS center $fcySoo: so2q) cgecore SoonoSeqt text widget aooreprogSeorp arf property osu oS.ca8 Button 1 EditText 4& application cqaofS:BEHEq acfibocanorpp: - EE TextView o8.0308,ca00 widget scorSaprqato3& §uloopSu gf property 3) widget avTg esarste} [BgofzonpSu aB.eas8 exassraocBannbo8 somoxpS:e egScoforg GobarsSarnic8aSBEiorp8 seecpmcocmnf: oupebcle. ooh SBoyk of widget of orsvsra48 sof§ oroovohorsS:{B: soclGoEraacda (5 eqavc8$upSu apSarkeans saccpaacoys enaro: text aortciie® tes (Foldes) e38 stringsaml op §E0288E eaorchon aochigeS define ap5e) BErconGu Beabagé Gish refer opSGE: (GSNao:Su refer opbhgo ggqccon{g @string/titleStatusUpdate 0328, GBclareSa id id ovg§ vog widget of ao08s8Eqp layout resource file oBoq® 8aoz$ (oofSar epSarp$or8—qSqy e008 wages) identifier GScloogSu widget oBEaoQ8 id ac$ili BEREqgE vc§aoBca09 id gpr08 w05 qpro8|BEGE gooojesoogSapre8 oxSco8 8bar-S:coa$lanp5u Beoo5 ayaa Java 9 cpSicr> oBFray58S gee$ widget gprsscgoSax: id oSaScloogSn id si cazop:gdy> @+id/ someName Scto0¢5n someName agqpogé cfoSesTage$ar> widget o8 efGo8scde$8qvEu poe - @tid/buttonUpdateStatus GS String Resource ep: Adroid aog8 data R08 $&qp: g§Eaoq gz B8:g03 sogicScos:a0pSu RSS layout of cEro§eh aooda8Ecp resource yprodogé ao05y08 define 025Gs! (button off text qari title o%*) text qt @a29$) oror100$§: text value soxtageoRoogS: strings.xml upsars BoSBE 8:Go: BEooBqcdegé define cgbaog$u afo8 epSoosBEGE aqofoge string resource qpzo8 English 1 Japan 1 Myanmar 0308, xs0220002 gprrg2[B§ version ast 3oqoS§ &eoaoaSu A ob B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) 7 (30 SA |aBeGGu ayoo8y oorr:ch $odqo mahiqfBExQE code of GEw9S9F resource qorc§ soefisoeghs BoSGE 0) oe us exo GoobQ ameGaoaqog’ stringsuml §Eoop5 cavocblsooREr Gooc8$opSu Example 6-2. res/values/strings.xanl Yanba Please enter your 140-character status Update resources qpro? sovpSoorepogE Seo2:a00}:{Ga00> sovpSourogSg> ‘cq.atiogé & resource af aaefjrsowpS: Regao8 ofoSGEog5" G6 (GSoo9hn titleYamba SarpSyo epg ocrarays title aop$ activity ef sadfsoepS GSeo> title of + Yamba go of title of sowaS (S005 afjogSo3 aopSoRsorx{ZS q&soo€ign gfGrr8HREEs trace Godqh wéeGeoopSu Bq StatusActivity og6009 Java Class so§&: cog aSogié user interface (Ul) o8 XML 88038 design cB: (GSaphso0g05 Java 828, ogiqoeSu Android a9¢8 Ul oB orgSeaoooSa§ gaS:gSgeSz0§ cone§, coarpS aBBEi® ghorafeeh o9,$8:0g8 cagiog:}ocolGr ocovgsSion98 oe coattqy}cov> XML Declarative geS+ (GSa0p5u oBgpSteRopeg UI of of 8:3 ap eoqusa08 8, RESGn RoocBGe) oq.ecfrarncompcqyt aBfGb} engenclFaneg caf Java 200838, ofGBeeq opiqevepSn cmenna8is}e soecysoooyscogS: XML 8 cpSearr€ af Goog) s00p§o§ o8:Biaqro5g Java a00808, opBEe GSoopS08u Na ADAROAG application cqanofd Gigi afiacmomg: age ees ( Gw Application of (Ggo§:ear Object arg Initialization Code o8 oF oB:BE: activity gpu service gps! broadcast receiver got! content provider gpt ©5995 Andriod af opSa0g§ 800 building block o8 028 oB&ogS8E8§ :aySepogé Android framework om ofc8:corcox:g§eo0 s2af§8_base class 08903 subclass apr ZonoSBEr 46 <04h,sed§,co09 inherited method apr? ob—5 aGofied override epSGE: BEE oor8qeomg5u vogeoegeocoareg& Android a} Activity dass o8 subclass ZopoSes8 (5G: g&te8 onCreate( ) method o8 cobapSelGo8ie3 override apSv9S (§095u activity gprog& Life Cycle ap: 8(GooeS0% sagragsdG:ccoGu (0290540 99 Bo of meavi8o8 GfeosSeapcor8Edlovg§) activity 0095 life cycle af epSaog§ state og8 SaqucSo8 developer apnea control agS(GEs ofjoln aBeoo8 state 008908, mo0& / sangiogé wpSo8(Gep$ BoogSmrg developer gf 2800 sod aSEang5u urqzee{§aregogé developer seq (86 coSapSe{Goé:05 override x58 aadang§ sok activity go (og activity & ocvesfs 0098 of 8idh§ eg ActivityManager o> ssoocBagé:oGSeas - ongeSiBagyé starting state g running state 8, zoogi{@Sca2s) onCreate() method [gBooeSu system oo v§o8:a0p§ class o8 subclass ep: BF gopoSB: apes opogé cqebeobap: BoS(Geh2098 ageS:0}o8c00> programming géefio8 Template pattern up esTcloopSu onCreate() 2998 of application 228 (‘0 'ayé ‘o'q\S:0) ord [GBEo02 ping cGeobarg§ wBrrsonyigSeoR opSevrqepSu gEroRy> FSofaegé op Ghahgs obs B.C. Tech (UCS,Y); D.B.S (Y.1.Eco}; Dip Info-Tech (NCC, UK) \ = aan eh BERS ofes0r8 4%, GoSsoc8coin§ button of set up eySqlGEt 095489 GSoogSu ’ onCreate() 63 parameter aog$ Bundle (@8aop$u g&zax98 activity a2 ooo& o§BseGoSaoQF intent esToge logo,SEseonx{GE activity a8, ofay>28Ea099 cogpSicoSear2 ovoce§ data (GSoop$1 Bundle o> g&Gea> data gpraogS cacl§d data souficooasgrs goo (Gein G8qSeog:s0008[G§e20 data gio eaogts8ra0§, encode cgSugqevargSu o8cao8 eraaGE:o8 soonpssTmapecBSoyé mavtdfSeong apSgoSgjar cophogSeghroofscon BE: GSclarsSu_ ggqo Yamba project 038 Bundle parameter 8 echaabs9[G§ $1025 evpoSolu method ogo overtide oSoREr0g81 parent o> ofcBreorGoSarg§ goo original method o8 esTogqepSu Sas0goS superonCreate() ogeoo esTagg a iaqed GolooSn Application framework class ooSec8 subclass gagoSo$o5 (Bx! oof coxSo0p§ method overtide op5Gx superal method subclass 0838, esTogeGo5B: angSgS coo8§ code argS (soagSaySqara%{¥§ original class 4§ 200 Borg oGoasreanbcogh:) Boh BUSBE code apt adlBroop$Rqp sr0ah, orboyc6 ecToorf GSccoaveSu Activity oo8gaf onCreate() 08 cSqecp§arg§ ocoe8ispsea> B8gqg> XML BEgegB: UI 08 aySresTogons Java ei memory space odog6 dyorsieoqGE: GScoa~Sn ongeS: Baeglé seoisoenjes XML BER gSog§ Java code aoah. eepogSs avo€tcooyss XML E08 soSErceSenecozyptan[98 w8ohB05 §ErwgSi XML §€0dq clement oobqqiS:Ba00q05 soaha§Eqp Java objecto8 memory AAROAG application cyano} Gigi ajircnmpy: mee (20) Bog’ v§o8:u—5u XML clement oS qqS:8eF attribute ooS9qjE:8200308 ony code sop8 Java object og gz attribute «8 set ayScoreB§opSu xf@Soho8 XML 88g djonsre0(B& inflating from XML up csTaogSu gfjoBgsoxrcpi08 cgSevreax code go setContentView(Rlayout.status); (¢8ccoa9p5u Relass 2998 \res (folder) o3§ XML g§ soo: resource apoio Java scvs009§ GSao8qnog’ oge8ar.$ socfacgradufcS:corcfad [REx Sqeoo> pointer mg (Br (GSclodo8:03 (orajo5go Gq - gS og&) sagiag:Gcl[Bu }so0Qv€ Relayout. status a2p$ \res\layout\status.xml §&e8 ag§:cloo8u setContentView( ) method 2028 sacgSeprgoo3 cpSevraop$u sea€:saayé: XML $88 y&ooghn saE:mayés XML 88} wZE:coSmecorgp: w[G6 ao808808 8E:o0p$ XML clement orfgqyfe8ei attribute onBgqjS:Beaege5 Java objectogé gé: attribute o3 set opScoraop$u object gpraa[azaiogé parent 4§ child aooSagoSgqqrte8 Ggo$scorcneSu Be) Bqay’ GEogh:(eBrondgohic3 Gorm BScTeosopSu of code orafego&: s2[8:03& Screen avpS agaora§ saanbn€ (GSca(Bu method @p:o3 sooSyo5 define epSB: GEogagesodgapin? o2[SFoo5yo BSo§$c8:e0r object aprovoeyé evpoSeqin Android ef user interface (UD object gpraxgSeog5: saci) epdesorqySgdqch apSanp$08u Bede) Android Ul 008 9{§8e202 button oBcogSt click BeSeavsaaclog& epSaf code enbigg coaSagb:eo88:quaSu axfoS.cySqfooge5 onClick() vgears method 8 define ap6orn1 soapScySeaGeor> code of cng§ogStqueSu Button 038 setOnClickListener methad run qeSu oo8go8 setOnClickListener 28, argument ordgaa(g6 §.qee5i sacaz2Eigo object 298 onClick() 03 s205¢05 ae abc: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) RS ETS 304) meee Sqpag’ Gesore[Bo§ (GFoo~Su StatusActivityjava ocovseso$onp§ eaxac8ol 2088 GSvlepSn Example 6-3. StatusActivity.java, version 1 package com.marakana.yanba1; import winterwell.jtwitter. Twitter; import android.app.Activi import android.os.Bundle; import android.util.Log; import android. view.Views import android. view. View.OnClickListener; import android. widget .Button; import android.widget.EditText; public class StatusActivity1 extends Activity implements OnClickListener { // @ private static final String TAG = "StatusActivity"; EditText editTexts Button updateButton; Twitter twitter; /** Called when the activity is First created. */ @Override public void onCreate(Bundle savedinstancestate) { ‘super .onCreate(savedInstanceState) ; ssetContentView(R.layout.status); A] Find views editText = (EditText) findView8yld(R.id.editText); // @ updateButton = (Button) FindView’yld(R,id. buttonlpdate); updat eButton.setOnClickListener(this); // © ‘twitter = new Twitter("student”, "password"); // @ twitter. setAPIRootUrl ("ht tp: //yanba-marakana.con/api"); } I/ Called when button 4s clicked // @ public void onClick(View v) { twitter.setStatus (editText.getText().toString()); // @ Llog.€ (TAG, "onClicked"); } } AMAROAAL application cyanoh Gig Epp aeRimemanep: pues (09) eq.orqyciga§ code og& gclcSqpiE Goostesrs m§Srqpiai soohaBEqo g&tco8sqyoSqpegn ecoreSdlaoo¥é: (GSclop81 1, StatusActivityo8 button goo200p§ co§SsaqjoSavo: gorecon’ SE conf songs OnClickListener interface 8 C:CSgoarr&o$8:8, Bopha 2, XML layout g djossxcoscocan view (widget) gio} goog: Java variable @p:o3<8, assign cop$o3&:o0p8 3. this (sopfaonfg§ StarusActivity) of (SScGoScooomslog§) B§con§ button o8 register ogSo0—5u 4, Twitter API 08 support cpSc02 online service ofesoo8go8, GoSsochangSu afsosofog’ username § password oB code opSqeeSu 15, OnClickListener interface 6 w8oSa08E:oo8q[gSa0$1 9egdSSchadayé esTogqee§, method (60028 16. Status o8 update ogSq§ og§oooofeaorg o§oaS web service API wr BEoRSofeaaky cloud o8 opS:e Save o§ click opScSoboBE: 38, Curl +S B5cBcSRES Project o8 soceaycS build eg6dlagSus8BSeoro oep§ Egan save opSahgsi BErSE: BRE SlaogSu Error gpe Trace BoSGEr20308 orBecooqoSgou) Go (BoGclu obs: B.C. Tech (UCS,¥); D.B.S (Y.-Eco); Dip Info-Tech (NCC, UK) 1 package con.marakana. yonbal _irimort winterwelL. jtwitter.Twitter;[) Fr Public class StatusActivity1 extends Act’ 13. private static final String TAG = "Sta: 14 EditText editText; 15 Button updateButton; 16 Twitter twitter; iWhereami tarYamba ‘vee Yamba-1 veperc "YB commraraianayambal > D) starusaciviryjava 18 /** Called when the activity is first + 19° @0verride public void onCreate(Bundle savedinstar 21 —_-super.onCreate(savedInstanceState); 122 setContentVien(R. Layout. status) Boo jewitterjar dbrary GEOR edlExcogSfGE= twitter g§ GoSsoaSeu:8Sep$ oGooS twitter compatible API of soopScgSco: 26 0,$ online service wor SoSsocSepSu qfeooSogeSy connection oS DARBACScar oghuSofesor gesToyBE: web service call grav GSqevare$u Android aveS Java ai Scooreg§ woSaocSogeSeq: gdresox8gapt standard Java networking capabilities 8 soopeGovpSeBqpi Java og& 896 Bicoxo web service gpioBof BoBcBooaeQgok GSag5u (Android og8 cops: saGor og§uocSzochagSeqrgS:esor&g networking capability go3 version eeq) of epBSrahurcBofesoréy web service qoig§ Twitter API of. coSa008(t [BegSogageicogfamcgeS: Winterwell Associates 9 efc8:o0016000 third- |parw library ooba(GSag$ jewitterjar oB opeclegSu af library 880098 eonsiont uote 6009 Java calss 0089209 (Seu ao:0098 online service ANELROAG application cqanof BEEBE acannon guy: se (20m) 4§ w[fooeg§ 049 § 0080308 interact cpSeo:Gs1 network call gps esTog GE |q§ data cB oG§aooy§ guy / cor8GEroRei gSeogrocBdyqprn8 cagpolico sopSu gfo3o8, high-level library oog08 epSageahquy§Ecoorg 6: GS open source safgS opSagorgy (B§.co0or(SE: o83cl gars afsoopSe BreGacheong standard Java networking libraries 88 oR oRo8 op:002 rB0qé: of o8ogqeo eS cocooSogl a83esvs jtwitter library 8 CD odogé jtwitterjar a9(88 009,860) aapSu download quy§Scor zSoxgoSonqySyog huip://wwwwinterwell. com/software//jtwitterphp (SclaoSu WINTERWELL ‘beak | Contacts | Hing now ASSOCIATES Twitter - the Java library for the Twitter API Robust & easy to use. Over 80,000 donntoads and many successful apps. As used in several university courses. _STwitteris a smal ibrary providing easy access to the Twitler API. Set and get your status, manage your network of friends, message friends, maintain ists, etc. Lots of features -if you can dot at twitter.com, you can ot with JTwitter Includes work-arounds for rough-edges and issues in the Twitter API to make coding easier and more robust ‘The atest version of the ibrary can be downloaded: ' witterjar + source & test code + dependencies: [twiter 2.3.4 zip} "= Just the jar [iwter ar v2.4) In which case you wil also need an OAuth ibrary - we recommend Signpost: (si9npost 2") ‘ternative, you are familar with git, use the JTuwier repository on Gitiub “The recent versions fix a coupe of issues with changes and bugs in the Twitter API. you are using an older Sa obi: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ec re wigs x00 ‘The source codes included inside the jar fle. lis also avaiable onine here: [Twit java} “STwiteris very easy to use. Example usage [// Make an cauth clieat (you'll want to change this bit) loauthe@ignpostCliant oauthCliant = new OAuth@ignpoatel ant (JTNETIER_OAUTH_REY, lsrwrnreR_oAUTH_SECRET, “oob"); // open the authorisation page in the user's browser \// om Android, you'd direct the user to URI uri = client-authorizeUrl(); 1/ om a desktop, we can do that like this: lonuthclient .authorizenesktop () 7 1/ get the pin Isering v = cauthclient-askUser(*Pleage enter the verification PIN from Twitter’ lonuthclient.setauthorizationcede(e) // store the authorisation token details for future use lotring{] accesatoken = client .getAccesatoken() ; We we can use new OduthsignpostClient (OAUTH_XEY, OAUTH SECRET, jetoken [0], accessFoken[1]) to avoid authenticating again. 1) wext + aces // Nake 4 Twitter object [rwitter twitter = new Twitter ("ay-name", cauthClient); // Print Daniel Winterstein’s status jeystem. cut printin (twitter. getstatua ("winterstein"} // set my status Status ("Messing about in J lewitter.. ‘oul ind the code is fly documented, and mostly self-explanatory The javadoc is also avallable oni here: {lavadoc), with the changelog (including credits fo contnbutors) here: changelog. ‘OAuth support included “STwitter has only one dependency: an OAuth ibrary We recommend Signpost, which i included in the zip download. ‘OAuth supports also provided in the favours: 4. OuthScrbeCten which requires the Scie OAuth ibaryand the Apache commons codec (Gocumentaton. 2. OuthitpCtentjva, which requires the Java OAuth Rorary and ts considerable dependencies. The COAuthitpCtentjaa fle shoul be extracted rom hear and copied into your poject you want use it C#/.NET version Thanks to Patrick Scher, STwiter has been ported to Ci and is available forthe Net framework. NTuiter is available here: hip: blogmenct de. application cqanahd gest achivcmnpy: w@a oreo Qf juwitterjar 8608 Eclipse o3§ cog project dof, agicog}qslepSu Package Manager (window) 0303880065 Eclipse project «4 xoot 03:8, drag-and- drop ogrenpScGobigar> (gB}a0gSu eFfaySe=0rE qoSarg8 BEcR project odog6 SloSagorcoulGu e005 project af Java code aog§ gEta8 ecSeootsla Java 2998 class aonicgio8 cre) classpath og& gpagoneSu jewitterjar oB classpath odog& evlétoopSefavogeS project acTogé right-click op6f8: pro- petties 8 egicli Properties for Yamba -1 (dialog window) ocTeosdlepSu Java Build Path o8 eget Libraries (tab) 8 click lv Add JARs 08 click B: ecTcorcars dialog window og§ jewitterjar $&o8 coSsafagaE: soo8yoS cvreeBuln canscB vlan c8E: cog qlepSu B.C. Tech (UCS,Y); D.B.S (¥.1-Eco); Dip Info-Tech (NCC, UK) 330) ae Coy “JG.09 Internet Permission s90g05 Manifest File o8 update og59é: a application cB secgSacgco8 developer soee(g§ application o> internet woz Go5g08 user on gf{Gaf user of gfeors8iqsowzSu sod e072 zgepoShooe$ operation gp: §8Esx—§seogo5 gS Gayodcorr’:dqqyrro} GgofrcoaGEGE Android a8 aiGoaek B§rySnhi Sogddors user 2095 application 02908 of: install c9S4\§og& gj application coma8ideans géGqod qorch user 2065 ojoxfGorGo spxGoSqelu application Jen corakidaars géGacdqntc8 chro g& Gores BoopSseugoS ajto gbelgel Baohc§ cvflGqoopSu [Ger sacgaoconr ofeqn BEE (user soeg[G§ oft0 B8G3qq8) <0o88 Soqeao> app of upgrade opSco,S: prompt efGeor7sq ecorcoonaousare{§aaeqogé of application o§ debug mode § run ¢go095 (8B: (emulator ecTogEaro run BE: euposod (9:9 BoREroBGav0 org q0508, orcn0$ 80065 aBoyScogS:) USB cable gor install egSqg€ Android ang gfodofecrs permission qoic8 comnétdo,8 expciclu Rens6 online distribution aSayEg eceeag GaedecoeaSu aag application oq Sqdlg developer aoea(§ application of INTERNET BE GoSsoo5eS [Gq$ coroksSqapSu online service of Gobsochq§ internet access fsoSevs09$u oefo§ AndroidManifest.sml §&o8 (double-click og) gSclogSu Eclipse aop8 gf§808 WYSIWYG editor 08 g§u esorcSooobeqSoosSt tab gp® qprgnecg.qevesSi ofrdnc%Et08 aadlfoEseed aaatebsfrclo8 interface acTogEoo> [fep5$ECl209S1 08.0005 XML view aBakoo9 o€rslegSs ASAGOAGL application onannf SEED acGdmcmarqep: ase 333) ea2205cB§ tab gpraagad cooSarr2008 aogGiab: tab of AndroidManifestxmol] 9fG8 cog qclopSu (1) 8 tab o8 g§ors sag§sa8oS soogé:og& op orbcErk: GoSeloSu AndroidManifest.xml 5995 capscBvlanoRé: (BS ogaolopSun Example 6-4. AndroidManifest.xvnl - private static final String TAG = "StatusActivity"; code o8 compile eagd80gé Log class B import 0758 BcloopSu Eclipse Jog Source > Organize Imports caxs08§ soai:oBeans feature onbig GavpSu Ctrl + 0 BSeyfcopS: qularpSu gh featare aoe8 ceS import statement apr c8 socfongred qocSt organize ceSagandl cin Beoo5 Ling upeco> class ogy Log class apt ordge [GbSEea.0efo32§ v8oop conflict ap: R&EclaogSu cBuScRE aoEqpoR ahfgeS egeaySqilegSu vogsecgsocomtag’y Android af Log g§ Apache of Log egsjan> Sop5|gbesoref08 open cgaScloogSn Log o0p8 soeqwlgsoan§ woo8:c8: GulaoaSu .d() aopS debug sea0§s00308 Goclarg8u error wogeS .e() o8 copSsecos’ warning 0308 -w() of eopSteonn8st info soogeS .i() a8 copStanra&i ageBEvloogSn ofto GBag eadlepoSroReavs error drat co0305 wtf) sosoScopSe GoleaotagSu (wtf s8opSyo what a terrible failure up ¢fG>{ea0g5) aaaf.cocop$: what the Pk 0 sBfegareS1 Android o8 ogScax0 soqpapiangS soaos8 unscopacbgfapapt 0 asvspSeeos we[GooroSeqj1!) Eclipse aog8 message qpr08 g&zeR.ah socqpulgoosoSqyrraacGo8 soompSqnegeh GoroogSu Eclipse ef Organize Impotts taola045 onslongag’ qoqecSang$ Gooqoqre8 GScoorcSarpSu 2089 - ooh projectog& (XML resource on899§ [Googe Seoore{eso8) Rjava o8 auto-generate ecpSou:RE3qgé Organize Import s0p8 Android.R class o8 import opScSSeocSGopSu o8[6Sej R resource gp: 4 ADELOAL application crannfBGEBEp achimcmmmpep: wigs orcv g§ ocBarcBeavs ag§isBy reference gptogé (compile soa08$) error apt caaqen0365 ap:Goregdlon Android R 0 import cpSchaSGEESal /oGSei oScaoran8cloopSi Gog LogCat Android system #) log qprsosra}io8 system orBgoprabep goiorbion€ angep: system-wide logging mechanism [Seo LogCat 28:8, cgeSaog$u LogCat oog8 Java g& C/C++ code sorrcgjisa0305 sacySapSaop$u debug oogS log apt} cgoScof once (eS88B: debug: info warning: error aap onislg waokap: socSceaxbcopS:eorsEs 8880508 cochyofeoa:a0—§ tag apt socBoScoshoopSiccns8: ob ap filter op5REovgSu Android develop- ment af ofibso0%8: LogCat oBoogS: geSeq8ecS:G6 GGahsEoraSn Eclipse g (Sco: Command Line 9 8co LogCat o8 (G3eS8EdT2295u Bingo LogCat o8 Eclipse DDMS Perspective ¢ (aS66: Eclipsecdy LogCato8 [Saf LogCat View iago gSquloaSu o9,00q05go9 gan08: cog. qvloaSu obcR: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) DESREDEEEERESEGE REG EEECEESERESERIEEY 3838S82999999999393393353335333393935 Rattentecatececccececscecscenecsaecet SESS S SEES ERE SESE TESS SSESSESNAAES! jeares Eclipse menu > Windows > OpenPerspective > DDMS geogS: (3a$8Eol o98u DDMS s§o0Sy2 Dalvik Debug Monitor Server @Sclaxg§1 DDMS 9§ ocfeocheavs website (82955 http:/ /developer.andtoid.com/guide/developing/debugging/ddms.heml 8 ordecboorqoSqoso0REs 09 £Edlo~Su u application cqansof hBERE rp nofisarcomanpsep: ugha eco. Using D>MS me i ge ns eg cn a ai MS CONS) wc po tree, | Hae cpt tarie fren np ronan tet pce ne soe = Senseo ee snag einen yop pens ono ‘Running OMS cx emp Et sn agp in th SOS i wa wa coc i hh ect ry ‘Sn Cs snus «Fe Ep ick Wow pn Penpcv > Oe. 00MS ‘ren tacoma fp sins amon ins om oe ey nana Ses peseres ps eines oy etch Se cf nee caren ae hs aes i a ae 85 ao ee yg 4 0S a Ty td Tee techn cee ey eg ate abe ome ope sto ho Om TON oti een nes Debus ‘Scand pcr Ss De DDMS 2068 (5:9 808: BRpooedTegé run o¢§ application g§ developer af developement environment (gues ~ Eclipse) 08 sooSageSav) &:cgreorcays zoep (GBo09Su \ ofS: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) \ ee / LogCat o3€ oScgoSy filter qpzo8cag5: Scor8EvlavpSu aaBSraqp8 saad] Ex} angie Sq esor0Sclsac8éz LogCat fiter dialog edTcoodlepSu Cor) Caner!) filter 5 Goo LogCat panel odag& eycSc08 window on89 coSedTooaf§s BoS filter g§ BoS:8ca0 log entries gp08a00 GegclesSu cacneSg) DDMS a0 805808 wavTagié Windows > Open Perspective g DDMS 08 click ayScln arfgaSx{G§ ocooSiap: [ABS eoTageBoS Brag’ qa coslgptog’ window tab oT adTooscl 8§epSu application cqanafbGishiq. mcfiaconmgy: LogCat «3 command line g (e865 LogCat o8 command line ¢ (Ge$q$soogcSa8eyé command prompt o8 8B: [user-~]> adb logcat vp GoScop$o8oSqclepSu Bog [user:~] s8o0gSyo C:\apps\yambal \ o8.eu705 C:\android-sdk\yambal \ cGoupo8 C:\user\user\workspace\ org5{§& oBo$ project g€ tools gp: Rep orgSegep cobsofeGoE: (GEvloeSu RR, FcBeopheobeys cooB§ LogCat o8 cog.qeeS SIE: oBef device g log entries gpin8 generate cpoR8iog& update (gSclepSi log entries gpic8 command line googS: filter gSREcTa0Su %.oa98 exgpS:o0—8 socgoSorng gorcopSogeS ajigageSeoos ¢pSiomo: eupcSeqin StatusActivity so08s008 $§ oooaScas entries qnio8 Ha$a§ Bay StatusActivity:* up Ego}: specify cgSqclopSn afn8, Ggo¥e specify apScaSGEoopS oF} tag g§ ocSoooflGs caesiclyaas0& severity level azara}ia? coc$GoopSup oo GoSahGErogS: (G8 cos0gSu ofa8$Bearr sompeprGayEcopS: aooSyoSGgo}: specify apSaf cGaoSorp$u *S op specify egScBoSBEra0g8 aafGor tag soo:a}:08 eqyooSogo: Goel n command line 2968 esoreSclaoo88: GSogorop5u [user:~]> adb logcat StatusActivity:* 3S enoftongSear gaS:co8:eo899o command prompt mindow 0B eonacBegpoo5 geome: adb logcat o8 orecgpooBchs run coniealSé: GEclang$u efgcSiGE c8c§ application of o-ScSfgbogareSe8 qyohqyés SEB ofgcSinas Eclipse ag DDMS Perspective 08 ago:Q§ gSeqa(E:o005 (6§s0§clangSu obs: B.C, Tech (UCS,¥); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) 30 Eee Gog Andriod #i Thread 900% (Threading) Thread or83 aBarp5go sossocho8 socorScacnpSeu5 execute apSogaro0g, a3§Gorqc5 instruction sooS[eBtorhq [gSclaog$u CPU aoara}:frclzang$ cr8(BG03E ap§Errqyo8 instruction BgcRor process opS8Egd: FarQS gGeorSoopS:: cor8sg&048 operating system spora}s8scT:o0pSo00: n8q0008 8cooo multiple CPU gprso03c8 coSgcooS8o0g$ multiple thread @pxo§ BEcQSLEGE:a008 copS:cars8s1 CPU orbgarSr0g& soqgrsea8:08: Zopo8 REgQSra0_8 copSiano8: RevarpSu thread apt vogorpSeosreayigo Srosrcor sosofcopSt 007c01 8 /G5e) Ba, Stomrcorcms0f eogeScaro thread gprar,S CPU cobgorgSia8 yjcoassgBeorraclogé thread oS98mo mG hose’ aor pS sBargS08 cvrsqS045 operating system on ap:{GoSecoo0eSu Android OS s998 Linux ecTogé sac{Gdcoz:a9951 98 (GSqca2r onbgi§ orpS:0g& enBgcoc8Geor multiple thread qpisos: run 8Eyo8 o[Gp$oo gSrea0s8 Eh Soas8 developer 28 886) application o8 eomEighaaan& design ayspog6 thread qp:seo: application ap: wpSo8x0}:GoopSahy BqeoeeSn Biog.0 Single Thread G9 §sex(GE Android application or$go098 thread ooSgog8t single thread edTog& run oogSu thread or8gorpS:ecTo& tun cao0 application gpraseS agGlcinqc5 command seniahic8 onb—(Bio89 svofcecGo5 serial QofG§ run aopSu eg, command soahiecooSeqiS: cq2a50089 Biafegequ Andriod caahicog SBE Basle call oo898088:a05 block (Seqaoe5u ADEAROAG application cqof BGEED aeGdvcomorpep: onion (235 q7j single thread o8 UI thread upcopS: esToopSn sacleyaStg> gf threa sopSo8qyE user interface ely command sectepio§ process cpSco:{g&: cfajo8 (Seis Ul Thread aopS, screen osTQ, element sasicgic8 of 08:0095 csoncBeora oon! screen 38, user o> coscepoS GEu button gore} BEBE: oang§ user af event sortapraBcogS: omrofugeorqargSi orBgor98: §eo2> single UI thread edTog& code sao: execute oy8$o8 es220801Gog& sapeos8 & Slant VU USUAL aah StatusActivity 08 single thread ooTog& run GEzei Gaogoyo status of update opSaganogeS ogfeocdesT By network call {EangSu apfuscdesTsBy network call aesrc§i0g& saeorrémenpSeu5 execute opba§ [Baqi§aeS developer af Bf:ayS$EgSrosooc5o oes Bg GSein twitterupdateStatus() function o8 call pS BE:998 aghuoaGSEg sorr0}2g§ odSarchecossp$u user og& cloud 08 GeSsocqfaoogad socokserays $d: G§cas Wi Fi sooSogodg GopScogh: GEZExo08: sacGaacga8sclsapear> network connectivity dftc8. soadi{GqarpScopS: (BSREcossSu abe Baca single thread of ojsefcSstoo application ao9S network call function roqee 2729 soSeySeorp0—§ exnodeaye Android og8c098 Bo§iferoce89 (soypraniB§ activity oBgaqgc8 eu708 sao8emoaberng§ ANR up oolaopSx ANR $08 cqyorqoSqoog& or ee g GJ.224}7 9908! Bol =i¥eie ob:cAg: B.C. Tech (UCS,Y); D.B.S (Y.I.Eca); Dip Info-Tech (NCC, UK) AAroggh) a0gét oF gecorcor9e202 application oB BoSo86: kill opSgS Gears apSes0r8 q508 corcorta9eSu gSie8 application notresponding dialog | Mau co08 (as) aad Activity Yamba 1 (in application Yamba 1) is not responding. Bog. Multi Thread Beornsea> gpSteodiys sodff[Goq socorsocerBea apSeanab gies operation gpto8 o8:fGo: thread oo89038 run [BE+ [(GBa0¢81 or8gcooS8oar0 |cocgS multiple tasks gpto8 or8co05Gea09 multiple thread gptog® goof | er¥EqcS. can ienrocaclogé CPU cB (egBesea8qgeS. task ooSqeapSic0 BErGoBcon GE: eBcong.zooge8) corkrgéag5 operating system o> w0805 apige GEroGoSoopSu F(G8q} ooBgenoigeors task qyriapS oob§iforpS: orl EorgS:0g& so0po00g soapScyScgnrcd=3, (@Sayricoao-8u cog 4g qo096 status oB cloud g opS:s}ojo0> update oySag. ogfoobesT By network call of 28:(o: thread orBgeiTo8 88Eana8u orjgaS:con(GE network R coo§sSEzeqo$og& UI thread ao8 block o(Geq607961 application a5 cops ORGS gsocqaocos: Senn’ ghconcoesSu of main thread GBS og GEt0g6 run egoogS (EBs oSGs§ thread qprao_8 ayocSogeSog& run eq2098 BSqoverSu gEioRaranctiangS mogdign cacpepe8 [GBoopS) GoBEiIs8 | BRexra) CPU eslogé onepe§8 run og[eS(SEr000 [gBo09Su ofe Ul thread a3§ clement qo UI thread 08 update apSq§eoozo8 aBqyé Ul thread @f object peg’ Gay synchronize opSqaeS (6(8:! afo8, synchronize opSa(Géior9S 28008 socySarh9 cob (GSao2$:095 (GScoroclernfo8u “Android 208 Java ef sowsrQioy threading $8:ga9200 afoRcar Bye gprce0gcS soagingSgoS: design agcScos:009§ AsyneTask ugeass utility class orbgcRoogS: wf S:eorc02:dl00951 obec B.C. Tech (UCS,¥); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) (-u) sie 00 Boge AsyncTask AsyncTask aog$ UI thread 28 20028:3.§ SaeSan9$ [a3a[B$eo02 apSeao2é 8 long operation gpro8 oBEagoS qpogé ecorcBogagzmcged off cBrcomaac§ Android axgepregSoo89 E2081 g&:08 3093:(3q§s00305 AsyncClassei subclassao6 nae} o§ch:c$o5 qeoepSi Bcgoo5 dolnBackground() 1 onProgressUpdate() g§ onPostExecute() o2eo09 method gpi08 BrelGooSeoqup5u cogaSisBoea® cpncbenubenS eangheoh peso oxhgaSs cpsonan saq{GrErcacdqpr (Gdarr0yé epSorpSo8o8 cpSesorEvpSgpS: ogeorr sBE2g§ cqScavokac’ task BreGocagareyié epSaopSoRe8 gSearabopSgeSt oyea2> saBEichan8 egeeotleasqente 69.9 494208 cloud 808, asynchronous postapSra9Sa09§ x08: cob8GaSge5 SoSeeSn og.orq8go8 code of [BaSolu AMEEOAA application sem EBSAEn acGlncmo mag = ee oe Gr | example 6-5. StatusActivity.java, version 2 package com.marakana.yambat; import winterwell. jtwitter. Twitter; import winterwell. jtwitter. TwitterException; ‘import android. app.Activity; import android.os.AsyncTask; inport android.os.Bundle; import android.util.Log; inport android. view. Views inport android. view. View.OnClickListener; import android.widget Button; inport android.widget .EditTexts inport android.widget.Toast public class StatusActivity2 extends Activity implements OnClickListener { private static final String TAG = "StatusActivity"; EditText editText; Button updateButton; Twitter twitter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R. layout .status); // Find views editText = (EditText) findViewyld(R. id.editText) ; updateButton = (Button) findViewByld(R.id.buttonUpdate) ; updateButton. setOnClickListener(this); twitter = new Twitter("student", "password"); twitter. setAPIRootUrl(“http://yamba.marakana.com/api") 5 a: // Asynchronously posts to twitter class PostToTwitter extends AsyncTask { // @ // Called to initiate the background activity i obs: B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) I as gfe oso @verride protected String doInBackground(String... statuses) { // @ t Jwitter.Status status = twitter-updateStatus(statuses[o]); return status. text; } catch (TwitterException e) { Log.e(TAG, e.toString()); e.printStackTrace(); return “Failed to post"; } } // Called when there's a status to be updated @Override protected void onProgressUpdate(Integer... values) { // @ super.onProgressUpdate(values) ; // Not used in this case // Called once the background activity has completed Override protected void onPostExecute(String result) { // @ Toast.makeText(StatusActivity2.this, result, Toast.LENGTH_LONG) «show(); } 11 Called when button is clicked public void onClick(View v) { String status = editText.getText ().toString(); new PostToTwitter().execute(status); // i Log-d(TAG, "onClicked"); ADAROAG application cqarofiBGERED axGinemopa: . PostToTwitter class axp$ StatusActivity class@\ aao3&:¢ inner class 08: BSG if . dolnBackground() 2998 28:Gor thread og sag §orcn0S cocpSaySqes5(6 . onProgressUpdate( ) a8 agSesonkgiaS task af sennfsocopSeuhy . onPostExecute() oBy soaySBiclGooSeavas061038 call coTqygSu of Paes (3 GSoopSu ¢&:0098 ore} AsyncTask of subclass ooSgasp$u ax method apt ogé AsyncTask op:ea00 data type qypr08 describe opSe§ Java generics corr wa9}x{QuloogSn ooo data type of dolnBackground 036 o}sdToop5u o8eo data type o8 onProgressUpdate 038 capS:en08t1 o208u9 data type 08 onPostExecute og& copS:e0728 soo8:08: a}:oostcloapSu e009 callback o8 Ggof: specify epSagSu String... eas argument a998 generic gpial list 05038 gj seogSt¢ inner class a0je5 a205yo53eax data type qpisage5 cow data type (B8a0g5n seeoSapiooSyo avg data type a2g§ Strings ef array oo8q(BSeloqoE: agGss8angSu status ooBqor5S: coogSi§ane pass apSeeS Seong arfocRErav0 declare epSqeeSu execution (80381036 call esTaaopSu cocdfaaclSsoegog§ report opSoep agbesorkayoS progress socogesog: Qucgeanicln cooeSd) afsoafgsocg egepogé file download 0083002 (Scan aag call a} qooS a9 Brelgoo5y ep8hq§z % of completion GScovs5u Boda BSayé data type ao98 Integer (§SepSu method ag$ user of apbesor8gyed task Bi8iB BSGIE wBeorSep ist inteeBice a® update’ Sap (G855eS) ofelgenS screen dT cog, message 008908 (G00 display «2689p Android UI @i Toast uzeax feature oo89c8 zoabiGgeBoSdlanpSn Toast axg8 sayforaacS message of Goging makeText() vycoos static method soot soab:(Garp$08 avo8{Goln show() acl cosfeqeafcoS: opdeGSoq B08, euncSdleo message 2068) display ‘ecTcoseonquel ‘ougehooQS etror Goan’ Qyfiesdss obs: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) 3 ye) sah iows geqecSeax bug [GScowpSu gf} method g afeoo> argument go doBackground() 9 GFSc8obears onf8:G5oa8u ooaGSqSoy& String nb [GSepSu vrE:aopScopS: class definie cySge 5m or03u generics data type wo88: (GSqEt08 5. AsyneTasko8 set up e9SB:o0g59 o&:08 ofeehqeoGu execute() (BS call ostegSu copSagés pass cpSc8oSeo09 argument go dolnBackground( ) B28, eopBagnarsSanc¥Ero& (GSoopSu qirreqsocosts8, eqpafegé Update Status button 8 user oo 88eRcSeax02081 application #6) activity 299 AsyneTask o8 o$:009 08:2: separate thread e898 o§BicSBepS ReyooS off thread avTog& agfuro8 epScaorky network operation B soghoras$ woaySaySeupSu cpSeaokgBioy® Asyn Task a9g5 (egSesorSquo5 caor8{GE /ecawr&[QE sBoraSo8 user soot soa8cor Bap) Toast ¢ wfo8:ear message qoSoag ooTeoofSExfgG ofe Ul thread cot update opSegSu ethoo8:efeo8:confGE application 968 8 offG$yoors&:cox0e51 user oop (oaqoSga ~ 046 098 Goorrasc}aReavs) error message eto8 cog.oep of corpeqit qhercBeocgs8, copoSBaRagé application avg run eSearxasl§ oo8uc6 oaqodgoR, Ga208E: [GScorcvco709$1 ANDAROAG application eqanofdGthiey mcd oconmeey: sufi o260 aM) © 12:38 em Please enter your 140-characeter | tweet — oedg: B.C. Tech (UCS,Y); D.B.S (¥.I.Eco); Dip Info-Tech (NCC, UK) 34) (an) Gu croo Se (Gog user interface (UD) eoTg sofGoxe000 event gp click epSc8oSeax2 event gpiser: onClickListener() o3a}:BE:g§ (acyd B5cGoSG$ogE socgSoySes$) g&oSg onClick( ) method cB cvr{SSzso>x{66 Sapo, BFreySaopSa8 capers [BovBu sogpraproSasorcjicq, 140 sogad copSaghia§ orcdseq, opSgy oy§ ecoro0g508 user corr soBeor§ coeqsoogoS counter on9 coric8a0g aBolGn oBa8op58Eq§ soGo listener d60r8 ef: 086 cSeobcoepSu HAndicld cop8 cBBSu lick cgSBSs en036emd§rdpeaos event qprmogi e000 listener apo8 w§o8:curcostein grjsseg.ascosg& Edit Text field 08 text Gr8tedgqp:8 cook BaSqh TextWatcher B a§rclegSu of listener soogoS aoso€gprg2 OnClickListener sovlevo8 coffer ep:gocax listener apne sosokamrgé eogoGorcycla user Ggepg 4029 oSrorraAE or0b:6q eadg) ay§earra02508 (Gag layout od gh TextView 0B aclércophepSx eaciroq, conbogifo® Gooeh off text 29,8 onogien oakley 140} fienScosaogSgSang wBEiy cach aacly 88 woespSsasn§ao§ e(GrE:cdepSu Java Bogé TextWatcher 2 secydagdco§ soos}: orpSesoooSep5u eRaqacd ancati® user GbeorSueh Geld of gfte! dohveSu usercoe8 text 8 saclGoEraacd cyboogSq TextWatcher method qpio® sacoohofeoesSu GoScogeGcSearo text aanmogSanoRE: Bob maqgaogeS counter cB update egbupSi eqonqeigaR code saoKE: (GSaymevesSi AmM@FOAA application cqanof SBE eq acfjSaveanorqap: +~ (a Example 6-6. res/layout/status2.xmil ryout_gravity="right" 1. TextView zo208 s09§ user 208 §oSq§ 02 RoSoxGarg8 140 ¢ cor opSn xg “TextWatcher interface B cocgSagScoa§ sooy soabs onpSesoacScom6009 o8Es0) (GpS(B:a0p$ StarusActivity #f code of o9,o2yo54o0g6 (BoScTn geeSal yfGerr_$o} uset 09 text 8 §oSaop$oopb¢E eqgpago: ofA; B.C. Tech (UCS,Y); D.B.S (Y.1.Eco); Dip Info-Tech (NCC, UK) hee 0) ug oxao public class StatusActi [Example 6-7. StatusActivity.java, final version package com.marakana.yambat; import winterwell. jtwitter. Twitter} inport winterwell. jtwitter. TwitterException; import android.app. Activity; inport android.graphics .Color; import android.os.AsyncTasks import android.os.Bundle; import android. text.Editable; import android. text.TextHatcher; import android. import android. view. View; import android. view.View.OnClickListener import androi import android.widget.EditText; import android.widget.TextView; import android.widget Toast; iti Logs .widget Button; ity extends Activity implements OnClickListener, TextWatcher { // @ private static final String TAG = "StatusActivity"; EditText editText; Button updateBut ton; Twitter twitter; TextView textCount; // @ /#* Called when the activity is first created. */ @Override public void onCreate(Bundle savedinstanceState) { super .onCreate(savedInstanceState) ; setContentView(R. layout .status); // Find views editText = (EditText) findViewSyld(R.id.editText); updateButton = (Button) findViewByld(R.id.buttonUpdate); updateButton. setOnClickListener (this); textCount = (TextView) findViewById(R.id.textCount); // ® ‘textCount.setText(Integer.taString(140)); // @ textCount.setTextColor(Color.GREEN); // © Axa @le@HGl application cqanofGHEhEn acfiaconopap: editText.addTextchangedListener(this); // © ‘twitter = new Twitter("student", "password"); ‘tuitter.settPIRootirl("httpi/ /yanba smarakana.con/api*) , JI CaNled when button is clicked public void onClick(View v) { ‘String status = editText.getText(). toString’ new PostToTwitter() execute status); Log (TAG, “onCLicked"); } II Asyocheonously posts to twitter class PostToTuitter extends AsyncTask { 7/ Called to initiate the background activity (Override protected String dolnBackground(String... statuses) ( ty { Twitter.Status status © twitter updatestatus(statuses[0]); return status.text } catch (TwitterException e) { log.e(TAG, e.toString()) 5 ce.printstackTrace(); return "Failed to post’; y 1] Called when there's a status to be updated override protected void onProgresstpdate(Integer... values) { Super. onbrogresspdate( values); 17 Not used in this case ) 1] Called once the background activity has completed fOverride ed void onPostExecute String result) { Toast.makeText(Statustctivity.this, result, Toast-LENGTH_LONG).show(); y ) 11 Texthiatcher nethods public void afterTertthanged( Editable statusText) { // @ ‘nt count = 140 - statustext.length(); // © ‘textCount.setText( Integer. toString (count); textCount. setTextColor Color GREEN); // © iF (count 10) ‘textCount.setTextColor (Color. YELLOW); i (count <0) ‘textCount.setTextColor (Color RED); , pic vid bneestentagd( carseat start it cam it afer) {// © ob: B.C. Tech (UCS,¥); D.B.S (¥.1.Eco); Dip Info-Tech (NCC, UK) Yu ) Gls oo0 public void onTextChanged(CharSequence s, int start, int before, int count) { // @ 1. StatusActivity aog5 TextWatcher o3 implement opSBBScfa3>E: cfos[g> declare opSoopSu 2. textCount 98 Examph 6.6 o& so05go5 define op53e009 text view GSooeSu 3. inflate agSoor[S:ar9§ layout odogé textCount a qoqeeSu 4, Application og& status message #1 sogpiay: ona}re (gSc022 o>0}: 140 &B avo8goSop$u | 5, textCount field oy§ oor erciiee, oeqeaogoR cBoSG: soeepé aocGc§ GokicdayriepSu soBEreqp&[GE oor8e—Su Color opesvo class ovp8 Andtiod framework 038 clo& GE: G5! Java framework 036 dlo&sax aap ender: oo8GeogEclarpiu afcGoopSgo android.graphics. Color 08 absG&t Soop51 java.awt.Color.ColorGREEN 2098 gf class eBog& constant G8 sooSyoScorrarg§ saeqptnSe ougeScls 6. TextWatcher «8 editText field og& GoSooohu ovgaS: sBqqgé this aacaocs[gSo0p§ TextWatcher 08 gf object ofuddoRSo8 G§eo_S, reference c9Sear> editText call osTogSn 7. afterTextChanged ()) 2998 TextWatcher interface 09 o§ oB:ev:coo1e009 method gpragcSg 0089 GBooe8u TextWatcher a eo8[BahogoyoS (GSao0$ off view aBogé text ys afGoS:edagaro%Es or} method o§ ¢sTepSi 8. 140 gear anchiengemf.sorcSog& orcjreq oeSg) oaferoropho8 ogebogoSoogSi 9. counter @ soeqpic§ text ayfearrng§ ceqsoogsicoed! aodfSsfh: update agSaogu 10 abt aacoo8 oxfeariegy’ w8S:eep8o8 (GScqeahu ADAROAG application sean GEREp aefSremocney sa 3 10 og: exeac8 ccapoyeG Boys counter oog§ aacleepé oGafragsropdry orcgien soeh.zoarc5 (Gx0~§ 140 cood omyoyorogéy counter a998 cahempé offoEtoyoscvepSu 10.text oB replace opboog§ soso8 vo§E8cooi0g8 ar method o8 esTaveSn ang GbqSag$ gf method o3 or02S0r6: wcGeoSdln 28 e008 TextWatcher interface & implement opS{BEi0gE secloo8[GSeqa29§ «20365 (veSor9§ egbeanrkqs code 9 elas cogoodSo008 BdegareSo8oar8) eh method 08 call esTevrqologSu 1.onTextChanged( ) oBcopS: ovgaaeGaacgozé vo}seso:cln Beas og05c08 2008: implementation oBv8 o§o8: provide ayScorqepSu run cSoSeaoc0slog€ application § TextWatcher of coegoBe§ cq ooqc5gog, 098 203 $Ecloop$u oF: B.C. Tech (UCS,Y); D.B.S (Y.1-Eco); Dip Info-Tech (NCC, UK) uiGhe oo Ry Fh) @ 12:07 em Yamba 1 Please enter your 140-characeter tweet AsaGlROAA application cpanof SHERED aefjiaconnpayp: 2. o BaG: Color eieg’ Graphic qr scleodige: application 298 enoaSigam socqScgSageco(Gn eas5 [SeaozSyo 02009 af@Seorreqn soeqrégé graphic wgaS:cuS Gohgodqyé 8 GpScoreveSu application orbq08 F4EpSEpS[eScoq Andriod og GGsgarrige JoooneSx Geo8Ei08 soohdlegSu GoGo Image qr (GaSSE: sooBishecoan§ soag[g§ screen og& e42088 background BeSclepSu eqoc5s background oop$ graphic file ordre: [@ScoegSu Android og image coniofificliongS drawable 1 soegSReo0 resource folder 308, agotqatiu drawable upcars sovpScloog§ folder ors res eor080g8 opr@Sooe808 609.9 logSu 4: geshaiawabledpi aoe) icp WO Géoog) Geegel liek ienbtiy ReeeaNGoessegeS [GSI + res\deawable-mdpi 2098 qSogoBc8SanpSts0 wooeSencoc8 BEogé: medium density screen qpzs90305 (g8cl 250 + res\drawable-ldpi aap$ qSognSo8Sanp8ia0 S§aog$ (E03 §: low density screen qprsaogc8 (GEclao-8n res\drawable up soegSco:Q: 24208008 drawable (folder) 008908 of cBic8o8 SlepSu tes (Folder) ecTogS right-click B: New > Folder 08 ageeBo8qo0.(G6 | NaogSu seepSaecgeS drawable vp QoSangheeSop6u GES: qSoged [S5arghtm scrcen dens 46 efoBons fpEredg cyoborftcon graphic ae obs: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) creme (aa) ee CR eogaSayé of folder dog’ o8G:8EcIGn developer SoSoREtoy graphic orb 9c8 of folder o50g& background png weSB§ BE:c8cfa058 BolGu Android sop$ graphic file format sseossqprgpio8 cooSdan98 gGeasSenpS: portable network graphic (png) o295 qbagaSecT apo’ Q§:o8:g a€:cora APE cogSiornaés: gGEgoSGorky patent license arrayed earodfeo8 copSiecnnE: png o8 Saos:ea90 gif coo8§g§ international android developer ap: gSx008Googhu resource gearc}io2p$ Eclipse #f co2§(ap$ watch opGéiae2 Seg qnopSo} ocgargoqn BGS res (Folder) 308, 899 Geb gedcoSarg5q§ Eclipse 2098 Android SDK tools gio a}:0> R class 8 socBeaqoo5 update 095 B§epSu Bclose§ vogsae{Gsseqgo3& R.drawable.background ugesx sepy§: reference odgo8 Java nody apSiohto$oo ajig) qeoBu 28.5005 va}ieaoti status activity layout (file) Seo res\layout\statusxml 808 update ogSBErer egoo8or8.a0§ GSqcoesSu ajegoo5S background file o8 screen B: aSga3:ai ogoo8s graphic sa[G6 JogoreoqEoop8 oupcSclaooin Bela3o§ 8Scd¢ top layout o3 update ey5va5i c&:ai background 03 ug background png file soar opSiag$opSu oh ahagé status.xml layout file of g§qsoopSu background o8 top layout 28 aysreqpcboulEsoBepogkcopS: apidcac8&: geht g8ga5: Golooahu A\a@lse@AGl application cqanof3GESED xebvconmrpaye we ones Eclipse ¢ WYSIWYG Editor o8 2}:G€: ocowerbggSiorpSors: cconchvljagé GoostarpSs0088 Eclipse of WYSI WYG Editor of of:cBo8{E:o8on8iu XML code og& 0805808 update cySE: egreor$gaS:gog XML code 308 of05§o5 agorar soe[Goésa00d qn: GopSBEsoEu Eclipse of tool gr(S$ Goyds} qoogqo8 plain-text editior og& anfcScogh GE: ooh a005[GEcogS: Keyde) qare5 epearrsaqcBc8 voyarfcl ob B.C, Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ~~ (ayn) ae XML view 28, eGo8:q§s00g05 o&e window ef ese005efG§) Layout (tab) of conduxrar08 eanry status.xml (tab) 08 click apSo$o$qo09 (¢So09$n standard XML editor 30g status.xml 8& ggcoselepSu activity (8: oo8q0§t08, background resource BpSqfGqyé odog6 android:background="@drawable\background" wp code ons ofayoé: CaS SoS quloeSu mgsacgrcorg og) saclGrE:aacdqp: GopSaqyé XML code odgax o305§ 5 epbulanSu 28420 ghreoBiposen GbopSapclooeSu Bo6y Color epot GoSEs ego08d screen 90308 background aopSoor Gol Bu a8.eo05 user or oo§o5 copSiugS @Sto00 text box 20,5 screen of alGaSfidli apbeqSopSansg 009 BeSsear> background graphic aog8 ocSq eoyGaenrrmeuné Géea coral 28(G8g oS:03 cooqphg§ sofeasaScclcS transparency 08 mgpSiceS sclE08 EGE gS:dqovu98u Android o2g8 S002 standard RGB color set of seo}:(QoopSu soohGogé g&:o8 Alpha channel ooS9(@§ 0§:q, expand apdSEarphu 85g) sooepEo} RGB aBewoS ARGB sonfGE ooSGREoogSu A a9p§ afGZpSovlo8 oescn Amount of Transparency | R229§ coSespSoeras amount of Red G on w88:eqp8vurm amount of Green | B a8 s3[GoeqpEvercn amount of Blue (GSoog5u gf socqpSopreqrégS SagySoophah:oop} ao[a3pSevlSowrcm CB VE: aofgyy s0g05(ajo: GERErO socepEsenroficR cgcSepSevrREaoeSx AsaEFOIG application cqanofGE:B8q) ncfocomopap: face (xp) few 2808 opaque seegaocootg ofto sofeSpSaclo$ fully transparent seg | coeorr{ainr vpSoopfeoagmrcorieaBoong§: opcSaySavraopSu anf Frordqajérs OBErao0g05 [G5REcq) 256 of: GoopSu channel nSqqéx8 GScax A1 Ri G 9 BoB sa0g05 on§Grqpio8 0.46 255 Go: Brod qq[BGaopSs evFGREagSu sneGefGoobe88o5048 hexadecimal system [gSea00 0 g§ F [Biot nf G:0r89q08 absghoosS: o5G¥Eooe5u qhog8 BE Bey soeqpSorf Grqo:cog§ HARGB x BSagrcveeSu + A-cgep og transparency on§§ 0 @ F pr ondeqt + Reagep og8 red on§§: 0g F fe: or59a1 + Gogep of green on§8: 0.9 F (Bp: on89¢1 + Beogap 098 blue on§§: 0 g F faye: Sea cocSio8s monichs(GpS ogSrqooeesn cog EditText element oh background 08 soor§soa0§ safegpSevloScore 2o[gy, cep BSo098 Hcfff statusxml of code o8 eqorqoSgoogé cog $Evla0¢8u 1, res\drawable (folder) og background.png oqSed$Eo} o&e mail layout og& 6420830{88 so0SgoSe§ opSia3§: point opSa0p$ 2. title text ef color o8 system § color resources gpiodg white so(g6 aoodgeScorreas definition aa: soeqpiselgs aoodgo5q$ opS:a3§2 point opSa028i 3, EditText of egaoSdefoo2 background area «3 soofelganicS8o5o9S hexadecimal ARGB on§ §:0289 (gSea0> #cffF up (Bgo§: specify SBE GE sof pSool cae[GysqpEo3 ao0SgoSaop$ui esgaBqy activity oB8 view(widger) s0c8:e8:al coafiefzeo05 properties aps: coy sacepEgpr [Egrgs specify cySoxp§ gaSioo6: soxSio8i08. cagiags3 (8: (Scuap$1 S8RSC3E qogSoStor: o8:95GEYSE 88h application UI o8 B88SEROS orpSos02058EclepSu ob: B.C. Tech (UCS,Y); D.B.S (¥.I.Eco); Dip Info-Tech (NCC, UK) Teme rnermre nS SS SR Example 6-8. res/layout/status.xn <1-+ Main Layout of Status Activity --> <1--@--> I-- Title TextView--> <1--@--> Status EditText Button android:Layout_width="*i1l_ parent” android:layout_height="wrap_content" android:text="@string/buttonUpdate” android: textSize="20sp" android: id="@+id/buttonlpdate” /> Amdreoicl nein caro BGEshE aeGdarcmomap: uff once 30 7 \G.oq User Interface o8 Optimize o76BE: Android application oo8g0g8 user interface (UI) a7p5 og Sei 98: 6qp | system resources 08 soopraa[ga}: soBcSc08E:on89 [gSo0e5u aafig’ screen S9cR orgSesorobess Segfo& application sop esources ay | XML §&08 GoroicoqosSu clement orb gqjésBaa0g05_ Java object 208 | orb 8 o§o8:qapS1 cEtmegc5 properties etc aoobgeS assign ob qaeSu | Brey screen ocT§ widget or8g808E:03 aoorrqoehu aeoqparniagicog§ | ageSqicSg eoSo§: computing cycle qpigoo8 ojzeoeg81 | 3609 | c8c8{G8qoos optimization cBgc8 saoreo onghagE oStorrqeve9St screen | GiT@ widget swaqsaogein3 aafaocia§ Bpex(ehqeeSi sooqreom(GE | cSeabeavs mogib(GEgEimo8E: GSooqs (widget gpro8 gaona09§ layout pied layout oSoy8 Géiqcostqeoos) nested layout grok apsoostegé Sho8 cScabeveeSu layout SEig 0820249 pSr0095 Ga8gsleg’ B§raySqocSorcScoel loop adog$ oc$aoSeor> object gpto8 nest epS8qyé (goeraenGE data apt |a8 cow cBe5 onbo08sB: on8orgs display cQSQExex) widget weqsooge5 | eonep: apr(GatcorfG: UI aop8 agtan€sogorovepSn eenopuysoasB8 acqé application af QosSzpo8 zaegésqo8 deep oGBcoo51 |gyoqeS fat GBcoqeghu nested layout qpicR slasive avout apg oops \cnosrc8:{$S:a24G6 application of lat (GScoREdlaogSn \ Se a obscigs B.C. Tech (UCS,Y); D.B.S [Y.1.Eco); Dip Info-Tech (NCC, UK) CC REFS SS ARTES 7—~ (245) ufo eco B.oo Hierarchy Viewer Android SDK og& orclorg§: vleoseass aocg§scohio8o0g§ tool oob—qo Hierarchy Viewr (g6c1a028u SDK \ tools (folder) adog& Golarp8u 320050) QoooRE: (GéclepS ee Garry Some. | ere eden serach eo Fret Tamme “oo Teor Teves] | tarten ste] “ee | [ree Amdrofid application cqanof GEREN aeGoconogag: Gog Fe q}xe§:0098 Android application o$gc8 code 8&: @or€ sxearéxo5, eoSca0s s90§2 (g6000}08, Android application developing 08 oreou$ 0098 ings ecgcorarg§ we GEicogSs GIGS mgpdurr cafe eoigxo0e:S) andgeqjeans aeons00ep gps GFcRrofiooSqgap op coopoSaonie[GSiqat1 ofionoqnapt gpign IgclaogSu BBE ooBa08q8s exatecoigs eapoorl§: com€igo aoconed BoraSaac8 sec0S008 woSgulag s9[G3Giolqcon coabgiaec3 Bioogiseegsoco2%0g8 Yamba application «f Update Status (UT) 2098 eq,orqodqrQgaoo%E: BSagoicleaSu ob B.C. Tech (UCS,Y); D.B.S (¥.I-Eco); Dip Info-Tech (NCC, UK) wg e360 Fi AD © 11:45 pm Yamba 1 Yamba 1 o A) Please enter your 140-characeter tweet AME RORA application cxanaf ch QE:B8mp nefdcoconmepap: Se obi B.C, Tech (UCS,Y); D.B.S (Y.l.Eco); Dip Info-Tech (NCC, UK) aga application cqamapdHEhap acGiwemapay: wile ona Android application gp cqano§di aotlat wemonpgp: qBor§E: «(GS socScoohageSgupS [B5a098 Android application gp: cqpaoarofoB:Et soco8 GE socomseqptqp: 288108 qfvo88:00,8 Preference Screen gst orpSeso20894§ ofto arobabEangSu wg gyqron2t orgSesoacSayoS foop§ Yamba application oBof aoofeoas gqqreor: cagregiogaroeS (GScla0pSu afaoGE:Bicyé Yamba application og& screen $89 (GBogoropSu oobqa095 Status Updates Screen GSR: aqroSonBgangS Preferences Screen @SepSu gfs0=08s8, eqpcSegé Yamba wg user mefrefzaroged BoSBoS [GGEdlgoE:03. configure epSugEca0 saopsocost (GBagoropSu efaoaok og’ of oBiqess soBoha086: element gorges activity qari menu system g§ intent qi BOE SER$§:gog6 file system 08 GScoreoegSu gj onsvcSclaookE: (F5opSu Obs: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) ago ae ‘Activity ocoe8:a%:20(§8 Android #f building block component o89{@Sca» Screen B oFBicScSopSu afoopSofayé activity (Sogn loScax> aso$ypi08 GSeog.qqé Screen Sqr ofo8:a§. oeSoop$o8, Yao8argS08 garcopSclogSu Menu system §§ Intent qp: eqacSoabscbcofG§ oB Screen cB cqpofess® aguBEex§ 4pSseo8ic8 GooSecSi BEE Mens system coSge? contents of Merm system oi m095095G08 capeosugSn orl orpS:a9(G6 activity ogo} g&q§ intent apt 0528, coiGarcd sBarpigG intent qrrel sooleiaE:cRoopS: ecycoaesSi §8588:go9S Filesystem oqooSadisacg@§ Android eus8:g&09 S25: cuvan0y OH :3828E: 8 Gu200089§, 8Ea88:go9h filesystem 08 scgcorepSu agorso§ cwséiqéogS operating system (B: onBgchic8 08328, cclEsapcBaocBe8 ongSasos0So0s:—6ScR copSteonsEns Android f ci Ganzogd security cBoopSrenra&: B88GsTeeSu ADAROAG application sqanof GEE nefjiacmnoqpy: wafer orco Saar aches SS | qfeoBE:o0:8 background services epprBogScpSesortqcdqio® oon cBa0g.9695 <0GE: [GSa0p5u BEcRdSo§cs0r8 40838, sooSyoSconcas woi§ cooGo8 Gofsoo8(G: friends qptel status update qpso8 gaye GEme5u ofeaorky ayScaoo’gicS Services gps Andtoid services gp:a098 zacg§aaa}:08 ceo building block ap: (500251 user interface (UI) #820503 aq20SogeSogSa00 process 08908 run e460 ain Yamba 0g o88o$o8o§esos8gs803, avobgoScootea09 sog§aochaS GoSs005: data o8 sjugqep$ svmr0fecore{ao8 ax} feature aopS og 4949 project (GSa9§ Yamba saogoS cbrosbofgSayoSu onclongS: aofgS q}se8Er0g& sgaoSngSo$eaorég background services gpie8 sea}:qep§ copfogSros:orrqop§, multithreading data set qp(G§ BeqpaS Bs soefssoorGIGESEcar aoeg wenrig§ GoSzoa8epog& powerful (@Se009 component gic8 [gSeos098u Yamba o§ cnsco [ago apreaohenpS: cySexorSegS oaryso8reso08 oB§ 000186 e028 cacociegé sBSa0—§ mo¥E: updater service 0» apqGeu> data av¢S coonecoss0eS saagsacont0g§ database 3x8, woop eqpoSegeco(Bu sBea05 58:08 BaSafgeSioo&: oGcosteqyn BGS) online og€ friend gp: 2808 erfeqear post gpie8 user GEaoq.qeoo§ geSico8:o08q(68o028 (gga project (@Scor2 Yamba oi 29800 caoSqicScozSt (G8209$) Timeline Activity 8 oor8c8e03,c1epSn Timeline Activity cro8urg§ egacBab:(GSeo0s of} Activity 8 saoorBgorpStv00d ananf.aof 3022 cgSeaorécleg$u ocowaa[gS Android platform 4§ voSa0058: coh§ 2B 83 G:co0 soeomrorepioh avlEreSamabrajons of o8i{azp$ogSu cBegacd design 08 gS:dep$u of:or:qe9$ Bo soqiobgo cocdeog.og6 (rf appli- cation digo soab:{Gogqai(Goregcarq{a}0§) oraScore000 data zobovoral 0§08 S¥Ecoa$i GooScvacav data oRo8 UI acTo& 9 or88Eq§ List apt 4§ Adapter apie copfogérdjoSa008 ofsgopSu obi: B.C. Tech (UCS,Y); D.B.S (¥.1.Eco); Dip Info-Tech (NCC, UK) aah ees Code o8 cobaq) 80586: refactor oS BE: rade’ code 88108 cobafGr refactor cyig§ wgéleer§ulgrooSu GF Oo8(EBS refactor eQSGELBE user coor screen so8icSic§ o[G§so0y§ agrtepo BBeqpogearé of cBcor8Eogr4ZEGE application soa? 88 aipSogoicelGr developer soogeSeogS: aqysoaSqeg§ soeqaocortcogc5 code gpzo8 8éo§ gepog 88 cgSogayzrcovl opSu AMEAEOAG application cyanofh-GES6p achiacomonpp: eS Android application gp: eqruno§ dt: natal nemonep: qheoBEs aaG8 socBcocBegoSgonS (Soh Android appplication gp: eqgaoaio$ 08: GE: soa0k BE socamso3qptast orapSagé lobes sooftaprg> exorcbclaocREs Scla098u ‘ze: (0) - Reference ep File 0461 Options menu g§ intent gps ' aog5, application developer or8carr8a08, soopSaySepog S8ageSogagoicoeav> cer8:g095 operating system sBEep feature gpisoefesp&: GSclax—8u ‘so0§:())- Servicegps’ avp$ eqoodoguSaySes0o8 qo5 background taskgaro3 process cpScu:Récax Android service gaa: oxpSesor059E:aaefog06: GScloogSu ‘sa0§: (2) - Database 80Sa005's095 Android o3& ordlongS: cleox soccer SQL (SQLite) database sacfaza’sg§ oBcS8E application og& data Qpr8 B§:08:a§ oEteo2r wopsapaclaypés (G8cla0p8u ‘oof: (5) — List qpig§ Adapter qx’ a2p8 casrcuSeone screen GEogé:qpt aaogt gp:Goropearr data oqarcorapte? Beqpodgo iSacchaaahiGiEooe§ Android 6 saeqzcleons feature apr Big cagtegicon|g&: GScloopbu ‘saa: (9) - ‘Broadcast Receiver 'o065 ogc svobgoScostang§ sen8te0: 8g system-defined messages qui ooqSeqzav2t07en sooSgo8arz§ avcr8ico: bic: B.C. Tech (UCS,Y); D.B.S (Y.I.Eco); Dip Info-Tech (NCC, UK) agk seal 8g user-defined messages gp: 02098 sadfjrefjseno9 message gpz08 036 §2995 Android ¢f public-subscribe mechanism oogeprogSaex: opSo8, s005:(Geep5 Haogho8 qfrco8ioonxGEr GSa>9Su ‘se0§: (G) - Content Provider @p:'2998 application gprsoayS:qS: s20g8: data ap: gjeo share cySq§s20305 content provider or89se0 epSo8, design ano orpSeaornSagas eagiegioors[BEs (GSoop5u ggqoooa: cagregiayoS§eor> Yamba application soq8qyé content provider o8 ajtooa Home Screen ecT§ Yamba ef application widget og& data gt ov8[ display o5$Econ$ cooSeng, orpSea0r08 [Goo qStcokscon(gé: GSoopSu ‘coa§: (9) - System Service gp’ o098 application developer rScurrodaacg, GE GeSaochairggban,§ mafefrear> Android ogSelofeaootg. system service qoic BdSzocbqé Sasa BefoopSq se ese Gel winhein. royacmnainll com ADAROAA application sqanofbQeahimp acGdmcmarqap: ecesieesep Janey fOr nah oe gee etree tae eer ence set feet Teese eo ore mech Sere ens awed A) fesrceaseyacsct te)

You might also like