Giáo trình tìm hiểu lập trình trên android | Trường Đại học Phú Yên

Giáo trình tìm hiểu lập trình trên android | Trường Đại học Phú Yên. Tài liệu gồm 82 trang, giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Tìm hiu lp trình trên Android
SVTH: Phạm Quang Đo Nguyn Hng Nam 1
Mc lc
Chương 1. GII THIU ANDROID .............................................................................................................5
1.1 Khái nim v Android: ...........................................................................................................................5
Android khác vi các h điu hành chy trên thiết b di đng khác ........5 1.1.1
Đặc tính m ca Android:..........................................................................................................6 1.1.2
1.2 Kiến trúc ca Android:...........................................................................................................................6
Android Platform: ............................................................................................................................7 1.2.1
Tng Linux Kernel: ..........................................................................................................................7 1.2.2
Native Libraries: ...............................................................................................................................7 1.2.3
Tng Runtime: ....................................................................................................................................8 1.2.4
Tng Application Framework: ...............................................................................................8 1.2.5
Chương 2. MÔI TRƯNG LP TRÌNH.................................................................................................10
2.1 Gii thiu:......................................................................................................................................................10
2.2 Android SDK: ..............................................................................................................................................10
2.3 Máy o Dalvik: ...........................................................................................................................................11
2.4 Các gói Java cn thiết: ..........................................................................................................................11
2.5 Thành phn chính ca Eclipse khi to ng dng tn Android: ........................12
2.6 Thành phn quan trng trong mt Android Project: .................................................13
2.7 Chu k sng ca ng dng Android .........................................................................................13
Chu k sng thành phn...........................................................................................................14 2.7.1
Activity Stack ....................................................................................................................................14 2.7.2
Các trng ti ca chu k sng............................................................................................15 2.7.3
Chu k sng ca ng dng .....................................................................................................15 2.7.4
Các s kin trong chu k sng ca ng dng ..........................................................16 2.7.5
Thi gian sng ca ng dng...............................................................................................16 2.7.6
Thi gian hin th ca Activity ............................................................................................17 2.7.7
Các m thc thi ............................................................................................................................17 2.7.8
2.8 Các công c cn thiết đ lập tnh trên Android và hưng dẫn cài đặt:.......17
Các công c cn thiết đ lp tnh: ...................................................................................17 2.8.1
Các ớc cài đặt .............................................................................................................................17 2.8.2
2.9 Bt đu lp trình 1 cơng trình hello world đầu tiên: ...........................................20
2.10 Thành phn giao din Android................................................................................................23
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 2
View ....................................................................................................................................................23 2.10.1
VIEWGROUP: ...............................................................................................................................23 2.10.2
2.11 Các Control ..............................................................................................................................................26
BUTTON...........................................................................................................................................26 2.11.1
LISTVIEW .......................................................................................................................................27 2.11.2
EDITTEXT.......................................................................................................................................29 2.11.3
TEXTVIEW .....................................................................................................................................30 2.11.4
CHECKBOX.....................................................................................................................................30 2.11.5
MENUOPTION .............................................................................................................................31 2.11.6
CONTEXTMENU.........................................................................................................................32 2.11.7
2.12 y biến control (custom control):......................................................................................32
2.13 Ví d s dng Listview...................................................................................................................35
Chương 4. LP TRÌNH TRÊN ANDROID ...........................................................................................38
4.1 Gii Thiu Intents: .................................................................................................................................38
Thành phn Intents:....................................................................................................................38 4.1.1
S dng Intents khởi động cho Activities: ................................................................39 4.1.2
Intent kng ng minh thc thi Activity: .............................................................40 4.1.3
Intent tưng minh thc thi Activity ...............................................................................40 4.1.4
S dng Intents gi đi tng đip ra ngoài ng dng hoc Activity:...41 4.1.5
4.2 Gii Thiu Adapters: ............................................................................................................................43
Mt s Adapter : .............................................................................................................................43 4.2.1
S dng Adapter hin th d liu: ....................................................................................43 4.2.2
4.3 Ví d s dụng Intent đ liên lc gia các Activity: ........................................................44
4.4 K thut lưu trữ d liu trong Android.................................................................................46
4.5 Lưu trữ d liu ng dng một cách đơn gin: .................................................................47
To và lưu dữ liu vi Share Preferences: ................................................................47 4.5.1
Truy xut Shared Preferences.............................................................................................47 4.5.2
4.6 Lưu và đọc các tp tin trong Android: ....................................................................................49
Truy xut các tp tin trong Resources: ........................................................................50 4.6.1
Các công c qun lý tp tin ....................................................................................................50 4.6.2
4.7 Cơ sở d liu trong Android...........................................................................................................50
Gii thiu SQLite: ..........................................................................................................................51 4.7.1
Cursors và Content Values: ...................................................................................................51 4.7.2
S dng SQLiteOpenHelper:.................................................................................................52 4.7.3
Truy xut và tạo Cơ sở d liu không dùng SQLiteHelper:..........................52 4.7.4
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 3
Truy vấn cơ sở d liu ..............................................................................................................52 4.7.5
Ly kết qu t Cursors ..............................................................................................................53 4.7.6
Thêm, cp nht và xóa dòng:................................................................................................53 4.7.7
Thao tác trên cơ s d liu Android ..............................................................................54 4.7.8
Gii thiu Content Providers ...............................................................................................56 4.7.9
4.8 Mt ng dng Demo s dng ContentProvider đ qun lý ch: .....................59
4.9 Maps, Geocoding, Location Based Services.......................................................................59
S dng dch v đnh v ............................................................................................................59 4.9.1
Cài đặt tn môi trưng gi lp vi Test Providers ...........................................59 4.9.2
Cp nht v tvi Emulator Location Providers .................................................59 4.9.3
Chn mt Location Provider ................................................................................................60 4.9.4
Tìm mt Providers có sn.......................................................................................................60 4.9.5
Tìm kiếm mt Provider theo tiêu c ............................................................................61 4.9.6
Tìm mt đa ch (Finding Your Location)...................................................................61 4.9.7
Theo dõi s di chuyn (Tracking Movement) ........................................................62 4.9.8
S dng Goecoder.........................................................................................................................63 4.9.9
Reverse Geocoding..................................................................................................................63 4.9.10
Forward Geocoding ................................................................................................................64 4.9.11
ng MapView ...........................................................................................................................65 4.9.12
ng MapActivity ....................................................................................................................66 4.9.13
S dng Overlay ........................................................................................................................67 4.9.14
ng MapController ..............................................................................................................68 4.9.15
C ý khi to mt ng dng có s dng MapView ........................................69 4.9.16
4.10 m vic trên Background.........................................................................................................70
Gii Thiu Services .................................................................................................................70 4.10.1
To Service ....................................................................................................................................71 4.10.2
Khi chy, điu khin và tương tác vi Sercice ...............................................71 4.10.3
Kết ni Activities vi Services........................................................................................72 4.10.4
Gii thiu Thông báo trong Android.........................................................................74 4.10.5
Gii thiu Notification Manager ...................................................................................74 4.10.6
To thông báo .............................................................................................................................75 4.10.7
Kích hot thông báo ...............................................................................................................76 4.10.8
4.11 S dng các Media APIs ................................................................................................................76
Chơi nhạc ........................................................................................................................................77 4.11.1
Ghi âm ...............................................................................................................................................78 4.11.2
4.12 S dng máy nh ................................................................................................................................79
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 4
Cài đặt điu khin camera .................................................................................................80 4.12.1
S dng máy nh ......................................................................................................................80 4.12.2
Chp nh ........................................................................................................................................81 4.12.3
Chương 5. TNG KT ......................................................................................................................................82
5.1 Kết qu đạt được:....................................................................................................................................82
5.2 ng phát trin của đ tài: ..........................................................................................................82
5.3 i liu tham kho: ................................................................................................................................82
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 5
Chương 1. GII THIU ANDROID
Như chúng ta biết, hin ti đã có hơn nửa nhân loi s dng y di đng đ
thoi và giao tiếp qua các mng không y. Con s 3 t ngưi này s còn tăng lên và
y di đng càng ngày càng "thông minh" vi nhiu chc ng và dịch v rt hp dn,
cho nên th trường y di đng thông minh s t xa y vi tính trong mt tương lai
rt gn... Vì thế vic lp trình trên thiết b di đng ngày càng ph biến và phát trin rt
mnh m. T nn tng ngun mở, Google đã cho ra mt Android chy trên các
thiết b di đng. Android rt nhiu công c và dng c min phí đ nghiên cu và
phát trin phn mm trên nn tng ca nó. Tài liu y s giúp chúng ta m hiu v
Android và cách viết mt ng dng trên nn tng y.
1.1 KHÁI NIM V ANDROID:
Trước hết Android là nn tng phn mm da trên ngun m Linux OS
(Kernel 2.6) cho y di đng và nhng phn mm trung gian (middleware) đ h tr
các ng dng người s dng cần đến. Mt cách định nghĩa không quá chuyên n
thì có th coi Android là tên mt nn tng m cho thiết b di đng ca Google (gm h
điu hành, middleware và mt s ng dng cơ bản). Android s đương đu vi mt s
h điu nh (viết tt HDH) dành cho thiết b di dng khác đang hâm nóng thị
trường như Windows Mobile, Symbian và nhn là c OS X (iPhone).
Có th nói mt cách nôm na rng Android là mt HDH chy trên thiết b di đng,
cũng giống như Windows, Linux hay Mac chạy trên y vi tính vy.
Android khác vi các h điu hành chy trên thiết b di đng khác 1.1.1
Android đã thu t được s c ý ca gii công ngh khp toàn cu khi
đa con ca Google s dng giy phép ngun mở. Đó là một sn phm kết
tinh t ý tưởng ca Khi Liên minh thiết b cm tay m do Google dn đu,
gm 34 tnh vn với các công ty hàng đu v công ngh và di đng toàn cu
như Qualcomm, Intel, Motorola, Texas Instruments và LG Electronics, các nhà
mng như T-Mobile, Sprint Nextel, NTT DoCoMo và China Mobile.
Các nhà phát trin có th s dng min phí b Kit Android Software
Development đ xây dng các ng dng ca nh.
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 6
Đặc nh m ca Android: 1.1.2
Android đưc y dng đ cho phép các nhà phát trin đ to ra các ng
dng di đng hp dn, tn dng tt c tính năng một chiếc đin thoi đã cung
cp. được xây dng đ đưc thc s m. Ví d, mt ng dng có th gi bt
k chức ng lõi của đin thoại như thực hin cuc gi, gi tin nhn văn bản,
hoc bng cách s dng y nh, cho phép các nhà phát trin đ to ra nhiu
ng dng phong phú hơn cho người ng (điu y hin ca có trên Windows
Phone7 ca Microsoft). Android đưc xây dng trên ngun m Linux
Kernel. Hơn nữa, s dng mt y o tu chỉnh được thiết kế để ti ưu hóa
b nh và tài nguyên phn cng trong mt môi trường di động.
Android không phân biệt giữa các ứng dng i của đin thoi và các
ứng dụng ca bên thba. Tt c có th được y dựng đ có thể truy cập bng
kh năng của một thiết b di đng cung cấp cho người sdụng với một di rng
các ứng dng và dịch vụ. Với các thiết bị xây dựng trên Android, người dùng
có thể hoàn toàn thích ứng với điện thoi đến lợi ích của họ. Vi Android, mt
nhà phát trin có th y dng mt ng dng cho phép người dùng xem v trí
ca bn ca h và được cnh báo khi h đang có trong vùng ph cn cho h
một cơ hội đ kết ni.
Android cung cp truy cập đến một lot các t vin công chữu ích và
có th được sử dng đ xây dựng các ứng dng phong phú. Ví d, Android cho
phép các thiết b giao tiếp với nhau to điều kin cho đng đng rich-to-peer
trong ứng dụng hội. Ngoài ra, Android bao gồm một tập hợp đầy đcông c
đã được xây dựng ng phu, với vic cung cp nn tng phát trin, với ng
sut cao và cái nhìn sâu vào các ứng dụng .
1.2 KIN TRÚC CA ANDROID:
"Understanding Android" là cách ta tiếp cn lp trình Android và thu hiu
kiến trúc h thng ca nó. Chúng ta có th không cn hiu rõ cu trúc ca mt HDH
nhưng Chúng ta vn có th lp trình mt ng dụng trên HDH đó, đây là điu nhà
sn xut mun khi release SDK vi mt framework có sn ca họ. Như cng ta biết
điều y cũng mặt tt và xu. Framework là mt tng cao cp dành cho lp trình
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 7
viên, nó đu có gii hn ca nó, cng ta có th ch th lp trình nhng ng dng
ph biến nhưng không nên tiến ti nhng ng dng cao cp đi sâu vào hệ thng ca
HDH. Theo ch của mình, trước khi bt đu hc Android, chúng ta nên nghiên cu
qua bn thân HDH Android, cng ta không cn phi hiu rõ như thể nào, mc đích
quan trng nht ca cng ta là có cái nhìn chung và toàn din nht v Android.
Android Platform: 1.2.1
Bao gm HDH Android đy đ tính ng, các ng dng và các tng
trung gian đ developer có th m rng, y chnh hoc thêm vào các
component ca h.
Có 4 tng cơ bản trong HDH Android: Application Framework, Android
Runtime, Native Libraries, Linux Kernel ... Mi tng làm vic đu nh s giúp
đ ca tng bên dưới.
Tng Linux Kernel: 1.2.2
Đây là nhân ca HDH Android, mi x ca h thng đu phi thông
qua tng này. Linux Kernel cung cp các trình điu khin thiết b phn cng
(driver) như: camera, USB, Wifi, Bluetooth, Display, Power Management ...
Android da trên Linux phn bn 2.6 la chn các tính năng ct lõi như bảo
mt, qun lý b nh, qun lý tiến trình, mng stack và các trình điu khin phn
cng. Kernel hot đng như một lp trừu tượng gia phn cng và phn mm
còn li ca h thng.
Native Libraries: 1.2.3
System C library - có ngun gc t h thng thư vin chun C (libc), điu
chnh các thiết b nhúng trên Linux.
Media Libraries - m rng t PacketVideo's OpenCORE; thư vin h tr
playback và recording ca nhiu định dng video và image ph biến:
MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
Surface Manager - qun vic hin th và kết hợp đ ha 2D và 3D.
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 8
LibWebCore - Android dùng li webkit engine cho vic render trình duyt
mc định ca HDH Android browser và cho dng web nhúng (như HTML
nhúng)
SGL - 2D engine
3D libraries - Thư vin 3D da trên OpenGL ES 1.0 API, có nâng cp tăng
tc "hardware 3D acceleration"
FreeType - render bitmap và vector font.
SQLite - qun lý database ca ng dng.
Tng Runtime: 1.2.4
Mi ng dng Android chy trên mt proccess riêng ca Dalvik VM
(máy o). Dalvik được viết đ chy nhiu y o cùng mt lúc mt cách hiu
qu trên cùng mt thiết b.
y o Dalvik thc thi các file mang đnh dng .dex (Dalvik Excutable),
đnh dng y là đnh dng đã được ti ưu hóa đ ch chiếm mt vùng nh va
đ i và nh nht có th. VM chy các class (đã được compile trước đó bởi
1trình biên dch ngôn ng Java), s dĩ VM chạy được c class này nh
chương trình DX tool đã convert các class sang đnh dng .dex.
Tng Application Framework:
1.2.5
Đây là tng Google xây dng cho các developer đ phát trin các
ng dng ca h trên Android, ch bng cách gi các API có sn Google đã
viết đ s dng các tính năng ca phn cng không cn hiu cu trúc bên
i.
Bng cách cung cp mt nn tng phát trin m, Android cho các nhà phát
trin kh năng xây dựng các ng dng cc k phong phú và sáng to. Nhà pt
trin được t do tn dng các thiết b phn cứng, thông tin đa đim truy cp,
các dch v chy nn, thiết lp h thng báo thc, thêm các thông báo đ các
thanh trng thái, và nhiu, nhiu hơn nữa.
Tt c các ng dng thường gm mt b các dch v và h thng cơ bn
sau:
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 9
View UI ng đ xây dng layout ca ng dng bao gm: list view,
text field, button, dialog, form ...
Content Providers cho phép các ng dng có th truy cp d liu t
các ng dng khác (như ng dng ca ta có th ly thông tin
Contacts ca đin thoi Android), hoc đ chia s d liu ca riêng
ng dng.
Resource Manager cung cp cách thc truy cập đến non-code
resources như các asset, graphic, image, music, video ...
Notification Manager cho phép tt c các ng dng hin th thông
báo ca mình trên HDH.
Activity Manager qun vòng đi ca các ng dng.
góc nhìn của người dùng ta có thêm tng application (ng dng do
chúng ta viết), sau đây là sơ đ tng quát như hình 1.1:
1-1 Kin trúc Android
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 10
Chương 2. NG LP TNH
2.1 GII THIU:
Trong chương y s gii thiu các ng c lp trình cho Android (Android
Development Tools). Chúng ta s dn làm quen vi Eclipse và Android Development
Tool plug-in, thông qua Android SDK và công c ca nó, chy mt ng dng Android
trên Emulator(tm dch trình gi lp giao din ca Android trên PC). Vi nhng
năng đó trong tay, cng ta s tìm hiu các gói Java packages được cung cp trong
SDK giúp ng cao kh năng lp trình trên Android.
2-1 ng lp trình trong Android
2.2 ANDROID SDK:
Android SDK, viết tt ca Android Software Development Kit, th gi là
công cụ phát trin phn mm” c th đây phát trin ng dng cho Android
OS. Đến đây thì chắc các chúng ta cũng đã hiu đơn gin Google Adroid SDK là b
công c đưc chính Google y dng và pt nh min phí đến gii Developer đ h
d ng y dng và phát trin các ng dng chy được trên Android OS.
Android SDK có các đc tính sau:
Đưc phát trin và cung cp min phí
SDK Documentation
Eclipse OpenSource IDE
Coding
Debugging
Android Development Tools
(plug-in)
SDK
Emulator profile
configuration
Emulator launch
Process & file system viewing
Log viewing
Command-Line tools
File transfer tools
GSM simulation tester
Android Emulator
Multiple skins
Network connectivity options
Integrated with Eclipse via
Android Development Tools plug-
in
Android Development
Android Device
Physical phone hardware
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 11
Truy cp đến phn cng Wi-Fi.
GSM, EDGE và tính năng mạng 3G cho phép vic chuyn d liu, gi
đin hay gi tin SMS trong mạng di đng.
Gói API toàn din cho các dch v nn tng ví d như GPS.
Truy cp toàn b phn cứng điu khin đa phương tin như chơi nhc,
ghi âm hay s dng microphone và camera.
Chia s d liu trong kho d liu.
Tích hp trình duyt da trên b WebKit ( ngun m).
P2P h tr s dung Google Talk.
H tr tt đ ha 3D nh s dng OpenGL ES.
Android SDK cn phi được cài đặt đ xây dng các ng dng Android. Android
SDK bao gm tài liu tích hp HTML_base lõi chính ca Javadoc đ th hin các gói
và lp trong Java.
2.3 MÁY O DALVIK:
Mt trong nhng tnh phn quan trng ca Android y o Dalvik. Thay vì
s dng y o Java như trước kia Android s dùng y o của riêng nó được thiết kế
đ bo đm rằng đa ng dng có th chy mượt trên mt thiết b di đng.
y o Dalvik s dng i Linux đ x các chức ng mc thp bao gm
bo mt, các tiến trình, các lung và qun lý vùng nhớ. cũng có thể viết bng ng
dng C/C++ đ chy trc tiếp lên lõi Linux bên dưới. Gia phn cng và các dch v
h thng được qun lý bi y o Dalvik, là mt thành phn gia. Bng cách s
dng y o này đ chy ng dng, các nhà phát trin hoàn toàn không phi bn tâm
gì v các phn cứng bên dưới. Khi y o y chy s to ra tập tin có đuôi là .dex,
tập tin này được SDK to ra bi s chuyển đi tc lp biên dch ngôn ng Java .
2.4 CÁC GÓI JAVA CN THIT:
java.lang gói cha c lp lõi ca Java
java.io xut nhp.
java.net kết ni mng.
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 12
java.util _ cha các lp tin ích. Bao gồm: Log thường được ng đ viết
LogCat.
java.text tin ích s lý văn bản.
java.math các lp toán hc.
javax.net các lp mng.
javax.security Security-related classes.
javax.xml các lớp ln quan đến DOM-based XML.
org.apache.* các lớp liên quan đến HTTP-related.
org.xml các lớp liên quan đến SAX-based XML .
Các gói ng cho lp trình Android:
Android.appAndroid application model access
Android.contenttruy xut d liu trong Android
Android.netbao gm Uri class dùng cho vic truy xut các ni dung
khác
Android.graphics—đ ha
Android.openglcác lp OpenGL
Android.ostruy cp mức đ h thông đến i trường Android
Android.providercác lớp liên quan đến ContentProvider
Android.telephonykh năng truy cp Telephony
Android.textText layout
Android.utiltp các tin thao tác trên văn bản,bao gm XML
Android.viewthành phn UI (giao din ngưi dùng)
Android.webkitBrowser functionality
Android.widgetthành phn UI mức đ cao hơn
Trong đó các gói gần như i ca mi ng dng trên Android đó là
Android.app, Android.view và Android.content.
2.5 THÀNH PHN CHÍNH CA ECLIPSE KHI TO NG DNG TRÊN ANDROID:
i trường phát trin Rich Java bao gm trình biên dch, class autocompletion,
và tích hp Javadoc
By li code
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 13
Qun và chy Android Emulator profile
The Dalvik Debug Monitoring Service (DDMS)
Khung nhìn các tiến trình (Thread and heap views)
Qun H thng tp tin giao din (Emulator filesystem management)
Điu khin d liu và hi thoi (Data and voice network control)
Điu khin giao din (Emulator control)
Ghi li h thng và ng dng (System and application logging)
2.6 THÀNH PHN QUAN TRNG TRONG MT ANDROID PROJECT:
Activity (Android.app.Activity): đây là lp khi to giao din ng dng
ni b tn Android tương tư n MIDlet trong J2ME.
Service (Android.app.Service): cung cp các dch v liên quan đến
client/service. Mt Service s chy ngm bên ới, sau đó các client
(Activity) s kết ni và truy xut các m trên dch thông qua Interface
class.
Broadcast receiver (Android.content.BroadcastReceiver): đây mt ng
dng chy ngm dùng đ đc và cp nht thông tin trên UI, ví d như cp
nht s thay đi gi, pin...
Content Provider: cung cp chc ng truy vn d liu gia các ng dng
ca Android.
Intent: nn tng đ truyn ti các thông o. Intent đưc s dng đ gi
các thông o đi nhm khi to 1 Activity hay Service đ thc hin công
vic chúng ta mong mun.
2.7 CHU K SNG CA NG DNG ANDROID
Mt tiến trình Linux gói gn mt ng dng Android đã được to ra cho ng
dng khi codes cần được xây dng, khi chy và sn chy cho đến khi:
không ph thuc.
H thng cn ly li b nh chiếm gi cho các ng dng khác.
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 14
Mt s khác thường và đc tính cơ bản ca Android là thi gian sng ca tiến
trình ng dụng không được điu khin trc tiếp bi chính nó. Thay vào đó, nó được
xác đnh bi h thng qua mt kết hp ca:
Nhng phn ca ng dng h thng biết đang chạy.
Nhng phn đó quan trng như thế nào đi với người ng.
Bao nhiêu vùng nh chiếm nh trong hệ thng.
Chu k sng thành phn 2.7.1
Các thành phn ng dng có mt chu k sng, tc là mi thành phn t
lúc bt đu khi to và đến thời đim kết thúc, đôi lúc chúng có th là active
(visible hoc invisible) hoc inactive.
Activity Stack 2.7.2
Bên trong h thng các activity đưc qun lý như một activity stack. Khi
mt Activity mới được start, nó được đt đnh ca stack và tr thành activity
đang chạy activity trước s bên i activity mi và s không thy trong sut
quá trình activity mi tn ti.
Nếu ngưi dùng nhn t Back thì activity kết tiếp ca stack s di duyn lên
và tr thành active.
Hnh 2-2 Activity stack
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 15
Các trng thái ca chu k sng 2.7.3
Mt Activity ch yếu có 4 chu k chính sau:
Active hoc running: Khi Active là được chy trên n hình. Activity này tp
trung vào nhng thao tác của ngưi dùng trên ng dng.
Paused: Activity đưc tm dng (paused) khi mt focus nhưng người ng
vn trông thy. nghĩa một Activity mi trên nhưng không bao ph
đy n hình. Mt Activity tm dng còn sng nhưng có thể b kết thúc bi
h thng trong trường hp thiếu vùng nh.
Stopped: Nếu nó hoàn toàn bao ph bi Activity khác. vn n trng thái và
thông tin thành viên trong nó. Người dùng không thy nó và tng b loi b
trong trường hp h thng cn vùng nh cho tác v khác.
Killed: Khi h thng b thiếu b nh, s gii phóng các tiến trình theo
nguyên tc ưu tiên. Các Activity trng thái stop hoc paused cũng có th b
gii phóng và khi được hin th li thì các Activity này phi khởi đng li
hoàn toàn và phc hi li trng thái trước đó.
Chu k sng ca ng dng 2.7.4
Trong mt ng dng Android có cha nhiu thành phn và mi thành
phn đu có mt chu trình sng riêng. Và ng dng ch đưc gi là kết thúc khi
Hnh 2-3 Chu k sng ca Activity
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 16
tt c các thành phn trong ng dng kết thúc. Activity là mt tnh phn cho
phép người ng giao tiếp vi ng dng. Tuy nhn, khi tt c các Activity kết
thúc và người dùng không còn giao tiếp được vi ng dng na nhưng không
có nghĩa là ng dng đã kết thúc. Bi vì ngoài Activity là thành phn có kh
năng tương tác người dùng thì n có các tnh phn không có kh ng tương
tác với người ng như là Service, Broadcast receiver. nghĩa nhng thành
phn không tương tác người ng có th chy background dưới s giám sát ca
h điu hành cho đến khi người ng t tt chúng.
Các s kin trong chu k sng ca ng dng 2.7.5
Nếu mt Activity được tm dng hoc dng hn, h thng có th b
thông tin khác ca t vùng nh bi vic gi hàm finish() ca nó, hoc đơn
gin giết tiến tnh của nó. Khi nó được hin th ln na với ngưi dùng, nó
phi được hoàn toàn restart và phc hi li trạng ti trước. Khi mt Activity
chuyn qua chuyn li gia các trng thái, phi báo vic chuyn ca bng
vic gi m transition.
Tt c các phương thức là nhng c ni cng ta có th override đ
làm tương thich công vic trong ng dng khi thay đi trng ti. Tt c các
Activity bt buc phi có onCreate() đ khi to ng dng. Nhiu Activity s
cũng hin thc onPause() đ xác nhn vic thay đi d liu và mt khác chun
b dng hoạt đng với ni dùng.
Thi gian sng ca ng dng 2.7.6
By phương thc chuyn tiếp đnh nghĩa trong chu kỳ sng ca mt
Activity. Thi gian sng ca mt Activity din ra gia lần đu tiên gi
onCreate() đến trng thái cui ng gi onDestroy(). Mt Activity khi to
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 17
toàn b trng ti toàn cc trong onCreate(), và gii phóng các tài nguyên đang
tn ti trong onDestroy().
Thi gian hin th ca Activity 2.7.7
Visible lifetime ca mt activity din ra gia ln gi mt onStart() cho
đến khi gi onStop(). Trong sut khong thời gian này người dùng có th thy
activity tn n hình, có nghĩa là nó không b foreground hoc đang tương tác
với người dùng. Giữa 2 phương thức ngưi dùng có th duy trì tài nguyên đ
hin th activity đến người dùng.
Các hàm thc thi 2.7.8
OnCreate(...): hàm này được gi khi lớp Activity được khi to, ng đ
thiết lp giao din ng dng và thc thi những thao tác cơ bản.
onStart(): hàm y đưc gi khi lp ng dng xut hin trênn hình.
onResume(): m đưc gi ngay sau OnStart hoc khi người dùng focus
ng dng, hàm y s đưa ng dng lên top n hình.
onPause(): hàm được gi khi h thng đang focus đến 1 activity trước đó.
onStop(): hàm được gi khi mt activity khác đưc khởi đng và focus.
onRestart(): đưọc gi khi ng dng chuyn sang onStop(), nhưng muốn khi
đng li bng onStart().
2.8 CÁC NG C CN THI LP TRÌNH TRÊN ANDROID NG DN
T:
Các ng c cn thiết đ lp trình: 2.8.1
H điu hành: Window XP, Win7
Công c lp trình: Eclipse version 3.6 hoc cao hơn
B công c Android SDK
Các bước cài đt: 2.8.2
Cng ta có 3 bước chính: Cài đặt Eclipse IDE, Plugin Android cho Eclipse
và cuối cùng là cài đặt Emulator (Android SDK). đưc chia thành các
c nh sau:
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 18
c 1: Vào đa ch http://www.eclipse.org/downloads/ download phn
mn lp trình eclipse. Chn phn Eclipse IDE cho c nhà pt trin
JAVA.
Sau khi đã download eclipse chúng ta giải nén ra đ s dng.
Sau khi gii nén xong cho chy cơng tnh.
Khi chy, chương trình mun lưu thư mục làm vic, chúng ta chọn thư
mc tùy ý và nhn OK.
c 2: truy cp
www.oracle.com/technetwork/java/javase/downloads/index.html đ
downloads JAVA SE . Chn downloads JAVA SE > vào thư mục cha
JAVA SE và tiến hành cài đt.
c 3: Truy cp developer.Android.com/sdk/index.html . Và tiến nh
download chn phn Android-sdk_r10-windows.zip .
Sau khi downloads vào thư mục cha phn download gii nén và chn
SDK Manager.exe chy chương trình t đng update.
Vào chương trình eclipse chọn menu Help -> Install New Software
Name: Google Android ( tùy ý)
Location : http//:dl-ssl-google.com/Android/eclipse
Sau đó chọn OK.
Hình 2-5
Chn Sellect All , chn vào các ô như hình 2.7
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 19
Hình 2-6
Sau đó cơng trình t động cp nht nhng bn cần đ cài đặt.
Tiếp theo bn chn nhng phn cn thiết đ cài đt hoc chn tt c ->
Next -> chn I accept the terms of the license agreements ->finsh.
Lưu ý khi cài: windows mun chng thc, c này chn OK.
Sau khi đã cài xong chọn Restsart Now.
c 4: Khi chương tnh đã cài đt phn Android SDK hoàn tt và khi
đng li chương trình, vào Window ->Prefeneces đ ch đưng dn ca
file SDK.
Hình 2-7
c này chọn đường dn tới thư mục cha Android SDK. Sau đó chọn
Apply.
c 5: các ớc trên đã cu hình Android SDK trong eclipse , bước
tiếp theo s đi cấu hình đ to ra 1 máy o cha h điu hành Android.
Vào Window -> Android SDK and AVD Manager.
Tìm hiu lp trình trên Android
SVTH: Phm Quang Đo Nguyn Hoàng Nam 20
Ca s Android SDK and AVD Manager hin ra , chương trình đang t
đng cp nht. Sau đó chọn Virtual Decvices -> New.
Name ( Tên y o) : AndroidMobile2.2
Size (kích thước b nh ): 512 MB
Chn Create AVD
nh 2-8
Đã tạo thành công máy o , tiếp theo chọn Start…..-> Launch đ khởi đng
y o.
Hình 2-9
2.9 BU LP TRÌNH 1 U TIÊN:
Lưu ý đây tôi dùng Emulator bảng 2.2.
M Eclipse
| 1/82

