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

Xây dựng ứng dụng quản lí đặt sân bóng đá cho trường đại học công nghệ thông tin và truyền thông trên nền tảng android

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 (2.21 MB, 112 trang )

LỜI CÁM ƠN
Sau chặng đường 5 năm học tập và rèn luyện dưới mái trường Đại học
Công nghệ thông tin và truyền thông Thái Nguyên, được sự chỉ bảo tận tình của
các thầy cô, và sự giúp đỡ từ bạn bè, cùng những nỗ lực của bản thân, em thấy
mình đã dần nâng cao được những kiến thức, kĩ năng, những kinh nghiệm sống
cho bản thân. Em sẽ tiếp tục cố gắng phấn đấu dùng những điều đã được dạy và
tích lũy vận dụng vào thực tế để trở thành một người có ích cho xã hội.
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến trường Đại học Công
nghệ thông tin và truyền thông Thái Nguyên đã tạo mọi điều kiện thuận lợi cho
phép em hoàn thành đồ án này.
Với lòng biết ơn sâu sắc nhất, em xin gửi lời cám ơn chân thành đến các
thầy- cô giáo trong bộ môn Mạng máy tính và truyền thông - khoa Công nghệ
thông tin – trường Đại học Công nghệ thông tin và truyền thông Thái Nguyên đã
cùng với tri thức và tâm huyết của mình truyền đạt vốn kiến thức quý báu cho em,
tận tình giúp đỡ và động viên em trong suốt thời gian thực hiện đồ án tốt nghiệp.
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc đến cô giáo Ths.Nguyễn Thị
Duyên đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập và nghiên cứu.
Và sau cùng em xin gửi lời cảm ơn đến gia đình, bạn bè những người luôn
bên cạnh động viên và giúp đỡ em trong thời gian em thực hiện đề tài.
Trong phạm vi khả năng cho phép, em đã cố gắng để hoàn thành đề tài một
cách tốt nhất. Song, với kiến thức còn có hạn, 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ự thông cảm và đóng góp ý kiến tích
cực từ phía các thầy cô và các bạn.
Em xin chân thành cám ơn!
Sinh viên thực hiện

Nguyễn Thị Hồng
1


2




LỜI CAM ĐOAN
Em tên là: Nguyễn Thị Hồng – sinh viên lớp Truyền thông và Mạng máy
tính K10A, khoa Công nghệ thông tin, trường Đại học công nghệ thông tin và
truyền thông - Đại học Thái Nguyên, khóa 2011-2016.
Em xin cam đoan đã thực hiện quá trình làm đồ án một cách khoa học,
chính xác và trung thực.
Toàn bộ kết quả của quá trình làm đồ án là thành quả của quá trình học tập,
nghiên cứu của em, dưới sự hướng dẫn của Th.s Nguyễn Thị Duyên. Nội dung
trong đồ án nếu có tham khảo, sử dụng tài liệu thông tin từ một số nguồn khác đều
được trích dẫn trong phần tài liệu tham khảo.
Em xin chịu trách nhiệm toàn bộ trước bài báo cáo của mình!
Thái Nguyên, Ngày…… tháng….. năm 2016.
Sinh viên

Nguyễn Thị Hồng

3


MỤC LỤC
LỜI CÁM ƠN ....................................................................................................... 1
LỜI CAM ĐOAN ................................................................................................. 2
MỤC LỤC............................................................................................................. 3
TỔNG QUAN VỀ ĐỀ TÀI................................................................................... 7
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ..................................................................... 9
1.1. Tổng quan về hệ điều hành Android.......................................................... 9
1.1.1 Android và lịch sử phát triển của Android ............................................ 9
1.1.2 Kiến trúc của hệ điều hành Android.................................................... 11

