74
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. .............................................................................. 1

Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Embed Size (px)

Citation preview

Page 1: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

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

Page 2: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy cô trong bô môn Mang và truyên thông cùng

toàn thể các thầy cô trường Đai Học Công Nghê Thông Tin và Truyên Thông –

Đai học Thái Nguyên đã truyên đat cho chúng em những kiến thức quý giá trong

thời gian qua.

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 ban 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 pham 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

ban.

Nhóm sinh viên thực hiên

Pham Xuân Quân.

Thái nguyên, tháng 6 năm 2012

2

Page 3: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

MỤC LỤC

LỜI CẢM ƠN 2

MỞ ĐẦU 4

CHƯƠNG 1 : TỔNG QUAN VỀ ĐIỆN TOÁN DI ĐỘNG VÀ NỀN TẢNG LẬP

TRÌNH ANDROID 5

1.1 Tông quan vê điên toán di đông 5

1.1.1 Điên toán di đông 5

1.1.2 Tiêm năng phát triển của lập trình di đông 6

1.2 Nên tảng Android 7

1.2.1 Lược sử vê Android 7

1.2.2 Kiến trúc nên tảng Android 9

1.2.3 Các công cụ để tao môt ứng dụng Android 13

1.2.4 Xây dựng các thành phần ứng dụng Android 14

1.2.5 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

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ CONTACTS 43

2.1 Phân tích thiết kế hê thống quản lý Contact43

2.1.1 Đặc tả bài toán 43

2.1.2 Đặc tả chức năng 43

2.1.3 Phân tích hê thống với UML 45

2.2 Xây dựng giao diên chương trình 48

2.2.1 Giao diên chính – hiển thi danh sách thông tin liên lac48

2.2.2 Giao diên tìm kiếm thông tin liên lac 49

2.2.3 Giao diên thêm mới thông tin liên lac và sửa thông tin liên lac

51

2.2.4 Các giao diên Menu sử dụng trong chương trình 51

KẾT LUẬN 53

Kết quả đat được 53

Hướng phát triển 53

TÀI LIỆU THAM KHẢO 54

3

Page 4: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

4

Page 5: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

MỞ ĐẦU

Hiên nay ngành công nghiêp phần mêm đang rất phát triển và ngành công nghiêp

phần mêm trên điên thoai di đông cũng không nằm ngoài xu thế đó. Tuy còn

nhiêu han chế trong phần cứng của điên thoai di đông nhưng nó đã thể hiên được

sức manh của mình trong rất nhiêu các lĩnh vực khác nhau như giải trí, các tiên

ích, thanh toán điên tử .v.v..

Các hê điêu hành như Window Mobile, Symbian… phần nào cũng gây ít nhiêu

khó khăn cho những ai có ý đinh 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 khó khăn, đặc biêt là nó sử dụng ngôn ngữ C/C++ để 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ế đó, Google đã manh dan nghiên cứu và đưa ra môt

nên tảng hê điêu hành mới, đó chính là Android. 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 manh là Java để 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ủa con người trong lĩnh vực giải trí trên di đô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 lai.

Chính vì vậy em chọn đê tài “Tìm hiểu lập trình Android và xây dựng ứng dụng

quản lý Contacts Demo” nhằm hiểu rõ vê các kĩ thuật lập trình trên thiết bi đông

Android.

5

Page 6: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

CHƯƠNG 1 : TỔNG QUAN VỀ ĐIỆN TOÁN DI ĐỘNG VÀ NỀN

TẢNG LẬP TRÌNH ANDROID

Tông quan vê điên toán di đông

Theo môt báo cáo của hãng Morgan Stanley, đến năm 2015 viêc sử dụng và truy

cập Internet di đô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 tai Hoa Kỳ. Đây là 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, tai 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 tay 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 bi di đông như các

dòng điên thoai 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 bi ứng dụng không dây trong gia đình…

Với sự phát triển và cải tiến liên tục thiết bi di đông, chúng ta có căn cứ để tin

rằng, trong tương lai gần, máy tính truyên thống PC sẽ bi mất ưu thế so với thiết

bi cá nhân di đô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 đinh: “Điên toán di đông đang là xu

thế của thời đai”.

Điên toán di đông

Điên toán di đông là gì ?

Nói môt cách tông quan thì điên toán di đông là viêc sử dụng những thiết bi cầm

tay nhỏ gọn để phục vụ những mục đích của con người như làm viêc, vui

chơi,giải trí,học tập ..v.v. Đó là viêc sử dụng ngày càng nhiêu thiết bi di đông

như các dòng điên thoai 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 bi ứng dụng không dây trong mọi sinh hoat

của con người.

Điên toán di đông đang phát triển như thế nào ?

6

Page 7: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Sự phát triển bùng nô các giải pháp công nghê dành cho thiết bi di đông cũng là

môt trong những nhân tố góp phần tao ra các thiết bi 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ủa 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. Chúng ta đêu trở lên di đông và khao khát

được di đô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 “di đông” đã gần như trở thành môt điêu

rất bì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 đang 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 sang nước

khác.

Điên toán di đông phát triển môt cách manh mẽ môt phần lớn dựa trên nên tảng

công nghê của internet, công nghê mang di đô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 bi cầm tay

(máy tính sách tay, tablet, smartphone…) để kết nối vào internet chia sẻ và cập

nhật thông tin. Sự phát triển manh mẽ của điên toán di đông được thể hiên rõ ở

những con số sau: Tính đến hết quý 1/2012 doanh số bán dòng điên thoai thông

minh (smartphone) tăng lên đáng kể, đat 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 IDC dự đoán doanh số bán máy tính bảng đat khoảng 53,5 triêu

máy.

Tiêm năng phát triển của lập trình di đông

Với sự phát triển như vũ báo của điên toán di đông trong thời kì hiên nay, đã kéo

theo sự phát triển manh mẽ của ngành công nghiêp phần mêm ứng dụng cho thiết

bi di đông. Trước thực tế đó, rất nhiêu công ty, tô chức đã xây dựng và phát triển

các kho ứng dụng của họ cho thiết bi di đông.

Tháng 7/2008, Apple ra mắt kho ứng dụng di đông trực tuyến đầu tiên

với 500 ứng dụng cho các sản phẩm iPhone, iPod. Khi đó, thi trường ứng dụng

mobile hầu như chưa hê tồn tai. Đến nay, App Store đã có hơn 400,000 ứng dụng

với 10 tỷ lượt tải vê, dẫn đầu ngành vê dich vụ ứng dụng cho di đông. Sau thành

7

Page 8: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

công của Apple, các hãng di đông nhận thấy tiêm năng của thi trường Mobile

Apps đã liê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 là Huawei Technology - dành cho các

nhà mang di đông trên toàn cầu với hơn 80.000 ứng dụng di đông/nhac, phim, e-