Preview text:

Tìm hiểu lập trình trên Android Mục lục  Chương 1.
GIỚI THIỆU ANDROID .............................................................................................................5
1.1 Khái niệm về Android: ...........................................................................................................................5 1.1. 1
Android khác với các hệ điều hành chạy trên thiết bị di động khác ........5 1.1. 2
Đặc tính mở của Android:..........................................................................................................6
1.2 Kiến trúc của Android:...........................................................................................................................6 1.2. 1
Android Platform: ............................................................................................................................7 1.2. 2
Tầng Linux Kernel: ..........................................................................................................................7 1.2. 3
Native Libraries: ...............................................................................................................................7 1.2. 4
Tầng Runtime: ....................................................................................................................................8 1.2. 5
Tầng Application Framework: ...............................................................................................8 Chương 2.
MÔI TRƯỜNG LẬP TRÌNH.................................................................................................10
2.1 Giới thiệu:......................................................................................................................................................10
2.2 Android SDK: ..............................................................................................................................................10
2.3 Máy ảo Dalvik: ...........................................................................................................................................11
2.4 Các gói Java cần thiết: ..........................................................................................................................11
2.5 Thành phần chính của Eclipse khi tạo ứng dụng trên Android: ........................12
2.6 Thành phần quan trọng trong một Android Project: .................................................13
2.7 Chu kỳ sống của ứng dụng Android .........................................................................................13 2.7. 1
Chu kỳ sống thành phần...........................................................................................................14 2.7. 2
Activity Stack ....................................................................................................................................14 2.7. 3
Các trạng thái của chu kỳ sống............................................................................................15 2.7. 4
Chu kỳ sống của ứng dụng .....................................................................................................15 2.7. 5
Các sự kiện trong chu kỳ sống của ứng dụng ..........................................................16 2.7. 6
Thời gian sống của ứng dụng...............................................................................................16 2.7. 7
Thời gian hiển thị của Activity ............................................................................................17 2.7. 8
Các hàm thực thi ............................................................................................................................17
2.8 Các công cụ cần thiết để lập trình trên Android và hướng dẫn cài đặt:.......17 2.8. 1
Các công cụ cần thiết để lập trình: ...................................................................................17 2.8. 2
Các bước cài đặt .............................................................................................................................17
2.9 Bắt đầu lập trình 1 chương trình hello world đầu tiên: ...........................................20 2.10
Thành phần giao diện Android................................................................................................23
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 1
Tìm hiểu lập trình trên Android 2.10. 1
View ....................................................................................................................................................23 2.10. 2
VIEWGROUP: ...............................................................................................................................23 2.11
Các Control ..............................................................................................................................................26 2.11. 1
BUTTON...........................................................................................................................................26 2.11. 2
LISTVIEW .......................................................................................................................................27 2.11. 3
EDITTEXT.......................................................................................................................................29 2.11. 4
TEXTVIEW .....................................................................................................................................30 2.11. 5
CHECKBOX.....................................................................................................................................30 2.11. 6
MENUOPTION .............................................................................................................................31 2.11. 7
CONTEXTMENU.........................................................................................................................32 2.12
Tùy biến control (custom control):......................................................................................32 2.13
Ví dụ sử dụng Listview...................................................................................................................35 Chương 4.
LẬP TRÌNH TRÊN ANDROID ...........................................................................................38
4.1 Giới Thiệu Intents: .................................................................................................................................38 4.1. 1
Thành phần Intents:....................................................................................................................38 4.1. 2
Sử dụng Intents khởi động cho Activities: ................................................................39 4.1. 3
Intent không tường minh thực thi Activity: .............................................................40 4.1. 4
Intent tường minh thực thi Activity ...............................................................................40 4.1. 5
Sử dụng Intents gửi đi thông điệp ra ngoài ứng dụng hoặc Activity:...41
4.2 Giới Thiệu Adapters: ............................................................................................................................43 4.2. 1
Một số Adapter : .............................................................................................................................43 4.2. 2
Sử dụng Adapter hiển thị dữ liệu: ....................................................................................43
4.3 Ví dụ sử dụng Intent để liên lạc giữa các Activity: ........................................................44
4.4 Kỹ thuật lưu trữ dữ liệu trong Android.................................................................................46
4.5 Lưu trữ dữ liệu ứng dụng một cách đơn giản: .................................................................47 4.5. 1
Tạo và lưu dữ liệu với Share Preferences: ................................................................47 4.5. 2
Truy xuất Shared Preferences.............................................................................................47
4.6 Lưu và đọc các tập tin trong Android: ....................................................................................49 4.6. 1
Truy xuất các tập tin trong Resources: ........................................................................50 4.6. 2
Các công cụ quản lý tập tin ....................................................................................................50
4.7 Cơ sở dữ liệu trong Android...........................................................................................................50 4.7. 1
Giới thiệu SQLite: ..........................................................................................................................51 4.7. 2
Cursors và Content Values: ...................................................................................................51 4.7. 3
Sử dụng SQLiteOpenHelper:.................................................................................................52 4.7. 4
Truy xuất và tạo Cơ sở dữ liệu không dùng SQLiteHelper:..........................52
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 2
Tìm hiểu lập trình trên Android 4.7. 5
Truy vấn cơ sở dữ liệu ..............................................................................................................52 4.7. 6
Lấy kết quả từ Cursors ..............................................................................................................53 4.7. 7
Thêm, cập nhật và xóa dòng:................................................................................................53 4.7. 8
Thao tác trên cơ sở dữ liệu Android ..............................................................................54 4.7. 9
Giới thiệu Content Providers ...............................................................................................56
4.8 Một ứng dụng Demo sử dụng ContentProvider để quản lý sách: .....................59
4.9 Maps, Geocoding, Location Based Services.......................................................................59 4.9. 1
Sử dụng dịch vụ định vị ............................................................................................................59 4.9. 2
Cài đặt trên môi trường giả lập với Test Providers ...........................................59 4.9. 3
Cập nhật vị trí với Emulator Location Providers .................................................59 4.9. 4
Chọn một Location Provider ................................................................................................60 4.9. 5
Tìm một Providers có sẵn.......................................................................................................60 4.9. 6
Tìm kiếm một Provider theo tiêu chí ............................................................................61 4.9. 7
Tìm một địa chỉ (Finding Your Location)...................................................................61 4.9. 8
Theo dõi sử di chuyển (Tracking Movement) ........................................................62 4.9. 9
Sử dụng Goecoder.........................................................................................................................63 4.9.1 0
Reverse Geocoding..................................................................................................................63 4.9.1 1
Forward Geocoding ................................................................................................................64 4.9.1 2
Dùng MapView ...........................................................................................................................65 4.9.1 3
Dùng MapActivity ....................................................................................................................66 4.9.1 4
Sử dụng Overlay ........................................................................................................................67 4.9.1 5
Dùng MapController ..............................................................................................................68 4.9.1 6
Chú ý khi tạo một ứng dụng có sử dụng MapView ........................................69 4.10
Làm việc trên Background.........................................................................................................70 4.10. 1
Giới Thiệu Services .................................................................................................................70 4.10. 2
Tạo Service ....................................................................................................................................71 4.10. 3
Khởi chạy, điều khiển và tương tác với Sercice ...............................................71 4.10. 4
Kết nối Activities với Services........................................................................................72 4.10. 5
Giới thiệu Thông báo trong Android.........................................................................74 4.10. 6
Giới thiệu Notification Manager ...................................................................................74 4.10. 7
Tạo thông báo .............................................................................................................................75 4.10. 8
Kích hoạt thông báo ...............................................................................................................76 4.11
Sử dụng các Media APIs ................................................................................................................76 4.11. 1
Chơi nhạc ........................................................................................................................................77 4.11. 2
Ghi âm ...............................................................................................................................................78 4.12
Sử dụng máy ảnh ................................................................................................................................79
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 3
Tìm hiểu lập trình trên Android 4.12. 1
Cài đặt điều khiển camera .................................................................................................80 4.12. 2
Sử dụng máy ảnh ......................................................................................................................80 4.12. 3
Chụp ảnh ........................................................................................................................................81 Chương 5.
TỔNG KẾT ......................................................................................................................................82
5.1 Kết quả đạt được:....................................................................................................................................82
5.2 Hướng phát triển của đề tài: ..........................................................................................................82
5.3 Tài liệu tham khảo: ................................................................................................................................82
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 4
Tìm hiểu lập trình trên Android
Chương 1. GIỚI THIỆU ANDROID
Như chúng ta biết, hiện tại đã có hơn nửa nhân loại sử dụng máy di động để
thoại và giao tiếp qua các mạng không dây. Con số 3 tỉ người này sẽ còn tăng lên và
máy di động càng ngày càng "thông minh" với nhiều chức năng và dịch vụ rất hấp dẫn,
cho nên thị trường máy di động thông minh sẽ vượt xa máy vi tính trong một tương lai
rất gần... Vì thế việc lập trình trên thiết bị di động ngày càng phổ biến và phát triển rất
mạnh mẽ. Từ nền tảng mã nguồn mở, Google đã cho ra mắt Android chạy trên các
thiết bị di động. Android có rất nhiều công cụ và dụng cụ miễn phí để nghiên cứu và
phát triển phần mềm trên nền tảng của nó. Tài liệu này sẽ giúp chúng ta tìm hiểu về
Android và cách viết một ứng dụng trên nền tảng này.
1.1 KHÁI NIỆM VỀ ANDROID:
Trước hết Android là nền tảng phần mềm dựa trên mã nguồn mở Linux OS
(Kernel 2.6) cho máy di động và những phần mềm trung gian (middleware) để hổ trợ
các ứng dụng mà người sử dụng cần đến. Một cách định nghĩa không quá chuyên môn
thì có thể coi Android là tên một nền tảng mở cho thiết bị di động của Google (gồm hệ
điều hành, middleware và một số ứng dụng cơ bản). Android sẽ đương đầu với một số
hệ điều hành (viết tắt là HDH) dành cho thiết bị di dộng khác đang hâm nóng thị
trường như Windows Mobile, Symbian và dĩ nhiên là cả OS X (iPhone).
Có thể nói một cách nôm na rằng Android là một HDH chạy trên thiết bị di động,
cũng giống như Windows, Linux hay Mac chạy trên máy vi tính vậy. 1.1.
1 Android khác với các hệ điều hành chạy trên thiết bị di động khác
Android đã thu hút được sự chú ý của giới công nghệ khắp toàn cầu khi
đứa con của Google sử dụng giấy phép mã nguồn mở. Đó là một sản phẩm kết
tinh từ ý tưởng của Khối Liên minh thiết bị cầm tay mở do Google dẫn đầu,
gồm 34 thành viên với các công ty hàng đầu về công nghệ và di động toàn cầu
như Qualcomm, Intel, Motorola, Texas Instruments và LG Electronics, các nhà
mạng như T-Mobile, Sprint Nextel, NTT DoCoMo và China Mobile.
Các nhà phát triển có thể sử dụng miễn phí bộ Kit Android Software
Development để xây dựng các ứng dụng của mình.
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 5
Tìm hiểu lập trình trên Android 1.1.
2 Đặc tính mở của Android:
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứng
dụng di động hấp dẫn, tận dụng tất cả tính năng một chiếc điện thoại đã cung
cấp. Nó được xây dựng để được thực sự mở. Ví dụ, một ứng dụng có thể gọi bất
kỳ chức năng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản,
hoặc bằng cách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra nhiều
ứng dụng phong phú hơn cho người dùng (điều này hiện chưa có trên Windows
Phone7 của Microsoft). Android được xây dựng trên mã nguồn mở Linux
Kernel. Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưu hóa
bộ nhớ và tài nguyên phần cứng trong một môi trường di động.
Android không phân biệt giữa các ứng dụng lõi của điện thoại và các
ứng dụng của bên thứ ba. Tất cả có thể được xây dựng để có thể truy cập bằng
khả năng của một thiết bị di động cung cấp cho người sử dụng với một dải rộng
các ứng dụng và dịch vụ. Với các thiết bị xây dựng trên Android, người dùng
có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ. Với Android, một
nhà phát triển có thể xây dựng một ứng dụng cho phép người dùng xem vị trí
của bạn bè của họ và được cảnh báo khi họ đang có trong vùng phụ cận cho họ
một cơ hội để kết nối.
Android cung cấp truy cập đến một loạt các thư viện công cụ hữu ích và
có thể được sử dụng để xây dựng các ứng dụng phong phú. Ví dụ, Android cho
phép các thiết bị giao tiếp với nhau tạo điều kiện cho đồng đẳng rich-to-peer
trong ứng dụng xã hội. Ngoài ra, Android bao gồm một tập hợp đầy đủ công cụ
đã được xây dựng công phu, với việc cung cấp nền tảng phát triển, với năng
suất cao và cái nhìn sâu vào các ứng dụng .
1.2 KIẾN TRÚC CỦA ANDROID:
"Understanding Android" là cách mà ta tiếp cận lập trình Android và thấu hiểu
kiến trúc hệ thống của nó. Chúng ta có thể không cần hiểu rõ cấu trúc của một HDH
nhưng Chúng ta vẫn có thể lập trình một ứng dụng trên HDH đó, đây là điều mà nhà
sản xuất muốn khi release SDK với một framework có sẵn của họ. Như chúng ta biết
điều này cũng có mặt tốt và xấu. Framework là một tầng cao cấp dành cho lập trình
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 6
Tìm hiểu lập trình trên Android
viên, nó đều có giới hạn của nó, chúng ta có thể chỉ có thể lập trình những ứng dụng
phổ biến nhưng không nên tiến tới những ứng dụng cao cấp đi sâu vào hệ thống của
HDH. Theo cách của mình, trước khi bắt đầu học Android, chúng ta nên nghiên cứu
qua bản thân HDH Android, chúng ta không cần phải hiểu rõ nó như thể nào, mục đích
quan trọng nhất của chúng ta là có cái nhìn chung và toàn diện nhất về Android. 1.2. 1 Android Platform:
Bao gồm HDH Android đầy đủ tính năng, các ứng dụng và các tầng
trung gian để developer có thể mở rộng, tùy chỉnh hoặc thêm vào các component của họ.
Có 4 tầng cơ bản trong HDH Android: Application Framework, Android
Runtime, Native Libraries, Linux Kernel ... Mỗi tầng làm việc đều nhờ sự giúp
đỡ của tầng bên dưới. 1.2. 2 Tầng Linux Kernel:
Đây là nhân của HDH Android, mọi xử lý của hệ thống đều phải thông
qua tầng này. Linux Kernel cung cấp các trình điều khiển thiết bị phần cứng
(driver) như: camera, USB, Wifi, Bluetooth, Display, Power Management . .
Android dựa trên Linux phiên bản 2.6 lựa chọn các tính năng cốt lõi như bảo
mật, quản lý bộ nhớ, quản lý tiến trình, mạng stack và các trình điều khiển phần
cứng. Kernel hoạt động như một lớp trừu tượng giữa phần cứng và phần mềm
còn lại của hệ thống. 1.2. 3 Native Libraries:
 System C library - có nguồn gốc từ hệ thống thư viện chuẩn C (libc), điều
