You are on page 1of 52

NHN XT CA GING VIN HNG DN

............................................................................................................................. ............................................................... ............................................................................................................................................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ............................................................................................................................................. ............................................... ............................................................................................................................................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ............................................................................................................................................................. ............................... ............................................................................................................................................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ............................................................................................................................................................................. ............... .................................................................................................................... ........................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ............................................................................................................................................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ......................................................................................................................................... ................................................... ............................................................................................................................................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ......................................................................................................................................................... ................................... ............................................................................................................................................................................................ ............................................................................................................................. ............................................................... ................................................................................................. ........................................................................................... ......................................................................................................................................................................... ................... ................................................................................................................ ............................................................................ ............................................................................................................................. ............................................................... ............................................................................................................................. ............................................................... ......................................................................................................................................................................................... ... ............................................

Ngy ...... Thng ....... Nm ....... Ging Vin Hng Dn

(K v ghi r h tn)

LI CM N Em xin chn thnh cm n cc thy c trong m n M ng v truyn th ng cng ton th cc thy c trng i Hc thi gi n qu Em xin chn thnh cm n Thy Nguyn Anh Chuyn tn tnh hng dn, ch bo em trong sut qu trnh thc hin ti. Cui cng ti xin cm n cc nghin cu ti. Trong ph m vi kh nng cho php, em rt c gng ho n th nh ti mt cch tt nht. Song, chc chn s khng trnh khi nhng thiu st. Em knh mong nhn c s cm thng v nhng kin ng gp ca qu thy c v cc b n. n trong khoa Cng Ngh Thng Tin, nhng ngi gip , chia s kin thc, ti liu ... trong sut qu trnh thc hin ng Ngh Th ng Tin v Truyn Th ng i hc Thi Nguyn truyn t cho chng em nhng kin thc qu gi trong

Nhm sinh vin thc hin Ph m Xu n Qu n Thi nguyn, thng 6 nm 2012

MC LC LI CM N M U 5 2

HNG 1 : TNG QUAN V IN TON DI NG V NN TNG LP TRNH ANDROID 6 1.1 Tng qu n v in ton i ng 1.1.1 1.1.2 in ton i ng 6 Tim nng pht trin ca lp trnh i ng 8 8 10 13 15 29 7 6

1.2 Nn tng n roi

1 2 1 Lc s v Android

1 2 2 Kin trc nn tng n roi

1.2.3 Cc cng c t o mt ng dng Android 1 2 4 X y ng cc th nh phn ng ng n roi 1.2.5 1.2.6 X l bt ng b 37

Xy dng cc thnh phn giao din ng dng Android

HNG 2: XY DNG HNG TRNH QUN L CONTACTS 2.1 Phn tch thit k h thng qun l Contact 42 2 1 1 c t bi ton 42 2 1 2 c t chc nng 42 2.1.3 Phn tch h thng vi UML 2.2 X y ng gi o in chng trnh 2.2.1 2.2.2 2.2.3 49 2.2.4 Cc giao din Menu s dng trong chng trnh 49 KT LUN 51 Kt qu t c Hng pht trin 51 51 Gi o in ch nh hin th 44 47 nh sch th ng tin in c 47 47

42

Gi o in tm im th ng tin in c

Gi o in thm mi th ng tin in c v sa thng tin lin l c

TI LIU THAM KHO 52

M U Hin nay ngnh cng nghip phn mm ng rt pht trin v ngnh cng nghip phn mm trn in tho i i ng cng h ng nm ngoi xu th Tuy cn nhiu h n ch trong phn cng c in tho i i ng nhng n th hin c sc m nh ca mnh trong rt nhiu cc nh vc khc nh u nh gii tr, cc tin ch, th nh ton in t .v.v.. Cc h iu h nh nh Win ow Mo i e, Sym i n phn n o cng g y t nhiu h hn cho nhng i c nh xy dng cc ng dng trn n i vi Window Mobile l mt cng ngh ca Microsoft v hon to n ng i vi ngi dng, nh pht trin ng dng ch da hon ton vo cng ngh m Microsoft cung cp, cn Symbian th vic cu hnh c th lp trnh trn n cng v v n h hn, c bit l n s dng ngn ng / ++ lm nn tng lp trnh r rng l khng thun tin trong vic pht trin ng dng. Xut pht t nhu cu thc t , Goog e m nh d n nghin cu v r mt nn tng h iu hnh mi, ch nh n roi Mt nn tng h iu hnh m J v pht ngun m hon ton v da vo mt ngn ng lp trnh rt m nh

trin ng dng. Chnh v Android h tr Java ngay t trong nn tng ca n, nn vic vit ng dng, ngay c s dng cc chc nng ca phn cng l hon ton d dng thng qua vic s dng b cng c h tr lp trnh c cung cp hon ton min ph, l Android SDK. Nhn thy nhu cu c con ngi trong nh vc gii tr trn i ng ngy cng cao v Android chnh l nn tng ng dng c th pht trin trong tng i. Chnh v vy em chn ti Tm hiu p trnh n roi v x y ng ng ng qun ont cts Demo nhm hiu r v cc thut lp trnh trn thit b ng Android.

HNG 1 : TNG QUAN V IN TON DI NG V NN TNG LP TRNH ANDROID Tng qu n v in ton i ng


Theo mt bo co c hng Morg n St n ey, n nm 2015 vic s dng v truy cp Internet i ng s ln hn rt nhiu so vi s dng Internet trn my tnh PC.( Morgan Stanley l mt ng n h ng u t, cng ty chng khon c tr s chnh t i Hoa K y gii.) Theo bo co ca Cng ty IDC, t i Vit Nam, tng doanh thu bn hng ca my t nh bn qu III-2011 tng 5%, my t nh xch t y nh gn tng 83% so vi cng k nm trc. Xu th hin nay l s dng nhiu thit b thng GPS, game video v thit b ng dng h ng Vi s pht trin v ci tin lin tc thit b i ng nh cc ng in tho i thng minh, my tnh bng tablet da trn nn tng web, h y trong gi nh i ng, chng t c cn c tin mt trong nhng th ch ti chnh ln nht ca th

rng, trong tng i gn, my tnh truyn thng PC s b mt u th so vi thit b c nh n i ng nh gn, tin ch v tch hp y chc nng ca mt chic my tnh. Chng ta hon ton c th nhn nh: in ton i ng ng th ca thi i in ton i ng in ton i ng l g ? Ni mt cch tng qu n th in ton i ng l vic s dng nhng thit b cm tay nh gn phc v nhng mc ch c con ngi nh m vic, vui chi,gii tr,hc tp v v vic s dng ngy cng nhiu thit b i ng nh cc ng in tho i thng minh, my tnh bng tablet da trn nn tng web, h thng GPS, game video v thit b ng dng khng dy trong mi sinh ho t c con ngi. in ton i ng ng pht trin nh th no ? xu

S pht trin bng n cc gii php cng ngh dnh cho thit b mi nhu cu tiu dng thng tin v ng dng c ngi s dng.

i ng cng

