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

KHÓA LUẬN tốt NGHIỆP ỨNG DỤNG gợi ý và hỗ TRỢ lựa CHỌN địa điểm DU LỊCH

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.22 MB, 106 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

HÀ ĐĂNG TÚ
NGUYỄN HỒNG VŨ

KHĨA LUẬN TỐT NGHIỆP

ỨNG DỤNG GỢI Ý VÀ HỖ TRỢ LỰA CHỌN
ĐỊA ĐIỂM DU LỊCH
RECOMMENDATION AND SUPPORTED SELECTING
A TRAVEL PLACE APPLICATION

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
TS ĐỖ THỊ THANH TUYỀN

TP. HỒ CHÍ MINH, 2021


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

HÀ ĐĂNG TÚ - 16521562
NGUYỄN HỒNG VŨ - 16521454


KHĨA LUẬN TỐT NGHIỆP

ỨNG DỤNG GỢI Ý VÀ HỖ TRỢ LỰA CHỌN
ĐỊA ĐIỂM DU LỊCH
RECOMMENDATION AND SUPPORTED SELECTING
A TRAVEL PLACE APPLICATION

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
TS ĐỖ THỊ THANH TUYỀN

TP. HỒ CHÍ MINH, 2021


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo quyết định số ......................
ngày ................................. của Hiệu Trưởng trường Đại học Công Nghệ Thông Tin.


LỜI CẢM ƠN
Đầu tiên, nhóm xin gửi đến cơ TS. Đỗ Thị Thanh Tuyền lời cảm ơn chân thành nhất
vì đã tận tình định hướng, hướng dẫn, giải đáp các thắc mắc, đồng thời cũng là người hỗ
trợ giải quyết các vấn đề khó khăn trong q trình thực hiện đề tài này.
Nhóm cũng gửi lời cảm ơn đến Trường Đại học Cơng nghệ Thơng tin cũng như tồn
thể cán bộ, giảng viên của trường đã tạo điều kiện hỗ trợ nhóm trong suốt q trình học tập
tại trường. Đặc biệt quý thầy cô, cán bộ khoa Công nghệ Phần mềm đã tuyền đạt nhiều
kiến thức nền tảng và chuyên sâu cũng như các kỹ năng quý báu để có thể áp dụng trong
q trình thực hiện khố luận này cũng như trong công việc tương lai.



Mục lục
CHƯƠNG I
TỔNG QUAN ĐỀ TÀI ........................................................................... 4
1. Tổng quan vấn đề ....................................................................................... 4
2.

Khảo sát hiện trạng.................................................................................... 4

3.

Mục tiêu đề tài ............................................................................................ 4

CHƯƠNG II CƠ SỞ LÝ THUYẾT ............................................................................. 6
1. Hệ điều hành Android ............................................................................... 6
1.1. Lịch sử phát triển .................................................................................. 6
1.2. Các phiên bản ........................................................................................ 6
1.3. Cấu trúc nền tảng của hệ điều hành Android .................................... 8
1.4. Các thành phần cốt lõi khi xây dựng một ứng dụng trên hệ điều hành
Android
2.

11
Google Firebase ........................................................................................ 14

2.1. Tổng quan ............................................................................................ 14
2.2. Các tính năng chính của Google Firebase ........................................ 14
3.

Dialogflow ................................................................................................. 15

3.1. Tổng quan ............................................................................................ 15
3.2. Các thành phần chính của Dialogflow. ............................................. 16

4.

HERE Android SDK ............................................................................... 19
4.1. Tổng quan ............................................................................................ 19
4.2. Các tính năng chính của HERE Android SDK ................................ 19

5.

RESTful API ............................................................................................ 20
5.1. Tổng quan ............................................................................................ 20
5.2. Các thành phần của RESTful API .................................................... 21
5.3. Nguyên lý hoạt động. .......................................................................... 21


CHƯƠNG III PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH ................................... 23
1. Phạm vi hệ thống...................................................................................... 23
2.

Kiến trúc hệ thống ................................................................................... 23

3.

Hiện thực hệ thống ................................................................................... 24
3.1. Sơ đồ usecase ....................................................................................... 24
3.2. Sơ đồ hoạt động ................................................................................... 41
3.3. Sơ đồ tuần tự ....................................................................................... 57
3.4. Thiết kế dữ liệu .................................................................................... 70