chỉnh các thiết bị nhúng trên Linux.
 Media Libraries - mở rộng từ PacketVideo's OpenCORE; thư viện hỗ trợ
playback và recording của nhiều định dạng video và image phổ biến:
MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
 Surface Manager - quản lý việc hiển thị và kết hợp đồ họa 2D và 3D.
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 7
Tìm hiểu lập trình trên Android
 LibWebCore - Android dùng lại webkit engine cho việc render trình duyệt
mặc định của HDH Android browser và cho dạng web nhúng (như HTML nhúng)  SGL - 2D engine
 3D libraries - Thư viện 3D dựa trên OpenGL ES 1.0 API, có nâng cấp tăng
tốc "hardware 3D acceleration"
 FreeType - render bitmap và vector font.
 SQLite - quản lý database của ứng dụng. 1.2. 4 Tầng Runtime:
Mỗi ứng dụng Android chạy trên một proccess riêng của Dalvik VM
(máy ảo). Dalvik được viết để chạy nhiều máy ảo cùng một lúc một cách hiệu
quả trên cùng một thiết bị.
Máy ảo Dalvik thực thi các file mang định dạng .dex (Dalvik Excutable),
định dạng này là định dạng đã được tối ưu hóa để chỉ chiếm một vùng nhớ vừa
đủ xài và nhỏ nhất có thể. VM chạy các class (đã được compile trước đó bởi
1trình biên dịch ngôn ngữ Java), sở dĩ VM chạy được các class này là nhờ
chương trình DX tool đã convert các class sang định dạng .dex. 1.2.
5 Tầng Application Framework:
Đây là tầng mà Google xây dựng cho các developer để phát triển các
ứng dụng của họ trên Android, chỉ bằng cách gọi các API có sẵn mà Google đã
viết để sử dụng các tính năng của phần cứng mà không cần hiểu cấu trúc bên dưới.
Bằng cách cung cấp một nền tảng phát triển mở, Android cho các nhà phát
triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo. Nhà phát
triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,
các dịch vụ chạy nền, thiết lập hệ thống báo thức, thêm các thông báo để các
thanh trạng thái, và nhiều, nhiều hơn nữa.
Tất cả các ứng dụng thường gồm một bộ các dịch vụ và hệ thống cơ bản sau:
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 8
Tìm hiểu lập trình trên Android
 View UI dùng để xây dựng layout của ứng dụng bao gồm: list view,
