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

Xây dựng trò chơi funny trên thiết bị di động chạy hệ điều hành 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 (1.74 MB, 61 trang )

TRƯỜNG ĐẠI HỌC HÙNG VƯƠNG
KHOA KỸ THUẬT - CÔNG NGHỆ

-----------------------

CAO KHƯƠNG DUY

XÂY DỰNG TRỊ CHƠI FUNNY
TRÊN HỆ ĐIỀU HÀNH ANDROID

KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công nghệ Thông tin

NGƯỜI HƯỚNG DẪN: ThS. Đinh Thái Sơn

Phú Thọ, 2017


LỜI CẢM ƠN
Được sự phân công của khoa Kĩ thuật – Công nghệ trường đại học Hùng
Vương và sự đồng ý của giảng viên hướng dẫn Ths. Đinh Thái Sơn tơi đã thực
hiện đề tài “Xây dựng trị chơi Funny trên hệ điều hành Android”
Để hồn thành khóa luận này tôi xin chân thành cảm ơn các thầy cô giáo
đã tận tình hướng dẫn, giảng dạy trong suốt quá trình học tập, nghiên cứu và
rèn luyện ở trường đại học Hùng Vương.
Xin chân thành cảm ơn giảng viên hướng dẫn Ths. Đinh Thái Sơn đã
hướng dẫn tơi thực hiện khóa luận này.
Mặc dù đã cố gắng để thực hiện đề tài một cách hồn chỉnh nhất, song
vẫn khơng thể tránh được các thiếu sót nhất định. Tơi rất mong sự góp ý của
q thầy, cơ giáo để khóa luận được hồn chỉnh hơn.
Tơi xin chân thành cảm ơn!


Việt Trì, ngày 4 tháng 5 năm 2017

ĐẠI HỌC HÙNG VƯƠNG


MỤC LỤC
LỜI CẢM ƠN ................................................................................................ 1
MỤC LỤC ..................................................................................................... 2
DANH MỤC BẢNG ...................................................................................... 4
DANH MỤC HÌNH ẢNH .............................................................................. 5
A. MỞ ĐẦU ................................................................................................... 7
1. Đặt vấn đề nghiên cứu ............................................................................ 7
1.1 Sự cần thiết phải nghiên cứu: ............................................................... 7
1.2 Căn cứ khoa học và thực tiễn: .............................................................. 8
2. Mục tiêu nghiên cứu của đề tài .............................................................. 8
2.1. Mục tiêu chung ................................................................................... 8
2.2. Mục tiêu cụ thể ................................................................................... 8
3. Đối tượng và phạm vi nghiên cứu .......................................................... 8
3.1. Đối tượng nghiên cứu ......................................................................... 8
3.2. Phạm vi nghiên cứu ............................................................................ 8
4. Phương pháp nghiên cứu........................................................................ 8
4.1. Tiến trình nghiên cứu.......................................................................... 8
4.2. Phương pháp nghiên cứu..................................................................... 9
5. Bố cục đề tài ............................................................................................ 9
B. NỘI DUNG NGHIÊN CỨU .................................................................... 10
CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID TRÊN THIẾT
BỊ DI ĐỘNG ................................................................................................ 10
1.1. Lịch sử ra đời. .................................................................................. 10
1.2. Giao diện người dùng của Android ................................................... 12
1.3. Ứng dụng của Android. ..................................................................... 13

1.4. Kiến trúc và các thành phần. ............................................................. 14
1.4.1. Kiến trúc tổng quát ..................................................................... 14
1.4.2. Hệ điều hành ............................................................................... 14
1.5 Ngôn ngữ Java ................................................................................... 26
1.5.1 Giới thiệu về Java ........................................................................ 26
1.5.2 Các đặc trưng của Java ............................................................... 27
1.5.3 Các kiểu chương trình Java ......................................................... 28
1.5.4 Máy ảo Java (JVM- Java Virtual Machine) .................................. 29

ĐẠI HỌC HÙNG VƯƠNG


CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG .......................... 31
2.1. Xác định yêu cầu .............................................................................. 31
2.1.1. Các chức năng chính của chương trình ....................................... 31
2.1.2. Biểu đồ UserCase ....................................................................... 33
2.2. Phân tích thiết kế .............................................................................. 34
2.2.1 Sơ đồ phân cấp chức năng ........................................................... 34
2.2.2 Sơ đồ luồng dữ liệu ...................................................................... 34
2.2.3 Sơ đồ luồng dữ liệu mức đỉnh ....................................................... 34
2.2.4 Mơ hình lớp ................................................................................. 35
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ..................................................... 39
3.1. Danh sách các màn hình ................................................................... 39
3.2. Chi tiết các màn hình ........................................................................ 40
3.3. Các quy luật chơi chính .................................................................... 48
3.3.1. Luật chơi .................................................................................... 48
3.3.2. Chọn bài ..................................................................................... 49
3.3.3. Bắt bóng ..................................................................................... 49
3.3.4. Tấn cơng ..................................................................................... 50
3.3.5 Các thuộc tính trong trị chơi ....................................................... 58

3.3.6 Menu trong trò chơi. .................................................................... 58
C. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................... 59
D. TÀI LIỆU THAM KHẢO ....................................................................... 60

ĐẠI HỌC HÙNG VƯƠNG


DANH MỤC BẢNG
Tên bảng

Số trang

Bảng 2.1 Code nút khóa ở màn hình trị chơi 1

35,36

Bảng 2.2 Các hiệu ứng Animation sử dụng trong trò chơi

37

Bảng 2.3 Code lớp giới thiệu

38

Bảng 3.1 Danh sách các màn hình

39

Bảng 3.2 Code chuyển từ màn hình chính sang màn hình trị chơi 1,
màn hình hướng dẫn và giới thiệu