3.5. Thiết kế giao diện ................................................................................ 73

CHƯƠNG IV TỔNG KẾT ........................................................................................... 94


DANH MỤC BẢNG
Bảng II-1 Các phiên bản của hệ điều hành Android ................................................ 7
Bảng III-1 Danh sách actor..................................................................................... 24
Bảng III-2 Danh sách các usecase .......................................................................... 26
Bảng III-3 Đặc tả usecase "Đăng nhập" ................................................................. 27
Bảng III-4 Đặc tả usecase “Đăng kí” .................................................................... 28
Bảng III-5 Đặc tả usecase “Xem bản đồ”.............................................................. 29
Bảng III-6 Đặc tả usecase “Xem chỉ đường" ......................................................... 31
Bảng III-7 Đặc tả usecase "Nhắn tin"..................................................................... 32
Bảng III-8 Đặc tả usecase “Gửi tin nhắn” .............................................................. 33
Bảng III-9 Đặc tả usecase “Tìm kiếm bạn bè” ....................................................... 34
Bảng III-10 Đặc tả usecase “Thêm bạn bè” ........................................................... 35
Bảng III-11 Đặc tả usecase “Nhờ chatbot giới thiệu địa điểm” ............................. 36
Bảng III-12 Đặc tả usecase “Xem thông tin du lịch” ............................................. 37
Bảng III-13 Đặc tả usecase "Xem thông tin địa điểm" .......................................... 38
Bảng III-14 Đặc tả usecase “Xem thông tin khách sạn, nhà nghỉ” ........................ 39
Bảng III-15 Đặc tả usecase “Xem thông tin nhà hàng, quán ăn” ........................... 40
Bảng III-16 Đặc tả usecase “Đăng bình luận” ....................................................... 40
Bảng III-17 Bảng thành phố ................................................................................... 71
Bảng III-18 Bảng ành thành phố ............................................................................ 71
Bảng III-19 Bảng loại hình địa điểm du lịch .......................................................... 71
Bảng III-20 Bảng địa điểm du lịch ......................................................................... 72
Bảng III-21 Bảng ảnh địa điểm du lịch .................................................................. 72
Bảng III-22 Bảng đánh giá địa điểm ...................................................................... 72
Bảng III-23 Danh sách các màn hình ..................................................................... 75

Bảng III-24 Các đối tượng trên màn hình đăng nhập ............................................. 77
Bảng III-25 Các đối tượng trên màn hình đăng kí ................................................. 79
Bảng III-26 Các đối tượng trên màn hình xem bản đồ........................................... 81


Bảng III-27 Các đối tượng trên màn hình tin nhắn ................................................ 83
Bảng III-28 Các đối tượng trên màn hình gửi tin nhắn .......................................... 85
Bảng III-29 Các đối tượng trên màn hình chatbot ................................................. 87
Bảng III-30 Các đối tượng trên màn hình home .................................................... 89
Bảng III-31 Các đối tượng trên màn hình xem thơng tin du lịch ........................... 91
Bảng III-32 Các đối tượng trên màn hình chi tiết địa điểm du lịch ....................... 93


DANH MỤC HÌNH ẢNH
Hình II-1 Kiến trúc tổng qt của hệ điều hành Android ......................................... 8
Hình II-2 Vịng đời của một Acitivity .................................................................... 12
Hình II-3 Qúa trình nhận diện Intent trong Dialogflow ......................................... 17
Hình II-4 Cách thực hoạt động của một Intent ....................................................... 18
Hình II-5 Cách thức hoạt động của fulfillment ..................................................... 19
Hình II-6 Cách thực hoạt động của RestAPI .......................................................... 22
Hình III-1 Kiến trúc hệ thống ................................................................................. 23
Hình III-2 Sơ đồ usecase tổng quát ........................................................................ 24
Hình III-3 Sơ đồ hoạt động "Đăng nhập" ............................................................... 41
Hình III-4 Sơ đồ hoạt động “Đăng kí” .................................................................. 42
Hình III-5 Sơ đồ hoạt động “Xem bản đồ” ............................................................ 43
Hình III-6 Sơ đồ hoạt động “Tìm kiếm địa điểm” ................................................ 44
Hình III-7 Sơ đồ hoạt động “Chỉ đường” ............................................................... 45
Hình III-8 Sơ đồ hoạt động “Nhắn tin” .................................................................. 46
Hình III-9 Sơ đồ hoạt động “Gửi tin nhắn” ........................................................... 47
Hình III-10 Sơ đồ hoạt động “Tìm kiếm bạn bè”.................................................. 48

