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

Xây dựng ứng dụng hỗ trợ dạy học cho trẻ em trên 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.08 MB, 62 trang )

TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2
KHOA CÔNG NGHỆ THÔNG TIN

TRƯƠNG MINH THU

XÂY DựNG ỨNG DỤNG
HỖ TRỢ DẠY HỌC CHO TRẺ EM
TRÊN HỆ ĐIỀU ÍỈÀNH ANDROID

KHÓA LUÂN TỐT NGHIÊP ĐAI HOC






Chuyên ngành: Sư phạm Tin học

HÀ N Ộ I-N Ă M 2016




TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2
KHOA C ồN G NGHỆ THÔNG TIN

TRƯƠNG MINH THU

XÂY DựNG ỨNG DỤNG
HỎ TRỢ DẠY HỌC CHO TRẺ EM
TRÊN HỆ ĐIỀU HÀNH ANDROID



KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC








C huyên ngành: Sư phạm Tin học

Người hướng dẫn khoa học:
Th.s Nguyễn Minh Hiền

HÀ NỘI - NĂM 2016


LỜI CẢM ƠN
Lời đầu tiên, em xin được gửi lòi cảm ơn chân thành và sâu sắc nhất đến
cô giáo, Th.s Nguyễn Minh Hiền, người đã trực tiếp hướng dẫn và chỉ bảo
tận tình trong suốt thời gian qua để em có thể hoàn thành khóa luận này.
Trong quá trình được cô hướng dẫn, em đã học hỏi được nhiều kiến thức bổ
ích và kinh nghiệm quý báu làm nền tảng cho quá trình học tập, làm việc và
nghiên cứu sau này.
Em cũng xin gửi lời cảm ơn tới các thầy, cô giáo trong khoa Công nghệ
Thông tin trường Đại học Sư phạm Hà Nội 2 đã tận tình giảng dạy, chỉ bảo,
trang bị cho chúng em những kiến thức cần thiết nhất trong suốt quá trình
học tập và nghiên cứu tại trường, đã tạo mọi điều kiện giúp em thực hiện đề
tài tốt nghiệp này.

Em đã nỗ lực cố gắng với quyết tâm cao để thực hiện đề tài này, nhưng
do còn nhiều hạn chế về trình độ cũng như thời gian thực hiện nên đề tài
không tránh khỏi những thiếu sót. Em kính mong nhận được sự chỉ bảo, góp
ý của thầy cô và các bạn
Hà Nội, tháng 05 năm 2016
Sinh viên

Trương Minh Thu


LỜI CAM ĐOAN
Em xin cam đoan đề tài “Xây dựng ứng dụng hỗ trợ dạy học cho trẻ em
trên hệ điều hành Android” là kết quả nghiên cứu của riêng em dưới sự
hướng dẫn của cô giáo, Th.s Nguyễn Minh Hiền.
Các số liệu, những kết luận nghiên cứu được trĩnh bày ừong khóa luận
này trung thực và chưa từng được công bố dưới bất cứ hình thức nào.
Nếu sai em xin hoàn toàn chịu trách nhiệm.
Hà Nội, tháng 05 năm 2016
Người cam đoan

Trương Minh Thu


MỤC LỤC
MỞ ĐÀU........................................................................................................ 1
1.

Lý do chọn đề tài.................................................................................. 1

2.


Mục đích nghiên cứu............................................................................2

3.

Nhiệm vụ nghiên cứu...........................................................................2

4.

Đối tượng và phạm vi nghiên cứu........................................................ 2

5.

Ý nghĩa khoa học và thực tiễncủa đề tà i.............................................. 2

6.

Phương pháp nghiên cứu...................................................................... 3

7.

Cấu trúc khóa luận................................................................................3

CHƯƠNG 1: C ơ SỞ LÝ THUYẾT............................................................. 4
1.1.

Tổng quan về Android..................................................................... 4

1.1.1.


Lịch sử Android........................................................................... 4

1.1.2.

Delving với máy ảo Dalvik..........................................................5

1.1.3.

Kiến trúc của Android..................................................................5

1.1.4.

Các thành phần trong một Android Project.................................. 8

1.1.5.

Chu kì ứng dụng Android.............................................................9

1.1.6.

Content Provider và URI............................................................ 14

1.1.7.

Background Service...................................................................15

