SlideShare a Scribd company logo
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 1
ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
  
Thự c	tập	cơ	sở 	
Đề tài số 1:tìm hiểu về Android và lập trình ứng dụng
Giáo viên hướng dẫn:thầy Hoàng Anh Việt
Sinh viên làm: em Nguyễn Vương Quyền
Lớp:cnpm k53
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 2
Mục lục
Lời nói đầu	
Phần I:nghiên cứu tổng quan và kiến trúc Android	
1.1.Giới thiệu hệ điều hành Android	
 Tổng quan về Android	
 Lịch sử phát triển của Android	
 Các phiên bản Android	
 So sánh Android và các hệ điều hành chạy trên các smartphone khác	
1.2.Kiến trúc Android	
 Hệ thống tệp tin	
 Các tầng kiến trúc	
Phần II:các công cụ lập trình Android	
 Giới thiệu về các công cụ và nền tảng phát triển ứng dụng cho Android	
 Lập trình Android với Eclipse	
 Lập trình Android với Netbean	
Phần III:xây dựng các ứng dụng cụ thể	
 Cycle	live	
 Đồ	họa	2D	trong	Android	
 Chương	trình	Android	translator	
Phần	IV.Tổng	kết	và	đánh	giá	
Tài	liệu	tham	khảo	chính	
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 3
Lời nói đầu
Trong thời đại công nghệ thong tin ngày càng phát triển thì những thiết bị di động thông minh có sự hỗ
trợ của hệ điều hành đang ngày càng phổ biến và thông dụng.Chúng dần tỏ ra ưu việt hơn so với máy
tính truyền thống không chỉ bởi hỗ trợ nhiều tính năng mạnh mẽ không hề thua kém các dòng máy tính
thường thấy mà còn bởi giá thành cũng ngày càng hạ xuống phù hợp với mọi tầng lớp người dùng nhờ
sự tiến bộ vượt bậc của công nghệ tiên tiến.Tất nhiên để làm được điều đó thì những thiết bị này không
thể thiếu một hệ điều hành thông minh điều khiển mọi hoạt động trong nó như trên một chiếc máy tính
thông thường.Trong đó phải kể đến là hệ điều hành Android mới xuất hiện dựa trên nền tảng mã nguồn
mở Linux do Google phát triển. Cùng với sự phong phú về chủng loại, cấu hình và giá thành, điện thoại
Android đã trở nên phổ biến và xâm nhập ngày càng sâu rộng tới người sử dụng trên thế giới. Có lẽ điều
giúp cho điện thoại Android phát triển nhanh chính là có một hệ điều hành được người dùng ưa chuộng
nhất. Khi mới bắt đầu sử dụng hệ điều hành này mọi người thường thấy rất khó khăn nhưng chỉ cần bỏ
chút thời gian mày mò là họ có thể quen và thấy thích hệ điều hành này. Sở dĩ Android được người dùng
ưa chuộng nhất có lẽ vì chúng được tạo nên từ nền tảng nguồn mở nên cho phép người dùng có thể tùy
biến nhiều trên đó. Mặt khác, với Android thiết bị người dùng không đòi hỏi phải có một cầu hình tối
thiểu nào cả. Chúng có thể hoạt động trên mọi cấu hình, máy có hỗ trợ cảm ứng hay không, cũng như
tương thích với mọi nhà sản xuất thiết bị phần cứng .
Về khả năng tuy biến: Giao diện người dùng của hệ điều hành Android không hoàn toàn khác biệt hẳn so
với giao diện iOS (Apple). Thay vì chấp nhận một kích thước cố định cho mọi thiết bị, Google cho phép
các nhà sản xuất và người dùng có thể thay đổi giao diện người dùng Android phù hợp với nội dung trên
đó. Người dùng có cả giao diện Android và giao diện tùy biến của nhà sản xuất. Ngay cả với giao diện
người dùng bắt đầu sử dụng cũng có nhiều ứng dụng của các bên thứ ba cho phép người dùng tùy biến
trên giao diện gốc. Người dùng có thể sử dụng các tựa đề sống động giống như giao diện Windows
Phone 7 nếu thích. Điều này chính là một trong những sự khác biệt cốt yếu giữa iOS và Android.
Giống như iOS của Apple, Android có nhiều màn hình Home mà người dùng có thể lướt qua. Giao diện
mặc định có 5 màn hình Home, HTC Sence có 7 màn hình Home, Samsung Touch UI có tới 9 màn hình
Home. Người dùng có thể di chuyển các biểu tượng trên các màn hình Home đó và đặt chúng trong các
thư mục nếu thích. Google có một vùng (dock) để chứa đựng 3-4 biểu tượng. Các Dock này có thể tùy
biến như giao diện Touchwiz của Samsung hoặc cố định như Sense của HTC.
Nhưng Android bổ sung thêm một số yếu tố mà trong giao diện người dùng của iOS không có. Ngoài
màn hình Home, người dùng có một ứng dụng Application Launcher để hiển thị tất cả các ứng dụng cài
đặt trên thiết bị. Ở trên cùng giao diện người dùng Android là thanh thông báo. Thanh này dùng để
thông báo cập nhật, theo dõi quá trình tải về và cài đặt,… Người dùng có thể kéo thanh thông báo này
xuống để biết nhiều thông tin hơn là chỉ có các widget.
Điểm khác biệt thứ hai giữa iOS và Android là trên Android, Widget là một thành phần của giao diện đồ
họa không thể thiếu của người dùng. Chúng hiển thị thông tin mà người dùng có thể thay đổi, tương tự
như một cửa sổ. Chúng rất hữu ích vì có thể cung cấp cho người dùng nhiều thông tin hơn và thiết lập
cấu hình truy cập nhanh mà không phải mở ứng dụng. Với iOS, để truy cập thông tin, người dùng cần di
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 4
chuyển trên màn hình Home và kích mở ứng dụng đó. Với Android, thông tin có thể hiển thị trực tiếp
trên một trong các màn hình Home khác nhau.
Dễ sử dụng: so với hệ điều hành Symbian hay Windows Phone , giao diện Android của Google rất thân
thiện với người dùng. Về mặt trực giác, chúng không chỉ bóng bẩy như iOS của Apple mà còn rất gần gũi
với người dùng,tạo cho người dùng khả năng sáng tạo, tùy biến sắp đặt theo ý thức để có thể sử dụng
dễ dàng nhất và tùy chọn nhưng gì cần thiết để sử dụng thiết bị thông minh hơn, cũng như tiết kiệm pin.
Vì những điểm mạnh trên của hệ điều hành Android nên em xin chọn đề tài nghiên cứu về hệ điều hành
Android trong đợt thực tập cơ sở này.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 5
I.Tổng quan về kiến trúc Android
1.1.Giới thiệu hệ điều hành Anndroid:
1.1.1.Tổng quan chung về Android:
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dành cho các dòng điện
thoại SmartPhone và nhiều thiết bị di động khác như máy tính bảng,… Đầu tiên được ra đời bởi công ty
liên hợp Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệ điều hành
di động mã nguồn mở,miễn phí, mạnh mẽ và được ưa chuộng cao trên thế giới.
Hệ điều hành Android là một hệ điều hành rất mạnh, có tính bảo mật cao, hỗ trợ được nhiều công nghệ
tiên tiến như 3G, GPS, EDGE, Wifi... tương thích với nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu
như keyboard, touch và trackball. Android là hệ điều hành di động có khả năng kết nối cao với các mạng
không dây, hỗ trợ công nghệ OpenGL nên có khả năng giải trí với multimedia,animation cũng như trình
diễn các khả năng đồ họa cực tốt,là tiền đề để phát triển các ứng dụng có giao diện phức tạp chẳng hạn
như là các trò chơi,nghe nhạc,...Đặc biệt là có nhiều API hữu ích cho các nhà phát triển phần mềm, nhà
phát triển ROM có thể xây dựng nên nhiều ứng dụng, hệ thống khác nhau.
Android còn là một hệ điều hành đa nhiệm một người dùng. Tính đa nhiệm cho phép cùng một thời
gian, người dùng có thể chạy được nhiều nhiều ứng dụng để làm được nhiều việc khác nhau. Tuy nhiên,
mỗi ứng dụng trên Android thì chỉ được phép chạy với một thực thể mà thôi.
Android liên tục được phát triển, mỗi bản cập nhật từ Google là mỗi lần Android được tối ưu hóa để
hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệ mới. Chẳng hạn như theo một đánh
giá thì android phiên bản 2.2 hoạt động nhanh hơn bản 2.1 tới 450%. Hiện nay, phiên bản 2.3 phát hành
ngày 6/12/2010 và vào tháng 1-2011,tại triển lãm Điện tử tiêu dùng lớn nhất thế giới diễn ra hằng năm
tại Las Vegas (Hoa Kỳ) là Consumer Electronics Show(CES),Google đã trình làng Android 3.0 (tên mã
Honeycomb) đi kèm với máy tính bảng Xoom của Motorola là phiên bản mới nhất của Android và đang
tiếp tục được phát triển.
Năm 2008, hệ điều hành Android đã chính thức mở toàn bộ mã nguồn, điều đó cho phép các hãng
điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điện thoại
của họ và điều quan trọng nữa là hệ điều hành mở này hoàn toàn miễn phí, không phải trả tiền nên giúp
họ tiết kiệm khá lớn chi phí phát triển hệ điều hành. Những điều đó là cực kỳ tốt không chỉ đối với các
hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như kỳ tốt không chỉ đối với các hãng sản
xuất điện thoại nhỏ mà ngay cả với những hãng lớn như Samsung, HTC,Motorola,...
Với Google, vì Android hoàn toàn miễn phí, Google không thu tiền từ những hãng sản xuất điện thoại,
tuy không trực tiếp hưởng lợi từ Android nhưng bù lại, những dịch vụ của hãng như Google Search,
Google Maps,... nhờ có Android mà có thể dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc
điện thoại được sản xuất ra đều được tích hợp hàng loạt dịch vụ của Google. Từ đó hãng có thể thu
được nguồn tài chính, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó và tiến tới phát triển thị
phần quảng cáo mạnh mẽ hơn để cạnh tranh với nhiều hãng khác (quảng cáo đang do Yahoo! dẫn đầu).
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 6
Với các nhà phát triển ứng dụng (developers), việc hệ điều hành Android được sử dụng phổ biến đồng
nghĩa với việc họ có thể thoải mái phát triển ứng dụng trên nền Android với sự tin tưởng là ứng dụng đó
sẽ có thể chạy được ngay trên nhiều dòng điện thoại của các hãng khác nhau. Họ ít phải quan tâm là
đang phát triển cho điện thoại nào, phiên bản bao nhiêu vì nền tảng Android là chung cho nhiều dòng
máy, máy ảo Java đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dòng điện thoại mà nó
đang chạy. Tất cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kết hợp với XML nên có khả
năng khả chuyển cao.
Một số hãng sản xuất điện thoại có sử dụng hệ điều hành Android tiêu biểu :
 HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero, Desire, Tattoo, Wildfire, Droid
Incredible, Legend, Magic, Google Nexus One, Dream, Aria, Paradise .
 LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus One P500, GW620, Optimus Z,
Optimus Q, KH5200 Andro-1, GW880, C710Aloha .
 MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid XTreme, MT710 ZHILING, MILESTONE,
XT720 MOTOROI, A1680, XT800 ZHISHANG, DEFY, CHARM, XT806,máy tính bảng Xoom,...
 SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic 4G, i5510, I5500 Galaxy 5, I7500
Galaxy, I5800 Galaxy 3, M110S Galaxy S, I6500U Galaxy, Galaxy Q, I5700 Galaxy Spica, I8520
Galaxy Beam, I909 Galaxy S .
 SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8
 ACER với các dòng máy beTouch T500, Liquid E, Stream, Liquid, beTouch E110, beTouch E130,
beTouch E400, beTouch E120, Liquid Metal,…
 Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ điều hành Android
trong sản phẩm của mình…
1.1.2.Lịch sử phát triển Android:
Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới thành lập có trụ sở ở
Palo Alto, California, Mỹ. Những nhà đồng sáng lập của Android chuyển sang làm việc tại Google
gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập công ty Wildfire
Communications), Nick Sears (từng là phó chủ tịch của T-Mobile), và Chris White (trưởng nhóm
thiết kế và phát triển giao diện tại WebTV). Khi đó, có rất ít thông tin về các công việc của
Android, ngoại trừ việc họ đang phát triển phần mềm cho điện thoại di động. Điều này tạo
những tin đồn về việc Google có ý định bước vào thị trường điện thoại di động.
Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị di động dựa trên hạt
nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm tay và các nhà mạng trên những
tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả năng nâng cấp mở rộng cao.Một số
nguồn tin cho biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác
phần mềm, đồng thời ra hiệu với các nhà mạng rằng họ sẵn sàng hợp tác ở nhiều cấp độ khác
nhau. Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di động xuất
hiện trong tháng 12 năm 2006.Tin tức của BBC và Nhật báo phố Wall chú thích rằng Google
muốn đưa công nghệ tìm kiếm và các ứng dụng của họ vào điện thoại di động và họ đang nỗ lực
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 7
làm việc để thực hiện điều này. Các phương tiện truyền thông in và online cũng sớm có bài viết
về những tin đồn cho rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu
Google. Và lại càng có nhiều suy đoán sau bài viết về việc Google đang định nghĩa các đặc tả
công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện thoại di động và nhà mạng.
Tháng 9 năm 2007, InformationWeek đăng tải một nghiên cứu của Evalueserve cho biết Google
đã nộp một số đơn xin cấp bằng sáng chế trong lĩnh vực điện thoại di động.
Liên minh thiết bị cầm tay mở rộng:
Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở rộng (Open Handset Alliance), một
côngxoocxiom bao gồm nhiều công ty trong đó có Texas Instruments, Tập đoàn Broadcom,
Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung
Electronics, Sprint Nextel và T-Mobile được thành lập với mục đích phát triển các tiêu chuẩn
mở cho thiết bị di động.
Ngày 9 tháng 12 năm 2008, thêm 14 thành viên mới gia nhập dự án Android được công bố, gồm
có ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony
Ericsson, Toshiba Corp, và Vodafone Group Plc.
Giấy phép:
Trừ những giai đoạn cập nhật ngắn, Android đã lưu hành với mã nguồn mở kể từ ngày 21
tháng 10 năm 2008. Google đã mở toàn bộ mã nguồn (bao gồm cả các ngăn xếp mang và
điện thoại) theo giấy phép Apache.
Với giấy phép Apache, các nhà cung cấp có thể thêm những mở rộng thương mại mà không
cần chuyển chúng thành mã nguồn mở(theo Wikipedia).
1.1.3.Các phiên bản Android:
Android đã trải qua một số các cập nhật kể từ lần đầu phát hành. Những cập nhật này nhìn
chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới vào hệ điều hành.
1.5 (Cupcake) Based
on Linux Kernel
2.6.27 :
Ngày 30 tháng 4 năm 2009, bản cập nhật 1.5 chính thức (Cupcake) cho
Android được phát hành. Trong đó bao gồm một số tính năng mới và
các cập nhật về giao diện người dùng (UI):
 Khả năng ghi lại và xem video thông qua chế độ máy ghi hình
(camcorder)
 Tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại
 Bàn phím ảo mới với khả năng đoán trước văn bản
 Hỗ trợ bluetooth A2DP và AVRCP
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 8
 Khả năng tự động kết nối với một thiết bị Bluetooth trong một
khoảng cách nhất định
 Các widget và thư mục (folder) mới có thể chuyển đến the
Home screens
 Chuyển tiếp màn hình động
1.6 (Donut) Based on
Linux Kernel 2.6.29
Ngày 15/9/2009, Phiên bản hệ điều hành Android 1.6 (Donut) và SDK
được chính thức phát hành. Phiên bản được bổ sung thêm 1 vài tính
năng như:
 Cải thiện giao diện và tính năng Android Market
 Cải thiện và làm mới giao diện ứng dụng camera, camcorder, và
galary.
 Gallery hỗ trợ người dùng xóa cùng lúc nhiều ảnh.
 Hỗ trợ tìm kiếm bằng giọng nói Voice Search, giúp người dùng
thao tác nhanh đến các ứng dụng hỗ trợ tìm kiếm , gọi điện ,
danh bạ ...
 Nâng cấp tính năng tìm kiếm searching bookmarks, history,
contacts, và từ web thông qua màn hình home.
 Hỗ trợ cao nghệ CDMA/EVDO, 802.1x, VPNs, gestures, và text-
to-speech .
 Hỗ trợ màn hình WVGA .
 Tăng tốc tìm kiếm và ứng dụng Camera.
2.0/2.1 (Eclair) Based
on Linux Kernel
2.6.29
Ngày 26/10/2009, phiên bản hệ điều hành Android 2.0 (Eclair) và SDK chính
thức được phát hành với nhiều tính năng mới như :
 Tăng tốc phần cứng
 Hỗ trợ nhiều màn hình home và độ phân giải khác nhau
 Thay đổi giao diện.
 Trình duyệt webm mới Browser UI và hỗ trợ HTML5.
 Giao diện contact lists (danh bạ) mới .
 Hiển thị hình nền tỉ lệ trắng đen tốt hơn.
 Cải thiện Google Maps 3.1.2
 Hỗ trợ Microsoft Exchange.
 Hỗ trợ đèn flash cho Camera
 Hỗ trợ Digital Zoom
 MotionEvent quản lý và hỗ trợ tốt hơn cho multi-touch .
 Cải thiện bàn phím.
 Hỗ trợ Bluetooth 2.1
 Thêm ứng dụng Live Wallpapers
Android 2.0.1 SDK chính thức ra mắt ngày 3/12/2009.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 9
Android 2.1 SDK chính thức ra mắt ngày 12/1/2010.
2.2 (Froyo) Based on
Linux Kernel 2.6.32:
Ngày 20 tháng 5 năm 2010, bản SDK 2.2 (Froyo) đã được phát hành. Các thay
đổi bao gồm:
 Tối ưu hóa toàn bộ hệ điều hành Android về tốc độ, bộ nhớ và hiệu
năng
 Tăng tốc với bộ thư viện JIT mới.
 Tích hợp công nghệ Chrome's V8 JavaScript vào trình duyệt web của
Android.
 Cải thiện hỗ trợ Microsoft Exchange support (security policies, auto-
discovery, GAL look-up, calendar synchronization, remote wipe)
 Cải thiện và tăng tốc khởi động các ứng dụng.
 Hỗ trợ USB tethering và WiFi hotspot .
 Nâng cấp Android Market , hỗ trợ tự động nâng cấp phần mềm.
 Chuyển đổi nhanh giữa các bàn phím ảo và các bộ từ điển.
 Hỗ trợ Voice dialing và chia sẽ danh bạ qua Bluetooth
 Hỗ trợ upload file qua trình duyệt.
 Hỗ trợ cài phần mềm vào thẻ nhớ.
 Hỗ trợ lướt web , xem video và chơi game flash với Adobe Flash 10.1.
Gingerbread, Based
on Linux Kernel
2.6.33 or 34:
Các tính năng mới bao gồm:
 Hỗ trợ phát lại video Webm
 Cải thiện chức năng Copy-paste