Hình III-11 Sơ đồ hoạt động “Thêm bạn bè” ......................................................... 49
Hình III-12 Sơ đồ hoạt động “Nhờ chatbot tư vấn địa điểm” ................................ 51
Hình III-13 Sơ đồ hoạt động “Xem thơng tin du lịch” ........................................... 52
Hình III-14 Sơ đồ hoạt động “Xem thông tin địa điểm du lịch” ............................ 53
Hình III-15 Sơ đồ hoạt động “Xem thơng tin khách sạn, nhà nghỉ” ...................... 54
Hình III-16 Sơ đồ hoạt động “Xem thơng tin nhà hàng,qn ăn”.......................... 55
Hình III-17 Sơ đồ hoạt động “Đăng bình luận” ..................................................... 56
Hình III-18 Sơ đồ tuần tự “Đăng nhập” ................................................................ 57
Hình III-19 Sơ đồ tuần tự “Đăng kí” ...................................................................... 58
Hình III-20 Sơ đồ tuần tự “Xem bản đồ” ............................................................... 59
Hình III-21 Sơ đồ tuần tự “Tìm kiếm địa điểm” .................................................... 60


Hình III-22 Sơ đồ tuần tự “Xem chỉ đường” .......................................................... 61
Hình III-23 Sơ đồ tuần tự “Nhắn tin” ..................................................................... 62
Hình III-24 Sơ đồ tuần tự “Gửi tin nhắn” .............................................................. 63
Hình III-25 Sơ đồ tuần tự “Tìm kiếm bạn bè” ....................................................... 64
Hình III-26 Sơ đồ tuần tự “Thêm bạn bè” .............................................................. 65
Hình III-27 Sơ đồ tuần tự “Nhờ chatbot giới thiệu địa điểm du lịch” ................... 66
Hình III-28 Sơ đồ tuần tự “Xem thơng tin du lịch” ............................................... 67
Hình III-29 Sơ đồ tuần tự “Xem thông tin địa điểm du lịch”................................. 68
Hình III-30 Sơ đồ tuần tự “Xem thơng tin nhà hàng, quán ăn” ............................. 68
Hình III-31 Sơ đồ tuần tự “Xem thơng tin khách sạn, nhà nghỉ”........................... 69
Hình III-32 Sơ đồ tuần tự “Đăng bình luận” .......................................................... 69
Hình III-33 Sơ đồ logic .......................................................................................... 70
Hình III-34 Sơ đồ màn hình ................................................................................... 73
Hình III-35 Màn hình đăng nhập ............................................................................ 76
Hình III-36 Màn hình đăng kí ................................................................................ 78
Hình III-37 Màn hình “Xem bản đồ” ..................................................................... 80
Hình III-38 Màn hình tin nhắn ............................................................................... 82

Hình III-39 Màn hình “Gửi tin nhắn”..................................................................... 84
Hình III-40 Màn hình chatbot ................................................................................ 86
Hình III-41 Màn hình home ................................................................................... 88
Hình III-42 Màn hình xem thơng tin du lịch .......................................................... 90
Hình III-43 Màn hình chi tiết địa điểm du lịch ...................................................... 92


DANH MỤC TỪ VIẾT TẮT

STT

Chữ cái viết tắt/kí hiệu

Cụm từ đầy đủ

1

SDK

Software Development Kit


TÓM TẮT KHÓA LUẬN
Du lịch là một trong những ngành kinh tế mũi nhọn của nước ta. Bởi khi tìm hiểu
đất nước chúng ta qua sách, báo, tạp chí, nước ta có rất nhiều danh lam thắng cảnh có thể
sánh ngang với các cảnh đẹp trên thế giới. Điều đó mở ra cho chúng ta một cơ hội cạnh
tranh với các quốc gia trên thế giới. Qua đó chứng tỏ Việt Nam chúng ta có tiềm năng đa
dạng, phong phú về du lịch.
Xã hội hiện đại ngày cảng phát triển đặc biệt trong thời đại bùng nổ về công nghệ
thông tin hiện nay, con người có thể tiếp cận các thông tin một cách dễ dàng chỉ với một

