tiểu luận android và lập trình ứng dụng

Upload: neunhungaydo

Post on 05-Oct-2015

28 views

Category:

Documents


3 download

DESCRIPTION

tiểu luận android lập trình ứng dụng xem phim trực tuyến

TRANSCRIPT

Tm hiu lp trnh Android

Tm hiu lp trnh Android

MC LC2DANH MC HNH NH

3LI NI U

4CHNG 1 TM HIU V LP TRNH ANDROID

41.1 Tng quan v Android

51.2 Cc ng dng c sn trong Android

61.3 Cc th vin ca Android

71.4 Cc thnh phn trong mt ng dng Android

71.4.1 Android Project

91.4.2 Android Manifest

111.4.3 Activity

15CHNG 2: CI T MI TRNG LP TRNH CHO ANDROID

152.1 Ti v cc ci t cn thit

152.2 Ci t mi trng lp trnh

162.3 My o Genymotion

182.4 To project Android

24CHNG 3 CC THNH PHN TRONG NGN NG LP TRNH ANDROID

243.1 Cc Thnh Phn Giao Din

243.1.1View

243.1.2 ViewGroup

293.2 INTENT

303.3 SQLITE

303.4 JSON

32CHNG 4 XY DNG NG DNG

324.1 Tng quan v ng dng

324.2 S lung d liu

334.3 Thit k ng dng

334.3.1 Xy dng cc Model

344.3.2 Thit k giao din

374.4 Xy dng cc chc nng trong ng dng

374.5.Cc th vin bn ngoi c dng

38KT LUN V HNG PHT TRIN

40TI LIU THAM KHO

DANH MC HNH NH

Hnh 1.1 Giao din Android 5.0(Lolilop)5

Hnh 1.2 : Cc Th Vin ca Android7

Hnh 1.3: Project Android c bn8

Hnh 1.4 : Cu trc tng th ca AndroidManifest.xml11

Hnh 1.5 : Khai bo Activity trong AndroidManifest.xml13

Hnh 1. 6: Vng i ca 1 Activity15

Hnh 2.1 : My o Genymotion18

Hnh 2.2 : To project mi19

Hnh 2.3: Ci t tn v phin bn SDK19Hnh 2.4 : Configure Project20

Hnh 2.5: Hon thnh thit lp project mi21

Hnh 2.6 : project hon chnh21

Hnh 2.7 : activity_main.xml22

Hnh 2.8: Giao din FistApp23

Hnh 2.9 : X l s kin v kt ni vi giao din24

Hnh 2.10: FistApp24

Hnh 3.1 : View Group25

Hnh 3.2: CheckBox29

Hnh 3.3: MenuOption29

Hnh 3.4 : Context Menu30

Hnh 3.5 :Hot ng ca Intent30

Hnh 4.1 : S lung d liu33

Hnh 4.2 : Giao din ng dng36

Hnh 4.3 : Giao din chc nng ngi dng37

Hnh 4.4 : Mn hnh khi ang xem video38LI NI UAndroid l mt h iu hnh m ngun m c pht trin da trn nhn Linux. Trong thi im hin ti 12/2014, Android ang c nhng bc pht trin v cng mnh m (Chim hn 80% th phn ca th trng Smartphone) v ang chim cm tnh ca ng o ngi dng Smartphone. Do c li th l c xy dng theo tiu ch m nn vic pht trin ng dng trn Android kh d dng. Tuy nhin, ngun ti liu lp trnh c ng dng chy trn Android kh l ri rc v cha c s sp xp v t chc tt. Chnh v th m cun Ph lc ny c vit ngoi mc ch h tr cho Kha lun Tm hiu H iu hnh Android v xy dng ng dng xem phim online cn c mc ch cao hn l cung cp nhng ci nhn c bn nht, chung nht gip cho ngi c c th d dng nm bt, hc hi cch thc vn hnh cng nh pht trin ng dng trn h iu hnh nhiu tim nng ny.CHNG 1TM HIU V LP TRNH ANDROID

1.1 Tng quan v AndroidAndroid l h iu hnh chy trn in thoi di ng c pht trin t nhn Linux, mang nhiu c tnh c trng ca mt h iu hnh di ng nhng vn mang cc tnh cht chung ca cc h iu hnh. L mt h iu hnh hin i, tuy ra i mun nhng li c pht trin t Linux, rt kinh nghim t nhng h iu hnh i trc, c tch hp nhiu cng ngh tin tin v c bit l c pht trin t mt ng trm cng ngh tm c th gii l Google nn Android sm tm c ch ng ca mnh.

Hnh 1.1 Giao din Android 5.0(Lolilop)Khng ging nh Windows Mobile v Apple Iphone, tuy c hai u cung cp mt mi trng pht trin ng dng phong ph v d tip cn nhng lun c s u tin cho cc ng dng mc nh c sn ca h iu hnh(native application). 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 v mn hnh nh (home screen).