text field, button, dialog, form ...
 Content Providers cho phép các ứng dụng có thể truy cập dữ liệu từ
các ứng dụng khác (như ứng dụng của ta có thể lấy thông tin
Contacts của điện thoại Android), hoặc để chia sẻ dữ liệu của riêng ứng dụng.
 Resource Manager cung cấp cách thức truy cập đến non-code
resources như các asset, graphic, image, music, video . .
 Notification Manager cho phép tất cả các ứng dụng hiển thị thông báo của mình trên HDH.
 Activity Manager quản lý vòng đời của các ứng dụng.
Ở góc nhìn của người dùng ta có thêm tầng application (là ứng dụng do
chúng ta viết), sau đây là sơ đồ tổng quát như hình 1.1:
1-1 Kiến trúc Android
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 9
Tìm hiểu lập trình trên Android
Chương 2. MÔI TRƯỜNG LẬP TRÌNH 2.1 GIỚI THIỆU:
Trong chương này sẽ giới thiệu các công cụ lập trình cho Android (Android
Development Tools). Chúng ta sẽ dần làm quen với Eclipse và Android Development
Tool plug-in, thông qua Android SDK và công cụ của nó, chạy một ứng dụng Android
trên Emulator(tạm dịch là trình giả lập giao diện của Android trên PC). Với những kĩ
năng đó trong tay, chúng ta sẽ tìm hiểu các gói Java packages được cung cấp trong
SDK giúp nâng cao khả năng lập trình trên Android.
2-1 Môi trường lập trình trong Android Eclipse OpenSource IDE Command-Line tools  Coding •File transfer tools  Debugging •GSM simulation tester Android Development Tools Android Emulator (plug-in) •Multiple skins  SDK
•Network connectivity options  Emulator profile
•Integrated with Eclipse via
Android Development Tools plug- configuration in  Emulator launch Android Development 
Process & file system viewing  Log viewing Android Device •Physical phone hardware SDK Documentation 2.2 ANDROID SDK:
Android SDK, viết tắt của Android Software Development Kit, có thể gọi là
“công cụ phát triển phần mềm” mà cụ thể ở đây là phát triển ứng dụng cho Android
OS. Đến đây thì chắc các chúng ta cũng đã hiểu đơn giản Google Adroid SDK là bộ
công cụ được chính Google xây dựng và phát hành miễn phí đến giới Developer để họ
dễ dàng xây dựng và phát triển các ứng dụng chạy được trên Android OS.
Android SDK có các đặc tính sau:
 Được phát triển và cung cấp miễn phí
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 10
Tìm hiểu lập trình trên Android
 Truy cập đến phần cứng Wi-Fi.
 GSM, EDGE và tính năng mạng 3G cho phép việc chuyển dữ liệu, gọi