chiếc điện thoại thông minh. Điều này mang lại lợi thế lớn trong việc quảng bá nền du lịch
nước nhà đến với thế giới.
Ngành du lịch Việt Nam cũng đã đạt được nhiều thành tựu qua các năm. Năm 2019,
ngành du lịch Việt Nam đã lập kì tích khi đón nhận 18 triệu khách quốc tế và cũng là năm
mà ngành du lịch nước ta nhận được giải thưởng Điểm đến di sản hàng đầu thế giới do tổ
chức World Travel Awards trao tặng. Tuy nhiên, đi cùng với những thành tựu đó, ngành
du lịch vẫn cịn những hạn chế như tỉ lệ khách quay trở lại thấp, các sản phẩm du lịch chưa
thực sự thu hút du khách nước ngoài, các dịch vụ chăm sóc khách du lịch chưa đa dạng,
cơng tác quảng bá vẫn chưa được xem trọng.
Nắm bắt nhu cầu thực tiễn đó, nhóm em mong muốn xây dựng “ỨNG DỤNG GỢI
Ý VÀ HỖ TRỢ LỰA CHỌN ĐỊA ĐIỂM DU LỊCH” chạy trên điện thoại di động trang
bị hệ điều hành Android – hệ điều hành phổ biến nhất thế giới trên điện thoại thông minh.
Nhằm quảng bá ngành du lịch nước nhà, giúp các du khách nước ngoài có thể hiểu biết
thêm nhiều về du lịch Việt Nam qua đó giúp ngành du lịch Việt Nam có thể cạnh tranh với
các nước trong khu vực.
Với để tài này nhóm em quyết định xây dựng một ứng dụng giúp khách du lịch có
một người bạn đồng hành trong việc tìm kiếm các địa điểm du lịch, đồng thời cũng giúp
quảng bá cho ngành du lịch nước nhà.
Nội dung của khóa luận được chia thành 4 chương như sau:
1


-

Chương 1: Tổng quan đề tài: Giới thiệu đề tài và lí do chọn đề tài

-

Chương 2: Cơ sở lí thuyết: Các cơ sở lí thuyết được áp dụng vào đề tài


-

Chương 3: Thực nghiệm.

-

Chương 4: Kết luận và hướng phát triển.

2


MỞ ĐẦU
Theo báo cáo của Tổng cục Du lịch Việt Nam năm 2019. Ngành du lịch Việt Nam
đã vượt qua được nhiều khó khăn trong bối cảnh nền du lịch thế giới tăng trưởng chậm lại.
Cụ thể, ngành du lịch đã 18 triệu lượt khách quốc tế, 85 triệu khách du lịch nội địa, thu
được 755 nghìn tỉ đồng, đóng góp vào GDP cả nước 9,2%. Đây là những con số thật sự ấn
tượng chứng tỏ khả năng cạnh của ngành du lịch nước ta với các nước trên thế giới.
Tuy nhiên, ngành du lịch nước ta vẫn còn nhiều hạn chế gây ảnh hưởng đến khả
năng cạnh tranh với các nước như tỷ lệ du khách quay trở lại thấp (10-40%). Các sản phẩm
du lịch vẫn chưa thực sự hấp dẫn du khách, các hoạt động giải trí, chăm sóc chưa đa dạng.
Đặc biệt là các hoạt động quảng bá chưa được quan tâm và chú trọng vào đầu tư dẫn đến
khách du lịch chưa thể tiếp cận được.
Ngày nay, điện thoại thông minh đã trở nên gần như quen thuộc với tất cả mọi người.
Với sự phát triển vượt bậc, điện thoại thông minh đã trở thành một người cơng cụ giúp mọi
người có thể tiếp cận với thơng tin một cách dễ dàng. Hiện tại, có hai hệ điều hành điều
hành phổ biến cho các điện thoại thơng minh là Android và IOS, trong đó hệ điều hành
Android chiếm phổ biến trong các dịng điện thoại thơng minh do là một mã nguồn mở cho
phép nhà phát triển, lập trình viên có thể tùy biến và phân phối hệ điều hành một cách tự
do mà khơng có bất kì ràng buộc nào. Hệ điều hành Android có nhiều ưu điểm như giao
diện đẹp, dễ tùy chỉnh, tính bảo mật cao, đa nhiệm, dễ dàng sử dụng. Ngoài ra, giá thành