Cc nh pht trin vit 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 ca lin minh thit b cm tay m ngun m, bao gm 78 cng ty phn cng, phn mm v vin thng nhm mc ch to nn mt chun m cho in thoi di ng trong tng lai.1.2 Cc ng dng c sn trong Android

Mt in thoi Android thng thng s i km vi mt vi ng dng c ci t 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 ho vi dch v ca Google.

-Phin bn thu gn ca Google Map cho in thoi, bao gm StreetView, tm kim a im, 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 nh,).

-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 c cuc gi n, nhn mt tin nhn mi, thay cho cc ng dng c sn.1.3 Cc th vin ca Android

Android cung cp cc gi API pht trin ng dng. Danh sch cc gi core API di y gip cho chng ta c ci nhn tng qut v nhng g c h tr sn, tt c cc thit b chy Android u phi h tr c ti thiu cc API ny.

Hnh 1.2 : Cc Th Vin ca Android android.untilGi API li, cha cc class cp thp nh Container, Stringformatters, XML parsing. android.osTruy cp ti cc chc nng ca h iu hnh, chng hn nh : Gi &Nhn SMS, Giao tip ni b gia cc ng dng.. android.databaseCungcp cc class cp thp lm vic vi c s d liu android.contentView l lp cha ca mi lp giao din ngi dng. android.widgetc tha k t lp View bao gm cc lp c bn xy dng giao din widget nh : Listview,Button,Layout. android.appGi API cp cao bao gm lp Activity v Service 2 lp c s cho mi ng dng Android1.4 Cc thnh phn trong mt ng dng Android1.4.1 Android Project

Android project l mt h thng th mc v file cha ton b source code, ti nguyn, m mc ch cui cng l ng gi thnh mt file .apk duy nht (file c ui .apk l file ng dng ca Android ).

Hnh 1.3: Project Android c bn

Trong mt th mc project, c mt s thnh phn (file, th mc con) c to ra mc nh, cn li phn ln th s c to ra sau nu cn trong qu trnh pht trin ng dng. Di y lit k cu trc y ca mt th mc project:

src/ Cha ton b source code (file .java hoc .aidl)

bin/ Th mc chc file Output sau khi build. y l ni ta c th tm file .apk.

gen/ Cha cc 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 (resources) cho ng dng, chng hn nh file hnh nh, file layout, cc chui (string), Di y l cc th mc con ca n:

color/ Cha cc file .xml dng nh ngha mu sc.

drawable/ Cha file 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 hay .ogg

values/ Cha file .xml nh ngha cc gi tr. Khc vi cc resource trong cc th mc khc, resource th mc ny khi c 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, chng hn nh file xml quy nh app widget, search metadata,

libs/ Cha cc th vin ring.

AndroidManifest.xml/ File kim sot cch cc thnh phn trong ng dng (activity, service, intent receiver,) tng tc vi nhau, cch ng dng tng tc vi cc ng dng khc, cng nh ng k cc quyn hn v s dng ti nguyn trong my.

1.4.2 Android ManifestMi ng dng Android u c mt tp tin tn AndroidManifest.xml, c lu th mc gc (root) ca ng dng. Tp tin manifest m t nhng thng tin cn thit ca ng dng cho h iu hnh Android, nhng thng tin ny h iu hnh cn phi bit trc khi n chy bt k chng trnh no. Nhng cng vic m tp tin manifest cn phi thc hin:

- Khai bo tn ca package cho ng dng. Tn ca package l nh danh duy nht ca ng dng- M t cc thnh phn (component) ca ng dng: activity, services, broadcast receivers, v content providers m ng dng c. Khai bo tn cc lp m ci t cc thnh phn ny v cc tc v m cc thnh phn ny c th x l (v d cc thng ip mt Intent c th x l). Nhng khai bo ny cho php h iu hnh Android bit cc thnh phn ny c th c th thc hin c tc v g v iu kin chng c th thc thi.- Xc nh tin trnh (process) s cha nhng thnh phn (component) no.

- Khai bo cc quyn m ng dng cn phi c truy xut cc thnh phn ca API v giao tip vi cc ng dng khc.- Khai bo cc quyn m yu cu ng dng khc cn phi c c th giao tip c vi cc component ca ng dng ny.- M t phin bn API ti thiu m ng dng c th chy.- Lit k cc th vin m ng dng cn phi kt ni.. Manifest bao gm nhiu th nh ngha cc thnh phn ca ng dng, cc thit lp v bo mt, cc lp test, Di y l danh sch cc th thng xut hin trong hu ht cc file manifest

Hnh 1.4 : Cu trc tng th ca AndroidManifest.xml

Cc th thng c s dng nhiu nht: Mt file manifest ch c th cha mt th application. Th ny dng ch nh cc metadata (bao gm title, icon, theme,) v cc thnh phn cho ng dng. N ng thi cng l th cha ca cc th Activity, Service, Content Provider, v Broadcast Receiver.