book cho HĐH Android, Symbian và Windows Mobile... Góp vào tông doanh

thu hàng năm ngành lên tới 7 tỷ USD, dự báo sẽ đat 30 tỷ USD trong 3 năm tới.

Tai Viêt Nam, môt số doanh nghiêp đã xây dựng kho ứng dụng di đô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 thi trường

Viêt Nam. VTC Mobile, môt trong các đơn vi dẫn đầu thi phần dich vụ giá tri gia

tăng trên di đông giai đoan 2006-2010 tai Viêt nam cũng đã hợp tác với Q-

mobile để 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 hoat đông thường xuyên và nên tảng 3G đã được các nhà mang triển khai

rông khắp với 69% người sử dụng ở đô tuôi trung bình 15 – 24 tao nên môt thi

trường có tốc đô phát triển nhanh chóng và manh mẽ.

Như vậy, lập trình di đông hiên đang có tiêm năng rất lớn, đây ngành, lĩnh vực

cực kì sôi đông và phát triên trong thời đai hiên nay.

Nên tảng Android

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

khai đối với Android là lĩnh vực điên thoai di đông, gồm các loai điên thoai

thông minh và các loai thiết bi điên thoai kiểu gập chi phí thấp. Tuy nhiên, pham

vi đầy đủ các dich 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 thi trường điên thoai di đô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

Page 9: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Nên Android là sản phẩm của Open Handset Alliance (Liên minh thiết bi cầm tay

mở), môt tập đoàn các tô chức cùng hợp tác với nhau để xây dựng nên môt loai

điên thoai di đông tốt hơn. Tập đoàn do Google đứng đầu này gồm các nhà vận

hành (điên thoai) di đông, các nhà sản xuất thiết bi 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 thi. Từ môt

quan đ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 bi cầm tay có khả năng Android đầu tiên trên thi trường là thiết bi 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 đai, 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

bước. Khi ngày phát hành G1 gần đến, nhóm Android đã 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.

Để kích thích đôi mới và phát triển các ứng dụng của Android, Google đã tài trợ

hai vòng cuôc thi “Các thách thức nhà phát triển Android”, và hàng triêu đô la đã

đượ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 thoai của họ. Trong vòng 18 tháng, môt nên di đông mới đã chính thức

có mặt trên thi trường và sẽ là đối thủ canh tranh nặng ký của các nên di đông

phô biến trước đó như Symbian hay Window Mobile.

Android cung cấp khá đầy đủ các công cụ cơ bản và được thiết kế sao cho các

nhà phát triển có thể tận dụng tối đa lợi thế của thiết bi cầm tay để xây dựng nên

các ứng dụng thực sự thuyết phục. Họ có thể tao môt ứng dụng có thể gọi thực

hiên các chức năng lõi trong điên thoai như thực hiên cuôc gọi, gửi tin nhắn

SMS, dùng camera … Hay chia sẻ thông tin cá nhân lên trang web chẳn han như

thông tin liên lac, vi trí đia lí, lich biểu… Các nhà phát triển còn có thể làm bất

cứ viêc gì trên thiết bi 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ụ:

“android.provider.Telephony.SMS_RECEIVED”. Android còn cung cấp sẵn các

dich vụ đinh vi (và đây là môt thế manh của Google) cùng với môt tập các ứng

9

Page 10: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

dụng vê “Map” với các tính năng rất ấn tượng như dò đường, tính khoảng cách

đia điểm, tìm ban… Ngoài ra còn có môt số tính năng nôi bật khác như

Animation 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 thoai di đông (Android 2.3), dành cho tablet (Android 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 thi các phần tử phô biến như các hôp biên soan, 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 đang là đô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 di đô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

thi môt đia chỉ trực tiếp trong môt ứng dụng. Viêc hỗ trợ cho các dich vụ dựa trên

đia điểm (chẳng han như GPS) và các dụng cụ đo gia 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 bi Android được trang bi

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 lich sử, có hai lĩnh vực mà các ứng dụng di đông đã gắng sức theo kip

các đối tác máy tính để bàn là đồ họa/đa phương tiên và phương thức lư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

Page 11: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

2D và 3D, gồm cả thư viên OpenGL. Gánh nặng lư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 khung 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 kernel Linux

Nhân của Android được phát triển dựa vào Kernel Linux 2.6. Theo đó, nó cung

cấp các trình điêu khiển các thiết bi phần cứng (driver), quản lý tiến trình, quản

lý tài nguyên, bảo mật … như sau:

Security system

Memory management

Process mamagement

Network stack

Driver model

Tầng Libraries và Android runtime

Libraries (thư viên).

Android bao gồm môt bô thư viên C/C++, đượ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

Page 12: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

thông qua các khuôn khô ứng dụng Android. Dưới đây là 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

C (LIBC), điêu chỉnh cho nhúng dựa trên Linux các thiết bi.

Media Libraries - dựa trên OpenCORE PacketVideo's; sự hỗ trợ các thư viên

phát lai và ghi âm của âm thanh và phô biến nhiêu đinh dang video, cũng như các

tập tin hình ảnh tĩnh, bao 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 thi 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 đai, đông cơ có quyên han 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ọa 2D và 3D

3D libraries - môt viêc thực hiên dựa trên OpenGL ES 1,0 API; 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 rasterizer

phần mêm 3D.

SQLite - môt manh mẽ và nhẹ quan hê cơ sở dữ liêu có sẵn cho tất cả các ứng

dụng.

Android Runtime (Thời gian chay Android).

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 chay 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 Dalvik. Dalvik đã được viết nên môt thiết bi có thể chay

nhiêu máy ảo hiêu quả. VM Dalvik thực hiên tác phẩm trong các Executable

Dalvik (dex). Đinh dang được tối ưu hóa cho bô nhớ tối thiểu. VM là đăng ký

trên, và chay các lớp học biên soan bởi môt trình biên dich ngôn ngữ Java đã

được chuyển thành các đinh dang dex. Do dx "bao gồm" công cụ. VM Dalvik

dựa vào hat nhân Linux cho các chức năng tiêm ẩn như luồng và cấp quản lý bô

nhớ thấp.

Tầng Application Framework

12

Page 13: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

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 tao.

Các nhà phát triển được miễn phí để tận dụng lợi thế của các thiết bi phần cứng,

thông tin đia điểm truy cập, dich vụ chay nên, thiết lập hê thống báo đông, thêm

các thông báo đến các thanh trang 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. Cơ 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 bên dưới tất cả các ứng dụng là môt tập hợp các dich 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 danh sách, lưới, hôp văn bả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 khác (như Contacts), 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ư dây

bản đia 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 thi

cảnh báo trong thanh trang thái.

Môt Activity Manager quản lý 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 dụ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, lich

chương trình tin nhắn SMS,, bản đồ, trình duyêt, liên lac, 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ụ để tao 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 Android (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

Page 14: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

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 Android được viết bằng ngôn ngữ Java, nhưng biên dich 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ã Java được biên dich

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 bi ả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 bi di đô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 lư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.

documention.html và thư mục docs: tài liêu SDK được cung cấp tai chỗ và trên

web, chủ yếu nó ở dang JavaDocs, tao đ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 loat 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 khá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ứa 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 bi có khả năng chay Android, chẳng han như G1 hay điên

14

Page 15: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

thoai đã được phát triển Android Dev 1. Các tập tin này là đòi hỏi duy nhất đối

với các nhà phát triển đang sử dụng nên Windows.

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

1.2.4.1 Hoat đông(Activity)

Mỗi môt Activity đai diên cho môt màn hình. Các ứng dụng phức tap có thể có

nhiêu hơn môt Activity. Cần tao môt Activity cho mỗi màn hình cần hiển thi. 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 khác.

Hầu hết các Activity được thiết kế để chiếm giữ toàn bô màn hình, tuy nhiên có

thể tao các Activity có môt nữa đô trong suốt, các Activity nôi, hoặc các dialog.

Tao môt Activity:

Để tao 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 Activity cơ bản đưa ra môt màn hình rỗng chứa cửa sô hiển thi. 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 tao thành bởi các View. View là các điêu khiển

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

15

Page 16: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Để gắn môt giao diên cho môt Activity, sử dụng phương thức setContentView

trong lớp Activity được kế thừa.

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

MyView myView = new MyView(this);

setContentView(myView);

}

Có 2 cách để thiết lập giao diên cho Activity: bằng code hoặc thông qua file đinh

nghĩa layout . Ở trên là cách tao giao diên bằng code, sau đây là cách tao 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 (label, icon,…).

Vòng đời của Activity:

16

Page 17: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

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:

Khai bá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);

