Tải bản đầy đủ (.pdf) (52 trang)

Tìm hiểu lập trình android và xây dựng ứng dụng quản lý contacts demo

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1006.41 KB, 52 trang )

NHẬN XÉT CỦA GIẢNG VIÊN HƢỚNG DẪN

............................................................................................................................. ...............................................................
............................................................................................................................................................................................
............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
............................................................................................................................................. ...............................................
............................................................................................................................................................................................
............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
............................................................................................................................................................. ...............................
............................................................................................................................................................................................
............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
............................................................................................................................................................................. ...............
.................................................................................................................... ........................................................................
............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
............................................................................................................................................................................................
............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
......................................................................................................................................... ...................................................
............................................................................................................................................................................................
............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
......................................................................................................................................................... ...................................
............................................................................................................................................................................................
............................................................................................................................. ...............................................................
................................................................................................. ...........................................................................................
......................................................................................................................................................................... ...................
................................................................................................................ ............................................................................


............................................................................................................................. ...............................................................
............................................................................................................................. ...............................................................
......................................................................................................................................................................................... ...
............................................

Ngày ...... Tháng ....... Năm .......
Giảng Viên Hƣớng Dẫn

(Ký và ghi rõ họ tên)

1


LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy cô trong ộ m n M ng v truyền th ng cùng
toàn thể các thầy c trƣờng Đ i Học

ng Nghệ Th ng Tin v Truyền Th ng –

Đ i học Thái Nguyên đã truyền đ t cho chúng em những kiến thức quý giá trong
thời gi n qu
Em xin chân thành cảm ơn Thầy Nguyễn Anh Chuyên đã tận tình hƣớng dẫn, chỉ
bảo em trong suốt quá trình thực hiện đề tài.
Cuối cùng tôi xin cảm ơn các

n trong khoa Công Nghệ Thông Tin, những

ngƣời đã giúp đỡ, chia sẽ kiến thức, tài liệu ... trong suốt quá trình thực hiện
nghiên cứu đề tài.
Trong ph m vi khả năng cho phép, em đã rất cố gắng để ho n th nh đề tài một

cách tốt nhất. Song, chắc chắn sẽ không tránh khỏi những thiếu sót. Em kính
mong nhận đƣợc sự cảm thông và những ý kiến đóng góp của quý thầy cô và các
b n.

Nhóm sinh viên thực hiện
Ph m Xu n Qu n
Thái nguyên, tháng 6 năm 2012

2


MỤC LỤC
LỜI CẢM ƠN
MỞ ĐẦU

2

5

HƢƠNG 1 : TỔNG QUAN VỀ ĐIỆN TOÁN DI ĐỘNG VÀ NỀN TẢNG LẬP
TRÌNH ANDROID 6
1.1 Tổng qu n về điện toán i động

6

1.1.1

Điện toán i động 6

1.1.2


Tiềm năng phát triển của lập trình i động

1.2 Nền tảng n roi

8

1 2 1 Lƣợc sử về Android

8

1 2 2 Kiến trúc nền tảng n roi

10

1.2.3 Các công cụ để t o một ứng dụng Android

13

1 2 4 X y ựng các th nh phần ứng ụng n roi

15

1.2.5

7

Xây dựng các thành phần giao diện ứng dụng Android

29


1.2.6 Xử lý bất đồng bộ 37
HƢƠNG 2: XÂY DỰNG HƢƠNG TRÌNH QUẢN LÝ CONTACTS

42

2.1 Phân tích thiết kế hệ thống quản lý Contact 42
2 1 1 Đặc tả bài toán

42

2 1 2 Đặc tả chức năng 42
2.1.3 Phân tích hệ thống với UML

44

2.2 X y ựng gi o iện chƣơng trình

47

2.2.1

Gi o iện ch nh – hiển th

nh sách th ng tin iên c 47

2.2.2

Gi o iện tìm iếm th ng tin iên c


2.2.3

Gi o iện thêm mới th ng tin iên c v sửa thông tin liên l c

47

49
2.2.4

Các giao diện Menu sử dụng trong chƣơng trình

KẾT LUẬN 51
Kết quả đ t đƣợc

51

Hƣớng phát triển

51

TÀI LIỆU THAM KHẢO 52

3

49


4



MỞ ĐẦU
Hiện nay ngành công nghiệp phần mềm đ ng rất phát triển và ngành công nghiệp
phần mềm trên điện tho i i động cũng h ng nằm ngoài xu thế đó Tuy còn
nhiều h n chế trong phần cứng củ điện tho i i động nhƣng nó đã thể hiện đƣợc
sức m nh của mình trong rất nhiều các ĩnh vực khác nh u nhƣ giải trí, các tiện
ch, th nh toán điện tử .v.v..
Các hệ điều h nh nhƣ Win ow Mo i e, Sym i n… phần n o cũng g y t nhiều
hó hăn cho những i có ý đ nh xây dựng các ứng dụng trên nó Đối với
Window Mobile là một công nghệ của Microsoft và hoàn to n đóng đối với
ngƣời dùng, nhà phát triển ứng dụng chỉ dựa hoàn toàn vào công nghệ mà
Microsoft cung cấp, còn Symbian thì việc cấu hình để có thể lập trình trên nó
cũng v v n hó hăn, đặc biệt là nó sử dụng ngôn ngữ / ++ để làm nền tảng
lập trình rõ ràng là không thuận tiện trong việc phát triển ứng dụng.
Xuất phát từ nhu cầu thực tế đó, Goog e đã m nh d n nghiên cứu v đƣ r một
nền tảng hệ điều hành mới, đó ch nh