1.1.8.

Telephony...................................................................................18


1.2.

Lý thuyết áp dụng...........................................................................18

1.2.1.

View........................................................................................... 18

1.2.2.

ViewGroup................................................................................ 19

1.2.3.

Button........................................................................................22

1.2.4.

ImageButton.............................................................................. 22

1.2.5.

ImageView................................................................................. 22

1.2.6.

ListView.................................................................................... 22

1.2.7.


TextView................................................................................... 23

1.2.8.

EditText..................................................................................... 23

1.2.9.

CheckBox.................................................................................. 23

1.2.10. ContextMenu.............................................................................23
1.2.11. Quick Search Box.....................................................................24
1.2.12. Activity và Intent......................................................................25


CHƯƠNG 2: PHÂN TÍCH HỆ THÓNG....................................................28
2.1.

Khảo sát hệ thống..........................................................................28

2.1.1.

Khảo sát hệ thống....................................................................... 28

2.1.2.

Xác định yêu cầu hệ thống......................................................... 36

2.2.


Phân tích hệ thống.........................................................................37

2.2.1.

Xác định các actor và use - case chính.......................................37

2.2.2.

Biểu đồ use - case tổng quát...................................................... 38

2.2.3.

Biểu đồ use - case học chữ cái và chữ số...................................39

2.2.4.

Biểu đồ use - case chức năng nhận biết các vật......................... 39

2.2.5.

Biểu đồ use - case chức năng tập viết.........................................40

2.2.6.

Biểu đồ use - case chức năng trò chơi........................................40

CHƯƠNG 3: THIẾT KẾ HỆ THỐNG.......................................................42
3.1.

Thiết kế với UML..........................................................................42


3.1.1.

Biểu đồ lớp.................................................................................42

3.1.2.

Biểu đồ tuần tự ...........................................................................42

3.1.3.

Cơ sở dữ liệu..............................................................................44

3.2.

Chương trình ứng dụng.................................................................44

3.2.1.

Các chức năng chính của chương trình.......................................44

3.2.2.

Mô tả các giao diện của ứng dụng..............................................45

KẾT LUÂN VÀ HƯỚNG PHÁT TRIỂN...................................................52
1.

Kết quả đạt được................................................................................ 52


1.1.

về lý thuyết...................................................................................52

1.2.

về chương trình.............................................................................52

1.2.1. Ưu điểm.....................................................................................52
1.2.2. Nhược điểm................................................................................ 52
2.

Hướng phát triển.................................................................................53

TÀI LIỆU THAM KHẢO........................................................................... 54


DANH MỤC BẢNG BIỂU


Bảng 1.1: Các thuộc tính của Intent......................................................... 26
Bảng 1.2: Các Action đã được định nghĩa sẵn trong Intent...................... 27
Bảng 2.1: Danh sách các actor................................................................. 37
Bảng 2.2: Danh sách các use - case..........................................................37
Bảng 3.1: Mô tả các trường của cơ sở dữ liệu..........................................44
Bảng 3.2: Các chức năng của chương trình..............................................44


DANH MỤC HÌNH VẼ
Hình 1.1: Android timeline...................................................................... 4

Hình 1.2: Cấu trúc hệ thống Android......................................................... 6
Hình 1.3: Chu kì sống một thành phàn.....................................................10
Hình 1.4: Activity stack......................................................................... 10
Hình 1.5: Chu kỳ sống của Activity.......................................................... 11
Hình 1.6: Các sự kiện trong một chu kì ứng dụng.................................... 12
Hình 1.7: Chu kì sống chi tiết của một Activity.......................................14
Hình 1.8: Vòng đời của Services............................................................17
Hình 1.9: Cấu trúc một giao diện ứng dụng Android............................... 18
Hình 1.10: Bố trí các widget sử dụng LinearLayout................................ 19
Hình 1.11: Bố trí các widget trong FrameLayout.....................................20
Hình 1.12: Bố trí widget ừong RetaliveLayout........................................21
Hình 1.13: Bố trí widget trong TableLayout.............................................21
Hình 1.14: ImageButton..........................................................................22
Hình 1.15: Minh hoạ cho một ListView.................................................. 23
Hình 1.16: Minh hoạ ContextMenu......................................................... 24
Hình 1.17: Minh hoạ Quick Search Box................................................. 25
Hình 1.18: Truyền dữ liệu giữa 2 Activity............................................... 26
Hình 2.1: Hiệu quả của phương pháp giáo dục Montessori....................31
Hình 2.2: Sự khác nhau giữa phương pháp giáo dục Montessori và
phương pháp giáo dục truyền thống.......................................................32
Hình 2.3: Chương trình học cho trẻ từ 0-3 tuổi của trường Mầm non Quốc
tế Sakura Montessori............................................................................. 33
Hình 2.4: Chương trình học cho trẻ từ 3-6 tuổi của trường Mầm non Quốc
tế Sakura Montessori............................................................................. 33
Hình 2.5: Một ngày đi học của bé ở trường Mầm non Kidlinks.............34
Hình 2.6: Biểu đồ use - case tổng quát..................................................38
Hình 2.7: Biểu đồ use - case học chữ cái và chữ số............................... 39


