You are on page 1of 50

NHN XT CA GIO VIN HNG DN........................................................................2 4. Xu hng hin nay.........................................................................................................6 2. Android Virtual Device (Emulator):.............................................................................18 3.

Mt s chc nng cn bit khi lp trnh Android vi Eclipse:....................................19

NHN XT CA GIO VIN HNG DN


............................................................................................................................ ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... ....................................................................................................................................... H Ni, ngy thng nm 2012 Ging vin Th.S Th Tm
2

LI NI U Ngy nay vi s pht trin khng ngng ca cng ngh, cc thit b thng minh ngy cng nhiu v tr ln thit yu. c bit l cc sn phm cng ngh mang tnh gii tr v ng dng cao nh in thoi di ng Ngy ny vic s hu mt chic smartphone khng cn qu kh th nhu cu a cc ng dng hay t my tnh ln in thoi cng tr ln thit thc. C rt nhiu hang in thoi cng nh cc h iu hnh dnh ring cho smartphone, tuy nhin vi tnh cht n gin v thng minh, google Android ang dn tr thnh h diu hnh ng u trong phn khc h iu hnh dnh cho mobile. Mi pht trin gn y nhng lp trnh mobile ang ha hn l mt mng v cng pht trin, c bit l lp trnh cho smartphone s dng h iu hnh Android. Bi bo co ny s gip mt phn no choc ho nhng ai mun pht trin v xy dng cc ng dng cho smartphone s dng h iu hnh Android. hon thnh bo co thc tp tt nghip ny, chng em c s gip tn tnh ca ging vin hng dn - Th.S Th Tm - Ging vin khoa CNTT trng i Hc Cng Nghip H Ni, C tn tnh hng dn, gp chnh sa rt chi tit cho bi bo co ny. Em xin chn thnh gi li cm n su sc ti C. Xin chc C v gia nh lun mnh khe v thnh phc.

Chng I: Tng quan v thit b di ng


I. Gii thiu v cc thit b di ng. in thoi di ng ngy nay tr nn rt ph bin v tr thnh mt mn hng ph thng hn bao gi ht. Bn cnh , nh chi ph sn xut in thoi ngy cng r v nhu cu v in thoi ln nhiu mc khc nhau vi tng i tng khch hng, nn in thoi di ng c nhiu dng khc nhau v kh phn loi hn trc. Tuy nhin da vo tnh nng ca in thoi ta c th phn bit thnh cc dng in thoi khc nhau. l cch phn loi in thoi da vo tnh nng v kh nng x l ca in thoi, thm vo , cc nh nghin cu li c nhng cch phn chia khc nhau, da vo hng in thoi hay l gi tin, nhng c l l cch phn loi khng hp l v ch dnh cho mc ch thng mi. Vic phn chia in thoi ch chnh xc trong mt khong thi gian xc nh, c th, hin ti c mt khi nim mi xut hin l supper phone, xc nh da trn tc ca vi x l (hn 1ghz) v b nh Ram, n thm ch mnh hn cc my tnh c nhn pc hin ti v cung cp cho khch hng mt tri nghim hon ton mi, mnh m hn v kt ni hn. y ta ch xt phn loi da vo tnh nng v kh nng x l. 1. Dumpphone ng ngha vi th h in thoi u tin, l nhng in thoi m c t hoc hu nh khng c cc tnh nng, c im nh cc in thoi cao cp: c mn hnh nh hn v t mu sc mn hnh; bn cnh l thiu nhiu tnh nng nh duyt Email hay lt web, kh nng kt ni wireless, lu tr d liu, camera video mp3 player. D nhin l khng c h iu hnh di ng. c bit, c im quan trng nht ca Dumbphone so snh vi cc dng khc l in thoi khng c kh nng cung cp mi trng bn th ba pht trin cc ng dng k c java. y l dng in thoi gi r nht v li c lng tiu th v cng ln do da vo nhu cu n gin ca khch hng v gi thnh sn phm. Tuy nhin li nhun ca n mang li cho cc nh sn xut l khng ln, thm ch l khng bng doanh thu ca h iu hnh di ng mang li. 2.Featurephone Featuephone l cm t dng cp cc loi in thoi di ng gi r v thiu cc chc nng nh l cc smartphone (s cp sau y), nhng c nhiu tnh nng u vit hn dumbphone. Cm t ny trc y ban u c dng cho cc in thoi di ng c nhng chc nng m ci tin v khng chy trn cc in thoi thng thng nh dumbphone, v th, ti thi gian gia smart phone v feature phone khng c s loi tr ln nhau. Tuy nhin, bi v cng ngh in thoi di ng ngy cng cao cp hn, cc in thoi gi r ny c xp vo mc l feature phone, v t nm 2007, cc khi nim smart phone v feature phone c s dng ring bit vi nhau nhm phn loi r cc dng in thoi cao cp hn, c chy h iu hnh. Nh ni
4

trn, cc feature phone c th chy ng dng ca bn th ba thng qua nn tng java Me hay l BREW. Tuy nhin, cc feature phone c t cc chng trnh cao cp APIs v khng c kh nng chy c cc phn mm m hin nhin chy trn cc nn tng smartphone. Cc chuyn gia phn tch cho rng, vi vic gi c cc in thoi smartphone ang gim mnh (c bit l s xut hin v ph bin ca h iu hnh m Android- Google) th dn dn smartphone s chim lnh c th trng ca feature phones trong thi gian rt ngn do tnh nng vt tri m n mang li cho khch hng so vi feature phone. Trong nm 2009, l giai on thnh vng ca Feature phone , cc feature phone chim n 83% s lng din thoi di ng (in thoi hot ng da trn sng radio) ca ton nc M. N th hin c s thng li tuyt i so vi cc Dumpphone trc y. 3. Smartphone a. Thit b cm tay PDA (Personal digital assistant) : l cc thit b cm tay khng c kh nng thc hin cc chc nng ca mt dumbphone nh gi in nhn tin, nhng c kh nng kt ni internet wireless duyt web v email, nh v ton cu, ng b ha d liu vi my tnh c nhn thng qua cng usb hoc wireless. Ging nh mt chic my tnh cm tay, dng qun l danh b, cc thit b, cng vic. Dng lu tr cc a ch, lch, danh sch cng vic phi lm v to ghi ch. l bao gm cc ng dng qun l cc thng tin c nhn. Cc PDA mi nht hin nay i khi c chc nng nghe gi in nhn tin hay tch hp cc mp3 player. Khi nim PDA c s dng ln u tin vo ngy 7 thng 1 nm 1992 do CEO ca Apple Computer. b. Quay li smartphone, cc nh sn xut khng c nh ngha chnh xc nhng c th hiu khi nim 1 smartphone nh sau: Smartphone l mt dng in thoi di ng cao cp m cung cp rt nhiu cc tnh nng vt tri cng nh kh bng kt ni tt hn rt nhiu so vi cc in thoi thng thng. N nh l mt s kt hp gia cc PDA v Feature phone. Hnh bn l smartphone HTC Sensation 4G. Bn cnh c im c bn nht ca n l c kh nng chy hon ho mt h iu hnh di ng nh iOs, Windows Phone (Windows mobile), Android, BlackBerry OS, Nokia Symbian, v cc nn tng khc nh Maemo, Bada, Meego etc. V th n bao gm tt c cc tnh nng ca cc dng in thoi trc v lm tt hn th, nh h iu hnh, cc smartphone c th chy a nhim v hot ng nh mt my vi tnh thc th. Smartphone hin nhin d dng chy cc ng dng ca bn th ba, APIs, v c th ni cc smartphone l cc my tnh c nhn cm tay.