1.1.3 Cấu trúc của một project Adroid ......................................................... 15
1.1.4 Các thành phần cơ bản của ứng dụng Android ................................... 17
1.1.5 Web Service ........................................................................................ 25
1.2. Tổng quan về phân tích thế kế hướng đối tượng UML ............................ 28
1.2.1 Giới thiệu chung về UML ................................................................... 28
1.2.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng .......................... 28
1.2.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng..................... 29
1.3. Ứng dụng mô hình UML trong thiết kế ứng dụng Android .................... 30
CHƯƠNG 2:KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG .............. 32
2.1. Khảo sát thực tế ........................................................................................ 32
2.1.1 Khảo sát phần mềm ngoài thị trường ................................................. 32
2.1.2 Khảo sát hiện trạng thực tế tại trường Đại học CNTT&TT ................ 35
2.1.3 Khảo sát nhu cầu đặt sân bóng đá của người dùng ........................... 37
2.1.4 Áp dụng thực tế .................................................................................. 38
2.2. Phân tích hệ thống .................................................................................... 39
2.2.1 Phạm vi của chương trình.................................................................... 39
2.2.2 Các tác nhân và Use Case.................................................................... 39
2.2.3 Biểu đồ UseCase tổng quát ................................................................ 40
4


2.2.4 Đặc tả cho từng Usecase ..................................................................... 40
2.2.5 Biểu đồ lớp .......................................................................................... 54
2.2.6 Thiết kế cơ sở dữ liệu .......................................................................... 54
CHƯƠNG 3: XÂY DỰNG DEMO CHƯƠNG TRÌNH..................................... 57
3.1. Thiết kế giao diện chương trình................................................................ 57
3.2. Xây dựng chương trình ............................................................................. 58
3.2.1 Sơ đồ kiến trúc của hệ thống ............................................................... 58
3.2.2 Xây dựng Web Server cho ứng dụng ................................................. 60
3.2.3 Xây dựng ứng dụng trên Android ...................................................... 64

3.3. Xây dựng Web Client .............................................................................. 64
3.4. Ứng dụng Demo ....................................................................................... 67
KẾT LUẬN......................................................................................................... 76
TÀI LIỆU THAM KHẢO................................................................................... 77

5


DANH MỤC HÌNH ẢNH
Hình 1.1 Kiến trúc của hệ điều hành Android .................................................... 11
Hình 1.2 Vòng đời của một activity.................................................................... 20
Hình 1.3 Các phương thức callback dành cho một service................................. 22
Hình 1.4 Kiến trúc của web service .................................................................... 25
Hình 1.5 Quá trình lấy dữ liệu từ Web service ................................................... 28
Hình 2.1 Trang chủ website dansan.vn .............................................................. 32
Hình 2.2 Trang chủ tuyensonsport.vn ................................................................. 33
Hình 2.3 Sân bóng cỏ nhân tạo trường đại học CNTT&TT .............................. 35
Hình 2.4 Thi đấu giao hữu giữa đội tuyển Thái Nguyên và đội tuyển Hội các tuyển
thủ Việt nam........................................................................................................ 36
Hình 2.5 Bảng giá thi đấu các loại sân............................................................... 37
Hình 2.6 Biểu đồ Usecase tổng quát của hệ thống.............................................. 40
Hình 2.7 Biểu đồ trình tự đăng nhập................................................................. 41
Hình 2.8 Biểu đồ hoạt động đăng nhập.............................................................. 41
Hình 2.9 Biểu đồ trình tự đăng kí ...................................................................... 42
Hình 2.10 Biểu đồ hoạt động đăng kí thành viên............................................... 43
Hình 2.11 Biểu đồ trình tự đăng xuất................................................................. 44
Hình 2.12 Biểu đồ hoạt động đăng xuất............................................................. 44
Hình 2.13 Biểu đồ trình tự xem lịch sân ............................................................ 45
Hình 2.14 Biểu đồ hoạt động xem lịch sân ........................................................ 46
Hình 2.15 Biểu đồ trình tự xem bảng giá........................................................... 46

Hình 2.16 Biểu đồ hoạt động xem bảng giá....................................................... 47
Hình 2.17 Biểu đồ trình tự xem sơ đồ sân ......................................................... 48
Hình 2.18 Biểu đồ trình tự xem sơ đồ sân ......................................................... 48
Hình 2.19 Biểu đồ trình tự chức năng đặt sân.................................................... 49
Hình 2.20 Biểu đồ hoạt động đặt sân ................................................................. 50
6