Khai báo không tường minh: cung cấp thao tác cần làm gì, với loai dữ liêu nào,

thao tác thuôc nhóm nào… hê thống sẽ tìm activity tương ứng để khởi đông.

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivity(intent);

17

Page 18: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Với cách khởi đông activity khô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 ký với hê thống mình có

thể làm được thao tác gì, trong nhóm nào, với loai 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 lac 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ả lai 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ả lai file ảnh cho activity A. Để liên lac 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í dụ sau:

intent.putExtra("value1", new String("Hello"));

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");

Trình thu phát (BroadcastReceiver)

BroadcastReceiver là môt trong bốn loai thành phần trong ứng dụng

Android.Chức năng của nó là dù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 đó là:

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 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.

Chu kỳ sống

BroadcastReceiver 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.

18

Page 19: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

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ự 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 sac, rút sac.

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 do người phát triển ứng dụng tự đinh nghĩa (giúp liên lac 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 đang chay vào. Thứ nhất là để có thể xử lý các phương thức yêu cầu

truyên thêm Context, thứ hai là để 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 ký đã 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…Extra(String dataName);

Dich vụ (Service)

Service là môt trong 4 loai thành phần của môt ứng dụng Android. Service chay

nên và khô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 nhac.

19

Page 20: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

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 thi 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.

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.

Tao ra môt Service

Để tao ra môt Service, ta tao 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

Page 21: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Để 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 tai trong ứng dụng thì môt ngoai lê

SecurityException sẽ được đưa ra. Có 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ử dùng phương thức stopService, truyên vào Intent

xác đinh Service cần ngưng hoat đông. Ví dụ:

ComponentName service = startService(new Intent(this, BaseballWatch.class));

// ngừng dich vụ bằng cách xác đinh tên dich vụ

stopService(new Intent(this, service.getClass()));

// ngừng dich 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

Page 22: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Hình 3 – Vòng đời của service

Khi có môt context nào đó gọi startService() để khởi đông môt dich vụ mong

muốn. Nếu dich vụ đó chưa được tao thì sẽ gọi onCreate() rồi gọi tiếp onStart()

và khi đó dich vụ chay nên bên dưới.

Nếu sau đó lai có môt context muốn khởi đôngdich vụ này mà dich vụ đã đang

chay thì chỉ có phương thức onStart() của dich vụ được gọi.

Dù dich vụ có được gọi khởi đông bao nhiêu lần thì cũng chỉ có thể hiên của dich

vụ và chỉ cần gọi stopService() môt lần để kết thúc dich vụ.

Kết nối dich vụ

Khi môt Activity đượ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

onBind như sau:

private final IBinder binder = new MyBinder();

@Override

public IBinder onBind(Intent intent) {

return binder;

}

public class MyBinder extends Binder {

22

onCreate()

onStart()

onDestroy()

Service đang chay

Service được start lần đầu

Service laiđượcyêucầu

start trongkhiđãchayr

ồi

Bên ngoài gọi stopService() hoặc service

tự stop

Page 23: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

MyService getService() {

return MyService.this;

}

}

Sự kết nối giữa Service và Acitvity được thể hiên qua môt ServiceConnection.

Điêu cần làm là thực thi môt ServiceConnection mới, override phương thức

onServiceConnected và onServiceDisconnected.

// tham chiếu đến dich vụ

private MyService serviceBinder;

// xử lý kết nồi giữa service và activity

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 dich 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 dich vụ

Intent bindIntent = new Intent(MyActivity.this, MyService.class);

bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);

23

Page 24: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

}

Hoat đông của bindService(): kết nối dich vụ

Hình 4 – Hoạt động kết nối dịch vụ

Thông thường, vòng đời của dich vụ khi có client kết nối từ đầu như sau:

Cũng bắt đầu bằng onCreate() rồi đến onBind() và dich vụ chay dưới nên.

Khi không còn client kết nối tới thì dich vụ gọi onUnbind() rồi onDestroy().

Có môt số trường hợp không thông thường, ví dụ như:

Có môt context khởi đông môt dich vụ, 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 tới dich vụ.

Môt activity vừa gọi startService() vừa gọi bindService().

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

24

onCreate()

onBind()

Service đangcha

y

Activity gọibindServi

ce() đểkếtnốitới

service

Bên ngoài gọi unbindService() hoặc kết nối

bi ngắt

onUnbind()

Service không còn kết nối với client nào nữa và cũng ko có context nào start service

nàyonDestroy()

Service còn chay, client

muốn kết nối với service

onRebind()

Lần trước

unBind() với client

này trả vê true

Page 25: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Có thể coi trình cung cấp nôi dung như là 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 đang tồn tai, chẳng han 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

xuất và ngược lai.Nếu ứng dụng rất đơn giản thì không nhất thiết phải tao 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 qua mô hình URI đơn giảnnhư là

có thể thêm, xóa, cập nhật dữ liêu của các ứng dụng.

Tao môt Content Provider mới