n roi

Một nền tảng hệ điều hành mã

nguồn mở hoàn toàn và dựa vào một ngôn ngữ lập trình rất m nh

J v để phát

triển ứng dụng. Chính vì Android hỗ trợ Java ngay từ trong nền tảng của nó, nên
việc viết ứng dụng, ngay cả sử dụng các chức năng của phần cứng là hoàn toàn
dễ dàng thông qua việc sử dụng bộ công cụ hỗ trợ lập trình đƣợc cung cấp hoàn
toàn miễn phí, là Android SDK.
Nhận thấy nhu cầu củ con ngƣời trong ĩnh vực giải tr trên i động ngày càng
cao và Android chính là nền tảng ứng dụng có thể phát triển trong tƣơng i.

Chính vì vậy em chọn đề tài “Tìm hiểu ập trình n roi v x y ựng ứng ụng
quản ý ont cts Demo” nhằm hiểu rõ về các ĩ thuật lập trình trên thiết b động
Android.

5


HƢƠNG 1 : TỔNG QUAN VỀ ĐIỆN TOÁN DI ĐỘNG VÀ NỀN
TẢNG LẬP TRÌNH ANDROID
Tổng qu n về điện toán i động
Theo một báo cáo củ hãng Morg n St n ey, đến năm 2015 việc sử dụng và truy
cập Internet i động sẽ lớn hơn rất nhiều so với sử dụng Internet trên máy tính
PC.( Morgan Stanley là một ng n h ng đầu tƣ, công ty chứng khoán có trụ sở
chính t i Hoa Kỳ Đ y

một trong những thể chế tài chính lớn nhất của thể

giới.)
Theo báo cáo của Công ty IDC, t i Việt Nam, tổng doanh thu bán hàng của máy
t nh để bàn quý III-2011 tăng 5%, máy t nh xách t y nhỏ gọn tăng 83% so với
cùng kỳ năm trƣớc. Xu thế hiện nay là sử dụng nhiều thiết b

i động nhƣ các

òng điện tho i thông minh, máy tính bảng tablet dựa trên nền tảng web, hệ
thống GPS, game video và thiết b ứng dụng h ng
Với sự phát triển và cải tiến liên tục thiết b

y trong gi đình…


i động, chúng t có căn cứ để tin

rằng, trong tƣơng i gần, máy tính truyền thống PC sẽ b mất ƣu thế so với thiết
b cá nh n i động nhỏ gọn, tiện ích và tích hợp đầy đủ chức năng của một chiếc
máy tính. Chúng ta hoàn toàn có thể nhận đ nh: “Điện toán i động đ ng

xu

thế của thời đ i”
Điện toán i động
Điện toán i động là gì ?
Nói một cách tổng qu n thì điện toán i động là việc sử dụng những thiết b cầm
tay nhỏ gọn để phục vụ những mục đ ch củ con ngƣời nhƣ m việc, vui
chơi,giải trí,học tập v v Đó

việc sử dụng ngày càng nhiều thiết b

i động

nhƣ các òng điện tho i thông minh, máy tính bảng tablet dựa trên nền tảng web,
hệ thống GPS, game video và thiết b ứng dụng không dây trong mọi sinh ho t
củ con ngƣời.
Điện toán i động đ ng phát triển nhƣ thế nào ?

6


Sự phát triển bùng nổ các giải pháp công nghệ dành cho thiết b

i động cũng


một trong những nhân tố góp phần t o ra các thiết b cầm tay nhỏ gọn, đáp ứng
mọi nhu cầu tiêu dùng thông tin và ứng dụng củ ngƣời sử dụng.
Những ngƣời kinh doanh, những ngƣời quản lý, những ngƣời tiêu dùng bình
thƣờng hay cả những ngƣời lớn tuổi. húng t đều trở ên i động và khao khát
đƣợc i động nhiều hơn Di chuyển khắp thế giới để kinh doanh, hội họp với các
đối tác hoặc một m i trƣờng làm việc “ i động” đã gần nhƣ trở thành một điều
rất ình thƣờng trong cuộc sống. Chúng ta có thể làm việc mà không cần rời khỏi
nhà, hoặc làm việc trong khi vẫn còn đ ng ngồi nhâm nhi tách cà phê trong một
quán cà phê. Những kỳ nghỉ đơn thuần chỉ là di chuyển từ nƣớc n y s ng nƣớc
khác.
Điện toán i động phát triển một cách m nh mẽ một phần lớn dựa trên nền tảng
công nghệ của internet, công nghệ m ng i động 2G, 3G và 4G v đặc biệt là
công nghệ điện toán đám m y. Ngƣời sử dụng, sử dụng những thiết b cầm tay
(máy tính sách tay, ta et, sm rtphone…) để kết nối vào internet chia sẻ và cập
nhật thông tin. Sự phát triển m nh mẽ củ điện toán i động đƣợc thể hiện rõ ở
những con số sau: T nh đến hết quý 1/2012 doanh số án òng điện tho i thông
minh (sm rtphone) tăng ên đáng ể, đ t 144,4 triệu chiếc, tăng 44,7% so với quý
1/2011 và máy tính xách tay nhỏ gọn tăng 83% so với cùng kỳ năm trƣớc. Trong
năm 2012, theo ID