của các thiết bị chạy Android thường khá rẻ nên người dùng phổ thơng có thể dễ dàng sở
hữu được.
Do đó việc phát triển ứng dụng để hỗ trợ người trong việc tìm kiếm các địa điểm du
lịch sẽ giúp quảng bá cho mọi người biết về sự đa dạng và phong phú của ngành du lịch
Việt Nam. Qua đó đẩy mạnh tăng trưởng nền kinh tế đất nước.

3


CHƯƠNG I
1.

TỔNG QUAN ĐỀ TÀI

Tổng quan vấn đề
Du lịch Việt Nam đã đạt được nhiều thành tựu trong bối cảnh nền du lịch thế giới

có dấu hiệu chững lại. Bên cạnh đó, ngành du lịch nước ta cũng vẫn gặp phải những trở
ngại mà nếu khơng khắc phục thì trong tương lai, ngành du lịch nước ta chắc chắn sẽ gặp
khó khăn trong q trình cạnh tranh với các nước khác. Đặc biệt trong khâu quảng bá du
lịch chưa được chú trọng đầu tư.
Nắm bắt tình hình đó, đề tài khóa luận tập trung xây dựng một ứng dụng, chạy trên
điện thoại thơng minh giúp người dùng có thể dễ dàng tìm kiếm các địa điểm du lịch phù
hợp với những nhu cầu đặt ra của bản thân.
2.

Khảo sát hiện trạng.
Hiện tại trên kho ứng dụng của Google (Google Play Store) cũng đã có một số ứng

dụng hỗ trợ người dùng tìm kiếm các địa điểm du lịch. Như ứng dụng “Du lịch Việt Nam

của Tổng cục Du lịch”. Các ứng dụng này đa phần đều có chức năng hỗ trợ người dùng
tìm kiếm địa điểm du lịch. Nhưng cũng còn vẫn còn một số vấn đề tồn tại như:
-

Chưa có hệ thống hỗ trợ tư vấn người dùng.

-

Chức năng đánh giá dễ dàng, dễ bị kẻ xấu lợi dụng để cho điểm thấp các điểm
du lịch.

3.

Mục tiêu đề tài
-

Nghiên cứu công nghệ để xây dựng một chatbot.

-

Xây dựng chatbot có khả năng trả lời các câu hỏi liên quan đến các thơng tin về
các địa điểm du lịch.

-

Tích hợp chatbot vào ứng dụng nhằm tạo ra một ứng dụng có khả năng tư vấn,
cung cấp thơng tin một cách chính xác cho người dùng về các địa điểm du lịch.

-


Xây dựng một ứng dụng Android có các chức năng chính như sau:

-

Tư vấn cho người dùng các thơng tin liên quan về địa điểm du lịch ở Việt Nam.
o Cho phép người dùng xem thông tin một cách trực quan.
4


o Để lại bình luận, đánh giá các địa điểm du lịch.
o Trò chuyện với người dùng khác.
o Xem bản đồ để tìm đường đi.
o Tìm chỗ ở gần điểm du lịch.
o Tìm các quán ăn, nhà hàng gần điểm du lịch.

5


CHƯƠNG II
1.

Hệ điều hành Android

1.1.

Lịch sử phát triển

CƠ SỞ LÝ THUYẾT