4. Xu hng hin nay. a dng v kiu dng, mu m v nh sn xut, th phn ca smartphone s dng nn tng Android ang cng iPhone tng nhanh ti th trng smartphone Vit Nam. Tuy nhin, cu binh Symbian vn ang nm gi ming bnh ln trong lng di ng ti Vit Nam. c Apple gii thiu vo nm 2007, nhng chic iPhone u tin nhanh chng c nhp v Vit Nam theo ng xch tay v lp tc to nn mt cn st thc s trn th trng smartphone vo thi im , vn cha thc s si ng. Sau 4 nm, qua bn phin bn, sc nng ca iPhone vn ang cn lan ta trn ton th gii ni chung v ti Vit Nam ni ring, c bit khi Apple pht hnh phin bn quc t, cho php s dng rng ri trn ton cu, s lng iPhone ti th trng trong nc tng ln nhanh chng, theo ng xch tay ln nhp khu chnh hng t cc nh phn phi. Trong khi , xut hin chm hn, n 2009 nhng chic smartphone u tin dn nhn Google, s dng nn tng Android mi chp chng xut hin ti th trng Vit Nam. Khng qu n o v nh m nh iPhone, nhng cc sn phm s dng Android li c c s hng hu v s lng v kiu dng. Trong khi iPhone ch l sn phm ca ring Apple, vi thit k n nht, th Android li c i ng cc nh sn xut, bao gm HTC, Samsung, LG, Sony Ericsson vi nhiu kiu dng thit k khc nhau cho ngi dng c nhiu s la chn hn. Mt trong nhng nguyn nhn chnh gip Android thnh cng ti th trng Vit Nam chnh l s lng ngi dng Google ng o. Vi vic tch hp cc ng dng Google vo bn trong nn tng ny, gip ngi dng khai thc v s dng chng c thun tin hn. Thm vo , s lng ng dng h tr khng l dnh cho c nn tng iOS trn iPhone ln Android gip p ng y cc yu cu ca ngi dng, khin 2 nn tng ny nhanh chng lm hi lng cc khch hng trong nc. Cuc kho st c Dn tr tin hnh trong thng 7 nm 2011 cng cho thy s "thng tr" ca iPhone v Android. Trong s hn 17,5 ngn bn c tham gia bnh chn, c n 30% ngi s dng in thoi Android v 25% ngi s dng iPhone. iu ny cho thy, iPhone v smartphone Android ang thc s tr thnh 1 xu hng ti Vit Nam.

Kt qu cuc kho st c tin hnh bi Dn tr Cch y chng 10 nm, khi th trng smartphone vn cn yn ng, l thi im ca nhng chic my PDA, vi mn hnh cm ng, nhng tnh nng h tr
6

cho ngi s dng l thi im Windows Mobile thc s tr thnh mt tro lu. n lc th trng bt u rc rch vi cc sn phm smartphone, Windows Mobile cng mt thi lm ma, lm gi ti th trng Vit Nam. Vi s lng ngi dng PC chim u th, vic la chn mt chic smartphone vi nn tng thn thuc l iu khng t khch hng la chn.

Mt thi Windows Mobile thng tr th trng Vit (hnh minh ha) Vi trit l: nhng g bn c th lm trn PC cng c th lm trn smartphone s dng Windows Mobile, thm ch nhiu ng dng trn PC cng c phin bn dnh cho smartphone. iu ny ngy cng gip Windows Mobie c lng ngi dng, nht l nhng ngi dng bn rng ti Vit Nam, thng xuyn cn 1 thit b c th p ng y cc cng vic ca mnh. Tuy nhin, Windows Mobile kh bo th trong qu trnh pht trin, lun t ra chm chp trc nhng thay i v cng ngh. Sut 7 nm t 2004- 2011, Windows Mobile dng nh khng h c chnh sa trong nhn h iu hnh, ch c nhng thay i nh v giao din v chc nng khng ng k. S bo th ca Windows Mobile l kh chp nhn c trong 1 th gii cng ngh y bin ng, y chnh l nguyn nhn chnh khin th phn Windows Mobile lin tc xung dc, khng ch th trng Vit Nam m trn ton th gii. Microsoft cui cng phi quyt nh khai t Windows Mobile v thay th bng Windows Phone 7. th trng Vit Nam, Windows Phone 7 xut hin t kh sm, vi cc dng my u tin : LG 7, HTC HD7..... thi im ra mt u l cc siu phm. Nhng Windows Phone 7 cha gy c s ch ln. iu ny l d hiu v trong th trng h iu hnh cho smartphone ang cnh tranh rt khc lit nh hin nay, nu nh iOS th hin u th mng gii tr cng nh cc
7

thit b mang tnh thm m cao, Symbian d s dng v gi c hp l, RIM vi kh nng lm vic chuyn nghip, Android vi kh nng gii tr tt cng nh lng thit b phong ph th thc s Windows Phone 7 cha th hin c 1 u im vt tri no. u c vi li khen v giao din mi ca Windows Phone 7 d nhn, nhng kh nng gii tr hn ch, phn mm tng thch t, con ng trc mt ca Windows Phone 7 trn th gii ni chung v Vit Nam ni ring rt chng gai. Cch y khng lu, trc thi im iPhone c ra mt, nhc n in thoi, ngi ta ngh ngay n Nokia, vi nhng thit k phong cch, kiu dng thi trang v c bit nn tng Symbian mnh m.

in thoi Nokia vi h iu hnh Symbian Smartphone s dng Symbian tng c xem l biu tng ti Vit Nam Tuy nhin, Nokia qu chm chp trong vic ci tin nn tng di ng ny, vi s lng ng dng ngho nn. Nn khng lu ngay sau khi iPhone, v sau l Android xut hin, Symbian nhanh chng tr thnh h iu hnh gi ci b khch hng quay lng. Nhm ly li lng tin ca ngi s dng, Nokia lin tc ra mt nhng smartphone hot nh N8, X7 nhng cuc ua vn dng nh rt kh khn. Trong khi Android ang c s tng tc v s lng ng dng, th Nokia c v nh ang b qun nn tng ca mnh, rt ng tht vng. By gi rt nhiu ngi la chn Android, thay v tip tc ch i Nokia thay i. Tuy nhin, khc vi Windows Mobile, Nokia vn c mt lng ngi dng trung thnh vi cc sn phm ca mnh. iu ny gii thch l do ti sao, mc d lng sn phm tiu th ca Nokia trn th trng Vit Nam gim hn so vi cc hng khc, tuy nhin Symbian ca Nokia vn tip tc nm gi mt th phn ng k ti Vit Nam. Ngoi ra, nh vo vinh quang c trc y, a phn l nhng smartphone i c, vn c s hu t trc khi c iPhone v Android, m ngi dng vn ngi cha mun chia tay chic smartphone gn b vi mnh. y cng