điện hay gửi tin SMS trong mạng di động.
 Gói API toàn diện cho các dịch vụ nền tảng ví dụ như GPS.
 Truy cập toàn bộ phần cứng điều khiển đa phương tiện như chơi nhạc,
ghi âm hay sử dụng microphone và camera.
 Chia sẻ dữ liệu trong kho dữ liệu.
 Tích hợp trình duyệt dựa trên bộ WebKit (mã nguồn mở).
 P2P hổ trợ sử dung Google Talk.
 Hỗ trợ tốt đồ họa 3D nhờ sử dụng OpenGL ES.
Android SDK cần phải được cài đặt để xây dựng các ứng dụng Android. Android
SDK bao gồm tài liệu tích hợp HTML_base lõi chính của Javadoc để thể hiện các gói và lớp trong Java. 2.3 MÁY ẢO DALVIK:
Một trong những thành phần quan trọng của Android là máy ảo Dalvik. Thay vì
sử dụng máy ảo Java như trước kia Android sử dùng máy ảo của riêng nó được thiết kế
để bảo đảm rằng đa ứng dụng có thể chạy mượt mà trên một thiết bị di động.
Máy ảo Dalvik sử dụng lõi Linux để xử lý các chức năng ở mức thấp bao gồm
bảo mật, các tiến trình, các luồng và quản lý vùng nhớ. Nó cũng có thể viết bằng ứng
dụng C/C++ để chạy trực tiếp lên lõi Linux bên dưới. Giữa phần cứng và các dịch vụ
hệ thống được quản lý bởi máy ảo Dalvik, nó là một thành phần ở giữa. Bằng cách sử
dụng máy ảo này để chạy ứng dụng, các nhà phát triển hoàn toàn không phải bận tâm
gì về các phần cứng bên dưới. Khi máy ảo này chạy nó sẽ tạo ra tập tin có đuôi là .dex,
tập tin này được SDK tạo ra bởi sự chuyển đổi từ các lớp biên dịch ngôn ngữ Java .
2.4 CÁC GÓI JAVA CẦN THIẾT:
 java.lang —gói chứa các lớp lõi của Java  java.io —xuất nhập.
 java.net —kết nối mạng.
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 11
Tìm hiểu lập trình trên Android
 java.util _ chứa các lớp tiện ích. Bao gồm: Log thường được dùng đề viết LogCat.
 java.text —tiện ích sử lý văn bản.
 java.math —các lớp toán học.
 javax.net —các lớp mạng.
 javax.security —Security-related classes.
 javax.xml —các lớp liên quan đến DOM-based XML.
 org.apache.* — các lớp liên quan đến HTTP-related.
 org.xml —các lớp liên quan đến SAX-based XML .