40

Bảng 3.3 Mô tả chi tiết màn hình chính

41

Bảng 3.4 Code hiệu ứng anim(hiệu ứng chuyển động) cho quả bóng
khi mới vào giao diện trị chơi

42,43

Bảng 3.5 Mơ tả chi tiết màn hình trị chơi 1

44

Bảng 3.6 Mơ tả chi tiết màn hình trị chơi 2

45,46

Bảng 3.7 Mơ tả chi tiết màn hình hướng dẫn

47

Bảng 3.8 Mơ tả chi tiết màn hình giới thiệu

48

ĐẠI HỌC HÙNG VƯƠNG



DANH MỤC HÌNH ẢNH
Tên hình ảnh

Số trang

Hình 1.1 Giao diện hệ điều hành Android.
Hình 1.2 Kiến trúc tổng quát hệ điều hành Android.
Hình 1.3 Các thành phần nhân Linux
Hình 1.4 Các thư viện
Hình 1.5 Android Runtime

12
14
15
16
17

Hình 1.6 Khung ứng dụng
Hình 1.7 Vịng đời của một activity
Hình 1.8 Sơ đồ chuyển trạng thái của service

18
20

Hình 2.1 Sơ đồ chức năng màn hình trị chơi 1

31

Hình 2.2 Sơ đồ chức năng màn hình trị chơi 2


32

Hình 2.3 Biểu đồ UserCase

33

Hình 2.4 Sơ đồ phần cấp chức năng

34

Hình 2.5 Sơ đồ luồng dữ liệu mức khung cảnh

34

Hình 2.6 Sơ đồ luồng dữ liệu mức đỉnh

34

Hình 2.7 Mơ hình lớp

35

Hình 3.1 Màn hình chính
Hình 3.2 Màn hình trị chơi 1

40

Hình 3.3 Màn hình trị chơi 2


45

Hình 3.4 Màn hình hướng dẫn

47

Hình 3.5 Màn hình giới thiệu

48

Hình 3.6 Mơ tả vị trí qn bài của 2 người chơi

49

Hình 3.7 Nút Player1 Start, quả bóng đỏ, quả bóng tím
Hình 3.8 Bộ kỹ năng người chơi 1

50
50

Hình 3.9 Icon 2 kĩ năng đơn của người chơi 1 và 2

51

Hình 3.10 Minh họa khi dùng kĩ năng đơn người chơi 2

51

Hình 3.11 Icon 2 kĩ năng đơi của người chơi 1 và 2


52

Hình 3.12 Minh họa khi dùng kĩ năng đơi người chơi 2

52

Hình 3.13 Icon 2 kĩ năng hồi máu của người chơi 1 và 2
Hình 3.14 Minh họa khi dùng kĩ năng hồi máu người chơi 1

53
53

Hình 3.15 Minh họa khi dùng kĩ năng hồi máu người chơi 2

54

22

44

ĐẠI HỌC HÙNG VƯƠNG


Hình 3.16 Icon 2 kĩ năng cuối của người chơi 1 và 2

55

Hình 3.17 Minh họa khi dùng kĩ năng cuối người chơi 1

55


Hình 3.18 Minh họa khi dùng kĩ năng cuối người chơi 2
Hình 3.19 Minh họa khi nhân vật 1 chịu địn đánh từ đối phương

56
57

Hình 3.20 Minh họa khi nhân vật 2 chịu đòn đánh từ đối phương

57

Hình 3.21 Minh họa khi nhân vật 2 chiến thắng

57

Hình 3.22 Các thuộc tính mỗi nhân vật

58

Hình 3.23 Menu trong trò chơi

58

ĐẠI HỌC HÙNG VƯƠNG


A. MỞ ĐẦU
1. Đặt vấn đề nghiên cứu
1.1 Sự cần thiết phải nghiên cứu:
Một điện thoại thông minh (smart phone) là một thiết bị di động

cung cấp nhiều tính năng tính tốn tiên tiến đa chiều, đa năng kết nối hơn
một thiết bị di động thông thường (feature phone). Điện thoại thông minh
và điện thoại di động thông thường đều có thể xem như một máy tính
cầm tay nhưng được tích hợp trong một mạng điện thoại di động.
Nhu cầu về các thiết bị di động tiên tiến với bộ xử lý mạnh mẽ, bộ
nhớ nhiều, màn hình lớn hơn, cùng với các hệ điều hành mạnh mẽ đã cực
kỳ phát triền trong vòng vài năm trở lại đây. Theo nghiên cứu của
ComStore, khoảng trên 45,5 triệu người ở Mỹ sử dụng điện thoại thông
minh trong năm 2010, và đang tăng một cách nhanh chóng trong tổng số
234 triệu người sử dụng điện thoại trên toàn nước Mỹ.
Trong những năm gần đây, game mobile đã trở thành một thành
phần không thể thiếu của ngành cơng nghiệp game tồn cầu và đang
khơng ngừng mở rộng một cách nhanh chóng.Game mobile chiếm 1/3
ngành game toàn cầu trong năm 2015.Bởi lẽ game mobile có thể được
chơi ở 2 trên tổng số 4 loại màn hình(Smartphone và Tablet).Tại Việt
Nam, nơi ngành cơng nghiệp vốn chỉ biết đến game online PC cũng đã
hịa mình với xu hướng của thế giới, khơng ít các cơng ty mới đã bật lên
với game mobile và mọi công ty lớn trước đây đều đang tiến hành
chuyển dịch mạnh mẽ. Năm 2015 được coi là một năm bùng nổ thực sự
của game mobile tại thị trường Việt Nam, với tổng số lượng game được
phát hành lên tới 143 sản phẩm, tăng trưởng 90% so với giai đoạn năm
2014 với chỉ 77 sản phẩm. Con số này đồng thời là dấu hiệu cho thấy của
một thị trường cạnh tranh khốc liệt trong năm 2016. Ngoài ra, tần suất
phát hành game mobile ở tất cả các tháng trong năm là tương đối cao
khoảng 12game/tháng. Do đó việc lập trình trị chơi trên điện thoại chạy
hệ điều hành Android là vấn đề cần thiết để sinh viên học tập nghiên cứu
và phát triển. Đó là, lý do chính để tơi chọn đê tài “Xây dựng trò chơi
Funny trên thiết bị di động chạy hệ điều hành Android”.