Th activity c yu cu cho mi mt Activity trong ng dng. S dng thuc tnh android:name ch nh tn ca lp Activity tng ng. Cng nh activity, th service c yu cu cho mi mt Service trong ng dng. S dng thuc tnh android:name ch nh tn ca lp Service tng ng. S dng thuc tnh android:enabled ch nh trng thi mc nh ca Service. Quy nh cc quyn hn m ng dng mun s dng trn h thng. V ngi dng s phi xc nhn cc quyn ny trong khi ci ng dng. iu ny m bo cho vic ng dng khng th ton quyn s dng cc ti nguyn ca h thng (tin nhn, danh b, thng tin c nhn, camera, nh v, mng,). y l mt im bo mt cn lu .Eclipse s t ng to ra mt file Manifest bao gm lp Activity mc nh khi bn to mi mt Android Project.1.4.3 Activity

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 th s dng trong ng dng, mi activity u phi c khai bo trong tp AndroidManifest.xml Hnh 1.5 : Khai bo Activity trong AndroidManifest.xml

Mt ng dng thng bao gm nhiu activity lin kt vi nhau. Thng thng mt activity ca ng dng ng vai tr activity chnh v c hin th cho ngi s dng trong ln u tin chy ng dng. Mi activity c th khi chy mt activity khc.To mt Activity to mt activity, bn phi to mt subclass cho Activity (hoc cho chnh n). Trong subclass, bn cn phi xc nh cch thc callback m h thng s s dng khi c s chuyn i trng thi ca activity chng hn nh khi activity c to, dng li, resume hoc b hy. C 2 phng thc callback quan trng: onCreate()

Ta cn phi hin thc ha phng thc ny, v h thng s gi ti method ny mi khi activity c khi ng. V quan trng, y chnh l ni cn gi phng thc setContentView() xc nh b cc cho giao din ngi dng.

onPause()

H thng s gi ti phng thc ny khi ngi dng ri khi ng dng (n khng ng ngha vi vic activity s b hy). y l ni ta s thc hin lu li trng thi, hoc khng lm g c (v ngi dng c th khng tr li).

Di y l danh sch cc phng thc c th c gi cng vi gii thch c th:

onCreate()

Gi khi Activity ln u tin c to. y l ni bn thc hin mi cc khai bo cng nh thit lp giao din. Lun c theo sau bi phng thc onStart().

onRestart()

Gi khi Activity ang trng thi Stopped v c kch hot li.

Lun c theo sau bi phng thc onStart().

onStart()

Gi khi Activity restart v sn sng, nhng cha hin ra vi ngi dng. c theo sau bi phng thc onResume() nu Activity i ra foreground, hoc onStop() nu n n i.

onResume()

Ch c gi khi Activity bt u cc tng tc vi ngi dng.

Lun c theo sau bi phng thc onPause(). onPause()

Gi trc khi Activity bt u vo trng thi paused. Trong phng thc ny ta thng s gii phng b nh, hoc dng cc hnh ng no c th chim dng nhiu RAM, CPU cho Activity c kch hot tip theo lm vic trn tru. Theo sau bi phng thc onResume() nu Activity c kch hot li (quay v foreground), hoc onStop() nu n n i.

onStop()

Gi khi Activity khng cn c s dng na. N c th s b hy b, hoc c th s li c kch hot li t mt Activity khc. Theo sau bi onRestart() nu n c kch hot li, hoc onDestroy() nu n b hy b bi h thng.

onDestroy()

Gi trc khi Activity tht s b hy b, y l li gi cui cng m Activity c th thc hin. Phng thc ny c th c gi bi v u c li gi finish() hoc finishActivity(), cng c th v h thng cn phi hy b gii phng b nh. Khng c theo sau bi phng thc no.

Hnh 1. 6: Vng i ca 1 ActivityCHNG 2:CI T MI TRNG LP TRNH CHO ANDROID2.1 Ti v cc ci t cn thit Ti v Android SDK (Software Development Kit)Ta c th ti b Android SDK ti a ch http://developer.android.com/sdk/index.html. Khi ti v b Android SDK s c nh dng *.exe trn mi trng Windows v ZIP i vi Linux v Mac OS. Vic ci t chng ta c th ch nh ni lu tr trn cng thit b, lu khng nn chn phn vng ci h iu hnh bi v b SDK s tng dung lng rt nhiu khi chng ta ti v cc phin bn khc Ti v Eclipse

Truy cp vo trang http://eclipse.org/downloads/ tin hnh ti ,Eclipse c th chy trc tip m khng cn ci t.

Ti v JDK(Java Deverlopment Kit)truy cp vo trang http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ti v ci t phin bn mi nht tng tnh n nh v h tr tt nht(Bn mi nht tnh ti thi im hin ti 12/2014 l JDK8).2.2 Ci t mi trng lp trnh

Sau khi ti v cc ci t cn thit ta tin hnh ci t: Vi SDK ta bm vo file installer_r24.0.1-windows.exe va ti v tin hnh ci t bnh thng vi giao din ci t Ta ci t tng t i vi JDK