ự đoán o nh số bán máy tính bảng đ t khoảng 53,5 triệu

máy.
Tiềm năng phát triển của lập trình i động
Với sự phát triển nhƣ vũ áo củ điện toán i động trong thời kì hiện n y, đã éo
theo sự phát triển m nh mẽ của ngành công nghiệp phần mềm ứng dụng cho thiết
b

i động Trƣớc thực tế đó, rất nhiều công ty, tổ chức đã x y ựng và phát triển


các kho ứng dụng của họ cho thiết b

i động.

Tháng 7/2008, Apple ra mắt kho ứng dụng i động trực tuyến đầu tiên
với 500 ứng dụng cho các sản phẩm iPhone, iPo

Khi đó, th trƣờng ứng dụng

mobile hầu nhƣ chƣ hề tồn t i Đến n y, pp Store đã có hơn 400,000 ứng dụng
với 10 tỷ ƣợt tải về, dẫn đầu ngành về d ch vụ ứng dụng cho i động. Sau thành
7


công củ

pp e, các hãng i động nhận thấy tiềm năng của th trƣờng Mobile

pps đã iên tiếp cho ra mắt kho ứng dụng của mình. Tiêu biểu là Ovi Store của
Nokia (55,000 ứng dụng, 760 triệu download), Android Market của Google
(200,000 ứng dụng,4,5 tỉ download), App World của Blackberry (30,000 ứng
dụng, 3 triệu download/ngày), và mới đ y

Hu wei Techno ogy - dành cho các

nhà m ng i động trên toàn cầu với hơn 80.000 ứng dụng i động/nh c, phim, eoo cho HĐH n roi , Sym i n v Win ows Mo i e

Góp v o tổng doanh


thu h ng năm ng nh ên tới 7 tỷ USD, dự báo sẽ đ t 30 tỷ USD trong 3 năm tới.
T i Việt Nam, một số doanh nghiệp đã x y ựng kho ứng dụng i động riêng nhƣ
F-Store của FPT, mStore của Tổng công ty Viễn th ng Qu n đội Viettel, LG
Application Mobile của LG hay Nokia Ovi với phiên bản dành cho th trƣờng
Việt Nam. VTC Mobile, một trong các đơn v dẫn đầu th phần d ch vụ giá tr gia
tăng trên i động gi i đo n 2006-2010 t i Việt n m cũng đã hợp tác với Qmo i e để xây dựng Q-Store, cung cấp các ứng dụng do Việt Nam xây dựng tới
hàng triệu ngƣời sử dụng Q Mobile. Việt Nam hiện có tới 50 triệu thuê bao di
động ho t động thƣờng xuyên và nền tảng 3G đã đƣợc các nhà m ng triển khai
rộng khắp với 69% ngƣời sử dụng ở độ tuổi trung bình 15 – 24 t o nên một th
trƣờng có tốc độ phát triển nhanh chóng và m nh mẽ.
Nhƣ vậy, lập trình i động hiện đ ng có tiềm năng rất lớn, đ y ng nh, ĩnh vực
cực ì s i động và phát triền trong thời đ i hiên nay.
Nền tảng n roi
1.2.1 Lƣợc sử về Android
Android đƣợc phát hành phiên bản đầu tiên 11/11/2007, là một m i trƣờng hệ
điều hành hoàn chỉnh dựa trên hệ điều hành nhân Linux V2.6. Lúc đầu, đ ch triển
h i đối với n roi

ĩnh vực điện tho i i động, gồm các lo i điện tho i

thông minh và các lo i thiết b điện tho i kiểu gập chi phí thấp. Tuy nhiên, ph m
vi đầy đủ các d ch vụ điện toán của Android và sự hỗ trợ chức năng phong phú
của nó có tiềm năng mở rộng ra ngoài th trƣờng điện tho i i động. Android còn
có thể hữu ch đối với các nền tảng và ứng dụng khác.

8


Nền Android là sản phẩm của Open Handset Alliance (Liên minh thiết b cầm tay
mở), một tập đo n các tổ chức cùng hợp tác với nh u để xây dựng nên một lo i

điện tho i i động tốt hơn Tập đo n o Goog e đứng đầu này gồm các nhà vận
h nh (điện tho i) i động, các nhà sản xuất thiết b cầm tay, sản xuất linh kiện,
các nhà cung cấp nền và giải pháp phần mềm và các công ty tiếp th . Từ một
qu n điểm phát triển phần mềm, Android trở thành trung tâm của thế giới mã
nguồn mở và rất có tiềm năng phát triển.
Thiết b cầm tay có khả năng n roi đầu tiên trên th trƣờng là thiết b G1 do
HTC sản xuất v đƣợc bán trên T-Mobile. Nó trở nên sẵn có sau gần một năm
đồn đ i, khi mà các công cụ phát triển phần mềm sẵn có duy nhất chỉ là một số
bản phát hành Bộ công cụ phát triển phần mềm (SDK) đƣợc cải tiến dần từng
ƣớc. Khi ngày phát hành G1 gần đến, nhóm n roi đã phát h nh SDK V1 0 v
các ứng dụng bắt đầu vƣợt lên nhằm hƣớng tới nền tảng mới này.
Để