Hình 2.8: Biểu đồ use - case nhận biết các v ật.......................................39

Hình 2.9: Biểu đồ use - case tập viết........................................................40
Hình 2.10: Biểu đồ use - case hệ thống trò chơi.................................... 41
Hình 3.1: Biểu đồ lớp............................................................................... 42
Hình 3.2: Biểu đồ tuần tự chochức năng học chữ cái chữ số....................42
Hình 3.3: Biểu đồ tuần tự trò chơi tìm chữ cái.......................................43
Hình 3.4: Biểu đồ tuần tự ttò chơi trí tuệ..................................................43
Hình 3.5: Giao diện chính của chương trình............................................45
Hình 3.6: Chức năng dạy bé học chữ cái và chữ số.................................. 47
Hình 3.7: Chức năng nhận diện đồ vật.....................................................48
Hình 3.8: Chức năng tập viết................................................................... 48
Hình 3.9: Giao diện trò chơi.................................................................... 49
Hình 3.10: Trò chơi tìm chữ cái............................................................... 50
Hinh 3.11: Trò chơi chọn ảnh ghép chữ....................................................50
Hình 3.12: Trò chơi trí tuệ cho trẻ 4-6 tuổi............................................... 51


MỞ ĐÀU
1. Lý do chọn đề tài
Smartphone hay những thiết bị di động thông minh hiện đang là một
phần không thể thiếu của cuộc sống hiện đại ngày nay. Luôn là thứ hiện hữu
và đồng hành khắp nơi bạn đến, chính smartphone là một ữong những thiết
bị khiến cuộc sống trên thế giới thay đổi nhiều nhất. Với khả năng di động
và những tiện ích hiệu quả, smartphone đang tạo nên những thay đổi tích
cực đến cuộc sống con người, qua đó số ngưòi sử dụng smartphone cũng
ngày càng phát triển đông đảo hơn vì một chiếc smartphone hiện nay có thể
đảm đương mọi công việc mà trước kia chỉ có máy tính mới làm được.
Các sản phẩm smartphone hay tablet là các thiết bị giải trí, tương tác
thông tin đang được tiêu thụ và sử dụng rộng rãi ừong cuộc sống hiện đại
ngày nay. Không chỉ những người lớn tuổi yêu thích công nghệ đều sở hữu
máy tính bảng để phục yụ cho nhu cầu của mình mà ngay cả các ừẻ em nhỏ

tuổi cũng được cha mẹ ữang bị cho thiết bị này để học tập và giải trí. Nhiều
nghiên cứu khoa học đã chứng minh sử dụng các thiết bị smartphone hay
tablet thường xuyên sẽ gây tác động tích cực lẫn tiêu cực lâu dài về nhận
thức của trẻ em. Một số ứng dụng về giáo dục trên máy tính bảng có khả
năng ảnh hưởng tích cực tới trí nhớ và khả năng tiếp thu kiến thức của trẻ
trong giai đoạn phát triển. Với các chương trình giảng dạy hay tự học dành
cho trẻ trên máy tính bảng mà điển hình là iPad có mức độ tương tác cao
hơn nhiều so với các chương trình trên tivi.
Ra đời đã thấm thoắt 8 năm kể từ năm 2007, mặc dù phải đối mặt với vô
số thách thức trên con đường phát triển, Android hiện đang lớn mạnh và có
ưu thế hơn bao giờ hết trên thị trường hệ điều hành dành cho điện thoại
thông minh.
Vói sự lớn mạnh và phát triển vượt bậc trong những năm gàn đây, hệ
điều hành Android đã cho thấy được thế mạnh của mình trong các thiết bị
smartphone. Các ứng dụng, phàn mềm phát triển trên Android ngày càng
1