ĐẠI HỌC HÙNG VƯƠNG



1.2 Căn cứ khoa học và thực tiễn:
Công nghệ phát triển mạnh mẽ tạo nên một làn sóng mới để khai
thác sức mạnh của công nghệ, đặc biệt là trong cơng nghệ lập trình trên
thiết bị di động. Theo thống kê của IDC, chỉ trong quý 2/2014, đã có
13,8 triệu thiết bị di động được sản xuất và tiêu thụ ở khu vực Châu ÁThái Bình Dương. Năm 2014, riêng trong vòng 1 quý, tốc độ tăng trưởng
sản xuất và tiêu thụ smartphone đã tăng từ 16-24%, dẫn đến yêu cầu phát
triển ứng dụng trên thiết bị di động như vũ bão. Cơn sốt smartphone
khiến tất cả các doanh nghiệp sản xuất ứng dụng phải giải quyết bài tốn
lập trình nên các ứng dụng vừa đẹp, vừa tiện dụng, vừa hay, phù hợp với
thị hiếu và nhu cầu của người dùng. Và xu hướng này chắc chắn sẽ còn
phát triển trong 5-7 năm tới.
2. Mục tiêu nghiên cứu của đề tài
2.1. Mục tiêu chung
- Tìm hiểu về hệ điều hành Android.
- Tìm hiểu về ngơn ngữ Java.
2.2. Mục tiêu cụ thể
- Xây dựng trò chơi Funny trên thiết bị di động chạy hệ điều hành
Android.
3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng nghiên cứu
- Hệ điều hành Android.
- Ngơn ngữ Java.
- Trị chơi trên hệ điều hành Android.
3.2. Phạm vi nghiên cứu
- Về nội dung: Nghiên cứu xây dựng trò chơi Funny trên thiết bị di
động chạy hệ điều hành Android.
- Về không gian: Trường đại học Hùng Vương.
- Về thời gian: 19/12/2016 đến 27/3/2017.

4. Phương pháp nghiên cứu
4.1. Tiến trình nghiên cứu
- Bước 1: Nghiên cứu về hệ điều hành Android trên thiết bị di
động.

ĐẠI HỌC HÙNG VƯƠNG


- Bước 2: Phân tích, thiết kế và xây dựng trò chơi.
- Bước 3: Cài đặt trò chơi vào điện thoại và chạy trò chơi.
4.2. Phương pháp nghiên cứu
- Phương pháp phân tích và tổng hợp lý thuyết: Đọc sách và các tài
liệu liên quan đến hệ điều hành Android.
- Phương pháp phân tích và thiết kế ứng dụng: Thực hiện việc phân
tích và thiết kế ứng dụng.
- Phương pháp hỏi ý kiến chuyên gia: Hỏi ý kiến cũng như là đánh
giá khách quan của thầy hướng dẫn cũng như các chuyên gia trong
lĩnh vực xây dựng ứng dụng trên hệ điều hành Android.
- Phương pháp thử nghiệm: chạy thử nghiệm trò chơi trên điện
thoại di động.
5. Bố cục đề tài
Đề tài được chia ra thành các phần:
- A. Mở đầu
- B. Nội dung nghiên cứu
+ Chương 1: Tổng quan hệ điều hành Android trên thiết bị di
động
+ Chương 2: Phân tích và thiết kế ứng dụng.
+ Chương 3: Xây dựng ứng dụng.
- C. Kết luận và hướng phát triển
- D. Tài liệu tham khảo.


ĐẠI HỌC HÙNG VƯƠNG


B. NỘI DUNG NGHIÊN CỨU
CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID TRÊN THIẾT
BỊ DI ĐỘNG
1.1. Lịch sử ra đời.
Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto,
California vào tháng 10 năm 2003 bởi Andy Rubin (đồng sáng lập công ty
Danger), Rich Miner (đồng sáng lập Tổng cơng ty Viễn thơng Wildfire), Nick
Sears (từng là Phó giám đốc T-Mobile), và Chris White (trưởng thiết kế và giao
diện tại WebTV) để phát triển, theo lời của Rubin, "các thiết bị di động thơng
minh hơn có thể biết được vị trí và sở thích của người dùng". Dù những người
thành lập và nhân viên đều là những người có tiếng tăm, Tổng công ty Android
hoạt động một cách âm thầm, chỉ tiết lộ rằng họ đang làm phần mềm dành cho
điện thoại di động. Trong năm đó, Rubin hết kinh phí. Steve Perlman, một
người bạn thân của Rubin, mang cho ông 10.000 USD tiền mặt nhưng từ chối
tham gia vào công ty.
Google mua lại Tổng công ty Android vào ngày 17 tháng 8 năm 2005,
biến nó thành một bộ phận trực thuộc Google. Những nhân viên của chủ chốt
của Tổng công ty Android, gồm Rubin, Miner và White, vẫn tiếp tục ở lại công
ty làm việc sau thương vụ này. Vào thời điểm đó khơng có nhiều thơng tin về
Tổng cơng ty, nhưng nhiều người đồn đốn rằng Google dự tính tham gia thị
trường điện thoại di động sau bước đi này. Tại Google, nhóm do Rubin đứng
đầu đã phát triển một nền tảng thiết bị di động phát triển trên nền nhân Linux.
Google quảng bá nền tảng này cho các nhà sản xuất điện thoại và các nhà
mạng với lời hứa sẽ cung cấp một hệ thống uyển chuyển và có khả năng nâng
cấp. Google đã liên hệ với hàng loạt hãng phần cứng cũng như đối tác phần
mềm, bắn tin cho các nhà mạng rằng họ sẵn sàng hợp tác với các cấp độ khác