Tao Content Provider:

Để tao môt Content Provider cần thừa kế lai từ lớp trừu tượng ContentProvide,

override lai 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 đinh URI, hình thức chung cho viêc đinh nghĩa môt Content Provider URI

là:

content://com.<CompanyName>.provider.<ApplicationName>/<DataPath>

25

Page 26: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Các đơn giản nhất để làm viêc này là sử dụng URIMatcher. Cấu hình

UriMatcher để phân tích hình thức của nó khi provider đang được truy xuất đến

thông qua môt Content Resolver.

Đưa ra truy xuất Data Source:

Có thể cung cấp các truy vấn và thực thi với Content Provdier bằng cách thực

hiên các phương thức delete, insert, update và query.Các phương thức này hoat

đông như các giao tiếp chung đến nguồn dữ liêu bên dưới, chúng cho phép các

ứng Android chia sẽ dữ liêu với nhau mà không phải tao môt giao tiếp riêng cho

mỗi ứng dụng.

Bước cuối cùng trong quá trình tao môt Content Provider là đinh nghĩa kiểu

MIME làkiểu dữ liêu mà Provider trả vê, override phương thức getType để trả vê

môt kiểu String mô tả cho kiểu dữ liêu. Kiểu trả vê bao gồm cả 2 hình thức:

trường đơn và tất cả dữ liêu.

Trường đơn

vnd.<companyname>.cursor.item/s<contenttype>

Tất cả

vnd.<companyName>.cursor.dir/<contenttype>

Đăng ký Provider:

Thêm Content Provider vừa tao vào trong manifest.xml. Sử dụng thẻ authorities

để chỉ đinh đia chỉ của nó:

<provider android:name=”MyProvider”

android:authorities=”com.paad.provider.myapp”/>

Truy vấn, thêm, cập nhật và xóa nôi dung trong Content Provide

26

Page 27: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Content Provider được truy xuất thông qua lớp Content Resolver.Mỗi môt

Context của ứng dụng có môt đối tượng ContentResolver, có thể được truy xuất

thông qua phương thức getContentResolver.

ContentResolver cr = getContentResolver();

Content Resolver bao gồm môt vài phương thức để thực thi và truy vấn đến

Content Providers. Môt URI dùng để chỉ đinh Content Provider nào được cung

cấp bởi các quyên được đinh nghĩa trong manifest của ứng dụng. URI là môt

chuỗi tùy ý, vì thế hầu hết các provider đêu đưa ra thuôc tính

CONTENT_URI.Content Provider thường đưa ra 2 hình thức URI, môt là đựa tất

cả các dữ liêu được yêu cầu trên cùng môt dòng đơn lẻ, hoặc là thêm vào

/<rowID> vào phía sau CONTENT_URI.

Truy vấn:

Viêc truy vấn trên Content Provider có hình thức tương tự như khi truy vấn trong

database, dùng phương thức query của đối tượng ContentResolver với các tham

số truyên vào gồm:

Môt URI của Content Provider muốn truy vấn.

Môt ánh xa đai diên cho các côt muốn chứa trong tập kết quả.

Môt mênh đê where chỉ đinh các dòng nào được trả vê. Có thể đưa vào ký tự đai

diên và sẽ được thay thế bởi các giá tri được lưu bên trong các tham số được

chọn.

Môt mảng các đối số kiểu String thay thế cho các ký tự đai diên ? trong mênh đê

where

Môt chuỗi mô tả thứ tự các dòng trả vê.

Thêm:

Content Resolver cung cấp 2 phương thức để chèn môt record mới vào trong

Content Provider, đó là insert và bulkInsert. Phương thức insert trả vê môt URI

27

Page 28: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

đến record mới được thêm vào, trong khi bulkInsert trả vê số thành phần thêm

vào thành công.

Xóa:

Để xóa môt record khi sử dụng Content Resolver, sử dụng phương thức delete,

truyên vào URI cho dòng muốn xóa. Đồng thời, cũng có thể dùng mênh đê điêu

kiên where để xóa nhiêu dòng.

Cập nhật:

Viêc cập nhật cho môt Content Provider được điêu khiển bởi phương thức update

cùa Content Resolver. Phương thức update nhận URI của Content Provider đích,

môt đối tượng ContentValues chứa tập giá tri được ánh xa đến các côt cần cập

nhật, và môt mênh đê where để chỉ đinh dòng nào được cập nhật.

Khi thực thi, mỗi dòng phù hợp với điêu kiên trong mênh đê where sẽ được cập

nhật và trả vê số dòng được cập nhật giá tri thành công.

Native Android Content Provider

Android đưa ra nhiêu Content Provider hỗ trợ truy xuất đến các ứng dụng

native.Có thể dùng môt trong các Content Provider native này để sử dụng các kỹ

thuật được mô tả ở trên. Như môt sự thay thế, gói android.provider chứa các lớp

thuận tiên để truy xuất môt cách đơn giản đến nhiểu provider bao gồm:

Browser: Dùng browser Content Provider để đọc và điêu chỉnh bookmarks,

browser history, hoặc web searches.