l mt trong nhng l do gii thch cho th phn hin ti ca Symbian v Nokia trn th trng smartphone. Cng trong cuc kho st ca Dn tr , bn cnh s "thng tr" ca iPhone v Android, chnh l s hin din ca Symbian, vi 28% (trong tng s hn 17,5 ngn bn c bnh chn). Trong khi Windows Mobile ca Microsoft ch chim mt phn khim tn ch 8%. Tuy ch l mt cuc kho st mang tm vc vi m, tuy nhin kt qu ny cng phn no cho thy nh dng ca th trng smartphone ti nc ta hin nay. Nhn xt v th trng smartphone ti Vit Nam, chng ta c th nhn thy trong tng lai gn, iPhone v Android vn s l chun mc smartphone Vit Nam. Tm li th trng smartphone Vit Nam , ang v s pht trin rt mnh m, c bit l trong nhng nm ti do s pht trin khng ngng ca cc dch v vin thng.

Chng II: Gii thiu h iu hnh android


I. Android l g? Android l mt h iu hnh dnh cho thit b di ng nh smartphone, tablet hay netbook. Android do Google pht trin da trn nn tng Linux kernel v cc phn mm m ngun m. Android l h iu hnh m m ngun chnh duy nht vi 12 triu dng m bao gm 3 triu dng m XML, 2.8 triu dng ma C, 2.1 triu dng Java v 1.75 triu dng C+ +. Ban u nn tng ny c pht trin bi Android Inc (sau c Google mua li) v gn y n tr thnh mt trong nhng phn mm ng u ca lin minh OHA (Open Handset Alliance vi khong 78 thnh vin bao gm c nh sn xut, nh pht trin ng dng cho thit b di dng m dn u l Google). Android c pht trin nhm cnh tranh vi cc h iu hnh di ng khc nh iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian (Nokia), Samsung (Bada), Tnh n thi im ny, Android tr thnh nn tng di ng tng trng nhanh nht th gii.

II. Lch s pht trin ca h diu hnh Android. Thng 10/2003, Android (Inc) c thnh lp ti Palo Alto, California, Hoa K do Andy Rubin (ng sng lp ca Danger Inc), Rich Miner (ng sng lp ca Wildfire Communications Inc v cu ph ch tch cng ngh v tng lai Orange) v mt s thnh vin khc ch tr, vi mc ch pht trin hay to ra cc thit b di ng thng minh hn phc v cc mc ch cho li ch con ngi. Bc u, h iu hnh Android ch n thun l phn mm trn in thoi di ng. Android ban u
10

pht trin da trn ht nhn Linux. Thng 8/2005, Google mua li Android Inc vi gi 50 triu USD.. Cc nhn vin chnh ca Android Inc, trong c Andy Rubin, Rich Miner vn tip tc lm vic ti cng ty. Ti Google, nhm k s do Rubin ng u pht trin mt nn tng di ng da trn ht nhn Linux. Sau , h gii thiu cho cc nh sn xut thit b cm tay v cc nh mng trn nhng tin v vic cung cp mt h thng mm do, c kh nng nng cp m rng cao. Google cng ln danh sch cc thnh phn phn cng p ng nn tng v cc i tc phn mm, ng thi cam kt vi cc nh mng rng h sn sng hp tc nhiu cp khc nhau. Thi gian ny, mt lot ngun tin khng nh Google s sm tham gia pht trin h iu hnh ring cho in thoi di ng. Thng 9/2007, InformationWeek ng ti mt nghin cu ca Evalueserve cho bit Google np mt s n xin cp bng sng ch trong lnh vc in thoi di ng. Thng 11/2007, Lin minh thit b cm tay m rng (Open Handset Alliance) vi s ng thun ca Texas Instruments, Tp on Broadcom, Google, HTC, Intel, LG, Tp on Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel v T-Mobile thnh lp vi mc ch pht trin cc tiu chun m cho thit b di ng. V nh vy, Android chnh thc gia nhp Lin minh thit b cm tay m ngun m ng thi Google cng b vic h bt tay pht trin h iu hnh m ngun m cho thit b di ng nhm cnh tranh vi Symbian, Windows Mobile v cc i th khc. Hng cng gii thiu sn phm Android u tin l T-Mobile G1. y l mt thit b di ng c h iu hnh da trn nhn Linux phin bn 2.6. T thng 10/2008, h iu hnh Android chnh thc tr thnh phn mm m ngun m. Theo o, cc cng ty th ba c php thm nhng ng dng cua ring ca h vo Android v bn chng m khng cn phi hoi y kin Google. Thng 11/2008, Lin minh OHA ra mt gi pht trin phn mm Android SDK cho nh lp trnh. S lng smartphone Android ngy cng gia tng. n thng 12/2008, c thm 14 thnh vin mi gia nhp d n Android c cng b, gm c ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, v Vodafone Group Plc. Thng 2/2009, mt s cng ty trong c Qualcomm v Texas Instruments co
11

trong tay nhng con chip chy cc phin bn n gin ca h iu hnh Android, mang n nhng tri nghim hon ton mi cho ngi dng trn ton th gii. n nm 2010, s lng smartphone nn tng Android tng trng mnh m. Hng lot nh sn xut hng u bt tay sn xut smartphone nh Samsung, HTC, Motorola Thm ch, Android cn c coi l cu cnh cho nhiu i gia cng ngh bc sang mt trang mi trong vic ci thin doanh s, bn hng c li sau mt thi gian di tr tr, tiu biu l Motorola. III. Cc phin bn h iu hnh Android. T lc ra mt phin bn u tin cho ti nay, Android c rt nhiu bn nng cp. a s u tp trung vo vic v li v thm nhng tnh nng mi. Android nhng th h u tin 1.0 ( 9/2008) v 1.1 ( 2/2009) cha c tn gi chnh thc. T th h tip theo, mi bn nng cp u c t vi nhng m tn ring da theo cc mn n hp dn theo th t bng ch ci t C-D-E-F-G-H-I. Hin ti cc phin bn chinh cua Android bao gm: - 1.5 (Cupcake): Ra mt thng 4/2009: Phin bn ny c mt s tnh nng ng ch nh: kh nng ghi li v xem video thng qua ch my ghi hnh, ti video ln YouTube v nh ln Picasa trc tip t in thoi, tch hp bn phm o vi kh nng on trc vn bn, t ng kt ni vi mt thit b Bluetooth trong mt khong cch nht nh, cc widget v th mc mi c th ci t linh ng trn mn hnh ch. - 1.6 (Donut) : Ra mt thng 9/2009: Phin bn ny gip Nng cao tri nghim trn kho ng dng Android Market, tch hp giao din ty bin cho php ngi dng xa nhiu nh cng lc, nng cp Voice Search, nng cp kh nng tm kim bookmarks, history, contacts v web trn mn hnh ch, bc u h tr mn hnh phn gii WVGA. - 2.0/2.1 (Eclair): Ra mt thng 10/2009. Phin bn ny c s ci thin r rt trong giao din ngi dng, ti u ha tc phn cng, h tr nhiu kch c v phn gii mn hnh hn, thay i giao din duyt web v h tr chun HTML5,
12