Android 3.0(tên mã
Honeycomb)
Ra mắt 1-2011,chạy trên máy tính bảng Xoom của Motorola,các tính năng
mới:
Theo thẻ chứ không theo cửa sổ
Trên các smartphone, trình duyệt của Android cho phép bạn lựa chọn giữa
các website trên các cửa sổ khác biệt bằng các chuyển đổi thông qua việc
nhấp vào một nút và tiếp cận các cửa sổ. Điều này phù hợp cho smartphone,
bởi vì các thẻ (tab) sẽ bị kích cỡ màn hình của thiết bị hạn chế.
Nhưng với máy tính bảng, tính năng “cửa sổ” lại trở thành một sự khó chịu
lớn nhất. Vì thế trình duyệt của Honeycomb sẽ hỗ trợ duyệt web thẻ, nghĩ là
sẽ giống với trải nghiệm web trên máy vi tính hơn smartphone.
Gmail tiện lợi hơn với 2 cột và “Thanh hành động”
Không giống các phiên bản Gmail trên các smartphone nền tảng Android chỉ
hiển thị đơn giản một cột dài, phiên bản Honeycomb sẽ chia thành 2 cột để
bạn có thể quản lý và di chuyển thư từ. Thay vì phải click vào các cửa sổ riêng
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 10
biệt để theo dõi thư đã gửi hay đã xóa, bạn có thể vào các thư mục trên
thông qua cột bên trái.
Nhưng phần thú vị nhất của việc nâng cấp Gmail đó là “Thanh hành động”
(Action Bar). Theo Google, Thanh hành động “luôn hiển thị khi một ứng dụng
đang mở, dù nội dung, theme hay tính năng khác bị quản lý bởi các ứng dụng
chứ không phải là hệ thống. Trong trường hợp của Gmail, Thanh hành động
sẽ được ưu tiên để có thể di chuyển thư tín từ thư mục này đến thư mục
khác.
Hỗ trợ đồ họa 3D
Andy Rubin (Phó chủ tịch Kỹ thuật Google, phụ trách Android) đã cho thấy
khả năng tích hợp đồ họa 3D của Honeycomb vào cuối năm trước bằng việc
trình diễn bản mẫu máy tính bảng Android của Motorola có khả năng hỗ trợ
phiên bản Google Maps 3D, hiển thị các ngôi nhà và cao ốc. Hiện Google đã
cung cấp thêm nhiều thông tin về cơ chế đồ họa 3D của HĐH này –
Renderscript - được miêu tả là “một ý tưởng về cách tạo nên hiệu ứng 3D cao
cấp cho các ứng dụng, hình nền, carousel v.v..” Theo Google, Renderscript
bao gồm API cho đồ họa 3D có thể cung cấp một “nền tảng ngôn ngữ đổ
bóng (shader) độc lập” có thế giúp các nhà phát triển kiến lập nhiều hình
dáng và kết cấu thực tế hơn trên sản phẩm 3D của họ.
Thêm các tính năng hỗ trợ doanh nghiệp.
Android đã có bản cập nhật quan trọng đầu tiên cho doanh nghiệp vào mùa
hè trước, khi Android 2.2 tiếp cận thị trường. Trong số đó là việc Froyo giúp
bộ phận Tin học có khả năng xóa hoặc tăng cường bảo mật cho các mật khẩu,
cùng với đó là việc người dùng doanh nghiệp có thể nhận được sự hỗ trợ của
Exchange Calendars và tự động tìm kiếm để đồng bộ hóa tài khoản Exchange
một cách dễ nhất. Google cho biết Honeycomb sẽ thêm vào tính năng cho
doanh nghiệp bằng các cho phép các nhà phát triển ứng dụng mảng này có
thể hỗ trợ cho “các chính sách mới, bao gồm cả chính sách mã hóa lưu trữ,
mật khẩu có thời hạn, lịch sử mật khẩu và việc yêu cầu mật khẩu chứa nhiều
dạng ký tự.”
Thiết kế lại bàn phím, thêm Cut và Paste
Cuối cùng thì Google cũng thiết kế lại bàn phím trên Android lớn hơn bằng
việc thêm vào “đổ bóng và đổi vị trí” các phím cho phù hợp với việc gõ bằng
cả bàn tay chứ không phải một hai ngón. Không chỉ vậy, nó còn có phím Tab,
giúp bạn không phải nhấn space nhiều lần để tạo thụt đầu dòng đầu mỗi
đoạn.
Việc nhấn và giữ các phím xác định sẽ mở một menu để bạn có thể thêm vào
các ký tự đặc biệt. Ví như, nếu bạn giữ phím “e”, bạn có thể lựa chọn các ký
tự "é," "ë," hay "ê” để thêm vào. Dù đó là một tính năng khá hữu ích, nhưng
bạn cũng nên nhớ là đừng để tay lên một điểm qua lâu, nếu không muốn văn
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 11
bản trang trọng của bạn sở hữu vài ba ký tự lạ hoắc.
Thêm vào đó, Google cũng thay đổi tính năng cắt&dán của máy tính bảng và
cho phép người dùng “nhanh chóng chọn một từ bằng cách nhấn và giữ sau
đó chỉnh khu vực cần chọn bằng cách kéo một mũi tên tới vị trí khác.” Thanh
hành động đề cập ở trên cũng có thể giúp người dùng có lựa chọn cắt, sao
chép và dán nhanh.
(nguồn:Wikipedia và Internet)
1.1.4.So sánh Android với các hệ điều hành khác:
1) So sánh hệ điều hành Android với các hệ điều hành di động khác.
 Giống nhau : Đều là hệ điều hành di động nên mang đầy đủ bản chất của hệ điều hành di động nói
chung. (Đã đề cập ở trên)
 Khác nhau :
 Android là hệ điều hành mã nguồn mở và miễn phí trong khi các hệ điều hành di động còn lại
đều là nguồn đóng và có phí (khi một hãng thứ hai sử dụng).
 Android được phát triển từ nhân linux do đó nó có thể chạy tốt trên nhiều dòng điện thoại
khác nhau. Có độ tương thích cao với các loại phần cứng khác nhau nhiều hơn so với các hệ
điều hành di động còn lại.
 Các ứng dụng chạy trên android được viết bằng Java trong khi đó, ứng dụng trên các hệ điều
hành khác chủ yếu là viết bằng C/C++/Object C. Ngay cả Symbian có hỗ trợ Java thì cũng khác so
với Android, trong khi hệ điều hành Android sử dụng máy ảo Java là Dalvik VM do chính Google
phát triển thì Symbian lại sử áydụng máy ảo Java là J2ME của Sun.
2)Về lĩnh vực máy tính bảng,Android cũng đang phát triển không ngừng lớn mạnh,sánh ngang cùng với
iPad của Apple ra đời trước đó và nhiều hãng sản xuất máy tính bảng khác như BlackBerry,…
1.2.Kiến trúc của Android:
1.2.1.Phân tầng Android:
Hệ điều hành Android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (Phiên bản 2.6), tầng Libraries &
Android runtime , tầng Application Framework và trên cùng là tầng Application(như hình 1.1).
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 12
Hình 1.1:phân tầng kiến trúc Android
1. Tầng hạt nhân Linux (Linux Kernel layer)
Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt nhân linux phiên bản 2.6,
điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi hoạt động của điện thoại muốn thi hành được thì
đều được thực hiện ở mức cấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao
tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình (process).
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nâng cấp và sửa đổi rất nhiều
để phù hợp với tính chất của những thiết bị cầm tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ,
kích thước màn hình, nhu cần kết nối mạng không dây... Tầng này có các thành yếu phần chủ:
 Display Driver : điều khiển việc hiển thị lên màn hình cũng như thu nhận những điều khiển
của người dùng lên màn hình (di chuyển, cảm ứng...)
 Camera Driver : điều kiển hoạt động của camera, nhận luồng dữ liệu từ camera trả về.
 Bluetooth Driver : điều khiển thiết bị phát và thu sóng Bluetooth.
 USB driver : quản lý hoạt động của các cổng giao tiếp USB
 Keypad driver : điều khiển bàn phím
 Wifi Driver : chịu trách nhiệm về việc thu phát sóng wifi
 Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu dạng audio thành
tín hiệu số và ngược lại
 Binder IPC Driver : chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến như
CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện.
 M-System Driver : quản lý việc đọc ghi... lên các thiết bị nhớ như thẻ SD, flash
 Power Madagement : giám sát việc tiêu thụ điện năng.
2. Tầng Library và android runtime
Phần này có 2 thành phần là phần Library và Android Runtime
a. Phần Libraries. Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể
sử dụng, các thư viện đó được tập hợp thành một số nhóm như :
 Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn C,
 được sử dụng chỉ bởi hệ điều hành
 Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phát và ghi các loại
định dạng âm thanh, hình ảnh, video thông dụng.
 Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên web, được sử
dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như để các ứng dụng
khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều công nghệ mạnh mẽ như
HTML5, JavaScript, CSS, DOM, AJAX…
 Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng.
 ….
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 13
b. Phần Android runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt
động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường. Thứ
nhất là các thư viện lõi (Core Library) , chứa các lớp như JAVA IO, Collections, File Access.
Thứ hai là một máy ảo java (Dalvik Virtual Machine). Mặc dù cũng được viết từ ngôn ngữ
Java nhưng một ứng dụng Java của hệ điều hành Android không được chạy bằng JRE của
Sun (nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển.
3. Tầng Application Framework.
Tầng này xây dựng bộ công cụ - các phần tử ở mức cao để các lập trình viên có thể nhanh
chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử dụng chung để tiết kiệm
tài nguyên.
Đây là một nền tảng mở, điều đó có 2 điều lợi:
 Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hình điện .
thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style hợp thị hiếu người
dùng.Vì thế nên tuy cùng chung nền tảng android mà điện thoại của Google có thể
khác hẳn với Motorola, HTC, T-Mobile, Samsung...
 Với lập trình viên : Cho phép lập trình viên có thể sử dụng các API ở tầng trên mà
không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do
sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc. Một tập
hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền,
liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao,...
Giới thiệu một số thành phần của phần này :
 Activity Manager : quản lý các chu kỳ sống của một ứng dụng cũng
như cung cấp công cụ điều khiển các Activity.
 Telephony Manager : cung cấp công cụ để thực hiện việc liên lạc
như gọi điện thoại
 XMPP Service : cung cấp công cụ để liên lạc trong thời gian thực
 Location Manager : cho phép xác định vị trí của điện thoại thoại
dựa vào hệ thống định vị toàn cầu GPS và Google Maps.
 Window Manager : quản lý việc xây dựng và hiển thị các giao diện
người dùng cũng như tổ chức quản lý các giao diện giữa các ứng
dụng.
 Notication Manager : quản lý việc hiển thị các thông báo (như báo
có tin nhắn, có e-mail mới..)
 Resource Manager : quản lý tài nguyên tĩnh của các ứng dụng bao
gồm các file hình ảnh, âm thanh, layout, string,…(những thành
phần không được viết bởi ngôn ngữ lập trình).
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 14
 ….
4). Tầng Application : Ðây là lớp ứng dụng giao tiếp với nguời dùng, bao gồm các ứng
dụng như :
 Các ứng dụng cơ bản, đuợc cài đặt đi liền với hệ điều hành là gọi điện(phone),
quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin (SMS), lịch làm việc
(Calendar), đọc e-mail (Email-Client), bản dồ (Map), quay phim chụp ảnh
(camera)...
 Các ứng dụng đuợc cài thêm nhu các phần mềm chứng khoán (Stock), các trò
chơi (Game), từ điển,...
Các chương trình có các đặc điểm là :
 Viết bằng Java, phần mở rộng là .apk
 Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng
lên để phục vụ cho nó. Nó có thể là một Active Program : chương trình có giao
diện với người sử dụng hoặc là một background : chương trình chạy nền hay là
dịch vụ.
 Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng
dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó
có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
 Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn khi
sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
 Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động
khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền. Các
ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dung quá
5~10% công suất CPU, điều đó nhằn để tránh độc quyền trong việc sử dụng
CPU.
 Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu.
1.2.2.Hệ thống tệp tin trên Android:
Hệ thống quản lý tập tin trong android là được phát triển từ linux nên có nhiều đặc điểm giống
với hệ thống quản lý tập tin trên linux. Đó là những đặc điểm về quy tắc đặt tên file, đường dẫn
thư mục, hệ thống cây thư mục, những thư mục đặc trưng, hệ thống quyền hạn của file đối với
người/ nhóm sử dụng trên hệ thống. Cũng giống như linux, trên android có thể thực thi nhiều
lệnh liên quan đến hệ thống file như chmod, chown, chgrp... để chỉnh sửa thuộc tính, hệ thống
quyền hạn trên file.
a. Tổng quan về hệ thống file trên Android :
 Trong Android, các file duợc tổ chức thành các thu mục, theo mô hình phân cấp.
Tham chiếu dến một file bằng tên và duờng dẫn. Các câu lệnh thao tác file cho phép
thực hiện các chức nang nhu dịch chuyển, sao chép toàn bộ thu mục cùng với các thu
mục con chứa trong nó.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 15
 Có thể sử dụng các ký tự, dấu gạch duới, chữ số, dấu chấm và dấu phảy dể dặt tên file.
Không duợc bắt dầu một tên file bằng dấu chấm hay chữ số. Những ký tự khác nhu ‘/’,
‘?’, ‘*’, là ký tự dặc biệt duợc dành riêng cho hệ thống. Chiều dài của tên file có thể tới
256 ký tự. Trong hệ diều hành Android có sự phân biệt tên file chữ hoa và chữ thuờng,
diều dó có nghia là trong cùng 1 thu mục có thể tồn tại những file có tên là File, FILE,
file.. và chúng là những file khác nhau..
 Tất cả các file trong Android có chung cấu trúc vật lý là chuỗi các byte (byte stream).
Cấu trúc thống nhất này cho phép Android áp dụng khái niệm file cho mọi thành phần
dữ liệu trong hệ thống. Thư mục cũng nhu các thiết bị duợc xem nhu file. Chính việc
xem mọi thứ nhu các file cho phép Android quản lý và chuyển dổi dữ liệu một cách dễ
dàng. Một thu mục chứa các thông tin về thư mục, đuợc tổ chức theo một định dạng
đặc biệt. Các thành phần đuợc xem nhu các file, chúng đuợc phân biệt dựa trên kiểu file:
ordinary file, directory file, character device file, và block device file.
b. Các kiểu file trên android:
- Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin) và folder
(hay directory : thư mục) là 2 thành phần khác hẳn nhau. Tuy nhiên trên hệ điều hành
Android (cũng như Linux) thì coi directory cũng là file và nó là một loại file đặc biệt. Thực
tế còn một số loại file nữa có thể liệt kê theo bảng sau(như hình 1.2) :
Chữ cái biểu diễn Kiểu file
D thư mục (directory)
b file kiểu khối (block-type special file)
C file kiểu ký tự (character-type special file)
L liên kết tượng trưng (symbolic link)
P file đường ống (pipe)
S Socket
- file bình thường (regular file)
Hình 1.2: Bảng liệt kê một số kiểu file trong Linux
c. Tổ chức quyền sở hữu và quyền hạn trên file:
Tương tự trên hệ thống linux, trên hệ điều hành android, một file có thể liên kết với một
người sử dụng và một nhóm người sử dụng. Sự liên kết đó là một tập hợp các quyền
hạn truy cập bao gồm quyền được phép đọc (read), được phép ghi (write) và được
phép thực thi (execute).
Cụ thể như sau: Một file sẻ có những quyền hạn tương ứng với 9 ký tự theo mẫu sau :
với 3 ký tự “r,w,x” nghĩa là có quyền tương ứng với ký tự viết tắt đó,” –“ nghĩa là không
có quyền hạn đó(hình 1.3):
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 16
Hình 1.3:một số quyền làm việc với file
 3 ký tự đầu tiên là quyền hạn chủ nhân file
 3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file
 3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file.
Ví dụ : Một file có dãy ký tự biểu diễn quyền hạn là rwxr-xr—thì điều đó có nghĩa là:
 3 ký tự đầu là “rwx” : chủ nhân có thể đọc, ghi và thực thi file
 3 ký tự tiếp theo là “r-x” thì nhóm tài khoản sở hữu file có quyền đọc và thực thi file
chứ không có quyền ghi, chỉnh sửa file.
 3 ký tự cuối là “r—“ nghĩa là những người không sở hữu file chỉ được phép đọc mà
không thể chỉnh sửa hay thực thi file.
Trên hệ thống Android, để biết xem được quyền hạn đó, ta có thể sử dụng câu lệnh là:ls
–l–d.
Ví dụ : ls -l -d /mnt/sdcard/Bachkhoa để xem quyền hạn của file
/mnt/sdcard/Bachkhoa thì có thể trả về kết quả như sau :
d---rwxr-x system sdcard_rw 2010-12-29 21:00 Bachkhoa
Thì những thông tin có thể lấy về là :
 Ký tự dầu tiên là chữ d : vậy file dó có kiểu là thu mục hay là file bao
hàm
 Chuỗi ghi quyền hạn là “---rwxr-x” thì có nghĩa:
o “---“:nguời sở hữu không đuợc phép đọc, ghi, thực thi file
o “rwx”: nhóm tài khoản sử hữu đuợc phép đọc, ghi, thực thi file
o “r-x” : những nguời không sở hữu file duợc phép đọc và thực thi
file nhưng không đuợc phép chỉnh sửa hay ghi lên file.
 Chuỗi miêu tả file : sdcard_rw nghia là dây thuộc thiết bị thẻ nhớ sd,
dọc và ghi duợc.
 Bachkhoa : tên của file.
 2011-03-11 21:00 :thời gian chỉnh sửa lần cuối.
Ngoài ra có 2 lệnh khác cũng hữu dụng là lệnh chown để thay đổi quyền sở hữu file,
lệnh chmod để thay đổi quyền hạn liên quan đến file và lệnh chgrp để thay đổi nhóm
người sở hữu file.
d. Cây thư mục trên hệ điều hành Android:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 17
Thư mục (hay có thể gọi là file) root là thư mục gốc của tất cả các file thư mục còn lại. Dưới nó
có chứa một số file thư mục hệ thống. Mỗi thư mục (trừ thư mục root) đều có một thư mục cha
chứa nó, bản thân nó cũng có thể có nhiều file thư mục con. Cấu trúc đó có thể mô tả bằng một
cây thư mục có dạng như sau (hình 1.4):
Hình 1.4:cấu trúc một cây thư mục đơn giản
Giới thiệu một vài thu mục tiêu biểu :
 /(root) : Là thu mục gốc,là thu mục duy nhất không có thu mục cha
 / mnt : thu mục chứa thiết bị luu dộng (removeable)
 /system : chứa những thành phần co bản nhất của hệ thống
 /ect : chứa những file cấu hình của hệ thống, nó cực kỳ quan trọng vì sự hoạt dộng của
hệ thống dều bị chi phối ở những file cấu hình này.
 /system/lost+found : chứa những tập tin bị mất lúc khởi dộng máy
 /system/font : chứa những font chữ hiển thị duợc
 /system/lib : chứa các thu viện dể các phần mềm hoạt dộng (các phần mềm viết bằng
ngôn ngữ java)
 /system/app : chứa các file apk của phần mềm. (Các file cài dặt ứng dụng, kiểu nhu MSI
trong window hay dev trong Linux)
 /system/bin : chứa các chuong trình nội trú của hệ thống.
 ....
II.Các công cụ lập trình Android:
2.1.Giới thiệu về các công cụ lập trình Android:
Như đã nói ở phần trước,hệ điều hành Andoird đặc biệt là có nhiều API hữu ích cho các nhà phát triển
phần mềm, nhà phát triển ROM có thể xây dựng nên nhiều ứng dụng, hệ thống khác nhau.Mặt
khác,Android còn là hệ điều hành mã nguồn mở nên hoàn toàn miễn phí nên các nhà phát triển ứng
dụng (developers) có thể thoải mái phát triển ứng dụng trên nền Android mà không phải lo lắng về vấn
đề bản quyền(những điều khoản ràng buộc chặt chẽ,hạn chế một số quyền,thủ tục đăng kí phức tạp,…)
như trong một số hệ điều hành di động khác như iOS của Apple,Symbian của Nokia,…Ngoài ra việc hệ
cachemntsystemetcvar
lost+found
framework
libfontbin
app
/(root)
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 18
điều hành Android dựa trên nền tảng Linux và được sử dụng ngày càng phổ biến(theo thống kê thì
Android đang là hệ điều hành được ưa chuộng nhất tại Mĩ trên các thiết bị di động) đồng nghĩa với việc
giới lập trình viên có thể với sự tin tưởng là ứng dụng được viết ra sẽ có thể chạy được ngay trên nhiều
dòng di động của các hãng khác nhau. Họ ít phải quan tâm là đang phát triển cho loại di động nào, phiên
bản bao nhiêu vì nền tảng Android là chung cho nhiều dòng máy, máy ảo Java đã chịu trách nhiệm thực
thi những ứng dụng phù hợp với mỗi dòng di động mà nó đang chạy. Tất cả các chương trình ứng dụng
được viết bằng ngôn ngữ Java kết hợp với XML nên có khả năng khả chuyển cao.Vì vậy có khá nhiều
công cụ phát triển ứng dụng cho Android.Trong phần này em xin giới thiệu hai công cụ mã nguồn mở
trong số các công cụ phổ biến nhất là Eclipse và Netbean.Đầu tiên là với Eclipse.
2.2.Lập trình Android với Eclipse:
2.2.1.Cài đặt các công cụ cần thiết để lập trình Android trên Eclipse:
Đầu tiên để phát triển ứng dụng cho Android,ta cần phải cài đặt môi trường phát triển cho nó trên máy
tính,và Google android SDK là thứ đầu tiên phải có,nhưng nếu chỉ có mỗi bộ android SDK thôi thì chưa
đủ mà cần có thêm một môi trường phát triển tích hợp(IDE) mà cụ thể ở đây là eclipse và một môi
trường java(nền tảng ứng dụng của Android là dựa trên java).
a.Các quá trình cài đặt và cấu hình Eclipse:
 Bước 1:sau khi download về android SDK ta sẽ giải nén vào một thư mục nào đấy(ví dụ
c:android) rồi chạy file SDK Manager.exe để tải về các gói và công cụ cần thiết cho việc lập
trình(hình 1):
 Bước 2:tiếp theo là tích hợp Android SDK vào eclipse: khởi chạy Eclipse, vào Help -> Install new