mt trong nhng nhn t gp phn t o ra cc thit b cm tay nh gn, p ng Nhng ngi kinh doanh, nhng ngi qun l, nhng ngi tiu dng bnh thng hay c nhng ngi ln tui. hng t u tr n i ng v khao kht c i ng nhiu hn Di chuyn khp th gii kinh doanh, hi hp vi cc i tc hoc mt m i trng lm vic i ng gn nh tr thnh mt iu rt nh thng trong cuc sng. Chng ta c th lm vic m khng cn ri khi nh, hoc lm vic trong khi vn cn ng ngi nhm nhi tch c ph trong mt qun c ph. Nhng k ngh n thun ch l di chuyn t nc n y s ng nc khc. in ton i ng pht trin mt cch m nh m mt phn ln da trn nn tng cng ngh ca internet, cng ngh m ng i ng 2G, 3G v 4G v c bit l cng ngh in ton m m y. Ngi s dng, s dng nhng thit b cm tay (my tnh sch tay, ta et, sm rtphone) kt ni vo internet chia s v cp nht thng tin. S pht trin m nh m c in ton i ng c th hin r nhng con s sau: T nh n ht qu 1/2012 doanh s n ng in tho i thng minh (sm rtphone) tng n ng , t 144,4 triu chic, tng 44,7% so vi qu 1/2011 v my tnh xch tay nh gn tng 83% so vi cng k nm trc. Trong nm 2012, theo ID my. Tim nng pht trin ca lp trnh i ng Vi s pht trin nh v o c in ton i ng trong thi k hin n y, o theo s pht trin m nh m ca ngnh cng nghip phn mm ng dng cho thit b i ng Trc thc t , rt nhiu cng ty, t chc x y ng v pht trin i ng. Khi , th trng ng dng cc kho ng dng ca h cho thit b on o nh s bn my tnh bng t khong 53,5 triu

Thng 7/2008, Apple ra mt kho ng dng i ng trc tuyn u tin vi 500 ng dng cho cc sn phm iPhone, iPo mobile hu nh ch h tn t i n n y, pp Store c hn 400,000 ng dng vi 10 t t ti v, dn u ngnh v d ch v ng dng cho i ng. Sau thnh 7

cng c

pp e, cc hng i ng nhn thy tim nng ca th trng Mobile

pps in tip cho ra mt kho ng dng ca mnh. Tiu biu l Ovi Store ca Nokia (55,000 ng dng, 760 triu download), Android Market ca Google (200,000 ng dng,4,5 t download), App World ca Blackberry (30,000 ng dng, 3 triu download/ngy), v mi y Hu wei Techno ogy - dnh cho cc Gp v o tng doanh nh m ng i ng trn ton cu vi hn 80.000 ng dng i ng/nh c, phim, eoo cho HH n roi , Sym i n v Win ows Mo i e thu h ng nm ng nh n ti 7 t USD, d bo s t 30 t USD trong 3 nm ti. T i Vit Nam, mt s doanh nghip x y ng kho ng dng i ng ring nh F-Store ca FPT, mStore ca Tng cng ty Vin th ng Qu n i Viettel, LG Application Mobile ca LG hay Nokia Ovi vi phin bn dnh cho th trng Vit Nam. VTC Mobile, mt trong cc n v dn u th phn d ch v gi tr gia tng trn i ng gi i o n 2006-2010 t i Vit n m cng hp tc vi Qmo i e xy dng Q-Store, cung cp cc ng dng do Vit Nam xy dng ti hng triu ngi s dng Q Mobile. Vit Nam hin c ti 50 triu thu bao di ng ho t ng thng xuyn v nn tng 3G c cc nh m ng trin khai rng khp vi 69% ngi s dng tui trung bnh 15 24 t o nn mt th trng c tc pht trin nhanh chng v m nh m. Nh vy, lp trnh i ng hin ng c tim nng rt ln, y ng nh, nh vc cc s i ng v pht trin trong thi i hin nay. Nn tng n roi 1.2.1 Lc s v Android Android c pht hnh phin bn u tin 11/11/2007, l mt m i trng h iu hnh hon chnh da trn h iu hnh nhn Linux V2.6. Lc u, ch trin h i i vi n roi nh vc in tho i i ng, gm cc lo i in tho i thng minh v cc lo i thit b in tho i kiu gp chi ph thp. Tuy nhin, ph m vi y cc d ch v in ton ca Android v s h tr chc nng phong ph ca n c tim nng m rng ra ngoi th trng in tho i i ng. Android cn c th hu ch i vi cc nn tng v ng dng khc.

Nn Android l sn phm ca Open Handset Alliance (Lin minh thit b cm tay m), mt tp o n cc t chc cng hp tc vi nh u xy dng nn mt lo i in tho i i ng tt hn Tp o n o Goog e ng u ny gm cc nh vn h nh (in tho i) i ng, cc nh sn xut thit b cm tay, sn xut linh kin, cc nh cung cp nn v gii php phn mm v cc cng ty tip th . T mt qu n im pht trin phn mm, Android tr thnh trung tm ca th gii m ngun m v rt c tim nng pht trin. Thit b cm tay c kh nng n roi u tin trn th trng l thit b G1 do HTC sn xut v c bn trn T-Mobile. N tr nn sn c sau gn mt nm n i, khi m cc cng c pht trin phn mm sn c duy nht ch l mt s bn pht hnh B cng c pht trin phn mm (SDK) c ci tin dn tng c. Khi ngy pht hnh G1 gn n, nhm n roi pht h nh SDK V1 0 v cc ng dng bt u vt ln nhm hng ti nn tng mi ny. ch th ch i mi v pht trin cc ng dng ca Android, Goog e t i tr hai vng cuc thi c thch thc nh pht trin n roi , v hng triu c vo cc ng dng d thi h ng u. Vi thng sau G1, Android Market c pht h nh, cho php ngi s dng duyt v ti v cc ng dng trc tip v o in tho i ca h. Trong vng 18 thng, mt nn i ng mi chnh thc c mt trn th trng v s i th c nh tranh nng k ca cc nn i ng ph bin trc nh Symbian hay Window Mobile. Android cung cp h y cc cng c c n v c thit k sao cho cc nh pht trin c th tn dng ti i th ca thit b cm t y xy dng nn cc ng dng thc s thuyt phc. H c th t o mt ng dng c th gi thc hin cc chc nng i trong in tho i nh thc hin cuc gi, gi tin nhn SMS, ng c mer Hay chia s thng tin c nhn ln trang web chn h n nh thng tin lin l c, v tr a l, l ch biu c nh pht trin cn c th lm bt c vic g trn thit b Android bi v h thng Android giao tip thng qua cc Intents n n gin l mt chui m t mt h nh ng n o v d: n roi provi er Te ephony SMS_RE EIVED d ch v nh v (v y n roi cn cung cp sn cc mt th m nh ca Google) cng vi mt tp cc ng

dng v M p vi cc t nh nng rt n tng nh ng, tnh khong cch im, tm b n Ngoi ra cn c mt s t nh nng ni bt hc nh nim tion v ng thi cng h tr media-playback. S pht trin ca h iu hnh Android ni bt qua cc phin bn chnh dnh cho in tho i i ng ( n roi 2 3), nh cho t et ( n roi 3 0) Phin bn mi nht hin nay l Android 4.0.x (Ice Cream Sandwich) l phin bn dnh cho c smatphone v tablet. 1.2.2 Kin trc nn tng Android Vi kh nng rng ri ca Android, s rt d dng nhm ln n vi mt h iu h nh my t nh bn. Android l mt m i trng phn tng, xy dng trn nn ca h iu hnh nhn Linux, v n bao hm nhiu chc nng phong ph H thng giao din ngi s dng gm c: Ca s Khung hnh Cc tiu trnh hin th cc phn t ph bin nh cc hp bin so n, danh sch, danh sch th xung. Android gm mt trnh duyt c th nhng v o c, c xy dng da trn WebKit, chnh l my (engine) trnh duyt m ngun m cng ng ca trnh duyt Safari ca iPhone. Android khoe ra mt mng di do nhiu ty chn kt ni, gm WiFi, Bluetooth v d liu khng dy qua mt kt ni i ng (nh GPRS, EDGE v 3G).Mt k thut ph bin trong cc ng dng Android l lin kt ti Google Maps hin th mt a ch trc tip trong mt ng dng. Vic h tr cho cc d ch v da trn im (chng h n nh GPS) v cc ng c o gi tc cng c sn trong gi phn mm Android, mc d khng phi tt c cc thit b n roi c trang b vi cc phn cng cn thit. Ngoi ra cn c c h tr my nh na (camera). V mt l ch s, c h i nh vc m cc ng dng i ng gng sc theo k p cc i tc my t nh n h / phng tin v phng thc u tr d liu. Android gii quyt thch thc v ha bng s h tr dng sn cho ha ng c