Exchange ActiveSync 2.5, nng cp Google Maps 3.1.2, camera zoom k thut s tch hp n flash, nng cp bn phm o v kt ni Bluetooth 2.1. - 2.2 (Froyo): Ra mt thng 5/2010: Phin bn ny ch trng nng cp tc x l, gii thiu engine Chrome V8 JavaScript, h tr Adobe Flash10.1, thm tnh nng to im truy cp Wi-Fi. Mt tnh nng ng ch khc h tr chuyn i nhanh chng gia cc ngn ng v t in trn bn phm ng thi cho php ci t v cp nht ng dng cc thit b m rng b nh. Mt trong nhng smartphone u tin chy phin bn Android 2.2 Froyo l LG Optimus One. - 2.3 (Gingerbread): Ra mt thng 12/2010: Phin bn ny nng cp ng k giao din ngi dng, ci thin bn phm o, thm tnh nng copy/paste, h tr cng ngh giao tip tm sng ngn NFC, h tr chun video WebM v nng cao tnh nng copypaste. Cng vi phin bn Gingerbread, Google cng ra mt in thoi u tin ca hng s dng nn tng ny l Google Nexus

Android 3.0 Honeycomb l phin bn dnh ring cho tablet - 3.0 (Honeycomb): Ra mt thng 2/2011: y l phin bn h iu hnh dnh ring cho my tnh bng tablet vi giao din mi ti u ha cho tablet, t cc thao tc u ph thuc mn hnh cm ng (nh lt web, duyt mail..). Honeycomb h tr b x l a nhn v x ly ha ng thi h tr nhiu man hinh home khac nhau, cho phep ngi dung d dang tuy bin giao din nu mun. - 3.1 (Ice-cream sandwich): Phin bn ny ra mt vo cui nm 2011, l s kt hp gia Gingerbread v Honeycomb v chy trn tt c cc thit b nh in thoi, my tnh bng, my tnh xch tay IV. Kt lun: Th phn in thoi Android trn th trng ngy cng tng ln mnh m, phn no chng t nhng u th v tnh nng vt tri ca nn tng ny, ng thi khng nh nhng n lc ca Android trong vic mang n cho ngi tiu dng nhng sn phm
13

tt nht. Tip pht trin ny, vic Android vn ln dn u th trng di ng s l mt tt yu trong tng lai khng xa.

Chng III: Gii thiu c bn lp trnh android


Kho ng dng Android Market ra mt cng thi im vi nn tng Android v cng c s tng trng vt bc trong mt thi gian ngn. iu ny l nh Android c mt cng ng pht trin ng dng rt ln (ln ti 180.000 nh pht trin). Thng 9/2009, Android Market chm mc 10.000 ng dng v con s ny tip tc tng ln khng ngng. Thng 3/2010, Android Market ny t mc 30.000 ng dng v ch sau 1 thng, con s tip tc tng ln 50.000 ng dng. n thng 10/2010 2 nm sau ngy ra mt, Android Market t con s bc ngot 100.000 ng dng v tr thnh mt trong nhng kho ng dng di ng ln nht. Tnh n u thng 5/2011, Android Market c 294.730 ng dng, trong khi App Store nh m cng ch c 381.062 ng dng. Trong thng 4, cc thit b Android c thm 28.000 phn mm mi, trong khi con s dnh cho cc thit b iOS l 11.000. Nu tip tc duy tr tc tng trng nh vy khng lu sau Android Market s tr thnh kho ng dng ln nht cho nn tng smartphone. Khng nhng th Android Market hin ang dn du v s lng ng dng min ph vi khong 132.342 ng dng (trong khi App Store ch c khong 121.845 ng dng). y chnh l mt trong nhiu yu t quan trng to nn s hp dn ca nn tng Android v gii thch l do ti sao cc thit b nn tng ny nhn c s ng h ln ca ngi tiu dng. Chnh v vy lp trnh cho thit b chy h diu hnh Android l hng pht trin v cng tim nng cho cc nh lp trnh vin. I. Gii thiu mi trng lp trnh android. C nhiu mi trng khc nhau gip cho cc lp trnh vin, cc nh pht trin ng dng cho Android c th xy dng v pht trin ng dng ca mnh trn , tuy nhin y chng ta ch xt trn mi trng Window (c th l Window 7) vi b cng c Eclipse.
14

1. Hng dn ci t. Android SDK thc cht l tp hp cc cng c v th vin pht trin cc ng dng trn nn tng h iu hnh Android. Bc 1: Vo trang http://developer.android.com/sdk/index.html ti Android SDK Starter. Ty thuc vo h iu hnh m bn chn bn Mac, Linux hay Window. y mnh chn ti bn cho Window.

Bc 2: Gii nn file zip bn va ti v. Chy SDK Setup.exe. Bn c th gp thng bo li hy ng thng bo ny li. Tip theo ca s Choose Packages to Install xut hin. Nu ca s ny trng rng nhn Cancel. Quay v ca s Android SDK and AVD manager sau Chn Setting, nh du vo Force https://... V chn Available Packages.

Bc 3: nh du cc Packages bn mun ti: Documents chnh l phn Javadoc m t hot ng ca cc phng thc v cc lp (phn ny chc chn khng th thiu ri), Sample l cc on code mu, SDK Platform ng vi cc phin bn h iu hnh
15

(2.2 - API level 8, 2.1 - API level 7,...), v Google API pht trin cc phn mm lin quan n dch v ca Google (nh Google Map nu bn mun lp trnh lin quan n GPS). Cc bn c th ti ht nu thch, cn mun ti u th c th nh du nh mnh (lu USB drivers ch dnh cho ngi s dng Windows v mun pht trin ng dng test bng in thoi tht). Install Selected Install Ca s Install hin ra

Bc 4: Tch hp Android SDK vo Eclipse. Ti Eclipse nu bn cha c, chng ta c th dng mt trong 2 bn sau: Eclipse for Java Developers, hoc Eclipse for Java and Report Developers. Khi chy Eclipse, vo Help Install new softwares. Chn Add, g vo Name tn bn mun v Location g vo a ch ti v ADT: https://dl-ssl.google.com/android/eclipse/ hoc http://dl-ssl.google.com/android/eclipse/ nu https khng hot ng. Ngoi ra bn cng c th ti thng ADT v my theo link http://dl.google.com/android/ADT-0.9.7.zip (bn mi nht 0.9.7 ng vi Android
16

2.2), chn Archive v browse ti file ny (lu khng gii nn) sau chn OK Check vo phn di Name (s hin ra dng Developer Tools).

Ta chn tip Next Next Accept next ... Finish (nh Install mi chng trnh bnh thng). Tip theo: Eclipse Windows Preferences Android Nhn nt Browse v chnh ng dn ti th mc ca Android SDK bn ti lc trc nhn Apply ri OK.

17

2. Android Virtual Device (Emulator): AVD l my o cho developer pht trin ng dng. to mt AVD bn vo Windows Android SDK and AVD Manager Virtual Devices chn New Ca s Create new AVD hin ra, bn in thng tin cho AVD bn mun: Name: Ty (nhng ch c s dng cc k t "a-z", "A-Z", ".-_", ngha l c khong trng cng ko c). Target: Chn phin bn h iu hnh bn mun (thng mnh to mt Android 1.6 v mt Android 2.2 test). SD Card: g vo Size SD card o cho AVD, hoc chnh ti file
18

c sn. Nhiu AVD c th dng chung mt Sdcard (ch cn to ln u, cc ln sau chnh ng dn ti file ). Skin: c th Default (HVGA) hoc chn kch c mn hnh bn mun. Ch cn quan tm ti 3 option: HVGA (phn gii 320-480 nh G1, G2, i5700...), QVGA (240320 nh HTC Wildfire...), WVGA854 (480-854 nh Milestone, NexusOne...) Create AVD.