nhau.
Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại
di động xuất hiện trong tháng 12 năm 2006. Tin tức của BBC và Nhật Báo Phố
Wall chú thích rằng Google muốn đưa cơng nghệ tìm kiếm và các ứng dụng
của họ vào điện thoại di động và họ đang nỗ lực làm việc để thực hiện điều
này. Các phương tiện truyền thông truyền thống lẫn online cũng viết về tin đồn
rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu Google.

ĐẠI HỌC HÙNG VƯƠNG


Một vài tờ báo cịn nói rằng trong khi Google vẫn đang thực hiện những bản
mô tả kỹ thuật chi tiết, họ đã trình diễn sản phẩm mẫu cho các nhà sản xuất
điện thoại di động và nhà mạng.Tháng 9 năm 2007, Information Week đăng tải
một nghiên cứu của Evalueserve cho biết Google đã nộp một số đơn xin cấp
bằng sáng chế trong lĩnh vực điện thoại di động.
Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở (Open
Handset Alliance), một hiệp hội bao gồm nhiều công ty trong đó có Texas
Instruments, Tập đồn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell
Technology, Motorola, Nvidia, Qualcomm, Samsung Electronic, Sprint
Nextel và T-Mobile được thành lập với mục đích phát triển các tiêu chuẩn
mở cho thiết bị di động. Cùng ngày, Android cũng được ra mắt với vai trò là
sản phẩm đầu tiên của Liên minh, một nền tảng thiết bị di động được xây dựng
trên nhân Linux phiên bản 2.6. Chiếc điện thoại chạy Android đầu tiên được
bán ra là HTC Dream, phát hành ngày 22 tháng 10 năm 2008. Biểu trưng của
hệ điều hành Android mới là một con rôbốt màu xanh lá cây do hãng thiết kế
Irina Blok tại California vẽ.
Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến
hệ điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát
hành trước. Mỗi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái,

theo tên của một món ăn tráng miệng; ví dụ như phiên bản 1.5 Cupcake (bánh
bơng lan nhỏ có kem) tiếp nối bằng phiên bản 1.6 Donut (bánh vòng). Phiên
bản mới nhất hiện nay là 6.0 Marshmallow (kẹo dẻo) và 7.0 Nougat Beta. Vào
năm 2010, Google ra mắt loạt thiết bị Nexus—một dịng sản phẩm bao gồm
điện thoại thơng minh và máy tính bảng chạy hệ điều hành Android, do các đối
tác phần cứng sản xuất. HTC đã hợp tác với Google trong chiếc điện thoại
thông minh Nexus đầu tiên, Nexus One. Kể từ đó nhiều thiết bị mới hơn đã gia
nhập vào dòng sản phẩm này, như điện thoại Nexus 4 và máy tính bảng Nexus
10, lần lượt do LG và Samsung sản xuất. Google xem điện thoại và máy tính
bảng Nexus là những thiết bị Android chủ lực của mình, với những tính năng
phần cứng và phần mềm mới nhất của hệ điều hành Android. Được xây dựng
trên một nền tảng mở, và một bộ thư viện đa năng, mạnh mẽ. Những yếu tố này
đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế
giới, và được cộng đồng lập trình viên di động hưởng ứng mạng mẽ.

ĐẠI HỌC HÙNG VƯƠNG


1.2. Giao diện người dùng của Android

Hình 1.1. Giao diện hệ điều hành Android
Giao diện người dùng của Android dựa trên nguyên tắc tác động trực
tiếp, sử dụng cảm ứng chạm tương tự như những động tác ngoài đời thực như
vuốt, chạm, kéo giãn và thu lại để xử lý các đối tượng trên màn hình. Sự phản
ứng với tác động của người dùng diễn ra gần như ngay lập tức, nhằm tạo ra
giao diện cảm ứng mượt mà, thường dùng tính năng rung của thiết bị để
tạo phản hồi rung cho người dùng. Những thiết bị phần cứng bên trong như gia
tốc kế, con quay hồi chuyển và cảm biến khoảng cách được một số ứng dụng
sử dụng để phản hồi một số hành động khác của người dùng, ví dụ như điều
chỉnh màn hình từ chế độ hiển thị dọc sang chế độ hiển thị ngang tùy theo vị trí

của thiết bị, hoặc cho phép người dùng lái xe đua bằng xoay thiết bị, giống như
đang điều khiển vô-lăng.
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính, điểm
khởi đầu với các thơng tin chính trên thiết bị, tương tự như khái
niệm desktop (bàn làm việc) trên máy tính để bàn. Màn hính chính Android
thường gồm nhiều biểu tượng (icon) và tiện ích (widget); biểu tượng ứng dụng
sẽ mở ứng dụng tương ứng, còn tiện ích hiển thị những nội dung sống động,
cập nhật tự động như dự báo thời tiết, hộp thư của người dùng, hoặc những
mẩu tin thời sự ngay trên màn hình chính. Màn hình chính có thể gồm nhiều
trang xem được bằng cách vuốt ra trước hoặc sau, mặc dù giao diện màn hình
chính của Android có thể tùy chỉnh ở mức cao, cho phép người dùng tự do sắp
đặt hình dáng cũng như hành vi của thiết bị theo sở thích. Những ứng dụng do