softwares. Chọn Add, gõ vào ô Name tên tùy ý và tại ô Location gõ vào địa chỉ để tải về
ADT: http://dl-ssl.google.com/android/eclipse/.Dưới đây là hình ảnh một số bước(hình 2 và hình
3):
 Bước 3:tiếp tục là cấu hình Android: mở Eclipse  window  preferences  Android  trong
mục SDK location chọn Browse  đưa đường dẫn đến thư mục SDK(thư mục mà ta mới
download về và giải nén c:android)  bấm apply.
 Bước 4:tạo một điện thoại ảo (AVD)
 Mở eclipse  window  Android SDK and AVD manager  ở cái cửa sổ mới đó,ta sẽ
chọn mục Virtual devices  bấm nút New…
 Mục Name: đây là mục đặt tên cho AVD,ta có thể sử dụng các kí tự “A->Z”,”a->z”,chữ số
nhưng sao cho dễ nhớ và tiện dụng nhất.
 Mục target: dựa trên các nền tảng Android,từ Android 1.0 cho đến Android 2.2,ví dụ
như:Android 1.0 -> target:1,Android 1.1 -> target :2,Android 2.2 -> target :8
 Sdcard size: là kích cỡ thẻ nhớ ảo cho Android (tùy chọn).
 Sau đó bấm Create AVD.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 19
Hoặc ta cũng có thể tạo AVD theo cách khác sử dụng command prompt:chuyển làm việc vào thư
mục tools của Android SDK,tại đây gõ lệnh: android create avd --target 8 --name my_avd với my_avd là
tên máy ảo avd.
Hình 2.1.1:chọn một số gói ứng dụng cần thiết
Hình 2.1.2:tích hợp android SDK vào eclipse
Cuối cùng là tạo một project:
Đầu tiên vào Eclipse->File > New > Project>Android>Android Project gồm có:
-Project name:tên dự án trên eclipse
-Build Target: chọn phiên bản android và API tùy chọn.
-Application name:tên ứng dụng tùy chọn sẽ được xuất hiện.
-Package name: android yêu cầu phải cho package vào các thư mục vì thế khi điền tên package phải
điền tên theo kiểu phân cấp như folder1.folder2....NamePackage(như ở ví dụ này là myApp.vidu 1)và
android cũng không chấp nhận tên package đứng 1 mình, cái này để quản lý dễ hơn khi số lượng ứng
dụng nhiều. Khi vào thư mục chứa android data ,Eclipse sẽ tạo sẵn một thư mục là myApp .
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 20
-Create Activity:nếu được điền,android sẽ tạo một Activity bắt đầu khởi động đầu tiên trong ứng dụng.
-Min SDK Version:chỉ ra ứng dụng sẽ được xây dựng trên nền tảng nào,ví dụ:android 8
hình 2.1.3:điền url kho lưu trữ của Google
b.Sau khi đã cấu hình xong eclipse và cho chạy thử ta sẽ thấy trình giả lập Android (emulator) cho
ta kết quả như thế này(hình 2.1.4):
Hình 2.1.4:emulator
2.2.2.Các thành phần trong ứng dụng Android:
Các thành phần của một ứng dụng của Android chia làm sáu loại bao gồm:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 21
1.Activity: một cách đơn giản thì Activity là nền của một ứng dụng. Một Activity đại diện cho một giao
diện người sử dụng trực quan, ở đó người dùng có thể thực hiện những gì họ muốn làm. Ví dụ một
activity thể hiện một màn hình ở đó có danh bạ của người sử dụng, người sử dụng có thể lựa chọn danh
bạ hiển thị số điện thoại hoặc hiển thị ảnh và chú thích của từng contact. Một chương trình nhắn tin
SMS có thể bao gồm các activity là : một activity thể hiện một danh sách các số liên lạc (có thể gửi được
tin nhắn) , một activity thể hiện một trang để người dùng viết tin nhắn và lựa chọn gửi đến một danh bạ
nào đó, và một activity khác lại cho phép xem lại các tin đã gửi hoặc chỉnh sửa chúng. Mặc dù tất cả các
activity kết hợp lại mới tạo nên ứng dụng có giao diện cho người sử dụng, nhưng mỗi activity vẫn hoạt
động độc lập với những cái còn lại. Mỗi activity là một lớp con của lớp cơ sở Activity.
Vì một ứng dụng có thể bao gồm một hoặc nhiều activity và do đó có bao nhiêu activity, mỗi activity
hoạt động ra sao, giao diện trông thế nào là do ứng dụng quyết định và thiết kế. Thông thường thì có
một activity được đánh dấu là activty đầu tiên, và người dùng có thể thấy nó ngay khi ứng dụng được
khởi chạy. Mỗi một activity thì có một cửa sổ làm việc để sử dụng và thực thi trên đó. Thông thường mỗi
cửa sổ này đều lấp đầy màn hình. Nhưng cũng có khi nó nhỏ hơn và chèn ngay trên một cửa sổ làm việc
khác.
Những nội dung trực quan ở mỗi cửa sổ làm việc được cung cấp bởi một hệ thống các view, những đối
tượng được thừa kế từ lớp cơ sở View. Mỗi một view thì điều khiển một khu vực có dạng hình chữ nhật
đặc biệt bên trong cửa sổ. Mỗi lớp cha, parent views, bao gồm và tổ chức những tập hợp cho các lớp
con của nó. Những view là nút lá (không có con) thực thi trên khu vực mà chúng điều khiển và trả lời các
kích hoạt do người dùng tác động vào khu vực nó kiểm soát. Do đó có thể nói, mỗi view là nơi mà
activity tương tác với người sử dụng. Ví dụ, một view có thể hiển thị một ảnh mà khi người sử dụng click
vào cái ảnh đó sẽ có một lệnh được thực thi. Android có sẵn một số view cho ta sử dụng như là button
(nút), text field (trường văn bản), scroll bar (thanh cuộn) , menu item, check box (hộp check),…
Một view được đặt vào bên trong một cửa sổ của activity bởi method Activity.setContentView(). Object
ContentView là object gốc của cây phân cấp view. (tìm hiểu thêm ở phần user interface). Khi khởi động
một ứng dụng Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị màn hình giao
diện của ứng dụng cho phép người dùng tương tác.
2.Service: thành phần chạy ẩn trong Android. Một service thì không có giao diện trực quan, nhưng nó có
thể chạy ngầm định trên thiết bị và không giới hạn thời gian hoạt động. Ví dụ như một service giúp thiết
bị có thể chơi nhạc ngoài desktop trong khi người sử dụng đang làm công việc khác, hay nó có thể tải dữ
liệu trên mạng về máy, hoặc tính toán công việc nào đó và sẵn sàng cung cấp kết quả khi có một activity
cần đến nó. Mỗi service thì được thừa kế từ lớp cơ sở là Service.
Ví dụ như trình chơi nhạc từ một play list. Trình chơi nhạc chắc chắn có một hoặc nhiều hơn một
activity có khả năng để người sử dụng chọn bài hát và bắt đầu chơi chúng. Tuy nhiên người sử dụng
mong muốn khi thoát khỏi trình chơi nhạc, nhạc vẫn được chơi bình thường, và activity thì không có khả
năng thực hiện điều đó vì nó không giao tiếp với người dùng nữa. Để giữ cho nhạc vẫn tiếp tục được
chơi thì activity của trình chơi nhạc gọi một service đến và chạy nó ở dạng ngầm định. Hệ thống sẽ tiếp
tục chạy service này ngay cả khi activity thoát ra ngoài (không còn trên màn hình nữa).
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 22
Hoàn toàn có thể kết nối tới một service đang chạy hoặc nếu chúng chưa bắt đầu chạy thì có thể khiến
chúng chạy. Khi đã kết nối với service, bạn có thể giao tiếp với nó thông qua một giao diện mà service
hiển thị. Ví dụ với service chơi nhạc thì, người sử dụng có thể play, stop, pause, next, rewind hoặc chơi
lại từ đầu.
Giống như activity và các thành phần khác, service chạy trên luồng xử lý chính của ứng dụng. Do đó
chúng không thể ngăn chặn các thành phần khác, hay can thiệp vào giao diện của người dùng. Chúng
thường sinh ra một luồng mới cho các nhiệm vụ bị chi phối thời gian thực hiện. Service sử dụng để cập
nhật dữ liệu, đưa ra các cảnh báo (notifications) và không bao giờ hiển thị cho người dùng thấy.
Vòng đời của Service:
-Khi có một context nào đó gọi startService() để bắt đầu service mong muốn. Nếu service đó chưa được
tạo thì sẽ gọi phương thức onCreate() rồi gọi tiếp onStart() và khi đó service chạy nền bên dưới.
-Nếu sau đó lại có một context muốn bắt đầu service này mà service đã đang chạy, chỉ có phương thức
onStart() của service được gọi.
-Dù service có được gọi bắt đầu bao nhiêu lần thì cũng chỉ có một thể hiện của service và chỉ cần gọi
stopService() một lần để kết thúc service.
Hình 2.1.5:Lifecycle-startService
Lifecycle – bindService():thông thường,vòng đời của service khi có client kết nối từ đầu như sau:
– Cũng bắt đầu bằng phương thức onCreate() rồi đến onBind() và service chạy nền.
– Khi không còn client kết nối tới thì service gọi phương thức onUnbind() rồi onDestroy().
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 23
Hình 2.1.6:Lifecycle-bindService
Có một số trường hợp không thông thường, ví dụ như:
 Có một context khởi động (start) một service, sau đó có một số client kết nối (bind) tới service
 Có nhiều client cùng lúc kết nối (bind) tới service
 Một activity vừa gọi startService() vừa gọi bindService()
 …
Sử dụng service:
• Dùng trong các ứng dụng nghe nhạc.
• Dùng để xử lý các thao tác mất thời gian và không nhất thiết phải hiển thị lên activity (download,
upload…)
• Đôi khi cần một ứng dụng vận hành liên tục để xử lý những việc mong muốn mà không làm
phiền người dùng service.
• Làm những thao tác tính toán, xử lý đều đặn nào đó và kết quả khi nào người dùng cần thì mới
xem
• …
3.Content Provider: kho dữ liệu chia sẻ. Một content provider tạo ra tập hợp các dữ liệu đặc biệt của
ứng dụng này mà các ứng dụng khác có thể dùng chung. Dữ liệu này có thể được lưu ở file hệ thống,
trong hệ cơ sở dữ liệu SQLite hoặc trong bất cứ chỗ nào lưu trữ được trên thiết bị . Và cũng như những
thành phần khác thì content provider được kế thừa từ lớp ContentProvider, cài đặt các phương thức
mặc định, cho phép các ứng dụng khác có thể gọi nó ra, lưu trữ dữ liệu của nó. Tuy nhiên các ứng dụng
không thể gọi trực tiếp các phương này. Chúng gọi các phương thức này gián tiếp qua việc gọi một đối
tượng ContenResolve.Hơn thế chúng dùng content resolver và gọi những phương thức đó. Một content
resolver có thể giao tiếp đến nhiều content provider; nó cộng tác với các provider để quản lý bất kỳ giao
tiếp bên trong liên quan ,chúng dựa vào nhau để thực thi các tiến trình xử lý thông tin phức tạp. Content
Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 24
Mỗi ứng dụng Android chạy trên process của nó. Bất cứ lúc nào nó cũng quản lý được các thành phần
của nó:
 Android phải đảm bảo các process thành phẩn phải đang chạy
 Khởi tạo nếu cần thiết
 Một trường hợp tương thích của cái thành phần là có giá trị, đang khởi tạo trường hợp nếu cần
thiết.
4.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 một Activity hay Service để thực hiện công việc người sử dụng mong muốn. VD: khi mở 1 trang web,
ta gửi một intent đi để tạo một activity mới hiển thị trang web đó.Mô hình Intent:
Hình 2.1.7:Intent
trong mô hình trên Activity B chỉ trả về kết quả khi cần thiết. VD : giả sử Activity A nhắc người dùng chọn
ảnh profile ; Activity B liệt kê các ảnh trong thẻ nhớ sdcard và cho phép người dùng chọn ảnh.
-Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent, các thuộc tính
của một đối tượng Intent được miêu tả trong bảng sau:
Hình 2.1.8
5.Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới. Một bộ broadcast receiver là 1
thành phần không làm gì cả nhưng lại nhận và tương tác với các thông báo được đưa ra. Nhiều bộ phát
(broadcast) hình thành trong code của hệ điều hành – ví dụ, thông báo rằng timezone đã được thay đổi,
rằng pin yếu, hoặc thông báo người dùng vừa đổi ngôn ngữ hiển thị. Một ứng dụng cũng có thể bắt đầu
phát thông báo – ví dụ, để cho các ứng dụng khác biết dữ liệu trên mạng đã được tải về thiết bị và sẵn
sàng sử dụng. Một ứng dụng cũng có thể không có bất kì bộ thu phát nào nếu chúng không cần trả lời
các thông báo từ thiết bị hay ứng dụng khác. Tất cả các bộ thu phát thì kế thừa từ lớp cơ sở
BroadcastReceiver. Có 2 cách thu-phát đó là:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 25
 Không có thứ tự: receiver nào đủ điều kiện thì nhận hết, không phân biệt và cũng tách rời nhau.
 Có thứ tự: receiver nào đăng ký ưu tiên hơn thì nhận trước, và có thể truyền thêm thông tin xử
lý cho các receiver sau.
Vòng đời của BroadcastReceiver bản chất chỉ có duy nhất một phương thức onReceive():
 Khi có sự kiện mà BroadcastReceiver đã đăng ký nhận được phát đi, thì phương thức
onReceive() của BroadcastReceiver đó sẽ được gọi.
 Sau khi thực thi xong phương thức này, vòng đời của Receiver sẽ kết thúc.
Các bộ thu phát thì không có giao diện sử dụng, tuy nhiên chúng có thể khởi động một ứng dụng khi trả
lời thông tin mà chúng nhận được. Hoặc chúng có thể sử dụng NotificationManager để cảnh báo cho
người sử dụng biết. Các thông báo có thể gây chú ý tới người dùng theo những cách khác nhau – ví dụ
như nháy đèn màn hình, rung, chơi nhạc,… Thông thường thì chúng tạo ra 1 thông báo “cứng” trên màn
hình hiện thời của thiết bị, để người dùng có thể thấy và đọc những thông báo đó. VD: ta viết một
chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần một BroadcastReceiver
để nhận biết các Intent là các cuộc gọi tới. Một số broadcast thông dụng:
 Báo hệ thống khởi động xong
 Báo pin có sự thay đổi
 Báo có package mới cài vào hoặc xóa đi
 Báo tắt máy
 Báo cắm sạc, rút sạc…
 Thông báo tin nhắn tới
 Thông báo cắm, rút thẻ nhớ
 Thông báo có cuộc gọi đi
Ngoài ra ta cũng thể định nghĩa broadcast cho riêng mình (mục tiêu chính của việc này giúp có thể liên
lạc giữa các ứng dụng ta viết hoặc thông báo một sự kiện liên quan đến ứng dụng của bạn với các ứng
dụng khác)
6.Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động.Ví dụ như:
trong những trường hợp ta muốn hiện một thông báo về một sự kiện nào đó cho người dùng mà không
muốn ảnh hưởng đến công việc của họ hoặc không chắc họ có đang cầm điện thoại (tin nhắn, cuộc gọi,
email…) hay như ta muốn hiển thị thông tin một việc nào đó đang xảy ra trên điện thoại và mong muốn
người dùng biết (đang nghe nhạc, đang trong cuộc gọi, thiếu thẻ nhớ,…).
Activity, Service, Broadcast Receiver và Content Provider mới là những thành phần chính cấu thành nên
ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest .
2.2.3.Quản lí tiến trình(process):
Như em đã trình bày ở phần I,Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có
độ ưu tiên thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 26
1.Foreground process: là process của ứng dụng hiện thời đang được người dùng tương tác.
2.Visible process: là process của ứng dụng mà activity đang hiển thị đối với người dùng (phương thức
onPaused() của activity được gọi).
3.Service process: là Service đang chạy.
4.Background process: là process của ứng dụng mà các activity của nó ko hiển thị với người dùng
(phương thức onStoped() của activity được gọi).
5.Empty process: process không có bất cứ 1 thành phần nào hoạt động.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động hủy các process, trước tiên là các empty
process (các process không hoạt động hoặc bị corrupted).
2.2.4. Vòng đời của Activity trong Android:
Như em đã giới thiệu ở trên , Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây
dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới
được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành activity thực thi, các Activity trước đó sẽ bị
tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng.
Activity bao gồm 4 trạng thái là:
- active (running): Activity đang hiển thị trên màn hình (foreground).
- paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus). Ví dụ: một activity mới
xuất hiện hiển thị giao diện đè lên trên activity cũ, nhưng giao diện này nhỏ hơn giao diện của activity
cũ, do đó ta vẫn thấy được 1 phần giao diện của activity cũ nhưng lại không thể tương tác với nó.
- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
- 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 đó.
Biểu đồ miêu tả trạng thái Activity:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 27
Hình 2.1.9:trạng thái activity(vòng đời ứng dụng)
Các giai đoạn trong biểu đồ trạng thái trên:
 Entire lifetime: từ phương thức onCreate( ) cho tới onDestroy( )
 Visible liftetime: từ phương thức onStart( ) cho tới onStop( )
 Foreground lifetime: từ phương thức onResume( ) cho tới onPause( )
Khi xây dựng một activity ta cần xây dựng các thành phần sau:
1.Tạo Menu:
• Nhấp chuột phải vào một dòng trống trong Activity:
o Chọn Source  Override/Implement methods  chọn onCreateOptionsMenu và
onOptionsItemSelected
o Trong onCreateOptionsMenu, thêm đoạn code: menu.add(0, 111, 0, "Item1");
o Trong onOptionsItemSelected, thêm xử lý dạng:
switch (item.getItemId()) {
case 111:
//statements
break;
}
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 28
2.Khởi động activity:
Không tường minh: đoạn code bên dưới sẽ khởi động một activity nào đó đang có khả năng xem ảnh.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivity(intent);
Với cách khởi động activity không tường minh, ta sẽ cần sử dụng Intent-filter. Intent-filter sẽ giúp một
activity (chung hơn là một thành phần ứng dụng) đăng ký với hệ thống là nó có thể làm được thao tác
gì, trong nhóm nào, với loại dữ liệu nào. Như vậy khi intent và intent-filter khớp nhau, activity sẽ được
hệ thống khởi động.
3. Liên lạc giữa 2 activity:
Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent như ví dụ sau:
intent.putExtra("value1", new String("Hello world"));
intent.putExtra(“value2", new Long(100));
Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau:
getIntent().getExtras().getString("value1");
getIntent().getExtras().getLong("value2");
Có thể khởi động một activity với một yêu cầu nào đó và activity kia khi làm xong công việc sẽ trả lại kết
quả cho activity trước. Ví dụ activity A yêu cầu một activity làm giúp việc chụp ảnh, activity B đáp ứng
được việc này, sau khi user chụp ảnh xong sẽ trả lại file ảnh cho activity A.
2.2.5. XML trong Android:
Không giống như lập trình java thông thường, lập trình android ngoài các lớp được viết trong file *.java
mà còn sử dụng XML để thiết kế giao diện cho ứng dụng. Tất nhiên ta hoàn toàn có thể thiết kế một giao
diện như ý muốn mà không cần tới bất cứ dòng XML nào, nhưng sử dụng XML sẽ đơn giản công việc đi
rất nhiều. Đồng thời sử dụng XML sẽ giúp việc chỉnh sửa ứng dụng sau này trở nên dễ dàng.
Về nguyên tắc, khi lập trình ứng dụng ta thiết kế giao diện bằng XML và cài đặt các xử lý khi tương tác
với giao diện trong code.
2.2.6.Xây dựng chương trình đầu tiên:
2.2.6.1.Phần này em sẽ trình bày một ví dụ điển hình với mọi nền tảng ứng dụng là chương trình in ra
màn hình dòng chữ “Hello world!”:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 29
B1 : khởi tạo 1 project
Vào thẻ File -> New -> Project ->Android project(hoặc chọn New -> Other ->Android Project). Hoặc trên
thanh công cụ bấm vào icon như trong hình 2.1.10:
B2 : tạo một project mới
Project name: vidu 1
Build Target: Chọn Android 2.2
Application name:vidu 1
Package name: at.exam
Create activity: Nguyen Vuong Quyen(tạo một lớp con của lớp Activity, dùng để hiển thị một màn hình
ở đây là màn hình HelloWorld của chúng ta).
Min SDK version: 4 (tức SDK 1.6, ở đây chúng ta khai báo là ứng dụng này có thể đáp ứng được phiên
bản SDK cũ nhất là phiên bản nào).
Sau khi hoàn tất bấm Finish, project mới đã được tạo.
2.2.6.2.Tìm hiểu cấu trúc một project đơn giản bao gồm:
 Thư mục src chứa source code ứng dụng. Gồm các package và các class.
 Thư mục gen chứa các file tự động phát sinh (mà thường gặp nhất là R.class)
 Thư mục res để chứa các resource dùng trong ứng dụng (thông qua ID)
 Thư mục assets chứa các resource file mà ứng dụng cần dùng (dưới dạng file)
 File Manifest là file khai báo thông tin về ứng với hệ thống (như ứng dụng gồm những màn hình
nào, có service nào… xin các quyền gì, phiên bản bao nhiêu, dùng từ SDK phiên bản nào…)
 Thư mục Android 2.2:chứa các package hỗ trợ cho việc lập trình
 Ngoài ra còn có file thư viện…
2.2.6.3.Build và run một dự án:tạo file *.apk trong thư mục bin của ứng dụng
 Theo mặc định,project sẽ tự động built khi chúng ta lưu project
 Hoặc ta cũng có thể bỏ chọn build automatically trên menu Project để loại bỏ chức năng tự
động build.Để build project thủ công,click chuột phải vào project chọn build.
2.2.6.4. Chạy ứng dụng Hello World:
Bấm Ctrl + F11 để chạy ứng dụng, sẽ hiện lên emulator hoặc bấm chuột phải trên project cần run chọn
run as -> android application
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 30
Hình 2.1.11
*) Tạo UI trực tiếp từ code:
Vào mục src (chứa mã java của chương trình) để xem code:
package com.tuan10.vidu1;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Trong đó R là file được tự động sinh ra chứa tài nguyên id, R.layout.main là id của layout chính.
Và đây là file main.xml trong thư mục res/layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 31
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
*)
ở đây ta có thể soạn thảo mã mới,phát triển thêm nhiều ứng dụng phức tạp nữa,giả sử ta chỉnh sửa
đoạn mã trong file *.java trong thư mục src/at.exam trên như sau:
package com.tuan10.vidu1;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Quyenanh extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
Sau đó chọn run android applications ta sẽ có kết quả là
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 32
Hình 2.1.12
Để có thể hiển thị một hình ảnh đơn giản định dạng *.png thì trong file *.java ở phương thức onCreat()
thêm câu lệnh là:
ImageView <object_name>=new ImageView (this);//tạo một object image mới
< object_name>.setImageResource(R.drawable.helloimage);//chỉ đường dẫn đến file lưu ảnh
Hoặc trong file main.xml ,chỉnh sửa thêm thẻ <ImageView> là
<ImageView
android:id="@+id/imageview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@dra wable/icon"
/>
Chạy chương trình sau khi chỉnh sửa (hình 2.1.13):
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 33
2.2.6.5.Debug chương trình
Dể debug một ứng dụng ban đầu,click chuột phải nên tên Project,chọn Debug as->Android
application,ứng dụng sẽ khởi động debug.Có hai cách debug là sử dụng DDMS và sử dụng logcat :
a.Sử dụng DDMS(Dalvik Debug Monitor Server):
 Mở DDMS trên eclipse
 Mở DDMS trong thư mục tools của android SDK.
 DDMS:công cụ cho việc gỡ rối
 Quản lí thiết bị và bộ giả lập emulator
 Có thể giám sát ứng dụng chạy
 Giám sát việc sử dụng bộ nhớ của chương trình
 Gửi một sự kiện event đến emulator:dưới dạng một thông điệp hoặc tạo một lời gọi đến