3. Mt s chc nng cn bit khi lp trnh Android vi Eclipse: 3.1. Debug cho ng dng Android: Nhiu ngi chuyn t J2SE hoc J2ME sang Android s ngc nhin v cu lnh debug kinh in System.out.println() khng cn in ra trn ca s Console na. Google thay th n bng Logcat, mt ca s ghi li ton b hot ng ca h iu hnh. m Logcat, trc tin cc bn chn Window Open Perspective Debug. Nu ko thy option Debug th chn Other v tm Debug trong ca s mi hin ra. Sau chn tab Debug mi xut hin gc trn bn phi ca Eclipse (xem hnh).

19

3.2. File Explorer ca Android: File Explorer l mt chc nng hu ch Google a vo gip chng ta qun l file trong sd card v c file system data (ch qun l c ca emulator, khng th truy nhp system data ca thit b tht). FE gip bn d dng a file vo / ly file ra trong sdcard o ca emulator, xa c s d liu ca chng trnh khi to li (only emulator)... M File Explorer bng cch vo Window Show View Others Android File Explorer. Ta nn File Explorer trong ca s Debug cho tin qun l.
20

II.

Tm hiu ng dng android

Vic hiu c cc thnh phn (component) to nn mt ng dng Android l rt cn thit cho vic lp trnh. Cc thnh phn ny c chia lm 6 loi bao gm: + Activity: hiu mt cch n gin th Activity l nn ca mt ng dng. Khi khi ng mt ng dng Android no th bao gi cng c mt main Activity c gi, hin th mn hnh giao din ca ng dng cho php ngi dng tng tc. + Service: thnh phn chy n trong Android. Service s dng cp nht d liu, a ra cc cnh bo (Notification) v khng bao gi hin th cho ngi dng thy. + Content Provider: kho d liu chia s. Content Provider c s dng qun l v chia s d liu gia cc ng dng.

21

+ Intent: nn tng truyn ti cc thng bo. Intent c s dng gi cc thng bo i nhm khi to mt Activity hay Service thc hin cng vic bn mong mun. VD: khi m mt trang web, bn gi mt intent i to mt activity mi hin th trang web . + Broadcast Receiver: thnh phn thu nhn cc Intent bn ngoi gi ti. VD: bn vit mt chng trnh thay th cho phn gi in mc nh ca Android, khi bn cn mt Broadcast Receiver nhn bit cc Intent l cc cuc gi ti. + Notification: a ra cc cnh bo m khng lm cho cc Activity phi ngng hot ng. Activity, Service, Broadcast Receiver v Content Provider mi l nhng thnh phn chnh cu thnh nn ng dng Android, bt buc phi khai bo trong AndroidManifest (tham kho bi sau ny c gii thiu y v file ny). Tm hiu vng i chng trnh android: Android c c ch qun l cc process theo ch u tin. Cc process c priority thp s b Android gii phng m khng h cnh bo nhm m bo ti nguyn. + Foreground process: l process ca ng dng hin thi ang c ngi dng tng tc. + Visible process: l process ca ng dng m activity ang hin th i vi ngi dng (onPaused() ca activity c gi). + Service process: l Service ang running. + Background process: l process ca ng dng m cc activity ca n ko hin th vi ngi dng (onStoped() ca activity c gi). + Empty process: process khng c bt c mt thnh phn no active. Theo ch u tin th khi cn ti nguyn, Android s t ng kill process, trc tin l cc empty process. Tm hiu vng i ca Activity: Nh gii thiu trn , Actitvity l thnh phn quan trng nht v ng vai tr chnh trong xy dng ng dng Android. H iu hnh Android qun l Activity theo dng stack: khi mt Activity mi c khi to, n s c xp ln u ca stack v tr thnh running activity, cc Activity trc
22

s b tm dng v ch hot ng tr li khi Activity mi c gii phng. Activity bao gm 4 trng thi:
-

active (running): Activity ang hin th trn mn hnh (foreground) paused: Activity vn hin th (visible) nhng khng th tng tc (lost focus). stop: Activity b thay th hon ton bi Activity mi s tin n trng thi stop - killed: Khi h thng b thiu b nh, n s gii phng cc tin trnh theo nguyn tc u tin. Cc Activity trng thi stop hoc pausedcng c th b gii phng v khi n c hin th li th cc Activity ny phi khi ng li hon ton v phc hi li trng thi trc .

23

Hnh : Vng i ca Activity.

24

III. XML trong Android: XML trong Android: Khng ging nh lp trnh java thng thng, lp trnh android ngoi cc lp c vit trong *.java cn s dng XML thit k giao din cho ng dng. Tt nhin bn hon ton c th thit k mt giao din nh mun m khng cn ti bt c mt dng XML no, nhng s dng XML s n gin cng vic i rt nhiu. ng thi s dng XML s gip vic chnh sa ng dng sau ny tr nn d dng, khi lp trnh ng dng ta thit k giao din bng XML v ci t cc x l khi tng tc vi giao din trong code. + Mt s thnh phn c bn trong Android: a. Cc layout: Layout c dng qun l cc thnh phn giao din khc theo mt trt t nht nh. - FrameLayout: Layout n gin nht, thm cc thnh phn con vo gc trn bn tri ca mn hnh. - LinearLayout: thm cc thnh phn con theo mt chiu nht nh (ngang hoc dc). y l layout c s dng nhiu nht. - RelativeLayout: thm cc thnh phn con da trn mi quan h vi cc thnh phn khc hoc vi bin ca layout. - TableLayout: thm cc thnh phn con da trn mt li cc ngang v dc. - AbsoluteLayout: thm cc thnh phn con da theo ta x, y. Layout c s dng nhm mc ch thit k giao din cho nhiu phn gii. Thng khi lp trnh nn kt hp nhiu layout vi nhau to ra giao din bn mong mun. Ngoi ra trong Android trong Android, cc lp s dng to giao din (Edit Text, Text View...) u l lp con ca lp View. Mt s lp thng xuyn c s dng to giao din: - TextView - EditText
25

- ListView - Spinner - CheckBox - Button - RadioButton

IV.

Tm hiu v AndroidManifest v lm vic vi cc view

Trong khung Package Explorer, pha di th mc res, bn s thy mt file c tn l AndroidManifest.xml. Mi ng dng u cn c AdroidManifest.xml m t nhng thng tin quan trng ca n cho h thng Android bit. M: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="at.exam" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Example" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="3" /> </manifest> C th nhng cng vic m AndroidManifest.xml thc hin: t tn cho Java package ca ng dng. M t cc thnh phn (component) ca ng dng: activity, service, broadcast receiver hoc content provider.

26

Thng bo nhng permission m ng dng cn c truy nhp cc protected API v tng tc vi cc ng dng khc. Thng bo nhng permission m cc ng dng khc cn c tng tc vi ng dng hin thi. Thng bo level thp nht ca Android API m ng dng cn chy. (Android 1.0 l level 1, 1.1 l level 2, 1.5 level 3, 1.6 level 4 v 2.0 l level 5).

