71
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP. HCM ĐỒ ÁN CƠ SỞ TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID VÀ VIẾT ỨNG DỤNG DEMO Ngành: CÔNG NGHỆ THÔNG TIN Chuyên ngành: CÔNG NGHỆ PHẦN MỀM Giảng viên hướng dẫn : Ths. Nguyễn Thúy Loan Sinh viên thực hiện : Đỗ Anh Phương MSSV: 0951020197 Lớp: 09DTHC

Tìm Hiểu Về Hệ Điều Hành Adroid

Embed Size (px)

DESCRIPTION

Tìm Hiểu Về Hệ Điều Hành Adroid

Citation preview

2

B GIO DC V O TOTRNG I HC K THUT CNG NGH TP. HCM

N C S

TM HIU H IU HNH ANDROIDV VIT NG DNG DEMO

Ngnh: CNG NGH THNG TINChuyn ngnh: CNG NGH PHN MM

Ging vin hng dn: Ths. Nguyn Thy LoanSinh vin thc hin: Anh PhngMSSV: 0951020197Lp: 09DTHC

TP. H Ch Minh, 2012NHIM V NKhoa: CNG NGH THNG TIN

PHIU GIAO TI N/ KHA LUN TT NGHIP

(Phiu ny c dn trang u tin ca quyn bo co A/KLTN)

1. H v tn sinh vin/ nhm sinh vin c giao ti (s s trong nhm 1): 1) ANH PHNG MSSV: 0951020197 Lp: 09DTHCNgnh: CNG NGH THNG TINChuyn ngnh: CNG NGH PHN MM2. Tn ti : TM HIU H IU HNH ANDROID V VIT NG DNG DEMO3. Cc d liu ban u : 4. Cc yu cu ch yu : 5. Kt qu ti thiu phi c:1) 2) 3) 4) Ngy giao ti: ./../ Ngy np bo co: ./../

Ch nhim ngnh(K v ghi r h tn)TP. HCM, ngy thng nm .Ging vin hng dn chnh(K v ghi r h tn)

MC LC

CHNG I : TNG QUAN31.1.S LC V CC H IU HNH31.2.ANDROID3CHNG II: C S L THUYT92.1.Delving vi my o DALVIK92.2.Kin trc h iu hnh Android102.3.Cc thnh phn trong ng dng Android13CHNG III: NG DNG DEMO393.1.Phn tch chc nng393.2.Xy dng chc nng40CHNG IV: KT LUN V KIN NGH47TI LIU THAM KHO47

CHNG I : TNG QUAN

1.1. S LC V CC H IU HNH H iu hnh l chng trnh chy trn h thng my tnh, qun l cc ti nguyn trn my tnh v l mi trng cho cc ng dng chy trn n. Ngy nay, khi nim h iu hnh khng ch l trn my tnh m cn c m rng cho nhiu thit b in t khc chng hng nh in thoi thng minh ( smart phone), cc thit b cm tay PDA v.vNh vy h iu hnh di ng l h iu hnh chy trn h thng my c tnh di ng cao. Vi c th , h iu hnh di ng phi c nhng kh nng c bit m nhng h iu hnh thng thng khng c c. Chng hn nh n phi chy trn h thng my c cu hnh my hn ch v tc b vi x l, b nh s dng, phi chy c n nh lin tc trong mt thi gian di m ch s dng mt lng in nng nh, trong sut thi gian chy c th duy tr cc kt ni mng khng dy m bo lin lcMt s h iu hnh tiu biu:Trn my tnh c nhn: MS DOS, MS WINDOW , MACOS, LINUX, UNIXTrn in thoi thng minh: Android, Sybian, Window Mobile, iPhone OS, BlackBerry, S60, Bada OS, Palm OS..Ngoi ra cn c cc h iu hnh chy trn mainframe, server, th chipTrong phm vi n ny chng ta s ni v h iu hnh Android dnh cho in thoi.

1.2.ANDROIDAndroid h iu hnh dnh cho in thoi di ng c pht trin bi Google v ngy cng tr nn ph bin vi cc hng lin tc ra mt cc mu in thoi s dng Android.

Giao din mn hnh kha (Android 2.2) Giao din mn hnh chnh (Android 2.2)Android c xy dng trn nhn linux v c phn phi min ph. Khng ging nh Windows mobile v Apple iPhone, tuy c hai u cung cp mi trng pht trin ng dng phong ph v n gin d tip cn nhng lun c s u tin cho cc ng dng mc nh c sn ca h iu hnh (native applications). Vi Android mi ng dng u c vit trn cng mt tp API, th nn khng c s phn bit gia cc ng dng mc nh v cc ng dng ca bn th ba. Ngi dng hon ton c th thay th mi ng dng mc nh bng cc ng dng yu thch ca mnh, thm ch ngay c mn hnh thc hin cuc gi m mn hnh nh (home scream).Cc nh pht trin ng dng cho Android da trn ngn ng Java. S ra mt ca Android vo ngy 5 thng 11 nm 2007 gn vi s thnh lp lin minh thit b cm tay m ngun m, bao gm 78 cng ty phn cng v phn mm vin thng nhm mc ch to nn chun m cho in thoi di ng trong tng lai. Google cng b hu ht cc m ngun Android theo bn cp php Apache.