10

2D v 3D, gm c th vin OpenGL. Gnh nng u tr d liu c gim nh v nn Android c gm c c s d liu SQLite m ngun m ph bin. Hnh 1 cho thy mt hung hnh n gin ha v cc tng phn mm Android.

Hnh 1 Cu trc Android Tng erne Linux Nh n c n roi c pht trin v o Kerne Linux 2 6 Theo , n cung phn cng ( river), qun tin trnh, qun cp cc trnh iu hin cc thit t i nguyn, o mt nh s u: Security system Memory management Process mamagement Network stack Driver model Tng Libraries v Android runtime Li r ries (th vin) n roi o gm mt th vin / ++, c s dng bi cc thnh phn khc nhau ca h thng Android. Nhng kh nng tip xc vi cc nh pht trin 11

thng qua cc khun kh ng dng n roi ca Android:

Di y

mt s cc th vin li

System C library - mt BSD-c ngun gc thc hin cc h thng th vin chun (LIB ), iu chnh cho nhng da trn Linux cc thit b . Media Libraries - da trn OpenCORE PacketVideo's; s h tr cc th vin pht l i v ghi m ca m thanh v ph bin nhiu nh d ng vi eo, cng nh cc tp tin hnh nh tnh, o gm MPEG4, H.264, MP3, AAC, AMR, JPG, v PNG. Surface Manager - qun l quyn truy cp vo h thng con hin th v hon ton ph hp cht 2D v 3D lp t nhiu ng dng ha. LibWebCore - mt trnh duyt web hin i, ng c c quyn h n c hai trnh duyt web ca Android v mt xem nhng. SGL - cc cng c ha 2D. OpenGLJES Th vin h 2D v 3D 3D libraries - mt vic thc hin d trn OpenGL ES 1,0 PI; cc th vin, hoc s dng phn cng tng tc 3D (nu c) hoc bao gm, cao ti u r sterizer phn mm 3D. SQLite - mt m nh m v nh quan h c s d liu c sn cho tt c cc ng dng. n roi Runtime (Thi gi n ch y n roi ) Android bao gm mt tp cc th vin li m cung cp hu ht cc chc nng sn c trong th vin ct li ca ngn ng lp trnh Java. Mi ng dng Android ch y trong tin trnh ring ca mnh, vi trng hp ring ca cc my o D vi D vi c vit nn mt thit b c th ch y ng nhiu my o hiu qu. VM Dalvik thc hin tc phm trong cc Executable D vi ( ex) nh d ng c ti u h cho nh ti thiu VM trn, v ch y cc lp hc bin so n bi mt trnh bin d ch ngn ng J v c chuyn th nh cc nh d ng dex. Do dx "bao gm" cng c. VM Dalvik da vo h t nhn Linux cho cc chc nng tim n nh ung v cp qun l b nh thp. Tng pp ic tion Fr mewor

12

Bng cch cung cp mt nn tng pht trin m, Android cung cp cho cc nh pht trin kh nng xy dng cc ng dng v cng phong ph v sng t o. Cc nh pht trin c min ph tn dng li th ca cc thit b phn cng, th ng tin im truy cp, d ch v ch y nn, thit lp h thng o ng, thm cc th ng o n cc thanh tr ng thi, v nhiu, nhiu hn na. Cc nh pht trin c th truy cp vo cc API cng mt khun kh c s dng bi cc ng dng li. Kin trc ng dng c thit k n gin ha vic ti s dng cc thnh phn thay th bi ngi s dng. Nm n i tt c cc ng dng l mt tp hp cc d ch v v h thng, bao gm: Mt tp phong ph v m rng ca xem c th c s dng xy dng mt ng dng, bao gm cc trnh duyt web nhng. Nh cung cp ni dung cho php cc ng dng truy cp d liu t cc ng dng hc (nh ont cts), hoc chia s d liu ca ring mnh. Mt qun l ti nguyn, cung cp quyn truy cp v o t i nguyn phi m nh bn ho, ha, v b tr tp tin. Mt Notification Manager cho php tt c cc ng dng ty chnh hin th cnh bo trong thanh tr ng thi. Mt Activity Manager qun vng i ca cc ng dng v cung cp mt backstack ph bin chuyn hng. Tng ng ng Android s ship vi mt b cc ng dng li bao gm mt ng dng email, l ch chng trnh tin nhn SMS,, bn , trnh duyt, lin l c, v nhng ngi khc. Tt c cc ng dng c vit bng cch s dng ngn ng lp trnh Java. 1.2.3 Cc cng c t o mt ng dng Android bt u pht trin cc ng dng Android, chng ta cn c B cng c pht trin phn mm n roi (SDK) v m i trng pht trin tch hp Eclipse (Eclipse IDE). Vic pht trin Android c th din ra trn Microsoft Window, y nh sch, i, hp vn n, cc nt, v thm ch mt ch n y cng cho php cc th nh phn c

13

Mac OS X hoc Linux. Trong tiu lun ny, em thc hin s pht trin ng dng Android bng Microsoft Window.

Eclipse IDE: Cc ng dng n roi c vit bng ngn ng J v , nhng in ch v thi hnh bng my o Dalvik.Vit m bng ngn ng Java trong Eclipse l rt trc quan. Eclipse cung cp mt m i trng Java phong ph, gm c vic tr gip theo ng cnh v cc mch nc gi v m. Khi b m J v c bin d ch thnh cng, Android Developer Tools s m bo rng ng dng c ng gi mt cch ng n, gm c tp tin AndroidManifest.xml. Android SDK: B cng c pht trin ng dng Android SDK l cng c gi lp thit b o trn my t nh pht trin ng dng vi cc hm API h tr cho nhng lp trnh vin lp trnh trn cc thit b i ng s dng nn tng Android thng qua ngn ng lp trnh Java. SDK gm c: android.jar : tp tin u tr Java cha ton b cc lp SDK Android cn thit xy dng ng dng. ocumention htm v th mc docs: ti liu SDK c cung cp t i ch v trn web, ch yu n d ng JavaDocs, t o iu kin d dng cho vic hng dn trong nhiu gi SDK. Ti liu cng gm c hng dn pht trin mc cao v cc lin kt n cng ng Android rng ri. Th mc sample (cc v d mu): th mc con samples cha b m ngun y dng cho mt lo t cc ng dng, gm c ApiDemo, n s dng nhiuAPI. ng dng mu l mt ni hm ph tuyt vi khi bt u pht trin ng dng Android. Th mc tools (cc cng c): cha ton b cc cng c dng lnh xy dng nn cc ng dng Android. Cng c c dng ph bin v hu ch nht l tin ch adb (Android Debug Bridge). Usb_driver: th mc ch cc trnh iu khin cn thit kt ni m i trng pht trin vi mt thit b c kh nng ch y Android, chng h n nh G1 h y in

14