CallLog: Hiển thi hoặc cập nhật các cuôc gọi (cuôc gọi đến, cuôc gọi đi, các cuôc

gọi nhỡ, và chi tiết cuôc gọi.

Contacts: dùng để rút trích, chình sữa, hoặc lưu trữ chi tiết danh ba.

MediaStore: cung cấp sự kiểm soát, quản lý truy xuất đa phương tiên trên thiết

bi (audio, video, và hình ảnh).

Settings: Truy xuất đến các thiết lập cài đặc của thiết bi, Settings cho phép hiển

thi và điêu chỉnh các thiết lập Bluetooth, ring tone và nhiêu cài đặt khác.

28

Page 29: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Nên sử dụng các Content Providers native này bất cứ khi nào có thể, bởi vì khi sử

dụng chúng sẽ bảo đảm cho ứng dụng được kết hợp với các ứng dụng native hoặc

third-party khác môt cách liên tục.

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

1.2.5.1 Môt số lớp hỗ trợ thiết kế giao diên cho ứng dụng Android

Android cung cấp môt số công cụ thiết kế giao diên:

Views: là lớp UI cơ bản cho các control giao diên. Tất cả các control giao diên

người dùng, các lớp layout đêu được dẫn xuất từ lớp Views.

ViewGroups: được mở rông từ lớp View và có thể chứa nhiêu Views.

ViewGroups cũng được kế thừa để cung cấp các lớp quản lý bố cục như

LinearLayout. ViewGroup được dùng để xây dựng nên các component có thể

dùng lai (widget) hoặc để quản lý bố cục cho các control.

Activity: dùng để hiển thi giao diên người dùng. Lớp này do người phát triển ứng

dụng viết.

Hình 5 - Quan hệ giữa các thành phần trên

1.2.5.2 Android Widget Toolbox

Android cung cấp môt bô công cụ các View chuẩn để tao các giao diên người

dùng đơn giản,giúp đơn giản hóa viêc phát triển và tao sự đồng nhất giữa các ứng

dụng.

29

Page 30: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Các control thông dụng:

TextView: là môt label chỉ có tác dụng hiển thi văn bản, nó hỗ trợ hiển thi nhiêu

dòng, đinh dang chuỗi.

EditText: là môt vùng nhập văn bản có thể chỉnh sửa, hỗ trợ nhập nhiêu dòng.

ListView: tao và quản lý môt nhóm các View để hiển thi môt danh sách các phần

tử. Môt ListView chuẩn dùng để hiển thi chuỗi giá tri của môt mảng các

TextView.

Spinner: là môt control kết hợp, hiển thi môt TextView và môt ListView kết hợp

dùng để chọn môt item từ danh sách. Nó được tao thành từ môt TextView chứa

giá tri hiên tai đang được chọn kết hợp với môt nút mà khi nhấn vào sẽ đưa ra

môt danh sách lựa chọn.

Button

CheckBox

RadioButton

Andoid cũng hỗ trợ nhiêu View cao cấp hơn như: date-time picker, auto-

complete input box, map, gallery, và tab sheet.

1.2.5.3 Các kiểu Layout

LayoutManager (thường gọi là layout) là mở rông của lớp ViewGroup, được

thiết kế để điêu chỉnh vi trí của các control trên màn hình ứng dụng. Layout có

thể lồng nhau để tao nên các giao diên phức tap.Android có môt số các layout

đơn giản giúp xây dựng UI. Để tao nên môt bố cục hợp lý thì nên kết hợp các

layout với nhau.

Các lớp layout cơ bản:

FrameLayout: là layout đơn giản nhất trong Layout Manager, FrameLayout đặt

mỗi View con vào góc trái trên của màn hình. Viêc thêm nhiêu control sẽ chồng

môt cái mới lên trên cái trước đó.

LinearLayout: thêm mỗi View theo môt đường thẳng, theo chiêu dọc hoặc ngang.

Môt layout theo chiêu dọc sẽ có môt control trên môt dòng, layout theo chiêu

ngang chỉ có môt dòng cho nhiêu View. Nó cho phép chỉ đinh giá tri “weight”

cho mỗi View con để điêu chỉnh kích thước bên trong không gian cho phép.

30

Page 31: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

RelativeLayout: dùng để đinh vi trí cho các View cân xứng với các control khác

cũng như với đường biên của màn hình.

TableLayout: giúp bố trí các View theo môt lưới có các dòng và các côt. Các côt

có thể được thiết lập để co lai hoặc giản ra

AbsoluteLayout: trong layout này, vi trí mỗi View sẽ là tọa đô tuyêt đối, đảm bảo

bố cục chính xác cho các thành phần. Do đó, không thể có được sự linh hoat đối

với các màn hình có kích thước khác nhau.

Để sử dụng layout người ta thường dùng phương pháp là sử dụng resource bên

ngoài từ file XML. Môt layout XML phải chứa môt nút gốc.Nút gốc này có thể

chứa các layout và các View lồng nhau để xây dựng nên các giao diên phức tap.

Hình 6 - Hệ thống các view với các thông số layout được kết nối với mỗi View

1.2.5.4 Tao các View

Chỉnh sửa các View có sẵn

Chỉnh sửa hoặc kế thừa môt control sẳn có nếu nó cung cấp các chức năng cần

thiết, bằng cách ghi đè các handler và onDraw của nó. Để đinh nghĩa lai giao

diên cũng như các ứng xử của control mới tao, cần phải ghi đè và thừa kế các

điêu khiển sự kiên (event handler) kết hợp với các hành vi muốn thay đôi.

31

Page 32: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Tao các điêu khiển ghép (compound control)

Compound control là các widget có thể tái sử dụng, nó chứa nhiêu control được

bố trí và có liên hê với nhau, nó được tao từ nhiêu control cơ bản.Ví dụ như tao

nên môt dropdown combo box bằng cách kết hợp môt TextView và môt Button

mà khi được nhấn sẽ hiển thi môt ListView.

Khi tao môt compound control cần đinh nghĩa layout, hình thức và cách thức tác

đông lẫn nhau giữa các View mà nó chứa. Compound control được tao thành từ

viêc dẫn xuất từ lớp ViewGroup.

Để tao môt compound control mới, chọn môt lớp layout phù hợp nhất để xác

đinh vi trí cho các control, và dẫn xuất từ nó:

public class MyCompoundView extends LinearLayout {

public MyCompoundView(Context context) {

super(context);

}

public MyCompoundView(Context context, AttributeSet attrs) {

super(context, attrs);

}

}

Cách được ưa chuông hơn để thiết kế giao diên cho môt compound control là sử

dụng layout resource.

Để dùng được layout này cho widget mới cần phải đinh nghĩa lai contructor của

nó sử dụng phương thức inflate từ dich vụ LayoutInflate. Phương thức inflate

nhận tham số là layout resource và trả vê môt View.

Môt khi đã xây dựng được giao diên cho control, điêu tiếp theo là đinh nghĩa

điêu khiển sự kiên cho mỗi control con trong nó.

Tao các Control tùy chỉnh

32

Page 33: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Người phát triển có thể tao ra các control theo ý của mình để tao được môt giao

diên mang tính duy nhất phù hợp với yêu cầu của người dùng. Các control mới

cần phải được thừa kế từ lớp View hoặc SurfaceView.

Lớp View cung cấp môt đối tượng Canvas và môt số phương thức vẽ cũng như

các lớp Paint, để tao môt giao diên trực quan.Người thiết kế có thể đinh nghĩa lai

các sự kiên người dùng như cảm ứng trên màn hình, nhấn phím để tao nên sự

tương tác.Trong những trường hợp mà không đòi hỏi viêc vẽ lai cũng như đồ họa

3D thì lớp cơ sở View có giải pháp hiêu quả.

Trong khi đó, lớp SurfaceView cung cấp môt đối tượng canvas hỗ trợ viêc vẽ từ

môt luồng xử lý nên và sử dụng openGL cho đồ họa 3D. Đây là môt lựa chọn

tuyêt với cho các điêu khiển đòi hỏi đồ họa cao, cần phải cập nhật liên tục hoặc

hiển thi các đồ họa phức tap, như game 3D.

1.2.5.5 Tao giao diên Activity với các View

Môt Activity khi chưa thiết kế sẽ khởi đông với môt màn hình rỗng.Để thiết lập

giao diên cho màn hình rỗng này cần gọi phường thức setContentView khi

everride lai phương thức onCreate.Phương thức setContentView có thể nhận môt

tham số là resource ID hoặc môt thể hiên của View.Do đó, có thể đinh nghĩa giao

diên ứng dụng bằng code hoặc tham chiếu đến resource (layout).

Nếu dùng layout resource thì sẽ tách riêng viêc thiết kế giao diên và phần code

xử lý, cung cấp môt khả năng thay đôi linh hoat giao diên mà không thay đôi

code bên trong.

1.2.5.6 Xây dựng menu

Menu trong Android

Menu đưa ra môt giải pháp để tăng tính tiên dụng của ứng dụng mà không chiếm

dụng không gian trên màn hình. Mỗi môt Activity có riêng cho nó môt menu,

được hiển thi khi người dùng nhấn nút Menu.

Android cũng hỗ trợ menu ngữ cảnh, nó được gán vào bất kỳ View nào bên trong

môt Activity.Môt menu ngữ cảnh được hiển thi khi người dùng nhấn nút D-pad,

33

Page 34: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

trackball, hoặc nhấn vào màn hình cảm ứng khoảng 3 giây.menu ngữ cảnh hỗ trợ

submenu, checkbox, radio button, shortcut key, và icon.

Các loai menu trong android:

Icon Menu: được kết với menu, xuất hiên ở phần dưới của màn hình thiết bi khi

nút Menu được nhấn. Nó hiển thi icon và text cho các menu item hoặc các

submenu. Icon menu hỗ trợ tao tối đa 6 menu item, và các menu item này không

thể hiển thi checkbox, radio button, hay shortcut key.

Hình 7 – Icon menu

Expanded Menu: hiển thi khi người dùng chọn More trong menu icon. Expand

Menu hiển thi môt danh sách có thể cuôn được các menu item, và các menu item

này không thể chứa các icon mà chỉ có thể chứa text, shortcut key và checkbox/

radio button.

Hình 8 – Expanded menu

Submenu: mỗi submenu hiển thi bằng môt cửa sô, tên của submenu được hiển thi

ở thanh header và mỗi Menu item được hiển thi với đầy đủ text, checkbox,

34

Page 35: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

shortcut key và không thể hiển thi icon cho các item. Android không hỗ trợ các

submenu lồng nhau, vì không thể thêm môt submenu vào môt submenu.

Hình 9 - Submenu

Các kiểu Menu Item

Android hỗ trợ hầu hết các kiểu menu item truyên thống, bao gồm icon, shortcut,

checkbox, radio button:

Checkbox và Radio button group: Để thiết lập môt menu item là checkbox sử

dụng phương thức setCheckable, để thiết lập trang thái của checkbox

dùngsetChecked.

Môt radio button group là môt nhóm các radio button và chỉ có môt trong số

chúng được chọn tai môt thời điểm. Để tao môt radio button group, gán cùng ID

nhóm cho mỗi item, sau đó gọi phương thức Menu.setGroupCheckable, truyên

vào ID nhóm, và thiết lập giá tri cho các tham số khác là True.

// tao checkbox.

menu.add(0,CHECKBOX_ITEM,Menu.NONE,

“CheckBox”).setCheckable(true);

// tao radio button group.

menu.add(RB_GROUP, RADIOBUTTON_1, Menu.NONE, “Radiobutton 1”);

menu.add(RB_GROUP, RADIOBUTTON_2, Menu.NONE, “Radiobutton 2”);

menu.add(RB_GROUP, RADIOBUTTON_3, Menu.NONE,

“Radiobutton 3”).setChecked(true);

35

Page 36: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

menu.setGroupCheckable(RB_GROUP, true, true);

Shorcut Key: để chỉ đinh môt keypad shortcut cho môt Menu Item sử dụng

phương thức setShortcut. Phương thức này yêu cầu truyên vào 2 tham số, môt là

phím số và môt là bàn phím đầy đủ.

menuItem.setShortcut(‘0’, ‘b’);

Condensed Title: dùng môt text để hiển thi menu.

menuItem.setTitleCondensed(“Short Title”);

Icon: biểu tượng chỉ được hiển thi trên Icon Menu

menuItem.setIcon(R.drawable.menu_item_icon).

Menu Item Click Listener: khi môt menu được chọn sẽ có môt xử lý điêu khiển.

Đó là phương thức onOptionsItemSelected.

menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {

public boolean onMenuItemClick(MenuItem _menuItem) {

[ ...thực hiên xử lý ... ]

return true;

}

});