Tip theo ta s tm hiu dn dn cc view v lm vic vi cc view trong cc phn sau. Mt s lp thng xuyn c s dng to giao din: - TextView - EditText - ListView - CheckBox - Button - RadioButton Ta c th kt hp nhiu view li vi nhau to giao din p cho ng dng. Mt s thuc tnh c bn: Layout_width, layout_height: chiu rng ca view (fill_parent l to bng kch thc ca layout cha view ny, wrap_content l va ni dung cn hin th ca view) Orientation: vi LinearLayout, vic sp xp cc view l nm k nhau theo hng ngang hoc hng dc, ta khai bo orientation chn sp theo kiu no (horizontal/vertical) Gravity: thuc tnh ny qui nh cc view nm bn trong layout s t theo v tr no so vi layout(trung tm, tri , phi, trn di) Weight: cc view phan chia t l din tch hin th trn mn hnh (t l tnh theo weight ca tng view trn tng s weight, cc view ko khai bo weight th s xem qua width v height)
27

Chng ta c th tham kho thm ti: http://developer.android.com/resources/tutorials/views/hello-linearlayout.html im cn lu l n v o trong lp trnh Android: - px (pixel): im chm trn mn hnh. - in (inch) - mm (milimet) - pt (point) = 1/72 m - dp (density - independent pixel): ci ny hi kh gii thch. Ni chung dp c s dng cho nhiu phn gii, v vi phn gii 160 px/inch th 1 dp = 1 px. Trong lp trnh android khuyn dng n v o l dp.

V. Tm hiu v Intent v Broadcast Receiver Khi nim v Intent:Theo nh ngha ca Google, Intent l mt miu t v mt hot ng cn c thc hin. Cn ni mt cch n gin v d hiu hn, Intent l mt c cu cho php truyn thng ip gia cc thnh phn ca mt ng dng v gia cc ng dng vi nhau. Cc thuc tnh ca Intent: - action: l hnh ng c thc hin, vd : ACTION_VIEW, ACTION_MAIN - data: l d liu s c x l trong action, thng c din t l mt Uri (Uniform Resource Identifier, tham kho V d: ACTION_VIEW content://contacts/people/1 - Hin th thng tin v ngi vi m danh 1 ACTION_DIAL content://contacts/people/1 - Hin th mn hnh gi n ngi vi m danh 1 ACTION_DIAL tel:123 Hin th mn hnh gi vi s gi l 123 Ngoi ra cn c mt s thuc tnh m ta c th b sung vo Intent:

28

category: b sung thm thng tin cho action ca Intent. VD: CATEGORY_LAUNCHER thng bo s thm vo Launcher nh l mt ng dng top-level

type: ch

kiu

ca

data

- component: ch r thnh phn s nhn v x l intent. Khi thuc tnh ny c xc nh th cc thuc tnh khc s tr thnh thuc tnh ph.
-

extras: mang theo i tng Bundle cha cc gi tr b sung. VD:ACTION_MAIN v CATEGORY_HOME: tr v mn hnh Home ca Android (khi bm nt Home ca di ng)

Phn loi Intent: Intent c chia lm 2 loi:


-

Explicit Intents: intent c xc nh thuc tnh component, ngha l ch r thnh phn s nhn v x l intent. Thng thng intent dng ny s khng b sung thm cc thuc tnh khc nh action, data. Explicit Intent thng c s dng khi chy cc activity trong cng mt ng dng.

Implicit Intents: Intent khng ch r component x l, thay vo n b sung thng tin trong cc thuc tnh. Khi intent c gi i, h thng s da vo nhng thng tin ny quyt nh component no thch hp nht x l n.

V d: ACTION_DIAL tel:123 thng thng s c h thng giao cho activity Phone Dialer mc nh ca Android x l. Mt s action thng s dng trong Intent: - ACTION_ANSWER - m Activity x l cuc gi ti, thng l Phone Dialer ca Android - ACTION_CALL - m mt Phone Dialer (mc nh l PD ca Android) v ngay lp tc thc hin cuc gi da vo thng tin trong data URI - ACTION_DELETE - m Activity cho php xa d liu m a ch ca n cha trong data URI

29

- ACTION_DIAL - m mt Phone Dialer (mc nh l PD ca Android) v in thng tin ly t a ch cha trong data URI - ACTION_EDIT - m mt Activity cho php chnh sa d liu m a ch ly t data URI - ACTION_SEND - m mt Activity cho php gi d liu ly t data URI, kiu ca d liu xc nh trong thuc tnh type - ACTION_SENDTO - m mt Activity cho php gi thng ip ti a ch ly t data URI. - ACTION_VIEW - action thng dng nht, khi chy activity thch hp hin th d liu trong data URI. - ACTION_MAIN - s dng khi chy mt Activity. VI.Android SQLite Database. 1. Gii thiu SQLite Database: Mi ng dng u s dng d liu, d liu c th n gin hay i khi l c mt cu trc. Trong Android th h c s d liu c s dng l SQLite Database, y l h thng m ngun m c s dng rng ri trong cc ng dng ( Mozilla Firefox s dng SQLite lu tr cc d liu v cu hnh, iPhone cng s dng c s d liu l SQLite). Trong Android , c s d liu m bn to cho mt ng dng th ch ng dng c quyn truy cp v s dng, cc ng dng khc th khng. Khi c to, c s d liu SQLite c cha trong th mc /data/data/<package_name>/databases . Tip theo l cch to v s dng c s d liu SQLite . Chng ta s to mt ng dng DEMO, ng dng ny n gin ch to mt c s d liu USER bao gm 2 trng ( id , name ) , ngoi ra c cc thao tc thm , c , sa , xa. Cc bc thc hin vi c s d liu (CSDL): 1. To mt c s d liu ( thng thng ch cn lm mt ln ) 2. M c s d liu 3. Thm gi tr vo trong table 4. Truy vn.
30

5. ng c s d liu. a. To c s d liu. u tin add mt class DBAdapter x l tt c cc thao tc lin quan n CSDL. M: public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; private DatabaseHelper mDbHelper; private SQLiteDatabase mDB; private static final String DATABASE_CREATE = "create table users (_id integer primary key autoincrement, " + "name text not null);"; private static final String DATABASE_NAME = "Database_Demo"; private static final String DATABASE_TABLE = "users"; private static final int DATABASE_VERSION = 2; private final Context mContext; To mt lp bn trong DBAdapter c extend t lp SQLiteOpenHelper, override 2 phng thc onCreate() v onUpgrade() qun l vic to CSDL v version ca CSDL . M: private static class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(DATABASE_CREATE); } @Override

31

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub Log.i(TAG, "Upgrading DB"); db.execSQL("DROP TABLE IF EXISTS users"); onCreate(db); } } b. M CSDL : M: public DBAdapter open() { mDbHelper = new DatabaseHelper(mContext, DATABASE_NAME, null, DATABASE_VERSION); mDB = mDbHelper.getWritableDatabase(); return this; } c. Thm gi tr vo CSDL M: public long createUser(String name){ ContentValues inititalValues = new ContentValues(); inititalValues.put(KEY_NAME, name); return mDB.insert(DATABASE_TABLE, null, inititalValues); } d. Truy vn Bn c th get ton b data hoc c th get data theo ID ( tin cho vic chnh sa hay cp nht thng tin ca tng bn ghi). M: public Cursor getAllUsers(){ return mDB.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME}, null, null, null, null, null); } Cn rt nhiu cc thao tc nh sa, xa, update.... bn ghi, cc bn c th t pht trin. Tt c cc chc nng u c cung cp bi lp SQLiteDatabase, cc bn ch
32