Sau khi ci dt SDK v JDK ta gii nn v khi ng Eclipse c th to cu ni cho Eclipse vi b Android SDK lm vic vi nhau, ta cn phi s dng thm plugin ADT (Android Development Tool) cho Eclipse. N cho php chng ta to Project Android, qun l cc my o, ng gi ng dng v nhiu th khc na.Vic ci t ADT n gin ch cn theo cc bc sau1.Chn Help trn thanh tc v ca Eclipse v chn Install New Software v bm vo nt Add2.Trong hp thoi mi xut hin, in a ch truy cp ti v ADT trong Location:https://dl-ssl.google.com/android/eclipse/.3.Nhn OK Eclipse bt u tm kim, sau khi hon thnh s hin ra cc plug-in. nh du vo nt gc Developer Tools v nhn Next. Eclipse s t ng ti v, ta tip tc nhn Next qua bc ci t.

4.c v chp nhn cc iu khon bn quyn, nhn Next v Finsh.5.Sau khi ci xong cn thc hin khi ng li Eclipse v tham chiu n n b Android SDK ci t. Chn mc Preferences trong phn Windows trn thanh tc v ca Eclipse.6.Chn mc Android trong cy th mc bng pha bn tri.7.Nhn Browser, tr n th mc ci t b Android SDK v nhn Apply Danh sch cc phin bn SDK s c lit k. Nhn OK hon thnh ci t.Vy l ta thit lp xong mi trng lp trnh. Phn ti chng ta s tm hiu tip cch to ng dng v chy thc thi trn my o.2.3 My o GenymotionNh ta bit mc d b SDK ca Android c tch hp Emulator-cho vic chy th cc ng dng khi lm vic, chng ta c th s dng chng nhng my o ny kh chm , khc phc nhc im trong phn ny chng ta s tm hiu v my o GenymotionTa c th ti v file ci t ti a ch: http://www.genymotion.com/ Ci t v bt ng dng Genymotion v vo thit lp to my o Androidng nhp vo ng dng Genymotion bng ti khon m bn ng k vi Genymotion

Bn s c hi v vic chn thit b gi lp mi trng Android o. C rt nhiu my o, v d nh HTC One, Xperia Z, Samsung Galaxy S5 cho n cc my Nexus, c c mt s tablet y na. Chn ly my no bn thch, ri tip tc nhn nt Add v nt Next.

Ci t v bt ng dng Genymotion v vo thit lp to my o Androidng nhp vo ng dng Genymotion bng ti khon m bn ng k vi GenymotionBn s c hi v vic chn thit b gi lp mi trng Android o. C rt nhiu my o, v d nh HTC One, Xperia Z, Samsung Galaxy S5 cho n cc my Nexus, c c mt s tablet y na. Chn ly my no bn thch, ri tip tc nhn nt Add v nt Next.Quay tr li giao din chnh ca Genymotion, nhp vo my o m bn mun chy. Ch mt lt l my s xut hin ln nh hnhQuay tr li giao din chnh ca Genymotion, nhp vo my o m bn mun chy. Ch mt lt l my s xut hin ln nh hnhQuay tr li giao din chnh caGenymotion, nhp vo my o m bn mun chy. Ch mt lt l my s xut hin ln nh hnhHnh 2.1 : My o GenymotionTruy cp vo a ch : https://www.genymotion.com/#!/developers/user-guide#collapse8 nm r thng tin v hng dn s dng my o ny.2.4 To project AndroidSau khi ci t thnh cng mi trng lp trnh v my o, chng ta s tm hiu cch to mt project android n gin, v to form ng nhp n gin tng tc vi ngi dng thc hin ta ln lt lm theo cc bc sau:

Bc 1: Trong Eclipse, chn File New Android Application Project

Hnh 2.2 : To project mi

Bc 2: Trong mn hnh New Android Application, nhp thng tin ging nh bn di:

Hnh 2.3: Ci t tn v phin bn SDK

Application Name: tn ca ng dngProject Name: tn ca projectPackage Name: tn ca packageMinimum Required SDK: phin bn API nh nht m ng dng yu cu chy, n s chn ngi dng s dng phin bn nh hnTarget SDK: phin bn API m ng dng c thit k chy. ng dng s chy ng vi API t Minimum Required SDK n Target SDKCompile With: phin bn API dng bin dch ng dngTheme: chn theme dng vi ng dngBc 3: Tip sau bc 2 ta n next sang mn hnh k tip

Hnh 2.4 : Configure Project

Nt chn Create custom launcher icon: cho php thay i icon ca ng dngNt chn Create activity: to mt activity cho ng dngNt chn Mark thi project as a library: to project ny thnh th vin, khng phi l ng dngNt chn Create Project in a Workspace: lu project trong workspace ca EclipseXong, chn ntNext qua mn hnh k tip

Bc 4: La chn Icon thch hp sau chn Next qua mn hnh k tip

Bc 5: Chn Blank Activity to 1 Activity trng km theo Action Bar sau chn Next qua mn hnh k tip.

Bc 6: Sau khi chuyn sang bc 6 trn mn hnh s xut hin cc thng s cn to:

Activity Name: tn ca Activity s c tao ra khi hon thnh WizardLayout Name: tn ca tp tin xml qun l giao din tng ng vi ActivityCi t xong cc bc trn ta nhn finish, vy l ta hon thnh cc bc to mt project androidHnh 2.5: Hon thnh thit lp project miSau khi bm finish ta s quay tr v mi trng Eclipse giao din son tho ta s ln lt m file MainActivity.java v activity_main.xml to form ng nhp

Hnh 2.6 : project hon chnh

u tin ta tin hnh thit k giao din ta m file activity_main.xml nhp vo:

Hnh 2.7 : activity_main.xml

y chng ta s dng Linearlayout v nh chng ta bit Linearlayout phn chia cc i tng theo t l mn hnh v rt linh hot ta s dng thuc tnh android:orientation="" xc nh chiu sp xp cc i tng, y ta sp xp theo chiu dc(vertical).

Ta ln lt khai bo cc i tng TextView ,EditText v Button lu mi i tng ny s dng c chng ta cn khai bo cho chng thuc tnh android:id="@+id/" sau ny chng ta s gi cc id ny x l trong file MainActivity.java.

Sau khi hon thnh bc thit k giao din trn ta s thu c giao din nh hnh di y:Nh chng ta c th thy y cc i tng c sp xp theo chiu dc do thuc tnh android:orientation="" ca layout gc v thng thng chiu sp xp mc nh ca LinearLayout l chiu dc.

Cc thuc tnh android:text="" ta c th khai bo trc tip hoc to trong file strings.xml file ny c cha trong th mc /values ca project explorer. Ta nn s dng theo cch th 2 s d dng hn khi to cc ng dng a ngn ng v d dng chnh sa, ta s khai bo thuc tnh ny nh sau: android:text="@string/ten_string" trong ten_string l tn string khai bo vi gi tr tng ng trong file strings.xml vi cch thc khai bo: gia tri string

Hnh 2.8: Giao din FistApp

Sau khi giao din c to xong ta x l s kin trong file MainActivity.java (xem hnh )u tin ta tin hnh khai bo cc i tng ca giao din thng qua id m ln trc ta khai bo trong activity_main.xml thng qua cu lnh:

DoiTuong tendoituong=(DoiTuong)findViewById(R.id.id_);

Sau khi khai bo cc i tng ta tin hnh lng nghe Button login v button cancel, ta s dng hm getText() ly thng tin t edittext_id v editext_pass sau dng hm toString() chuyn d liu va ly c sang dng String sau hin th ni dung va ly c bng thng bo

Toast.makeText(context, text, duration);Hnh 2.9 : X l s kin v kt ni vi giao dinTng t vi button cancel ta thc hin vic lng nghe v x l s kin, ta dng hm settext("") a gi tr ca id v password v null.

Sau khi hon thnh ta bt Genymotion sau khi ng my o, bm vo biu tng run trn thanh cng c Eclipse, sau chn my o Genymotion ta va khi ng.

Kt qu thu c khi ta bm login: nu id hoc password rng s hin thng bo nhp li, ngc li s hin th thng tin id v password.

Khi bm Cancel, id v password s b xa v a 2 Edittext v null

Vy n y ta hon thnh vic xy dng mt ng dng android c bn.

Hnh 2.10: FistAppCHNG 3CC THNH PHN TRONG NGN NG LP TRNH ANDROID3.1 Cc Thnh Phn Giao Din3.1.1View

Trong mt ng dng Android, giao din ngi dng c xy dng t cc i tng View v ViewGroup. C nhiu kiu View v ViewGroup. Mi kiu l mt hu du ca Class View v tt c chng c gi l Widget

Tt c mi Widget u c chung cc thuc tnh c bn nh cch trnh by v tr, Background, kch thc, l Tt c nhng thuc tnh chungny th hin ht trong i tng View

Trong Android Platform, Cc mn hnh lun c b tr theo mt kiu cu trc phn cp nh hnh di. Mt mn hnh l mt tp hp cc Layout v cc Widget c b tr c th t. th hin mt m hnh th trong hm onCreat() ca mi Activity cn phi c gi mt hm gi l setContentView(R.layout.main) hm ny s load giao din t file main.xml ln phn tch thnh m bitecode3.1.2 ViewGroupHnh 3.1 : View Group