ch th ch đổi mới và phát triển các ứng dụng của Android, Goog e đã t i trợ

hai vòng cuộc thi “ ác thách thức nhà phát triển n roi ”, và hàng triệu đ

đã

đƣợc đổ vào các ứng dụng dự thi h ng đầu. Vài tháng sau G1, Android Market
đƣợc phát h nh, cho phép ngƣời sử dụng duyệt và tải về các ứng dụng trực tiếp
v o điện tho i của họ. Trong vòng 18 tháng, một nền i động mới đã chính thức
có mặt trên th trƣờng và sẽ

đối thủ c nh tranh nặng ký của các nền i động

phổ biến trƣớc đó nhƣ Symbian hay Window Mobile.
Android cung cấp há đầy đủ các công cụ cơ ản và đƣợc thiết kế sao cho các
nhà phát triển có thể tận dụng tối đ ợi thế của thiết b cầm t y để xây dựng nên
các ứng dụng thực sự thuyết phục. Họ có thể t o một ứng dụng có thể gọi thực

hiện các chức năng õi trong điện tho i nhƣ thực hiện cuộc gọi, gửi tin nhắn
SMS, ùng c mer … Hay chia sẻ thông tin cá nhân lên trang web chẳn h n nhƣ
thông tin liên l c, v tr đ a lí, l ch biểu… ác nh phát triển còn có thể làm bất
cứ việc gì trên thiết b Android bởi vì hệ thống Android giao tiếp thông qua các
Intents – nó đơn giản là một chuỗi mô tả một h nh động n o đó – ví dụ:
“ n roi provi er Te ephony SMS_RE EIVED”
d ch vụ đ nh v (v đ y

n roi còn cung cấp sẵn các

một thế m nh của Google) cùng với một tập các ứng

9


dụng về “M p” với các t nh năng rất ấn tƣợng nhƣ ò đƣờng, tính khoảng cách
đ điểm, tìm b n… Ngoài ra còn có một số t nh năng nổi bật hác nhƣ
nim tion v đồng thời cũng hỗ trợ media-playback.
Sự phát triển của hệ điều hành Android nổi bật qua các phiên bản chính dành cho
điện tho i i động ( n roi 2 3),

nh cho t

et ( n roi 3 0) … Phiên bản mới

nhất hiện nay là Android 4.0.x (Ice Cream Sandwich) là phiên bản dành cho cả
smatphone và tablet.
1.2.2 Kiến trúc nền tảng Android
Với khả năng rộng rãi của Android, sẽ rất dễ dàng nhầm lẫn nó với một hệ điều
h nh máy t nh để bàn. Android là một m i trƣờng phân tầng, xây dựng trên nền

của hệ điều hành nhân Linux, và nó bao hàm nhiều chức năng phong phú Hệ
thống giao diện ngƣời sử dụng gồm có:
Cửa sổ
Khung hình
Các tiểu trình để hiển th các phần tử phổ biến nhƣ các hộp biên so n, danh sách,
danh sách thả xuống.
Android gồm một trình duyệt có thể nhúng v o đƣợc, đƣợc xây dựng dựa trên
WebKit, chính là máy (engine) trình duyệt mã nguồn mở cũng đ ng

động cơ

của trình duyệt Safari của iPhone.
Android khoe ra một mảng dồi dào nhiều tùy chọn kết nối, gồm WiFi, Bluetooth
và dữ liệu không dây qua một kết nối i động (nhƣ GPRS, EDGE và 3G).Một kỹ
thuật phổ biến trong các ứng dụng Android là liên kết tới Google Maps để hiển
th một đ a chỉ trực tiếp trong một ứng dụng. Việc hỗ trợ cho các d ch vụ dựa trên
đ điểm (chẳng h n nhƣ GPS) v các ụng cụ đo gi tốc cũng có sẵn trong gói
phần mềm Android, mặc dù không phải tất cả các thiết b

n roi đƣợc trang b

với các phần cứng cần thiết. Ngoài ra còn có cả hỗ trợ máy ảnh nữa (camera).
Về mặt l ch sử, có h i ĩnh vực mà các ứng dụng i động đã gắng sức theo k p
các đối tác máy t nh để

n

đồ họ /đ phƣơng tiện v phƣơng thức ƣu trữ dữ

liệu. Android giải quyết thách thức về đồ họa bằng sự hỗ trợ dựng sẵn cho đồ họa


10


2D và 3D, gồm cả thƣ viện OpenGL. Gánh nặng ƣu trữ dữ liệu đƣợc giảm nhẹ vì
nền Android có gồm cả cơ sở dữ liệu SQLite mã nguồn mở phổ biến. Hình 1 cho
thấy một hung hình đơn giản hóa về các tầng phần mềm Android.

Hình 1 – Cấu trúc Android
Tầng erne Linux
Nh n củ