nhiều, và mục đích của các ứng dụng ngày càng đáp ứng được yêu cầu của
người dùng. Vì vậy em đã quyết định lấy Android làm nền tảng cho đề tài
của mình. Qua quá trình tìm hiểu về các ứng dụng dạy học cho trẻ em trên
điện thoại sử dụng hệ điều hành Android và những xu hướng mới về sự tiếp
cận công nghệ thông tin của các bé, cũng như được sự giúp đỡ của cô giáo
hướng dẫn, em đã chọn đề tài “Xây dựng ứng dụng hỗ trợ dạy học cho
trẻ em trên hệ điều hành Android” làm đề tài tốt nghiệp.
2. Mục đích nghiên cứu
Xây dựng ứng dụng hỗ trợ dạy học cho trẻ em trên hệ điều hành
Android với giao diện thân thiện, dễ sử dụng và đầy đủ chức năng.
3. Nhiệm vụ nghiên cứu
- Xây dựng cơ sở lý thuyết

- Khảo sát thực tế
- Đề xuất các chức năng cho ứng dụng
- Xây dựng ứng dụng
4. Đổi tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Hệ điều hành Android và ứng dụng hỗ trợ
dạy học cho trẻ em
- Phạm vi:

ứng dụng hỗ ừợ dạy học cho trẻ em trên hệ điều hành

Android
5. Ý nghĩa khoa học và thực tiễn của đề tài
• Ý nghĩa khoa học
Hệ điều hành Android ra đời, phát triển và có cơ sở khoa học vững
chắc giúp cho việc xây dựng ứng dụng trên thiết bị di động thông
minh trở nên dễ dàng. Hiện nay, việc xây dựng ứng dụng hỗ trợ dạy
học cho ừẻ em ừên hệ điều hành Android bao gồm nhiều chức năng
đang được các lập trình viên và các nhà phát triển ứng dụng quan tâm
và phát triển

2


• Ý nghĩa thực tiễn
ứng dụng hỗ ừợ dạy học cho trẻ em được xây dựng thành công sẽ
giúp cho trẻ phát triển được sớm các kỹ năng của mình và nâng cao
tư duy hiểu biết, trí thông minh của mình
6. Phương pháp nghiên cứu
• Phương pháp nghiên cứu lí luận
Nghiên cứu qua việc đọc sách, báo, tài liệu liên quan nhằm xây dựng

cơ sở lý thuyết của đề tài và các biện pháp cần thiết để giải quyết các
vấn đề của đề tài.
• Phương pháp thực nghiệm
Thông qua quan sát thực tế, yêu cầu của cơ sở những lí luận được
nghiên cứu, chương trình sẽ được đưa vào dạy thử nghiệm cho trẻ em
dưới 6 tuổi.
7. Cấu trúc khóa luận
Chưong 1: Cơ sở lý thuyết
Chương 2: Phân tích hệ thống
Chưong 3: Thiết kế hệ thống

3


CHƯƠNG 1: C ơ SỞ LÝ THUYẾT
1.1.

Tổng quan về Android

1.1.1. Lịch sử Android
Android là một hệ đỉều hành dựa trên nền tảng Linux được thiết kế dành
cho các thiết bị di động có màn hình cảm ứng như smartphone và tablet. Ban
đầu, Android được phát triển bởi Tổng công ty Android với sự hỗ trợ tài
chính từ Google và sau này được chính Google mua lại vào năm 2005. Các
thành viên chủ chốt tại Tổng công ty Android gồm có: Andy Rubin, Rich
Miner, Nick Sears, và Chris White.
2DỌ8

2008
2007

2005



T-MobilaGI Announced I

2008

I

2QQ8

SDK 1,0 Reteased

I

AndroidOpanSsurcsd

2007

2007

ОНА Announced

Early Look S3K

2005

I


Google Buys Android Inc. I

2005
Wbrk on Dahrik VWI Starts