Android là một hệ điề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ư điện thoại thơng minh và máy tính bảng. Ban
đầu Android được phát triển bởi Android, Inc với sự hỗ trợ tài chính từ Google và sau này
được Google mua lại vào năm 2005.
Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm
tay mở rộng: một hiệp hội gồm các công ty phần cứng, phần mềm và viễn thông với mục
tiêu đẩy mạnh các tiêu chuẩn mở rộng dành cho thiết bị di động. Chiếc điện thoại đầu tiên
chạy Android được bán ra vào năm 2008.
Android có mã nguồn mở và Google phát hành mã nguồn theo giấy phép Apache.
Chính mã nguồn mở cùng với một giấy phép khơng có nhiều ràng buộc cho phép các nhà
phát triển thiết bị, mạng di động và lập trình viên nhiệt huyết được điều chỉnh và phân phối
Android một cách tự do. Android cho phép các nhà phát triển viết mã được quản lý bằng
ngôn ngữ Java, điều khiển thiết bị thông qua các thư viện Java do Google phát triển.
Android chiếm 87,7% thị phần điện thoại thơng minh trên tồn thế giới vào thời
điểm quý 2 năm 2017, với tổng cộng 2 tỷ thiết bị đã được kích hoạt và 1,3 triệu lượt kích
hoạt mỗi ngày theo số liệu thống kê Gartner. Sự thành công của hệ điều hành cũng khiến
nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái
gọi là "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
1.2.

Các phiên bản

Phiên bản

Tên mã

Cấp API

Ngày phát hành

1.0


RC29

1

23/9/2008

1.1

RC30

2

9/2/2009

1.5

Cupcake

3

30/4/2009

6


1.6

Donut


4

15/9/2009

2.0/2.1

Eclair

7

26/10/2009

2.2

Froyo

8

20/5/2009

2.3

Gingerbread

9

6/12/2010

2.3.3


Gingerbread

10

9/2/2011

3.0

Honeycomb

11

24/2/2011

3.1

Honeycomb

12

10/5/2011

3.2

Honeycomb

13

15/7/2011


4.0

IceCreamSandwich

14

19/10/2011

4.0.3

IceCreamSandwich

15

16/12/2011

4.1

Jelly Bean

16

9/7/2012

4.2

Jelly Bean

17


13/11/2012

4.3

Jelly Bean

18

25/7/2012

4.4

KitKat

19

31/10/2013

4.4W

KitKat Wear

20

25/6/2014

5.0

Lollipop


21

12/11/2014

5.1

Lollipop

22

9/3/2015

6.0

Marshmallow

23

5/10/2015

7.0

Nougat

24

22/8/2016

7.1.1


Nougat

25

4/10/2016

8.0

Oreo

26

21/8/2017

8.1

Oreo

27

5/12/2017

9.0

Pie

28

6/8/2018


10.0

Q

29

3/9/2019

11.0

R

30

8/9/2020

Bảng II-1 Các phiên bản của hệ điều hành Android
7


1.3.

Cấu trúc nền tảng của hệ điều hành Android
Dưới đây là hình ảnh mơ tả tổng qt của hệ điều hành Android

Hình II-1 Kiến trúc tổng quát của hệ điều hành Android
8


1.3.1. Nhân Linux

Được ra đời vào năm 1991, bất cứ hệ điều hành nào muốn hoạt động được cần phải
có một nền tảng nhất định. Và Linux Kernel chính là nền tảng của Android nhưng được
chỉnh sửa lại cho tối ưu.
Có các driver để giao tiếp trực tiếp với phần cứng cho từng thiết bị di động. Muốn
nhúng được Android vào một mẫu di động mới, hang phát triển sẽ phải viết lại toàn bộ
hoặc một phần các driver trong kernel. Hiện tại Linux Kernel hỗ trợ khá nhiều loại phần
cứng.
Nền tảng này đảm nhiệm khá đầy đủ chưc năng cơ bản (quản lý bộ nhớ, lập lịch,
quản lý process…) của một hệ điều hành.
1.3.2. Hardware Abstraction Layer (HAL)
Hardware Abstraction Layer (HAL) cung cấp các giao diện chuẩn phơi bày các khả
năng phần cứng của thiết bị với Java API framework. HAL bao gồm nhiều module thư
viện, mỗi thư viện thực thi một giao diện cho một loại phần cứng cụ thể như camera hoặc
bluetooth module. Khi framework thực hiện lời gọi để truy cập đến phần cứng, hệ thống
sẽ load thư viện, module của phần cứng tương ứng.
1.3.3. Android Runtime (ART)
Các thiết bị chạy Android 5.0 trở lên, mỗi ứng dụng chạy trên chính process của nó
và với thể hiện của Android Runtime (ART). ART được viết để chạy trên nhiều máy ảo
trên các thiết bị có bộ nhớ nhỏ bằng cách thực thi DEX file, một dạng bytecode được thiết
kế đặc biệt cho Android tối ưu hóa mức sử dụng bộ nhớ.
Các tính năng của ART
-