ĐẠI HỌC HÙNG VƯƠNG


các hãng thứ ba có trên Google Play và các kho ứng dụng khác còn cho phép
người dùng thay đổi "chủ đề" của màn hình chính, thậm chí bắt chước hình
dáng của hệ điều hành khác như Windows Phone chẳng hạn. Phần lớn những
nhà sản xuất, và một số nhà mạng, thực hiện thay đổi hình dáng và hành vi của
các thiết bị Android của họ để phân biệt với các hãng cạnh tranh.
Ở phía trên cùng màn hình là thanh trạng thái, hiển thị thông tin về thiết
bị và tình trạng kết nối. Thanh trạng thái này có thể "kéo" xuống để xem màn
hình thơng báo gồm thơng tin quan trọng hoặc cập nhật của các ứng dụng, như
email hay tin nhắn SMS mới nhận, mà không làm gián đoạn hoặc khiến người
dùng cảm thấy bất tiện. Trong các phiên bản đời đầu, người dùng có thể nhấn
vào thơng báo để mở ra ứng dụng tương ứng, về sau này các thơng tin cập nhật
được bổ sung thêm tính năng, như có khả năng lập tức gọi ngược lại khi có
cuộc gọi nhỡ mà khơng cần phải mở ứng dụng gọi điện ra. Thơng báo sẽ ln
nằm đó cho đến khi người dùng đã đọc hoặc xóa nó đi.

1.3. Ứng dụng của Android.
Hệ điều hành Android có lượng ứng dụng của bên thứ ba ngày càng
nhiều, được chọn lọc và đặt trên một cửa hàng ứng dụng như Google
Play hay Amazon Appstore để người dùng lấy về, hoặc bằng cách tải xuống rồi
cài đặt tập tin APK từ trang web khác. Các ứng dụng trên Cửa hàng Play cho
phép người dùng duyệt, tải về và cập nhật các ứng dụng do Google và các nhà
phát triển thứ ba phát hành. Cửa hàng Play được cài đặt sẵn trên các thiết bị
thỏa mãn điều kiện tương thích của Google. Ứng dụng sẽ tự động lọc ra một
danh sách các ứng dụng tương thích với thiết bị của người dùng, và nhà phát
triển có thể giới hạn ứng dụng của họ chỉ dành cho những nhà mạng cố định
hoặc những quốc gia cố định vì lý do kinh doanh. Nếu người dùng mua một
ứng dụng mà họ cảm thấy khơng thích, họ được hoàn trả tiền sau 15 phút kể từ
lúc tải về, và một vài nhà mạng cịn có khả năng mua giúp các ứng dụng trên
Google Play, sau đó tính tiền vào trong hóa đơn sử dụng hàng tháng của người
sử dụng. Đến tháng 9 năm 2012, có hơn 675.000 ứng dụng dành cho Android,
và số lượng ứng dụng tải về từ Cửa hàng Play ước tính đạt 25 tỷ.
Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử
dụng Bộ phát triển phần mềm Android (SDK). SDK bao gồm một bộ đầy đủ
các công cụ dùng để phát triển, gồm có cơng cụ gỡ lỗi, thư viện phần mềm, bộ

ĐẠI HỌC HÙNG VƯƠNG


giả lập điện thoại dựa trên QEMU, tài liệu hướng dẫn, mã nguồn mẫu, và
hướng dẫn từng bước. Môi trường phát triển tích hợp (IDE) được hỗ trợ chính
thức là Eclipse sử dụng phần bổ sung Android Development Tools (ADT). Các
cơng cụ phát triển khác cũng có sẵn, gồm có Bộ phát triển gốc dành cho các
ứng dụng hoặc phần mở rộng viết bằng C hoặc C++, Google App Inventor, một
mơi trường đồ họa cho những nhà lập trình mới bắt đầu, và nhiều nền tảng ứng
dụng web di động đa nền tảng phong phú.

Để vượt qua những hạn chế khi tiếp cận các dịch vụ của Google do
sự Kiểm duyệt Internet tại Cộng hòa Nhân dân Trung Hoa, các thiết bị Android
bán tại Trung Quốc lục địa thường được điều chỉnh chỉ được sử dụng dịch vụ
đã được duyệt.
1.4. Kiến trúc và các thành phần.
1.4.1. Kiến trúc tổng quát
Android bao gồm bốn thành phần sau:
- Hệ điều hành.
- Thư viện và các giao diện lập trình ứng dụng.
- Khung ứng dụng.
- Ứng dụng.
1.4.2. Hệ điều hành

Hình 1.2 Kiến trúc tổng quát hệ điều hành Android.

ĐẠI HỌC HÙNG VƯƠNG


Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như
bảo mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng), ngăn
xếp mạng và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại,
không đây, v.v…). Nhân Linux này cũng có vai trị như một lớp trừu tượng
giữa phần cứng và phần mềm.
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã
được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị
cầm tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình,
nhu cầu kết nối mạng khơng dây.
1.4.2.1. Các thành phần của nhân Linux

Hình 1.3 Các thành phần nhân Linux

- Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu
nhận những điều khiển của người dùng lên màn hình ( di chuyển, cảm
ứng…).
- Camera Driver : điều khiển hoạt động của camera, nhận luồng dữ liệu
từ camera về.
- Bluetooth Driver : Điều khiển thiết bị phát, thu sóng Bluetooth.
- USB Driver : Điều khiển bàn phím.
- Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi.
- Audio Driver : Điều khiển các bộ thu phí phát âm thanh, giải mã các tín
hiệu dạng audio thành tín hiệu số và ngược lại.
- Power Management : Giám sát việc tiêu thụ điện năng.
- M-system Driver : Quản lý việc đọc ghi… lên các thiết bị nhớ như thẻ
SD, flash.
- Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với
mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức
năng truyền thông được thực hiện.
1.4.2.2. Thư viện
Android cung cấp một số các APIs cho phát triển ứng dụng.