ViewGroup thc ra chnh l View hay ni ng hn th ViewGroup chnh xc l Widget c dng b tr cc i tng khc trong mt mn hnh. C cc loi ViewGroup nh sau:3.2.1 LinearLayoutLinearLayout dng b tr cc thnh phn giao din theo chiu ngang hoc chiu dc nhng trn mt dng duy nht m khng c xung dng.LinearLayout lm cho cc thnh phn trong n khng b ph thuc vo kch thc ca mn hnh. Cc thnh phn trong LinearLayout c dn theo nhng t l cn xng da vo rng buc gia cc phn3.2.2 FrameLayoutFrameLayout c dng b tr cc i tng theo kiu ging nh cc Layer trong photoshop. Nhng i tng no thuc layer bn di s b che khut bi cc i tng thuc layer nm trn. FrameLayout thng c s dng khi cc i tng c khung hnh bn ngoi chng hn nh contact ImageButton3.2.3 AbsoluteLayoutAbsoluteLayout c s dng b tr cc Widget vo mt v tr bt k trong layout da vo 2 thuc tnh ta x,y. Tuy nhin, kiu layout ny rt t kh c dng bi ta ca cc i tng lun c nh s khng t iu chnh c t l khong cch gia cc i tng. Khi chuyn ng dng sang mt mn hnh c kch thc khc vi mn hnh thit k ban u th v tr ca cc i tng s khng cn c chnh xc nh ban u 3.2.4 RelativeLayoutRelativeLayout layout ny cho php b tr cc widget theo mt trc i xng ngang hoc dc. t c chng ng v tr th cc Widget cn c xc nh mt mi rng buc no vi cc Widget khc. Cc rng buc ny l cc cc rng buc mu l cc rng buc tri phi, trn di so vi mt Widget hoc so vi layout parent. Da vo nhng mi rng buc m RealativeLayout cng khng ph thuc vo kch thc mn hnh ca thit b. Ngoi ra, n cn c u im l gip tit kim layout s dng nhm mc ch gim lng ti nguyn s dng khi load ng thi y nhanh qu trnh x l3.2.5 TableLayoutTableLayout c s dng khi cn thit k mt bng cha d liu hoc cn b tr cc Widget theo hng v ct chng hn nh giao din ca my tnh hay mt danh sch d liu.3.2.6 ButtonS d widget button c gii thiu u tin trong s cc widget khc l v y l i tng c th ni l c dng nhiu nht trong hu ht cc ng dng Android. thit k giao din vi mt button ta c cch n gin nh sau:

x l s kin trong code ta th hin khai bo button qua id sau lng nghe s kin v x l:

Button next = (Button) findViewById(R.id.btnButton);

next.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Toast.makeText(getApplicationContext(), "Bn va click vo

Button", Toast.LENGTH_SHORT).show();});3.2.7 ListViewc s dng th hin mt danh sch cc thng tin theo tng cell. Mi cell thng thng c load ln t mt file XML c c nh trn s lng thng tin v loi thng tin cn c th hin. th hin c mt list thng tin ln mt screen th cn phi c 3 yu t chnh:1) Data Source : Data Source c th l mt ArrayList, HashMap hoc bt k mt cu trc d liu kiu danh sch no2) Adapter : Adapter l mt class trung gian gip nh x d liu trong Data Source vo ng v tr hin th trong ListView. Chng hn, trong Data Source c mt trng name v trong ListView cng c mt TextView th hin trng name ny. Tuy nhin, ListView s khng th hin th d liu trong Data Source ln c nu nh Adapter khng gn d liu vo cho i tng hin th3) ListView : ListView l i tng hin th cc thng tin trong Data Source ra mt cch trc quan v ngi dng c th thao tc trc tip trn . 3.2.8 TextViewTextView c tc dng l hin th vn bn.

Trong on m trn, Android:text="" dng ghi on text mun th hin, Android:textColor="" nh dng mu ch, Android:textSize="" kch c ch, Android:gravity="" dng canh chnh cho on text. Nu mun tm hiu thm, hy g Android: sau nhn Crtl+ Space tm hiu thm v cc thuc tnh ca n3.2.9 EdiTextTrong Android i tng EditText c s dng nh mt TextField hoc mt TextBox. Gi tr Android:singleLine bng false, edittext s l 1 Texbox, ngc li n l 1 Textfield.

3.2.10 CheckBoxNhn hai gi tr true hoc false. i tng CheckBox cho php chn nhiu item cng mt lc.

XML:

Hnh 3.2: CheckBox3.2.11 MenuOption

to mt MenuOption ta to bng code v tp tin XML, di y chng ta dng XML

Khai bo bng code XML:

//

X l khai bo menuOption trong MainActivity:

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true};

Hnh 3.3: MenuOption

3.2.12 ContextMenuContextMenu c s dng hin th cc tu chn khi ngi dng nhn di vo mt Button trn mn hnh. to mt ContextMenu ta cng c 2 cch ging nh to MenuOptions trn ch khc tn phng thc.Phng thc: onCreateContextMenu( ContextMenu menu, View v, ContextMenuInfo menuInfo);s c gi v truyn vo 3 tham s l:

ContextMenu: i tng add cc context menu item View: i tng ni m xy ra s kin ContextMenuInfo: Cho bit v tr xy ra s kin trong ListView.

Hnh 3.4 : Context Menu3.2 INTENT

Intent l cu ni gia cc Activity (ng dng Android thng bao gm nhiu Activity, mi Activity hot ng c lp vi nhau v thc hin nhng cng vic khc nhau). Intent chnh l ngi a th, gip chng ta triu gi cng nh truyn cc d liu cn thit thc hin mt Activity t mt Activity khc.Hnh3.5 :Hot ng ca Intent