Các gói dùng cho lập trình Android:
 Android.app—Android application model access
 Android.content—truy xuất dữ liệu trong Android
 Android.net—bao gồm Uri class dùng cho việc truy xuất các nội dung khác
 Android.graphics—đồ họa
 Android.opengl—các lớp OpenGL
 Android.os—truy cập ở mức độ hệ thông đến môi trường Android
 Android.provider—các lớp liên quan đến ContentProvider
 Android.telephony—khả năng truy cập Telephony
 Android.text—Text layout
 Android.util—tập các tiện thao tác trên văn bản,bao gồm XML
 Android.view—thành phần UI (giao diện người dùng)
 Android.webkit—Browser functionality
 Android.widget—thành phần UI mức độ cao hơn
Trong đó các gói gần như là lõi của mọi ứng dụng trên Android đó là
Android.app, Android.view và Android.content.
2.5 THÀNH PHẦN CHÍNH CỦA ECLIPSE KHI TẠO ỨNG DỤNG TRÊN ANDROID:
 Môi trường phát triển Rich Java bao gồm trình biên dịch, class autocompletion, và tích hợp Javadoc  Bẫy lỗi code
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 12
Tìm hiểu lập trình trên Android
 Quản lý và chạy Android Emulator profile
 The Dalvik Debug Monitoring Service (DDMS)
 Khung nhìn các tiến trình (Thread and heap views)
 Quản lý Hệ thống tập tin giao diện (Emulator filesystem management)
 Điều khiển dữ liệu và hội thoại (Data and voice network control)
 Điều khiển giao diện (Emulator control)
 Ghi lỗi hệ thống và ứng dụng (System and application logging)