Hình 1.1: Androỉd tỉmeỉỉne
Sau đó, vào cuối 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 các nhiều công ty trong đó có
Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn
Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics,
SprintNextel, T-Mobile... được ửià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. 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.
Android bắt đầu với bản beta đầu tiên vào tháng 11 năm 2007 và phiên
bản thương mại đầu tiên - Android 1.0 được công bố tháng 9 năm 2008. Kỷ
nguyên của Android chính thức bắt đầu vào tháng 10 năm 2008 khi chiếc
điện thoại T-Mobile GI được công bố, chiếc smartphone đầu tiên dựa trên
4


nền tảng Android. Tiếp nối phiên bản đầu tiên, Android 1.1 là phiên bản
nâng cấp được tung ra vào tháng 2 năm 2009 nhưng gần như không có sự
thay đổi về giao diện và chỉ chú trọng vào việc sửa lỗi. Được công bố vào
tháng 4 năm 2009 cùng vói một số tính năng mới, Android 1.5 (Cupcake)
được đánh dấu là phiên bản đầu tiên được chính thức đặt tên theo bánh kẹo
và chủ đề này tiếp tục được sử dụng để đặt tên cho các phiên bản về sau.
1.1.2. Delving với máy ảo Dalvỉk
Google đã chọn Java làm ngôn ngữ phát triển ứng dụng cho hệ điều hành
Android, tuy nhiên lại phát triển một máy ảo riêng - máy ảo Dalvik và tập

thư viện Java chuẩn được viết lại và thu gọn hơn. ứng dụng Android được
phát triển bằng ngôn ngữ Java, sau đó được biên dịch thành dạng mã nhị
phân Java (Java bytecode). Các file nhị phân .class (tương thích với máy ảo
Java) này sẽ được chuyển đổi thành một file nhị phân dùng cho máy ảo
Dalvik - .dex (Dalvik Executable) trước khi được cài lên thiết bị. Các tập
tin .dex được thiết kế để phù họp hơn với các thiết bị hạn chế về bộ nhớ
cũng như hiệu năng xử lý. Dalvik đã được thiết kế và viết bởi Dan Bomstein.
1.1.3. Kiến trúc của Android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành
Android.

5


A P P L IC A T IO N S
Home

Cantaeis

Phene

Browser

'**
"•

A

Telephony
Manager


L

r a m e w o r k

W indow
Manager

Activity ManigÊr

Package Manager

F

p p l ic a t io n

Resource
Manager

Location
Manager

A

ib r a r ie s

Media
Framework

SQLĩtệ


O penG L 1ES

FreeType

W eb Kit

SGL

SSL

libc

Msrsgor

View
System

Cornent
Providers

L IN U X

Notification
Manager

n d r o id

R


u n t im e

Сфч

Dalvift Virũía!
fia ell ine

K E R N E L

Display
D iv e r

Camera Drrver

Flash Memory
D river

Binder (IPC)
Drtrèr

Keypad Driver

W iFi Driver

Audio
Drivers

Power
Management


Hình 1.2: Cấu trúc hệ thắng Android
• Applications
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng
như gọi điện (Phone), quản lý danh bạ (Contacts), duyệt Web (Browser),
nhắn tin (SMS), lịch làm việc (Calendar), đọc E-mail (Email-CIient), bản
đồ (Map), quay phim chụp ảnh (Camera)...đều được viết bằng ngôn ngữ
Java. Người dùng có quyền gỡ bỏ hay cài đặt thêm các ứng dụng tùy thích
ở tầng này (như phần mềm chứng khoán, ừò choi, từ điển...).
• Application framework
Đằ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, các dịch vụ chạy nền, thiết lập hệ thống báo động,
thêm các thông báo các thanh trạng thái,...
Nhà phát triển có thể truy cập vào các giao diện lập trình ứng dụng
(Application Programming Interface) cùng một khuôn khổ được sử dụng
6


bởi các ứng dụng lõi. Các kiến trúc ứng dụng được thiết kế để đơn giản hóa
việc sử dụng lại các thành phần.
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:
- View System: 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, linearlayout,...
- Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng
như cung cấp công cụ để điều khiển các Activity
- Telephony Manager:


Cung cấp công cụ để thực hiện việc liên lạc