Ph bin nht trong Intents l vic lin kt d liu gia cc thnh phnng dng, Intents c dng bt u, dng li v chuyn tip gia cc Activities trong ng dng. m mt ng dng khc trong mt ng dng c sn th chng ta gi startActivity nh sau: startActivity(myIntent);Intent intent = new Intent();

intent.setClassName("ten_package","ten_lop_ben_trong_package"); startActivity(intent);3.3 SQLITE

SQLite l mt dng c s d liu tng t Mysql c im ca SQLite l gn nh v n gin. Chng trnh gm 1 file duy nht dung lng cha ti 500kb, khng cn ci t, khng cu phi cu hnh hay khi ng m c th s dng ngay c. D liu database cng c la tr mt file duy nht. Khng c khi nim user password hay quyn hn trong SQLite database

SQLite khng thch hp vi nhng h thng ln, nhng quy m va v nh th n t ra l CSDL mnh v khng h yu km v chc nng v tc . Vi cc c im trn SQLite c s dng nhiu trong vic pht trin ng dng v l s la chn ph hp cho ngi mi bt u pht trin ng dng.

d dng thao tc vi SQLite chng ta c th dng trnh duyt Firefox v ti plugin SQLite ti link: http://code.google.com/p/sqlite-manager/3.4 JSONJSON (JavaScript Object Notation) c nh ngha d theo ngn ng JavaScript, tiu chun ECMA-262 nm 1999, cu trc l mt nh dng vn bn n gin vi cc trng d liu c lng vo nhau. JSON c s dng trao i d liu gia cc thnh phn ca mt h thng tng thch vi hu ht cc ngn ng C, C++, C#, Java, JavaScript, Perl, PythonVic c v ghi nh dng JSON c tch hp sn trong Android SDK (n nm trong th vin org.json) JSONObject: i tng qun l JSON dng mt Object.

JSONArray: i tng qun l JSON dng tp hn cc Object hoc Array.

JSONStringer: i tng chuyn d liu JSON thnh dng chui.

JSONTokener: chuyn i i tng JSON (chun RFC-4627) m ho chui mt thnh i tng tng ng.CHNG 4XY DNG NG DNG

4.1 Tng quan v ng dng - Cc video phim c qun l thng qua server Youtube v My api

- ng dng thc hin ly thng tin ca cc video thng qua My api, Youtube api v play thng qua th vin player ca Youtube ,hoc tm kim video theo t kha thng qua Youtube api tm kim

- T ng lu li lch s cc video xem

- Ngi dng c th thm thng tin video vo yu thch,chia s link video ,bo li video

- Lch s video v video yu thch s c lu tr trong database client

- H tr 2 ngn ng : ting Anh & ting Vit

4.2 S lung d liuHnh 4.1 : S lung d liu

1 Admin xy dng cc playlist th loi phim thng qua trang web youtube.com

2 Youtube.com s cho admin thng tin v cc playlist

3 Admin cp nhp cc playlist ny vo My api

4 Client thc hin gi kt ni ln My api ly d liu Admin cp nht trn

5 My api cung cp d liu cho client

6 Da vo d liu My api cung cp ( playlistID,keyXT), client c th kt ni n Youtube api ly ra danh sch cc video

7 Youtube api cung cp danh sch cc video cho client

8 Client thc hin play video da vo thng tin youtube api cung cp ( videoID ) thng qua th vin Youtube player9 Ngi dng c th lu li thng tin video yu thch,h thng t ng lu li lch s video xem ,nhng thng tin ny s c cp nht database client

10 Database client cung cp danh sch thng tin video ngi dng lu li,lch s video xem11 Khi gp link li ( video b xa, ch video t ch private,cht lng km) ,hoc ngi dng mun yu cu thm phim ,th c th lin h admin thng qua chc nng report link li hoc yu cu phim

12 Ngi dng c th chia s phim cho bn b thng qua chc nng chia s4.3 Thit k ng dng

4.3.1 Xy dng cc Model AlbumModel Lu tr thng tin v 1 th loi phim,client s dng cc model ny trong qu trnh (6) ca s ,vi cc thuc tinh

Icon : nh i din cho

Title : Tiu

ChannelId : PlaylistID trn server Youtube

Key : Key c dng kt ni vi Youtube api ( dng trong qu trnh (6) )

VideoModel Lu tr thng tin v 1 video ,c s dng trong qu trnh (7),(9)

VideoID : VideoID ca video trn server Youtube

Title : Tiu

Thumbnail : nh i din

InfoResultAlbum Lu tr thng tin v page video ca playlist

Youtube api chia danh sch video trong 1 playlist thnh cc page ( mi page c ti a 50 video ) .Nu s lng video nhiu th,thng tin cc video sau s c y sang page api khc,api ny c xc thc bng parameter pageToken,c th ly c thng s ca pageToken da vo page api trc thng qua bin nextToken

NextToken : Thng tin pageToken ca page video sau

