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
Trang 1ĐẠ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 HOÀ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
Trang 2ĐẠ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 HOÀ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
Trang 3THÔ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
Trang 4LỜ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 quá 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ư toà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 quá 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 quá trình thực hiện khoá luận này cũng như trong công việc tương lai
Trang 5Mụ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 11 2 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
Trang 6CHƯƠ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
Trang 7DANH 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
Trang 8Bả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
Trang 9DANH MỤC HÌNH ẢNH
Hình II-1 Kiến trúc tổng quát 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,quán ă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
Trang 10Hì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
Trang 11DANH 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
Trang 12TÓ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à
Trang 13- 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
Trang 14MỞ ĐẦ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
Trang 15CHƯƠNG I TỔNG QUAN ĐỀ TÀI
1 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 quá 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
Trang 16o Để 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
Trang 17CHƯƠNG II CƠ SỞ LÝ THUYẾT
1 Hệ điều hành Android
1.1 Lịch sử phát triển
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 toà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ệ
Trang 191.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 quát của hệ điều hành Android
Trang 201.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
Trang 21- 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
Toà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
Trang 22thà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 nguyên 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 hoàn toàn và phục hồi lại trạng thái trước đó
Hình dưới đây mô phỏng tổng quát vòng đời của một Activity
Trang 23Hì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
Trang 24- onPause(): được gọi khi hệ thống muốn resume 1 acitivity khác và activity hiện
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
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
Trang 25vớ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
Trang 26- Cloud Storage: Được Google xây dựng để lưu trữ các nội dung do người dùng
tạo ra như video, hình ảnh, tài liệu… SDK của cloud storage cũng được thêm các tính năng bảo mật của Google trong việc tải xuống và tải lên các tệp tin từ ứng dụng Firebase, mà không cần quan tâm đến chất lượng mạng
- Hosting: nơi nhà phát triển có thể triển khai ứng dụng web của mình Ngoài ra
còn được dùng để phát triển các microservices trên Firebase
- Cloud Functions: là một nền tảng cho phép chạy tự động code backend để phản
hồi các sự kiện được kích hoạt bởi các tính năng Firebase hoặc các HTTPS request Hỗ trợ các nền tảng Android, IOS, C++, Unitiy và các nền tảng web
3 Dialogflow
3.1 Tổng quan
Dialogflow (API.AI tên gọi trước khi được Google mua lại) là nền tảng xây dựng
và phát triển chatbot giúp các lập trình viên dễ dàng lập trình các ứng dụng có giao tiếp giữa người dùng với ứng dụng thông qua các đoạn văn bản hoặc giọng nói
Các lợi thế mà Dialogflow mang lại:
- Tương tác một cách tự nhiên và chính xác: Mang lại trải nghiệm tự nhiên hơn
cho khách hàng với các trợ lí ảo hỗ trợ các cuộc trò truyện nhiều lượt với những câu hỏi bổ trợ được xây dựng bằng những công nghệ học sâu của Google Assistant
- Xây dựng và triển khai nhanh chóng: Giảm thời gian phát triển ứng dụng từ
vài ngày xuống chỉ còn vài phút với công cụ xây dựng trực quan và các agent có sẵn Dễ dàng triển khai trên nhiều nền tảng khác nhau bao gồm di động, web và các dịch vụ nhắn tin
- Quản lý và mở rộng quy mô một cách dễ dàng: Dễ dàng quản lý các agent đã
tạo thông qua việc tạo số hiệu phiên bản và đánh giá liên tục cho phép mở rộng lên tới 20 luồng độc lập và 40.000 intents cho mỗi chatbot
Các phiên bản Dialogflow:
Trang 27- Dialogflow ES (Standard): Dùng cho việc xây dựng các chatbot vừa và nhỏ ở
Hình bên dưới mô tả quá trình Dialogflow nhận diện Intent Thời tiết Khi bạn hỏi các câu hỏi liên quan đến thời tiết, Dialogflow sẽ nhận diện các thành ngữ trong câu hỏi để tìm đến intent “Thời tiết” đã được tạo ra trước đó
Trang 28Hình II-3 Qúa trình nhận diện Intent trong Dialogflow
Các thành phần cơ bản của một intent:
- Training phases: Đây là những ví dụ các câu hỏi mà người dùng có thể nói Khi
người dùng nói hoặc đưa ra một đoạn văn bản có ý nghĩa giống với các ví dụ ở đây thì Dialogflow sẽ sử dụng intent này
- Action: Khi intent được xác định, Dialogflow sẽ cung cấp một hành động đến
ứng dụng Hành động này có thể được dùng để kích hoạt một số hành động xác định đã được định nghĩa ở trước trong ứng dụng
- Parameters: Khi một intent được xác định, Dialogflow cung cấp các giá trị được
trích xuất từ biểu thức người dùng cuối dưới dạng tham số Mỗi tham số có một kiểu được gọi là kiểu thực thể, chỉ ra cách mà dữ liệu được lấy Không giống dữ liệu gốc do người dùng nhập, các tham số này là những dữ liệu có cấu trúc có thể dễ dàng thực thi các phép toán logic hoặc để tạo ra các câu trả lời
- Response: Là những văn bản, giọng nói hoặc là các phản hổi trực quan để trả về
cho người dùng cuối Nó cung cấp cho người dùng câu trả lời, hoặc câu hỏi để thu thập thêm thông tin từ phía người dùng hoặc dùng để kết thúc cuộc hội thoại Hình ảnh dưới đây mô phỏng cách thức hoạt động của các thành phần của intent Đầu tiên người dùng sẽ đưa ra một câu hỏi Kế đến agent sẽ tìm kiếm intent phù hơp trong các intent đã được thiết lập từ trước thông qua các Training phases do lập trình viên tạo nên Cuối cùng Dialogflow sử dụng response lấy được từ intent để phản hồi lại cho người dùng
Trang 29Hình II-4 Cách thực hoạt động của một Intent
3.2.3 Entity
Entity là bộ từ khóa giúp cho Dialogflow có thể trích xuất dữ liệu từ dữ liệu thô do người dùng cung cấp để có thể tham số hóa dữ liệu từ phía người dùng, từ đó giúp Dialogflow có thể xác định được intent phù hợp
Hình ảnh bên dưới đây mô phỏng lại quá trình mà fulfillment hoạt động trong Dialogflow
Trang 30Hình II-5 Cách thức hoạt động của fulfillment
4 HERE Android SDK
4.1 Tổng quan
HERE Android SDK cung cấp một tập hợp các giao diện lập trình cho phép các nhà
phát triển để xây dựng một ứng dụng Android phong phú, nhận biết về mặt địa lý bằng
cách tận dụng một nền tảng lập bản đồ Thông qua SDK, các nhà phát triển có thể thêm
các tính năng vị trí phong phú như định tuyến, tương tác bản đồ và tìm kiếm địa điểm toàn
cầu cho các ứng dụng của họ Phía máy khách mạnh mẽ HERE Android SDK cũng bao
gồm một công cụ phức tạp để hiển thị dữ liệu bản đồ và tính toán các tuyến đường Ngoài
tải xuống dữ liệu bản đồ động, SDK cũng hỗ trợ bản đồ ngoại tuyến bằng cách sử dụng dữ
liệu bản đồ đã lưu trong bộ nhớ cache trước đó hoặc gói bản đồ đã tải xuống
4.2 Các tính năng chính của HERE Android SDK
4.2.1 Tạo lập bản đồ
- Tự động tải xuống bản đồ của hơn 120 quốc gia trên thế giới với hơn 60 ngôn
ngữ
- Hỗ trợ các loại bản đồ: bản đồ bình thường, bản đồ vệ tinh, bản đồ giao thông…
- Cung cấp các cử chỉ hỗ trợ người dùng trong việc thao tác với bản đồ
- Đánh dấu các điểm trên bản đồ
- Hiển thị bản đồ 2D/3D
Trang 31- Hiển thị lưu lượng giao thông thời gian thực
4.2.2 Tìm kiếm
- Tìm kiếm qua một loạt nội dung địa lý trên toàn cầu (bao gồm các đường phố, điểm địa chỉ, và các địa điểm được phân loại)
- Tìm kiếm một địa điểm cụ thể hoặc khám phá theo danh mục
- Truy cập thông tin chi tiết phong phú về điểm ưa thích từ các nguồn nội dung của bên thứ ba (bao gồm hình ảnh, xếp hạng, đánh giá và bài xã luận)
- Điều hướng bằng âm thanh
- Thông tin động bao gồm biển chỉ dẫn, thông tin làn đường hiện tại của người lái
Trang 32hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP
5.2 Các thành phần của RESTful API
API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo
đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML
Rest (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử
lý dữ liệu
RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau
Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng dụng web để quản các resource RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng để thiết kế một RESTful API
5.3 Nguyên lý hoạt động
Rest hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ
sử dụng những phương thức HTTP riêng
- GET (SELECT): Trả về một Resource hoặc một danh sách Resource
- POST (CREATE): Tạo mới một Resource
- PUT (UPDATE): Cập nhật thông tin cho Resource
Trang 33Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
Hình ảnh bên dưới minh hoạt cho cách làm việc của RESTful API
Hình II-6 Cách thực hoạt động của RestAPI
Trang 34CHƯƠNG III PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH
1 Phạm vi hệ thống
Ứng dụng được xây dựng trên nền tảng Android SDK, Google Firebase, Dialogflow Hệ thống được xây dựng là kết quả của việc khảo sát yêu cầu, tìm hiểu, nghiên cứu các tài liệu được giới thiệu ở chương 2
2 Kiến trúc hệ thống
Hình III-1 Kiến trúc hệ thống
Mô hình hệ thống được xây dựng theo sơ đồ trên
Danh sách người dùng ứng dụng của hệ thống được quản lý bởi Cloud Firestore của Google Firebase Ứng dụng sử dụng các API của Firebase SDK cung cấp để thực hiện các thao tác với Cloud Firestore Danh sách thông tin của các địa điểm du lịch được lưu trữ ở một cơ sơ dữ liệu khác (do trong thời gian ngắn chưa thể triển khai nên nhóm tạm thời triển khai database này ở local) Để lấy thông tin các địa điểm du lịch, nhà hàng, khách sạn… ứng dụng sẽ sử dụng các API của một backend được thiết kế riêng Toàn bộ dữ liệu từ database sẽ được xử lý để trả về cho ứng dụng Về phần chatbot, Dialogflow có cơ chế cho
Trang 35phép kết nối với cơ sở dữ liệu thông qua webhook Webhook này sẽ tham số hóa các dữ liệu và sử dụng API từ backend để có thể xây dựng các response thích hợp để trả về cho ứng dụng
Người đi du lịch hoặc
đang lên kế hoạch đi du
lịch
Là những người có muốn tìm kiếm để đi du lịch hoặc đang lên kế hoạch đi du lịch cùng người thân, bạn bè, đồng nghiệp
Bảng III-1 Danh sách actor
3.1.2 Sơ đồ usecase tổng quát
Hình III-2 Sơ đồ usecase tổng quát
1 Đăng nhập
Đăng nhập vào ứng dụng để có thể sử dụng các tính năng
Trang 369 Thêm bạn bè Thêm một người dùng khác vào danh sách bạn bè
10 Nhờ chatbot tư vấn địa
điểm du lịch
Trò chuyện cùng chatbot để tìm ra địa điểm du lịch phù hợp nhất
11 Xem thông tin du lịch
Xem thông tin du lịch như các địa điểm nổi bật, cẩm nang du lịch
12 Xem thông tin địa điểm
du lịch Xem thông tin chi tiết về một địa điểm du lịch
Trang 3713 Xem thông tin nhà
hàng, quán ăn
Xem thông tin chi tiết về một nhà hàng hoặc quán
ăn ở địa điểm du lịch
14 Xem thông tin nhà nghỉ,
khách sạn
Xem thông tin chi tiết về một khách sạn, hoặc nhà nghỉ ở địa điểm du lịch
15 Đăng bình luận Để lại bình luận đánh giá địa điểm du lịch
Bảng III-2 Danh sách các usecase
Dòng sự kiện khác - Email hoặc mật khẩu không hợp lệ
- Yêu cầu người dùng nhập lại email, mật khẩu hoặc đề nghị người dùng đăng kí tài khoản mới
Trạng thái hệ thống trước
khi thực hiện usecase
Màn hình đăng nhập
Trang 38Trạng thái hệ thống sau khi
Tên chức năng Đăng kí
Tóm tắt Đăng kí tài khoản mới
- Ứng dụng hiện thị màn hình chính
Trang 39Dòng sự kiện khác - Người dùng nhập hoặc nhập sai thông tin tên đăng
nhập, mật khẩu, email
- Yêu cầu người dùng nhập lại thông tin theo yêu cầu sau:
+ Email không được bỏ trống
+ Tên đăng nhập không được trống, không chứa số và các kí tự đặc biệt
+ Mật khẩu không dưới 8 kí tự, chứa chữ hoa, chữ thường, kí tự đặc biệt
Trang 40Dòng sự kiện khác - Thiết bị không kết nối internet
- Yêu cầu người dùng kết nối internet hoặc load map view từ bộ nhớ cache nếu thiết bị đã kết nối internet từ lần sử dụng trước
Màn hình hiển thị bản đồ cùng vị trí của người dùng
Các yêu cầu đặc biệt - Người dùng phải đăng nhập vào hệ thống
- Thiết bị phải được kết nối internet
- Ứng dụng phải được cấp các quyền như:
+ Truy cập internet
+ Sử dụng GPS của thiết bị
Ngoại lệ Không có
Bảng III-5 Đặc tả usecase “Xem bản đồ”
3.1.3.4 Đặc tả usecase “Tìm kiếm địa điểm”
Tên chức năng Tìm kiếm địa điểm
Tóm tắt Tìm kiếm địa điểm trên bản đồ thông qua tên địa