(như gọi điện thoại)
- Location Manager: Cho phép xác định vị trí của điện thoại dựa vào
hệ thống định vị toàn càu GPS và Google Maps
- Window Manager: Quản lý việc xây dựng và hiển thị các giao diện
người dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng
- Notifycation Manager: Quản lý việc hiển thị các thông báo (như báo
có tin nhắn mới, email mới)
- Resource Manager:

Quản lý tài nguyên tĩnh của các ứng dụng

(những thành phần không được viết bởi ngôn ngữ lập trình như file
hình ảnh, âm thanh, layout, string)
- 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 (chẳng hạn như Contacts) hoặc là chia sẻ dữ
liệu giữa các ứng dụ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 ừong hệ thống Android. Điều này được thể hiện
thông qua nền tảng ứng dụng Android. Một số các thư viện cơ bản được liệt
kê dưới đây:
- System c library
- Media Libraries


- Surface Manager
- LibWebCore
- SGL

- 3D libraries
- FreeType
- SQLite
• Android Runtime
Android Runtime là môi trường cho các ứng dụng Android có thể chạy
được, bao gồm các thư viện lõi Android (gàn như tương đồng với thư viện
lõi của ngôn ngữ Java), các thư viện dành riêng cho Android, và máy ảo
Dalvik.


Linux kernel

Hệ điều hành Android được phát triển dựa trên Linux phiên bản 2.6. Tất
cả mọi hoạt động của điện thoại muốn thi hành được đều thực hiện ở mức
cấp thấp. Ở lớp này bao gồm dịch vụ cốt lõi như quản lý bộ nhớ (Memory
Management), giao tiếp vói phần cứng (Driver Model), thực hiện bảo mật
(Security), quản lý tiến trình (Process Management). Linux Kernel hoạt
động như một lớp trừu tượng hóa giữa phần cứng và phần mềm còn lại của
hệ thống.
1.1.4. Các thành phần trong một Android Project
Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản:
- Activities
- Services
- Broadcast Receivers
- Content Provider
Các thành phần này không nhất thiết phải có mặt đầy đủ ưong ứ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.

8



• 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 (Software Developes Kit) cũng như main
activity sẽ chạy đầu tiên. File này được tự động sinh ra khi tạo một Android
project và có 3 thành phần chính đó là: application, permission và version.
- 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
- Permission: Bao gồm các thuộc tính chỉ định quyền truy xuất và sử
dụng tài nguyên của ứng dụng
- SDK version: Thẻ xác định phiên bản SDK
• FileR.java
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 ừong ứng dụng. Có thể nói file R.java
hoàn toàn không cần phải đụng đến trong cả quá trình xây dựng ứng dụng.
1.1.5. Chu kì ứng dụng Android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho
ứng dụng khi codes cần được chạy và sẽ còn chạy cho đến khi:
- Nó không phụ thuộc
- Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ bản của Android là thòi gian sống

của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó. Thay
vào đó, nó được xác định bởi hệ thống qua một kết hợp của:
- Những phần của ứng dụng mà hệ thống biết đang chạy
- Những phần quan trọng như thế nào đối với người dùng
9


- Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống


Chu kỳ sáng thành phần

Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ
lúc bắt đầu khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có
thể là active hoặc inactive, hoặc là ừong trường hợp activies nó có thể visible
hoặc invisible.

End

Activity Stack

Activity mởi
được khởi tạo

Nút nhán Back được nhán
Hoặc Activity đang chạy được đớng

Activity Stack
Những Activity


Được chuyền đến
trạng thái không dùng

tài nguyên

trước

Hình 1.4: Activity stack
Bên trong hệ thống các activity được quản lý như một activity stack. Khi
một activity mới được bắt đầu, nó được đặt ở đỉnh của stack và trở thành
10


activity đang chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy
trong suốt quá trình activity mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kế tiếp của stack sẽ di duyển
lên và trở thành active.
• Các trạng thái của chu kỳ sống
Một Activity chủ yếu có 3 chu kỳ chính sau:
-

Active hoặc running:

Khi Activity ở ừê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
người dùng vẫn trông thấy được. Một Activity tạm dừng là còn hoạt

động nhưng có thể bị kết thúc bởi hệ thống trong trường hợp thiếu
vùng nhớ

