Chuong 1-Beginning Android 4 Application

Embed Size (px)

DESCRIPTION

Beginning Android 4 Application

Citation preview

  • Thangit14.blogspot.com [email protected]

    1

    Chapter1: Getting Started with android programming

    Nhng iu bn s hc trong chng ny:

    - Android l g?

    - Android version v tnh nng ca n

    - Kin trc ca android

    - Cc thit b Android

    - Android Market application store

    - Ci t tools v SDK

    - To ng dng Android u tin

    Cho mng n th gii android! Khi ti bt u vit cun sch u tin v android( khong nm

    2011), ti tuyn b rng trong th trng smartphone ca U.S, android xp th 2 sau RIMs

    Blackberry v vt qua Apples Iphone. Ngay sau khi quyn sch ny c in n, comScore( t chc hng

    u th gii v nh gi trong th gii s v mt ngun tin cy ca digital marketing intelligence) bo

    co rng Android vt qua Blackberry tr thnh mt nn tng smartphone c a chung nht ti

    US

    Vi thng trc, Google pht hnh Android 3.0, gi l Honeycomb. Vi Android 3.0, trong b

    SoftWare Developer Kit mi ny, Google tp trung vo gii thiu nhng tnh nng designed cho nhng

    thit b mn hnh rng, c bit l my tnh bng. Nu bn vit ng dng cho Android SmartPhone,

    Android 3.0 khng thc s hu dng, mt s tnh nng mi khng h tr smartphone. Cng thi im

    pht hnh Android 3.0, Google bt u lm vic vi version tip theo ca Android, m c th s dng c

    my tnh bng v smartphone. Vo thng 10 nm 2011 google pht hnh Android 4.0, c gi l

    Ice Cream Sandwich, v chnh l version m quyn sch ny tp trung vo.

    Trong chapter ny, bn tm hiu xem Android l g, v iu g hp dn c lp trnh vin v nh

    sn xut . Bn s hc cch lp trnh ng dng Android u tin, v lm cch no nhn c nhng

    tools cn thit v ci t chng c th test ng dng ca bn trong b m phng Android 4.0. V cui

    chng, bn s c trang b nhng kin thc c bn m bn cn phi c c th nghin cu nhng k

    thut tinh vi hn v nhng th thut developing your next killer Android Application.

    Android l g?

    Android l mt h iu hnh trn mobile, c pht trin trn c s ca h iu hnh Linux. Ban

    u n c pht trin bi mt cng ty c cng tn l : Android,Inc. Vo nm 2005, nh mt phn chin

    lc ca vic gia nhp vo th trng mobile, Google mua li Android v tip qun cng vic pht trin

    ( cng nh l i ng pht trin i km).

    Google mun Android tr nn m v min ph. V l do o, hu ht code ca Android u c

    pht hnh di dng Open Source Apache License, iu c ngha l bt k ngi no mun s dng

    android ch vic ti v b ci t Android. Hn na, cc nh cung cp( thng l cc nh sn xut phn

    cng ) c th thm nhng phn m rng c quyn vo Android v customize Android to nn nhng

  • Thangit14.blogspot.com [email protected]

    2

    s khc bit so vi cc sn phm khc. M hnh pht trin n gin lm cho Android rt hp dn v thu

    ht s quan tm ca rt nhiu nh cung cp. iu ny c bit ng vi cc cng ty b nh hng bi

    hin tng Iphone ca Apple, mt sn phm cc k thnh cng to nn cuc cch mng ca nn cng

    nghip di ng. Trong cc cng ty y bao gm c Motorola v SonyEricson , cc cng ty m trong nhiu

    nm pht trin h iu hnh trn mobile ca ring h. Khi m Iphone c pht hnh, cc nh sn

    xut cn li phi tranh ginh tim ra cch ti sinh sn phm ca h. V h thy Android nh l mt

    gii php h s tip tc design phn cng v s dng android lm h iu hnh. u im chnh ca vic

    s dng Android l n s cung cp mt cch tip cn thng nht lp trnh mt ng dng. Lp trnh

    vin ch cn lp trnh vi Android, v nhng ng dng ca h c th chy trn nhiu thit b khc nhau

    min l cc thit b s dng Android. Trong th gii smartphone, phn mm l thnh phn quan trng

    nht ca chui thnh cng. Cc nh sn xut thit b v th nhn thy Android l hi vng ln nht

    thch thc li s tn cng ca Iphone.

    Android Version:

    Android tri qua kh nhiu phin bn update t khi n c pht hnh. Bng 1-1 hin th cc

    phin bn khc nhau ca Android.

    Vo thng hai nm 2011, Google pht hnh Android 3.0, mt phin bn dnh cho my tnh bng,

    h tr nhng thit b mn hnh rng. Nhng thay i quan trng trong phin bn Android 3.0 nh sau:

    - Giao din ngi dng c ti u cho my tnh bng.

    - 3D desktop vi cc tin ch mi.

    - Ci tin multi-tasking

    - Nhng tnh nng mi ca web browser, nh l tabbed browsing, form auto-fill, bookmark

    synchronization, and private browsing.

    - H tr multi-core processors

    Cc application c vit bi version trc 3.0 u tng thch vi cc thit b ang s dng

    Android 3.0. Cc ng dn Android 3.0 m s dng cc tnh nng mi trong phin bn 3.0 s khng chy

  • Thangit14.blogspot.com [email protected]

    3

    c trn cc thit b dng Android c hn. m bo rng cc ng dng Android c th chy trn tt

    c version ca cc thit b, bn phi chc chn mnh ch s dng nhng tnh nng c h tr trn tng

    phin bn Android c th.

    Vo thng 10 nm 2011, Google pht hnh phin bn 4.0, phin bn mang tt c cc tnh nng

    c gii thiu trong Android 3.0 vo smartphone, cng vi mt s nhng tnh nng mi nh nhn din

    khun mt, theo di v iu khin data s dng. Near Field Communication(NFC ) . . .

    Nt c trng ca Android

    V android l open source v min ph cho cc nh pht hnh ty bin, do khng c phn cng

    c nh hoc s thit lp cu hnh phn mm. Tuy nhin Android h tr cc tnh nng sau:

    - Storage: S dng SQLite, mt c s d liu quan h rt gn lu tr. S c tho lun c

    th trong Chng 6.

    - Connectivity: h tr GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth( bao gm A2DP v

    AVRCP), Wifi, LTE, v WiMax. Chng 8 s tho lun c th v vn ny.

    - Mesaging: H tr c SMS v MMS . Chng 8 s tho lun chi tit.

    - Web Browser: Da trn open source WebKit, cng vi cng ngh Chrome;s V8 JavaScript

    - Media Support: Support H.263, H.264( trong 3GP v MP4), MPEG-4 SP, AMR, AMR-WB (in

    3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, WAV, JPEG,

    PNG, GIF, and BMP

    - Hardware support: Cm bin gia tc, Camera, Digital Compass, Proximity Sensor, and GPS

    - Multi touch

    - Multi tasking

    - Flash support

    - Tethering: H tr chia s kt ni Internet nh l mt wired/wireless hostpot.

    Cu trc ca Android.

    hiu cch hot ng ca Android, hy xem hnh 1-1, trong cho thy cc lp khc nhau ca

    h iu hnh Android.

    Android OS c chia thnh 5 section trong 4 layer.

    - Linux kernel: y l nhn ca Android. Lp ny c cc trnh iu khin thit b cp thp cho

    cc thnh phn phn cng khc nhau ca mt thit b Android

    - Libraries: Lp ny bao gm tt c code cung cp cc tnh nng chnh ca Android OS. V d

    nh SQLite library cung cp database h tr cho cc ng dng c th s dng n lu tr

    d liu. Hay nh l WebKit library cung cp nhng hm dng cho web browsing.

    - Android runtime: Ti cng lp vi libraries, Android runtime cung cp mt tp cc core

    library m cho php cc lp trnh vin vit ng dng Android s dng Java. Android runtime

    cng bao gm cc my o Dalvik, cho php mi ng dng Android chy trn proccess ca n,

    vi instance ca Dalvik(Cc ng dng Android c bin dch vo Dalvik c th chy) (c

    ngha l Dalvik s to ra my o v chy ng dng ca bn trn ). Dalvik l mt my o c

    bit c thit k c bit cho Android v ti u ha cho cc thit b di ng chy bng pin

    vi b nh v CPU hn ch.

  • Thangit14.blogspot.com [email protected]

    4

    - Application framework: a ra nhng kh nng khc nhau ca Android OS cho developer m

    h c th a vo app ca h.

    - Application: L tng trn cng, bn s thy nhng app lin quan n thit b Android( nh

    l Phone, Contact, Browser .. . ), cng nh cc ng dng m bn ti v ci t t Android

    Market. Bt k mt ng dng no m bn vit u c t v tr ny.

    Android Devices in the Market

    Cc thit b s dng Android c rt nhiu hnh dng v kch thc. Cho n thng 11 nm 2011,

    Android OS c cung cp trn cc thit b sau:

    - Smartphones

    - Tablets

    - E-reader devices

    - Netbook

    - MP4 players

    - Internet TVs

  • Thangit14.blogspot.com [email protected]

    5

    Hnh 1-2 ( tri qua phi ) l Samsung Galaxy S II, Motorola Atrix 4G, HTC EVO 4G

    inch

    Mt thit b ph bin khc m cc nh sn xut tp trung vo l my tnh bng. Tables c 2 loi

    kch thc: 7 inchs v 10 inchs, o theo ng cho. Hnh 1-3 l Samsung Galaxy Tab 10.1 v Asus Eee

    Pad Transformer TF101, c hai u chy Android 3.

    Ngoi in thoi thng minh v my tnh bng, Android cn bt u xut hin trong cc thit b

    chuyn dng nh l sch in t. Hnh 1-4 l Barnes and Nobles NOOK Color (tri) v Amazons Kindle

    Fire(phi ), c hai u l sch in t mu s dng Android OS

  • Thangit14.blogspot.com [email protected]

    6

    Ngoi cc thit b di ng ph bin, Android cng dn dn tm ra cch vo phng khch ca

    bn. Lava, mt cng ty ca Thy in ang pht trin TV s dng Android, c gi l Scandinavia

    Android TV( Hnh 1-5).

    Google ang nh cc vo smart TV c quyn c nn tng da trn Android v lin kt vi cc

    cng ty nh Intel, Sony, Logitech. Hnh 1-6 l Sonys Google TV.

  • Thangit14.blogspot.com [email protected]

    7

    Trong khi vit ti liu ny, Samsung Galaxy Nexus (Hnh 1-7) l thit b duy nht chy Android 4.0.

    Tuy nhin Google ha rng cc thit b hin c ( v d nh Nexus S) c th nng cp c ln Android

    4.0. V khi bn ang c cun sch ny, c th c mt lot cc thit b chy Android 4.0.

    The Android Market

    Ging nh cp trc , mt trong nhng yu t chnh quyt nh n s thnh cng ca

    mt nn tng smartphone chnh l nhng ng dng m n h tr. R rng l t s thnh cng ca

    Iphone cho thy ng dng ng vai tr sng cn cho mt nn tng mi thnh cng hay tht bi. Thm

    vo , vic lm cho cc ng dng n c vi ngi dng cng l mt vic v cng quan trng.

    Nh vy trong thng 8 nm 2008, Google cng b Android Market, mt ch in t ca ng

    dng cho thit b s dng Android, v n sn sng cho ngi dng ti v vo thng 11 nm 2008. S dng

    Market application c ci t sn trn thit b Android, ngi dng c th d dng dowload trc tip

    nhng ng dng ca bn th 3 ln thit b ca h. C ng dng min ph v tr ph u c h tr trn

    Android Market, mc d cc ng dng tr tin ch c sn cho ngi dng mt s nc do cc vn

    php l.

    Ging nh th, ti mt s cc quc gia, ngi dng c th mua nhng ng dng tr ph t

    Android Market, nhng lp trnh vin khng th bn ti quc gia . V d nh ti thi im vit ti liu

    ny, ngi dng ti n c th mua ng dng t Android Market, nhng lp trnh vin ti n li

    khng th bn apps ca h trn Android Market. iu ngc li cng c th ng. Nh ti Hn Quc,

    ngi dng khng th mua c ng dng, nhng cc lp trnh vin ti y li c th bn cc ng dng

    trn Android Market

    NOTE: Chng 12 tho lun v Android Market v lm cch no bn c th bn c ng dng

    trn .

    Cng ng lp trnh vin Android.

  • Thangit14.blogspot.com [email protected]

    8

    Vi Android version 4, c mt cng ng lp trnh vin rt ln trn ton th gii. iu ny lm

    cho vic tm ra gii php cho cc vn gp phi cng nh vic tm kim cc lp trnh vin c cng mc

    ch chia s tng v ng dng v trao i kinh nghim tr nn d dng hn rt nhiu.

    Di y l mt vi cng ng m bn c th tham gia gip bn gii quyt nhng vn khi

    lm vic vi Android:

    - Stack Overflow(www.stackoverflow.com): Stack Overflow l mt site cho php t cu hi v

    tr li dnh cho cc lp trnh vin. Nu bn c cu hi v Android, rt c th l mt ai ti

    Stack Overflow c th tho lun vi cu hi ging nh th v ai khc cung cp cu tr

    li. Ngon nht l cc lp trnh vin khc c th vote cho cu tr li tt nht, v th bn c

    th bit cu tr li no l ng tin cy.

    - Google Android Tranning(http://developer.android.com/training/index.html). Google a

    ra trang web Android Tranning bao gm mt s cc lp hc hu ch c nhm theo ch .

    Ti thi im vit bi, cc lp hc ch yu l cha cc n m hu ch cho cc lp trnh vin

    Android khi h bt u vi nhng iu c bn. Khi bn hc nhng iu c bn trong cun

    sch ny, ti ngh bn nn xem nhng lp hc .

    - Android Discuss ( http://groups.google.com/group/android-discuss ). Android Discuss l mt

    group tho lun c cung cp b Google s dng Google Group. Ti y, bn c th tho

    lun v cc kha cnh khc nhau ca vic lp trnh Android. Group ny c gim st cht ch

    bi Android team ti Google, v th n l ni rt tt lm r nhng nghi ng ca bn v hc

    nhng mo v th thut mi.

    Thu thp cc cng c cn thit.

    By gi bn bit Android l g v cc tnh ca n gm nhng g, bn c l rt nng lng mun

    bt u vit mt vi ng dng. Trc khi bn vit ng dng u tin, bn cn phi dowload nhng cng

    c cn thit v SDKs

    Phn ci t mnh s khng dch v phin bn m bi vit thc hin khng ging nh by gi, v

    cc bn hon ton c th ci t theo cc video trn mng hay ngay trn Google Android Tranning

    c nhc n trc .

    Bn cn phi c

    - JDK: Java SE Development Kit

    - Eclipse: B cng c dng son tho ging nh Netbean

    - ADT: Android Developer Tool

    - Android SDK: Android Software Development Kit

    Bn c th tham kho : http://www.tinhte.vn/threads/cai-dat-android-sdk-eclipse-va-thiet-bi-gia-

    lap-avd-android-virtual-device-tren-windows.1413899/

    Hoc ti link sau vi ton b cng c cn thit (ch cn ti thm JDK)

    http://developer.android.com/sdk/index.html

  • Thangit14.blogspot.com [email protected]

    9

    To ng dng Android u tin.

    Vi tt c nhng cng c ti v, by gi chng ta s bt u lm vic vi Android. Ging nh

    trong tt c cc sch lp trnh, v d u tin s dng ph bin l chng trnh Hello Word. oee mu s

    cung cp cho bn mt ci nhn chi tit v cc thnh phn khc nhau to nn mt Android project.

  • Thangit14.blogspot.com [email protected]

    10

  • Thangit14.blogspot.com [email protected]

    11

  • Thangit14.blogspot.com [email protected]

    12

    Ch : Bn cn c t nht mt du chm (.) trong package name. c ngh t theo tn min

    vi th t ngc li. Nu cng ty ca bn c tn min learn2develop.net th backage name s l

    net.learn2develop.HelloWord.

    7. Trong Package Explorer( pha bn tri) bn tm n res/layout/ main.xml file (Figure 1-28)

    8. main.xml file nh ngha user interface(UI) (giao din) ca ng dng. default view l

    Layout. thay i UI bn click vo tab main.xml nh figure 1-29.

  • Thangit14.blogspot.com [email protected]

    13

  • Thangit14.blogspot.com [email protected]

    14

  • Thangit14.blogspot.com [email protected]

    15

    Cc bn v y dow source code nh http://www.wrox.com/WileyCDA/WroxTitle/Beginning-

    Android-4-Application-Development.productCd-1118199545,descCd-DOWNLOAD.html

    Nu cc bn copy my dng trn m b bo li @string/hello th cc bn c th xa @string/ i.

    V lm cc bc tip theo. Sau ny s hiu v sao n b li.

  • Thangit14.blogspot.com [email protected]

    16

  • Thangit14.blogspot.com [email protected]

    17

  • Thangit14.blogspot.com [email protected]

    18

  • Thangit14.blogspot.com [email protected]

    19

    My o AVD no nn c s dng test ng dng ca bn?

    Nh li rng trc bn to mt vi my o AVD s dng AVD manager. Vy th bn nn s

    dng my o no? Eclipse s kim tra taget m bn chn( khi bn to project), soanhs n vi danh

    sch cc AVD m bn to. AVD u tin ph hp s chy ng dng ca bn.

    Nu bn c nhiu hn mt AVD ph hp ang chy trc khi debug ng dng, Eclipse s hin th

    bn chn( Figure 1-34)

    to mt Android Project s dng Eclipse, bn cn cunng cp cc thng tin sau:

    Trong Android, mt activity l mt ca s m bao gm cc user interface ca application. Mt

    application co th khng c hay mt vi activities. Ly v d nh mt app bao gm mt activity:

    HelloWorldActivity. HelloWorldActivity l mt entry point (im khi u) ca application, hin th khi

    mt application c start. Chng 2 s tho lun chi tit v activities.

  • Thangit14.blogspot.com [email protected]

    20

    Trong v d n gin ny, bn thay i file main.xml hin th string This is my first Android

    Application v mt button. File main.xml bao gm user interface ca activity, c hin th khi

    HelloWorldActivity c load.

    Khi bn debug application vi my o Android, ng dng c t ng ci t trn my o .

    Phn tch mt ng dng Android.

    By gi bn c ng dng HelloWorld, by gi hy chia ct cc b phn ca mt Android

    project v kim tra tt c cc thnh phn .

    u tin, hy lu n cc cc file khc nhau to nn mt project Android trong Package Explore(

    Figure 1-35)

    - Src Bao gm cc file source .java cho project ca bn.

    Trong v d ny, ch c 1 file l HelloWorldActivity.java.

    y l source file cho activity. Bn s vit code cho ng

    dng ca bn trong file ny. File Java c lit k bn

    trong tn ca package.

    - Gen - Cha file R.java , l mt file complier-generated

    m tham chiu vi tt c resource c trong project. Bn

    khng nn sa i file ny. Tt c resource trong project

    t ng bin dch vo lp ny bn c th gi chng .

    - Android 4.0 library cha mt file: android.jar. File ny

    cha tt c cc class libraries cn thit cho mt ng dng

    Android.

    - Assets Cha tt c asset c s dng bi applicate, v

    d nh HTML, text files, database

    - Bin Cha cc file c built bi ADT trong qu trnh

    build xy ra. c bit, n to ra .apk file( Android

    Package). Mt file .apk l mt application binary ( c

    chuyn sang nh phn) ca Android application. N bao

    gm tt c mi th cn thit chy mt Android

    application.

    - Res Cha tt c resource c s dng trong

    application. N cn cha mt vi nhng folder khc:

    drawable-, layout, v values. Chng 3 s

    tho lun k hn v vic lm cch no bn c th h tr

    cc thit b vi phn gin v cu hnh khc nhau.

    - AndroidManifest.xml y l file manifest cho Android

    application. y bn ch ra cc permision cn thit cho

    ng dng ca bn, cng nh cc tnh nng khc ( v d

    nh intent-filters, receivers). Chng 2 s tho lun v

    cch s dng AndroidManifest.xml mt cch chi tit hn.

  • Thangit14.blogspot.com [email protected]

    21

    File main.xml nh ngha user interface cho activity. Ch on in m di y.

    @string trong trng hp ny s gi n file strings.xml c lu tr trong res/values. V th

    @string/hello s gi ra hello string c nh ngha trc trong file strings.xml.

    Bn nn lu tr nhng hng string tron file strings.xml v tham chiu n chng s dng

    @string. Vi cch ny, nu bn cn localize (a phng ha) ng dng ca bn sang mt ngn ng khc,

    bn ch cn to ra mt bn copy v sa gi tr ca nhng string trong file strings.xml. Figure 1-36 to ra

    mt folder c tn l value-fr vi file strings.xml cha string hello trong ting French.

    Nu ngi dng ti nhng ng dng tng t trn mt in thoi v cu hnh hin th Frencd

    l ngn ng mc nh, ng dng ca bnaj s t ng hin th hellostring bng ting French.

  • Thangit14.blogspot.com [email protected]

    22

    Mt file quan trng tip theo trong Android projects l manifest file. Hy xem ni dung ca

    AndroidManifest.xml :

    File AndroidManifest.xml bao gm cc thng tin chi tit v ng dng.

    - N xc nh package name ca application : net.learn2develop.HelloWorld.

    - Version code ca application l 1. Gi tr ny ngi dng xc nh version ca ng dng

    ca bn. N cng c th s dng bn lp trnh xc nh khi no mt application cn phi

    c cp nht.

    - Version name ca ng dng l 1.0. y l string value ch yu dng hin th cho ngi

    dng. Bn nn t theo dng .. (t ln n nh, c l cc bn cng

    quen vi kiu t ny ri.)

    - Thuc tnh Android:minSdkversion ca th xc nh version nh nht ca OS m

    c th chy c application.

    - ng dng c nh ic_launcher.png trong folder drawable.

    - Tn ca ng dng l string app_name c nh ngha trong strings.xml

    - Ch c 1 activity trong ng dng v c biu din bi HelloWorldActivity.java. Label hin th

    cho activity chnh l application name

    - Trong activity c mt element c tn l

    + Action ca intent filter c tn l android.intent.action.MAIN ch ra rng activity ny

    hot ng nh l im khi u ca ng dng.

    + Category ca intent-filter c tn l android.intent.category.LANUCHER ch ra rng

    application c th chy t devices launcher icon. Chapter 2 s tho lun thm v intents.

  • Thangit14.blogspot.com [email protected]

    23

    Khi bn thm file v folder vo prject ca bn, Eclipse s t ng pht sinh ni dung ca file

    R.java, ni dung ca n s ging nh di y:

    Bn khng c h tr sa cha ni dung ca file R.java. Eclipse s t ng sinh ni dung ca

    file khi bn thay i project ca bn.

    Note: Nu bn xa file R.java, Eclipsce s to li cho bn ngay lp tc. Lu rng Eclipse c th

    to ra file R.java, project ca bn phi khng c error. Nu bn nhn ra rng Eclipse khng to li cho bn

    ssau khi bn xa file R.java, th hy kim tra li project. Code c th cha errors hay l file Xml c th

    khng wellform( AndroidManufest.xml, main.xml . . .).

    Cui cng, code kt ni activity vi UI(main) chnh l method setContentView(), nm trong file

    HelloWorldActivity.java :

  • Thangit14.blogspot.com [email protected]

    24

    y R.layout.main tham chiu n file main.xml trong folder res/layout. Khi bn thm file XML

    vo folder res/layout, filenames s t ng c sinh trong R.java. Method onCreate() l mt trong

    nhng method c gi ngay lp tc khi mt activity c load. Chng 2 s tho lun thm v vn

    ny.

    Tng kt

    Chng ny cung cp cho bn mt ci nhn tng quan, ngn gn v Android, v nhn mnh

    mt s nhng kh nng ca n. Nu bn lm theo nhng hng dn trn v vic ti v ci t cng c

    v Android SDK, bn c mt h thng lm vic - , mt trong l kh nng pht trin thm nhng

    ng dng Android th v hn nhiu so vi HelloWorld. Trong chng ti, bn s c tm hiu cc khi

    nim v activities, intents, v vai tr rt quan trng ca chng trong Android.