n roi đƣợc phát triển ự v o Kerne Linux 2 6 Theo đó, nó cung

cấp các trình điều hiển các thiết

phần cứng ( river), quản ý tiến trình, quản

ý t i nguyên, ảo mật … nhƣ s u:
Security system
Memory management
Process mamagement
Network stack
Driver model
Tầng Libraries và Android runtime
Li r ries (thƣ viện)
n roi

o gồm một ộ thƣ viện / ++, đƣợc sử dụng bởi các thành phần


khác nhau của hệ thống Android. Những khả năng tiếp xúc với các nhà phát triển
11


thông qua các khuôn khổ ứng dụng n roi

Dƣới đ y

một số các thƣ viện lõi

của Android:
System C library - một BSD-có nguồn gốc thực hiện các hệ thống thƣ viện chuẩn
(LIB ), điều chỉnh cho nhúng dựa trên Linux các thiết b .
Media Libraries - dựa trên OpenCORE PacketVideo's; sự hỗ trợ các thƣ viện
phát l i và ghi âm của âm thanh và phổ biến nhiều đ nh d ng vi eo, cũng nhƣ các
tập tin hình ảnh tĩnh,

o gồm MPEG4, H.264, MP3, AAC, AMR, JPG, và PNG.

Surface Manager - quản lý quyền truy cập vào hệ thống con hiển th và hoàn toàn
phù hợp chất 2D và 3D lớp từ nhiều ứng dụng đồ họa.
LibWebCore - một trình duyệt web hiện đ i, động cơ có quyền h n cả hai trình
duyệt web của Android và một xem nhúng.
SGL - các công cụ đồ họa 2D.
OpenGLJES – Thƣ viện đồ họ 2D v 3D
3D libraries - một việc thực hiện dự trên OpenGL ES 1,0 PI; các thƣ viện,
hoặc sử dụng phần cứng tăng tốc 3D (nếu có) hoặc bao gồm, cao tối ƣu r sterizer
phần mềm 3D.
SQLite - một m nh mẽ và nhẹ quan hệ cơ sở dữ liệu có sẵn cho tất cả các ứng
dụng.

n roi Runtime (Thời gi n ch y n roi )
Android bao gồm một tập các thƣ viện lõi mà cung cấp hầu hết các chức năng
sẵn có trong thƣ viện cốt lõi của ngôn ngữ lập trình Java.
Mỗi ứng dụng Android ch y trong tiến trình riêng của mình, với trƣờng hợp
riêng của các máy ảo D vi

D vi đã đƣợc viết nên một thiết b có thể ch y

nhiều máy ảo hiệu quả. VM Dalvik thực hiện tác phẩm trong các Executable
D vi ( ex) Đ nh d ng đƣợc tối ƣu hó cho ộ nhớ tối thiểu VM

đăng ý

trên, và ch y các lớp học biên so n bởi một trình biên d ch ngôn ngữ J v đã
đƣợc chuyển th nh các đ nh d ng dex. Do dx "bao gồm" công cụ. VM Dalvik
dựa vào h t nhân Linux cho các chức năng tiềm ẩn nhƣ uồng và cấp quản lý bộ
nhớ thấp.
Tầng pp ic tion Fr mewor

12


Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà
phát triển khả năng để xây dựng các ứng dụng vô cùng phong phú và sáng t o.
Các nhà phát triển đƣợc miễn ph để tận dụng lợi thế của các thiết b phần cứng,
th ng tin đ điểm truy cập, d ch vụ ch y nền, thiết lập hệ thống áo động, thêm
các th ng áo đến các thanh tr ng thái, và nhiều, nhiều hơn nữa.
Các nhà phát triển có thể truy cập vào các API cùng một khuôn khổ đƣợc sử
dụng bởi các ứng dụng lõi. Kiến trúc ứng dụng đƣợc thiết kế để đơn giản hóa
việc tái sử dụng các thành phần


ơ chế n y cũng cho phép các th nh phần đƣợc

thay thế bởi ngƣời sử dụng.
Nằm ên ƣới tất cả các ứng dụng là một tập hợp các d ch vụ và hệ thống, bao
gồm:
Một tập phong phú và mở rộng của xem có thể đƣợc sử dụng để xây dựng một
ứng dụng, bao gồm các

nh sách, ƣới, hộp văn ản, các nút, và thậm chí một

trình duyệt web nhúng.
Nhà cung cấp nội dung cho phép các ứng dụng để truy cập dữ liệu từ các ứng
dụng hác (nhƣ ont cts), hoặc chia sẻ dữ liệu của riêng mình.
Một quản lý tài nguyên, cung cấp quyền truy cập v o t i nguyên phi mã nhƣ

y

bản đ hoá, đồ họa, và bố trí tập tin.
Một Notification Manager cho phép tất cả các ứng dụng tùy chỉnh để hiển th
cảnh báo trong thanh tr ng thái.
Một Activity Manager quản ý vòng đời của các ứng dụng và cung cấp một
backstack phổ biến chuyển hƣớng.
Tầng ứng ụng
Android sẽ ship với một bộ các ứng dụng lõi bao gồm một ứng dụng email, l ch
chƣơng trình tin nhắn SMS,, bản đồ, trình duyệt, liên l c, và những ngƣời khác.
Tất cả các ứng dụng đƣợc viết bằng cách sử dụng ngôn ngữ lập trình Java.
1.2.3 Các công cụ để t o một ứng dụng Android
Để bắt đầu phát triển các ứng dụng Android, chúng ta cần có Bộ công cụ phát
triển phần mềm n roi (SDK) v m i trƣờng phát triền tích hợp Eclipse