Cc thnh vin ca lin minh di ng m.Cc ng dng c sn trn AndroidMt in thoi Android thng thng s i km vi mt vi ng dng c sn, bao gm: Mt trnh email tng thch vi Gmail Chng trnh qun l tin nhn SMS Chng trnh qun l thng tin c nhn, bao gm c lch lm vic, danh b v c ng b ha vi dch v Google Phin bn thu gn ca Google Map cho in thoi, bao gm StreetView, tm kim a ch, ch ng, tnh trng giao thng Trnh duyt Web da trn nhn Webkit. Chng trnh tn gu (Chat). Trnh a phng tin ( chi nhc, xem phim). Android MarketPlace cho php ngi dng ti v v ci t cc ng dng mi.Tt c cc ng dng c sn u c vit bng ngn ng Java v s dng Android SDK.Cc d liu v thng tin ngi dng c cc ng dng c sn s dng nh thng tin v danh b vn hon ton c th c s dng bi cc ng dng ca bn th ba. Tng t vy, ng dng ca bn hon ton c th x l cc s kin nh cc cuc gi n, nhn mt tin nhn mi thay cho cc ng dng c sn.Truy cp phn cngAndroid bao gm cc th vin API gip n gin ha ti a vic s dng phn cng ca thit b. iu m bo rng bn khng cn phi bn tm nhiu n vic ng dng ca mnh c th chy nh mong i trn nhiu thit b khc nhau hay khng, min l thit b c h tr Android.Android SDK bao gm cc API cho phn cng :GPS, Camera, kt ni mng, WIFI, Bluetooth, con quay gia tc, mn hnh cm ng, qun l nng lngDch v chy nnAndroid h tr cc ng dng v dch v c thit k chy n. Do kch thc nh ca mn hnh in thoi nn ti mt thi im ch c th thy mt ng dng. Dch v chy nn gip to ra cc thnh phn ng dng v hnh thc hin t ng mt tc v no m khng cn phi c s tng tc ca ngi dng. V d nh mt dch v chy nn c chc nng chn cuc gi n i vi cc s in thoi c trong black list chng hn.SQLite DatabaseBi v tnh cht nh gn v b hn ch v phn cng ca in thoi di ng, cho nn i hi vic lu tr v truy xut d liu phi nhanh chng v hiu qu. Android h tr h qun tr nh gn SQLite, v cung cp cho ng dng cc API thao tc. Mc nh mi ng dng u c chy trong SandBox (hp ct) iu ny c ngha l ni dung ca tng database ng vi tng ng dng ch c th truy cp bng chnh ng dng . Tuy nhin cng c cc c ch cc ng dng chia s, trao i cc database vi nhau.H thng thng boThng bo l cch thc tiu chun m thit b bo cho ngi dng c mt s kin no xy ra. Chng hn nh c cuc gi ti, my sp ht pin S dng cc API bn c th cho ng dng ca mnh thng bo ti ngi dng bng m thanh, rung, hoc thm ch c n LED ca thit b.Ti u ha b nh v qun l tin trnhVic qun l b nh v tin trnh trong Android cng c mt cht khc bit gin nh cng ngh Java v .NET, Android s dng mt b Run-time ca ring mnh vi cng ngh o ha qun l b nh ca cc ng dng ang chy. Khng ging nh nhng nn tn khc, Android Run-time cng ng thi qun l lun c thi gian sng ca ng dng. Android m bo cc ng dng u c p ng bng cch dng v hy cc tin trnh khng cn thit gii phng cc ti nguyn cho cc tin trnh c u tin cao hn.Trong bi cnh , u tin c xc nh ty thuc vo ng dng m ngi dng ang tng tc. Android m bo rng cc ng dng c hy mt cch nhanh chng, ng thi cng khi ng l nhanh cng khng km nu cn. iu ny tht s quan trng trong mt mi trng m bn thn ng dng khng th t kim sot c thi gian sng cho mnh.Android software development kit (SDK)B SDK ca Android bao gm mi th cn thit gip bn c th lp trnh, debug, test ng dng Android. Android API: Ct li ca b SDK l th vin cc hm API v Google cng ch s dng b API ny xy dng cc ng dng c sn cho Android. Development tool: SDK bao gm rt nhiu cng c gip bin dch, sa li v h tr trong vic lp trnh ng dng. Android Emulator: Trnh gi lp thit b chy Android thc s vi nhiu Skin thay th, cc k tin li cho vic test ng dng Android ngay trn my tnh m khng cn phi thng qua mt thit b chy Android thc. Ti liu: SDK bao gm mt b ti liu rt chi tit, gii thch cn k chnh xc nhng g bao gm trong mi page, class cng vi cch s dng chng. Ngoi ti liu v code, cn c nhng ti liu dng getting started v gii thch cc nguyn tc v c ch hot ng ca ng dng trong Android. Code mu: SDK bao gm cc ng dng mu n gin minh ha cho cc tnh nng ni bt trn Android, cng nh cc ng dng demo cch s dng cc tnh nng ca b API.Kin trc ng dng tng ca Android l vic khuyn khch ti s dng li cc thnh phn c, cho php ng dng ca bn c th chia s Activity, Service, D liu vi cc ng dng khc nhau trong gii hn bn t ra.Sau y l kin trc ca mi ng dng Android: Activity Manager : Kim sot vng i ca Activity. View : Xy dng giao din ngi dng cho Activity. Notification Manager: Cung cp mt c ch thng nht v an ton ng dng c th a ra cc thng bo cho ngi dng. Content Provider: Gip trao i v chia s d liu gia cc ng dng vi nhau. Resource Manager: H tr qun l cc ti nguyn khng l code nh cc chui, hnh nh, v m thanhCc th vin ca AndroidAndroid cung cp cc gi API pht trin ng dng. Sau y l cc API m tt c cc thit b Android u ti thiu phi h tr gip cho chng ta mt ci nhn tng qut v th vin ny. Android.util : Gi API li, cha cc class cp thp nh container, string formatter, XML parsing. Android.os : Truy cp ti chc nng ca h iu hnh nh : gi nhn tin nhn, giao tip ni b gia cc ng dng, thi gian Android.graphics: Cung cp cc lp lin quan ti x l ha mc thp. H tr cc hm c bn nh v im, v min, t mu.. trn khung canvas. Android.text: Cung cp cc hm phn tch v x l chui. Android.database: Cung cp cc lp cp thp cn thit lm vic vi database. Android.content: Dng qun l cc ti nguyn, cc ni dung v cc gi. Android.view: Views l lp cha ca mi lp giao din ngi dng. Android.widget: c tha k t lp View, bao gm cc lp c bn xy dng giao din widget nh: list, button, layout.. Android.map: Gi API cp cao, dng truy cp ti cc chc nng ca GoogleMap. Android.app: Gi API cp cao, bao gm cc Activity v Service hai lp c s cho mi ng dng Android. Android.telephony: Cung cp cho bn kh nng tng tc trc tip vi cc chc nng c bn ca mt in thoi nh nghe, gi, tin nhn Android.webkit: cung cp mt webView control trn nn webkit c th nhng ng dng, cng vi cc API iu khin c bn nh stop, refresh, cookieManager

CHNG II: C S L THUYT2.1.Delving vi my o DALVIKDalvik l my o gip cc ng dng Java chy c trn cc thit b di ng Android. N chy cc ng dng c chuyn i thnh mt file thc thi Dalvik (dex). nh dng ph hp cho cc h thng m thng b hn ch v b nh v tc x l. Dalvik c thit k v vit bi Dan Bornstein, ngi t tn cho n sau khi n thm mt ngi lng nh c nh c tn l Dalvk o Eyjafjrur, ni m t tin ca ng sinh sng.T gc nhn ca mt nh pht trin th Dalvik trng ging nh my o java (Java Virtual Machine) nhng thc t th hon ton khc. Khi nh pht trin vit mt ng dng dnh cho Android, anh ta thc hin cc on m trong mi trng Java. Sau , n s c bin dch sang cc byteCode ca Java, tuy nhin thc thi c ng dng ny trn Android th nh pht trin phi thc thi mt cng c c tn l dx. y l cng c dng chuyn i byteCode sang mt dng gi l dex bytecode. Dex l t vit tc ca Dalvik executable ng vai tr nh c ch thc thi cc ng dng Java.2.2.Kin trc h iu hnh AndroidM hnh sau th hin mt cch tng qut cc thnh phn ca h iu hnh Android. Mi phn s c c t mt cch chi tit di y.