Intent: Khi môt menu item được chọn, Android sẽ thực thi startActivity với môt

đối tượng Intent.

menuItem.setIntent(new Intent(this, MyOtherActivity.class));

Tao môt Menu:

Để tao môt menu, trong Activity override phương thức onCreateOptionsMenu,

phương thức này được thực thiên ở lần đầu tiên khi menu được hiển thi.

onCreateOptionsMenunhận môt tham số kiểu Menu. Dùng phương thức add trên

đối tượng Menu này để thêm vào các item. Mỗi menu item cần phải chỉ đinh các

thuôc tính sau:

Nhóm mà item đó được thêm vào.

36

Page 37: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Mỗi item có môt ID duy nhất, bởi vì chúng được xử lý chung trong phương thức

onOptionsItemSelected nên viêc xác đinh item nào được chọn là phụ thuôc vào

ID được chỉ đinh cho nó.

Cách sắp xếp thứ tự mà item được hiển thi.

Text thể hiên của item, có thể là môt chuỗi các ký tự hoặc môt string resource.

1.2.6 Xử lý bất đồng bô

1.2.6.1 Thread

Thông thường lập trình viên dùng Thread để xử lý các code xử lý nặng, hoặc mất

thời gian có thể gây chậm chương trình hoặc giao diên bi block.Thread khá thông

dụng và trong Android dùng lớp Thread của Java.

Theo mặc đinh, mỗi ứng dụng chay trong môttiến trình và code được thực thi

trong thread chính của tiến trình đó.Nếu code xử lý quá lâu, không kip phản hồi

lai các sự kiên người dùng trong 5 giây thì sẽ xuất hiên dialog “Application is not

responding” và người dùng có thể đóng ứng dụng ngay lập tức. Nếu không bi

đóng thì ứng dụng sẽ bi lag, điêu này là khó chấp nhận.

Thread thread = new Thread() {

@Override

public synchronized void start() {

// Khởi tao các đối tượng cần thiết tai đây

super.start();

}

@Override

public void run() {

// code xử lý chính của thread trong này

super.run();

}

};

thread.start(); //bắt đầu thread

37

Page 38: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Lưu ý:

Thread lần đầu thực thi gọi phương thức start(), những lần sau chỉ gọi phương

thức run(), không gọi start() nữa.

Các code xử lý liên quan đến giao diên chỉ được xử lý trong thread chính của ứng