Hình 2.21 Biểu đồ trình tự chức năng hủy sân................................................... 51
Hình 2.22 Biểu đồ trình tự chức năng đăng nhập của Admin............................ 52
Hình 2.23 Biểu đồ trình tự chức năng quản lí sân đã đặt................................... 53
Hình 2.24 Biểu đồ trình tự hủy sân của admin................................................... 54
Hình 2.25 Biểu đồ lớp ........................................................................................ 54
Hình 2.26 Bảng cơ sở dữ liệu............................................................................. 55
Hình 2.27 Bảng thiết kế cơ sở dữ liệu................................................................ 56
Hình 3.1 Sơ đồ bố trí giao diện chương trình ..................................................... 57
Hình 3.2 Sơ đồ kiến trúc của hệ thống................................................................ 58
Hình 3.3 Giao diện trang host free đã đăng kí .................................................... 62
Hình 3.4 Cấu trúc file API viết code đọc dữ liệu từ MySQL ............................. 62
Hình 3.5 Giao diện chính ứng dụng ................................................................... 64
Hình 3.6 Cấu trúc file controllers........................................................................ 65
Hình 3.7 Cấu trúc file models ............................................................................. 66
Hình 3.8 Cấu trúc file views ............................................................................... 67
Hình 3.9 Cấu trúc dữ liệu trả về.......................................................................... 67
Hình 3.10 Giao diện của khách hàng .................................................................. 68
Hình 3.11 Giao diện đăng nhập ứng dụng .......................................................... 69
Hình 3.12 Giao diện ứng dụng sau khi đăng nhập.............................................. 70
Hình 3.13 Giao diện lịch đặt sân của ứng dụng .................................................. 71
Hình 3.14 Giao diện chọn loại sân ...................................................................... 72
Hình 3.15 Form xác nhận thông tin đặt sân ........................................................ 73

Hình 3.16 Đặt sân thành công ............................................................................. 74
Hình 3.17 Hiển thị sân đã đặt lên lịch hệ thống .................................................. 75

7


TỔNG QUAN VỀ ĐỀ TÀI
Hiện nay, cùng với sự phát triển không ngừng của khoa học và công nghệ
con người cũng dần chú ý hơn đến vấn đề sức khỏe của bản thân. Chính vì thế các
hoạt động thể dục thể thao tập thể ngày càng được chú trọng và phát triển lớn
mạnh.
Một số trung tâm hoạt động thể dục thể thao phổ biến thịnh hành hiện nay
như: câu lạc bộ thể hình, câu lạc bộ cầu lông, tennis, đặc biệt là môn thể thao được
rất nhiều bạn trẻ yếu thích – bóng đá. Tuy nhiên các trung tâm còn tổ chức quảng
bá, cho thuê sân mới chỉ dừng lại ở mức độ riêng lẻ, rời rạc, điều này gây khó khắn
không ít cho người dùng có nhu cầu tìm và đặt thuê sân một cách nhanh chóng.
Với sự bùng nổ của công nghệ thông tin, những chiếc điện thoại thông minh
dường như đã trở thành một vật dụng bất li thân của nhiều người, mọi hoạt động
như giải trí, tìm kiếm thông tin, giao lưu, học tập… đều có thể đáp ứng chỉ với một
chiếc điện thoại. Sự tiện lợi mà điện thoại mang lại cho cuộc sống của con người là
điều không thể phủ nhận.
Nắm bắt được nhu cầu của người sử dụng và mong muốn xây dựng được
một ứng dụng nhằm hỗ trợ cho việc đặt thuê sân bóng đá được dễ dàng hơn đặc
biệt là với những bạn sinh viên, các cán bộ công nhân viên chức trong khu vực
trường Đại học Công nghệ thông tin và truyền thông, em đã quyết định chọn đề
tài: "Xây dựng ứng dụng quản lí đặt sân bóng đá cho trường Đại học Công
nghệ thông tin và truyền thông trên nền tảng Android" làm đề tài bảo vệ của
mình.
Mục đích đề tài
Đề tài được thực hiện nhằm mục đích củng cố lại kiến thức về nền tảng

android, kỹ năng lập trình android, cũng như quy trình xây dựng phần mềm, thông
qua đó xây dựng và cài đặt ứng dụng đặt sân bóng đá trên di động nền tảng
android phục vụ người dùng.
8


Nội dung, phạm vi thực hiện
 Tìm hiểu về nền tảng android và lập trình android.
 Tìm hiểu và khảo sát nhu cầu thực tế để thu thập thông tin, tài liệu…lấy
cơ sở để thiết kế phần mềm.
 Xây dựng, cài đặt ứng dụng đặt sân bóng đá trên điện thoại di động nền