Cu trc Stack h thng Android2.2.1.Tng ng dng (applications)Android c tch hp sn mt s ng dng cn thit c bn nh: Contacts, browser, camera, phoneTt c ng dng chy trn h iu hnh Android u c vit bng Java.2.2.2.Application FrameworkBng cch cung cp mt nn tng pht trin m, Android cung cp cho cc nh pht trin kh nng xy dng cc ng dng cc k phong ph v sng to. Nh pht trin c t do tn dng cc thit b phn cng, thng tin a im truy cp, cc dch v chy nn, thit lp h thng bo ng, thm cc thng bo cc thanh trng thi, v nhiu, nhiu hn na.Nh pht trin c th truy cp vo cc API cng mt khun kh c s dng bi cc ng dng li. Cc kin trc ng dng c thit k n gin ha vic s dng li cc thnh phn, bt k ng dng c th xut bn kh nng ca mnh v ng dng no khc sau c th s dng nhng kh nng( c th hn ch c bo mt thc thi bi khun kh). C ch ny cho php cc thnh phn tng t s c thay th bi ngi s dng.C bn tt c cc ng dng l mt b cc dch v v cc h thng bao gm: Mt tp hp rt nhiu cc View c kh nng k tha ln nhau dng thit k phn giao din ng dng nh : gridView, tableView, linearLayout, Mt Content Provider cho php tt c ng dng truy xut d liu t cc ng dng khc ( chng hn nh Contact) hoc l chia s d liu gia cc ng dng . Mt Resource Manager cung cp truy xut ti cc ti nguyn khng phi l m ngun, chng hn nh: localized string, graphics, and layout file. Mt Notifycation Manager cho tt c cc ng dng hin th cc custom alerts trong status bar.Activity Manager c dng qun l chu trnh sng ca ng dng v iu hng cc activity.2.2.3.LibraryAndroid bao gm mt tp hp cc th vin C/C++ c s dng bi nhiu thnh phn khc nhau trong h thng Android. iu ny c th hin thng qua nn tng ng dng Android. Mt s cc th vin c bn c lit k di y: System C library: a BSD-derived implementation of standard C system library(libc), turned for embedded Linux-based devices. Media Libraries based on PacketVideos OpenCORE, the libraries support playback and recording of many popular audio and video formats, as well as static image file, including: MPEG4, H,264, MP3, AAC, AMG, JPG, and PNG Surface Manager Qun l vic truy xut vo h thng hin th. LibWebCore a modern web browser engine which powers both the Android browsers and an embadable web view. SGL the underlying 2D graphics engine. 3D Libraries an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration ( where available) or the included, highly optimized 3D software rasterizer. FreeType bipmap and vector font rendering.SQLite a powerful and lightweight relational database engine available to all applications.2.2.4.Android runtimeAndroid bao gm tp hp cc th vin c bn m cung cp hu ht cc chc nng c sn trong cc th vin li ca ngn ng lp trnh Java. Tt c cc ng dng Android u chy trong tin trnh ring. My so Dalvik c vit cho mt thit b c th chy nhiu my o hiu qu. Cc VM Dalvik thc thi cc tp tin thc thi Dalvik (dex). nh dng c ti u ha cho b nh ti thiu. VM l da trn register base, v chy cc lp c bin dch bi mt trnh bin dch Java chuyn i thnh cc nh dng dex. Cc VM Dalvik da vo nhn Linux cho cc chc nng c bn nh lung v qun l b nh thp.2.2.5. Linux kernelAndroid da trn Linux phin bn 2.6 cho h thng dch v ct li nh security, memory managerment, process managerment, network stack, and driver model. Kernel Linux hot ng nh mt lp tru tng ha gia phn cng v phn cn li ca phn mm stack.

2.3.Cc thnh phn trong ng dng AndroidAndroid project l mt h thng th mc file cha ton b source code, ti nguyn m mc ch cui cng l ng gi thnh mt file .apk duy nht.Trong mt th mc project, c mt s thnh phn (file, th mc con) c to ra mc nh, cn li phn ln s c to ra sau nu cn trong pht trin ng dng.

Cc thnh phn trong mt Android project Src/: Cha ton b source code (file .java hoc .aidl) Bin/: Th mc cha file Output sau khi build. y l ni bn c th tm thy file .apk Gen/: Cha file .java to ra bi ADT plug-in, nh l file R.java hoc cc giao din to ra t file AIDL. Res/: Cha cc ti nguyn (resource) cho ng dng chng hn nh file hnh nh, file layout, cc chui (string)Di y l cc th mc con ca n. Anim/: Cha cc file .xml dng cho vic thit lp cc hiu ng ng(animation). Color/: Cha cc file .xml dng nh ngha mu sc. Drawable/: Cha hnh nh (png, jpeg, gif), file .xml nh ngha cch v cc loi hnh dng khc nhau (shape). Layout/: Cha file .xml dng dng giao din ngi dng. Menu/: Cha file .xml quy nh application menu. Raw/: Cha cc file media, chng hn nh .mp3, .ogg Values/: Cha file .xml nh ngha cc gi tr. Khc vi cc resource trong th mc khc, resource th mc ny khi nh danh trong lp R th s khng s dng file name nh danh m s c nh danh theo quy nh bn trong file .xml . Xml/: Dng cha cc file .xml linh tinh khc, chng hn nh file .xml quy nh app widget, search metadata, Libs/: Cha cc th vin ring. AndroidManifest.xml/: File kim sot cc thnh phn trong ng dng nh: activity, service, intent, receiver tng tc vi nhau, cch ng dng tng tc vi ng dng khc, cng nh ng k cc quyn hn v s dng ti nguyn trong my. Build.properties/: Ty chnh cc thit lp cho h thng build, nu bn s dng Eclipse th file ny khng cn thit. Build.xml/: Ch s dng khi dng dng lnh kin to project. Default.properties/: File ny cha cc thit lp cho project, chng hn nh build target, min SDK version(tt hn ht l khng nn chnh sa file ny bng tay)

File AndroidManifest.xmlL nn tng ca mi ng dng Android, file AndroidManifest.xml c t trong th mc root v cho bit nhng thnh phn c trong ng dng ca: cc activities, cc services,...cng nh cch cc thnh phn y gn b vi nhau.Mi file manifest u bt u vi mt th manifest:

...

Khi to file manifest, iu quan trng nht l phi cung cp thuc tnh ca package, tc tn ca Java package dng lm c s cho ng dng ca ta. Sau khi t tn package, sau ny khi cn ghi tn lp trong file manifest, ta c th rt ngn, chng hn vi lp com.yourapp.android.search.Someclass ta ch cn ghi .Someclass l .Cc thnh phn manifest khc l:

uses-persmission: ch nh cc quyn m ng dng ca ta uc cp hot ng tri chy (nh ni, cc ng dng Android nm di nhiu lp bo mt khc nhau). permission: ch nh cc quyn m cc activities hay services yu cu cc ng dng khc pha c mi c truy cp d liu ca ng dng ca ta. instrumentation: ch nh phn code cn c gi khi xy ra nhng s kin quan trng (chng hn khi ng activities) nhm phc v vic ghi ch (logging) v tra sot (monitoring) uses-library: nhm kt ni vi cc thnh phn c sn ca Android (nh service tra bn ,...) uses-sdk: c th c hoc khng, ch ra phin bn caAndroid m ng dng ny yu cu. application: nh ngha phn trung tm ca ng dng ca file manifest.V d file AndroidManifest:

...

Tt nhin, phn quan trng ca 1 file manifest chnh l thnh phn application. Mc nh, khi ta to 1 project Android mi, ta c sn 1 thnh phn activity:

Thnh phn ny cung cp cc thng tin sauandroid:name : tn class hin thc activity ny.android:label : tn activity.intent-filter : Mt thnh phn con, ch ra di iu kin no th activity ny c hin th. Cc thnh phn c bn ca ng dng Android Activity: L thnh phn ti quan trng ca bt k mt ng dng Android no. Thut ng Activity ch mt vic m ngi dng c th thc hin trong mt ng dng Android. Do gn nh mi activity u tng tc vi ngi dng, lp Activity m nhn vic to ra mt ca s (window) ngi lp trnh t ln mt giao din UI vi setContentView(View). Mt activity c th mang nhiu dng khc nhau: Mt ca s ton mn hnh (full screen window), mt ca s floating (vi windowsIsFloating) hay nm lng bn trong 1 activity khc (vi ActivityGroup).C 2 phng thc m gn nh mi lp con ca Activity u phi hin thc: onCreate(Bundle) - Ni khi to activity. Quan trng hn, y chnh ngi lp trnh gi setContentView(int) km theo layout th hin UI ca ring mnh. ng thi cn c findViewById(int) gip gi cc widget (buttons, text boxes, labels,..) dng trong UI. onPause() - Ni gii quyt s kin ngi dng ri khi activity. Mi d liu c ngi dng to ra ti thi im ny cn phi c lu vo ContentProvider. c th s dng Context.startActivity(), mi lp activity u phi c khai bo vi tag trong file AndroidManifest.xml. Khai bo tag trong file AndroidManifest.xml Vng i ca ActivityCc activity c qun l di dng cc activity stack - First-In-Last-Out: Khi mt activity mi c khi to, n s c a ln trn cng stack, cc activity khc mun chy trn nn (foreground) tr li th cn phi ch ti khi Activity mi ny kt thc.Mt Activity c 4 trng thi:Active hay Running: Khi mt activity ang chy trn mn hnh.Paused: Khi mt activity vn ang chy trn mn hnh nhng ang b mt activity trong sut (transparent) hay khng chim ton mn hnh hin th pha trn. Tuy vn lu tr d liu, nhng cc paused activity ny s b h thng bt chm dt khi ang thiu b nh trm trng.Stopped: Khi 1 activity b che khut hon ton bi 1 activity khc. Tuy vn lu tr d liu, nhng cc stopped activity ny s thng xuyn b h thng bt chm dt dnh ch cho cc tin trnh khc.Killed hay Shut down: Khi 1 activity ang paused hay stopped, h thng s xa activity y ra khi b nh. Lc vng i ca 1 Activity