dụng (ví dụ load ảnh từ mang vê thì dùng thread, nhưng hiển thi ảnh lên

ImageView thì xử lý trong thread chính)

Sau khi thực thi xong phương thức run(), thread không còn hoat đông nữa.

1.2.6.2 Handler

Trong Android, để tiên viêc giao tiếp giữa 2 thread ta dùng đối tượng Handler.

Có thể dùng Handler như bô đếm giây khi chơi nhac, hoặc chức năng tương tự.

Ngoài ra, có thể dùng Handler để đặt xử lý môt yêu cầu nào đó sau môt khoảng

thời gian xác đinh.

Giao tiếp giữa 2 Thread:

Giả sử trong phương thức run() đã lấy xong đối tượng Bitmap vê. Muốn truyên

đối tượng Bitmap cho Thread chính hiển thi lên màn hình:

Message msg = mHandler.obtainMessage(1, bitmap);

mHandler.sendMessage(msg);

Trong code của Activity (mặc đinh là thread chính), ta khai báo môt đối tượng

Handler tương tứng như sau:

Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

if(msg.what == 1) {

//Hiển thi Bitmap

mImageView.setImageBitmap((Bitmap)msg.obj);

}

super.handleMessage(msg);

}

};

38

Page 39: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Trong đoan code trên, đối tượng mHandler lấy ra môt message và gắn mã vào

cho message đó, kèm theo đối tượng bitmap. Sau đó gửi đi.

Message gửi đi sẽ được nhận phương thức callback là handleMessage() của đối

tượng Handler.

Handler còn có thể gửi message để xử lý sau môt khoảng thời gian đinh sẵn

sendMessageAtTime hoặc xử lý tai môt thời điểm đinh sẵn

sendMessageDelayed.

1.2.6.3 AlarmManager

Dùng AlarmManager để thực hiên đăng ký xử lý môt thao tác nào đó tai môt thời

điểm nhất đinh trong tương lai (thường là thời gian dài, nếu xử lý trong thời gian

ngắn thì khuyến cáo nên dùng Handler). Khi đến thời điểm được đặt trước, dù

ứng dụng đang không chay thì nó vẫn được gọi. Nếu tắt máy rồi bật lai thì không

còn.

Khởi tao môt AlarmManager:

AlarmManager am

=(AlarmManager)getSystemService(ALARM_SERVICE);

Intent broadcastIntent = new Intent("org.multiuni.android.ACTION...");

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,

broadcastIntent, PendingIntent.FLAG_CANCEL_CURRENT);

am.set(AlarmManager.RTC_WAKEUP, triggerAtTime, pendingIntent);

1.2.6.4 Notification

Trong những trường hợp chúng ta muốn hiên môt thông báo vê môt sự kiên nào

đó (tin nhắn, cuôc gọi, email…) 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 là họ có đang cầm điên thoai hay không, hoặc

ban muốn hiển thi thông tin môt viêc nào đó đang xảy ra trên điên thoai (đang

nghe nhac, đang trong cuôc gọi, thiếu thẻ nhớ…) và mong người dùng biết thì

chúng ta dùng Notification.

39

Page 40: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Chúng ta có thể tao môt thông báo có nhiêu hình thức khác nhau như có âm báo,

rung, đèn led, icon…

Mỗi phương pháp thông báo có môt tham số id kiểu int và tùy chọn môt tham số

tag kiểu String, có thể là null, tao thành môt bô hai (tag, id) hoặc (null, id). Bô

hai này nhận diên thông báo từ ứng dụng, và phải là duy nhất trong ứng

dụng.Nếu gọi môt trong những phương thức thông báo với bô (tag, id) hiên đang

hoat đông và thiết lập các thông số mới thì nó sẽ được cập nhật.

Tao môt thông báo

Tao môt đối tượng Notification, truyên vào icon để hiển thi ở thanh trang thái và

thời gian hiển thi:

// chọn môt drawable để hiển thi như là môt icon của thanh trang thái

int icon = R.drawable.icon;

// Text để hiển thi lên thanh trang thái khi thông báo được chay

String tickerText = “Notification”;

// Thanh trang thái mở rông sắp xếp các thông báo theo thứ tự thời gian when =

System.currentTimeMillis();

Notification notification = new Notification(icon, tickerText, when);

Cấu hình giao diên của Notification trong cửa sô trang thái mở rông, sử dụng

phương thức setLatestEventInfo. Cửa sô trang thái mở rông này hiển thi icon và

thời gian được khai báo trong constructor và đồng thời hiển thi tiêu đê và chi tiết

vê chuỗi thông báo.

Context context = getApplicationContext();

// Text để hiển thi trên cửa sô trang thái mở rông

String expandedText = “Extended status text”;

// Tiêu đê của thanh trang thái mở rông

String expandedTitle = “Notification Title”;

// Intent chay môt activity khi text được click

Intent intent = new Intent(this, MyActivity.class);

40

Page 41: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

PendingIntent launchIntent = PendingIntent.getActivity(context, 0, intent, 0);

notification.setLatestEventInfo(context, expandedTitle, expandedText,

launchIntent);

Cải tiến thông báo bằng các thuôc tính khác của đối tượng Notification để làm

nháy đèn trên LED trên thiết bi, rung điên thoai hay trình diễn các file nhac.

Gọi môt thông báo

Để thực hiên gọi môt thông báo, gọi phương thức notify của

NotificationManager:

int notificationRef = 1;

notificationManager.notify(notificationRef, notification);

Để cập nhật môt thông báo đã được sử dụng, gọi lai và truyên lai giá tri reference

ID. Cũng có thể sử dụng ID này để hủy thông báo bằng cách gọi phương thức

cancel của NotificationManager.

notificationManager.cancel(notificationRef);

Viêc hủy thông báo sẽ xóa thanh icon trang thái và cửa sô trang thái mở rông.

41

Page 42: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ CONTACTS –

DEMO

2.1 Phân tích thiết kế hê thống quản lý Contact

2.1.1 Đặc tả bài toán

Đối với mọi chiếc điên thoai di đông Contact là ứng dụng không thể thiếu, dùng

để quản lý danh ba điên thoai, thông tin của những cá nhân cần liên lac trong

danh ba.

Với mục đích demo cho các tìm hiểu lý thuyết, ứng dụng “quản lý contacts

Demo” được xây dựng có môt số chức năng như ứng dụng Contact trong những

chiếc điên thoai thông thường:

Hiên thi danh sách liên lac.

Tìm kiếm nhanh môt thông tin liên lac.

Thêm mới, sửa và xóa thông tin liên lac.

Bài toán đặt ra là : Xây dựng ứng dụng demo cho các kĩ thuật lập trình cơ bản

trên nên tảng hê điêu hành mở Android.

2.1.2 Đặc tả chức năng

Hiển thi thông tin liên lac

Chức năng hiên thi thông tin liên lac cho phép người dùng xem được danh sách