(Eclipse IDE). Việc phát triển Android có thể diễn ra trên Microsoft Window,

13


Mac OS X hoặc Linux. Trong tiểu luận này, em thực hiện sẽ phát triển ứng dụng
Android bằng Microsoft Window.

Eclipse IDE:
Các ứng dụng n roi đƣợc viết bằng ngôn ngữ J v , nhƣng iên

ch và thi

hành bằng máy ảo Dalvik.Viết mã bằng ngôn ngữ Java trong Eclipse là rất trực
quan. Eclipse cung cấp một m i trƣờng Java phong phú, gồm cả việc trợ giúp
theo ngữ cảnh v các mách nƣớc gợi ý về mã. Khi bộ mã J v đƣợc biên d ch
thành công, Android Developer Tools sẽ đảm bảo rằng ứng dụng đó đƣợc đóng
gói một cách đúng đắn, gồm cả tập tin AndroidManifest.xml.
Android SDK:
Bộ công cụ phát triển ứng dụng Android SDK là công cụ giả lập thiết b ảo trên
máy t nh để phát triển ứng dụng với các hàm API hỗ trợ cho những lập trình viên
lập trình trên các thiết b

i động sử dụng nền tảng Android thông qua ngôn ngữ

lập trình Java. SDK gồm có:
android.jar : tập tin ƣu trữ Java chứa toàn bộ các lớp SDK Android cần thiết để
xây dựng ứng dụng.
ocumention htm v thƣ mục docs: tài liệu SDK đƣợc cung cấp t i chỗ và trên
web, chủ yếu nó ở d ng JavaDocs, t o điều kiện dễ dàng cho việc hƣớng dẫn

trong nhiều gói SDK. Tài liệu cũng gồm cả hƣớng dẫn phát triển mức cao và các
liên kết đến cộng đồng Android rộng rãi.
Thƣ mục sample (các ví dụ mẫu): thƣ mục con samples chứa bộ mã nguồn đầy
đủ dùng cho một lo t các ứng dụng, gồm cả ApiDemo, nó sử dụng nhiềuAPI.
Ứng dụng mẫu là một nơi hám phá tuyệt vời khi bắt đầu phát triển ứng dụng
Android.
Thƣ mục tools (các công cụ): chứa toàn bộ các công cụ dòng lệnh để xây dựng
nên các ứng dụng Android. Công cụ đƣợc dùng phổ biến và hữu ích nhất là tiện
ích adb (Android Debug Bridge).
Usb_driver: thƣ mục chứ các trình điều khiển cần thiết để kết nối m i trƣờng
phát triển với một thiết b có khả năng ch y Android, chẳng h n nhƣ G1 h y điện

14


tho i đã đƣợc phát triển Android Dev 1. Các tập tin n y

đòi hỏi duy nhất đối

với các nhà phát triển đ ng sử dụng nền Windows.
1.2.4 X y ựng các th nh phần ứng ụng n roi
1.2.4.1 Ho t động(Activity)
Mỗi một ctivity đ i diện cho một màn hình. Các ứng dụng phức t p có thể có
nhiều hơn một Activity. Cần t o một Activity cho mỗi màn hình cần hiển th . Cụ
thể là ít nhất một m n hình ch nh điều khiển các chức năng của ứng dụng, các
activity khác nhằm mục đ ch nhập thông tin, cung cấp các khung nhìn khác nhau
trên dữ liệu hoặc hỗ trợ các chức năng hác
Hầu hết các ctivity đƣợc thiết kế để chiếm giữ toàn bộ màn hình, tuy nhiên có
thể t o các Activity có một nữ độ trong suốt, các Activity nổi, hoặc các dialog.


T o một Activity:
Để t o một Activity mới, cần thừa kế từ lớp Activity, sử dụng các View để cung
cấp các tƣơng tác với ngƣời dùng, khai báo các thành phần giao diện và thực thi
các chức năng của ứng dụng.
package com.paad.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class MyActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
}
Một lớp ctivity cơ ản đƣ r một màn hình rỗng chứa cửa sổ hiển th . Vì vậy
việc cần thực hiện đầu tiên là khai báo bố cục cho nó bằng cách sử dụng các
View và layout.Activity UI đƣợc t o thành bởi các View View

các điều khiển

giao diện ngƣời dùng, hiển th dữ liệu và cung cấp tƣơng tác đến ngƣời dùng.

15


Để gắn một giao diện cho một Activity, sử dụng phƣơng thức setContentView
trong lớp ctivity đƣợc kế thừa.
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);

MyView myView = new MyView(this);
setContentView(myView);
}
ó 2 cách để thiết lập giao diện cho Activity: bằng code hoặc th ng qu fi e đ nh
nghĩ

yout Ở trên là cách t o giao diện bằng co e, s u đ y

cách t o giao