Ahead-of-time (AOT) and just-in-time (JIT) biên dịch.

-

Tối ưu hóa bộ thu gom rác (GC).

-


Từ Android 9.0 trở lên hỗ trợ chuyển đổi DEX file thành dạng mã máy gọn nhẹ.

-

Hỗ trợ sửa lỗi tốt hơn.

9


-

Từ Android 5.0 trở lên, Davilk là Android runtime. Nếu ứng dụng chạy trên
Android runtime cũng sẽ chạy tốt trên Davilk.

-

Core Library bao gồm các tiện ích và cơng cụ được xây dựng bằng ngôn ngữ
Java.

1.3.4. Native C/C++ libraries
Các thư viện hệ thống thường được viết bằng C/C++ như ART, HAL. Android cung
cấp các Java API framework để hiển thị một số chức năng của thư viên gốc này cho ứng
dụng.
Nếu bạn đang phát triển ứng dụng cần C/C++ code, sử dụng Android NDK để truy
cập vào các thư viện này.
1.3.5. Java API framework
Tồn bộ bộ tính năng của HĐH Android có sẵn cho bạn thơng qua các API được
viết bằng ngôn ngữ Java. Các API này tạo thành các khối xây dựng mà bạn cần để tạo ứng
dụng Android bằng cách đơn giản hóa việc sử dụng lại các thành phần và dịch vụ cốt lõi,

mô-đun, bao gồm:
-

ViewSystem: để xây dựng giao diện chương trình.

-

ResourceManager: truy cập vào tài nguyên như các chuỗi cục bộ, đồ họa, các
file giao diện.

-

Notification Manager: Cho phép các ứng dụng để hiển thị thơng báo trên thanh
trang thái.

-

Activity Manager: Quản lý vịng đời ứng dụng, cung cấp các điều hướng trở về.

-

Content Provider: Cho phép ứng dụng truy cập vào dữ liệu của ứng dụng khác
để chia sẻ dữ liệu.

1.3.6. System App
Android đi kèm với một bộ ứng dụng cốt lõi cho email, nhắn tin SMS, lịch, duyệt
internet, danh bạ, v.v. Các ứng dụng đi kèm với nền tảng khơng có trạng thái đặc biệt trong
số các ứng dụng mà người dùng chọn cài đặt. Vì vậy, ứng dụng của bên thứ ba có thể trở
10



thành trình duyệt web mặc định của người dùng, SMS messenger hoặc thậm chí là bàn
phím mặc định (một số trường hợp ngoại lệ được áp dụng, chẳng hạn như ứng dụng Cài
đặt của hệ thống).
Các ứng dụng hệ thống hoạt động cả dưới dạng ứng dụng cho người dùng và để
cung cấp các khả năng chính mà nhà phát triển có thể truy cập từ ứng dụng của riêng họ.
1.4.

Các thành phần cốt lõi khi xây dựng một ứng dụng trên hệ điều hành Android

1.4.1. Activity
Activity là một phần không thể thiếu và là phần quan trọng nhất của một ứng dụng
Android.
Activity là giao diện của mọi ứng dụng, nơi người dùng có thể tương tác với ứng
dụng. Theo đó một ứng dụng có thể khơng có activity nào (ứng dụng chạy khơng cần giao
diện), có 1 hoặc nhiều activity.
Các trạng thái chính của Activity:
-

Active: Activity đang hiển thị trên màn hình.

-

Paused: Activity vẫn hiển thị nhưng khơng thể tương tác được.

-

Stop: Activity bị thay thế hoàn toàn và tiến đến trạng thái stop

-


Killed: Khi hệ thống thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo ngun
tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng
và khi nó được hiển thị lại thì các Activity này phải khởi động lại hồn tồn và
phục hồi lại trạng thái trước đó.

Hình dưới đây mơ phỏng tổng qt vịng đời của một Activity.

11


Hình II-2 Vịng đời của một Acitivity
❖ Các phương thức chính được mơ tả trong hình ảnh trên.
-

onCreate(): được gọi khi Activity được tạo lần đầu tiên.