- Stopped: Khi một Activity hoàn toàn bị che khuất. Tuy nhiên nó vẫn
còn lưu trữ toàn bộ thông tin trạng thái và thường bị đóng lại trong
trường hợp hệ thống cần vùng nhớ cho tác vụ khác
í New Activity j
1 onCreateO
2 onStartO

*1

1r 3. onResume()
Running

R

ii

onPauseQ

onResume()
ì
3. onResumeO
2. onStarlO
1. onRestartO

(

----------------------í


Pause

y <
onStopO
Stopped

h

onDestrayO

Hình L5: Chu kỳ sổng của Activity
11

i


• Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành
phần đều có một chu trình sống riêng. Và ứng dụng chỉ được gọi là kết thúc
khi tất cả các thành phần trong ứng dụng kết thúc. Activity là một thành
phần cho phép người dùng giao tiếp với ứng dụng. Tuy nhiên, khi tất cả các
Activity kết thúc và người dùng không còn giao tiếp được với ứng dụng nữa
nhưng không có nghĩa là ứng dụng đã kết thúc. Bởi vì ngoài Activity là
thảnh phần có khả năng tương tác người dùng thì còn có các thành phần
không có khả năng tương tác với người dùng như là Service, Broadcast
receiver. Có nghĩa là những thành phần không tương tác người dùng có thể
chạy background dưới sự giám sát của hệ điều hành cho đến khi người dùng
tự tắt chúng.

• Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ
thông tin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm fĩnish() của
nó), hoặc đơn giản kết thúc tiến trình của nó. Khi nó được hiển thị lần nữa
với người dùng, nó phải được hoàn toàn restart và phục hồi lại trạng thái
trước. Khi một Activity chuyển qua chuyển lại giữa các ừạng thái, nó phải
báo việc chuyển của nó bằng việc gọi hàm transition.
Tất cả các phương thức là những móc nối mà bạn có thể ghi đè để làm
tương thích công việc trong ứng dụng khi thay đổi trạng thái. Tất cả các
Activity bắt buộc phải có onCreate() để khỏi tạo ứng dụng. Nhiều Activity
sẽ cũng hiện thực onPause() để xác nhận việc thay đổi dữ liệu và mặt khác
chuẩn bị dừng hoạt động với người dùng.
vefci orrSreatEf&Braite saved Ì*5tancểStat0)
¥©id onStartO
void onReslartO
void onResume{)

Void onPause(}
Void onStDpf)
Void or Destroy0

Hình 1.6: Các sự kiện trong một chu kì ứng dụng

12


• Thòi gian sống của ứng dụng
Thời gian sống của một Activity diễn ra giữa lần đầu tiên gọi onCreateO
đến trạng thái cuối cùng gọi onDestroy(). Một Activity khởi tạo toàn bộ
trạng thái toàn cục trong onCreate(), và giải phóng các tài nguyên đang tồn

tại trong onDestroy().
• Thòi gian hiển thị của Activity
Thời gian hiển thị của một Activity diễn ra giữa lần gọi một onStartO
cho đến khi gọi onStopO. Trong suốt khoảng thời gian này người dùng có
thể thấy Activity ừên màn hình và tương tác với chúng. Giữa 2 phương thức
người dùng có thể duy trì tài nguyên để hiển thị activity đến người dùng.
• Các phương thức của chu kỳ sống
-

onCreateO

Được gọi khi activity được tạo ra lần đầu tiên

-

onRestartO

Được gọi sau khi hệ thống đã được dừng lại và khởi

động lại lần nữa (stared again)
-

onStartO

Được gọi trước khi một activity hữu hình với người

dùng
- onResumeO

Được gọi trước khi activity bắt đầu tương tác với


người dùng
-

onPauseO

Được gọi để dừng các activity hiện tại

-

onStopO

Được gọi khi activity không còn hiển thị với người

dùng
-

onDestroyO

Được gọi trước khi activity bị hủy bởi hệ thống

13


A c tiv ity

aiủní

Hình 1.7: Chu id sống chi tiết của một Activity
1.1.6. Content Provider và URI