tho i c pht trin Android Dev 1. Cc tp tin n y vi cc nh pht trin ng s dng nn Windows. 1.2.4 X y ng cc th nh phn ng ng n roi 1.2.4.1 Ho t ng(Activity)

i hi duy nht i

Mi mt ctivity i din cho mt mn hnh. Cc ng dng phc t p c th c nhiu hn mt Activity. Cn t o mt Activity cho mi mn hnh cn hin th . C th l t nht mt m n hnh ch nh iu khin cc chc nng ca ng dng, cc activity khc nhm mc ch nhp thng tin, cung cp cc khung nhn khc nhau trn d liu hoc h tr cc chc nng hc Hu ht cc ctivity c thit k chim gi ton b mn hnh, tuy nhin c th t o cc Activity c mt n trong sut, cc Activity ni, hoc cc dialog. T o mt Activity: t o mt Activity mi, cn tha k t lp Activity, s dng cc View cung cp cc tng tc vi ngi dng, khai bo cc thnh phn giao din v thc thi cc chc nng ca ng dng. package com.paad.myapplication; import android.app.Activity; import android.os.Bundle; public class MyActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); } } Mt lp ctivity c n r mt mn hnh rng cha ca s hin th . V vy vic cn thc hin u tin l khai bo b cc cho n bng cch s dng cc View v layout.Activity UI c t o thnh bi cc View View cc iu khin giao din ngi dng, hin th d liu v cung cp tng tc n ngi dng.

15

gn mt giao din cho mt Activity, s dng phng thc setContentView trong lp ctivity c k tha. @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); MyView myView = new MyView(this); setContentView(myView); } 2 cch thit lp giao din cho Activity: bng code hoc th ng qu fi e nh ngh yout trn l cch t o giao din bng co e, s u y cch t o giao din ngi thng qua layout, truyn tham s v o cho phng thc setContentView l mt resource ID @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); } dng mt Activity cn khai bo bn trong file manifest. Thm vo mt th activity mi bn trong nt application. Th activity ny bao gm cc thuc tnh cho siu d liu ( e , icon,) Vng i ca Activity:

16

Hnh 2 Vng i ca Activity Khi ng mt Activity khi ng mt Activity, chng ta dng Intent: Kh i o tng minh: cung cp chnh xc thng tin ca activity cn gi (nu cng ng dng ch cn cung cp tn class, nu ng dng khc nhau th cung cp tn package, tn class).

Intent intent = new Intent(getApplicationContext(),TargetActivity.class); startActivity(intent); Kh i o h ng tng minh: cung cp thao tc cn lm g, vi lo i d liu no, thao tc thuc nhm n o h thng s tm ctivity tng ng khi ng.

Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivity(intent); 17