2.6 THÀNH PHẦN QUAN TRỌNG TRONG MỘT ANDROID PROJECT:
 Activity (Android.app.Activity): đây là lớp khởi tạo giao diện ứng dụng
nội bộ trên Android tương tư như MIDlet trong J2ME.
 Service (Android.app.Service): cung cấp các dịch vụ liên quan đến
client/service. Một Service sẽ chạy ngầm bên dưới, sau đó các client
(Activity) sẽ kết nối và truy xuất các hàm trên dịch thông qua Interface class.
 Broadcast receiver (Android.content.BroadcastReceiver): đây là một ứng
dụng chạy ngầm dùng để đọc và cập nhật thông tin trên UI, ví dụ như cập
nhật sự thay đỗi giờ, pin...
 Content Provider: cung cấp chức năng truy vấn dữ liệu giữa các ứng dụng của Android.
 Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi
các thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công
việc mà chúng ta mong muốn.
2.7 CHU KỲ SỐNG CỦA ỨNG DỤNG ANDROID
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng
dụng khi codes cần được xây dựng, khởi chạy và sẽ còn chạy cho đến khi:  Nó không phụ thuộc.
 Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác.
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 13
Tìm hiểu lập trình trên Android
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến
trình ứng dụng không được điều khiển trực tiếp bởi chính nó. Thay vào đó, nó được
xác định bởi hệ thống qua một kết hợp của:
 Những phần của ứng dụng mà hệ thống biết đang chạy.
 Những phần đó quan trọng như thế nào đối với người dùng.
 Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống. 2.7.