tảng android.
Phương pháp thực hiện
 Thông qua tài liệu, thông tin thu thập trên mạng internet.
 Thông qua trao đổi với giáo viên hướng dẫn và thầy cô trong trường.
- Thông qua trao đổi, học tập cùng bạn bè và những người có kinh nghiệm
Cấu trúc nội dung đề tài
Đề tài gồm 3 chương chính:
 Chương 1: Cơ sở lý thuyết
 Chương 2: Khảo sát và phân tích thiết kế hệ thống
 Chương 3: Xây dựng demo chương trình.

9


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về hệ điều hành Android.
1.1.1 Android và lịch sử phát triển của Android
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6
dành cho các dòng điện thoại SmartPhone. Đầu tiên được ra đời bởi công ty liên

hợp Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở
thành một hệ điều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa
chuộng cao trên thế giới.
Hệ điều hành Android một hệ điều hành rất mạnh mạnh, có bảo mật cao,
hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi.. tương thích
với nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và
trackball. Android là hệ điều hành di động nên có khả năng kết nối cao với các
mạng không dây. Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phương
tiện media, hoạt hình cũng như trình diễn các khả năng đồ họa khác cực tốt, là
tiền đề để phát triển các ứng dụng có giao diện phức tạp chẳng hạn như là các trò
chơi.
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần
android được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ
thêm công nghệ mới. Chẳng hạn như theo một đánh giá thì android phiên bản 2.2
hoạt động nhanh hơn bản 2.1 tới 450%. Hiện nay, phiên bản mới nhất 2.3 phát
hành ngày 6/12/2010 và đang tiếp tục được cập nhật.
Năm 2008, hệ điều hành Android đã chính thức mở toàn bộ mã nguồn,
điều đó cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế
lại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ
điều hành mở này hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm
khá lớn chi phí phát triển hệ điều hành. Những điều đó là cực kỳ tốt không chỉ
đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như
10


Samsung, HTC....
Với Google, vì Android hoàn toàn miễn phí, Google không thu tiền từ
những hãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ android nhưng
bù lại, những dịch vụ của hãng như Google Search, Google Maps,... nhờ có
Android mà có thể dễ dàng xâm nhập nhanh vào thị trườngdi động vì mỗi chiếc

điện thoại được sản xuất ra đều được tích hợp hàng loạt dịch vụ của Google. Từ
đó hãng có thể kiếm bội, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó.
Một số hãng sản xuất điện thoại có sử dụng hệ điều hành Android tiêu biểu:
 HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero,
Desire, Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One,
Dream, Aria, Paradise
 LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus
One

P500, GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880,

C710Aloha
 MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid
XTreme, MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT80
ZHISHANG, DEFY, CHARM, XT806...
 SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic
4G, i5510, I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy
S, I6500U Galaxy, Galaxy Q, I5700 Galaxy Spica, I8520 Galaxy Beam, I909
Galaxy S
 SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8
 ACER với các dòng máy beTouch T500, Liquid E, Stream,
Liquid, beTouch E110, beTouch E130, beTouch E400, beTouch E120, Liquid
Metal.
Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ
điều hành android trong sản phẩm của mình.

11


 Kiến trúc của hệ điều hành Android

a. Cấu trúc của hệ điều hành.
Mô hình sau mô tả tổng quát cấu trúc của HĐH Android.

Hình 1.1 Kiến trúc của hệ điều hành Android
Tầng ứng dụng (Applications)
Là tầng trên cùng của kiến trúc Android, nằm cách xa với phần cứng nhất,
là nơi chứa các ứng dụng của lập trình viên. Hầu hết các ứng dụng được viết bằng
ngôn ngữ java.
Tầng Application Framework
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 cực kỳ phong phú và sáng tạo. Nhà
phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,
12


các dịch vụ chạy nền, thiết lập hệ thống báo động và nhiều hơn nữa.
Google xây dựng cho các developer để phát triển các ứng dụng của họ trên
Android chỉ bằng cách gọi các API. Cơ bản tất cả các ứng dụng là một bộ các dịch
vụ và các hệ thống, bao gồm:
 Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để
thiết kếphần giao diện ứng dụng như: GridView, TableView….
 Content Provider:Cho phép các ứng dụng có thể truy xuất dữ liệu từ các