cn c th ha bng cc cu truy vn l c. e. ng CSDL M: public void close(){ mDbHelper.close(); } f. S dng CSDL test CSDL m bn va to, cc bn c th thm mt vi dng code thm mt user v hin th CSDL ln mn hnh thng qua lp Activity ban u: y mnh create mt user thng qua cu lnh mDB.createUser("Username"); sau M: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mDB = new DBAdapter(this); mDB.open(); mDB.createUser("Nguyen Hung Sn"); getData(); } private void getData(){ mCursor = mDB.getAllUsers(); startManagingCursor(mCursor); String[] from = new String[]{DBAdapter.KEY_NAME}; int[] to = new int[] {R.id.text1}; SimpleCursorAdapter users = new SimpleCursorAdapter(this, R.layout.users_row, mCursor, from, to); setListAdapter(users); } By gi chng ta s c th debug c ng dng ca mnh bng cch nhn t hp phim Ctrl+ f11.

Chng IV: Xy dng ng dng lp lch c nhn


33

I. Gii thiu bi ton. in thoi di ng dn tr thnh th vt dng khng th thiu mi ngi. Khi lm vic, hc tp hay gii tr ngi ta u c th dng in thaoij lm cng c h tr. Vic qun l thi gian l vn ca rt nhiu ngi. Chnh v vy gip chng ta c th qun l tt thi gian khng b l, chng ta cn mt thit b gip nhc nh chng ta. V c bn, phn mm ny ging nh mt cun s tay lu li tt c nhng g m ngi dng ghi nh v nhc nh ngi dng n thi gian lm mt vic g . Cng vic ny c ngi dng ch ng nhp vo. Khi n gi th h thng s c mt thong bo di dng chung, hoc rung Cc cng vic m ngi dng nhp s c lu vo c s d liu. Khi thi gian h thng chuyn ti ngy no s lit k cc s kin cng vic ca ngy , nu khng c s kin no th my s bo khng c s kin (ch hin ln khi ta xem lch).

34

II. Hng dn lp trnh c th trn Eclipse.


1. Hin th lch.

V giao din chnh, chng ta s s dng cc layout v cc textview thit k. Trong phn ny in lch ra mn hnh ta dng thm gridview. Ta cng xem outlint th hin mi quan h gia cc layout v cc view:

Hnh : Cu s outline th hin mi quan h cc layout v view. M lnh:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg" android:orientation="vertical" > <Button android:id="@+id/selectedDayMonthYear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"

35

android:background="@drawable/calendar_top_header" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" > </Button> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/prevMonth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/calendar_left_arrow_selector" > </ImageView> <Button android:id="@+id/currentMonth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.6" android:background="@drawable/calendar_bar" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" > </Button> <ImageView android:id="@+id/nextMonth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/calendar_right_arrow_selector" > </ImageView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" > <ImageView android:id="@+id/calendarheader" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:src="@drawable/blue_bg_with_text" > </ImageView> </LinearLayout> <GridView android:id="@+id/calendar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="7" > </GridView>

36

<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.95" android:orientation="vertical" > <ListView android:id="@+id/lvDSCV" android:layout_width="fill_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="horizontal" > <Button android:id="@+id/btThem" android:layout_width="fill_parent" android:layout_height="33dp" android:layout_gravity="bottom" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:paddingTop="5dp" android:text="Thm" /> </LinearLayout> </LinearLayout>

Sau khi thit k nh trn ta c giao din nh sau:

37

Hnh : Giao din chnh. 2. To c s d liu. Phn ny chng ta s i thit k c s d liu khi cn c th lu li cc cng vic cng nh l view li chng. y c s d liu ca chng ta c n gin gm mt bng lu cc thng tin: _id, tn cng vic, ni dung cng vic, gi v ngy s lm. Ta s to mi mt class trong htu mc res v t tn l DBAdapter.class, trong class ta khai bo cc thng tin cn thit ca database: Tn database, tn bng, cc trng ca bng public static final String KEY_ID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_NOIDUNG = "noidungcv"; public static final String KEY_GIO = "gio"; public static final String KEY_NGAY = "ngay"; private DatabaseHelper mDbHelper; private SQLiteDatabase mDB; private static final String DATABASE_TABLE = "DSCV"; private static final String DATABASE_NAME = "Database_Demo1"; private static final int DATABASE_VERSION = 1; private final Context mContext;

Cu lnh to bng private static final String DATABASE_CREATE = "create table


38

"+DATABASE_TABLE+ "(_id integer primary key autoincrement, " + "name TEXT, noidungcv TEXT , gio TEXT , ngay TEXT )"; To 1 lp bn trong DBAdapter c extend t lp SQLiteOpenHelper, override 2 phng thc onCreate() v onUpgrade() qun l vic to CSDL v version ca CSDL . private static class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub Log.i(TAG, "Upgrading DB"); db.execSQL("DROP TABLE IF EXISTS "+ DATABASE_TABLE); onCreate(db);
39

} } M c s d liu: public DBAdapter open() { mDbHelper = new DatabaseHelper(mContext, DATABASE_NAME, null, DATABASE_VERSION); mDB = mDbHelper.getWritableDatabase(); Log.d(TAG, "Da open"); return this; } ng c s d liu public void close(){ mDbHelper.close();} Thm mi cng vic: public long themCV( String tencv, String noidungcv, String gio, String ngay){ ContentValues inititalValues = new ContentValues(); inititalValues.put(KEY_NAME, tencv); inititalValues.put(KEY_NOIDUNG, noidungcv); inititalValues.put(KEY_GIO, gio); inititalValues.put(KEY_NGAY, ngay); // return mDB.insert(DATABASE_TABLE, null, inititalValues); return mDB.insert(DATABASE_TABLE, null, inititalValues);

40

} Ly ton b cng vic theo ngy public Cursor getallDataNgay(String ngay){ Cursor mCursor = mDB.query(true, DATABASE_TABLE, new String[]{KEY_ID, KEY_NAME, KEY_NOIDUNG, KEY_GIO, KEY_NGAY}, KEY_NGAY + " = '" +ngay+"'", null, null, null, null, null); if(mCursor != null) { mCursor.moveToFirst(); } return mCursor; } 3. Thao tc x l in lch tng l ly ngy thng hin ti ca h thng bng calendar ca android. Trong calendar chng ta c th ly ngy trong thng, ngy u tin ca thng l th my. Sau dung for duyt lit k cc ngy trong thng ra. Bit c ngy u tin ca thng l th my th s bit c s ngy ca thng trc s xut hin trong lch. V d: Bit ngy 1 l th 5 th ta s c 5-1 = 4 ngy ca thng trc

Sau y l mt on code quan trng in lch ln grid