Da vo lc trn, thy c c 3 vng lp quan trng sau:Vng i ton din (Entire Lifetime): Din ra t ln gi onCreate(Bundle) u tin v ko di ti ln gi onDestroy() cui cng. Vng i thy c (Visible Lifetime): Din ra t khi gi onStart() v ko di ti khi gionStop(). vng i ny, activity c hin th trn mn hinh nhng c th khng tng tc vi ngi dng trn nn. Cc phng thc onStart(0 v onStop() c th c gi nhiu ln.Vng i trn nn (Foreground Lifetime): Din ra t khi gi onResume(0 v ko di ti khi gi onPause(). vng i ny, activity nm trn mi activity khc v tng tc c vi ngi dng. 1 activity c th lin tc thay i gia 2 trng thi paused v resumed, chng hn khi thit b sleep hay 1 intent mi c a ti.Ton b vng i ca 1 activity c nh ngha nh cc phng thc sau:public class Activity extends ApplicationContext {protected void onCreate(Bundle savedInstanceState);//Gi khi mi to activity setup cc view, binding d liu,... //Km theo sau lun l onStart().

protected void onRestart();//Gi sau khi activity b stopped v trc khi c khi ng li.//Km theo sau lun l onStart().

protected void onStart();//Gi khi activity hin ln trc mt ngi dng.//Km theo sau l onResume() nu activity hin ln nn hay onStop(0 nu b n i.

protected void onResume();//Gi khi activity bt u tng tc vi ngi dng v ang trn cng ca activity stack.//Km theo sau lun l onPause().

protected void onPause();//Gi khi h thng sp khi ng li 1 activity khc trc.//kotheo sau l onresume nu activity tr li trn cng hay onStop() nu b n i.protected void onStop();//Gi khi activity khng cn hin th trc ngi dng//Km theo sau l onRestart() nu activity hin ln tr li hay onDestroy nu sp xo activity i.

protected void onDestroy();//Gi ngay trc khi kt thc activity, xy ra khi hm finish() c gi hoc khi h thng yu cu buc phi kt thc.}

Intent:Khi Tim Berners pht minh ra giao thc Hypertext Transfer Protocol (HTTP), ng cng pht minh ra mt nh dng URLs chun. nh dng ny l mt h thng cc ng t i km cc a ch. a ch s xc nh ngun ti nguyn nh Web page, hnh nh hay cc server-side program. ng t s xc nh cn phi lm ci g vi ngun ti nguyn : GET nhn d liu v, POST a d liu cho n thc thi mt cng vic no . Khi nim Intent cng tng t, Intent l mt m t tru tng ca mt hnh ng c thc thi. N i din cho mt hnh ng i km vi mt ng cnh xc nh. Vi Intent th c nhiu hnh ng v nhiu component (Mt th hin ca mt class java dng thc thi cc hnh ng c c t trong Intent) dnh cho Intent ca Android hn l so vi HTTP verbs (POST, GET) v ngun ti nguyn (hnh nh, web page) ca giao thc HTTP, tuy nhin khi nim vn tng t nhau.Intent c s dng vi phng thc startActivity() m mt Activity, v dng vi broadcastIntent gi n n bt k BroadcastReceiver lin quan no, v dng vi startService(Intent), bindService(Intent, ServiceConnection, int) giao tip vi cc Service chy di nn.Intent cung cp mt chc nng cho php kt ni hai chng trnh khc nhau trong qu trnh thc thi (runtime) (Cung cp kh nng cho php hai chng trnh khc nhau giao tip vi nhau). Chc nng quan trng v c s dng nhiu nht ca mt Intent l m mt Activity, ni m n c thc dng nh mt vt kt ni cc Activity li vi nhau (Truyn thng tin gia hai Activity khc nhau).S dng intent trao i thng tin gia hai chng trnhThnh phn chnh ca Intent bao gm:Action: Xc nh hnh ng s c thc thi, cc hnh ng ny c th l: ACTION_VIEW, ACTION_EDIT, ACTION_MAINData: Cc d liu c s dng hnh ng (Action) thao tc trn n, nh bn ghi v mt ngi no trong c s d liu cha cc contact ca thit b.V d v thnh phn action/data:ACTION_VIEW content://contacts/people/1 hin th thng tin lin lc ca ngi c m l 1.ACTION_DIAL content://contacts/people/1 gi in cho ngi c m l 1.ACTION_DIAL tel:123 gi n s in thoi 123Ngoi ra, Intent cn c cc thuc tnh ph sau:Category: thng tin chi tit v hnh ng c thc thi, v d nh CATEGORY_LAUNCHER c ngha l n s xut hin trong Launcher nh ng dng c mc level cao (top-level application), trong khi CATEGORY_ALTERNATIVE cha thng tin danh sch cc hnh ng thay th m ngi dng c th thc thi trn phn d liu m Intent cung cp.Type: Ch nh 1 kiud liu chnh xc (kiu MIME) c mang bi intent. Thng th type c suy ra t chnh d liu. Bng cch thit lp thuc tnh type, bn c th v hiu ha s phng on kiu d liu v ch nh r mt kiu chnh xc.Component: Ch nh r tn ca lp thnh phn (Mt th hin ca mt class java dng thc thi cc hnh ng c c t trong Intent) s dng cho Intent . Thng thng th n c xc nh bng cch tm kim thng tin trong Intent (Cc thng tin nh Action, data/type, v category) v ni chngvi cc component (Mt th hin ca mt Class java dng thc thi cc hnh ng c c t trong Intent) c th p ng c cc yu cu s l ca Intent.Extracts: l mt i tng Bundle dng cha cc thng tin km theo c dng cung cp thng tin cn thit cho component. V d: Nu c mt Intent c t hnh ng send email th nhng thng tin cn cha trong i tng Bundle l subject, bodyInten ResolutionIntent c 2 dng chnh sau:Explicit Intents: Xc nh r mt component (Mt th hin ca mt class java dng thc thi cc hnh ng c c t trong Intent) (thng qua phng thc setComponent(ComponentName) hoc setClass(Context, Class)) cung cp lp s thc thi cc hnh ng c c t trong Intent. Thng thng th nhng Intent ny khng cha bt k thng tin no khc (nh category, type) m n gin ch l cch ng dng m cc Activity khc bn trong mt Activity. Implicit Intents: Khng ch nh mt component no c, thay vo , chng s cha thng tin h thng c th xc nh component c sn no l tt nht thc thi hiu qu cho Intent .Khi s dng Implicit intents, do tnh cht chuyn quyn ca loi Intent ny,ta cn phi bit phi lm g vi n. Cng vic ny c m nhim bi tin trnh ca Intent resolution, n gip ch nh Intent n mt Actvity, BroadcastReceiver, hoc Service (hoc thnh thong c thl 2 hay nhiu hn mt activity/receiver) c th x l cc hnh ng c c t trong Intent.Bt c thnh phn no (Activity, BroadcastReceiver, Service) khi mun s dng trong ng dng u phi c ng k trong file AndroidManifest.xml. Trong cnnh ngha mt th cung cp cc thng tin h thng c th xc nh c ci m cc component ny (Activity, BroadcastReceiver, Service) c th x l c (nhng action m component ny c th thc hin c).Intent Fillter l bn c t c cu trc ca cc gi tr ca Intent dng xc nh component ph hp thc hincc hnh ng c c t trong Intent. Mt Intent Fillter ni cc hnh ng, categories v d liu (hoc thng qua type hoc sheme) trong Intent. Intent Fillter c khai bo trong AndroidManifest.xml v s dng th intent-fillter. Mt Intent Fillter c cc thnh phn chnh sau:Action: Tn hnh ng m component c th thc thi.Type:Kiu hnh ng m component c th thc thi.Category: Phn nhm cc hnh ng.i vi nhng d liu khng phi l ni dung c th (VD: URI) th vic xem xt la chn Intent ph hp s da vo lc (Scheme) ca d liu c cung cp (VD: http:// mailto: )

Lut xc nh component ph hp vi intent

xc nh mt thnh phn l ph hp vi mt Intent h thng s tin hnh xem xt t trn xung. Trc tin khi mt Intent c gi, Android s tm kim nhng component (Activity, BroadcastReceiver, Service) c action-name ph hp vi Intent. Nu c component ph hp Android sm component ln thc thi cc hnh ng theo yu cu. Nu c nhiu hn 1 component c action-name ph hp th Android s yu cu ngi dng chn component ph hp.Ngc li nu khng c component no ph hp Android s tin hnh xem xt kiu d liu ca Intent cung cp xem c component no c nng lc s l kiu d liu khng. Nu khngc Android s tin hnh xem xt scheme ca d liu tm kim component ph hp. Nu vn khng tm c component ph hp Android s tin hnh xem xt cc component c chung Category vi Intent xc nh component.

Service :

Mt service l mt thnh phn ca ng dng, th hin mong mun ng dng thc hin cc hnh ng trong khi khng tng tc vi ngi dng hoc cung cp chc nng cho cc ng dng khc s dng. Ni mt cch n gin, service l cc tc v (task) chy ngm di h thng nhm thc hin mt nhim v no . Mi class Service phi cha th c khai bo trong file AndroidManifext.xml. Services c th c bt u bi Context.startService() v Context.bindservice()Cng nh cc i tng ca ng dng khc, services chy trn lung (Thread) ca tin trnh chnh. C ngha l nu service ca bn d nh chy cc hnh vi c cng ln hoc cc hnh vi c th gy nghn mch, n s t sinh ra lung (Thread) ca chnh n lm thc hin cc tc v c c t trong Service. Cn lu :Service khng phi l mt tin trnh c lp. i tng Service khng chy trn tin trnh (process) ca ring n (tr khi c mt yu cu t bit), Service chy trn tin trnh ca chng trnh.Service khng phi l mt lung (thread).Service c cha 2 c trng c bn sau:L mt chc nng ng dng thng bo vi h thng v vic m n mun thc hin pha di nn (ngay c khi ngi dng khng tng tc trc tip ti ng dng). iu ny tng ng vi vic gi phng thc Context.startservice(), n s yu cu h thng ln lch cho service chy cho n khi b chnh service hay ngi no dng n li.L mt chc nng cho php ng dng cung cp cc chc nng ca n cho cc ng dng khc. iu tng ng vi vic gi Context.bindService(), cho php mt long-standing connection c to ra service c th tng tc vi n.Khi mt Service c to ra, vic h thng cn lm l to ra thnh phn v gi hm onCreate() v bt k lnh callback thch hp no trn lung chnh. N ph thuc vo Service thi hnh hnh vi thch hp no, chng hn to lung th hai thc hin tin trnh.

Vng i ca mt service

C 2 l do mt service c chy bi h thng. Bng cch gi phng thc Context.startService() v Context.bindService(). Nu ngi dng gi phng thc Context.startService() th h thng s nhn v mt i tng service (to mi n v gi hm onCreate() nu cn thit) v sau li gi phng thc onStartCommand(Intent, int ,int) vi cc bin c cung cp bi client. Service mi c to ra ny s chy cho ti khi c lnh gi phng thc Context.stopService() hoc stopSelf(). D cho mt service c c start bao nhiu ln i na th n s b tt ngay khi phng thc Context.stopService() hoc phng thc stopSelf() c gi.Service c th dng phng thc stopSelf(int) m bo rng service s khng c tt cho n khi Intent khi to n c x l. Lc vng i ca mt serviceDa theo hnh trn, 1 service c bt u bi phng thc startService() l service dng thc hin cc tc v ngm di nn, service c bt u bi phng thc bindService() l service c dng cung cp cc chc nng cho cc chng trnh khc.BroadcastReceiverL lp nhn v cc intents c gi bi sendBroadcast(). C th to instance cho lp ny bng 2 cch: hocvi Context.registerReceiver() hay thng qua tag trong file AndroidManifest.xml.C hai lp broadcast quan trng cn xt n:Broadcasts bnh thng (Normal broadcasts): c gi bi context.sendBroadcast ti cc receivers hon ton khng theo 1 trt t no, dn ti i khi tn ti cng 1 lc nhiu receivers khc nhau. Tuy nhanh nhng khng th trao i kt qu nhn v gia cac1 receivers vi nhau.Broadcasts c th t (Ordered broadcasts) - c gi bi Context.sendOrderedBroadcast() ti tng receiver mt. Nh vy, kt qu nhn v ca 1 receiver c th tr thnh input ca 1 receiver khc, hay c th ngay lp tc dng vic broadcast ti cc receiver khc. Trt t chy cc receivers c quyt nh bi thuc tnh android:priority trong intent-filter tng ng. ContentProvider: L ni lu tr v cung cp cch truy cp d liu do cc ng dng to nn. y l cch duy nht m cc ng dng c th chia s d liu ca nhau.Android cung cp sn content providers cho 1 s kiu d liu thng dng nh m thanh, video, thng tin s in thoi,... (Xem thm trong gi android.provider). Ngi lp trnh cng c th t to ra cc class con (subclass) ca Content Provider lu tr kiu d liu ca ring mnh.Cch thc hot ng ca Content Provider:Mi content provider, tuy c th khc nhau v cch thc lu tr d liu, u s dng chung 1 interface tm v tr v d liu, bao gm vic thm, bt v sa d liu. Vic ny c thc hin thng qua cc i tng ContentResolver khi gi getContentResolver()ContentResolver cr = getContentResolver();

M hnh d liuContent providers s dng d liu di dng 1 table n gin, trong mi hng l 1 record v mi ct l d liu ca 1 kiu nht nh.

V d m hnh d liu thng tin s in thoi trong myMi record c 1 trng _ID c nht lin kt vi cc bng khc.URI (Uniform Resource Identifier)URI l dy cc k t string c dng :M 1 trang web trong trnh duyt, bt u vi http://Ch ti cc file ti nguyn c sn trong my (VD: 1 file video, danh sch contacts,...), bt u vi "content://"

Da vo hnh trn

Cc thnh phn ca mt URLA Tin t mc nh ca 1 URI, khng thay i c.B Xc nh content provider. i vi cc ng dng hng th 3, y chnh l tn y ca 1 lp.C Xc nh loi d liu no cn ly v. Nu ngun cung cp ch cho ly 1 loi duy nht th c th trng, hoc nu c nhiu loi th c th phn ra tng phn 1 (land/bus, land/train, sea/ship,)D ID ca 1 record, khi cn ly v ch duy nht 1 record.Khi to 1 content provider, Android t ng to 1 constant cho URI ca provider m bo code hiu qu v d cp nht sau ny. Constant ny - CONTENT_URI - s xc nh cho ContentProvider phi lin kt vi bng no ca ngun cung cp.V d: URI cho bng lin kt s in thoi vi tn ngi l:android.provider.Contacts.Phones.CONTENT_URI URI cho bng lin kt hnh i din vi tn ngi l:android.provider.Contacts.Photos.CONTENT_URITm kim 1 Content Provider bt u tm kim (query) 1 content provider, trc nht ngi lp trnh cn c trong tay cc yu t sau:URI xc nh provider.Tn cc trng (field) d liu s ly v.Cc kiu d liu ca nhng trng trn.ID, ch khi cn tm 1 record xc nh no . bt u tm kim, ngi lp trnh c th dng 1 trong 2 phng thc: ContentResolver.query() hoc Activity.managedQuery(). C 2 phng thc trn u c chung arguments v u tr v 1 i tng con tr (Cursor)

public final Cursor query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

u tin, d vi query() hay managedQuery() th ta u cn cung cp URI ca bn cung cp, tc CONTENT_URI. Ch nu mun gii hn ch tm kim 1 URI duy nht, ta thm ID vo cuiURI nh sau: content://.../23, vi 23 l ID ta cn tm kimHoc ta c th dng cc hm h tr nh ContentUris.withAppended() v Uri.withAppendedPath().

V d:Uri myPerson = ContentUris.withAppendedId(People.CONTENT_URI,23);Cc bin truyn vo khc ca query() v managedQuery() l:projection - Tn ca ct d liu cn tr v. Nu NULL th tr v tt c cc ct.selection - Tn cc hng d liu s tr v. S dng vi WHERE ging nh khi truy vn SQL. Nu NULL th tr v tt c cc hng.selectionArgs - quy nh gi tr tr v, VD: selectionArgs = {value_as_string} s p kiu d liu tr v di dng string.sortOrder - Xc nh th t sp xp cc hng. S dng vi ORDER BY ging nh khi truy vn SQL. Nu NULL th khng theo th t g c.To mi 1 Content provider to mi 1 content provider, cn phi tho mn cc iu kin:Thit lp h thng lu tr d liu nh th no: bng cc file hay s dng c s d liu SQLite.Extend lp ContentProvider.Khai bo 1 content provider trong file AndroidManifest.xml nh ngha 1 lp con ContentProvider, ta cn hin thc 6 phng thc tru tng (abstract) c khai bo trong lp ContentProvider:query()insert()update()delete()getType()onCreate()Phng thc query() phi tr v 1 i tng Cursor. Mc d Cursor v c bn l 1 interface, Android cung cp sn 1 s i tng Cursor to sn. V d; SQLiteCursor dnh cho c s d liu SQLite, MatrixCursor cho d liu khng lu trong SQLite.Android cng khuyn nn gi ContentResover.notifyChange() bo cho cc listeners bitd liu s c hiu chnh. Ngoi ra ngi lp trnh cng nn thm vi thao tc sau gip vic truy xut cc lp hiu qu hn:nh ngha mt Uri dng public static final, vi tn l CONTENT_URI (nh trnh by trn).nh ngha tn cc ct m content provider s tr v. Thg thng th y cng chnh l tn cc ct trong c s d liu SQLite m chng i din. Tip theo, ngi lp trnh nn nh ngha cc public static String constants cac1 ng dng khc c th ghi r tn cc ct v cc hng dn khc 1 ct interger tn "_id" (vi constant _ID) cng cn c nh nghia s dng khi cn ly v cc record c nht. Trong SQLite, trng _ID nn c kiu nh sau:INTEGER PRIMARY KEY AUTOINCREMENT, trong thnh phn AUTOINCREMENT khng nht thit phi c, nhng nn c a vo m bo cc ID lun c nht, trnh trng hp khi xa 1 row th ID ca row tip theo s c cp ID ging h ca row va b xa.Cc ghi ch gip ngi khc ghi c bit c d liu nh th no.Nu content provider ny x l 1 kiu d liu hon ton mi, ngi lp trnh cn nh ngh 1 kiu MIME mi tr v trong s th hin ca ContentProvider.getType(). khai bo 1 Content Provider mi, trc nht cn phi khai bo trong tag ca file AndroidManifest.xml.

Khai bo tag trong file AndroidManifest.xml

Trong , thuc tnh name l tn y ca lp con ContentProvider, v authorities l phn xc nh provider ca URI "content:"

View: View l thnh phn c bn xy dng giao din ngi dng cho 1 ng dng Android. View l 1 lp cn bn ca widgets (widgets c dng to cc nt nhn, text fields,...). Lp con ViewGroup l lp cn bn ca layouts, c th coi nh 1 ci hp v hnh cha nhiu Views hay ViewGroups khc v xc nh cc thuc tnh layout.S dng Views:Trong 1 ca s mn hnh, mi views u c sp xp theo th t trn 1 cy trong 1 hay nhiu file XML nm trong res/layout. Khi to 1 cy cha cc views, ngi lp trnh cn xc nh nhng gi tr sau:Cc thuc tnh - Chng hn nh xem 1 TextView s hin th ch g. Mi view c nhng thuc tnh v phng thc khc nhau.Mc tp trung (Focus) - Thay i s tp trung tu theo input ca ngi dng vi requestFocus().Listeners - nh cc listeners c hnh ng khi 1 s kin g xy ra vi setOnFocusChangeListener(View.OnFocusChangeListener)Nhn thy hay khng - vi setVisibility(int)

V d mt cy Views

Mt s Views thng dng:TextView: Hin th 1 khung text v cho php ngi dng thay i. ImageView: Hin th 1 hnh nh xc nh t file ti nguyn hay qua 1 content provider.Button: Hin th 1 nt nhn.Checkbox: Hin th 1 nt nhn vi 2 trng thi khc nhau.KeyboardView: Hin th bn phm o nhp liu.WebView: Hin th cc trang web bng Webkit.Mt s ViewGroups thng dng:LinearLayout: Cc view c xp theo 1 hng hay 1 ct duy nht.

LinearLayout

AbsoluteLayout: Cho php xc nh chnh xc v tr ca tng view. AbsoluteLayout

TableLayout: Sp xp cc view theo cc ct v hng. Mi hng c th c nhiu view, m mi view s to nn 1 .

TableLayout

RelativeLayout: Cho php xc nh v tr cc view theo mi quan h gia chng (VD; canh tri, phi,...)

RelativeLayout

FrameLayout: L 1 placeholder cho php t ln 1 view duy nht. View t ln FrameLayout lun c canh l tri pha trn. FrameLayout

ScrollView: L 1 FrameLayout c bit cho php trt (scroll) 1 danh sch di hn kch thc mn hnh.

ScrollView Lu tr d liuAndroid c nhiu cch lu tr d liu. Mt cch n gin nht l s dng h thng preferences. Android cho php cc activity v ng dng lu gi preferences theo dng cp t kha v gi tr, nm gia cc ln gi mt activity. Mc ch chnh l lu tr thng tin cu hnh chi tit m ngi dng hiu chnh, chng hn trang web ngi dng xem gn y nht. Bn c th lu tr bt k thng tin no trong preferences bng t kha c kiu String v kiu d liu nguyn thy (boolean, String)Preferences c th dng cho activity c lp hay c chia s gia cc activity ca mt ng dng. V tng lai, Preference c th c chia s gia cc ng dng vi nhau.Bn cnh vic s dng Preferences lu tr d liu th cng cn mt cch n gin khc thc hin cng vic lu tr d liu l s dng tp tin. Android cung cp 2 m hnh truy cp tp tin: Mt cho cc tp tin c ng gi sn cho ng dng.Mt dnh cho tp tin c to trn thit b thc thi ng dng .i vi d liu tnh, chng hn danh sch cc t dng kim tra chnh t. Cch n gin nht thc hin iu l lu vo mt tp tin, v tp tin ny phi c t trong th mc res/raw ca project. Nh vy, tp tin s c t trong tp tin APK ca ng dng nh mt ngun ti ngun c bn.Ngoi 2 phng php trn, Android cn h tr h qun tr c s d liu quan h SQLite qun l d liu ln v c quan h phc tp. Nh vy, ngi lp trnh c th thc hin qun l d liu mt cch d dng, linh hot hn.

SQLiteKhi lp trnh trn di ng hay cc thit b c dung lng b nh hn ch, ngi ta thng dng SQLite. SQLite l mt h qun tr c s d liu nhng c hin thc t chun SQL-92. Ging vi ci tn ca n, SQLite chim dung lng nh (khong 275KB) nn vic truy xut d liu c nhanh chng, khng chim dng qu nhiu ti nguyn h thng. Do SQLIte l phn mm m ngun m nn n khng b gii hn tc quyn. V l do m SQLite c nhiu hng s dng (Adobe, Apple, Google, Sun, Symbian) v cc d n m ngun m (Mozila, PHP, Python).c bit, i vi Android, SQLite rt thch hp to c s d liu cho cc ng dng trn nn Android. T khi SQLite c giao din SQL th n cng c s dng d dng v thng dng hn.Sqlite tuy nh hn so vi cc h c s d liu khc nhng cng khng khc bit nhiu. SQLite cng s dng ngn ng truy vn SQL (SELECT, INSERT, DELETE), thch hp cho cc ng dng trn in thoi, c bit l ng dng trn h iu hnh Android v Android Runtime c th cha c SQLite m khng cn phi chia nh ra.SQLite c mt h thng culnhSQL y vi cc triggers, transactions... Cc cu truy vn cng nh cc h c s d liu khc. SQLite nh bn thu nh ca so vi cc h CSDL khc, v vy n khng th c y cc ch nng trn chic in thoi di ng ca bn.SQLite l mt la chn thch hp dnh cho ng dng trn h iu hnh Android. Ngoi dung lng lu tr nh gn, SQLite cn cho php s dng Unicode, kiu d liu khng c ci t trong mt s phin bn Android.

c trng ca SQLite

SQLite c hin thc t tiu chun SQL-92 ca mt ngn ng SQL nhng vn cn cha mt s khim khuyt. Tuy SQLite h tr triggers nhng bn khng th vit trigger cho view. Hoc SQLite khng h tr lnh ALTER TABLE, do , bn khng th thc hin chnh sa hoc xa ct trong bng.SQLite khng h tr rng buc kha ngoi , cc transactions lng nhau, php kt right outer join, full outer join.SQLite s dng kiu d liu khc bit so vi h qun tr c s d liu tng ng. Bn c th insert d liu kiu string vo ct kiu integer m khng gp phi bt k li no. Vi tin trnh hoc lung c th truy cp ti cng mt c s d liu. Vic c d liu c th chy song song, cn vic ghi d liu th khng c php chy ng thi.Ngoi cc khim khuyt trn th Sqlite cung cp cho ngi dng gn nh y cc chng nng m mt h c s d liu cn c nh to database; to bng; thm, xa, sa d liu.SQLite ManagerSQLite Manager l cng c hiu qu h tr cho vic xy dng c s d liu cho ng dng Android l SQLite Manager, mt add-on min ph ca Firefox (https://addons.mozilla.org/en-US/firefox/addon/5817)

Mn hnh lm vic ca addon SQLite manager

S dng SQLite Manager qun l c s d liu AndroidTo database mi:Vo menu Database/ New DatabaseTo bng mi:Ti Database va to, nhp chut phi chn Create table. Thit lp cc gi tr thch hp.X l d liu:Chn bng cn nhp v chn tab Browse & SearchNt Add: Thm d liuNt Duplicate: Nhn i d liuNt Edit: Chnh sa d liuNt Delete: xa d liuThc thi cu truy vn:Chn tab Execute SQL, Nhp cu lnh SQL vo khung Enter SQL v chn Run SQL. Kt qu s c trnh by khung pha di. Nu cu SQL c li s c hin th ti Last Error.Ty chnh Database: Chn tab DB Settings v thit lp cc gi tr nh mong munImport Database vo ng dng AndroidSau khi to CSDL bng SQLite Manager,chn menu File/Export Database. Lu file .sql va to vo my. import database vo ng dng, ngi lp trnh cn:Build and Run chng trnh Android.Khi ng my o xong, chn nt DDMS gc trn bn phi chng trnh Eclipse xem cu trc file.Vo th mc cha database c dng dn nh sau:/data/data/your.app.package/databases/your-db-nameSau chn nt import v chn tp tin database.

CHNG III: NG DNG DEMO

3.1.Phn tch chc nngChng ta s s dng kin thc tm hiu xy dng mt ng dng game c tn l Sudoku. gip chng ta gii tr v ng thi gip chng ta rn luyn tr nh, c bit nhng ngi cao tui nn game c chc nng v cch chi nh sau:Bc u chng ta s c mt giao din chng ta la chn gm:New game: to mt game miContinue: tip tc tr chi khi chng ta cha hon thnh tr chi trc About: gii thiu v gameExit: dng thot khi tr chiCch chi: u tin chng ta s c mt ma trn 9x9 v trong ma trn 9x9 ny s c 9 ma trn 3x3. Khi chng ta New game th chng trnh s to ra cc con s nhu hay t ty theo mc kh hay d nm ri rc khp ma trn 9x9 sao cho cc dng cc ct v trong ma trn 3x3 khng c trng nhau. y cng l lut chi ca game ny v nhim v cn li ca ngi chi l phi lm sao in cc con s cn thiu trong cc cn li theo ng lut chi trn cho n khi hon thnh.

3.2.Xy dng chc nngYu cu: ci t SDK Android v plugin Android cho EclipseTool s dng:Eclipse heliosAndroid 2.2Trong bt c loi game no th cng phi c giao din tng tc vi ngi dng. V vy ta s tm hiu v xy dng mt giao din game. Trong Android chng ta c hai cch lm nn mt giao din. Cch th nht l chng ta vit code xy dng giao din nhng n s c mt nhc im l lm cho ta ri khi chng trnh xy ra li hoc nng cp, cch th hai l trong android h tr chng ta xy dng giao din bng file XML (Extensible Markup Language) ngn ng nh du m rng. Khi s dng cch th hai chng trnh ca chng ta s r rng hn. V vy chng ta s s dng cch th hai xy dng giao din cho game Sudoku.u tin chng ta s to giao din chnh cho game gm 4 button v mt ci text View. Sau y l code XML trong file res/layout/main.xml:

Gii thch code: u tin chng ta s to mt ci layout m c th l LinearLayout, trong layout ny chng ta s to ra 1 textview dng to ra title ca game v 4 button. Button u tin l to NewGame v Continue, About, Exit. cc @string trong main.xml c gi tr th ta lm nh sau: Trong file res/value/strings.xml

Sudoku Game MySudoku New Game Continue About Exit ...Tng t nh file strings.xml ta cng c trong file colors.xml nh sau:

#3500ffff ...

Gi ta s implement 4 button to ra.Button About: tng y l chng ta to ra mt Activity v start n. Trong mc res/layout s to ra mt file about.xml

Gii thch code: cng ging nh trong main.xml ta cng to ra mt textview v thm trong file strings.xml nh sau: Written by Anh Phng - version 1.0Trong th mc src/my.sudoku.game to ra mt class About.java k tha Activity vi ni dung nh sau:package my.sudoku.game;

import android.app.Activity;import android.os.Bundle;

public class About extends Activity {/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.about); }

}By gi chng ta s bt s kin cho button about khi ngi chi click. Trong th mc src/my.sudoku.game/MySudokuActivity.java. Cho class MySudokuActivity implement OnClickListener sau ta implement hm OnClick nh sau: @Override public void onClick(View v) { switch(v.getId()){case R.id.about_button:Intent i = new Intent(this, About.class);startActivity(i);break;}}

Cui cng chng ta phi khai bo Activity about ny trong file AndroidManifest.xml nh sau. ...

Button NewGame tng y l khi ngi dng click vo button NewGame th, s c mt menu gm 3 mc : Easy, Medium, Hard ngi chi la chn.u tin chng ta thm gi tr vo strings.xml nh sau:Difficulty Easy Medium Hard...Tip theo ta to mt thng bo dng array. To res/value/arrays.xml nh sau

@string/easy_label @string/medium_label @string/hard_label

Tip theo chng ta s dng AlertDialog hin th menu khi ngi dng click vo NewGame. Trong file MySudokuActivity.java chng ta thm vo phng thc OnClick nh sau:case R.id.new_button:openNewGameDialog();break;Sau y l phng thc openNewGameDialog()public void openNewGameDialog(){ new AlertDialog.Builder(this).setTitle(R.string.new_game_title).setItems(R.array.difficulty,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int i) {StartGame(i);}}).show(); }