ứng dụng khác hoặc chia sẻ dữ liệu giữa các ứng dụng đó.
 Resource Manager:Cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: graphics, image, music, video…
 Notification Manager: Cho phép tất cả các ứng dụng hiển thị thông báo
của mình trên hệ điều hành.
 Activity Manager: Quản lý vòng đời của các ứng dụng và điều hướng
các Activity.
Tầng Library

Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android.Các thư viện này sẽ được các lập
trình viên phát triển ứng dụng Android thông qua tầng Android Framework. Có thể
kể đến một vài thư viện quen thuộc như:
android.app - Cung cấp truy cập đến các mô hình ứng dụng và là nền tảng
của tất cả các ứng dụng Android.
 android.content - Tạo điều kiện truy cập nội dung, publishing và
messaging giữa các ứng dụng và các thành phần ứng dụng.
 android.database - Được sử dụng để truy cập dữ liệu được công bố bởi
các nhà cung cấp nội dung và bao gồm các lớp quản lý cơ sở dữ liệu SQLite.
 android.graphics - Một bản vẽ đồ họa 2D API cấp thấp bao gồm cả màu
sắc, điểm, các bộ lọc, hình chữ nhật và bức tranh sơn dầu.
13


 android.hardware - Trình bày một API cung cấp quyền truy cập vào
phần cứng như gia tốc và cảm biến ánh sáng.
 android.opengl - Một giao diện Java với đồ họa OpenGL ES dựng hình
3D API.
 android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ
hệ điều hành chuẩn bao gồm tin nhắn, các dịch vụ hệ thống và quá trình liên lạc.
 android.media - Cung cấp các lớp để cho phép phát âm thanh và video.
 android.net - Một tập các API cung cấp quyền truy cập vào các mạng
stack. Bao gồm android.net.wifi, cung cấp truy cập không dây đến ngăn xếp của
thiết bị.
 android.text - Được sử dụng để thao tác văn bản trên màn hình điện
thoại.
 android.util - Một tập các lớp tiện ích cho công việc biểu diễn chuỗi,
chuyển đổi số lượng, xử lý XML, ngày tháng, thời gian.
 android.view - Các khối xây dựng cơ bản của giao diện người dùng của

ứng dụng.
 android.widget - Một bộ sưu tập phong phú của các thành phần giao
diện người dùng được xây dựng trước buttons, labels, list views, layout managers,
radio buttons, vv.
 android.webkit - Một tập các lớp nhằm cho phép khả năng duyệt web
được xây dựng vào các ứng dụng.
Tầng Android Runtime
 Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ
Java có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java
trên máy tính thường. Thứ nhất là các thư viện lõi (Core Library) , chứa các lớp
như JAVA IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik
Virtual Machine) . Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng
14