ĐẠI HỌC HÙNG VƯƠNG


Hình 1.4 Các thư viện
Danh sách các API cơ bản sau được cung cấp bởi tất cả các thiết bị
trên nền Android:
- android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là
các lớp quản lý (List, Stack…) lớp xử lý chuỗi, lớp xử lý XML.
- android.graphics: Cung cấp các lớp đồ họa mức thấp thực hiện các chức
năng đồ họa, màu, vẽ cơ bản.
- android.database: Cung cấp các lớp mức thấp bắt buộc cho việc điều

khiển cursor khi làm việc với các cơ sở dữ liệu.
- android.content: Các giao tiếp lập trình nội dung được dùng để quản lý
truy cập dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với
tài nguyên, Content Provider và các gói.
- android.view: View là lớp giao diện người dùng cơ bản nhất. Tất cả
giao diện người dùng được tạo ra đều phải sử dụng một tập các View để
cung cấp cho các thành phần tương tác người dùng.
- android.widget: Xây dựng dựa trên gói View. Những lớp widget những
thành phần giao diện được tạo sẵn được sử dụng để tạo nên giao diện
người dùng. Các widget bao gồm danh sách, nút bấm, hộp nhập, các kiểu
trình bày (layout).
- com.google.android.maps: Bộ API mức cao cung cấp truy cập đến điều
khiển bản đồ sẵn trong Android từ ứng dụng được xây dựng. Bao gồm cả
lớp MapView cũng như Overlay và MapController để tương tác với bản
đồ bên trong ứng dụng.
- android.provider: Để tạo thuận lợi cho người phát triển truy cập đến các
Content Provider tiêu chuẩn (như là dữ liệu danh bạ), gói cung cấp

ĐẠI HỌC HÙNG VƯƠNG


(Provider) bao gồm các lớp cho phép truy cập đến cơ sở dữ liệu chuẩn
trong tất cả các bản phân phối Android.
- android.telephony: Các API điện đàm cung cấp khả năng tương tác trực
tiếp với tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi
các cuộc gọi, tình trạng các cuộc gọi và tin nhắn SMS.
- android.webkit: Gói WebKit cung cấp các API để làm việc với các nội
dung Web-based bao gồm một lớp WebView để tạo ra giao diện web,
nhúng trong ứng dụng và một trình quản lý cookie.
Cùng với các API của Android, cịn có một tập các thư viện C/C++ như:

- OpenGL: Thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn
OpenGLES 1.0 API.
- FreeType: Hỗ trợ xử lý bitmap và font vector.
- GGL: Thư viện cơ bản, dùng để cung cấp các engine đồ họa 2D.
- Libc: Thư viện C chuẩn, được tối ưu cho các thiết bị Linux-based.
- SQLite Engine: Cơ sở dữ liệu quan hệ gọn nhẹ, dùng để lưu trữ dữ liệu
của ứng dụng.
- SSL: Hỗ trợ sử dụng giao thức mã hóa Secure Sockets Layer trong bảo
mật truyền thơng Internet.
Ngồi các thư viên chuẩn của Android, để đáp ứng tiêu chí phù
hợp với nhiều thiết bị khác nhau, Android cịn có thể có các API phụ
thuộc thiết bị như android. Location, android. Media, android. Open GL,
android. Hardware…
1.4.2.3 Android Runtime

Hình 1.5 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
ĐẠI HỌC HÙNG VƯƠNG


như JAVA IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik
Virtual Machine).
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của
hệ điều hành Android không được chạy bằng JRE(Java Runtime Enviroment)
của Sun (nay là Oracle)(JVM) mà là chạy bằng máy ảo Dalvik (máy ảo dalvik
được đặt tên sau khi một nhà phát triển phần mềm của Google tạo ra nó sau khi
đi thăm một ngôi làng ở nơi tổ tiên ông sinh sống) do Google phát triển, máy
ảo davik thực thi cái tập tin davik(dex), khác với java là chuyển sang dạng

bytecode. Định dạng này được tối ưu hóa cho bộ nhớ tối thiểu.
1.4.2.4. Khung ứng dụng

Hình 1.6 Khung ứng dụng
Kiến trúc của Android khuyến khích khái niệm thành phần sử dụng lại,
cho phép công bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng
khác với quyền truy cập được quản lý bởi khai báo.
Cơ chế đó cho phép người lập trình tạo ra một trình quản lý danh bạ hoặc
trình quay số điện thoại mà có các thành phần người khác có thể tạo mới giao
diện và mở rộng chức năng thay vì tạo lại chúng.
Những dịch vụ sau là những dịch vụ kiến trúc cơ bản nhất của tất cả các
ứng dụng, cung cấp một framework cho mọi mọi phần mềm được xây dựng:
- Actitvity Manager: Điều khiển vòng đời của các Activity bao gồm cả
quản lý các tầng Activity.
- Views: Được sử dụng để tạo lập các giao diện người dùng cho Activity.
- Notification Manager: Cung cấp một cơ chế cố định và quy củ cho việc
gửi các thông báo đến người dùng.
- Content Provider: Cho phép ứng dụng chia sẻ dữ liệu giữa các ứng dụng.
- Resource Manager : Hỗ trợ các thành phần không thuộc mã nguồn như
là chuỗi ký tự đồ họa được đặt bên ngoài.
1.4.2.5 Các thành phần của một ứng dụng Android

ĐẠI HỌC HÙNG VƯƠNG


Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản
sau:
 Activities.
 Services.
 Broadcast Receivers.

 Content Provider.