private void printMonth(int mm, int yy) { Log.d(tag, "==> printMonth: mm: " + mm + " " + "yy: " + yy);

41

int trailingSpaces = 0; int leadSpaces = 0; int daysInPrevMonth = 0; int prevMonth = 0; int prevYear = 0; int nextMonth = 0; int nextYear = 0; int currentMonth = mm - 1; String currentMonthName = getMonthAsString(currentMonth); daysInMonth = getNumberOfDaysOfMonth(currentMonth); Log.d(tag, "Current Month: " + " " + currentMonthName + " having " + daysInMonth + " days."); GregorianCalendar cal = new GregorianCalendar(yy, currentMonth, 1); Log.d(tag, "Gregorian Calendar:= " + cal.getTime().toString()); { if (currentMonth == 11)

prevMonth = currentMonth - 1; daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); nextMonth = 0; prevYear = yy; nextYear = yy + 1; Log.d(tag, "*->PrevYear: " + prevYear + " PrevMonth:" + prevMonth + " NextMonth: " + nextMonth + " NextYear: " + nextYear); } else if (currentMonth == 0) { prevMonth = 11; prevYear = yy - 1; nextYear = yy; daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); nextMonth = 1; Log.d(tag, "**--> PrevYear: " + prevYear + " PrevMonth:" + prevMonth + " NextMonth: " + nextMonth + " NextYear: " + nextYear); } else { prevMonth = currentMonth - 1; nextMonth = currentMonth + 1; nextYear = yy; prevYear = yy; daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth); Log.d(tag, "***---> PrevYear: " + prevYear + " PrevMonth:" + prevMonth + " NextMonth: " + nextMonth + " NextYear: " + nextYear); } int currentWeekDay = cal.get(Calendar.DAY_OF_WEEK) - 1; trailingSpaces = currentWeekDay; Log.d(tag, "Week Day:" + currentWeekDay + " is " + getWeekDayAsString(currentWeekDay)); Log.d(tag, "No. Trailing space to Add: " + trailingSpaces); Log.d(tag, "No. of Days in Previous Month: " + daysInPrevMonth);

42

if (cal.isLeapYear(cal.get(Calendar.YEAR)) && mm == 1) { ++daysInMonth; } for (int i = 0; i < trailingSpaces; i++) { Log.d(tag, "PREV MONTH:= " + prevMonth + " => " + getMonthAsString(prevMonth) + " " + String.valueOf((daysInPrevMonth - trailingSpaces + DAY_OFFSET) + i)); list.add(String.valueOf((daysInPrevMonth - trailingSpaces + DAY_OFFSET) + i) + "GREY" + "-" + getMonthAsString(prevMonth) + "-" + prevYear); } // Current Month Days for (int i = 1; i <= daysInMonth; i++) { Log.d(currentMonthName, String.valueOf(i) + " " + getMonthAsString(currentMonth) + " " + yy); if (i == getCurrentDayOfMonth()) { list.add(String.valueOf(i) + "-BLUE" + "-" + getMonthAsString(currentMonth) + "-" else } { list.add(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(currentMonth) + "-" + yy); } }

+ yy);

// Leading Month days for (int i = 0; i < list.size() % 7; i++) { Log.d(tag, "NEXT MONTH:= " + getMonthAsString(nextMonth)); list.add(String.valueOf(i + 1) + "-GREY" + "-" + getMonthAsString(nextMonth) + "-" + nextYear); } }

4. Thm cng vic Trong phn ny chng ta s i su hn mt cht v trong phn ny l thao tc trc tip vi c s d liu.
43

a. Giao din: y s khng ch trng thit k giao din. Giao din s c

thit k gm cc Editext nhp thng tin v Timepick ly thi gian, Datepicker ly ngy

Hnh giao din form nhp cng vic hin th c giao din ny ta cn xt Contenview(layout) public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
44

setContentView(R.layout.frm_nhapcv);
b. Code x l: Ta to mi mt class ly tn l frm_Them.java. Class ny extends

t lp Activity. u tin ta i x l s kin cho nt thot. Button bt= (Button) findViewById(R.id.btHuy); bt.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent returnCacaled= new Intent("Caceled"); setResult(RESULT_CANCELED,returnCacaled); finish();; } }); Tip theo ta s x l s kin click Button lu alarm = (AlarmManager) getSystemService(ALARM_SERVICE); Log.d("run","rung");
Button btLuu= (Button) findViewById(R.id.btLuu); btLuu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub final EditText txtTen= (EditText) findViewById(R.id.txtTenCV); final String name=txtTen.getText().toString(); final EditText noidung = (EditText) findViewById(R.id.txtNoiDung); final String content=noidung.getText().toString(); Intent intent= new Intent(getBaseContext(),notification.class); c=content; intent.putExtra("1",content); PendingIntent pIntent; pIntent = PendingIntent.getBroadcast(getApplicationContext(), 0,

intent, 0);

45

Log.d(tag, name); Log.d(tag, content); ///set time---//////----------------in len thanh tastbar-----final TimePicker gio1 = (TimePicker)findViewById(R.id.timePicker1); final DatePicker date1=(DatePicker) findViewById(R.id.datePicker1); final String sttime= gio1.getCurrentHour() +":"+gio1.getCurrentMinute(); final String stdate= date1.getDayOfMonth() +"-"+months[date1.getMonth()]+"-"+date1.getYear(); Log.d("Thang luu CSDL",stdate); DBdata.open(); DBdata.themCV(name, content,sttime,stdate); d= date1.getDayOfMonth(); month= date1.getMonth(); year1= date1.getYear(); hour1= gio1.getCurrentHour(); minute= gio1.getCurrentMinute(); second=0; Calendar cal= Calendar.getInstance(); cal.set(year1, month, d, hour1, minute, second); alarm.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pIntent); } } });

Ngoi ra a ch ti ngi dng ta cn vit thm class notification.java public class notification extends BroadcastReceiver{ NotificationManager ntManager; @Override
46

public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String s= frm_Them.c; //Log.d("DaTa",s); ntManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Notification notification= new Notification(R.drawable.ic_launcher,"Bn c cng vic phi lm",System.currentTimeMillis()); PendingIntent pIntent= PendingIntent.getActivity(context, 0, intent, 0); notification.setLatestEventInfo(context,"Thng bo",s, pIntent); ntManager.notify(1,notification); }

5. S kin chn mt ngy bt k trn lch M t chung: Khi ta chn bt k ngy no trn lch th s hin ln thng tin cc cng vic trong ngy . Nu ngy khng c cng vic g s c thng bo rng khng c s kin. Danh sch cc s kin s c hin th dng danh sch.

47

Hnh danh sch cng vic III. Demo sn phm: Sn phm demo trc tip trn eclipse

48

Chng V: Kt lun
1. Kt qu: Sau qua trnh tm hiu nghin cu v trin khai ti nhng kt qu thu c: Tm hiu c cch thc lp hot ng ca mt chng trnh ng dng c bn cho Android. Hiu c c bn v kin thc lp trnh Android t xy dng c ng dng c bn. Hiu thm v ngn ng java.

2. Hng pht trin: Phn mm ng dng lch c nhn cha hon chnh. Sau ny chng ta c th pht trin ng dng thnh mt s tay c nhn hay ni cch khc cso th pht trin thnh mt cun nht k in t c nhn

49

Ti liu tham kho: Beginning Android Application Development tc gi: Wei-Meng Lee
http://developer.android.com/index.html http://www.vogella.com/articles/Android/article.html?

utm_source=twitterfeed&utm_medium=laconica#menu
http://www.youtube.com/watch?

v=SUOWNXGRc6g&feature=BFa&list=PL34F010EEF9D45FB8

50

You might also like