Vi cch khi ng ctivity h ng tng minh, chng ta cn phi bit mt cht v Intent-filter. Intent-filter s gip mt activity ng vi h thng mnh c th m c thao tc g, trong nhm no, vi lo i d liu no. Nh vy khi intent v intent-filter khp nhau, activity s c h thng khi ng. Lin l c gia 2 activity: C th khi ng mt activity vi mt yu cu n o v activity kia khi lm xong cng vic s tr l i kt qu cho ctivity trc. V d activity A yu cu mt activity lm gip vic chp nh, ctivity B p ng c vic ny, sau khi user chp nh xong s tr l i file nh cho ctivity lm nhu sau: Khi khi ng mt activity, ta c th gi km d liu trong intent nh v intent.putExtra("value1", new String("Hello")); intent putExtr (v ue2", new Long(100)); Bn ph ctivity c khi ng, c th ly d liu c gi nh s u: sau: lin l c 2 activity chng ta

getIntent().getExtras().getString("value1"); getIntent().getExtras().getLong("value2");

Trnh thu pht (BroadcastReceiver) BroadcastReceiver l mt trong bn lo i thnh phn trong ng dng Android.Chc nng ca n l ng nhn cc s kin m cc ng dng hoc h thng pht i C 2 cch pht-nhn : Khng c th t: receiver n o iu kin th nhn ht, khng phn bit v chng tch ri nhau. C th t: receiver n o ng u tin hn th nhn trc, v c th truyn thm thng tin x l cho cc receiver sau. Chu k sng BroadcastReceiver ch c duy nht mt phng thc onReceive(). Khi c s kin m Bro c stReceiver ng nhn c pht i, th phng thc onReceive() c Bro c stReceiver s c gi.

18

Sau khi thc thi xong phng thc ny, vng i ca BroadcastReceiver kt thc. Mt s broadcast thng dng Bo h thng khi ng xong. Bo pin c s th y i. Bo c package mi ci vo hoc x i. Bo tt my. Bo cm s c, rt s c. Thng bo tin nhn ti. Thng bo cm, rt th nh. Thng bo c cuc gi i. Broadcast o ngi pht trin ng dng t nh ngh (gip lin l c hoc thng bo mt s kin gia cc ng dng).

Hm onReceive() Phng thc n y c gi khi c s kin tng ng c pht i trong phng thc ny, ta truyn vo context (ng cnh) v intent (ni nhn). context: v lp Receiver khng k tha t lp Context nn cn truyn context m receiver n y ng ch y vo. Th nht truyn thm Context, th h i c th x cc phng thc yu cu s dng cc phng thc ca lp Context.

intent: intent c truyn vo s c y th ng tin nh s kin no m receiver n y ng xy ra dn n onReceive() c gi,c gi km thng tin g hoc d liu g hay khng. Xem cc api: Intent.getAction(); Intent getExtr (String D ch v (Service) Service l mt trong 4 lo i thnh phn ca mt ng dng Android. Service ch y nn v h ng tng tc trc tip vi ngi dng. S dng Service : Dng trong cc ng dng nghe nh c. t N me);

19

Dng x l cc thao tc mt thi gian v khng nht thit phi hin th ln ctivity ( own o , up o ). i hi cn mt ng dng vn hnh lin tc x l nhng vic mong mun m khng lm phin ngi dng. Lm nhng thao tc tnh ton, x u n n o v dng cn th mi xem. T o ra mt Service t o ra mt Service, ta t o ra mt class mi k tha lp Service v override cc phng thc onStart(),onCreate() v onBind(). t qu hi n o ngi

import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MyService extends Service {

@Override public void onStart(Intent intent, int startId) { // TODO: Actions to perform when service is started. } @Override public void onCreate() { // TODO: Actions to perform when service is created. } @Override public IBinder onBind(Intent intent) { // TODO: Replace with service binding implementation. return null; } }

20

bt u mt Service, s dng phng thc startService.Nu Service yu cu quyn truy cp khng tn t i trong ng dng th mt ngo i l SecurityException s c r Cch 1: khi ng ngm. V d: startService(new Intent(MyService.MY_ACTION)); Cch 2: khi ng tng minh. V d: startService(new Intent(this, MyService.class)); dng mt Serivce, s ng phng thc stopService, truyn vo Intent xc nh Service cn ngng ho t ng. V d: 2 cch bt u mt Service mi.

ComponentName service = startService(new Intent(this, BaseballWatch.class)); // ngng d ch v bng cch xc nh tn d ch v stopService(new Intent(this, service.getClass())); // ngng d ch v bng cch tng minh try { Class serviceClass = Class.forName(service.getClassName()); stopService(new Intent(this, serviceClass)); } catch (ClassNotFoundException e) {} Vng i ca Services

21

Hnh 3 Vng i ca service Khi c mt context n o gi st rtService() khi ng mt d ch v mong mun. Nu d ch v ch c t o th s gi onCreate() ri gi tip onStart() v hi d ch v ch y nn n i. Nu s u i c mt context mun khi ngd ch v ny m d ch v ng ch y th ch c phng thc onStart() ca d ch v c gi. D d ch v c c gi khi ng bao nhiu ln th cng ch c th hin ca d ch v v ch cn gi stopService() mt ln kt thc d ch v. Kt ni d ch v Khi mt ctivity c kt ni ti mt Service, n duy tr mt tham chiu n mt thc th Service kt ni n thc th ny, thc thi phng thc onBin nh s u: private final IBinder binder = new MyBinder(); @Override public IBinder onBind(Intent intent) { return binder; }

public class MyBinder extends Binder { MyService getService() { return MyService.this; } } S kt ni gi Service v citvity c th hin qua mt ServiceConnection. iu cn lm l thc thi mt ServiceConnection mi, overri e phng thc onServiceConnected v onServiceDisconnected. // tham chiu n d ch v private MyService serviceBinder; // x l kt ni gia service v activity

22

private ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { // c gi khi lin kt c thc hin serviceBinder = ((MyService.MyBinder)service).getService(); } public void onServiceDisconnected(ComponentName className) { // nhn khi d ch v ngt kt ni mt cch bt ng serviceBinder = null; } thc hin vic kt ni, gi phng thc bindService: @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); // kt ni d ch v Intent bindIntent = new Intent(MyActivity.this, MyService.class);

bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE); } Ho t ng ca bindService(): kt ni d ch v

23

Hnh 4 Hot ng kt ni dch v Th ng thng, vng i ca d ch v khi c client kt ni t u nh s u: ng t u bng onCreate() ri n onBind() v d ch v ch y i nn. Khi khng cn client kt ni ti th d ch v gi onUnbind() ri onDestroy(). C mt s trng hp h ng th ng thng, v d nh: C mt context khi ng mt d ch v, s u c mt s client kt ni (bind) ti service. C nhiu client cng lc kt ni ti d ch v. Mt activity va gi startService() va gi bindService(). Trnh cung cp ni dung (Content Providers) C th coi trnh cung cp ni dung nh mt my ch c s d liu. Cng vic ca n l qun l truy cp v chia s d liu ng tn t i, chng h n nh mt c s d liu SQLite.N c th c cu hnh cho php cc ng dng khc truy

24

xut v ngc l i.Nu ng dng rt n gin th khng nht thit phi t o ra mt trnh cung cp ni dung. Content Provider gip tch bit tng ng dng ra khi tng d liu N c y cc quyn iu khin v c truy xut th ng qu m hnh URI n ginnh c th thm, xa, cp nht d liu ca cc ng dng. T o mt Content Provider mi T o Content Provider: t o mt Content Provider cn tha k l i t lp tru tng ContentProvide, override l i phng thc onCreate. import android.content.*; import android.database.Cursor; import android.net.Uri; import android.database.SQLException; public class MyProvider extends ContentProvider { @Override public boolean onCreate() { // TODO: Construct the underlying database. return true; } } Nn cung cp mt bin static CONTENT_URI tr v mt URI ca provider ny. Content URI phi l duy nht gia cc provider, v th nn da vo tn package xc nh URI, hnh thc chung cho vic nh ngh mt Content Provider URI l: content://com.<CompanyName>.provider.<ApplicationName>/<DataPath>

25

c n gin nht lm vic ny l s dng URIMatcher. Cu hnh UriM tcher phn tch hnh thc c n hi provi er ng c truy xut n thng qua mt Content Resolver. r truy xut Data Source: C th cung cp cc truy vn v thc thi vi Content Provdier bng cch thc hin cc phng thc e ete, insert, up te v query c phng thc ny ho t ng nh cc gi o tip chung n ngun d liu n i, chng cho php cc ng Android chia s d liu vi nhau m khng phi t o mt giao tip ring cho mi ng dng. Bc cui cng trong qu trnh t o mt ontent Provi er nh ngh iu MIME lkiu d liu m Provider tr v, override phng thc getType tr v mt kiu String m t cho kiu d liu. Kiu tr v bao gm c 2 hnh thc: trng n v tt c d liu. Trng n vnd.<companyname>.cursor.item/s<contenttype> Tt c vnd.<companyName>.cursor.dir/<contenttype> ng Provi er: Thm Content Provider va t o vo trong manifest.xml. S dng th authorities ch nh a ch ca n: <provi er n roi :n me=MyProvi er n roi : uthorities=com p provi er my pp/>

Truy vn, thm, cp nht v xa ni dung trong Content Provide ontent Provi er c truy xut thng qua lp Content Resolver.Mi mt Context ca ng dng c mt i tng ContentResolver, c th c truy xut th ng qu phng thc getContentResolver.

26

ContentResolver cr = getContentResolver(); Content Resolver bao gm mt v i phng thc thc thi v truy vn n Content Providers. Mt URI ng ch nh ontent Provi er n o c cung cp bi cc quyn c nh ngh trong m nifest ca ng dng. URI l mt chui ty , v th hu ht cc provi er u r thuc tnh ONTENT_URI ontent Provi er thng r 2 hnh thc URI, mt c cc d liu c yu cu trn cng mt ng n , hoc l thm vo /<rowID> vo pha sau CONTENT_URI. Truy vn: Vic truy vn trn Content Provider c hnh thc tng t nh hi truy vn trong t se, ng phng thc query c i tng ContentResolver vi cc tham s truyn vo gm: Mt URI ca Content Provider mun truy vn. Mt nh x i din cho cc ct mun cha trong tp kt qu. Mt mnh where ch nh cc ng n o c tr v. C th v o t i din v s c thay th bi cc gi tr c u n trong cc th m s c chn. Mt mng cc i s kiu String thay th cho cc k t i din ? trong mnh where Mt chui m t th t cc dng tr v. a tt

Thm: Content Resolver cung cp 2 phng thc chn mt record mi vo trong Content Provi er, insert v u Insert Phng thc insert tr v mt URI n record mi c thm vo, trong khi bulkInsert tr v s thnh phn thm vo thnh cng.

Xa:

27

xa mt record khi s dng Content Resolver, s dng phng thc delete, truyn vo URI cho dng mun x ng thi, cng c th ng mnh iu kin where xa nhiu dng. Cp nht: Vic cp nht cho mt ontent Provi er c iu khin bi phng thc update c ontent Reso ver Phng thc update nhn URI ca Content Provi er ch, mt i tng ContentValues cha tp gi tr c nh x n cc ct cn cp nht, v mt mnh where ch nh ng n o c cp nht. Khi thc thi, mi dng ph hp vi iu kin trong mnh where s c cp nht v tr v s ng c cp nht gi tr thnh cng.

Native Android Content Provider n roi r nhiu Content Provider h tr truy xut n cc ng dng native.C th dng mt trong cc Content Provider native ny s dng cc k thut c m t trn Nh mt s thay th, gi android.provider cha cc lp thun tin truy xut mt cch n gin n nhiu provider bao gm: Browser: Dng rowser ontent Provi er c v iu chnh bookmarks, browser history, hoc web searches. CallLog: Hin th hoc cp nht cc cuc gi (cuc gi n, cuc gi i, cc cuc gi nh, v chi tit cuc gi. ont cts: ng rt trch, chnh sa, hoc u tr chi tit danh b . MediaStore: cung cp s kim sot, qun l truy xut phng tin trn thit b (audio, video, v hnh nh). Settings: Truy xut n cc thit lp c i c ca thit b , Settings cho php hin th v iu chnh cc thit lp Bluetooth, ring tone v nhiu c i t khc. Nn s dng cc Content Providers native ny bt c khi no c th, bi v khi s dng chng s bo m cho ng dng c kt hp vi cc ng dng native hoc third-party khc mt cch lin tc.

28

Xy dng cc thnh phn giao din ng dng Android 1.2.5.1 Mt s lp h tr thit k giao din cho ng dng Android Android cung cp mt s cng c thit k giao din: Views: l lp UI c n cho cc control giao din. Tt c cc control giao din ngi dng, cc lp yout u c dn xut t lp Views. ViewGroups: c m rng t lp View v c th cha nhiu Views. ViewGroups cng c k th cung cp cc lp qun l b cc nh LinearLayout. ViewGroup c ng xy dng nn cc component c th dng l i (widget) hoc qun l b cc cho cc control. ctivity: ng hin th giao din ngi dng. Lp n y o ngi pht trin ng dng vit.

Hnh 5 - Quan h gia cc thnh phn trn

1.2.5.2 Android Widget Toolbox Android cung cp mt b cng c cc View chun t o cc giao din ngi ng n gin,gip n gin ha vic pht trin v t o s ng nht gia cc ng dng. Cc control thng dng: TextView: l mt label ch c tc dng hin th vn n, n h tr hin th nhiu ng, nh d ng chui. EditText: l mt vng nhp vn n c th chnh sa, h tr nhp nhiu dng.

29

ListView: t o v qun l mt nhm cc View hin th mt danh sch cc phn t. Mt ListView chun ng hin th chui gi tr ca mt mng cc TextView. Spinner: l mt control kt hp, hin th mt TextView v mt ListView kt hp ng chn mt item t mt danh sch la chn. Button CheckBox RadioButton n oi cng h tr nhiu View cao cp hn nh: complete input box, map, gallery, v tab sheet. 1.2.5.3 Cc kiu Layout LayoutM n ger (thng gi l layout) l m rng ca lp ViewGroup, c thit k iu chnh v tr ca cc control trn mn hnh ng dng. Layout c th lng nh u t o nn cc giao din phc t p.Android c mt s cc layout n gin gip xy dng UI. t o nn mt b cc hp l th nn kt hp cc layout vi nhau. Cc lp yout c n: FrameLayout: l layout n gin nht trong L yout M n ger, Fr meL yout t mi View con vo gc tri trn ca mn hnh. Vic thm nhiu control s chng mt ci mi n trn ci trc LinearLayout: thm mi View theo mt ng thng, theo chiu dc hoc ngang. Mt layout theo chiu dc s c mt control trn mt dng, layout theo chiu ngang ch c mt dng cho nhiu View. N cho php ch nh gi tr weight cho mi View con iu chnh ch thc bn trong khng gian cho php. RelativeLayout: ng nh v tr cho cc View cn xng vi cc control khc cng nh vi ng bin ca mn hnh. TableLayout: gip b tr cc View theo mt i c cc dng v cc ct. Cc ct c th c thit lp co l i hoc gin ra te-time picker, autonh sch N c t o thnh t mt TextView cha gi tr hin t i ng c chn kt hp vi mt nt m khi nhn vo s r

30

AbsoluteLayout: trong layout ny, v tr mi View s l t tuyt i, m bo b cc chnh xc cho cc thnh phn. Do , khng th c c s linh ho t i vi cc m n hnh c ch thc khc nhau. s dng resource bn

s dng yout ngi t thng dng phng php

ngoi t file XML. Mt layout XML phi cha mt nt gc.Nt gc ny c th cha cc layout v cc View lng nh u xy dng nn cc giao din phc t p.

Hnh 6 - H thng cc view vi cc thng s layout c kt ni vi mi View

1.2.5.4 T o cc View Chnh sa cc View c sn Chnh sa hoc k tha mt control sn c nu n cung cp cc chc nng cn thit, bng cch ghi cc h n er v onDr w c n nh ngha l i giao din cng nh cc ng x ca control mi t o, cn phi ghi v tha k cc iu khin s kin (event handler) kt hp vi cc hnh vi mun th y i. T o cc iu khin ghp (compound control) Compound control l cc widget c th ti s dng, n cha nhiu contro c b tr v c lin h vi nhau, n c t o t nhiu contro c n.V d nh t o

31

nn mt dropdown combo box bng cch kt hp mt TextView v mt Button m hi c nhn s hin th mt ListView. yout, hnh thc v cch thc tc ompoun contro c t o thnh t Khi t o mt compound control cn nh ngh ng ln nhau gia cc View m n ch vic dn xut t lp ViewGroup. t o mt compound control mi, chn mt lp layout ph hp nht xc nh v tr cho cc control, v dn xut t n: public class MyCompoundView extends LinearLayout { public MyCompoundView(Context context) { super(context); } public MyCompoundView(Context context, AttributeSet attrs) { super(context, attrs); } } Cch c chung hn thit k giao din cho mt compound control l s dng layout resource. ng c layout ny cho widget mi cn phi nh ngh nhn tham s l layout resource v tr v mt View. Mt hi x y ng c giao din cho contro , iu tip theo iu khin s kin cho mi control con trong n. T o cc Control ty chnh Ngi pht trin c th t o ra cc control theo c mnh t o c mt giao din mang tnh duy nht ph hp vi yu cu c ngi dng. Cc control mi cn phi c tha k t lp View hoc SurfaceView. Lp View cung cp mt i tng Canvas v mt s phng thc v cng nh cc lp P int, t o mt giao din trc qu n Ngi thit k c th nh ngh i nh ngh i contructor ca n s dng phng thc inflate t d ch v L youtInf te Phng thc inflate

32

cc s kin ngi ng nh cm ng trn mn hnh, nhn ph m t o nn s tng tc Trong nhng trng hp m h ng i hi vic v l i cng nh ha 3D th lp c s View c gii php hiu qu. Trong hi , lp SurfaceView cung cp mt i tng canvas h tr vic v t mt lung x l nn v s dng openGL cho h 3D y hin th cc ha phc t p, nh game 3D. 1.2.5.5 T o giao din Activity vi cc View Mt Activity hi ch thit k s khi ng vi mt mn hnh rng thit lp giao din cho mn hnh rng ny cn gi phng thc setContentView khi everride l i phng thc on re te Phng thc setContentView c th nhn mt tham s l resource ID hoc mt th hin ca View.Do , c th nh ngh gi o din ng dng bng code hoc tham chiu n resource (layout). Nu dng layout resource th s tch ring vic thit k giao din v phn code x l, cung cp mt kh nng th y i linh ho t giao din m code bn trong. 1.2.5.6 Xy dng menu Menu trong Android Menu r mt gii php tng t nh tin dng ca ng dng m khng chim dng khng gian trn mn hnh. Mi mt Activity c ring cho n mt menu, c hin th hi ngi dng nhn nt Menu. hi ngi dng nhn nt D-pad, n roi cng h tr menu ng cnh, n c gn vo bt k View no bn trong mt Activity.Mt menu ng cnh c hin th trackball, hoc nhn vo mn hnh cm ng khong 3 giy.menu ng cnh h tr submenu, checkbox, radio button, shortcut key, v icon. Cc lo i menu trong android: Icon Menu: c kt vi menu, xut hin phn i ca mn hnh thit b khi nt Menu c nhn. N hin th icon v text cho cc menu item hoc cc h ng th y i mt la chn tuyt vi cho cc iu khin i hi ha cao, cn phi cp nht lin tc hoc

33

submenu. Icon menu h tr t o ti 6 menu item, v cc menu item n y h ng th hin th checkbox, radio button, hay shortcut key.

Hnh 7 Icon menu Expanded Menu: hin th hi ngi dng chn More trong menu icon. Expand Menu hin th mt danh sch c th cun c cc menu item, v cc menu item ny khng th cha cc icon m ch c th cha text, shortcut key v checkbox/ radio button.

Hnh 8 Expanded menu Submenu: mi submenu hin th bng mt ca s, tn c su menu c hin th thanh header v mi Menu item c hin th vi y text, checkbox, shortcut key v khng th hin th icon cho cc item. Android khng h tr cc submenu lng nhau, v khng th thm mt submenu vo mt submenu.

34

Hnh 9 - Submenu Cc kiu Menu Item Android h tr hu ht cc kiu menu item truyn thng, bao gm icon, shortcut, checkbox, radio button: Checkbox v Radio button group: thit lp mt menu item l checkbox s dng phng thc setCheckable, thit lp tr ng thi ca checkbox dngsetChecked. Mt radio button group l mt nhm cc radio button v ch c mt trong s chng c chn t i mt thi im t o mt radio button group, gn cng ID nhm cho mi item, s u gi phng thc Menu.setGroupCheckable, truyn vo ID nhm, v thit lp gi tr cho cc tham s khc l True. // t o checkbox. menu.add(0,CHECKBOX_ITEM,Menu.NONE, hec Box) set hec // t o radio button group. menu.add(RB_GROUP, RADIOBUTTON_1, Menu.NONE, R io utton 1); menu (RB_GROUP, R DIOBUTTON_2, Menu NONE, R io utton 2); R io utton 3) set hec e (true); menu.setGroupCheckable(RB_GROUP, true, true); e(true);

menu.add(RB_GROUP, RADIOBUTTON_3, Menu.NONE,

35

Shorcut Key: ch nh mt keypad shortcut cho mt Menu Item s dng phng thc setShortcut Phng thc ny yu cu truyn vo 2 tham s, mt l phm s v mt l bn phm y . menuItem setShortcut(0, ); Condensed Title: dng mt text hin th menu. menuItem setTit e on ense (Short Tit e); Icon: biu tng ch c hin th trn Icon Menu menuItem.setIcon(R.drawable.menu_item_icon). Menu Item Click Listener: khi mt menu c chn s c mt x l iu khin. phng thc onOptionsItemSelected.

menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem _menuItem) { [ ...thc hin x l ... ] return true; } }); Intent: Khi mt menu item c chn, Android s thc thi startActivity vi mt i tng Intent. menuItem.setIntent(new Intent(this, MyOtherActivity.class)); T o mt Menu: t o mt menu, trong ctivity overri e phng thc onCreateOptionsMenu, phng thc n y c thc thin ln u tin hi menu c hin th . onCreateOptionsMenunhn mt tham s kiu Menu Dng phng thc add trn i tng Menu n y thm vo cc item. Mi menu item cn phi ch nh cc thuc tnh sau: Nhm m item c thm vo.

36

Mi item c mt ID duy nht, bi v chng c x chung trong phng thc onOptionsItemSelected nn vic xc nh item n o c chn l ph thuc vo ID c ch nh cho n. Cch sp xp th t m item c hin th . Text th hin ca item, c th l mt chui cc k t hoc mt string resource. 1.2.6 X l bt ng b 1.2.6.1 Thread Th ng thng lp trnh vin ng Thre x l cc code x l nng, hoc mt thi gian c th gy chm chng trnh hoc giao din b block.Thread kh thng dng v trong Android dng lp Thread ca Java. Theo mc nh, mi ng dng ch y trong mttin trnh v co e c thc thi trong thread chnh ca tin trnh Nu code x l qu lu, khng k p phn hi l i cc s kin ngi dng trong 5 giy th s xut hin i og pp ic tion is not respon ing v ngi dng c th ng ng dng ngay lp tc. Nu khng b ng th ng dng s b g, iu ny l kh chp nhn.

Thread thread = new Thread() { @Override public synchronized void start() { // Khi t o cc i tng cn thit t i y super.start(); } @Override public void run() { // code x l chnh ca thread trong ny super.run(); } }; thread.start(); //bt u thread

37

Lu : Thread ln u thc thi gi phng thc start(), nhng ln sau ch gi phng thc run(), khng gi start() na. Cc code x in qu n n giao din ch c x l trong thread chnh ca ng dng (v d load nh t m ng v th ng thre , nhng hin th nh ln ImageView th x l trong thread chnh) Sau khi thc thi xong phng thc run(), thread khng cn ho t ng na.

1.2.6.2 Handler Trong Androi , tin vic giao tip gi 2 thre t ng i tng Handler. C th ng H n er nh m gi y hi chi nh c, hoc chc nng tng t. Ngoi ra, c th ng H n er t x l mt yu cu n o s u mt khong thi gi n xc nh. Giao tip gia 2 Thread: Gi s trong phng thc run() y xong i tng Bitmap v. Mun truyn i tng Bitmap cho Thread chnh hin th ln mn hnh: Message msg = mHandler.obtainMessage(1, bitmap); mHandler.sendMessage(msg); Trong code ca Activity (mc nh l thread chnh), ta khai bo mt i tng H n er tng tng nh s u: Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 1) { //Hin th Bitmap mImageView.setImageBitmap((Bitmap)msg.obj); } super.handleMessage(msg); } };

38

Trong o n code trn, i tng mHandler ly ra mt message v gn m vo cho mess ge , m theo i tng itm p S u gi i Message gi i s c nhn phng thc callback l handleMessage() c i tng Handler. Handler cn c th gi mess ge x l sau mt khong thi gi n nh sn sendMessageAtTime hoc x l t i mt thi im nh sn sendMessageDelayed.

1.2.6.3 AlarmManager Dng rmM n ger thc hin ng x l mt th o tc n o t i mt thi im nht nh trong tng i (thng l thi gian di, nu x l trong thi gian ngn th khuyn co nn dng Handler). Khi n thi im c t trc, d ng dng ng h ng ch y th n vn c gi. Nu tt my ri bt l i th khng cn. Khi t o mt AlarmManager: AlarmManager am =(AlarmManager)getSystemService(ALARM_SERVICE); Intent broadcastIntent = new Intent("org.multiuni.android.ACTION..."); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT); am.set(AlarmManager.RTC_WAKEUP, triggerAtTime, pendingIntent);

1.2.6.4 Notification Trong nhng trng hp chng ta mun hin mt thng bo v mt s kin no (tin nhn, cuc gi, em i ) cho ngi dng m khng mun nh hng n cng vic ca h hoc khng chc l h c ng cm in tho i hay khng, hoc b n mun hin th thng tin mt vic n o ng xy r trn in tho i ( ng nghe nh c, ng trong cuc gi, thiu th nh) v mong ngi dng bit th chng ta dng Notification.

39

Chng ta c th t o mt thng bo c nhiu hnh thc hc nh u nh c m bo, rung, n e , icon Mi phng php th ng o c mt tham s id kiu int v ty chn mt tham s tag kiu String, c th l null, t o thnh mt b hai (tag, id) hoc (null, id). B hai ny nhn din thng bo t ng dng, v phi l duy nht trong ng dng.Nu gi mt trong nhng phng thc thng bo vi b (tag, id) hin ng ho t ng v thit lp cc thng s mi th n s c cp nht. T o mt thng bo T o mt i tng Notic tion, truyn v o icon hin th thanh trang thi v thi gian hin th : // chn mt drawa e hin th nh int icon = R.drawable.icon; // Text hin th ln thanh tr ng thi hi th ng o c ch y String tic erText = Notific tion; // Thanh tr ng thi m rng sp xp cc thng bo theo th t thi gian when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when); Cu hnh giao din ca Notification trong ca s tr ng thi m rng, s dng phng thc setLatestEventInfo. Ca s tr ng thi m rng ny hin th icon v thi gi n c h i o trong constructor v ng thi hin th tiu v chi tit v chui thng bo. Context context = getApplicationContext(); // Text hin th trn ca s tr ng thi m rng String exp n e Text = Exten e st tus text; // Tiu ca thanh tr ng thi m rng String exp n e Tit e = Notific tion Tit e; // Intent ch y mt ctivity hi text c click Intent intent = new Intent(this, MyActivity.class); mt icon ca thanh tr ng thi

40

PendingIntent launchIntent = PendingIntent.getActivity(context, 0, intent, 0); notification.setLatestEventInfo(context, expandedTitle, expandedText, launchIntent); Ci tin thng bo bng cc thuc tnh khc c i tng Notic tion lm nhy n trn LED trn thit b , rung in tho i hay trnh din cc file nh c. Gi mt thng bo thc hin gi mt thng bo, gi phng thc notify ca NotificationManager: int notificationRef = 1; notificationManager.notify(notificationRef, notification); cp nht mt th ng o c s dng, gi l i v truyn l i gi tr reference ID ng c th s dng ID n y hy thng bo bng cch gi phng thc cancel ca NotificationManager. notificationManager.cancel(notificationRef); Vic hy thng bo s xa thanh icon tr ng thi v ca s tr ng thi m rng.

41

HNG 2: XY DNG HNG TRNH QUN L CONTACTS DEMO


2.1 Phn tch thit k h thng qun l Contact 2.1.1 c t bi ton i vi mi chic in tho i i ng Contact l ng dng khng th thiu, dng qun l danh b in tho i, thng tin ca nhng c nhn cn lin l c trong danh b . Vi mc ch emo cho cc tm hiu l thuyt, ng dng qun l contacts Demo c xy dng c mt s chc nng nh ng dng Contact trong nhng chic in tho i th ng thng: Hin th danh sch lin l c. Tm kim nhanh mt thng tin lin l c. Thm mi, sa v xa thng tin lin l c. B i ton t ra l : Xy dng ng dng emo cho cc thut lp trnh c n trn nn tng h iu hnh m Android. 2.1 2 c t chc nng Hin th thng tin lin l c Chc nng hin th thng tin lin l c cho php ngi dng xem c danh sch cc thng tin lin l c. Hin th ton b danh sch Contacts gm c Tn v S lin h. Dng s in: Ngi ng t chng trnh hng trnh hin th nh sch cc th ng tin in c Thm mi thng tin lic l c Chc nng thm mi thng tin lin l c cho php ngi dung c th thm thng tin lin l c mi vo danh sch thng tin lin l c. Dng s in: Ngi ng chn chc nng thm mi

42

H thng hin th Form nhp th ng tin Ngi ng nhp th ng tin v Su mit H thng in tr th ng tin Nu th ng tin hp th h th ng tin h nh thm mi th ng tin in c v o SDL Nu ngc i th r th ng o v qu y i Form nhp th ng tin Nu thm mi th nh c ng th h thng tr v Sa thng tin lin l c Chc nng sa thng tin lin l c cho php ngi dung c th s i thng tin ca mt Contacts. Dng s in: Ngi ng chn chc nng s th ng tin in c H thng hin th Form s th ng tin Ngi ng s th ng tin v Su mit H thng in tr th ng tin Nu th ng tin hp th h th ng tin h nh thm mi th ng tin in c v o SDL Nu ngc i th r th ng o v qu y i Form nhp th ng tin Nu thm mi th nh c ng th h thng tr v Xa thng tin lin l c Chc nng xa thng tin lin l c cho php ngi dng c th xa mt Contact. Dng s in: Ngi ng chn chc nng x th ng tin in c Hin th th ng o xc nhn x Ngi ng xc nhn H thng x th ng tin in c trong SDL S u hin th cp nht mi Tm kim nhanh th ng tin in c Chc nng tm im nh nh ont ct cho php ngi dng tm nhanh mt Contact trong danh sch Contacts. Dng s kin: Ngi dung nhp t h tm in vo textbox tm kim. nh sch in h nh sch in c cp nht nh sch in c cp nht

43

H thng t ng kim tra so snh t kha nhp vo vi cc Contacts, t tr v kt qu tm kim cho ngi dung. 2.1.3 Phn tch h thng vi UML 2.1.3.1 Biu Usercase M hnh Use se i y th hin cho cc chc nng ca h thng, cc chc nng m ngi dung c th tng tc

Hnh 10: Biu UseCase tng qut 2.1.3.2 Biu Sequence (Biu tun t) Hin th danh sch lin l c

n 11

u tun t

n ng

n t

44

Tm him nhanh thng tin lin l c

n 12

u tun t

n ng t

Thm mt thng tin lin l c mi

n 13

u tun t

n ng t

45

Sa thng tin lin l c

n 14

u tun t

n ng

at

ng t n l n l .

Xa thng tin lin l c

46

n 15

u tun t

n ng

at

ng t n l n l

X y ng gi o in chng trnh Gi o in ch nh hin th nh sch th ng tin in c Giao din chnh hin th danh sch cc thng tin lin l c c trong my. Danh sch ny hin th tn v s in tho i c trong in tho i.

Hnh 16: Giao din chnh hin th danh sch lin lc Gi o in tm im th ng tin in c

47

Giao din tm kim gm c mt textbox nm giao din ch nh cho php ngi dung nhp ni dung tm kim theo tn.

Hnh 17: Giao din tm kim

48

Gi o in thm mi th ng tin in c v sa thng tin lin l c y em s dng chung mt giao din cho thm mi v sa thng tin lin l c. Giao din gm c cc text ox in tn , s in tho i v e-mail.

Hnh 18: Giao din thm v s a thng tin lin lc Cc giao din Menu s dng trong chng trnh

Hnh 19: Giao din menu chn ch

n ng 49

a, xa

Hnh 20: Giao din menu chn ch

n ng t m mi

50

KT LUN
Kt qu t c ng trc s pht trin ca cc thit b i ng v nhng i hi c con ngi i ng ngy cng cao. Vi trong nh vc gii tr, ng dng trn cc thit b lun n y trnh

t i Tm hiu lp trnh Android v xy dng ng dng Contacts Demo, h y c tng quan v lp trnh trn n roi v cc thut v lp trnh c n trn Android. Tuy nhin do h n ch v iu kin v thi gian cng nh nng c, kho lun s khng th trnh khi nhng thiu st K nh mong c s ng gp in ca thy c v cc b n nhm thc hin c th hon thin hn ti nghin cu ca mnh. Hng pht trin Hin t i, h iu h nh n roi ng pht trin rc r, v t nh nng m ca n. V n cng ng c cng ng cc lp trnh vin trn khp th gii quan tm v tm hiu, ng thi tr gip cho Google pht trin v hon thin t nh nng cho h iu hnh ny. Do , trong tng i em thc hin s tip tc tm hiu, i s u hn v cc k thut chuyn su lp trnh ng dng n roi , hng n pht trin cc demo trn thnh mt ng dng hon chnh.

51

TI LIU THAM KHO Reto Meier Profession Publishing, Inc. 2009. Frank Ableson. Nhp mn pht trin ng dng Android. 2011. Chu Duy Thin, V Thy Linh, L Quc Tin. Tiu lun Tm hiu v vit ng dng trn nn h iu hnh mobile Android. 2010. http://www.android.com/ http://developer.android.com/index.html http://code.google.com/intl/vi-VN/android/ n roi pp ic tion Deve opment Wiley

52

You might also like