TotalResult: S lng video trong Playlist

Database client lu tr thng tin video xem,video ngi dng thm vo yu thch

_Id: s th t ( tng t ng)

VideoId : VideoID

Thumbnail: nh i din

Title : tiu 4.3.2 Thit k giao dinGiao din c chia thnh 3 mn hnh chnh:

Mn hnh hin th danh sch th loi phim

S dng Component GridView ( dng li ) hin th

Mi Item ca GridView tng ng vi 1 AlbumModel, c qun l thng qua class AlbumAdapter

Hnh 4.2 : Giao din ng dng Mn hnh hin th danh sch video

S dng Component ListView ( dng danh sch ) hin th

Mi Item ca ListView tng ng vi 1 VideoModel,c qun l thng quan class VideoAdapter

Hnh 4.3 : Giao din chc nng ngi dng Mn hnh khi ang play 1 video

ng dng thc hin play 1 video thng qua 1 th vin player ca YoutubeHnh 4.4 : Mn hnh khi ang xem video4.4 Xy dng cc chc nng trong ng dng H tr 2 ngn ng ting Anh v ting Vit

T ng lu li lch s video xem

Lu li thng tin video yu thch

Cho php chia s link video

Bo li

Tm kim thng tin video thng qua t kha4.5.Cc th vin bn ngoi c dng universal-image-loader-1.9.2.jar : Th vin thc hin v load nh i din ( ca album,video )

YouTubeAndroidPlayerApi.jar : Th vin thc hin player 1 video t Youtube

KT LUN V HNG PHT TRIN

Sau mt thi gian tm hiu ti "Tm hiu Android v pht trin ng dng xem phim online" nhm chng em thc hin c ti v hon thnh ng d kin. Vi mc ch l tm hiu v h iu hnh Android , bn cnh l tm hiu v nm bt ngn ng lp trnh Android t xy dng v pht trin ng dng xem phim online nhm chng em thu c nhng kt qu nh mong i.

Trong qu trnh tm hiu l thuyt v Android chng em thu c cc kt qu bc u nh sau:

Sau qu trnh tm hiu v nghin cu ti, cc thnh vin trong nhm nm c cch m mt ng dng Android chy trn in thoi. Bit v nm vng qu trnh to mt project hon chnh trong lp trnh android

Hiu v s dng c cc lp i tng phng thc h tr lp trnh trn nn Android

Hiu v a vo thc nghim c ch lm vic Client - Server nhn d liu v video

Nm c cch s dng SQLite lu d liu trong lp trnh androidV ng dng, nhm chng em lm vic nghim tc trong vic xy dng ng dng cng nh tm hiu v Android v hon thnh c ng dng xem phim online. ng dng hin ti c th hot ng n nh c th a vo s dng thc t

Do thi gian tng i ngn cng vi kin thc cn hn ch nn nhm chng em vn cha c thi gian tm hiu thc s su sc v h iu hnh Android cng nh lp trnh Android, do vy ng dng xem Video online vn cn nhiu hn ch. Trong thi gian ti nhm s c gng pht trin thm ng dng ngy cng thn thin v d s dng

Hng pht trin ca ti:Trong thi gian ti nhm s tip tc nghin cu v nng cp thm nhiu chc nng khc cho ng dng nh chc nng bnh lun, like, tng tc gia ngi s dng vi nhau

Ngoi ra nhm s vn tip tc nghin cu v tm hiu su sc hn cc kin thc lin quan ti h iu hnh android xy dng thm nhiu ng dng khc nh : Chat, gi tin nhn hnh, chi game qua bluetooth

Nhm chng em hi vng s vn tip tc nhn c s hng dn cng nh gip t pha thy c c th hon thin ng dng, ngoi ra nhm cn c mong mun pht trin ng dng ny cho cc h iu hnh khc nh: Window phone, IOS

Trong qu trnh thc hin ti Nhm chng em c gng tm hiu ti liu qua nhiu phng thc tng hp kin thc, hc hi t thy c bn b hon thnh c bi bo co ny.

Nhm chng em xin gi li cm n su sc ti thy c gip nhm hon thnh ti. Trong bi bo co khng trnh khi cn nhiu thiu st mong nhn c li gp ca thy c nhm chng em ngy cng hon thin hnNhm chng em xin chn thnh cm n qu thy c!

H ni Thng 12 nm 2014

TI LIU THAM KHO

Hng dn s dng Api ca Youtube : https://developers.google.com/youtube/ Hng dn xy dng ng dng android

http://developer.android.com/ Custom listViewhttp://android.vn/threads/lesson-5-customize-listview.24126/ Ci t mi trng lp trnhhttp://developer.android.com/sdk/index.html S dng Jsonhttp://hmkcode.com/android-send-json-data-to-server/ Cc Trang khc:https://duythanhcse.wordpress.com/category/lap-trinh-android/http://stackoverflow.com/http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/ .Item GirdView

Chc nng ngi dng

Item ListView

Xy dng ng dng xem phim online 30