-

onStart(): được goi khi Activity hiển thị với người dùng.

-

onResume() : được goi khi Activity bắt đầu tương tác với người dùng.

12


-


onPause(): được gọi khi hệ thống muốn resume 1 acitivity khác và activity hiện
tại dừng lại.

-

onRestart(): được gọi khi một activity đã dừng và đang được khởi động một lần
nữa.

-

onDestroy(): được gọi trước khi activity bị hủy khỏi hệ thống. Đây là lời gọi
cuối

1.4.2. BroadCastReceiver
BroadCastReceiver được tạo ra với mục đích lắng nghe các sự kiện, trạng thái của
hệ thống phát ra thơng qua Intent nhờ đó các lập trình viên có thể xử lí được các sự kiện
hệ thống.
BroadCastReceiver có thể hoạt động ngay cả khi ứng dụng đã bị tắt, nghĩa là có thể
hoạt động trong background nên thường được sử dụng với service.
1.4.3. Service
Một Service là một thành phần (component) có thể thực hiện các hoạt động lâu dài
trong background và nó khơng cung cấp một giao diện người dùng. Một thành phần khác
của ứng dụng có thể start nó, và nó tiếp tục chạy trong background ngay cả khi người dùng
chuyển sang ứng dụng khác.
Phân loại service:
-

ForegroundService: Một ForegroundService thực hiện một số thao tác người
dùng có thể thấy được, có thể thao tác được.


-

BackgroundService: Một BackgroundService thực hiện một số thao tác người
dùng không thể thấy hay thao tác được.

-

BoundService: Một service được gọi là Bound khi một thành phần của ứng dụng
ràng buộc với nó bởi lời gọi bindService(). Một Bound Service cung cấp một
giao diện Client - Server cho phép các thành phần tương tác với nó: gửi yêu cầu,
nhận kết quả. Một Bound Service chỉ chạy miễn là có một thành phần ràng buộc

13


với nó. Có thể có nhiều thành phần ràng buộc với Bound Service cùng lúc, nhưng
khi tất cả tháo bỏ ràng buộc (unbound) thì nó sẽ Destroy.
2.

Google Firebase

2.1.

Tổng quan
Firebase là một nền tảng được Google phát triển cho việc xây dựng ứng dụng web

và di động. Firebase đóng vai trị trong việc thay thế phần backend của ứng dụng, bao gồm:
lưu trữ dữ liệu, xác thực người dùng, giám sát hiệu suất, báo cáo sự cố… Với firebase, các
nhà phát triển ứng dụng dễ dàng tạo ra ứng dụng có thể phục vụ từ một cho đến hàng triệu
người dùng.

Các API của Firebase được đóng gói thành một SDK duy nhất có thể được mở rộng
sang nhiều nền tảng và ngơn ngữ khác nhau giúp các nhà phát triển có thể sử dụng một
cách thuận tiện với ngôn ngữ và nền tảng mà họ quen thuộc nhất giúp tối ưu hóa thời gian
phát triển ứng dụng.
2.2.

Các tính năng chính của Google Firebase
-

Firebase Authentication: Cung cấp các dịch vụ backend, SDK dễ dàng sử dụng
và những thư viện dùng để xây dựng giao diện giúp xác thực người dùng. Nó hỗ
trợ xác thực sử dụng mật khẩu, số điện thoại và các nhà cung cấp dịch vụ xác
thực như Google, Facebook, Twitter…

-

Realtime Database: Lưu trữ và đồng bộ hóa dữ liệu với cơ sở dữ liệu NoSql.
Dữ liệu được đồng bộ hóa theo thời gian thực và vẫn sẵn sàng ngay cả khi ứng
dụng bị tắt. Dữ liệu của Realtime Database được lưu trữ ở dạng JSON và được
đồng bộ hóa theo thời gian thực cho mọi máy khách kết nối. Tất cả các máy
khách đều chia sẻ chung một phiên bản Realtime Database và tự động được cập
nhật dữ liệu mới nhất.

-

Cloud Firestore: Là phiên bản cơ sở dữ liệu mới của Firebase, có đầy đủ các
tính năng của Realtime Database nhưng được xây dựng với mơ hình dữ liệu mới
và trực quan hơn.

14



×