emulator.
 Gỡ rối khi được yêu cầu.
Khi ứng dụng được khởi động,lựa chọn gói ứng dụng trên thanh tab device của DDMS,click chọn icon
màu xanh để bắt đầu debug ứng dụng này( hình 2.1.14):
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 34
b.Debug sử dụng logcat (hình 2.1.15):
Hệ thống android tạo file log của tất cả các ứng dụng bao gồm các lỗi và bản ghi của ứng dụng,và logcat
chỉ là một phần của DDMS để đọc file log của emulator hoặc device.Ứng dụng có thể ghi thông tin vào
file log sử dụng câu lệnh System.out.println(information); hoặc lớp log: Log.d(Tag,information);.
2.2.6.6.Device của Android ( hình 2.1.16):
Device cũng là một chức năng hữu ích trong Android hỗ trợ trên eclipse giúp ta quản lý thiết bị ảo cũng
như thật,do đó ta có thể xem trước chương trình đã viết. Mở Device bằng cách vào Window -> Show
View -> Device hoặc vào Window -> Show View -> Others -> Android -> Device.
Chức năng mình thường sử dụng nhất của device là Screen Capture, cực kỳ tiện để lấy ảnh minh họa làm
thuyết trình hoặc giới thiệu trên Google Market.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 35
2.3.Lập trình Android với Netbean:
Về cơ bản thì lập trình trên Netbean không khác gì nhiều với trên eclipse nên phần này em xin chỉ trình
bày về cấu hình và cài đặt plugin cho Netbean để viết các ứng dụng Android trên nền Windows:
2.3.1.Cài đặt plugin cho Netbean:
B1:mở Netbean,vào vào Tool | Plugin từ thanh menu sau đó chọn tab Setting từ hộp thoại xuất hiện
(hình 2.2.1):
B2: Ở tab Setting ta chọn nút Add -> hiện hộp thoại khác -> ở đây ta nhập tên của plugin (vd: Android
Plugin) và nhập URL trỏ tới server mà Netbean có thể tải về bản cài đặt của Android Plugin (dành riêng
cho Netbean): http://kenai.com/downloads/nbandroid/updates.xml(hình 2.2.2):
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 36
Sau đó ta chọn OK, những thông số vừa được tạo sẽ được liệt kê ở khung bên trái của tab Setting mà ta
đang mở nãy giờ (hình 2.2.3):
Nhấn vào dấu check Android Plugin nếu nó chưa check.
B4: tiếp theo ta chọn tab Availalble Plugins -> check chọn mục Android -> chọn nút Install phía dưới góc
trái của hộp thoại -> hộp thoại sau sẽ xuất hiện(hình 2.2.4):
(Nếu chưa tìm thấy Android thì ta vào ô Search ở bên phải đành vào chữ Android rồi check nó vào.)
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 37
Sau khi nhấn vào Install nó sẽ hiện ra như sau (hình 2.2.5):
Tiếp theo bạn chon Next de tiep tuc cai dat Android Plugin. Cứ bấm Next và Continue cho tới khi kết
thúc (hình 2.2.6):
2.3.2.Cấu hình Netbean:
B1: vào Netbean chọn Tools | Java Platform từ menu. Chọn Add Platform, sau đó chọn "Google Android
Open Handheld Platform" như hình sau (hình 2.2.7):
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 38
chọn Next, một hộp thoại xuất hiện yêu cầu chọn thư mục mà Android SDk đã được cài đặt trên đó, sau
đó chọn Next .
Hình 2.2.8
(nếu không tìm thấy thư mục cài đặt của Android SDK thì ta có thể thêm thư mục Android của eclipse
cũng được hoặc có thể download (ta có thể chọn windows,linux,mac OS) tại địa chỉ
http://developer.android.com/sdk/index.html sau khi download về rồi giải nén ra một thư mục nào
đó,ví dụ:c:android chẳng hạn).
-Tiếp theo đặt tên vào ô Name của platform rồi bấm Finish.
B2: Quay lại hộp thoại java Platform Manager ta sẽ thấy Android platform xuất hiện trong danh sách,ta
bấm vào nút close là đã cài xong(hình 2.2.9)
B3:sau khi đã hoàn thành các bước trên ta có thể bắt đầu viết chương trình ứng dụng cho Android
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 39
Vào file -> New Project,hộp thoại New Project hiện ra,chọn Android -> Android Application (hình 2.2.10)
Tiếp theo trong hộp thoại New Android Application ta cũng điền đầy đủ các thông số cần thiết cho một
ứng dụng mới tương tự như ở Eclipse(hình 2.2.11):
Hình 2.2.11:tạo một ứng dụng mới trên Netbean
III.Lập trình ứng dụng Android:
Trong phần này em xin trình bày sơ lược về đồ họa 2D trong Android và một chương trình Android
translator.Nhưng trước khi đi vào một ứng dụng cụ thể,em xin trình bày thêm về vòng đời một ứng
dụng trong Android để từ đó phát triển thành một phần mềm hoàn chỉnh vì theo em thì điều này là
thực sự cần thiết nếu muốn tiếp tục phát triển chương trình hơn nữa.
3.1. Life-Cycle program:
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 40
3.1.1.Các thành phần trong một ứng dụng của Android:
Một ứng dụng gồm một hoặc nhiều thành phần được định nghĩa trong file manifest.xml. Một thành
phần có là một trong các phần sau:
1. Một Activity
Một Activity hiện hữu cho một giao diện của ứng dụng. Mỗi Activity có một giao diện riêng. Activity
được đánh dấu là Activity đầu tiên sẽ được chạy khi chương trình chạy. Việc chuyển từ activity này đến
activity khác bằng việc gọi intents.
2. Một Service
Một service không có giao diện, nhưng chạy ở bên dưới chúng ta không biết được thời gian của nó. Nó
có thể kết nối tới một service đang chạy (và khởi động service nếu service đó không chạy). Trong quá
trình kết nối, bạn có thể giao tiếp với service qua một giao diện đó là serviec exposes.
3. Một broadcast receiver
Broadcast receiver là một thành phần mà không có gì nhưng nhận và phản ứng lại những thông báo
được broadcast. Nhiều broadcast gốc trong mã hệ thống (ví dụ: "you got mail") và các ứng dụng cũng có
thể khởi tạo broadcast. Broadcast receivers không hiển thị giao diện người dùng. Tuy nhiên, họ có thể
khởi tạo một Activity phản hồi lại những thông tin được nhận. Họ có thể dùng notification manager để
cảnh giác đến người dùng.
4. Một content provider
Một content provider cung cấp một tập chi tiết dữ liệu ứng dụng đến các ứng dụng khác. Dữ liệu thường
được lưu trữ ở file hệ thống, hoặc trong một SQLite database. Content Provider hiện thực một tập
phương thức chuẩn mà các ứng dụng khác có thể truy xuất và lưu trữ dữ liệu của loại nó điều khiển.
Tuy nhiên, những ứng dụng không thể gọi các phương thức trực tiếp. Hơn thế chúng dùng content
resolver và gọi những phương thức đó. Một content resolver có thể giao tiếp đến nhiều content
provider; nó cộng tác với các provider để quản lý bất kỳ giao tiếp bên trong liên quan.
Mỗi ứng dụng Android chạy trên process của nó. Bất cứ lúc nào nó cũng quản lý được các thành phần
của nó:
 Android phải đảm bảo các process thành phẩn phải đang chạy
 Khởi tạo nếu cần thiết
 Một trường hợp tương thích của cái thành phần là có giá trị, đang khởi tạo trường hợp nếu cần