Gii thch code: u tin, chng ta s to ra mt AlertDialog vi title bng String new_game_title. Sau , chng ta setItems cho Dialog ny vi cc gi tr khai bo trong difficulty ti arrays.xml . ng thi, chng ta s gn mt listener n nhn kh ngi dng chn thng qua OnClickListener();Phng thc StarGame()

private void StartGame(int i) { Intent intent = new Intent(MySudokuActivity.this,Game.class); intent.putExtra(Game.KEY_DIFFICULTY, i); startActivity(intent);}}

Cui cng, thng qua kh ngi dng chn ( y l int i) hm startGame s bt u game thch hp .

Button ExitButton ny ch cn thm vo phng thc OnClick trong MySudokuActivity nh sau: case R.id.exit_button:finish();break;Khi lnh finish() c thc thi ,ng dng chng ta s thot v tr li control cho ng dng tip theo trong application stack ca android( thng l mn hnh home)Tip theo chng ta to phn class game x l phn Game cho ng dngpackage my.sudoku.game;

import android.app.Activity;import android.os.Bundle;

public class Game extends Activity{public static final String KEY_DIFFICULTY ="org.me.MySudoku.difficulty";public static final int DIFFICULTY_EASY = 0;public static final int DIFFICULTY_MEDIUM =1;public static final int DIFFICULTY_HARD =2;@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PuzzleView puzzleView = new PuzzleView(this); setContentView(puzzleView); puzzleView.requestFocus(); }}