diện ngƣời thông qua layout, truyền tham số v o cho phƣơng thức
setContentView là một resource ID
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
Để dùng một Activity cần khai báo bên trong file manifest. Thêm vào một thẻ
activity mới bên trong nút application. Thẻ activity này bao gồm các thuộc tính
cho siêu dữ liệu (

e , icon,…)

Vòng đời của Activity:

16


Hình 2 – Vòng đời của Activity
Khởi động một Activity

Để khởi động một Activity, chúng ta dùng Intent:
Kh i áo tƣờng minh: cung cấp chính xác thông tin của activity cần gọi (nếu
cùng ứng dụng chỉ cần cung cấp tên class, nếu ứng dụng khác nhau thì cung cấp
tên package, tên class).

Intent intent = new Intent(getApplicationContext(),TargetActivity.class);
startActivity(intent);
Kh i áo h ng tƣờng minh: cung cấp thao tác cần làm gì, với lo i dữ liệu nào,
thao tác thuộc nhóm n o… hệ thống sẽ tìm ctivity tƣơng ứng để khởi động.

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivity(intent);
17


Với cách khởi động ctivity h ng tƣờng minh, chúng ta cần phải biết một chút
về Intent-filter. Intent-filter sẽ giúp một activity đăng ý với hệ thống mình có
thể 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.
Liên l c giữa 2 activity:
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 ctivity trƣớc. Ví dụ activity A yêu cầu một
activity làm giúp việc chụp ảnh, ctivity B đáp ứng đƣợc việc này, sau khi user
chụp ảnh xong sẽ trả l i file ảnh cho ctivity

Để liên l c 2 activity chúng ta

làm nhu sau:
Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent nhƣ v


ụ sau:

intent.putExtra("value1", new String("Hello"));
intent putExtr (“v ue2", new Long(100));
Bên ph

ctivity đƣợc khởi động, có thể lấy dữ liệu đƣợc gửi nhƣ s u:

getIntent().getExtras().getString("value1");
getIntent().getExtras().getLong("value2");

Trình thu phát (BroadcastReceiver)
BroadcastReceiver là một trong bốn lo i thành phần trong ứng dụng
Android.Chức năng của nó là ùng để nhận các sự kiện mà các ứng dụng hoặc hệ
thống phát đi
Có 2 cách phát-nhận đó :
Không có thứ tự: receiver n o đủ điều kiện thì nhận hết, không phân biệt và
chúng tách rời nhau.
Có thứ tự: receiver n o đăng ý ƣ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.
Chu kỳ sống
BroadcastReceiver chỉ có duy nhất một phƣơng thức onReceive().
Khi có sự kiện m Bro c stReceiver đã đăng ý nhận đƣợc phát đi, thì phƣơng
thức onReceive() củ Bro c stReceiver đó sẽ đƣợc gọi.

18


Sau khi thực thi xong phƣơng thức này, vòng đời của BroadcastReceiver kết

thúc.
Một số broadcast thông dụng
Báo hệ thống khởi động xong.
Báo pin có sự th y đổi.
Báo có package mới cài vào hoặc xó đ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.
Broadcast o ngƣời phát triển ứng dụng tự đ nh nghĩ (giúp liên l c hoặc thông
báo một sự kiện giữa các ứng dụng).

Hàm onReceive()
Phƣơng thức n y đƣợc gọi khi có sự kiện tƣơng ứng đƣợc phát đi Ở trong
phƣơng thức này, ta truyền vào context (ngữ cảnh) và intent (nơi nhận).
context: vì lớp Receiver không kế thừa từ lớp Context nên cần truyền context mà
receiver n y đ ng ch y vào. Thứ nhất
truyền thêm Context, thứ h i

để có thể xử ý các phƣơng thức yêu cầu

để sử dụng các phƣơng thức của lớp Context.

intent: intent đƣợc truyền vào sẽ có đầy đủ th ng tin nhƣ sự kiện nào mà receiver
n y đăng ý đã xảy ra dẫn đến onReceive() đƣợc gọi,có gửi kèm thông tin gì
hoặc dữ liệu gì hay không. Xem các api:
Intent.getAction();
Intent get…Extr (String


t N me);

D ch vụ (Service)
Service là một trong 4 lo i thành phần của một ứng dụng Android. Service ch y
nền v

h ng tƣơng tác trực tiếp với ngƣời dùng. Sử dụng Service để:

Dùng trong các ứng dụng nghe nh c.

19


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
ctivity ( own o , up o …).
Đ i hi 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.
Làm những thao tác tính toán, xử ý đều đặn n o đó v

ết quả hi n o ngƣời

dùng cần thì mới xem.
T o ra một Service
Để t o ra một Service, ta t o ra một class mới kế thừa lớp Service và override các
phƣơng thức onStart(),onCreate() và onBind().

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {


@Override
public void onStart(Intent intent, int startId) {
// TODO: Actions to perform when service is started.
}
@Override
public void onCreate() {
// TODO: Actions to perform when service is created.
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Replace with service binding implementation.
return null;
}
}

20


Để bắt đầu một Service, sử dụng phƣơng thức startService.Nếu Service
yêu cầu quyền truy cập không tồn t i trong ứng dụng thì một ngo i lệ
SecurityException sẽ đƣợc đƣ r

ó 2 cách để bắt đầu một Service mới.

Cách 1: khởi động ngầm. Ví dụ:
startService(new Intent(MyService.MY_ACTION));
Cách 2: khởi động tƣờng minh. Ví dụ:
startService(new Intent(this, MyService.class));
Để dừng một Serivce, sử ùng phƣơng thức stopService, truyền vào Intent

xác đ nh Service cần ngƣng ho t động. Ví dụ:

ComponentName service = startService(new Intent(this, BaseballWatch.class));
// ngừng d ch vụ bằng cách xác đ nh tên d ch vụ
stopService(new Intent(this, service.getClass()));
// ngừng d ch vụ bằng cách tƣờng minh
try {
Class serviceClass = Class.forName(service.getClassName());
stopService(new Intent(this, serviceClass));
} catch (ClassNotFoundException e) {}
Vòng đời của Services

21


Hình 3 – Vòng đời của service
Khi có một context n o đó gọi st rtService() để khởi động một d ch vụ mong
muốn. Nếu d ch vụ đó chƣ đƣợc t o thì sẽ gọi onCreate() rồi gọi tiếp onStart()
v

hi đó d ch vụ ch y nền ên ƣới.

Nếu s u đó i có một context muốn khởi độngd ch vụ này mà d ch vụ đã đ ng
ch y thì chỉ có phƣơng thức onStart() của d ch vụ đƣợc gọi.
Dù d ch vụ có đƣợc gọi khởi động bao nhiêu lần thì cũng chỉ có thể hiện của d ch
vụ và chỉ cần gọi stopService() một lần để kết thúc d ch vụ.
Kết nối d ch vụ
Khi một ctivity đƣợc kết nối tới một Service, nó duy trì một tham chiếu
đến một thực thể Service Để kết nối đến thực thể này, thực thi phƣơng thức
onBin nhƣ s u:

private final IBinder binder = new MyBinder();
@Override
public IBinder onBind(Intent intent) {
return binder;
}

public class MyBinder extends Binder {
MyService getService() {
return MyService.this;
}
}
Sự kết nối giữ Service v

citvity đƣợc thể hiện qua một ServiceConnection.

Điều cần làm là thực thi một ServiceConnection mới, overri e phƣơng thức
onServiceConnected và onServiceDisconnected.
// tham chiếu đến d ch vụ
private MyService serviceBinder;
// xử lý kết nồi giữa service và activity

22


private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder
service) {
// đƣợc gọi khi liên kết đƣợc thực hiện
serviceBinder = ((MyService.MyBinder)service).getService();
}