Ngoài ra còn một số thành phần khác. Các thành phần này khơng nhất
thiết phải có mặt đầy đủ trong ứng dụng.
Chúng ta có thể xem các thành phần nào được sử dụng trong ứng dụng
bằng việc xem khai báo trong file AndroidManifest.xml.
 Hoạt động (Activity)
Một hoạt động là một giao diện người dùng trực quan mà người dùng có thể
thực hiện trên đó mỗi khi được kích hoạt. Một ứng dụng có thể có nhiều hoạt
động và chúng có thể gọi qua lại lẫn nhau. Mỗi Activity là một dẫn xuất của
lớp android.app.Activity.
Mỗi hoạt động có một cửa sổ để vẽ lên. Thơng thường cửa sổ này phủ đầy
màn hình, ngồi ra nó cũng có thể có thêm các cửa sổ con khác như là hộp
thoại…Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp
bậc các View (là đối tượng của lớp Views).
Các hoạt động trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn
xếp. Khi có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp,
chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái
chờ. Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi
tạo kết thúc việc thực thi.
Một Activity có 3 trạng thái chính:
 Active hoặc running khi nó ở trên nhất màn hình và nhận tương tác
người dùng.
 Paused khi Activity khơng cịn là trọng tâm trên màn hình nhưng vẫn
hiện thị trước người dùng.
 Stopped khi một Activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng
thái Stopped.

ĐẠI HỌC HÙNG VƯƠNG



Tuy nhiên, nó vẫn cịn lưu trữ tồn bộ thơng tin trạng thái và nó thường
bị hệ thống đóng lại khi có tình trạng thiếu bộ nhớ. Khi chuyển giữa các trạng
thái, ứng dụng sẽ gọi các hàm callback ứng với các bước chuyển:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
oid onPause()
void onStop()
void onDestroy()
Biểu đồ sau mơ tả trạng thái trong vịng đời của một hoạt động. Hình chữ
nhật thể hiện các phương thức Callback mà chúng ta có thể khai báo để gọi
thực thi một số thao tác khi hoạt động chuyển sang trạng thái khác (phương
thức Callback là phương thức được gọi lại bởi một phương thức khác khi có
một sự kiện xảy ra). Các trạng thái chính của một hoạt động được thể hiện bởi
các hình viên thuốc.
Vịng đời của một hoạt động có thể được thể hiện trong những q trình
sau:

Hình 1.7 Vịng đời của một activity

ĐẠI HỌC HÙNG VƯƠNG


Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới
phương thức onCreate(Bundle) tới lời gọi phương thức onDestroy().
Trong quá trình này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên
cần sử dụng trong phương thức onCreate() và giải phóng chúng khi phương
thức onDestroy() được thực thi.
Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới

phương thức onStart(), cho tới khi phương thức onStop() của nó được thực thi.
Tồn bộ các tài ngun đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu
giữ, người dùng có thể thấy giao diện nhưng khơng tương tác được với hoạt
động do trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh.
Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi có
lời gọi tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức
onPause(). Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác
với người dùng.
 Dịch vụ (Service)
Một dịch vụ (Service) là các đoạn mã được thực thi ngầm bởi hệ thống mà
người sử dụng không thấy được. Mỗi service đều được mở rộng từ lớp cơ sở là
service trong gói android.app. Có thể kết nối tới hoặc kích hoạt một Service
thơng qua interface mà Service đưa ra.Ví dụ như một chương trình chơi nhạc,
sẽ có vài hoạt động cho phép người dùng duyệt danh sách các bài hát và lựa
chọn bài nào để phát. Tuy nhiên, chức năng chơi nhạc không được thiết kế như
một hoạt động bởi chúng ta sẽ muốn chuyển qua cửa sổ khác, như khi soạn tin
nhắn thì bài nhạc vẫn tiếp tục được chơi. Trong trường hợp này, ứng dụng chơi
nhạc sẽ khởi tạo một dịch vụ bằng cách sử dụng phương thức:
Context.startService()
Một ứng dụng có thể dễ dàng thực hiện liên kết tới một dịch vụ đang chạy
bằng phương thức Context.bindService(). Khi đó dịch vụ này sẽ cung cấp cho
ứng dụng cơ chế để giao tiếp với chúng thông qua giao diện gọi là IBinder (đối
với dịch vụ chơi nhạc có thể cho phép dừng hoặc chuyển qua bài nhạc kế tiếp).
Vòng đời của một dịch vụ được hiểu là quá trình hoạt động từ khi nó được
tạo ra cho tới khi bị loại khỏi hệ thống. Có hai cách thức để một dịch vụ có thể
được chạy trong hệ thống. Khi hệ thống có lời gọi tới phương thức
Context.startService(). Trong trường hợp này, dịch vụ sẽ được thực hiện liên

ĐẠI HỌC HÙNG VƯƠNG



tục cho tới khi hệ thống gọi phương thức Context.stopService(). Khi các ứng
dụng gọi phương thức Context.bindService() để tạo kết nối với dịch vụ. Ứng
dụng sẽ nhận được một đối tượng IBinder do dịch vụ trả lại để có thể gọi các
phương thức Callback phù hợp để truy cập tới các trạng thái của dịch vụ. Nếu
do lời gọi Context.bindService() mà dịch vụ được khởi tạo thì nó sẽ được thực
thi cho tới khi nào kết nối trên (tức là đối tượng IBinder) vẫn cịn tồn tại.

Hình 1.8 Sơ đồ chuyển trạng thái của service
 Bộ nhận quảng bá (Broadcast Receivers)