Trong hệ thống Android tất cả các tài nguyên như Contact, SMS,... đều
được lưu trữ vào cơ sở dữ liệu SQLite của hệ thống. Cũng như các cơ sở dữ
liệu khác, cơ sở dữ liệu mà hệ thống Android sử dụng để lưu trữ thông tin
cũng cho phép chúng ta truy vấn dữ liệu như một cơ sở dữ liệu thông thường.
Tuy nhiên, trong hệ thống đó chúng ta không cần phải thao tác nhiều để truy
xuất dữ liệu mà thay vào đó Android đã được trang bị một giao diện lập
trình ứng dụng cho phép người lập trình có thể dễ dàng truy xuất dữ liệu.
Đó gọi là Content Provider. Content Provider cung cấp cho chúng ta một
đối tượng con trỏ giúp chúng ta có thể dễ dàng lấy được bất cứ dữ liệu lưu
trữ nào chỉ cần cung cấp một đường dẫn đúng đến dữ liệu đó. Đường dẫn
này còn được gọi là Uri.
co n t e n t :/ ị com, example.transportationprovider/’trainH/122

14


Tạo một ưri:
ưri uri = Uri.parse(“content://com.android.contacts/contacts”);
Cấu trúc gồm có 4 phần chính như sau:
- Phần A: Đây là tiền tố chỉ ra dữ liệu được điều khiển bởi Content
Provider và nó không bao giờ thay đổi
- Phần B: Phần này chỉ đến nơi lưu trữ dữ liệu. Cũng giống như cấu
trúc của một số điện thoại thì cái này có thể hình dung nó như là mã
quốc gia hoặc cũng có thể coi nó như là tên của cơ sở dữ liệu
- Phần c : Phần này chỉ ra loại dữ liệu. Chẳng hạn như, dữ liệu contact,
dữ liệu SMS,... Phần này có thể coi nó như là tên của một table
- Phần D: Phần này chỉ đến đúng vị trí của dữ liệu, có thể coi phần
này như là ID của row trong table hoặc một dữ liệu nào đó dùng để
truy vấn
VD: Uri chỉ đến contact thứ 0 trong cơ sở dữ liệu là

content://contacts/people/0
Để có thể thực hiện truy vấn đến vùng dữ liệu được chỉ ra bải một Ưri ta
cần có 2 đối tượng con trỏ được cung cấp bởi Activity đó là: Cursor và
Content Resolver. Để lấy được 2 đối tượng này thì ừong Activity sử dụng
hàm:
getContentResolverO

trả về đối tượng Content Resolver

getContentResolver().query(Uri uri)

trả về đối tượng Cursor

1.1.7. Background Service
Service là một trong bốn thành phần chính ừong một ứng dụng Android,
thành phần này chạy ữong hậu trường và làm những công việc không cần
tới giao diện như chơi nhạc, download, xử lí tính toán...
Một Service có thể được sử dụng theo hai cách:
- Nó có thể được bắt đầu và được cho 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.startServiceO và dừng bằng lệnh
Context.stopService(). Nó có thể tự ngắt bằng lệnh Service.stopSelf()
15


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 tới đối tượng Service và sử dụng đường kết nối đó để thâm
nhập vào Service. Kết nối này được thiết lập bằng cách gọi lệnh
Context.bindService() và đượ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 chạy nó. Hai chế độ này thì không
tách biệt toàn bộ. Bạn có thể kết nối với một Service mà nó đã được
bắt đầu với lệnh startService()
Giống như một Activity, một Service cũng có các phương thức chu kỳ
thời gian mà bạn có thể cài đặt để kiểm soát những sự thay đổi trong trạng
thái của nó. Service chỉ có ba phương thức được gọi đến ừong chu trình
sống là:
void onCreateO
void onStartỢntent intent)
void onDestroyO
Bằng việc thực hiện những phương thức này, bạn có thể giám sát hai
vòng lặp của chu kỳ thòi gian của mỗi Service diễn ra giữa thòi gian
onCreate() được gọi ra và thời gian mà onDestroyO ừả lại. Giống như một
Activity, một Service lại tiến hành cài đặt ban đầu ở onCreate(), và giải
phóng tất cả các tài nguyên còn lại ở onDestroy(). Các phương thức
onCreate() và onDestroyO được gọi cho tất cả các Service dù chúng có được
bắt đầu bằng Context.startServiceO hoặc Context.bindServiceO hay không.
Tuy nhiên, onStart() chỉ được gọi ra đối với các Service bắt đầu bằng
startService(). Nếu một Service cho phép những Service khác kết nối với nó
thì sẽ có thêm các phương thức callback dành cho Service đó để thực hiện.
16


×