public void onServiceDisconnected(ComponentName className) {
// nhận khi d ch vụ ngắt kết nối một cách bất ngờ
serviceBinder = null;
}
Để thực hiện việc kết nối, gọi phƣơng thức bindService:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);

// kết nối d ch vụ
Intent bindIntent = new Intent(MyActivity.this, MyService.class);

bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);
}
Ho t động của bindService(): kết nối d ch vụ

23


Hình 4 – Hoạt động kết nối dịch vụ
Th ng thƣờng, vòng đời của d ch vụ khi có client kết nối từ đầu nhƣ s u:
ũng ắt đầu bằng onCreate() rồi đến onBind() và d ch vụ ch y ƣới nền.
Khi không còn client kết nối tới thì d ch vụ gọi onUnbind() rồi onDestroy().
Có một số trƣờng hợp h ng th ng thƣờng, ví dụ nhƣ:
Có một context khởi động một d ch vụ, s u đó 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 tới d ch vụ.
Một activity vừa gọi startService() vừa gọi bindService().

Trình cung cấp nội dung (Content Providers)

Có thể coi trình cung cấp nội dung nhƣ

một máy chủ cơ sở dữ liệu. Công việc

của nó là quản lý truy cập và chia sẻ dữ liệu đ ng tồn t i, chẳng h n nhƣ một cơ
sở dữ liệu SQLite.Nó có thể đƣợc cấu hình để cho phép các ứng dụng khác truy

24


xuất v ngƣợc l i.Nếu ứng dụng rất đơn giản thì không nhất thiết phải t o ra một
trình cung cấp nội dung.
Content Provider giúp tách biệt tầng ứng dụng ra khỏi tầng dữ liệu Nó có đầy đủ
các quyền điều khiển v đƣợc truy xuất th ng qu m hình URI đơn giảnnhƣ
có thể thêm, xóa, cập nhật dữ liệu của các ứng dụng.

T o một Content Provider mới
T o Content Provider:
Để t o một Content Provider cần thừa kế l i từ lớp trừu tƣợng ContentProvide,
override l i phƣơng thức onCreate.
import android.content.*;
import android.database.Cursor;
import android.net.Uri;
import android.database.SQLException;
public class MyProvider extends ContentProvider {
@Override
public boolean onCreate() {
// TODO: Construct the underlying database.
return true;
}

}

Nên cung cấp một biến static CONTENT_URI trả về một URI của provider này.
Content URI phải là duy nhất giữa các provider, vì thế nên dựa vào tên package
để xác đ nh URI, hình thức chung cho việc đ nh nghĩ một Content Provider URI
là:
content://com.<CompanyName>.provider.<ApplicationName>/<DataPath>

25


×