các thông tin liên lac. Hiển thi toàn bô danh sách Contacts gồm cả Tên và Số liên

hê.

Dòng sự kiên:

Người dùng bật chương trình.

Chương trình hiển thi danh sách các thông tin liên lac.

Thêm mới thông tin liêc lac

Chức năng thêm mới thông tin liên lac cho phép người dung có thể thêm thông

tin liên lac mới vào danh sách thông tin liên lac.

Dòng sự kiên:

Người dùng chọn chức năng thêm mới.

42

Page 43: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Hê thống hiển thi Form nhập thông tin.

Người dùng nhập thông tin và Submit.

Hê thống kiển tra thông tin. Nếu thông tin hợp lê thì hê thông tiến hành thêm mới

thông tin liên lac vào CSDL. Nếu ngược lai thì đưa ra thông báo và quay lai

Form nhập thông tin.

Nếu thêm mới thành công thì hê thống trả vê danh sách liên lac đã cập nhật.

Sửa thông tin liên lac

Chức năng sửa thông tin liên lac cho phép người dung có thể sửa đôi thông tin

của môt Contacts.

Dòng sự kiên:

Người dùng chọn chức năng sửa thông tin liên lac.

Hê thống hiển thi Form sửa thông tin.

Người dùng sửa thông tin và Submit.

Hê thống kiển tra thông tin. Nếu thông tin hợp lê thì hê thông tiến hành thêm mới

thông tin liên lac vào CSDL. Nếu ngược lai thì đưa ra thông báo và quay lai

Form nhập thông tin.

Nếu thêm mới thành công thì hê thống trả vê danh sách liên lac đã cập nhật.

Xóa thông tin liên lac

Chức năng xóa thông tin liên lac cho phép người dùng có thể xóa môt Contact.

Dòng sự kiên:

Người dùng chọn chức năng xóa thông tin liên lac.

Hiên thi thông báo xác nhận xóa.

Người dùng xác nhận

Hê thống xóa thông tin liên lac trong CSDL. Sau đó hiên thi danh sách liên hê đã

cập nhật mới.

Tìm kiếm nhanh thông tin liên lac

Chức năng tìm kiếm nhanh Contact cho phép người dùng tìm nhanh môt Contact

trong danh sách Contacts.

Dòng sự kiên:

Người dung nhập tư khóa tìm kiến vào textbox tìm kiếm.

43

Page 44: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Hê thống tự đông kiểm tra so sánh từ khóa nhập vào với các Contacts, từ đó trả

vê kết quả tìm kiếm cho người dung.

2.1.3 Phân tích hê thống với UML

2.1.3.1 Biểu đồ Usercase

Mô hình UseCase dưới đây thể hiên cho các chức năng của hê thông, các chức

năng mà người dung có thể tương tác.

Hình 10: Biểu đồ UseCase tổng quát

2.1.3.2 Biểu đồ Sequence (Biểu đô tuần tự)

Hiên thi danh sách liên lac

Hình 11: Biểu tuần tư cho chưc năng hiển thị.

44

Page 45: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Tìm hiếm nhanh thông tin liên lac

Hình 12: Biểu đồ tuần tư cho chưc năng tìm kiếm.

Thêm môt thông tin liên lac mới

Hình 13: Biểu đồ tuần tư cho chưc năng thêm mới.

45

Page 46: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Sửa thông tin liên lac

Hình 14: Biểu đồ tuần tư cho chưc năng sưa thông tin liên lạc.

Xóa thông tin liên lac

46

Page 47: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Hình 15: Biểu đồ tuần tư cho chưc năng xoa thông tin liên lạc.

Xây dựng giao diên chương trình

Giao diên chính – hiển thi danh sách thông tin liên lac

Giao diên chính – hiển thi danh sách các thông tin liên lac có trong máy. Danh

sách này hiên thi tên và số điên thoai có trong điên thoai.

Hình 16: Giao diện chính – hiển thị danh sách liên lạc

Giao diên tìm kiếm thông tin liên lac

47

Page 48: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Giao diên tìm kiếm gồm có môt textbox nằm ở giao diên chính cho phép người

dung nhập nôi dung tìm kiếm theo tên.

Hình 17: Giao diện tìm kiếm

48

Page 49: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Giao diên thêm mới thông tin liên lac và sửa thông tin liên lac

Ở đây em sử dụng chung môt giao diên cho thêm mới và sửa thông tin liên lac.

Giao diên gồm có các textbox để điên tên , số điên thoai và e-mail.

Hình 18: Giao diện thêm và sưa thông tin liên lạc

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

Hình 19: Giao diện menu chọn chưc năng sưa, xoa

49

Page 50: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

Hình 20: Giao diện menu chọn chưc năng thêm mới

50

Page 51: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

KẾT LUẬN

Kết quả đat được

Đứng trước sự phát triển của các thiết bi di đông và những đòi hỏi của con người

trong lĩnh vực giải trí, ứng dụng trên các thiết bi di đông ngày càng cao. Với đê

tài “Tìm hiểu lập trình Android và xây dựng ứng dụng Contacts Demo”, khóa

luận này đã trình bày được tông quan vê lập trình trên Android và các kĩ thuật vê

lập trình cơ bản trên Android.

Tuy nhiên do han chế vê điêu kiên và thời gian cũng như năng lực, khoá luận sẽ

không thể tránh khỏi những thiếu sót. Kính mong được sự đóng góp ý kiến của

thầy cô và các ban để nhóm thực hiên có thể hoàn thiên hơn đê tài nghiên cứu

của mình.

Hướng phát triển

Hiên tai, hê điêu hành Android đang phát triển rực rỡ, vì tính năng mở của nó. Và

nó cũng đang được công đồng các lập trình viên trên khắp thế giới quan tâm và

tìm hiểu, đồng thời trợ giúp cho Google phát triển và hoàn thiên tính năng cho hê

điêu hành này.

Do đó, trong tương lai em thực hiên sẽ tiếp tục tìm hiểu, đi sâu hơn vê các kỹ

thuật chuyên sâu lập trình ứng dụng Android, hướng đến phát triển các demo trên

thành môt ứng dụng hoàn chỉnh.

51

Page 52: Tim Hieu Lap Trinh Android Va Xay Dung Ung Dung Contacts Demo

TÀI LIỆU THAM KHẢO

Reto Meier. Professional Android™ Application Development. Wiley

Publishing, Inc. 2009.

Frank Ableson. Nhập môn phát triên ứng dụng Android. 2011.

Châu Duy Thiên, Vũ Thùy Linh, Lê Quốc Tiến. Tiểu luận Tìm hiểu và viết ứng

dụng trên nên hê điêu hành mobile Android. 2010.

http://www.android.com/

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

http://code.google.com/intl/vi-VN/android/

52