1 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ
lúc bắt đầu khởi tạo và đến thời điểm kết thúc, đôi lúc chúng có thể là active
(visible hoặc invisible) hoặc inactive. 2.7. 2 Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack. Khi
một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity
đang chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt
quá trình activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên
và trở thành active.
Hình 2- 2 Activity stack
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 14
Tìm hiểu lập trình trên Android 2.7.
3 Các trạng thái của chu kỳ sống
Hình 2-3 Chu kỳ sống của Activity
Một Activity chủ yếu có 4 chu kỳ chính sau:
 Active hoặc running: Khi Active là được chạy trên màn hình. Activity này tập
trung vào những thao tác của người dùng trên ứng dụng.
 Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người dùng
vẫn trông thấy. Có nghĩa là một Activity mới ở trên nó nhưng không bao phủ
đầy màn hình. Một Activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi
hệ thống trong trường hợp thiếu vùng nhớ.
 Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn trạng thái và
thông tin thành viên trong nó. Người dùng không thấy nó và thường bị loại bỏ
trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác.
 Killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo
nguyên tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị
giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại
hoàn toàn và phục hồi lại trạng thái trước đó. 2.7.
4 Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành
phần đều có một chu trình sống riêng. Và ứng dụng chỉ được gọi là kết thúc khi
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 15
Tìm hiểu lập trình trên Android
tất cả các thành phần trong ứng dụng kết thúc. Activity là một thành phần cho
phép người dùng giao tiếp với ứng dụng. Tuy nhiên, khi tất cả các Activity kết
thúc và người dùng không còn giao tiếp được với ứng dụng nữa nhưng không
có nghĩa là ứng dụng đã kết thúc. Bởi vì ngoài Activity là thành phần có khả
năng tương tác người dùng thì còn có các thành phần không có khả năng tương
tác với người dùng như là Service, Broadcast receiver. Có nghĩa là những thành
phần không tương tác người dùng có thể chạy background dưới sự giám sát của
hệ điều hành cho đến khi người dùng tự tắt chúng. 2.7.
5 Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ
thông tin khác của nó từ vùng nhớ bởi việc gọi hàm finish() của nó, hoặc đơn
giản giết tiến trình của nó. Khi nó được hiển thị lần nữa với người dùng, nó
phải được hoàn toàn restart và phục hồi lại trạng thái trước. Khi một Activity
chuyển qua chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó bằng việc gọi hàm transition. Hình 2-4
Tất cả các phương thức là những móc nối mà chúng ta có thể override để
làm tương thich công việc trong ứng dụng khi thay đổi trạng thái. Tất cả các
Activity bắt buộc phải có onCreate() để khởi tạo ứng dụng. Nhiều Activity sẽ
cũng hiện thực onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn
bị dừng hoạt động với người dùng. 2.7.
6 Thời gian sống của ứng dụng
Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của một
Activity. Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi
onCreate() đến trạng thái cuối cùng gọi onDestroy(). Một Activity khởi tạo
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 16
Tìm hiểu lập trình trên Android
toàn bộ trạng thái toàn cục trong onCreate(), và giải phóng các tài nguyên đang
tồn tại trong onDestroy(). 2.7.
7 Thời gian hiển thị của Activity
Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho
đến khi gọi onStop(). Trong suốt khoảng thời gian này người dùng có thể thấy
activity trên màn hình, có nghĩa là nó không bị foreground hoặc đang tương tác
với người dùng. Giữa 2 phương thức người dùng có thể duy trì tài nguyên để
hiển thị activity đến người dùng. 2.7. 8 Các hàm thực thi
 OnCreate(. .): hàm này được gọi khi lớp Activity được khởi tạo, dùng để
thiết lập giao diện ứng dụng và thực thi những thao tác cơ bản.
 onStart(): hàm này được gọi khi lớp ứng dụng xuất hiện trên màn hình.
 onResume(): hàm được gọi ngay sau OnStart hoặc khi người dùng focus
ứng dụng, hàm này sẽ đưa ứng dụng lên top màn hình.
 onPause(): hàm được gọi khi hệ thống đang focus đến 1 activity trước đó.
 onStop(): hàm được gọi khi một activity khác được khởi động và focus.
 onRestart(): đưọc gọi khi ứng dụng chuyển sang onStop(), nhưng muốn khởi
động lại bằng onStart().
2.8 CÁC CÔNG CỤ CẦN THIẾT ĐỂ LẬP TRÌNH TRÊN ANDROID VÀ ƯỚNG DẪN CÀI ĐẶT: 2.8.
1 Các công cụ cần thiết để lập trình:
 Hệ điều hành: Window XP, Win7
 Công cụ lập trình: Eclipse version 3.6 hoặc cao hơn
 Bộ công cụ Android SDK 2.8.
2 Các bước cài đặt:
Chúng ta có 3 bước chính: Cài đặt Eclipse IDE, Plugin Android cho Eclipse
và cuối cùng là cài đặt Emulator (Android SDK). Và được chia thành các bước nhỏ sau:
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 17
Tìm hiểu lập trình trên Android
Bước 1: Vào địa chỉ http://www.eclipse.org/downloads/ download phần
mền lập trình eclipse. Chọn phần Eclipse IDE cho các nhà phát triển JAVA.
Sau khi đã download eclipse chúng ta giải nén ra để sử dụng.
Sau khi giải nén xong cho chạy chương trình.
Khi chạy, chương trình muốn lưu thư mục làm việc, chúng ta chọn thư mục tùy ý và nhấn OK.  Bước 2: truy cập
www.oracle.com/technetwork/java/javase/downloads/index.html để
downloads JAVA SE . Chọn downloads JAVA SE > vào thư mục chứa
JAVA SE và tiến hành cài đặt.
Bước 3: Truy cập developer.Android.com/sdk/index.html . Và tiến hành
download chọn phần Android-sdk_r10-windows.zip .
Sau khi downloads vào thư mục chứa phần download giải nén và chọn
SDK Manager.exe chạy chương trình tự động update.
Vào chương trình eclipse chọn menu Help -> Install New Software…
Name: Google Android ( tùy ý)
Location : http//:dl-ssl-google.com/Android/eclipse Sau đó chọn OK. Hình 2-5
Chọn Sellect All , chọn vào các ô như hình 2.7
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 18
Tìm hiểu lập trình trên Android Hình 2-6
Sau đó chương trình tự động cập nhật những bản cần để cài đặt.
Tiếp theo bạn chọn những phần cần thiết để cài đặt hoặc chọn tất cả ->
Next -> chọn I accept the terms of the license agreements ->finsh.
Lưu ý khi cài: windows muốn chứng thực, ở bước này chọn OK.
Sau khi đã cài xong chọn Restsart Now.
Bước 4: Khi chương trình đã cài đặt phần Android SDK hoàn tất và khởi
động lại chương trình, vào Window ->Prefeneces để chỉ đường dẫn của file SDK. Hình 2-7
Ở bước này chọn đường dẫn tới thư mục chứa Android SDK. Sau đó chọn Apply.
Bước 5: Ở các bước trên đã cấu hình Android SDK trong eclipse , bước
tiếp theo sẽ đi cấu hình để tạo ra 1 máy ảo chứa hệ điệu hành Android.
Vào Window -> Android SDK and AVD Manager.
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 19
Tìm hiểu lập trình trên Android
Cửa sổ Android SDK and AVD Manager hiện ra , chương trình đang tự
động cập nhật. Sau đó chọn Virtual Decvices -> New.
Name ( Tên máy ảo) : AndroidMobile2.2
Size (kích thước bộ nhớ ): 512 MB Chọn Create AVD Hình 2-8
Đã tạo thành công máy ảo , tiếp theo chọn Start…..-> Launch để khởi động máy ảo. Hình 2-9
2.9 BẮT ĐẦU LẬP TRÌNH 1 C ƯƠNG TRÌN ELLO WORLD ĐẦU TIÊN:
Lưu ý ở đây tôi dùng Emulator bảng 2.2. Mở Eclipse
SVTH: Phạm Quang Đạo – Nguyễn Hoàng Nam 20