dụng Java của hệ điều hành android không được chạy bằng JRE của Sun
(nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển.
Tầng Linux kernel.
Là tầng dưới cùng của hệ điều hành Android. Bộ nhân này làm nhiệm vụ
như một lớp trung gian kết nối phần cứng thiết bị và phần ứng dụng. Toàn bộ hệ
thống Android được xây dựng dựa trên Linux phiên bản 2.6 [2]với một vài thay
đổi bởi Google.

15


b. Cấu trúc của một project android.
Thư mục src (viết tắt của source):
Nơi chứa các source code ứng dụng. Gồm các package và các class. Các
file có đuôi ngầm định là *.java hoặc *.aidl

Thư mục gen (viết tắt của Generated Java File):
Nơi chứa các file tự động phát sinh, hay chính là các file .java tạo ra bởi
ADT plug-in, như là file R.java hoặc các giao diện tạo ra từ file AIDL. File R.java
là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để quản lý
các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình
ảnh.
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào
xảy ra làm thay đổi các thuộc tính trong ứng dụng. Chẳng hạn như, bạn kéo và thả
một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn
đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh
thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá.
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả
quá trình xây dựng ứng dụng.
Dưới đây là nội dung của một file R.java:
publicstaticfinalclass drawable {
publicstaticfinalintabc_ab_bottom_solid_dark_holo=0x7f020000;
publicstaticfinalintabc_ab_bottom_solid_light_holo=0x7f020001;
publicstaticfinalintabc_ab_share_pack_holo_light=0x7f020005;
publicstaticfinalintabc_ab_solid_dark_holo=0x7f020006;
publicstaticfinalintabc_ab_solid_light_holo=0x7f020007;
publicstaticfinalintabc_ab_stacked_solid_dark_holo=0x7f020008;
publicstaticfinalintabc_ab_stacked_solid_light_holo=0x7f020009;
publicstaticfinalintabc_ab_transparent_light_holo=0x7f02000d;
16


Thư mục res (viết tắt của resource-tài nguyên):
Nơi chứa các resource dùng trong ứng dụng. Chẳng hạn như file hình ảnh,
file layout, các chuỗi (string)…
Các thư mục con của res bao gồm:

 Anim/ : Chứa các file .xml dùng cho việc thiết lập các hiệu ứng động
(animation)
 Color/ : chứa các file .xml dùng định nghĩa màu sắc.
 Drawable/ : Chứa file hình ảnh (png, jpeg, gif), file .xml định nghĩa cách
vẽ các loại hình dạng khác nhau (shape).
 Layout/ : Chứa các file .xml dùng để dựng giao diện người dùng.
 Menu/ : Chứa file .xml qui định application menu.
 Raw/ : Chứa các file media, chẳng hạn như .mp3 hay .ogg
 Values/ : Chứa file .xml định nghĩa các giá trị. Khác với các resource
trong các thư mục khác, resource ở thư mục này khi được định danh trong lớp R
thì sẽ không sử dụng file name để định danh, mà sẽ được định danh theo qui định
bên trong file .xml đó.
Thư mục assets: Chứa các resource file mà ứng dụng cần dùng (dưới dạng
file).
1.1.3 Cấu trúc của một project Adroid
AndroidManifest.xml
Trong bất kì một project Android nào khi tạo ra đều có một file
AndroidManifest.xml, file này được dùng để định nghĩa các screen sử dụng, các
permission cũng như các theme cho ứng dụng. Đồng thời nó cũng chứa thông tin
về phiên bản SDK cũng như main activity sẽ chạy đầu tiên. File này tự động sinh
ra khi tạo một Android project. Trong file manifest bao giờ cũng có 3 thành phần
chính đó là : application, permission và version.
Dưới đây là nội dung của một file AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
17


xmlns:android=" />package="com.example.tea"
android:versionCode="1"

android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="18" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.example.tea.MainActivity"
android:label="@string/app_name" >
<intent-filter>
android:name="android.intent.action.MAIN" />
android:name="android.intent.category.LAUNC
HER" />
</intent-filter>
</activity>
</application>
</manifest>

Application
 Thẻ <application> bên trong thẻ này chứa các thuộc tính được định
nghĩa cho ứng dụng Android như:
 android:icon = “drawable resource”: ở đây đặt đường dẫn đến file icon
của ứng dụng khi cài đặt.
 Ví dụ: android:icon=”drawable/ic_launcher”.
18



 android:name = “string”: thuộc tính này để đặt tên cho ứng dụng
android. Tên này sẽ hiển thị lên màn hình sau khi cài đặt ứng dụng.
 android:theme = “drawable theme”: thuộc tính này để đặt theme cho ứng
dụng. Các theme là các cách để hiển thị giao diện ứng dụng.
Permission
Bao gồm các thuộc tính chỉ định quyền truy suất và sử dụng tài nguyên của
ứng dụng. Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest của
ứng dụng cần phải khai báo các quyền truy suất sau:

android:name=”

android.permission.READ_PHONE_STATE”/>

android:name=”

android.permission.ACCOUNT_MANAGER”/>
<uses-permission android:name=”android.permission.VIBRATE”/>

android:name=”

android.permission.CALL_PHONE”/>

SDK version
Thẻ xác định phiên bản SDK được khai báo như sau:
<uses-sdk android: minSdkVersion=”8”/>


Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện tại đang sử dụng.
File R.java
File R.java là file tự động sinh ra ngay khi tạo ứng dụng, file này được sử
dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các
tài nguyên hình ảnh.
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào
xảy ra làm thay đổi các thuộc tính trong ứng dụng. Chẳng hạn như: bạn kéo và thả
một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn
đến file đó cũng sẽ được hình thành trong file R.java hoặc xóa một file hình ảnh
thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xóa.
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả

19


quá trình xây dựng ứng dụng.
1.1.4 Các thành phần cơ bản của ứng dụng Android
a. Khái niệm Activity
Activity chính là một cửa sổ chứa giao diện ứng dụng của bạn mà người
dùng có thể tương tác với nó. Mỗi màn hình trên ứng dụng cả bạn sẽ là kế thừa của
Activity. Activity dùng các View để hiển thị giao diện ứng dụng người dùng và
đáp ứng lại các yêu cầu từ người dùng. Trong các ứng dụng desktop, một Activity
tương tự như một Form. Bạn cần phải tạo một Activity tương ứng cho một màn
hình hiển thị. Một ứng dụng điển hình bao gồm một giao diện chính chứa các chức
năng chính của chương trình, và các Activity khác chứa thông tin liên quan đến
lưu trữ thông tin của người dùng nhập và các chức năng khác hỗ trợ chức năng
chính của chương trình. Để di chuyển màn hình trong ứng dụng android, bạn có
thể bắt đầu một Activity hay trở lại Activiy trước đó. Có 3 dạng Activity:
 Floating Activity: là dạng Activity nổi, có kích thước không phủ lấ toàn

bộ màn hình.
 Activity Group: là một nhóm các Activity nhúng trong một Activity
khác.
 Full screen Activity: là Activity phủ kín toàn bộ màn hình. Đây là loại
Activity thường được sử dụng phổ biến nhất.
Một ứng dụng chứa rất nhiều Activity liên kết với nhau và hoạt động giữa
các Activity chính, được khởi động đầu tiên khi ứng dụng chúng ta chạy. Nó sẽ ở
trạng thái focus và sẽ được đưa vào ngăn xếp. Từ Activity 1, chúng ta khởi động
Activity 2, lúc này Activity 2 sẽ ở trạng thái focus và sẽ được đưa vào ngăn xếp.
Từ Activity 2, chúng ta khởi động Activity 3, bây giờ tới Activity 3 nhận focus và
được đưa vào ngăn xếp.

20


Bây giờ, nếu như bạn nhấn nút Back trên thiết bị, Activity 3 sẽ bị đẩy ra
trước tiên. Lúc này Activity 2 sẽ dành được focus và hiển thị giao diện tương tác
với người dùng. Nếu bạn tiếp tục bấm nút Back thì Activity 1 sẽ dành được focus
và giao diện hiển thị sẽ là Activity 1. Nếu bạn tiếp tục nhấn nút Back nữa thì
Activity 1 sẽ xóa khỏi Stack và lúc này ngăn xếp rỗng và về màn hình HOME của
thiết bị Android.

b. Vòng đời của 1 Activity
Không giống như các ứng dụng thông thường được khởi tạo ở hàm main.
Hệ thống Android sẽ được bắt đầu thực hiện một Activity tương ứng với từng
trạng thái vòng đời của nó. Vòng đời của một Activity sẽ diễn ra từ lúc khởi động
cho đến khi kết thúc vòng đời của nó. Phần này sẽ giới thiệu cho bạn đọc một cái
nhìn tổng quát về các phương thức quan trong trong vòng đời của một Activity.
Android cung cấp một số sự kiện để quản lý các trạng thái vòng đời của Activity
như sau:

21


 onCreate(): sự kiện này được gọi khi Activity được tạo lần đầu tiên.
Trong sự kiện này, bạn phải thực hiện những công việc như tạo giao diện, tải dữ
liệu. Sau sự kiện này là sự kiện onStart() được gọi.
 onRestart(): Activity sau khi chuyển sang trạng thái Stopped, nếu muốn
hiển thị và dành được focus, sự kiện onRestart() phải được gọi. Sau sự kiện này
luôn là sự kiện onStart() được gọi.
 onStart(): sự kiện nà được gọi khi giao diện của Activity hiển thị trên
màn hình thiết bị. Lúc này, tương tác giữa người dùng vẫn chưa được và chưa
chuyển sang nhận focus. Theo sự kiện này có thể là sự kiện onResume() hoặc sự
kiện onStop().
 onResume(): sự kiện này được gọi khi Activity bắt đầu tương tác với
người dùng. Theo sự kiện này có thể là sự kiện onPause().
 onPause(): khi một Activity khác dành quyền hiển thị và trạng thái focus
thì Activity hiện hành sẽ gọi sự kiện onPause(). Trong sự kiện này, công việc
chúng ta phải làm là lưu trạng thái Activity và tắt các dịch vụ không cần thiết.
Theo sau sự kiện này có thể là onResume() hoặc onStop().
 onStop(): sự kiện này được gọi khi Activity bị che khuất hoàn toàn bởi
một Activity khác và Activity đó cũng dành được focus. Theo sau sự kiện này có
thể là onRestart() hoặc là onDestroy().
Hình sau sẽ mô tả một vòng đời của một Activity và các giai đoạn mà nó
phải trải qua từ khi bắt đầu cho đến khi kết thúc.

22


Hình 1.2 Vòng đời của một activity
c. Lưu trữ thông tin trạng thái của một Activity

Khi một Activity bị paused hoặc stopped, trạng thái của một Activity vẫn sẽ
được giữ lại. Điều này là đúng vì mỗi đối tượng Activity vẫn còn được giữ lại
trong bộ nhớ khi nó bị paused hoặc stopped. Tất cả các thông tin về Activity cũng
như trạng thái của nó vẫn còn tồn tại trong. Vì vậy, bất cứ thay đổi nào của người
dùng đối với Activity vẫn được giữ lại khi nó trở lại trạng thái hoạt động hoặc chế
độ resume.
Intents
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một
Activity. Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều
Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc
khác nhau. Intent chính là người đưa thư, giúp chúng ta triệu gọi cũng như truyền
các dữ liệu cần thiết để thực hiện một Activity từ một Activity khác. Điều này
cũng giống như việc di chuyển giữa các Form trong lập trình Windows Form.
23


Trong hình vẽ trên Activity B chỉ trả về kết quả khi cần thiết. Ví dụ: giả sử
Activity A nhắc người dùng chọn ảnh profile, Activity B liệt kê các ảnh trong
SDCard và cho phép người dùng chọn ảnh. Khi đó cặp “code + result” là cần thiết
và có thể là “0:null” tức là hủy chọn hoặc “1:ảnh 20”tức chọn ảnh 20.
Services
Các dịch vụ (services) chạy nền và không có bất kỳ thành phần giao diện
nào. Chúng có thể thực hiện các hành động tương tự như các hoạt động, nhưng mà
không có bất kỳ giao diện người dùng nào. Dịch vụ là hữu ích với các hành động
(actions) khi mà người dùng cùng một lúc muốn thực hiện trên màn hình nhiều
actions. Chẳng hạn như vừa nghe nhạc vừa nhắn tin, …
Một Service có thể sử dụng theo 2 cách:
+ Nó có thể được bắt đầu và được phép hoạt động cho đến khi một người
nào đó dùng nó lại hoặc nó tự ngắt. Ở chế độ này, nó được bắt đầu bằng cách gọi
Context.startService() và dừng bằng lệnh Context.stopService(). Nó có thể tự động

ngắt bằng lệnh Service.stopSelf() hoặc Service.stopSelfResult(). Chỉ cần một lệnh
stopService() để ngừng Service lại cho dù lệnh startService() được gọi ra bao
nhiêu lần.
+ Service có thể được vận hành theo như đã được lập trình việc sử dụng
một giao diện mà nó định nghĩa. Người dùng thiết lập một đường truyền đến đối
tượng Service mà nó sử dụng và sử dụng đường kết nối đó để thâm nhập vào
Service. Kết nối này được thâm nhập bằng cách gọi lệnh Context.bindService() và
24


được đóng lại bằng cách gọi lệnh Context.unbindService(). Nhiều người dùng có
thể kết nối tới cùng một thiết bị. Nếu Service vẫn chưa được khởi chạy, lệnh
bindService() có thể tùy ý khởi động nó. Hai chế độ này thì không tách biệt toàn
bộ. Có thể kết nối với một Service mà nó đã được bắt đầu với lệnh startService().
Ví dụ, một Service nghe nhạc ở chế độ nền có thể bắt đầu với lệnh startService()
cùng với một đối tượng Intent mà định dạng được âm nhạc để chơi. Chỉ sau đó, có
thể là khi người sử dụng muốn kiểm soát trình chơi nhạc nhạc hoặc biết thêm
thông tin về bài hát hiện tại đang chơi, thì sẽ có một Activity tạo lập một đường
truyền tới Service bằng cách gọi bindService(). Trong trường hợp như thế này,
stopService() sẽ không thực sự ngừng Service cho đến khi liên kết cuối cùng được
đóng lại.
Biểu đồ dưới đây minh họa cho các phương thức callback giành cho một
Service.

25


×