(NB) Giáo trình Lập trình Android cơ bản với mục tiêu chính là Trình bày được các tính năng tiên tiến và các ưu thế của các môi trường lập trình trên Android. Khai báo và sử dụng được biến, hàm và các kiểu dữ liệu trong Java. Thiết kế được các giao diện ứng dụng trên Android. Sử dụng được các loại dữ liệu như XML, JSON để truyền tải dữ liệu qua mạng.
Trang 2Tài li u này thu c lo i sách giáo trình nên các ngu n thông tin có thệ ộ ạ ồ ể
được phép dùng nguyên b n ho c trích dùng cho các m c đích v đào t o vàả ặ ụ ề ạ tham kh o.ả
M i m c đích khác mang tính l ch l c ho c s d ng v i m c đích kinhọ ụ ệ ạ ặ ử ụ ớ ụ doanh thi u lành m nh s b nghiêm c m.ế ạ ẽ ị ấ
Trang 3đi u hành Android.ề
Khi nghành công nghi p đi n tho i di đ ng sang m t trang m i, m t hệ ệ ạ ộ ộ ớ ộ ệ
đi u hành m có th dùng chung cho nhi u hãng đi n tho i v i nh ng tùyề ở ể ề ệ ạ ớ ữ
ch n riêng bi t là m t mi ng m i béo b mà Google nhìn th y đ u tiên. Thi tọ ệ ộ ế ồ ở ấ ầ ế
b Android đị ược phân ph i v i t c đ tăng trố ớ ố ộ ưởng nhanh h n b t k n n t ngơ ấ ỳ ề ả
di đ ng khác, đi u đó giúp Android tr thành m t s l a ch n tuy t v i trongộ ề ở ộ ự ự ọ ệ ờ hành trình phát tri n ng d ng trên đi n tho i di đ ng, đ c bi t là n u b n làể ứ ụ ệ ạ ộ ặ ệ ế ạ
m t nhà phát tri n Java.ộ ể
Giáo trình được biên so n d a trên m t s tài li u tham kh o c p nh t,ạ ự ộ ố ệ ả ậ ậ
có giá tr và v i m c tiêu cung c p các ki n th c c b n v l p trình trên n nị ớ ụ ấ ế ứ ơ ả ề ậ ề
t n Android, vì v y n i dung trình bày v n ch a đả ậ ộ ẫ ư ược đ y đ và không tránhầ ủ
kh i thi u sót. Tác gi r t mong nh n đỏ ế ả ấ ậ ược các ý ki n đóng góp, b sung đế ổ ể giáo trình ngày càng hoàn thi n h n.ệ ơ
Tôi chân thành c m n các đ ng nghi p trong khoa Công ngh thông tinả ơ ồ ệ ệ – K toán đã có nh ng ý ki n đóng góp giá tr cho n i dung giáo trình và cácế ữ ế ị ộ tác gi đã biên so n, chia s các tài li u b ích v l p trình Android trả ạ ẻ ệ ổ ề ậ ướ cđây
Bà R a – Vũng Tàu, ngày 02 tháng 01 năm 2016 ị
Biên so nạ
Trang 4M C L CỤ Ụ
Trang 5MÔ ĐUN L P TRÌNH ANDROID C B NẬ Ơ Ả
Mã mô đun: MĐ 29
V trí, tính ch t, ý nghĩa và vai trò c a mô đun: ị ấ ủ
Mô đun này có ý nghĩa cung c p các ki n th c c b n v thi t k , xâyấ ế ứ ơ ả ề ế ế
d ng và phát tri n ng d ng ch y trên thi t b di đ ng s d ng h đi u hànhự ể ứ ụ ạ ế ị ộ ử ụ ệ ề Android. Mô đun này được b trí sau khi h c xong các môn chung, mô đunố ọ
c u trúc d li u và mô đun l p trình hấ ữ ệ ậ ướng đ i tố ượng
M c tiêu c a mô đun:ụ ủ
Trình bày đư c các tính năng tiên ti n và các u th c a các môi trợ ế ư ế ủ ườ ng
l p trình trên Android.ậ
‐ Khai báo và s d ng đử ụ ược bi n, hàm và các ki u d li u trong Java.ế ể ữ ệ
‐ Thi t k đế ế ược các giao di n ng d ng trên Android.ệ ứ ụ
Trang 6TT Tên các bài trong mô đun Th i gianờ Hình th cứ
gi ng d yả ạ
2 C u hình môi trấ ường phát tri n Androidể 3 Tích h pợ
15 L u tr d li u vào b như ữ ữ ệ ộ ớ 5 Tích h pợ
16 T o và truy v n c s d li u SQLiteạ ấ ơ ở ữ ệ 15 Tích h pợ
Trang 7T ngổ 150
Trang 8ph n m m di đ ng u tiên l a ch n Android là n n t ng đ phát tri n cácầ ề ộ ư ự ọ ề ả ể ể
ng d ng trên thi t b di đ ng. Bài h c này s giúp chúng ta bi t rõ h n v
quá trình hình thành, phát tri n cũng nh nh ng lý do ph i l a ch n s d ngể ư ữ ả ự ọ ử ụ
và phát tri n ng d ng trên h đi u hành Android.ể ứ ụ ệ ề
M c tiêu:ụ
Trình bày được l ch s phát tri n và ki n trúc c a h đi u hànhị ử ể ế ủ ệ ề Android
Trình bày được nh ng u đi m c a h đi u hành Android.ữ ư ể ủ ệ ề
Nh n th c đậ ứ ượ ầc t m quan tr ng c a h đi u hành di đ ng nói chung vàọ ủ ệ ề ộ
h đi u hành Android nói riêng.ệ ề
Nâng cao tính chia s công đ ng.ẻ ồ
N i dung:ộ
1. Android là gì?
Android là m t h đi u hành trên di đ ng (mobile), độ ệ ề ộ ược phát tri n trênể
c s c a h đi u hành Linux. Ban đ u nó đơ ở ủ ệ ề ầ ược phát tri n b i m t công ty cóể ờ ộ cùng tên là: Android, Inc. Vào năm 2005, nh m t ph n chi n lư ộ ầ ế ược c a vi củ ệ
Trang 9gia nh p vào th trậ ị ường mobile, Google đã mua l i Android và ti p qu n côngạ ế ả
vi c phát tri n đó (cũng nh là đ i ngũ phát tri n đi kèm).ệ ể ư ộ ể
Google mu n Android tr nên m và mi n phí. Vì lí do đó, h u h t codeố ở ở ễ ầ ế
c a Android đ u đủ ề ược phát hành dưới d ng Open Source Apache License,ạ
đi u đó có nghĩa là b t kì ngề ấ ười nào mu n s d ng android ch vi c t i v bố ử ụ ỉ ệ ả ề ộ cài đ t Android. H n n a, các nhà cung c p (thặ ơ ữ ấ ương là các nhà s n xu t ph nả ấ ầ
c ng) có th thêm nh ng ph n m r ng đ c quy n vào Android và customizeứ ể ư ầ ở ộ ộ ề Android đ t o nên nh ng s khác bi t so v i các s n ph m khác.ể ạ ữ ự ệ ớ ả ẩ
u đi m chính c a vi c s d ng Android là nó s cung c p m t cách
ti p c n th ng nh t đ l p trình m t ng d ng. L p trình viên ch c n l pế ậ ố ấ ể ậ ộ ứ ụ ậ ỉ ầ ậ trình v i Android, và nh ng ng d ng c a h có th ch y trên nhi u thi t bớ ữ ứ ụ ủ ọ ể ạ ề ế ị khác nhau mi n là các thi t b đó s d ng Android.ễ ế ị ử ụ
Trong th gi i smartphone, ph n m m là thành ph n quan tr ng nh t c aế ớ ầ ề ầ ọ ấ ủ chu i thành công. Các nhà s n xu t thi t b vì th nh n th y Android là hiỗ ả ấ ế ị ế ậ ấ
v ng l n nh t đ thách th c l i s t n công c a Iphone.ọ ớ ấ ể ứ ạ ự ấ ủ
2. Các n n t ng l p trình ng d ng di d ngề ả ậ ứ ụ ộ
Android đã tr i qua khá nhi u phiên b n update t khi nó đả ề ả ừ ược phát hành.
B ng 11 hi n th các phiên b n khác nhau c a Android.ả ể ị ả ủ
Trang 10B ng 1.1 ả Các phiên b n c a Android ả ủ
Vào tháng hai năm 2011, Google phát hành Android 3.0, m t phiên b nộ ả dành cho máy tính b ng, h tr nh ng thi t b màn hình r ng. Nh ng thay đ iả ỗ ợ ữ ế ị ộ ữ ổ quan tr ng trong phiên b n Android 3.0 nh sau:ọ ả ư
Giao di n ngệ ười dùng đượ ố ưc t i u cho máy tính b ng.ả
Trang 11c version c a các thi t b , b n ph i ch c ch n mình ch s d ng nh ng tínhả ủ ế ị ạ ả ắ ắ ỉ ử ụ ữ năng được h tr trên t ng phiên b n Android c th ỗ ợ ừ ả ụ ể
Vào tháng 10 năm 2011, Google phát hành phiên b n 4.0, phiên b n đãả ả mang t t c các tính năng đấ ả ược gi i thi u trong Android 3.0 vào smartphone,ớ ệ cùng v i m t s nh ng tính năng m i nh nh n di n khuôn m t, theo dõi vàớ ộ ố ữ ớ ư ậ ệ ặ
đi u khi n data s d ng. Near Field Communication(NFC ) . . .ề ể ử ụ
3. Ki n trúc đa t ng c a HĐH Androidế ầ ủ
Đ hi u cách ho t đ ng c a Android, hãy xem hình 1.2, trong đó choể ể ạ ộ ủ
th y các l p khác nhau c a h đi u hànhấ ớ ủ ệ ề Android
Android OS được chia thành 5 section trong 4 layer:
Linux kernel: Đây là nhân c a Android. L p này có các trình đi u khi nủ ớ ề ể thi t b c p th p cho các thành ph n ph n c ng khác nhau c a m t thi t bế ị ấ ấ ầ ầ ứ ủ ộ ế ị Android
Libraries: L p này bao g m t t c code cung c p các tính năng chínhớ ồ ấ ả ấ
c a Android OS. Ví d nh SQLite library cung c p database h tr cho cácủ ụ ư ấ ỗ ợ
ng d ng có th s d ng nó đ l u tr d li u. Hay nh là WebKit library
cung c p nh ng hàm dùng cho webấ ư browsing
Android runtime: T i cùng l p v i libraries, Android runtime cung c pạ ớ ớ ấ
m t t p các core library mà cho phép các l p trình viên vi t ng d ng Androidộ ậ ậ ế ứ ụ
s d ng Java. Android runtime cũng bao g m các máy o Dalvik, cho phépử ụ ồ ả
m i ng d ng Android ch y trên proccess c a nó, v i instance c a Dalvik(Cácọ ứ ụ ạ ủ ớ ủ
ng d ng Android đ c biên d ch vào Dalvik đ có th ch y) (có nghĩa là
Dalvik s t o ra máy o và ch y ng d ng c a b n trên đó). Dalvik là m tẽ ạ ả ạ ứ ụ ủ ạ ộ máy o đ c bi t đả ặ ệ ược thi t k đ c bi t cho Android và t i u hóa cho cácế ế ặ ệ ố ư
Trang 12 Application framework: Đ a ư ra nh ng kh năng khác nhau c a Androidữ ả ủ
OS cho developer mà h có th đ a vào app c aọ ể ư ủ h ọ
Application: Là t ng trên cùng, b n s th y nh ng app liên quan đ nầ ở ạ ẽ ấ ữ ế thi t b Android( nh là Phone, Contact, Browser . ), cũng nh các ng d ngế ị ư ư ứ ụ
mà b n t i và cài đ t t Android Market. B t kì m t ng d ng nào mà b nạ ả ặ ừ ấ ộ ứ ụ ạ
vi t đ u đế ề ược đ t v tríặ ở ị này
Hình 1.2: Ki n trúc h đi u hành Android ế ệ ề
Trang 13 D dàng tễ ương thích cho các nhà s n xu t, cung c p d ch v di đ ngả ấ ấ ị ụ ộ
5. M t s thi t b ch y trên n n Androidộ ố ế ị ạ ề
Các thi t b ch y trên n n t ng Android thông d ng nh smartphoneế ị ạ ề ả ụ ư (đi n tho i thông minh) và máy tính b ng nh : Google Nexus One, Googleệ ạ ả ư Nexus S, Sony Ericsson Xperia Play, Acer Iconia Smart, LG GState, Toshiba Thrive, HTC One, Samsung Galaxy S4,…
Hình 1.3: Đi n tho i s d ng Android ệ ạ ử ụ
Trang 146. Vì sao nên ch n Android?ọ
Tương thích công ngh , phù h p v i xu hệ ợ ớ ướng hi n đ i.ệ ạ
Tính c ng đ ng cao, và không ng ng phát tri n d a trên mã ngu n m ộ ồ ừ ể ự ồ ở
B n quy n s d ng mi n phí.ả ề ử ụ ễ
Được h tr t i đa t Android và c ng đ ng m ng.ỗ ợ ố ừ ộ ồ ạ
Tài li u rõ ràng và phong phú.ệ
Ngôn ng phát tri n đ n gi n và tiên ti n.ữ ể ơ ả ế
Kh năng thay đ i, m r ng cao.ả ổ ở ộ
Là m t ph n m r ng c a môn h c.ộ ầ ở ộ ủ ọ
Theo yêu c u c a công ty, c quan.ầ ủ ơ
Câu h i và bài t pỏ ậ
1.1: Phân tích ki n trúc h đi u hành Android.ế ệ ề
1.2: Nh ng u đi m và nhữ ư ể ược đi m c a h đi u hành Android.ể ủ ệ ề
1.3. Phiên b n hoàn ch nh tả ỉ ương thích 64bit đ u tiên c a Android là phiênầ ủ
b n nào?ả
1.4. Đi n tho i và máy tính b ng Android đ u tiên là gì?ệ ạ ả ầ
Trang 15Yêu c u đánh giáầ
Nêu l ch s hình thành và phát tri n c a h đi u hành Android.ị ử ể ủ ệ ề
Trình bày ki n trúc c a h đi u hành Android.ế ủ ệ ề
T i sao ph i ch n Android đ s d ng và phát tri n ng d ng?ạ ả ọ ể ử ụ ể ứ ụ
Trang 16C U HÌNH MÔI TRẤ ƯỜNG PHÁT TRI N ANDROIDỂ
Gi i thi u:ớ ệ
Không gi ng nh iPhone, SDK cho phát tri n ng d ng Android có thố ư ể ứ ụ ể
ch y đạ ược h u h t trên các n n t ng h đi u hành t Windows, Linux vàầ ế ề ả ệ ề ừ Mac. Bài h c này s giúp b n nhanh chóng cài đ t và thi t l p môi trọ ẽ ạ ặ ế ậ ường để phát tri n ng d ng Android.ể ứ ụ
M c tiêu:ụ
Trình bày được các tính năng c a công c Eclipse trong l p trình Java vàủ ụ ậ Android SDK trong l p trình Android.ậ
Trình bày đượ ấc c u trúc cây th m c trong project Android.ư ụ
Cài đ t đặ ược công c Eclipse và Android SDK đ l p trình Android.ụ ể ậ
K t n i đế ố ược thi t b Android v i PC đ cài đ t ng d ng t Eclipse.ế ị ớ ể ặ ứ ụ ừ
S d ng đử ụ ược máy o Android, công c debug và ghi log.ả ụ
T o đạ ược project Android
Có t duy, sáng t o, đ c l p và làm vi c nhóm.ư ạ ộ ậ ệ
Đ m b o an toàn cho ngả ả ười và thi t b ế ị
Trang 17+ Android SDK: t i t i ả ạ http://developer.android.com/sdk/index.html
* Bước 2: Ti n hành cài đ tế ặ
Cài đ t JDK (n u máy ch a cài s n).ặ ế ư ẵ
Cài đ t Eclipse IDE: phiên b n này ch c n gi i nén t p tin .zip. Sau khiặ ả ỉ ầ ả ậ cài đ t, ta ch y eclipse có giao di n nh hình 1.1.ặ ạ ệ ư
Hình 2.1. Giao di n Eclipse ệ
Cài đ t Android SDK: gi i nén t p tin Android SDK và ch y cài đ t.ặ ả ậ ạ ặ
* Bước 3: cài đ t các phiên b n h tr phát tri n ng d ng trong SDKặ ả ỗ ợ ể ứ ụ Manager
Trang 18Hình 2.2: Giao di n Android SDK Manager ệ
* Bước 4: cài đ t ADT Pluginặ
ADT Plugin Là thành ph n đầ ược thêm vào Eclipse IDE, g i là Androidọ Development Tools (ADT), được thi t k cho nh ng ti n ích, nâng c p môiế ế ữ ệ ấ
trường cho phát tri n ng d ng Android.ể ứ ụ
Ch y Eclipse, ch n Help ạ ọ Install New Software, h p Install hi n ra,ộ ệ
ch n Add đ m h p tho i Add Repository.ọ ể ở ộ ạ
Hình 2.3: Cài đ t ADT Plugin ặ
Trang 19 Trong h p Name nh p ADT Plugin, h p Location nh p đ a ch ộ ậ ộ ậ ị ỉ http://dlssl.google.com/android/eclipse/, sau đó nh n OK đ b t đ u cài đ t, vi c càiấ ể ắ ầ ặ ệ
đ t s m t vài ch c phút.ặ ẽ ấ ụ
* Bước 5: C u hình đấ ường d n đ n th m c SDKẫ ế ư ụ
Sau khi cài đ t xong ADT Plugin, chúng ta quay tr l i Eclipse IDE.ặ ở ạ Trong Eclipse IDE, ch n menu Window – Preferences Trong h p tho iọ ộ ạ Preferences, ch n m c Android, ch nh đọ ụ ỉ ường d n trong SDK Location v thẫ ề ư
m c c a Android SDK đã cài bụ ủ ở ước trên
Hình 2.4: C u hình đ ng d n đ n th m c SDK ấ ườ ẫ ế ư ụ
2. Cài đ t USB Driverặ
Thi t l p h th ng (PC) đ dò tìm thi t b (đi n tho i, table)ế ậ ệ ố ể ế ị ệ ạ
Trang 20+ Nexus One, Nexus S, ho c đi n tho i phát tri n Android (ADP) sặ ệ ạ ể ử
d ng Google Windows USB Driver.ụ
+ S d ng OEM USB driver phù h p cho các lo i đi n tho i khác.ử ụ ợ ạ ệ ạ
Mac OS X: Được h tr driver.ỗ ợ
Ubuntu Linux: C n thêm t p tin ch a c u hình USB cho m i lo i thi tầ ậ ứ ấ ỗ ạ ế
b đi n tho i đị ệ ạ ượ ử ục s d ng cho phát tri n.ể
Đ cài đ t USB Driver, ta th c hi n các bể ặ ự ệ ước sau:
* Bước 1: t i USB driver phù h p v i thi t b đi n tho i trên googleả ợ ớ ế ị ệ ạ USB Driver, sau đó cài đ t USB driver trên Window.ặ
Hình 2.5: T i USB driver trên google USB Driver ả
* Bước 2: Th c hi n cài đ t USB drier nh m t gói cài đ t thôngự ệ ặ ư ộ ặ
thường
3. K t n i thi t b v i PCế ố ế ị ớ
Khi xây d ng ng d ng trên di đ ng, c n thi t ph i ch y trên thi t bự ứ ụ ộ ầ ế ả ạ ế ị
th c trự ước khi đ a vào s d ng.ư ử ụ
Thi t l p môi trế ậ ường v i thi t b Android cho ch y và debug:ớ ế ị ạ
Trang 21+ Qu n lý tr ng thái c a thi t b hay Emulator.ả ạ ủ ế ị
+ Ch y l nh shell trên thi t b đi n tho i.ạ ệ ế ị ệ ạ
+ Qu n lý port trên thi t b hay Emulator.ả ế ị
+ Copy file t PC vào thi t b ho c Emulator và ngừ ế ị ặ ượ ạc l i
Trang 22Hình 2.7: Giao di n command line s d ng công c adb ệ ử ụ ụ
Truy v n Emulator/device đ i tấ ố ượng: adb devices
Cài đ t ng d ng: adb install <path_to_apk>ặ ứ ụ
Copy files t thi t b , Emulator đ n PC: adb pull <remote> <local>ừ ế ị ế
Copy files t PC đ n thi t b , Emulator: adb push <local> <remote>ừ ế ế ị
Xóa th m c: adb e/d shell rm r /sdcard/folderư ụ
T o th m c: adb e/d shell mkdir /sdcard/folderạ ư ụ
Trang 235. S d ng debug và ghi logử ụ
S d ng Logcat: ử ụ
+ H th ng log Android cung c p c ch cho vi c t p h p và hi n thệ ố ấ ơ ế ệ ậ ợ ể ị debug h th ng output. Log t nh ng ng d ng khác nhau và 1 ph n t hệ ố ừ ữ ứ ụ ầ ừ ệ
th ng s đố ẽ ượ ậc t p h p vào vùng đ m vào đợ ệ ược hi n th b i l nh logcat.ể ị ở ệ
+ Logcat t adb shell s hi n th t t c thông tin logừ ẽ ể ị ấ ả
+ Cú pháp: $ adb logcat
Hình 2.8: Giao di n LogCat ệ
6. T o ng d ng Androidạ ứ ụ
* Bước 1: Trong Eclipse, ch n File – New – Android Application Projectọ
* Bước 2: Cung c p thông tin cho ng d ng Androidấ ứ ụ
Trang 24Hình 2.9: Giao di n t o m i m t project Android ệ ạ ớ ộ
Application Name: tên c a ng d ngủ ứ ụ
Project Name: tên c a projectủ
Package Name: tên c a packageủ
Minimum Required SDK: phiên b n API nh nh t mà ng d ng yêuả ỏ ấ ứ ụ
c u đ ch y, nó s ch n ngầ ể ạ ẽ ặ ười dùng s d ng phiên b n nh h nử ụ ả ỏ ơ
Target SDK: phiên b n API mà ng d ng đả ứ ụ ược thi t k đ ch y. ngế ế ể ạ Ứ
d ng s ch y ng v i API t Minimum Required SDK đ n Target SDKụ ẽ ạ ứ ớ ừ ế
Compile With: phiên b n API dùng đ biên d ch ng d ngả ể ị ứ ụ
Theme: ch n theme dùng v i ng d ngọ ớ ứ ụ
Nh n Next đ qua màn hình k ti pấ ể ế ế
Trang 25* Bước 3: C u hình projectấ
Hình 2.10: Giao di n c u hình project ệ ấ
Nút ch n Create custom launcher icon: cho phép thay đ i icon c a ngọ ổ ủ ứ
d ngụ
Nút ch n Create activity: t o m t activity cho ng d ngọ ạ ộ ứ ụ
Nút ch n Mark thi project as a library: t o project này thành th vi n,ọ ạ ư ệ không ph i là ng d ngả ứ ụ
Nút ch n Create Project in a Workspace: l u project trong workspaceọ ư
c a Eclipseủ
Nh n Next đ qua màn hình k ti pấ ể ế ế
Trang 26Hình 2.11: Giao di n c u hình icon cho ng d ng ệ ấ ứ ụ
Trong màn hình này, chúng ta s ch n icon cho ng d ng. Chúng ta cóẽ ọ ứ ụ
th ch n icon t m t hình có s n (d ng .png), t Clipart ho c t b font ch ể ọ ừ ộ ẳ ạ ừ ặ ừ ộ ữ
Nh n Next đ qua màn hình k ti p.ấ ể ế ế
* Bước 5: l a ch n lo i activity c n t o ban đ uự ọ ạ ầ ạ ầ
Trang 27Hình 2.12: Giao di n l a ch n ki u activity ệ ự ọ ể
Trang 28Hình 2.13: Giao di n đ t tên activity đ u tiên ệ ặ ầ
Activity Name: tên c a Activity s đủ ẽ ược tao ra khi hoàn thành Wizard
Layout Name: tên c a t p tin xml qu n lý giao di n tủ ậ ả ệ ương ng v iứ ớ Activity
Navigation Type: ch n None – lo i navigation s dùng trong ng d ngọ ạ ẽ ứ ụ
Nh n Finish đ hoàn thành kh i t o m t ng d ng, chúng ta s quayấ ể ở ạ ộ ứ ụ ẽ
tr l i môi trở ạ ường Eclipse
7. C u trúc th m c trong project Androidấ ư ụ
M t project Android ch a nhi u th m c và t p tin nh hình 1.10.ộ ứ ề ư ụ ậ ư
Trang 29Hình 2.14: C u trúc cây th m c trong project Android ấ ư ụ
Trong đó:
src: Th m c này ch a các source ngu n c a ng d ng. B n có thư ụ ứ ồ ủ ứ ụ ạ ể thêm bao nhiêu package và các class java vào trong các package này tùy thích
gen: th m c này ch a các source code đư ụ ứ ượ ạc t o ra b i Android. Hãyở
đ nguyên tr ng, không c n ph i ch nh s a gì trong th m c này. L u ý r ngể ạ ầ ả ỉ ử ư ụ ư ằ trong th m c này có t p tin R.java t đ ng đư ụ ậ ự ộ ượ ạc t o ra, l u tr các id tư ữ ươ ng
ng v i t ng tài nguyên đ c đ nh nghĩa tr c nh nh, chu i (string), layout
(file xml),… mà ng d ng s d ng.ứ ụ ử ụ
bin: ch a các tài nguyên khi ng d ng đứ ứ ụ ược biên d ch, không c n thayị ầ
đ i gì trong th m c này.ổ ư ụ
libs: l u tr các th vi n third party đư ữ ư ệ ược s d ng s d ng. Thôngử ụ ử ụ
thường n u b n c n dùng thêm các th vi n third party, hãy t o riêng choế ạ ầ ư ệ ạ mình m t user lib đ s d ng và không c n ph i đ a vào th m c này.ộ ể ử ụ ầ ả ư ư ụ
res: th m c này l u tr khá nhi u tài nguyên mà b n c n ph iư ụ ư ữ ề ạ ầ ả
Trang 30 drawablehdpi, drawableldpi, drawablemdpi, drawablexhdpi, drawablexxhdpi: l u tr các file nh có cùng n i dung nh ng có đ phân gi i và kíchư ữ ả ộ ư ộ ả
thước khác nhau, ph c v cho m c đích hi n th trên các lo i màn hình cóụ ụ ụ ể ị ạ kích thước và đ phân gi i khác nhau sao cho trông ng d ng luôn hi n thộ ả ứ ụ ể ị
gi ng nhau trên các lo i màn hình này. Chúng ta s đi sâu tìm hi u v các thố ạ ẽ ể ề ư
m c này trong các bài h c k ti p.ụ ọ ế ế
layout: L u tr layout c a ng d ng dư ữ ủ ứ ụ ướ ịi đ nh d ng xml.ạ
menu: L u tr các lo i menu c a ng d ng dư ữ ạ ủ ứ ụ ướ ịi đ nh d ng xml.ạ
values, valuesv11, valuesv14: l u tr các h ng s đ nh nghĩa s n choư ữ ằ ố ị ẵ
2.2: Tên gói ng d ng Android (Package name) có đ c đi m gì?ứ ụ ặ ể
2.3: Trình bày c u trúc cây th m c trong Android.ấ ư ụ
Yêu c u đánh giáầ
Trình bày c u trúc th m c c a project Android Nêu ý nghĩa t p tinấ ư ụ ủ ậ AndroidManifest.xml
Trình bày các bước cài đ t môi trặ ường phát tri n Android trên Eclipse.ể
Nêu ý nghĩa và ch c năng c a chứ ủ ương trình LogCat
Trình báy các bướ ạc t o m t project Android.ộ
Trang 31L P TRÌNH JAVA C B NẬ Ơ Ả
Gi i thi u:ớ ệ
Java không còn là m t ngôn ng xa l v i c ng đ ng l p trình. V i vi cộ ữ ạ ớ ộ ồ ậ ớ ệ
có l i th khi đợ ế ược sinh ra v i tiêu chí “Write Once, Run Anywhere” (WORA)ớ – t c là “Vi t m t l n, th c thi kh p n i”, cùng v i vi c liên ti p c i ti n t cứ ế ộ ầ ự ắ ơ ớ ệ ế ả ế ố
đ biên d ch chộ ị ương trình đ t ng bể ừ ước thu h p kho ng cách v th i gianẹ ả ề ờ biên d ch v i các ngôn ng C, C++,… Java đã th c s th hi n vai trò quanị ớ ữ ự ự ể ệ
tr ng c a mình trong gi i chuyên môn. Bài h c này s cung c p các ki n th cọ ủ ớ ọ ẽ ấ ế ứ
l p trình Java c b n làm n n t ng đ b t đ u l p trình Android.ậ ơ ả ề ả ể ắ ầ ậ
M c tiêu:ụ
Trình bày các khái ni m c b n v đ i tệ ơ ả ề ố ượng, phương th c, l p trongứ ớ ngôn ng l p trình Java.ữ ậ
Thi t k và cài đ t đế ế ặ ược các l p trong Java theo đúng nguyên t cớ ắ
hướng đ i tố ượng
Thi t k và cài đ t đế ế ặ ược các chương trình theo nguyên t c hắ ướng đ iố
tượng
Có t duy, sáng t o, đ c l p và làm vi c nhóm.ư ạ ộ ậ ệ
Đ m b o an toàn cho ngả ả ười và thi t b ế ị
N i dung:ộ
1. Đ nh nghĩa đ i tị ố ượng
Các đ i tố ượng là đi m c t lõi đ hi u v công ngh hể ố ể ể ề ệ ướng đ i tố ượng. Bây gi hãy nhìn xung quanh và b n s th y đờ ạ ẽ ấ ượ ấc r t nhi u ví d v đ iề ụ ề ố
Trang 32Đ i tố ượng trong th gi i th c có chung hai đ c đi m: T t c đ uế ớ ự ặ ể ấ ả ề
có tr ng thái ạ và hành vi. Chó có tr ng thái (tên, màu s c, lo i, tình tr ng đóiạ ắ ạ ạ hay no) và hành vi (s a, tha đ v t đ n, v y đuôi). Xe đ p cũng có tr ng tháiủ ồ ậ ế ẫ ạ ạ (bánh răng, nh p bàn đ p hi n t i, t c đ hi n t i) và hành vi (thay đ i bánhị ạ ệ ạ ố ộ ệ ạ ổ răng, thay đ i nh p bàn đ p, s d ng phanh). Vi c xác đ nh tr ng thái và hànhổ ị ạ ử ụ ệ ị ạ
vi c a các đ i tủ ố ượng trong th gi i th c là m t cách tuy t v i đ b t đ uế ớ ự ộ ệ ờ ể ắ ầ nghĩ đ n các khái ni m c a l p trình hế ệ ủ ậ ướng đ i tố ượng
Hình 3.1: mô hình h ng đ i t ng shape ướ ố ượ
2. Khai báo l p đ i tớ ố ượng (Class)
2.1. Khái ni m l p đ i tệ ớ ố ượng
Chúng ta có th xem ể l p ớ nh ư m t khuôn ộ m u ẫ (template) c a đ i tủ ố ượ ng(Object). Trong đó bao g m d ồ ữ li u ệ c a đ i tủ ố ượng (fields hay properties) và các phương th c (methods) tác đ ng ứ ộ lên thành ph n d ầ ữ li u ệ đó g i ọ là các
phương th c c aứ ủ l p.ớ Các đ i tố ượng được xây d ng ự b i ở các l p ớ nên được g iọ
là các th ể hi n ệ c a ủ l p ớ (class instance)
Trang 332.2. Khai báo và đ nh nghĩa l pị ớ
class <ClassName>
{
<kiểu dữ liệu> <field_1>;
<kiểu dữ liệu> <field_2>; constructor
Ví d
ụ :
class xemay
{ public String nhasx;
public String model;
private float chiphisx; protected int thoigiansx;
public static int sobanhxe = 2;
}
2.3. T o đ i tạ ố ượng c a l pủ ớ
ClassName objectName = new ClassName();
Ví d : ụ M t l p đ i tộ ớ ố ượng có tên Xemay, t o m t đ i tạ ộ ố ượng l p Xemayớ
Trang 34<tiền tố> <kiểu dữ liệu> field1;
// …
}
Đ xác ể đ nh ị quy n ề truy xu t c a các đ i tấ ủ ố ượng khác đ i ố v i vùng ớ d ữ li uệ
c a ủ l p ớ ngườ ta thi ường dùng 3 ti n ề tố sau:
public: có th truy xu t ể ấ t ừ t t c các đ i tấ ả ố ượ khácng
private: m t ộ l p ớ không th truy xu t ể ấ vùng private c a 1 ủ l pớ khác
protected: vùng protected c a 1 ủ l p ớ ch cho phép b n thân ỉ ả l p ớ đó và
nh ng ữ l p ớ d n xu t ẫ ấ t ừ l p ớ đó truy c p đ n.ậ ế
Trang 35ụ :
public class xemay
{ public String nhasx;
public String model;
private float chiphisx; protected int thoigiansx;
// so luong so cua xe may: 3, 4 so protected int so;
// sobanhxe là biến tĩnh có giá trị là 2 trong tất cả
// các thể hiện tạo ra từ lớp xemay public static int sobanhxe = 2;
Thu c ộ tính “thoigiansx”, so có th truy c p để ậ ượ t c ừ các đ i tố ượng có
ki u ể “xemay” và các đ i tố ượng c a các ủ l p ớ con d n xu t ẫ ấ t ừ l pớ “xemay”
* L u ýư : Thông th ng đ an toàn cho ườ ể vùng d ữ li u ệ c a các đ i tủ ố ượ ng
ngườ ta tránh dùng ti n i ề t ố public, mà thường ch n ti n ọ ề t ố private đ ngănể
c n ả quy n ề truy c p đ n ậ ế vùng d ữ li u ệ c a m t ủ ộ l p ớ t ừ các phương th c bênứ ngoài l pớ đó
2.5. Kh i t o hàm và phở ạ ương th c l p (method)ứ ớ
Hàm hay phương th c (method) trong ứ Java là kh i ố l nh ệ th c ự hi n ệ các
ch c ứ năng, các hành vi x ử lý c a ủ l p ớ lên vùng d ữ li u.ệ
Trang 36Đ xác ể đ nh ị quy n ề truy xu t c a các đ i tấ ủ ố ượng khác đ i ố v iớ các phươ ng
th c c a ứ ủ l p ớ ngườ ta thi ường dùng các ti n ề tố sau:
public: phương th c có th truy c p đứ ể ậ ượ t c ừ bên ngoài l p ớ khai báo
protected: có th truy c p để ậ ượ t c ừ l p ớ khai báo và nh ng ữ l p ớ d n xu tẫ ấ
từ nó
private: ch đỉ ược truy c p bên trong b n thân ậ ả l p ớ khai báo
static: phương th c ứ l p ớ dùng chung cho t t c các th ấ ả ể hi n ệ c a ủ l p, ớ có nghĩa là phương th c đó có th đứ ể ược th c ự hi n ệ k c khi không có đ i tể ả ố ượ ng
c a ủ l p ớ ch a ứ phương th cứ đó
final: phương th c có ti n ứ ề t ố này không được khai báo ch ng các ồ ớ l p
d nẫ xu t.ấ
abstract: phương th c không c n cài đ t (không có ph n source code),ứ ầ ặ ầ
s đẽ ượ hi n c ệ th c trong các ự l p ớ d n xu t ẫ ấ t ừ l pớ này
synchoronized: dùng đ ngăn các tác đ ng c a các đ i tể ộ ủ ố ượng khác lên đ iố
tượng đang xét trong khi đang đ ng ồ b ộ hóa. Dùng trong l p ậ trình miltithreads
<ki u tr v >: ể ả ề có th ể là ki u void, ki u ể ể c s hay m tơ ở ộ l p.ớ
<Tên ph ươ ng th c>: ứ đ t theo qui ặ ướ gi ng c ố tên bi n.ế
<danh sách thông s >: ố có thể r ngỗ
* L uư ý: Thông th ng trong m t ườ ộ l p ớ các phương th c nên đứ ược khai báo dùng t ừ khóa public, khác v i vùng ớ d ữ li u ệ thường là dùng ti n ề t ố private
vì m c ụ đích an toàn. Nh ng ữ bi n ế n m trong m t ằ ộ phương th c c a ứ ủ l p là ớ các
bi n ế c c ụ b (local) và ộ nên đượ kh ia c ở t o sau khi khaiạ báo
Ví d : ụ
public class xemay
Trang 37public String nhasx;
public String model;
private float chiphisx; protected int thoigiansx;
protected int so;
public static int sobanhxe = 2;
public float tinhgiaban()
{
return 1.5 * chiphisx;
}
}
2.6. Kh i t o đ i tở ạ ố ượng (constructor)
Contructor th t ra ậ là m t lo i ộ ạ phương th c đ c ứ ặ bi t ệ c a ủ l p.ớ Constructor dùng g i ọ t ự đ ng khi kh i t o m t th ộ ở ạ ộ ể hi n ệ c a ủ l p, ớ có th dùng đ kh i gánể ể ở
nh ngữ giá tr ịmăc đ nh.ị Các constructor không có giá tr tr v , ị ả ề và có th cóể tham s ho c không có thamố ặ s ố
Constructor ph i có ả cùng tên v i l p ớ ớ và được g i đ n dùng ọ ế t ừ khóa new
N u m t ế ộ l p ớ không có constructor thì java s cung c p cho ẽ ấ l p ớ m tộ constructor m cặ đ nh ị (default constructor). Nh ng ữ thu c ộ tính, bi n ế c a ủ l p ớ sẽ
được kh i t o ở ạ b i ở các giá tr ịm c đ nh ặ ị (s : thố ường là giá tr 0, ị ki u lu n ể ậ lý là giá tr ịfalse, ki u ể đ i tố ượng giá tr ịnull, …)
* L u ýư : thông th ng đ an toàn, d ườ ể ễ ki m ể soát và làm ch ủ mã ngu nồ
chương trình chúng ta nên khai báo m t constructor cho ộ l p.ớ
Trang 38Bi n ế this là m t ộ bi n ế ẩ t n n ồ t i trong t t c các ạ ấ ả l p ớ trong ngôn ng ữ Java.
M t ộ class trong Java luôn t n ồ t i m t ạ ộ bi n ế this, bi n ế this được s d ng đử ụ ể tham chi u đ n b n thân ế ế ả l p ớ ch aứ nó trong khi ch y chạ ương trình
Ví d
ụ :
<tiền tố> class A
{
<tiền tố> int <field_1>;
<tiền tố> String <field_2>;
<tiền tố> <kiểu trả về> <method_2>()
{
this.method_1() // …
public class xemay
{ // khai báo fields …
Trang 39public float tinhgiaban()
C ch đóng gói trong ơ ế l p ậ trình hướng đ i tố ượng giúp cho các đ i tố ượ ng
d u đi m t ph n các chi ti t cài đ t, cũng ấ ộ ầ ế ặ nh ư ph n d ầ ữ li u ệ c c ụ b ộ c a nó, ủ và
ch công ỉ b ố ra ngoài nh ng ữ gì c n công ầ b ố đ trao đ i ể ổ v i ớ các đ i tố ượ ngkhác. Hay chúng ta có th nói đ i tể ố ượng là m t thành ộ t ố h ỗ tr ợ tính đóng gói
Đ n ơ v ịđóng gói c b n c a ngôn ng ơ ả ủ ữ java là class. M t ộ class đ nh nghĩaị hình th c c a m t đ i tứ ủ ộ ố ượng. M t ộ class đ nh ị rõ nh ng ữ thành ph n d ầ ữ li u ệ và các đo n ạ mã cài đ t các thao tác ặ x ử lý trên các đ i tố ượng d ữ li u ệ đó. Java dùng class đ xây d ng ể ự nh ng ữ đ i tố ượng Nh ng ữ đ i tố ượng là nh ng ữ thể
hi n ệ (instances) c a m tủ ộ class
M t ộ l p ớ bao g m thành ph n d ồ ầ ữ li u ệ và thành ph n ầ x ử lý. Thành ph n dầ ữ
li u ệ c a m t ủ ộ l p ớ thường bao g m các ồ bi n ế thành viên và các bi n ế th ể hi n ệ c aủ
l p. ớ Thành ph n ầ x ử lý là các thao tác trên các thành ph n d ầ ữ li u, ệ thường trong java người g i ọ là phương th c ứ Phương th c ứ là m t thu t ng ộ ậ ữ hướng đ iố
tượng trong java, trong C/C++ ngườ ta thi ường dùng thu t ng ậ ữ là hàm
3.2. Khái ni m đa hình (polymorphism)ệ
Tính đa hình cho phép cài đ t các ặ l p ớ d n xu t khác ẫ ấ nhau t ừ m t ộ l pớ ngu n. M t đ i tồ ộ ố ượng có th có ể nhi u ề ki u ể khác nhau g i ọ là tính đa hình
Trang 40// Phần tử đầu tiên của mảng arr_Object[0] tham // chiếu đến 1 đối tượng kiểu B_Object dẫn xuất // từ A_Object
arr_Object[0] = var_1; A_Object var_2;
for (int i=0; i<2; i++) {
var_2 = arr_Object[i]; var_2.method_1();
} }
}
Vòng l p ặ for trong đo n ạ chương trình trên:
V i i = 0 thì ớ bi n ế var_2 có ki u ể là B_Object, và l nh ệ var_2.method_1() sẽ
g i th c ọ ự hi n ệ phương th c method_1 c a ứ ủ l pớ B_Object
V i i = 1 thì ớ bi n ế var_2 có ki u ể là A_Object, và l nh ệ var_2.method_1() sẽ
g i th c ọ ự hi n ệ phương th c method_1 c a ứ ủ l pớ A_Object
Trong ví d trên đ i tụ ố ượng var_2 có th ể nh n ki u A_Object ậ ể hay B_Object. Hay nói các khác, m t ộ bi n ế đ i tố ượng ki u A_Object ể nh ư var_2 trong ví d trên có th tham ụ ể chi u ế đ n b t k đ i tế ấ ỳ ố ượng nào c a b t k ủ ấ ỳ l pớ