Bộ nhận quảng bá có chức năng nhận và phản hồi lại các thơng báo
quảng bá. Nhiều quảng bá có nguồn gốc từ mã hệ thống, ví dụ thơng báo thay
đổi múi giờ, pin yếu, ảnh đã chụp hay thay đổi ngơn ngữ. Các ứng dụng có thể
khởi động quảng bá, ví dụ để các ứng dụng khác biết rằng dữ liệu đã được tải
về xong trên thiết bị và sẵn sàng sử dụng.
Một ứng dụng có thể có bất kỳ số lượng bộ nhận quảng bá nào để nhận
những thơng báo quan trọng với nó. Tất cả các bộ nhận quảng bá được kế thừa
từ lớp BroadcastReceiver.
Bộ nhận quảng bá khơng có giao diện. Tuy nhiên, chúng có thể khởi
động một hoạt động để đáp lại thông tin mà nó nhận được, hay chúng có thể sử
dụng Notification Manager để thông báo người dùng biết.

ĐẠI HỌC HÙNG VƯƠNG


Các thơng báo có thể được sự chú ý của người dùng theo các cách các
nhau như là sáng màn hình, rung thiết bị, bật âm thanh nào đấy…Thơng
thường, chúng đặt thông báo trên thanh trạng thái, nơi người dùng có thể nhận
được thơng báo.
 Content Provider

Các ứng dụng có thể lưu trữ dữ liệu của mình trong các tập tin hoặc sử dụng
cơ sở dữ liệu SQLite sẵn có v.v… Content Provider có chức năng cung cấp một
tập hợp các phương thức cho phép một ứng dụng có thể lưu trữ và lấy dữ liệu
được quản lý bởi content provider đó.
Content Provider là một đặc trưng riêng của Android, nhờ đó mà các ứng
dụng có thể chia sẻ dữ liệu với nhau một cách dễ dàng.
 Các Intent
Content Provider được kích hoạt khi chúng được gọi từ một Content Resolv
er. Ba thành phần khác (hoạt động, dịch vụ và bộ nhận quảng bá) được kích
hoạt bởi thơng điệp khơng đồng bộ từ các Intent. Một Intent là một đối tượng
có kiểu Intent chứa nội dung của thơng điệp. Với các hoạt động và dịch vụ, nó
gọi tên hành động được yêu cầu và xác định URI của dữ liệu tác động tới ở
giữa. Ví dụ, nó có thể truyền tải một yêu cầu cho một hoạt động hiển thị một
ảnh cho người dùng hay cho phép người dùng sửa văn bản. Với bộ nhận quảng
bá, đối tượng Intent gọi tên của hành động được thơng báo. Ví dụ, bộ nhận
quảng bá có thể thơng báo các phần nó quan tâm là nút chụp ảnh đã được bấm.
Có vài phương thức cho việc kích hoạt mỗi thành phần.
Một hoạt động được khởi chạy thông qua một đối tượng Intent Context.s
tartActivity() hay Activity.startActivityForResult(). Hoạt động đáp lại có thể
theo dõi Intent được tạo ra bằng phương thức getIntent() và cập nhật thông qua
phương thức setIntent(Intent). Android gọi phương thức onNewIntent() để bỏ
qua các Intent đến trước nó.
Một hoạt động thường bắt đầu hoạt động khác. Nếu nó muốn trả lại kết quả
hoạt động nó đã khởi chạy, nó sẽ gọi phương thức: startActivityForRe sult()
thay cho phương thức startActivity().
Ví dụ, nếu nó khởi chạy một hoạt động mà cho phép người dùng lấy một
ảnh, nó có thể muốn lấy kết quả của ảnh được chọn. Kết quả được trả về trong
một đối tượng Intent thông qua phương thức onActivityResult().

ĐẠI HỌC HÙNG VƯƠNG



Một dịch vụ được bắt đầu thông qua một đối tượng Intent là Context.
startService(). Android gọi phương thức onStart() của dịch vụ và thơng qua đối
tượng Intent của nó.
Tương tự, một Intent có thể thơng qua Context.bindService() để thiết lập
một kết nối liên tục giữa các thành phần và dịch vụ đích. Dịch vụ nhận đối
tượng Intent qua lời gọi onBind().
Cho ví dụ, một hoạt động có thể thiết lập kết nối với dịch vụ chơi nhạc đề
cập ở phần trước để nó có thể cung cấp cho người dùng giao diện sử dụng để
điều khiển chơi lại. Hoạt động sẽ gọi bindService để thiết lập kết nối và sau đó
gọi phương thức đã định nghĩa bởi dịch vụ để áp dụng chơi lại ca khúc.
Một ứng dụng có thể khởi tạo một quảng bá thông qua đối tượng Intent bằng
phương thức như:
Context.setBroadcast(),Context.setOrderedBroadcast(),
Context.sendS tickyBroadcast().
Android chuyển những Intent tới tất cả các bộ nhận quảng bá nào quan tâm
bằng việc gọi phương thức onReceive() của nó.
 Tập tin khai báo (Manifest File)
Trước khi có thể khởi chạy một ứng dụng thành phần, nó phải xem ứng
dụng bao gồm những thành phần nào. Thêm nữa, các ứng dụng khai báo các
thành phần của nó trong một tập tin khai báo để đóng gói lại vào trong gói
Android (tập tin .apk chứa các mã nguồn, tập tin và tài nguyên).
Tập tin này có cấu trúc của tập tin XML và ln có tên là AndroidManif
est.xml trong mọi ứng dụng.
Tập tin này thực hiện một số chức năng như thêm và khai báo các thành
phần của ứng dụng, tên các thư viện ứng dụng cần liên kết tới (ngoài thư viện
chuẩn của Android) và xác định các quyền cho ứng dụng.
Tuy nhiên, nhiệm vụ chính của tập tin khai báo là khai báo các thành phần
của ứng dụng. Một hoạt động có thể được khai báo như sau:

<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
<application . . . >
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
ĐẠI HỌC HÙNG VƯƠNG


×