thiết.
Chu kỳ ứng dụng
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 41
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 run
và sẽ còn chạy cho đến khi
1. nó không phụ thuộc
2. hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
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
1. những phần của ứng dụng mà hệ thống biết đáng chạy
2. những phần quan trong như thế nào đối với người dùng
3. bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống
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. Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activies nó
có thể visible hoặc invisible
Hình 3.1 Chu kỳ sống của ứng dụng Android
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 bắt đầu,
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ế tiếp
của stack sẽ di chuyển lên và trở thành active.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 42
Hình 3.2 Chồng Activities
Các trạng thái của chu kỳ
Một Activity chủ yếu có 3 chu kỳ chính sau:
1. Active hoặc running: Khi Activity 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.
2. 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ớ.
3. 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 tron 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.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 43
Hình 3.3 Các trạng thái của chu kỳ một Activity
Chu kỳ của ứng dụng
Hình 3.4 Chu kỳ ứng dụng Android
Các sự kiện trong chu kỳ số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 finish() (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.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 44
Hình 3.5 Các phương thức trong 1 chu kỳ của Activity
Tất cả các phương thức là những móc nối mà bạn 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.
ng của ứng dụng
7 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 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 tron
onDestroy().
Visible Lifetime
Visible lifetime của một activity diễn ra giữa lầ 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.
Foreground LifeTime
Foregroudn lifetime của một activity diễn ra giữa 2 lần gọi onResume() và onPause()
Trong khoảng thời gian này, activity ở trước tất cả activity khác và là đang tương tác với người dùng.
Một Actifity thường xuyên chuyển trạng thái giữa resumed và paused.
 onPause() được gọi khi thiết bi đi vào trạng thái sleep hoặc khi một activity mới là được start.
 onResume() được gọi khi một Activity hoặc một intent mới được delivered
Các phương thức của chu kỳ sống
Phương thức: onCreate()
 Được gọi khi activity lần đầu tiên được tạo
 Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến list và .v.v
 Phương thức này gửi qua một đối tượngBundle chứa đựng từ trạng thái trược của Activity
 Luôn theo sau bởi onStart()
Phương thức: onRestart()
 Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động lần nữa (stared again)
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 45
 Luôn theo sau bởi onStart()
Phương thức: onStart()
 Được gọi trước khi một activity visible với người dùng
 Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop() nế nó trở nên ẩn.
Phương thức: onResume()
 Được gọi trước khi activity bắt đầu tương tác với người dùng
 Tại thời điểm này activity ở trên dỉnh của stack activity.
 Luôn theo sau bởi onPause()
Phương thức: onPause()
 Được gọi khi hệ thống đang resuming activity khác
 Phương thức này là điển hình việc giữ lại không đổi dữ liệu.
 Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không được resumed ngay
cho đến khi nó trở lại.
 Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu nó trở nên visible
với người dùng.
 Trạng thái của activity có thể bị giết bởi hệ thống
Phương thức: onStop()
 Được gọi khi activity không thuộc tầm nhìn của người dùng.
 Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được resumed và bao phủ
nó.
 Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với người dùng, hoặc
onDestroy() nếu activity đang bỏ.
 Trạng thái của activity có thể bị giết bởi hệ thống
Phương thức: onDestroy()
 Được gọi trước khi activity bị hủy.
 Đó là lần gọi cuối cùng mà activity này được nhận.
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Thực	tập	cơ	sở	về	Android	
N g u y ễ n V ư ơ n g Q u y ề n Page 46
 Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm thởi bị hủy diệt để
tiết kiệm vùng nhớ.
 Bạn có thể phân bietj giữa 2 kịch bản với phương isFinshing()
 Trạng thái của activity có thể được giết bởi hệ thống.
Killable States
Activity đang ở trạng thái này có thể bị kết thúc bởi hệ thống bất kỳ lúc nào sau khi phương thức trả về.
3 phương thức (onPause(), onStop(), và onDestroy() là killable onPause() phải được gọi trước khi tiến
trình bị giết -- onStop và onDestroy có thể là không. Vì vậy chúng ta dung onPause viết bất kỳ dữ liệu
chắc để lưu trữ.
Ví dụ: Demo Life Cycle
Mục đích của ứng dụng này sẽ gọi các hàm trong Activity Life Cycle
//protected void onCreate(Bundle savedInstanceSta te);
//protected void onStart();
//protected void onRestart();
//protected void onResume();
//protected void onPause();
//protected void onStop();
//protected void onDestroy();
Tạo một ứng dụng mới trên Android với tên LifeCycle,file lifecycle.java :
java:
1. package com.android;
2. import android.app.Activity;
3. import android.content.SharedPreferences;
4. import android.os.Bundle;
5. import android.view.View;
6. import android.widget.Button;
7. import android.widget.EditText;
8. import android.widget.TextView;
9. import android.widget.Toast;
10. // Muc dich cua vi du nay la show cac su kien cua chu ky song
11. //protected void onCreate(Bundle savedInstanceSta te);
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS
Nghiên cưú và phát triển Android OS

More Related Content

What's hot

Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online MớiSlide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Hiệu Nguyễn
 
Luận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAY
Luận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAYLuận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAY
Luận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAY
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupBáo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Tinh Ngo
 
Luận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOT
Luận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOTLuận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOT
Luận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOT
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Giới thiệu về Windows 8
Giới thiệu về Windows 8Giới thiệu về Windows 8
Giới thiệu về Windows 8
Duy Lùn
 
Báo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minh
Báo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minhBáo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minh
Báo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minh
nataliej4
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
Thùy Linh
 
File systems for mobile phones or handheld devices
File systems for mobile phones or handheld devices File systems for mobile phones or handheld devices
File systems for mobile phones or handheld devices
Ram Kumar K R
 
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền androidĐồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
laonap166
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánNgo Trung
 
Android Seminar Presentation [March 2019]
Android Seminar Presentation [March 2019]Android Seminar Presentation [March 2019]
Android Seminar Presentation [March 2019]
Jowin John Chemban
 
Android architecture
Android architectureAndroid architecture
Android architecture
Saurabh Kukreja
 
Hệ điều hành windows
Hệ điều hành windowsHệ điều hành windows
Hệ điều hành windows
Hào Nghiêm Xuân
 
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSSĐề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Bài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNGBài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNGMasterCode.vn
 
Hướng dẫn xây dựng mô hình mạng với vmware
Hướng dẫn xây dựng mô hình mạng với vmwareHướng dẫn xây dựng mô hình mạng với vmware
Hướng dẫn xây dựng mô hình mạng với vmware
laonap166
 
Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big DataNguyễn Duy Nhân
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
ThiênĐàng CôngDân
 
Introduction to Mobile Development
Introduction to Mobile DevelopmentIntroduction to Mobile Development
Introduction to Mobile Development
Pragnesh Vaghela
 
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đĐề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 

What's hot (20)

Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online MớiSlide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
 
Luận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAY
Luận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAYLuận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAY
Luận văn: Xây dựng ứng dụng Android xem video trực tuyến, HAY
 
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupBáo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
 
Luận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOT
Luận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOTLuận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOT
Luận văn: Xây dựng ứng dụng Android nghe nhạc offline, HOT
 
Giới thiệu về Windows 8
Giới thiệu về Windows 8Giới thiệu về Windows 8
Giới thiệu về Windows 8
 
Báo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minh
Báo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minhBáo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minh
Báo cáo đồ án tôt nghiệp: Xây dựng Website bán hàng thông minh
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 
File systems for mobile phones or handheld devices
File systems for mobile phones or handheld devices File systems for mobile phones or handheld devices
File systems for mobile phones or handheld devices
 
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền androidĐồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
 
Android Seminar Presentation [March 2019]
Android Seminar Presentation [March 2019]Android Seminar Presentation [March 2019]
Android Seminar Presentation [March 2019]
 
Android architecture
Android architectureAndroid architecture
Android architecture
 
Hệ điều hành windows
Hệ điều hành windowsHệ điều hành windows
Hệ điều hành windows
 
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSSĐề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
 
Bài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNGBài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNG
 
Hướng dẫn xây dựng mô hình mạng với vmware
Hướng dẫn xây dựng mô hình mạng với vmwareHướng dẫn xây dựng mô hình mạng với vmware
Hướng dẫn xây dựng mô hình mạng với vmware
 
Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big Data
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
Introduction to Mobile Development
Introduction to Mobile DevelopmentIntroduction to Mobile Development
Introduction to Mobile Development
 
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đĐề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
 

Viewers also liked

Xây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị android
Xây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị androidXây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị android
Xây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị android
Trần Võ Khôi Nguyên
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
ZendVN
 
Lập trình Android cơ bản bằng tiếng Việt
Lập trình Android cơ bản bằng tiếng ViệtLập trình Android cơ bản bằng tiếng Việt
Lập trình Android cơ bản bằng tiếng Việt
laptrinhandroid
 
Bao cao-lap-trinh-android-final
Bao cao-lap-trinh-android-finalBao cao-lap-trinh-android-final
Bao cao-lap-trinh-android-final
le dan
 
Android
AndroidAndroid
Android
Tieu Vi Vi
 
Báo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên Android
Báo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên AndroidBáo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên Android
Báo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên Android
Dlinh Truong
 
Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng cao
ZendVN
 
Tài liệu Lập trình Java Core
Tài liệu Lập trình Java CoreTài liệu Lập trình Java Core
Tài liệu Lập trình Java Core
ZendVN
 
Báo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệpBáo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệpDanh Huỳnh
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồzDollz Lovez
 

Viewers also liked (10)

Xây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị android
Xây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị androidXây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị android
Xây dựng ứng dụng hỗ trợ học tiếng anh trên thiết bị android
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
 
Lập trình Android cơ bản bằng tiếng Việt
Lập trình Android cơ bản bằng tiếng ViệtLập trình Android cơ bản bằng tiếng Việt
Lập trình Android cơ bản bằng tiếng Việt
 
Bao cao-lap-trinh-android-final
Bao cao-lap-trinh-android-finalBao cao-lap-trinh-android-final
Bao cao-lap-trinh-android-final
 
Android
AndroidAndroid
Android
 
Báo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên Android
Báo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên AndroidBáo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên Android
Báo Cáo Đề Tài Xây Dựng Phần Mềm Quản Lí Khách Hàng Trên Android
 
Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng cao
 
Tài liệu Lập trình Java Core
Tài liệu Lập trình Java CoreTài liệu Lập trình Java Core
Tài liệu Lập trình Java Core
 
Báo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệpBáo cáo Đồ án tốt nghiệp
Báo cáo Đồ án tốt nghiệp
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
 

Similar to Nghiên cưú và phát triển Android OS

Tuan 1
Tuan 1Tuan 1
Luận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.doc
Luận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.docLuận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.doc
Luận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.doc
sividocz
 
lập trình di động
lập trình di độnglập trình di động
lập trình di độngtruong le hung
 
Bao cao giua ki
Bao cao giua kiBao cao giua ki
Bao cao giua ki
Lê Lãnh
 
luan van thac si xay dung ung dung android ghi nhat ky chi tieu onnline
luan van thac si xay dung ung dung android ghi nhat ky chi tieu onnlineluan van thac si xay dung ung dung android ghi nhat ky chi tieu onnline
luan van thac si xay dung ung dung android ghi nhat ky chi tieu onnline
Dịch vụ viết thuê Luận Văn - ZALO 0932091562
 
Bao cao thuc tap athena
Bao cao thuc tap athenaBao cao thuc tap athena
Bao cao thuc tap athena
Hắc Ảnh
 
Báo cáo giữa kỳ
Báo cáo giữa kỳBáo cáo giữa kỳ
Báo cáo giữa kỳ
tuankiet123
 
Bao cao tong hop
Bao cao tong hopBao cao tong hop
Bao cao tong hop
Hắc Ảnh
 
Đề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOT
Đề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOTĐề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOT
Đề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOT
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Seminar windows phone 8.1
Seminar windows phone 8.1Seminar windows phone 8.1
Seminar windows phone 8.1
Tri Nguyen
 
Android
AndroidAndroid
Android
Cuong Pham
 
Mobile programming
Mobile programming Mobile programming
Mobile programming
Thinh Huynh
 
Lap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclipLap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclip
ktvinh
 
Luận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.doc
Luận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.docLuận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.doc
Luận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.doc
sividocz
 
Xây dựng phần mềm trên window Phone
Xây dựng phần mềm trên window PhoneXây dựng phần mềm trên window Phone
Xây dựng phần mềm trên window Phone
ntanh80
 
Báo cáo thực tập giữa kì
Báo cáo thực tập giữa kìBáo cáo thực tập giữa kì
Báo cáo thực tập giữa kìNguyen Anh
 
Android update
Android updateAndroid update
Android updatekuto92love
 

Similar to Nghiên cưú và phát triển Android OS (20)

đồ áN cơ sở
đồ áN cơ sởđồ áN cơ sở
đồ áN cơ sở
 
đồ áN cơ sở
đồ áN cơ sởđồ áN cơ sở
đồ áN cơ sở
 
Tuan 1
Tuan 1Tuan 1
Tuan 1
 
Luận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.doc
Luận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.docLuận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.doc
Luận Văn Xây Dựng Ứng Dụng Android Ghi Nhật Ký Chi Tiêu Online.doc
 
lập trình di động
lập trình di độnglập trình di động
lập trình di động
 
Bao cao giua ki
Bao cao giua kiBao cao giua ki
Bao cao giua ki
 
luan van thac si xay dung ung dung android ghi nhat ky chi tieu onnline
luan van thac si xay dung ung dung android ghi nhat ky chi tieu onnlineluan van thac si xay dung ung dung android ghi nhat ky chi tieu onnline
luan van thac si xay dung ung dung android ghi nhat ky chi tieu onnline
 
Bao cao thuc tap athena
Bao cao thuc tap athenaBao cao thuc tap athena
Bao cao thuc tap athena
 
Báo cáo giữa kỳ
Báo cáo giữa kỳBáo cáo giữa kỳ
Báo cáo giữa kỳ
 
Bao cao tong hop
Bao cao tong hopBao cao tong hop
Bao cao tong hop
 
Đề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOT
Đề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOTĐề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOT
Đề tài: Ứng dụng Android ôn luyện trắc nghiệm tiếng Anh, HOT
 
Seminar windows phone 8.1
Seminar windows phone 8.1Seminar windows phone 8.1
Seminar windows phone 8.1
 
Android
AndroidAndroid
Android
 
Mobile programming
Mobile programming Mobile programming
Mobile programming
 
Lap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclipLap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclip
 
Luận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.doc
Luận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.docLuận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.doc
Luận văn xây dựng ứng dụng android ôn luyện Trắc Nghiệm Tiếng Anh.doc
 
Xây dựng phần mềm trên window Phone
Xây dựng phần mềm trên window PhoneXây dựng phần mềm trên window Phone
Xây dựng phần mềm trên window Phone
 
Báo cáo thực tập giữa kì
Báo cáo thực tập giữa kìBáo cáo thực tập giữa kì
Báo cáo thực tập giữa kì
 
Android
AndroidAndroid
Android
 
Android update
Android updateAndroid update
Android update
 

More from Nguyễn Anh

Báo cáo đồ họa máy tính - Computer graphics
Báo cáo đồ họa máy tính - Computer graphicsBáo cáo đồ họa máy tính - Computer graphics
Báo cáo đồ họa máy tính - Computer graphics
Nguyễn Anh
 
Game programming - Hexagon
Game programming - HexagonGame programming - Hexagon
Game programming - Hexagon
Nguyễn Anh
 
Dynamic programming
Dynamic programmingDynamic programming
Dynamic programming
Nguyễn Anh
 
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềmNghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nguyễn Anh
 
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Nguyễn Anh
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Nguyễn Anh
 
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMSldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Nguyễn Anh
 
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềmTìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Nguyễn Anh
 
Bảo trì phần mềm
Bảo trì phần mềmBảo trì phần mềm
Bảo trì phần mềm
Nguyễn Anh
 
Embedded beta2 new
Embedded beta2 newEmbedded beta2 new
Embedded beta2 new
Nguyễn Anh
 
Embedded linux edited
Embedded linux editedEmbedded linux edited
Embedded linux edited
Nguyễn Anh
 
Slide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềmSlide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềm
Nguyễn Anh
 
Các kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềmCác kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềm
Nguyễn Anh
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
Đào tạo ĐH
Đào tạo ĐHĐào tạo ĐH
Đào tạo ĐH
Nguyễn Anh
 
Cài đặt windows mà không cần phải kích hoạt
Cài đặt  windows mà không cần phải kích hoạtCài đặt  windows mà không cần phải kích hoạt
Cài đặt windows mà không cần phải kích hoạt
Nguyễn Anh
 
System hacking
System hackingSystem hacking
System hacking
Nguyễn Anh
 
Hoc internet
Hoc internetHoc internet
Hoc internet
Nguyễn Anh
 

More from Nguyễn Anh (20)

Báo cáo đồ họa máy tính - Computer graphics
Báo cáo đồ họa máy tính - Computer graphicsBáo cáo đồ họa máy tính - Computer graphics
Báo cáo đồ họa máy tính - Computer graphics
 
Game programming - Hexagon
Game programming - HexagonGame programming - Hexagon
Game programming - Hexagon
 
Dynamic programming
Dynamic programmingDynamic programming
Dynamic programming
 
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềmNghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
 
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
 
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMSldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
 
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
 
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềmTìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
 
Bảo trì phần mềm
Bảo trì phần mềmBảo trì phần mềm
Bảo trì phần mềm
 
Embedded beta2 new
Embedded beta2 newEmbedded beta2 new
Embedded beta2 new
 
Embedded linux edited
Embedded linux editedEmbedded linux edited
Embedded linux edited
 
Slide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềmSlide Các kỹ thuật bảo trì phần mềm
Slide Các kỹ thuật bảo trì phần mềm
 
Các kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềmCác kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềm
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
 
Đào tạo ĐH
Đào tạo ĐHĐào tạo ĐH
Đào tạo ĐH
 
Cài đặt windows mà không cần phải kích hoạt
Cài đặt  windows mà không cần phải kích hoạtCài đặt  windows mà không cần phải kích hoạt
Cài đặt windows mà không cần phải kích hoạt
 
System hacking
System hackingSystem hacking
System hacking
 
Hoc internet
Hoc internetHoc internet
Hoc internet
 

Recently uploaded

Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
https://www.facebook.com/garmentspace
 
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
duykhoacao
 
AV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in englishAV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in english
Qucbo964093
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
Nguyen Thanh Tu Collection
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
Điện Lạnh Bách Khoa Hà Nội
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
Nguyen Thanh Tu Collection
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
chinhkt50
 
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptxDẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
nvlinhchi1612
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
phamthuhoai20102005
 
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
ngocnguyensp1
 

Recently uploaded (10)

Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
 
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
Chương III (Nội dung vẽ sơ đồ tư duy chương 3)
 
AV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in englishAV6 - PIE CHART WRITING skill in english
AV6 - PIE CHART WRITING skill in english
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
 
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptxDẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
Dẫn luận ngôn ngữ - Tu vung ngu nghia.pptx
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
 
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
 

Nghiên cưú và phát triển Android OS

  • 1. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 1 ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG    Thự c tập cơ sở Đề tài số 1:tìm hiểu về Android và lập trình ứng dụng Giáo viên hướng dẫn:thầy Hoàng Anh Việt Sinh viên làm: em Nguyễn Vương Quyền Lớp:cnpm k53 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 2. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 2 Mục lục Lời nói đầu Phần I:nghiên cứu tổng quan và kiến trúc Android 1.1.Giới thiệu hệ điều hành Android  Tổng quan về Android  Lịch sử phát triển của Android  Các phiên bản Android  So sánh Android và các hệ điều hành chạy trên các smartphone khác 1.2.Kiến trúc Android  Hệ thống tệp tin  Các tầng kiến trúc Phần II:các công cụ lập trình Android  Giới thiệu về các công cụ và nền tảng phát triển ứng dụng cho Android  Lập trình Android với Eclipse  Lập trình Android với Netbean Phần III:xây dựng các ứng dụng cụ thể  Cycle live  Đồ họa 2D trong Android  Chương trình Android translator Phần IV.Tổng kết và đánh giá Tài liệu tham khảo chính Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 3. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 3 Lời nói đầu Trong thời đại công nghệ thong tin ngày càng phát triển thì những thiết bị di động thông minh có sự hỗ trợ của hệ điều hành đang ngày càng phổ biến và thông dụng.Chúng dần tỏ ra ưu việt hơn so với máy tính truyền thống không chỉ bởi hỗ trợ nhiều tính năng mạnh mẽ không hề thua kém các dòng máy tính thường thấy mà còn bởi giá thành cũng ngày càng hạ xuống phù hợp với mọi tầng lớp người dùng nhờ sự tiến bộ vượt bậc của công nghệ tiên tiến.Tất nhiên để làm được điều đó thì những thiết bị này không thể thiếu một hệ điều hành thông minh điều khiển mọi hoạt động trong nó như trên một chiếc máy tính thông thường.Trong đó phải kể đến là hệ điều hành Android mới xuất hiện dựa trên nền tảng mã nguồn mở Linux do Google phát triển. Cùng với sự phong phú về chủng loại, cấu hình và giá thành, điện thoại Android đã trở nên phổ biến và xâm nhập ngày càng sâu rộng tới người sử dụng trên thế giới. Có lẽ điều giúp cho điện thoại Android phát triển nhanh chính là có một hệ điều hành được người dùng ưa chuộng nhất. Khi mới bắt đầu sử dụng hệ điều hành này mọi người thường thấy rất khó khăn nhưng chỉ cần bỏ chút thời gian mày mò là họ có thể quen và thấy thích hệ điều hành này. Sở dĩ Android được người dùng ưa chuộng nhất có lẽ vì chúng được tạo nên từ nền tảng nguồn mở nên cho phép người dùng có thể tùy biến nhiều trên đó. Mặt khác, với Android thiết bị người dùng không đòi hỏi phải có một cầu hình tối thiểu nào cả. Chúng có thể hoạt động trên mọi cấu hình, máy có hỗ trợ cảm ứng hay không, cũng như tương thích với mọi nhà sản xuất thiết bị phần cứng . Về khả năng tuy biến: Giao diện người dùng của hệ điều hành Android không hoàn toàn khác biệt hẳn so với giao diện iOS (Apple). Thay vì chấp nhận một kích thước cố định cho mọi thiết bị, Google cho phép các nhà sản xuất và người dùng có thể thay đổi giao diện người dùng Android phù hợp với nội dung trên đó. Người dùng có cả giao diện Android và giao diện tùy biến của nhà sản xuất. Ngay cả với giao diện người dùng bắt đầu sử dụng cũng có nhiều ứng dụng của các bên thứ ba cho phép người dùng tùy biến trên giao diện gốc. Người dùng có thể sử dụng các tựa đề sống động giống như giao diện Windows Phone 7 nếu thích. Điều này chính là một trong những sự khác biệt cốt yếu giữa iOS và Android. Giống như iOS của Apple, Android có nhiều màn hình Home mà người dùng có thể lướt qua. Giao diện mặc định có 5 màn hình Home, HTC Sence có 7 màn hình Home, Samsung Touch UI có tới 9 màn hình Home. Người dùng có thể di chuyển các biểu tượng trên các màn hình Home đó và đặt chúng trong các thư mục nếu thích. Google có một vùng (dock) để chứa đựng 3-4 biểu tượng. Các Dock này có thể tùy biến như giao diện Touchwiz của Samsung hoặc cố định như Sense của HTC. Nhưng Android bổ sung thêm một số yếu tố mà trong giao diện người dùng của iOS không có. Ngoài màn hình Home, người dùng có một ứng dụng Application Launcher để hiển thị tất cả các ứng dụng cài đặt trên thiết bị. Ở trên cùng giao diện người dùng Android là thanh thông báo. Thanh này dùng để thông báo cập nhật, theo dõi quá trình tải về và cài đặt,… Người dùng có thể kéo thanh thông báo này xuống để biết nhiều thông tin hơn là chỉ có các widget. Điểm khác biệt thứ hai giữa iOS và Android là trên Android, Widget là một thành phần của giao diện đồ họa không thể thiếu của người dùng. Chúng hiển thị thông tin mà người dùng có thể thay đổi, tương tự như một cửa sổ. Chúng rất hữu ích vì có thể cung cấp cho người dùng nhiều thông tin hơn và thiết lập cấu hình truy cập nhanh mà không phải mở ứng dụng. Với iOS, để truy cập thông tin, người dùng cần di Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 4. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 4 chuyển trên màn hình Home và kích mở ứng dụng đó. Với Android, thông tin có thể hiển thị trực tiếp trên một trong các màn hình Home khác nhau. Dễ sử dụng: so với hệ điều hành Symbian hay Windows Phone , giao diện Android của Google rất thân thiện với người dùng. Về mặt trực giác, chúng không chỉ bóng bẩy như iOS của Apple mà còn rất gần gũi với người dùng,tạo cho người dùng khả năng sáng tạo, tùy biến sắp đặt theo ý thức để có thể sử dụng dễ dàng nhất và tùy chọn nhưng gì cần thiết để sử dụng thiết bị thông minh hơn, cũng như tiết kiệm pin. Vì những điểm mạnh trên của hệ điều hành Android nên em xin chọn đề tài nghiên cứu về hệ điều hành Android trong đợt thực tập cơ sở này. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 5. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 5 I.Tổng quan về kiến trúc Android 1.1.Giới thiệu hệ điều hành Anndroid: 1.1.1.Tổng quan chung về Android: Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dành cho các dòng điện thoại SmartPhone và nhiều thiết bị di động khác như máy tính bảng,… Đầu tiên được ra đời bởi công ty liên hợp Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệ điều hành di động mã nguồn mở,miễn phí, mạnh mẽ và được ưa chuộng cao trên thế giới. Hệ điều hành Android là một hệ điều hành rất mạnh, có tính bảo mật cao, hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi... tương thích với nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và trackball. Android là hệ điều hành di động có khả năng kết nối cao với các mạng không dây, hỗ trợ công nghệ OpenGL nên có khả năng giải trí với multimedia,animation cũng như trình diễn các khả năng đồ họa cực tốt,là tiền đề để phát triển các ứng dụng có giao diện phức tạp chẳng hạn như là các trò chơi,nghe nhạc,...Đặc biệt là có nhiều API hữu ích cho các nhà phát triển phần mềm, nhà phát triển ROM có thể xây dựng nên nhiều ứng dụng, hệ thống khác nhau. Android còn là một hệ điều hành đa nhiệm một người dùng. Tính đa nhiệm cho phép cùng một thời gian, người dùng có thể chạy được nhiều nhiều ứng dụng để làm được nhiều việc khác nhau. Tuy nhiên, mỗi ứng dụng trên Android thì chỉ được phép chạy với một thực thể mà thôi. Android liên tục được phát triển, mỗi bản cập nhật từ Google là mỗi lần Android được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệ mới. Chẳng hạn như theo một đánh giá thì android phiên bản 2.2 hoạt động nhanh hơn bản 2.1 tới 450%. Hiện nay, phiên bản 2.3 phát hành ngày 6/12/2010 và vào tháng 1-2011,tại triển lãm Điện tử tiêu dùng lớn nhất thế giới diễn ra hằng năm tại Las Vegas (Hoa Kỳ) là Consumer Electronics Show(CES),Google đã trình làng Android 3.0 (tên mã Honeycomb) đi kèm với máy tính bảng Xoom của Motorola là phiên bản mới nhất của Android và đang tiếp tục được phát triển. Năm 2008, hệ điều hành Android đã chính thức mở toàn bộ mã nguồn, điều đó cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mở này hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí phát triển hệ điều hành. Những điều đó là cực kỳ tốt không chỉ đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như kỳ tốt không chỉ đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như Samsung, HTC,Motorola,... Với Google, vì Android hoàn toàn miễn phí, Google không thu tiền từ những hãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ Android nhưng bù lại, những dịch vụ của hãng như Google Search, Google Maps,... nhờ có Android mà có thể dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc điện thoại được sản xuất ra đều được tích hợp hàng loạt dịch vụ của Google. Từ đó hãng có thể thu được nguồn tài chính, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó và tiến tới phát triển thị phần quảng cáo mạnh mẽ hơn để cạnh tranh với nhiều hãng khác (quảng cáo đang do Yahoo! dẫn đầu). Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 6. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 6 Với các nhà phát triển ứng dụng (developers), việc hệ điều hành Android được sử dụng phổ biến đồng nghĩa với việc họ có thể thoải mái phát triển ứng dụng trên nền Android với sự tin tưởng là ứng dụng đó sẽ có thể chạy được ngay trên nhiều dòng điện thoại của các hãng khác nhau. Họ ít phải quan tâm là đang phát triển cho điện thoại nào, phiên bản bao nhiêu vì nền tảng Android là chung cho nhiều dòng máy, máy ảo Java đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dòng điện thoại mà nó đang chạy. Tất cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kết hợp với XML nên có khả năng khả chuyển cao. Một số hãng sản xuất điện thoại có sử dụng hệ điều hành Android tiêu biểu :  HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero, Desire, Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One, Dream, Aria, Paradise .  LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus One P500, GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880, C710Aloha .  MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid XTreme, MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT800 ZHISHANG, DEFY, CHARM, XT806,máy tính bảng Xoom,...  SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic 4G, i5510, I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy S, I6500U Galaxy, Galaxy Q, I5700 Galaxy Spica, I8520 Galaxy Beam, I909 Galaxy S .  SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8  ACER với các dòng máy beTouch T500, Liquid E, Stream, Liquid, beTouch E110, beTouch E130, beTouch E400, beTouch E120, Liquid Metal,…  Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ điều hành Android trong sản phẩm của mình… 1.1.2.Lịch sử phát triển Android: Tháng 7 năm 2005, Google mua lại Android, Inc., một công ty nhỏ mới thành lập có trụ sở ở Palo Alto, California, Mỹ. Những nhà đồng sáng lập của Android chuyển sang làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears (từng là phó chủ tịch của T-Mobile), và Chris White (trưởng nhóm thiết kế và phát triển giao diện tại WebTV). Khi đó, có rất ít thông tin về các công việc của Android, ngoại trừ việc họ đang phát triển phần mềm cho điện thoại di động. Điều này tạo những tin đồn về việc Google có ý định bước vào thị trường điện thoại di động. Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị di động dựa trên hạt nhân Linux, được họ tiếp thị đến các nhà sản xuất thiết bị cầm tay và các nhà mạng trên những tiền đề về việc cung cấp một hệ thống mềm dẻo, có khả năng nâng cấp mở rộng cao.Một số nguồn tin cho biết trước đó Google đã lên danh sách các thành phần phần cứng và các đối tác phần mềm, đồng thời ra hiệu với các nhà mạng rằng họ sẵn sàng hợp tác ở nhiều cấp độ khác nhau. Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di động xuất hiện trong tháng 12 năm 2006.Tin tức của BBC và Nhật báo phố Wall chú thích rằng Google muốn đưa công nghệ tìm kiếm và các ứng dụng của họ vào điện thoại di động và họ đang nỗ lực Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 7. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 7 làm việc để thực hiện điều này. Các phương tiện truyền thông in và online cũng sớm có bài viết về những tin đồn cho rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu Google. Và lại càng có nhiều suy đoán sau bài viết về việc Google đang định nghĩa các đặc tả công nghệ và trình diễn các mẫu thử với các nhà sản xuất điện thoại di động và nhà mạng. Tháng 9 năm 2007, InformationWeek đăng tải một nghiên cứu của Evalueserve cho biết Google đã nộp một số đơn xin cấp bằng sáng chế trong lĩnh vực điện thoại di động. Liên minh thiết bị cầm tay mở rộng: Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở rộng (Open Handset Alliance), một côngxoocxiom bao gồm nhiều công ty trong đó có Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel và T-Mobile được thành lập với mục đích phát triển các tiêu chuẩn mở cho thiết bị di động. Ngày 9 tháng 12 năm 2008, thêm 14 thành viên mới gia nhập dự án Android được công bố, gồm có ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, và Vodafone Group Plc. Giấy phép: Trừ những giai đoạn cập nhật ngắn, Android đã lưu hành với mã nguồn mở kể từ ngày 21 tháng 10 năm 2008. Google đã mở toàn bộ mã nguồn (bao gồm cả các ngăn xếp mang và điện thoại) theo giấy phép Apache. Với giấy phép Apache, các nhà cung cấp có thể thêm những mở rộng thương mại mà không cần chuyển chúng thành mã nguồn mở(theo Wikipedia). 1.1.3.Các phiên bản Android: Android đã trải qua một số các cập nhật kể từ lần đầu phát hành. Những cập nhật này nhìn chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới vào hệ điều hành. 1.5 (Cupcake) Based on Linux Kernel 2.6.27 : Ngày 30 tháng 4 năm 2009, bản cập nhật 1.5 chính thức (Cupcake) cho Android được phát hành. Trong đó bao gồm một số tính năng mới và các cập nhật về giao diện người dùng (UI):  Khả năng ghi lại và xem video thông qua chế độ máy ghi hình (camcorder)  Tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại  Bàn phím ảo mới với khả năng đoán trước văn bản  Hỗ trợ bluetooth A2DP và AVRCP Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 8. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 8  Khả năng tự động kết nối với một thiết bị Bluetooth trong một khoảng cách nhất định  Các widget và thư mục (folder) mới có thể chuyển đến the Home screens  Chuyển tiếp màn hình động 1.6 (Donut) Based on Linux Kernel 2.6.29 Ngày 15/9/2009, Phiên bản hệ điều hành Android 1.6 (Donut) và SDK được chính thức phát hành. Phiên bản được bổ sung thêm 1 vài tính năng như:  Cải thiện giao diện và tính năng Android Market  Cải thiện và làm mới giao diện ứng dụng camera, camcorder, và galary.  Gallery hỗ trợ người dùng xóa cùng lúc nhiều ảnh.  Hỗ trợ tìm kiếm bằng giọng nói Voice Search, giúp người dùng thao tác nhanh đến các ứng dụng hỗ trợ tìm kiếm , gọi điện , danh bạ ...  Nâng cấp tính năng tìm kiếm searching bookmarks, history, contacts, và từ web thông qua màn hình home.  Hỗ trợ cao nghệ CDMA/EVDO, 802.1x, VPNs, gestures, và text- to-speech .  Hỗ trợ màn hình WVGA .  Tăng tốc tìm kiếm và ứng dụng Camera. 2.0/2.1 (Eclair) Based on Linux Kernel 2.6.29 Ngày 26/10/2009, phiên bản hệ điều hành Android 2.0 (Eclair) và SDK chính thức được phát hành với nhiều tính năng mới như :  Tăng tốc phần cứng  Hỗ trợ nhiều màn hình home và độ phân giải khác nhau  Thay đổi giao diện.  Trình duyệt webm mới Browser UI và hỗ trợ HTML5.  Giao diện contact lists (danh bạ) mới .  Hiển thị hình nền tỉ lệ trắng đen tốt hơn.  Cải thiện Google Maps 3.1.2  Hỗ trợ Microsoft Exchange.  Hỗ trợ đèn flash cho Camera  Hỗ trợ Digital Zoom  MotionEvent quản lý và hỗ trợ tốt hơn cho multi-touch .  Cải thiện bàn phím.  Hỗ trợ Bluetooth 2.1  Thêm ứng dụng Live Wallpapers Android 2.0.1 SDK chính thức ra mắt ngày 3/12/2009. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 9. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 9 Android 2.1 SDK chính thức ra mắt ngày 12/1/2010. 2.2 (Froyo) Based on Linux Kernel 2.6.32: Ngày 20 tháng 5 năm 2010, bản SDK 2.2 (Froyo) đã được phát hành. Các thay đổi bao gồm:  Tối ưu hóa toàn bộ hệ điều hành Android về tốc độ, bộ nhớ và hiệu năng  Tăng tốc với bộ thư viện JIT mới.  Tích hợp công nghệ Chrome's V8 JavaScript vào trình duyệt web của Android.  Cải thiện hỗ trợ Microsoft Exchange support (security policies, auto- discovery, GAL look-up, calendar synchronization, remote wipe)  Cải thiện và tăng tốc khởi động các ứng dụng.  Hỗ trợ USB tethering và WiFi hotspot .  Nâng cấp Android Market , hỗ trợ tự động nâng cấp phần mềm.  Chuyển đổi nhanh giữa các bàn phím ảo và các bộ từ điển.  Hỗ trợ Voice dialing và chia sẽ danh bạ qua Bluetooth  Hỗ trợ upload file qua trình duyệt.  Hỗ trợ cài phần mềm vào thẻ nhớ.  Hỗ trợ lướt web , xem video và chơi game flash với Adobe Flash 10.1. Gingerbread, Based on Linux Kernel 2.6.33 or 34: Các tính năng mới bao gồm:  Hỗ trợ phát lại video Webm  Cải thiện chức năng Copy-paste Android 3.0(tên mã Honeycomb) Ra mắt 1-2011,chạy trên máy tính bảng Xoom của Motorola,các tính năng mới: Theo thẻ chứ không theo cửa sổ Trên các smartphone, trình duyệt của Android cho phép bạn lựa chọn giữa các website trên các cửa sổ khác biệt bằng các chuyển đổi thông qua việc nhấp vào một nút và tiếp cận các cửa sổ. Điều này phù hợp cho smartphone, bởi vì các thẻ (tab) sẽ bị kích cỡ màn hình của thiết bị hạn chế. Nhưng với máy tính bảng, tính năng “cửa sổ” lại trở thành một sự khó chịu lớn nhất. Vì thế trình duyệt của Honeycomb sẽ hỗ trợ duyệt web thẻ, nghĩ là sẽ giống với trải nghiệm web trên máy vi tính hơn smartphone. Gmail tiện lợi hơn với 2 cột và “Thanh hành động” Không giống các phiên bản Gmail trên các smartphone nền tảng Android chỉ hiển thị đơn giản một cột dài, phiên bản Honeycomb sẽ chia thành 2 cột để bạn có thể quản lý và di chuyển thư từ. Thay vì phải click vào các cửa sổ riêng Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 10. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 10 biệt để theo dõi thư đã gửi hay đã xóa, bạn có thể vào các thư mục trên thông qua cột bên trái. Nhưng phần thú vị nhất của việc nâng cấp Gmail đó là “Thanh hành động” (Action Bar). Theo Google, Thanh hành động “luôn hiển thị khi một ứng dụng đang mở, dù nội dung, theme hay tính năng khác bị quản lý bởi các ứng dụng chứ không phải là hệ thống. Trong trường hợp của Gmail, Thanh hành động sẽ được ưu tiên để có thể di chuyển thư tín từ thư mục này đến thư mục khác. Hỗ trợ đồ họa 3D Andy Rubin (Phó chủ tịch Kỹ thuật Google, phụ trách Android) đã cho thấy khả năng tích hợp đồ họa 3D của Honeycomb vào cuối năm trước bằng việc trình diễn bản mẫu máy tính bảng Android của Motorola có khả năng hỗ trợ phiên bản Google Maps 3D, hiển thị các ngôi nhà và cao ốc. Hiện Google đã cung cấp thêm nhiều thông tin về cơ chế đồ họa 3D của HĐH này – Renderscript - được miêu tả là “một ý tưởng về cách tạo nên hiệu ứng 3D cao cấp cho các ứng dụng, hình nền, carousel v.v..” Theo Google, Renderscript bao gồm API cho đồ họa 3D có thể cung cấp một “nền tảng ngôn ngữ đổ bóng (shader) độc lập” có thế giúp các nhà phát triển kiến lập nhiều hình dáng và kết cấu thực tế hơn trên sản phẩm 3D của họ. Thêm các tính năng hỗ trợ doanh nghiệp. Android đã có bản cập nhật quan trọng đầu tiên cho doanh nghiệp vào mùa hè trước, khi Android 2.2 tiếp cận thị trường. Trong số đó là việc Froyo giúp bộ phận Tin học có khả năng xóa hoặc tăng cường bảo mật cho các mật khẩu, cùng với đó là việc người dùng doanh nghiệp có thể nhận được sự hỗ trợ của Exchange Calendars và tự động tìm kiếm để đồng bộ hóa tài khoản Exchange một cách dễ nhất. Google cho biết Honeycomb sẽ thêm vào tính năng cho doanh nghiệp bằng các cho phép các nhà phát triển ứng dụng mảng này có thể hỗ trợ cho “các chính sách mới, bao gồm cả chính sách mã hóa lưu trữ, mật khẩu có thời hạn, lịch sử mật khẩu và việc yêu cầu mật khẩu chứa nhiều dạng ký tự.” Thiết kế lại bàn phím, thêm Cut và Paste Cuối cùng thì Google cũng thiết kế lại bàn phím trên Android lớn hơn bằng việc thêm vào “đổ bóng và đổi vị trí” các phím cho phù hợp với việc gõ bằng cả bàn tay chứ không phải một hai ngón. Không chỉ vậy, nó còn có phím Tab, giúp bạn không phải nhấn space nhiều lần để tạo thụt đầu dòng đầu mỗi đoạn. Việc nhấn và giữ các phím xác định sẽ mở một menu để bạn có thể thêm vào các ký tự đặc biệt. Ví như, nếu bạn giữ phím “e”, bạn có thể lựa chọn các ký tự "é," "ë," hay "ê” để thêm vào. Dù đó là một tính năng khá hữu ích, nhưng bạn cũng nên nhớ là đừng để tay lên một điểm qua lâu, nếu không muốn văn Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 11. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 11 bản trang trọng của bạn sở hữu vài ba ký tự lạ hoắc. Thêm vào đó, Google cũng thay đổi tính năng cắt&dán của máy tính bảng và cho phép người dùng “nhanh chóng chọn một từ bằng cách nhấn và giữ sau đó chỉnh khu vực cần chọn bằng cách kéo một mũi tên tới vị trí khác.” Thanh hành động đề cập ở trên cũng có thể giúp người dùng có lựa chọn cắt, sao chép và dán nhanh. (nguồn:Wikipedia và Internet) 1.1.4.So sánh Android với các hệ điều hành khác: 1) So sánh hệ điều hành Android với các hệ điều hành di động khác.  Giống nhau : Đều là hệ điều hành di động nên mang đầy đủ bản chất của hệ điều hành di động nói chung. (Đã đề cập ở trên)  Khác nhau :  Android là hệ điều hành mã nguồn mở và miễn phí trong khi các hệ điều hành di động còn lại đều là nguồn đóng và có phí (khi một hãng thứ hai sử dụng).  Android được phát triển từ nhân linux do đó nó có thể chạy tốt trên nhiều dòng điện thoại khác nhau. Có độ tương thích cao với các loại phần cứng khác nhau nhiều hơn so với các hệ điều hành di động còn lại.  Các ứng dụng chạy trên android được viết bằng Java trong khi đó, ứng dụng trên các hệ điều hành khác chủ yếu là viết bằng C/C++/Object C. Ngay cả Symbian có hỗ trợ Java thì cũng khác so với Android, trong khi hệ điều hành Android sử dụng máy ảo Java là Dalvik VM do chính Google phát triển thì Symbian lại sử áydụng máy ảo Java là J2ME của Sun. 2)Về lĩnh vực máy tính bảng,Android cũng đang phát triển không ngừng lớn mạnh,sánh ngang cùng với iPad của Apple ra đời trước đó và nhiều hãng sản xuất máy tính bảng khác như BlackBerry,… 1.2.Kiến trúc của Android: 1.2.1.Phân tầng Android: Hệ điều hành Android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (Phiên bản 2.6), tầng Libraries & Android runtime , tầng Application Framework và trên cùng là tầng Application(như hình 1.1). Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 12. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 12 Hình 1.1:phân tầng kiến trúc Android 1. Tầng hạt nhân Linux (Linux Kernel layer) Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình (process). Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cần kết nối mạng không dây... Tầng này có các thành yếu phần chủ:  Display Driver : điều khiển việc hiển thị lên màn hình cũng như thu nhận những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng...)  Camera Driver : điều kiển hoạt động của camera, nhận luồng dữ liệu từ camera trả về.  Bluetooth Driver : điều khiển thiết bị phát và thu sóng Bluetooth.  USB driver : quản lý hoạt động của các cổng giao tiếp USB  Keypad driver : điều khiển bàn phím  Wifi Driver : chịu trách nhiệm về việc thu phát sóng wifi  Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu dạng audio thành tín hiệu số và ngược lại  Binder IPC Driver : chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện.  M-System Driver : quản lý việc đọc ghi... lên các thiết bị nhớ như thẻ SD, flash  Power Madagement : giám sát việc tiêu thụ điện năng. 2. Tầng Library và android runtime Phần này có 2 thành phần là phần Library và Android Runtime a. Phần Libraries. Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử dụng, các thư viện đó được tập hợp thành một số nhóm như :  Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn C,  được sử dụng chỉ bởi hệ điều hành  Thư viện Media (Media Libraries) : Có nhiều codec để hỗ trợ việc phát và ghi các loại định dạng âm thanh, hình ảnh, video thông dụng.  Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX…  Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng.  …. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 13. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 13 b. Phần Android runtime Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường. Thứ nhất là các thư viện lõi (Core Library) , chứa các lớp như JAVA IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik Virtual Machine). Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều hành Android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển. 3. Tầng Application Framework. Tầng này xây dựng bộ công cụ - các phần tử ở mức cao để các lập trình viên có thể nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử dụng chung để tiết kiệm tài nguyên. Đây là một nền tảng mở, điều đó có 2 điều lợi:  Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hình điện . thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style hợp thị hiếu người dùng.Vì thế nên tuy cùng chung nền tảng android mà điện thoại của Google có thể khác hẳn với Motorola, HTC, T-Mobile, Samsung...  Với lập trình viên : Cho phép lập trình viên có thể sử dụng các API ở tầng trên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc. Một tập hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền, liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao,... Giới thiệu một số thành phần của phần này :  Activity Manager : quản lý các chu kỳ sống của một ứng dụng cũng như cung cấp công cụ điều khiển các Activity.  Telephony Manager : cung cấp công cụ để thực hiện việc liên lạc như gọi điện thoại  XMPP Service : cung cấp công cụ để liên lạc trong thời gian thực  Location Manager : cho phép xác định vị trí của điện thoại thoại dựa vào hệ thống định vị toàn cầu GPS và Google Maps.  Window Manager : quản lý việc xây dựng và hiển thị các giao diện người dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.  Notication Manager : quản lý việc hiển thị các thông báo (như báo có tin nhắn, có e-mail mới..)  Resource Manager : quản lý tài nguyên tĩnh của các ứng dụng bao gồm các file hình ảnh, âm thanh, layout, string,…(những thành phần không được viết bởi ngôn ngữ lập trình). Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 14. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 14  …. 4). Tầng Application : Ðây là lớp ứng dụng giao tiếp với nguời dùng, bao gồm các ứng dụng như :  Các ứng dụng cơ bản, đuợc cài đặt đi liền với hệ điều hành là gọi điện(phone), quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin (SMS), lịch làm việc (Calendar), đọc e-mail (Email-Client), bản dồ (Map), quay phim chụp ảnh (camera)...  Các ứng dụng đuợc cài thêm nhu các phần mềm chứng khoán (Stock), các trò chơi (Game), từ điển,... Các chương trình có các đặc điểm là :  Viết bằng Java, phần mở rộng là .apk  Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng lên để phục vụ cho nó. Nó có thể là một Active Program : chương trình có giao diện với người sử dụng hoặc là một background : chương trình chạy nền hay là dịch vụ.  Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.  Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.  Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền. Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dung quá 5~10% công suất CPU, điều đó nhằn để tránh độc quyền trong việc sử dụng CPU.  Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu. 1.2.2.Hệ thống tệp tin trên Android: Hệ thống quản lý tập tin trong android là được phát triển từ linux nên có nhiều đặc điểm giống với hệ thống quản lý tập tin trên linux. Đó là những đặc điểm về quy tắc đặt tên file, đường dẫn thư mục, hệ thống cây thư mục, những thư mục đặc trưng, hệ thống quyền hạn của file đối với người/ nhóm sử dụng trên hệ thống. Cũng giống như linux, trên android có thể thực thi nhiều lệnh liên quan đến hệ thống file như chmod, chown, chgrp... để chỉnh sửa thuộc tính, hệ thống quyền hạn trên file. a. Tổng quan về hệ thống file trên Android :  Trong Android, các file duợc tổ chức thành các thu mục, theo mô hình phân cấp. Tham chiếu dến một file bằng tên và duờng dẫn. Các câu lệnh thao tác file cho phép thực hiện các chức nang nhu dịch chuyển, sao chép toàn bộ thu mục cùng với các thu mục con chứa trong nó. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 15. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 15  Có thể sử dụng các ký tự, dấu gạch duới, chữ số, dấu chấm và dấu phảy dể dặt tên file. Không duợc bắt dầu một tên file bằng dấu chấm hay chữ số. Những ký tự khác nhu ‘/’, ‘?’, ‘*’, là ký tự dặc biệt duợc dành riêng cho hệ thống. Chiều dài của tên file có thể tới 256 ký tự. Trong hệ diều hành Android có sự phân biệt tên file chữ hoa và chữ thuờng, diều dó có nghia là trong cùng 1 thu mục có thể tồn tại những file có tên là File, FILE, file.. và chúng là những file khác nhau..  Tất cả các file trong Android có chung cấu trúc vật lý là chuỗi các byte (byte stream). Cấu trúc thống nhất này cho phép Android áp dụng khái niệm file cho mọi thành phần dữ liệu trong hệ thống. Thư mục cũng nhu các thiết bị duợc xem nhu file. Chính việc xem mọi thứ nhu các file cho phép Android quản lý và chuyển dổi dữ liệu một cách dễ dàng. Một thu mục chứa các thông tin về thư mục, đuợc tổ chức theo một định dạng đặc biệt. Các thành phần đuợc xem nhu các file, chúng đuợc phân biệt dựa trên kiểu file: ordinary file, directory file, character device file, và block device file. b. Các kiểu file trên android: - Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin) và folder (hay directory : thư mục) là 2 thành phần khác hẳn nhau. Tuy nhiên trên hệ điều hành Android (cũng như Linux) thì coi directory cũng là file và nó là một loại file đặc biệt. Thực tế còn một số loại file nữa có thể liệt kê theo bảng sau(như hình 1.2) : Chữ cái biểu diễn Kiểu file D thư mục (directory) b file kiểu khối (block-type special file) C file kiểu ký tự (character-type special file) L liên kết tượng trưng (symbolic link) P file đường ống (pipe) S Socket - file bình thường (regular file) Hình 1.2: Bảng liệt kê một số kiểu file trong Linux c. Tổ chức quyền sở hữu và quyền hạn trên file: Tương tự trên hệ thống linux, trên hệ điều hành android, một file có thể liên kết với một người sử dụng và một nhóm người sử dụng. Sự liên kết đó là một tập hợp các quyền hạn truy cập bao gồm quyền được phép đọc (read), được phép ghi (write) và được phép thực thi (execute). Cụ thể như sau: Một file sẻ có những quyền hạn tương ứng với 9 ký tự theo mẫu sau : với 3 ký tự “r,w,x” nghĩa là có quyền tương ứng với ký tự viết tắt đó,” –“ nghĩa là không có quyền hạn đó(hình 1.3): Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 16. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 16 Hình 1.3:một số quyền làm việc với file  3 ký tự đầu tiên là quyền hạn chủ nhân file  3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file  3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file. Ví dụ : Một file có dãy ký tự biểu diễn quyền hạn là rwxr-xr—thì điều đó có nghĩa là:  3 ký tự đầu là “rwx” : chủ nhân có thể đọc, ghi và thực thi file  3 ký tự tiếp theo là “r-x” thì nhóm tài khoản sở hữu file có quyền đọc và thực thi file chứ không có quyền ghi, chỉnh sửa file.  3 ký tự cuối là “r—“ nghĩa là những người không sở hữu file chỉ được phép đọc mà không thể chỉnh sửa hay thực thi file. Trên hệ thống Android, để biết xem được quyền hạn đó, ta có thể sử dụng câu lệnh là:ls –l–d. Ví dụ : ls -l -d /mnt/sdcard/Bachkhoa để xem quyền hạn của file /mnt/sdcard/Bachkhoa thì có thể trả về kết quả như sau : d---rwxr-x system sdcard_rw 2010-12-29 21:00 Bachkhoa Thì những thông tin có thể lấy về là :  Ký tự dầu tiên là chữ d : vậy file dó có kiểu là thu mục hay là file bao hàm  Chuỗi ghi quyền hạn là “---rwxr-x” thì có nghĩa: o “---“:nguời sở hữu không đuợc phép đọc, ghi, thực thi file o “rwx”: nhóm tài khoản sử hữu đuợc phép đọc, ghi, thực thi file o “r-x” : những nguời không sở hữu file duợc phép đọc và thực thi file nhưng không đuợc phép chỉnh sửa hay ghi lên file.  Chuỗi miêu tả file : sdcard_rw nghia là dây thuộc thiết bị thẻ nhớ sd, dọc và ghi duợc.  Bachkhoa : tên của file.  2011-03-11 21:00 :thời gian chỉnh sửa lần cuối. Ngoài ra có 2 lệnh khác cũng hữu dụng là lệnh chown để thay đổi quyền sở hữu file, lệnh chmod để thay đổi quyền hạn liên quan đến file và lệnh chgrp để thay đổi nhóm người sở hữu file. d. Cây thư mục trên hệ điều hành Android: Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 17. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 17 Thư mục (hay có thể gọi là file) root là thư mục gốc của tất cả các file thư mục còn lại. Dưới nó có chứa một số file thư mục hệ thống. Mỗi thư mục (trừ thư mục root) đều có một thư mục cha chứa nó, bản thân nó cũng có thể có nhiều file thư mục con. Cấu trúc đó có thể mô tả bằng một cây thư mục có dạng như sau (hình 1.4): Hình 1.4:cấu trúc một cây thư mục đơn giản Giới thiệu một vài thu mục tiêu biểu :  /(root) : Là thu mục gốc,là thu mục duy nhất không có thu mục cha  / mnt : thu mục chứa thiết bị luu dộng (removeable)  /system : chứa những thành phần co bản nhất của hệ thống  /ect : chứa những file cấu hình của hệ thống, nó cực kỳ quan trọng vì sự hoạt dộng của hệ thống dều bị chi phối ở những file cấu hình này.  /system/lost+found : chứa những tập tin bị mất lúc khởi dộng máy  /system/font : chứa những font chữ hiển thị duợc  /system/lib : chứa các thu viện dể các phần mềm hoạt dộng (các phần mềm viết bằng ngôn ngữ java)  /system/app : chứa các file apk của phần mềm. (Các file cài dặt ứng dụng, kiểu nhu MSI trong window hay dev trong Linux)  /system/bin : chứa các chuong trình nội trú của hệ thống.  .... II.Các công cụ lập trình Android: 2.1.Giới thiệu về các công cụ lập trình Android: Như đã nói ở phần trước,hệ điều hành Andoird đặc biệt là có nhiều API hữu ích cho các nhà phát triển phần mềm, nhà phát triển ROM có thể xây dựng nên nhiều ứng dụng, hệ thống khác nhau.Mặt khác,Android còn là hệ điều hành mã nguồn mở nên hoàn toàn miễn phí nên các nhà phát triển ứng dụng (developers) có thể thoải mái phát triển ứng dụng trên nền Android mà không phải lo lắng về vấn đề bản quyền(những điều khoản ràng buộc chặt chẽ,hạn chế một số quyền,thủ tục đăng kí phức tạp,…) như trong một số hệ điều hành di động khác như iOS của Apple,Symbian của Nokia,…Ngoài ra việc hệ cachemntsystemetcvar lost+found framework libfontbin app /(root) Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 18. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 18 điều hành Android dựa trên nền tảng Linux và được sử dụng ngày càng phổ biến(theo thống kê thì Android đang là hệ điều hành được ưa chuộng nhất tại Mĩ trên các thiết bị di động) đồng nghĩa với việc giới lập trình viên có thể với sự tin tưởng là ứng dụng được viết ra sẽ có thể chạy được ngay trên nhiều dòng di động của các hãng khác nhau. Họ ít phải quan tâm là đang phát triển cho loại di động nào, phiên bản bao nhiêu vì nền tảng Android là chung cho nhiều dòng máy, máy ảo Java đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dòng di động mà nó đang chạy. Tất cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kết hợp với XML nên có khả năng khả chuyển cao.Vì vậy có khá nhiều công cụ phát triển ứng dụng cho Android.Trong phần này em xin giới thiệu hai công cụ mã nguồn mở trong số các công cụ phổ biến nhất là Eclipse và Netbean.Đầu tiên là với Eclipse. 2.2.Lập trình Android với Eclipse: 2.2.1.Cài đặt các công cụ cần thiết để lập trình Android trên Eclipse: Đầu tiên để phát triển ứng dụng cho Android,ta cần phải cài đặt môi trường phát triển cho nó trên máy tính,và Google android SDK là thứ đầu tiên phải có,nhưng nếu chỉ có mỗi bộ android SDK thôi thì chưa đủ mà cần có thêm một môi trường phát triển tích hợp(IDE) mà cụ thể ở đây là eclipse và một môi trường java(nền tảng ứng dụng của Android là dựa trên java). a.Các quá trình cài đặt và cấu hình Eclipse:  Bước 1:sau khi download về android SDK ta sẽ giải nén vào một thư mục nào đấy(ví dụ c:android) rồi chạy file SDK Manager.exe để tải về các gói và công cụ cần thiết cho việc lập trình(hình 1):  Bước 2:tiếp theo là tích hợp Android SDK vào eclipse: khởi chạy Eclipse, vào Help -> Install new softwares. Chọn Add, gõ vào ô Name tên tùy ý và tại ô Location gõ vào địa chỉ để tải về ADT: http://dl-ssl.google.com/android/eclipse/.Dưới đây là hình ảnh một số bước(hình 2 và hình 3):  Bước 3:tiếp tục là cấu hình Android: mở Eclipse  window  preferences  Android  trong mục SDK location chọn Browse  đưa đường dẫn đến thư mục SDK(thư mục mà ta mới download về và giải nén c:android)  bấm apply.  Bước 4:tạo một điện thoại ảo (AVD)  Mở eclipse  window  Android SDK and AVD manager  ở cái cửa sổ mới đó,ta sẽ chọn mục Virtual devices  bấm nút New…  Mục Name: đây là mục đặt tên cho AVD,ta có thể sử dụng các kí tự “A->Z”,”a->z”,chữ số nhưng sao cho dễ nhớ và tiện dụng nhất.  Mục target: dựa trên các nền tảng Android,từ Android 1.0 cho đến Android 2.2,ví dụ như:Android 1.0 -> target:1,Android 1.1 -> target :2,Android 2.2 -> target :8  Sdcard size: là kích cỡ thẻ nhớ ảo cho Android (tùy chọn).  Sau đó bấm Create AVD. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 19. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 19 Hoặc ta cũng có thể tạo AVD theo cách khác sử dụng command prompt:chuyển làm việc vào thư mục tools của Android SDK,tại đây gõ lệnh: android create avd --target 8 --name my_avd với my_avd là tên máy ảo avd. Hình 2.1.1:chọn một số gói ứng dụng cần thiết Hình 2.1.2:tích hợp android SDK vào eclipse Cuối cùng là tạo một project: Đầu tiên vào Eclipse->File > New > Project>Android>Android Project gồm có: -Project name:tên dự án trên eclipse -Build Target: chọn phiên bản android và API tùy chọn. -Application name:tên ứng dụng tùy chọn sẽ được xuất hiện. -Package name: android yêu cầu phải cho package vào các thư mục vì thế khi điền tên package phải điền tên theo kiểu phân cấp như folder1.folder2....NamePackage(như ở ví dụ này là myApp.vidu 1)và android cũng không chấp nhận tên package đứng 1 mình, cái này để quản lý dễ hơn khi số lượng ứng dụng nhiều. Khi vào thư mục chứa android data ,Eclipse sẽ tạo sẵn một thư mục là myApp . Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 20. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 20 -Create Activity:nếu được điền,android sẽ tạo một Activity bắt đầu khởi động đầu tiên trong ứng dụng. -Min SDK Version:chỉ ra ứng dụng sẽ được xây dựng trên nền tảng nào,ví dụ:android 8 hình 2.1.3:điền url kho lưu trữ của Google b.Sau khi đã cấu hình xong eclipse và cho chạy thử ta sẽ thấy trình giả lập Android (emulator) cho ta kết quả như thế này(hình 2.1.4): Hình 2.1.4:emulator 2.2.2.Các thành phần trong ứng dụng Android: Các thành phần của một ứng dụng của Android chia làm sáu loại bao gồm: Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 21. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 21 1.Activity: một cách đơn giản thì Activity là nền của một ứng dụng. Một Activity đại diện cho một giao diện người sử dụng trực quan, ở đó người dùng có thể thực hiện những gì họ muốn làm. Ví dụ một activity thể hiện một màn hình ở đó có danh bạ của người sử dụng, người sử dụng có thể lựa chọn danh bạ hiển thị số điện thoại hoặc hiển thị ảnh và chú thích của từng contact. Một chương trình nhắn tin SMS có thể bao gồm các activity là : một activity thể hiện một danh sách các số liên lạc (có thể gửi được tin nhắn) , một activity thể hiện một trang để người dùng viết tin nhắn và lựa chọn gửi đến một danh bạ nào đó, và một activity khác lại cho phép xem lại các tin đã gửi hoặc chỉnh sửa chúng. Mặc dù tất cả các activity kết hợp lại mới tạo nên ứng dụng có giao diện cho người sử dụng, nhưng mỗi activity vẫn hoạt động độc lập với những cái còn lại. Mỗi activity là một lớp con của lớp cơ sở Activity. Vì một ứng dụng có thể bao gồm một hoặc nhiều activity và do đó có bao nhiêu activity, mỗi activity hoạt động ra sao, giao diện trông thế nào là do ứng dụng quyết định và thiết kế. Thông thường thì có một activity được đánh dấu là activty đầu tiên, và người dùng có thể thấy nó ngay khi ứng dụng được khởi chạy. Mỗi một activity thì có một cửa sổ làm việc để sử dụng và thực thi trên đó. Thông thường mỗi cửa sổ này đều lấp đầy màn hình. Nhưng cũng có khi nó nhỏ hơn và chèn ngay trên một cửa sổ làm việc khác. Những nội dung trực quan ở mỗi cửa sổ làm việc được cung cấp bởi một hệ thống các view, những đối tượng được thừa kế từ lớp cơ sở View. Mỗi một view thì điều khiển một khu vực có dạng hình chữ nhật đặc biệt bên trong cửa sổ. Mỗi lớp cha, parent views, bao gồm và tổ chức những tập hợp cho các lớp con của nó. Những view là nút lá (không có con) thực thi trên khu vực mà chúng điều khiển và trả lời các kích hoạt do người dùng tác động vào khu vực nó kiểm soát. Do đó có thể nói, mỗi view là nơi mà activity tương tác với người sử dụng. Ví dụ, một view có thể hiển thị một ảnh mà khi người sử dụng click vào cái ảnh đó sẽ có một lệnh được thực thi. Android có sẵn một số view cho ta sử dụng như là button (nút), text field (trường văn bản), scroll bar (thanh cuộn) , menu item, check box (hộp check),… Một view được đặt vào bên trong một cửa sổ của activity bởi method Activity.setContentView(). Object ContentView là object gốc của cây phân cấp view. (tìm hiểu thêm ở phần user interface). Khi khởi động một ứng dụng Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác. 2.Service: thành phần chạy ẩn trong Android. Một service thì không có giao diện trực quan, nhưng nó có thể chạy ngầm định trên thiết bị và không giới hạn thời gian hoạt động. Ví dụ như một service giúp thiết bị có thể chơi nhạc ngoài desktop trong khi người sử dụng đang làm công việc khác, hay nó có thể tải dữ liệu trên mạng về máy, hoặc tính toán công việc nào đó và sẵn sàng cung cấp kết quả khi có một activity cần đến nó. Mỗi service thì được thừa kế từ lớp cơ sở là Service. Ví dụ như trình chơi nhạc từ một play list. Trình chơi nhạc chắc chắn có một hoặc nhiều hơn một activity có khả năng để người sử dụng chọn bài hát và bắt đầu chơi chúng. Tuy nhiên người sử dụng mong muốn khi thoát khỏi trình chơi nhạc, nhạc vẫn được chơi bình thường, và activity thì không có khả năng thực hiện điều đó vì nó không giao tiếp với người dùng nữa. Để giữ cho nhạc vẫn tiếp tục được chơi thì activity của trình chơi nhạc gọi một service đến và chạy nó ở dạng ngầm định. Hệ thống sẽ tiếp tục chạy service này ngay cả khi activity thoát ra ngoài (không còn trên màn hình nữa). Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 22. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 22 Hoàn toàn có thể kết nối tới một service đang chạy hoặc nếu chúng chưa bắt đầu chạy thì có thể khiến chúng chạy. Khi đã kết nối với service, bạn có thể giao tiếp với nó thông qua một giao diện mà service hiển thị. Ví dụ với service chơi nhạc thì, người sử dụng có thể play, stop, pause, next, rewind hoặc chơi lại từ đầu. Giống như activity và các thành phần khác, service chạy trên luồng xử lý chính của ứng dụng. Do đó chúng không thể ngăn chặn các thành phần khác, hay can thiệp vào giao diện của người dùng. Chúng thường sinh ra một luồng mới cho các nhiệm vụ bị chi phối thời gian thực hiện. Service sử dụng để cập nhật dữ liệu, đưa ra các cảnh báo (notifications) và không bao giờ hiển thị cho người dùng thấy. Vòng đời của Service: -Khi có một context nào đó gọi startService() để bắt đầu service mong muốn. Nếu service đó chưa được tạo thì sẽ gọi phương thức onCreate() rồi gọi tiếp onStart() và khi đó service chạy nền bên dưới. -Nếu sau đó lại có một context muốn bắt đầu service này mà service đã đang chạy, chỉ có phương thức onStart() của service được gọi. -Dù service có được gọi bắt đầu bao nhiêu lần thì cũng chỉ có một thể hiện của service và chỉ cần gọi stopService() một lần để kết thúc service. Hình 2.1.5:Lifecycle-startService Lifecycle – bindService():thông thường,vòng đời của service khi có client kết nối từ đầu như sau: – Cũng bắt đầu bằng phương thức onCreate() rồi đến onBind() và service chạy nền. – Khi không còn client kết nối tới thì service gọi phương thức onUnbind() rồi onDestroy(). Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 23. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 23 Hình 2.1.6:Lifecycle-bindService Có một số trường hợp không thông thường, ví dụ như:  Có một context khởi động (start) một service, sau đó có một số client kết nối (bind) tới service  Có nhiều client cùng lúc kết nối (bind) tới service  Một activity vừa gọi startService() vừa gọi bindService()  … Sử dụng service: • Dùng trong các ứng dụng nghe nhạc. • Dùng để xử lý các thao tác mất thời gian và không nhất thiết phải hiển thị lên activity (download, upload…) • Đôi khi cần một ứng dụng vận hành liên tục để xử lý những việc mong muốn mà không làm phiền người dùng service. • Làm những thao tác tính toán, xử lý đều đặn nào đó và kết quả khi nào người dùng cần thì mới xem • … 3.Content Provider: kho dữ liệu chia sẻ. Một content provider tạo ra tập hợp các dữ liệu đặc biệt của ứng dụng này mà các ứng dụng khác có thể dùng chung. Dữ liệu này có thể được lưu ở file hệ thống, trong hệ cơ sở dữ liệu SQLite hoặc trong bất cứ chỗ nào lưu trữ được trên thiết bị . Và cũng như những thành phần khác thì content provider được kế thừa từ lớp ContentProvider, cài đặt các phương thức mặc định, cho phép các ứng dụng khác có thể gọi nó ra, lưu trữ dữ liệu của nó. Tuy nhiên các ứng dụng không thể gọi trực tiếp các phương này. Chúng gọi các phương thức này gián tiếp qua việc gọi một đối tượng ContenResolve.Hơn thế chúng dùng content resolver và gọi những phương thức đó. Một content resolver có thể giao tiếp đến nhiều content provider; nó cộng tác với các provider để quản lý bất kỳ giao tiếp bên trong liên quan ,chúng dựa vào nhau để thực thi các tiến trình xử lý thông tin phức tạp. Content Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 24. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 24 Mỗi ứng dụng Android chạy trên process của nó. Bất cứ lúc nào nó cũng quản lý được các thành phần của nó:  Android phải đảm bảo các process thành phẩn phải đang chạy  Khởi tạo nếu cần thiết  Một trường hợp tương thích của cái thành phần là có giá trị, đang khởi tạo trường hợp nếu cần thiết. 4.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 một Activity hay Service để thực hiện công việc người sử dụng mong muốn. VD: khi mở 1 trang web, ta gửi một intent đi để tạo một activity mới hiển thị trang web đó.Mô hình Intent: Hình 2.1.7:Intent trong mô hình trên Activity B chỉ trả về kết quả khi cần thiết. VD : giả sử Activity A nhắc người dùng chọn ảnh profile ; Activity B liệt kê các ảnh trong thẻ nhớ sdcard và cho phép người dùng chọn ảnh. -Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent, các thuộc tính của một đối tượng Intent được miêu tả trong bảng sau: Hình 2.1.8 5.Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới. Một bộ broadcast receiver là 1 thành phần không làm gì cả nhưng lại nhận và tương tác với các thông báo được đưa ra. Nhiều bộ phát (broadcast) hình thành trong code của hệ điều hành – ví dụ, thông báo rằng timezone đã được thay đổi, rằng pin yếu, hoặc thông báo người dùng vừa đổi ngôn ngữ hiển thị. Một ứng dụng cũng có thể bắt đầu phát thông báo – ví dụ, để cho các ứng dụng khác biết dữ liệu trên mạng đã được tải về thiết bị và sẵn sàng sử dụng. Một ứng dụng cũng có thể không có bất kì bộ thu phát nào nếu chúng không cần trả lời các thông báo từ thiết bị hay ứng dụng khác. Tất cả các bộ thu phát thì kế thừa từ lớp cơ sở BroadcastReceiver. Có 2 cách thu-phát đó là: Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 25. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 25  Không có thứ tự: receiver nào đủ điều kiện thì nhận hết, không phân biệt và cũng tách rời nhau.  Có thứ tự: receiver nào đăng ký ưu tiên hơn thì nhận trước, và có thể truyền thêm thông tin xử lý cho các receiver sau. Vòng đời của BroadcastReceiver bản chất chỉ có duy nhất một phương thức onReceive():  Khi có sự kiện mà BroadcastReceiver đã đăng ký nhận được phát đi, thì phương thức onReceive() của BroadcastReceiver đó sẽ được gọi.  Sau khi thực thi xong phương thức này, vòng đời của Receiver sẽ kết thúc. Các bộ thu phát thì không có giao diện sử dụng, tuy nhiên chúng có thể khởi động một ứng dụng khi trả lời thông tin mà chúng nhận được. Hoặc chúng có thể sử dụng NotificationManager để cảnh báo cho người sử dụng biết. Các thông báo có thể gây chú ý tới người dùng theo những cách khác nhau – ví dụ như nháy đèn màn hình, rung, chơi nhạc,… Thông thường thì chúng tạo ra 1 thông báo “cứng” trên màn hình hiện thời của thiết bị, để người dùng có thể thấy và đọc những thông báo đó. VD: ta viết một chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần một BroadcastReceiver để nhận biết các Intent là các cuộc gọi tới. Một số broadcast thông dụng:  Báo hệ thống khởi động xong  Báo pin có sự thay đổi  Báo có package mới cài vào hoặc xóa đi  Báo tắt máy  Báo cắm sạc, rút sạc…  Thông báo tin nhắn tới  Thông báo cắm, rút thẻ nhớ  Thông báo có cuộc gọi đi Ngoài ra ta cũng thể định nghĩa broadcast cho riêng mình (mục tiêu chính của việc này giúp có thể liên lạc giữa các ứng dụng ta viết hoặc thông báo một sự kiện liên quan đến ứng dụng của bạn với các ứng dụng khác) 6.Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động.Ví dụ như: trong những trường hợp ta muốn hiện một thông báo về một sự kiện nào đó cho người dùng mà không muốn ảnh hưởng đến công việc của họ hoặc không chắc họ có đang cầm điện thoại (tin nhắn, cuộc gọi, email…) hay như ta muốn hiển thị thông tin một việc nào đó đang xảy ra trên điện thoại và mong muốn người dùng biết (đang nghe nhạc, đang trong cuộc gọi, thiếu thẻ nhớ,…). Activity, Service, Broadcast Receiver và Content Provider mới là những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest . 2.2.3.Quản lí tiến trình(process): Như em đã trình bày ở phần I,Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có độ ưu tiên thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 26. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 26 1.Foreground process: là process của ứng dụng hiện thời đang được người dùng tương tác. 2.Visible process: là process của ứng dụng mà activity đang hiển thị đối với người dùng (phương thức onPaused() của activity được gọi). 3.Service process: là Service đang chạy. 4.Background process: là process của ứng dụng mà các activity của nó ko hiển thị với người dùng (phương thức onStoped() của activity được gọi). 5.Empty process: process không có bất cứ 1 thành phần nào hoạt động. Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động hủy các process, trước tiên là các empty process (các process không hoạt động hoặc bị corrupted). 2.2.4. Vòng đời của Activity trong Android: Như em đã giới thiệu ở trên , Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành activity thực thi, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng. Activity bao gồm 4 trạng thái là: - active (running): Activity đang hiển thị trên màn hình (foreground). - paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus). Ví dụ: một activity mới xuất hiện hiển thị giao diện đè lên trên activity cũ, nhưng giao diện này nhỏ hơn giao diện của activity cũ, do đó ta vẫn thấy được 1 phần giao diện của activity cũ nhưng lại không thể tương tác với nó. - stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop - 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 đó. Biểu đồ miêu tả trạng thái Activity: Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 27. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 27 Hình 2.1.9:trạng thái activity(vòng đời ứng dụng) Các giai đoạn trong biểu đồ trạng thái trên:  Entire lifetime: từ phương thức onCreate( ) cho tới onDestroy( )  Visible liftetime: từ phương thức onStart( ) cho tới onStop( )  Foreground lifetime: từ phương thức onResume( ) cho tới onPause( ) Khi xây dựng một activity ta cần xây dựng các thành phần sau: 1.Tạo Menu: • Nhấp chuột phải vào một dòng trống trong Activity: o Chọn Source  Override/Implement methods  chọn onCreateOptionsMenu và onOptionsItemSelected o Trong onCreateOptionsMenu, thêm đoạn code: menu.add(0, 111, 0, "Item1"); o Trong onOptionsItemSelected, thêm xử lý dạng: switch (item.getItemId()) { case 111: //statements break; } Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 28. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 28 2.Khởi động activity: Không tường minh: đoạn code bên dưới sẽ khởi động một activity nào đó đang có khả năng xem ảnh. Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivity(intent); Với cách khởi động activity không tường minh, ta sẽ cần sử dụng Intent-filter. Intent-filter sẽ giúp một activity (chung hơn là một thành phần ứng dụng) đăng ký với hệ thống là nó có thể làm được thao tác gì, trong nhóm nào, với loại dữ liệu nào. Như vậy khi intent và intent-filter khớp nhau, activity sẽ được hệ thống khởi động. 3. Liên lạc giữa 2 activity: Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent như ví dụ sau: intent.putExtra("value1", new String("Hello world")); intent.putExtra(“value2", new Long(100)); Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau: getIntent().getExtras().getString("value1"); getIntent().getExtras().getLong("value2"); Có thể khởi động một activity với một yêu cầu nào đó và activity kia khi làm xong công việc sẽ trả lại kết quả cho activity trước. Ví dụ activity A yêu cầu một activity làm giúp việc chụp ảnh, activity B đáp ứng được việc này, sau khi user chụp ảnh xong sẽ trả lại file ảnh cho activity A. 2.2.5. XML trong Android: Không giống như lập trình java thông thường, lập trình android ngoài các lớp được viết trong file *.java mà còn sử dụng XML để thiết kế giao diện cho ứng dụng. Tất nhiên ta hoàn toàn có thể thiết kế một giao diện như ý muốn mà không cần tới bất cứ dòng XML nào, nhưng sử dụng XML sẽ đơn giản công việc đi rất nhiều. Đồng thời sử dụng XML sẽ giúp việc chỉnh sửa ứng dụng sau này trở nên dễ dàng. Về nguyên tắc, khi lập trình ứng dụng ta thiết kế giao diện bằng XML và cài đặt các xử lý khi tương tác với giao diện trong code. 2.2.6.Xây dựng chương trình đầu tiên: 2.2.6.1.Phần này em sẽ trình bày một ví dụ điển hình với mọi nền tảng ứng dụng là chương trình in ra màn hình dòng chữ “Hello world!”: Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 29. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 29 B1 : khởi tạo 1 project Vào thẻ File -> New -> Project ->Android project(hoặc chọn New -> Other ->Android Project). Hoặc trên thanh công cụ bấm vào icon như trong hình 2.1.10: B2 : tạo một project mới Project name: vidu 1 Build Target: Chọn Android 2.2 Application name:vidu 1 Package name: at.exam Create activity: Nguyen Vuong Quyen(tạo một lớp con của lớp Activity, dùng để hiển thị một màn hình ở đây là màn hình HelloWorld của chúng ta). Min SDK version: 4 (tức SDK 1.6, ở đây chúng ta khai báo là ứng dụng này có thể đáp ứng được phiên bản SDK cũ nhất là phiên bản nào). Sau khi hoàn tất bấm Finish, project mới đã được tạo. 2.2.6.2.Tìm hiểu cấu trúc một project đơn giản bao gồm:  Thư mục src chứa source code ứng dụng. Gồm các package và các class.  Thư mục gen chứa các file tự động phát sinh (mà thường gặp nhất là R.class)  Thư mục res để chứa các resource dùng trong ứng dụng (thông qua ID)  Thư mục assets chứa các resource file mà ứng dụng cần dùng (dưới dạng file)  File Manifest là file khai báo thông tin về ứng với hệ thống (như ứng dụng gồm những màn hình nào, có service nào… xin các quyền gì, phiên bản bao nhiêu, dùng từ SDK phiên bản nào…)  Thư mục Android 2.2:chứa các package hỗ trợ cho việc lập trình  Ngoài ra còn có file thư viện… 2.2.6.3.Build và run một dự án:tạo file *.apk trong thư mục bin của ứng dụng  Theo mặc định,project sẽ tự động built khi chúng ta lưu project  Hoặc ta cũng có thể bỏ chọn build automatically trên menu Project để loại bỏ chức năng tự động build.Để build project thủ công,click chuột phải vào project chọn build. 2.2.6.4. Chạy ứng dụng Hello World: Bấm Ctrl + F11 để chạy ứng dụng, sẽ hiện lên emulator hoặc bấm chuột phải trên project cần run chọn run as -> android application Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 30. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 30 Hình 2.1.11 *) Tạo UI trực tiếp từ code: Vào mục src (chứa mã java của chương trình) để xem code: package com.tuan10.vidu1; import android.app.Activity; import android.os.Bundle; public class HelloWorldActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } Trong đó R là file được tự động sinh ra chứa tài nguyên id, R.layout.main là id của layout chính. Và đây là file main.xml trong thư mục res/layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 31. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 31 android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> *) ở đây ta có thể soạn thảo mã mới,phát triển thêm nhiều ứng dụng phức tạp nữa,giả sử ta chỉnh sửa đoạn mã trong file *.java trong thư mục src/at.exam trên như sau: package com.tuan10.vidu1; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Quyenanh extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } } Sau đó chọn run android applications ta sẽ có kết quả là Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 32. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 32 Hình 2.1.12 Để có thể hiển thị một hình ảnh đơn giản định dạng *.png thì trong file *.java ở phương thức onCreat() thêm câu lệnh là: ImageView <object_name>=new ImageView (this);//tạo một object image mới < object_name>.setImageResource(R.drawable.helloimage);//chỉ đường dẫn đến file lưu ảnh Hoặc trong file main.xml ,chỉnh sửa thêm thẻ <ImageView> là <ImageView android:id="@+id/imageview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@dra wable/icon" /> Chạy chương trình sau khi chỉnh sửa (hình 2.1.13): Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 33. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 33 2.2.6.5.Debug chương trình Dể debug một ứng dụng ban đầu,click chuột phải nên tên Project,chọn Debug as->Android application,ứng dụng sẽ khởi động debug.Có hai cách debug là sử dụng DDMS và sử dụng logcat : a.Sử dụng DDMS(Dalvik Debug Monitor Server):  Mở DDMS trên eclipse  Mở DDMS trong thư mục tools của android SDK.  DDMS:công cụ cho việc gỡ rối  Quản lí thiết bị và bộ giả lập emulator  Có thể giám sát ứng dụng chạy  Giám sát việc sử dụng bộ nhớ của chương trình  Gửi một sự kiện event đến emulator:dưới dạng một thông điệp hoặc tạo một lời gọi đến emulator.  Gỡ rối khi được yêu cầu. Khi ứng dụng được khởi động,lựa chọn gói ứng dụng trên thanh tab device của DDMS,click chọn icon màu xanh để bắt đầu debug ứng dụng này( hình 2.1.14): Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 34. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 34 b.Debug sử dụng logcat (hình 2.1.15): Hệ thống android tạo file log của tất cả các ứng dụng bao gồm các lỗi và bản ghi của ứng dụng,và logcat chỉ là một phần của DDMS để đọc file log của emulator hoặc device.Ứng dụng có thể ghi thông tin vào file log sử dụng câu lệnh System.out.println(information); hoặc lớp log: Log.d(Tag,information);. 2.2.6.6.Device của Android ( hình 2.1.16): Device cũng là một chức năng hữu ích trong Android hỗ trợ trên eclipse giúp ta quản lý thiết bị ảo cũng như thật,do đó ta có thể xem trước chương trình đã viết. Mở Device bằng cách vào Window -> Show View -> Device hoặc vào Window -> Show View -> Others -> Android -> Device. Chức năng mình thường sử dụng nhất của device là Screen Capture, cực kỳ tiện để lấy ảnh minh họa làm thuyết trình hoặc giới thiệu trên Google Market. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 35. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 35 2.3.Lập trình Android với Netbean: Về cơ bản thì lập trình trên Netbean không khác gì nhiều với trên eclipse nên phần này em xin chỉ trình bày về cấu hình và cài đặt plugin cho Netbean để viết các ứng dụng Android trên nền Windows: 2.3.1.Cài đặt plugin cho Netbean: B1:mở Netbean,vào vào Tool | Plugin từ thanh menu sau đó chọn tab Setting từ hộp thoại xuất hiện (hình 2.2.1): B2: Ở tab Setting ta chọn nút Add -> hiện hộp thoại khác -> ở đây ta nhập tên của plugin (vd: Android Plugin) và nhập URL trỏ tới server mà Netbean có thể tải về bản cài đặt của Android Plugin (dành riêng cho Netbean): http://kenai.com/downloads/nbandroid/updates.xml(hình 2.2.2): Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 36. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 36 Sau đó ta chọn OK, những thông số vừa được tạo sẽ được liệt kê ở khung bên trái của tab Setting mà ta đang mở nãy giờ (hình 2.2.3): Nhấn vào dấu check Android Plugin nếu nó chưa check. B4: tiếp theo ta chọn tab Availalble Plugins -> check chọn mục Android -> chọn nút Install phía dưới góc trái của hộp thoại -> hộp thoại sau sẽ xuất hiện(hình 2.2.4): (Nếu chưa tìm thấy Android thì ta vào ô Search ở bên phải đành vào chữ Android rồi check nó vào.) Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 37. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 37 Sau khi nhấn vào Install nó sẽ hiện ra như sau (hình 2.2.5): Tiếp theo bạn chon Next de tiep tuc cai dat Android Plugin. Cứ bấm Next và Continue cho tới khi kết thúc (hình 2.2.6): 2.3.2.Cấu hình Netbean: B1: vào Netbean chọn Tools | Java Platform từ menu. Chọn Add Platform, sau đó chọn "Google Android Open Handheld Platform" như hình sau (hình 2.2.7): Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 38. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 38 chọn Next, một hộp thoại xuất hiện yêu cầu chọn thư mục mà Android SDk đã được cài đặt trên đó, sau đó chọn Next . Hình 2.2.8 (nếu không tìm thấy thư mục cài đặt của Android SDK thì ta có thể thêm thư mục Android của eclipse cũng được hoặc có thể download (ta có thể chọn windows,linux,mac OS) tại địa chỉ http://developer.android.com/sdk/index.html sau khi download về rồi giải nén ra một thư mục nào đó,ví dụ:c:android chẳng hạn). -Tiếp theo đặt tên vào ô Name của platform rồi bấm Finish. B2: Quay lại hộp thoại java Platform Manager ta sẽ thấy Android platform xuất hiện trong danh sách,ta bấm vào nút close là đã cài xong(hình 2.2.9) B3:sau khi đã hoàn thành các bước trên ta có thể bắt đầu viết chương trình ứng dụng cho Android Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 39. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 39 Vào file -> New Project,hộp thoại New Project hiện ra,chọn Android -> Android Application (hình 2.2.10) Tiếp theo trong hộp thoại New Android Application ta cũng điền đầy đủ các thông số cần thiết cho một ứng dụng mới tương tự như ở Eclipse(hình 2.2.11): Hình 2.2.11:tạo một ứng dụng mới trên Netbean III.Lập trình ứng dụng Android: Trong phần này em xin trình bày sơ lược về đồ họa 2D trong Android và một chương trình Android translator.Nhưng trước khi đi vào một ứng dụng cụ thể,em xin trình bày thêm về vòng đời một ứng dụng trong Android để từ đó phát triển thành một phần mềm hoàn chỉnh vì theo em thì điều này là thực sự cần thiết nếu muốn tiếp tục phát triển chương trình hơn nữa. 3.1. Life-Cycle program: Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 40. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 40 3.1.1.Các thành phần trong một ứng dụng của Android: Một ứng dụng gồm một hoặc nhiều thành phần được định nghĩa trong file manifest.xml. Một thành phần có là một trong các phần sau: 1. Một Activity Một Activity hiện hữu cho một giao diện của ứng dụng. Mỗi Activity có một giao diện riêng. Activity được đánh dấu là Activity đầu tiên sẽ được chạy khi chương trình chạy. Việc chuyển từ activity này đến activity khác bằng việc gọi intents. 2. Một Service Một service không có giao diện, nhưng chạy ở bên dưới chúng ta không biết được thời gian của nó. Nó có thể kết nối tới một service đang chạy (và khởi động service nếu service đó không chạy). Trong quá trình kết nối, bạn có thể giao tiếp với service qua một giao diện đó là serviec exposes. 3. Một broadcast receiver Broadcast receiver là một thành phần mà không có gì nhưng nhận và phản ứng lại những thông báo được broadcast. Nhiều broadcast gốc trong mã hệ thống (ví dụ: "you got mail") và các ứng dụng cũng có thể khởi tạo broadcast. Broadcast receivers không hiển thị giao diện người dùng. Tuy nhiên, họ có thể khởi tạo một Activity phản hồi lại những thông tin được nhận. Họ có thể dùng notification manager để cảnh giác đến người dùng. 4. Một content provider Một content provider cung cấp một tập chi tiết dữ liệu ứng dụng đến các ứng dụng khác. Dữ liệu thường được lưu trữ ở file hệ thống, hoặc trong một SQLite database. Content Provider hiện thực một tập phương thức chuẩn mà các ứng dụng khác có thể truy xuất và lưu trữ dữ liệu của loại nó điều khiển. Tuy nhiên, những ứng dụng không thể gọi các phương thức trực tiếp. Hơn thế chúng dùng content resolver và gọi những phương thức đó. Một content resolver có thể giao tiếp đến nhiều content provider; nó cộng tác với các provider để quản lý bất kỳ giao tiếp bên trong liên quan. Mỗi ứng dụng Android chạy trên process của nó. Bất cứ lúc nào nó cũng quản lý được các thành phần của nó:  Android phải đảm bảo các process thành phẩn phải đang chạy  Khởi tạo nếu cần thiết  Một trường hợp tương thích của cái thành phần là có giá trị, đang khởi tạo trường hợp nếu cần thiết. Chu kỳ ứng dụng Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 41. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 41 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 run và sẽ còn chạy cho đến khi 1. nó không phụ thuộc 2. hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác 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 1. những phần của ứng dụng mà hệ thống biết đáng chạy 2. những phần quan trong như thế nào đối với người dùng 3. bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống 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. Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible Hình 3.1 Chu kỳ sống của ứng dụng Android 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 bắt đầu, 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ế tiếp của stack sẽ di chuyển lên và trở thành active. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 42. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 42 Hình 3.2 Chồng Activities Các trạng thái của chu kỳ Một Activity chủ yếu có 3 chu kỳ chính sau: 1. Active hoặc running: Khi Activity 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. 2. 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ớ. 3. 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 tron 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. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 43. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 43 Hình 3.3 Các trạng thái của chu kỳ một Activity Chu kỳ của ứng dụng Hình 3.4 Chu kỳ ứng dụng Android Các sự kiện trong chu kỳ số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 finish() (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. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 44. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 44 Hình 3.5 Các phương thức trong 1 chu kỳ của Activity Tất cả các phương thức là những móc nối mà bạn 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. ng của ứng dụng 7 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 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 tron onDestroy(). Visible Lifetime Visible lifetime của một activity diễn ra giữa lầ 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. Foreground LifeTime Foregroudn lifetime của một activity diễn ra giữa 2 lần gọi onResume() và onPause() Trong khoảng thời gian này, activity ở trước tất cả activity khác và là đang tương tác với người dùng. Một Actifity thường xuyên chuyển trạng thái giữa resumed và paused.  onPause() được gọi khi thiết bi đi vào trạng thái sleep hoặc khi một activity mới là được start.  onResume() được gọi khi một Activity hoặc một intent mới được delivered Các phương thức của chu kỳ sống Phương thức: onCreate()  Được gọi khi activity lần đầu tiên được tạo  Ở đây bạn làm tất cả các cài đặt tĩnh -- tạo các view, kết nối dữ liệu đến list và .v.v  Phương thức này gửi qua một đối tượngBundle chứa đựng từ trạng thái trược của Activity  Luôn theo sau bởi onStart() Phương thức: onRestart()  Được gọi sau khi activity đã được dừng, chỉ một khoảng đang khởi động lần nữa (stared again) Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 45. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 45  Luôn theo sau bởi onStart() Phương thức: onStart()  Được gọi trước khi một activity visible với người dùng  Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop() nế nó trở nên ẩn. Phương thức: onResume()  Được gọi trước khi activity bắt đầu tương tác với người dùng  Tại thời điểm này activity ở trên dỉnh của stack activity.  Luôn theo sau bởi onPause() Phương thức: onPause()  Được gọi khi hệ thống đang resuming activity khác  Phương thức này là điển hình việc giữ lại không đổi dữ liệu.  Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không được resumed ngay cho đến khi nó trở lại.  Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nếu nó trở nên visible với người dùng.  Trạng thái của activity có thể bị giết bởi hệ thống Phương thức: onStop()  Được gọi khi activity không thuộc tầm nhìn của người dùng.  Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được resumed và bao phủ nó.  Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với người dùng, hoặc onDestroy() nếu activity đang bỏ.  Trạng thái của activity có thể bị giết bởi hệ thống Phương thức: onDestroy()  Được gọi trước khi activity bị hủy.  Đó là lần gọi cuối cùng mà activity này được nhận. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.
  • 46. Thực tập cơ sở về Android N g u y ễ n V ư ơ n g Q u y ề n Page 46  Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm thởi bị hủy diệt để tiết kiệm vùng nhớ.  Bạn có thể phân bietj giữa 2 kịch bản với phương isFinshing()  Trạng thái của activity có thể được giết bởi hệ thống. Killable States Activity đang ở trạng thái này có thể bị kết thúc bởi hệ thống bất kỳ lúc nào sau khi phương thức trả về. 3 phương thức (onPause(), onStop(), và onDestroy() là killable onPause() phải được gọi trước khi tiến trình bị giết -- onStop và onDestroy có thể là không. Vì vậy chúng ta dung onPause viết bất kỳ dữ liệu chắc để lưu trữ. Ví dụ: Demo Life Cycle Mục đích của ứng dụng này sẽ gọi các hàm trong Activity Life Cycle //protected void onCreate(Bundle savedInstanceSta te); //protected void onStart(); //protected void onRestart(); //protected void onResume(); //protected void onPause(); //protected void onStop(); //protected void onDestroy(); Tạo một ứng dụng mới trên Android với tên LifeCycle,file lifecycle.java : java: 1. package com.android; 2. import android.app.Activity; 3. import android.content.SharedPreferences; 4. import android.os.Bundle; 5. import android.view.View; 6. import android.widget.Button; 7. import android.widget.EditText; 8. import android.widget.TextView; 9. import android.widget.Toast; 10. // Muc dich cua vi du nay la show cac su kien cua chu ky song 11. //protected void onCreate(Bundle savedInstanceSta te); Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.