Trong on code trn ta c 1 class PuzzView. Class ny s v nn game, sau y l code ca PuzzView:package my.sudoku.game;

import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.graphics.Paint.Style;import android.graphics.Rect;import android.view.KeyEvent;import android.view.View;

public class PuzzleView extends View {private final Game game;public PuzzleView(Context context) {super(context);this.game=(Game)context;setFocusable(true);setFocusableInTouchMode(true);}private float width;private float height;private int selX;private int selY;private final Rect selRect = new Rect();@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh){width = w/9;height = h/9;getRect(selX, selY, selRect);super.onSizeChanged(w, h, oldw, oldh);}

private void getRect(int x, int y, Rect rect) {rect.set((int)(x*width),(int)(y*height),(int)(x*width+width),(int)(y*height+height));}@Override//v nnprotected void onDraw(Canvas canvas){Paint background = new Paint();background.setColor(getResources().getColor(R.color.puzzle_background));canvas.drawRect(0, 0, getWidth(), getHeight(), background);Paint dark = new Paint();dark.setColor(getResources().getColor(R.color.puzzle_dark));Paint hilite = new Paint();hilite.setColor(getResources().getColor(R.color.puzzle_hilite));Paint light = new Paint();light.setColor(getResources().getColor(R.color.puzzle_light));//v cc ng li nhfor(int i = 0;i