BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CƠNG NGHỆ THÔNG TIN
THIẾT KẾ VÀ XÂY DỰNG ỨNG DỤNG
BUSINESS WEATHER
GVHD:NGUYỄN TRẦN THI VĂN
SVTT:LÂM QUANG LỊCH
MSSV:15110240
SVTH: LƯU QUANG TRUNG
MSSV:15110345
SKL 0 0 5 7 3 8
Tp. Hồ Chí Minh, 2019
do an
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
LÂM QUANG LỊCH
15110240
LƯU QUANG TRUNG
15110345
Đề tài:
THIẾT KẾ VÀ XÂY DỰNG ỨNG DỤNG
BUSINESS WEATHER
KHÓA LUẬN TỐT NGHIỆP
GIÁO VIÊN HƯỚNG DẪN
ThS. NGUYỄN TRẦN THI VĂN
Khóa 2015 - 2019
do an
ĐH SƯ PHẠM KỸ THUẬT TP.HCM
XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CNTT
Độc lập – Tự do – Hạnh phúc
******
******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên sinh viên:
Lâm Quang Lịch
MSSV: 15110240
Lưu Quang Trung
MSSV: 15110345
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Tên đề tài: Thiết kế và xây dựng ứng dụng Business Weather
Họ và tên Giáo viên hướng dẫn: ThS. Nguyễn Trần Thi Văn
NHẬN XÉT:
1. Về nội dung đề tài và khối lượng thực hiện:
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
2. Ưu điểm:
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
3. Khuyết điểm:
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
4. Đề nghị cho bảo vệ hay không?
5. Đánh giá loại:
6. Điểm:
Tp. Hồ Chí Minh, ngày … tháng … năm 2019
Giáo viên hướng dẫn
(Ký và ghi rõ họ tên)
do an
ĐH SƯ PHẠM KỸ THUẬT TP.HCM
XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CNTT
Độc lập – Tự do – Hạnh phúc
******
******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên sinh viên:
Lâm Quang Lịch
MSSV: 15110240
Lưu Quang Trung
MSSV: 15110345
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Tên đề tài: Thiết kế và xây dựng ứng dụng Business Weather
Họ và tên Giáo viên phản biện: ………………………………………………………...
NHẬN XÉT:
1. Về nội dung đề tài và khối lượng thực hiện:
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
2. Ưu điểm:
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
3. Khuyết điểm:
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
4. Đề nghị cho bảo vệ hay không?
5. Đánh giá loại:
6. Điểm:
Tp. Hồ Chí Minh, ngày … tháng … năm 2019
Giáo viên phản biện
(Ký và ghi rõ họ tên)
do an
LỜI CẢM ƠN
Trong suốt quá trình học tập tại trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí
Minh, chúng em đã học được rất nhiều kiến thức, lời khuyên, sự chỉ bảo, sự giúp đỡ từ các
thầy cô khoa Công Nghệ Thông Tin để hôm nay chúng em đã tạo ra một sản phẩm tốt nhất
từ trước đến nay của chúng em được thể hiện thông qua đề tài này – Khóa Luận Tốt Nghiệp.
Đầu tiên, nhóm em xin chân thành gửi lời cảm ơn đến Khoa Công nghệ thông tin, trường
trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều kiện cho nhóm
em thực hiện đề tài này.
Thứ hai, nhóm em xin kính gửi đến thầy Nguyễn Trần Thi Văn lời cảm ơn sâu sắc nhất.
Trong quá trình thực hiện đề tài, Thầy đã hướng dẫn, chỉ bảo, giúp đỡ và giải đáp thắc mắc
của chúng em một cách tận tình và hết sức có thể.
Cuối cùng, nhóm em xin chân thành cảm ơn tập thể Giáo viên Khoa Công nghệ thông
tin, trường Đại học Sư phạm kỹ thuật Thành phố Hồ Chí Minh về những bài giảng trong
suốt khóa học, về những kiến thức nền tảng cũng như những kiến thức về chun ngành đã
giúp cho nhóm em hồn thành tốt đề tài này.
Trong q trình thực hiện đề tài, ln có những thuận lợi và khó khăn, chúng em ln
cố gắng giải quyết theo hướng tối ưu nhất những chắc chắn sẽ khơng thể tránh được sai xót.
Chúng em kính mong nhận được những ý kiến đóng góp quý báu và sự cảm thông của Thầy
Cô để chúng em học hỏi thêm được nhiều bài học kinh nghiệm và sẽ hồn thành tốt hơn
trong tương lai.
Một lần nữa nhóm em xin chân thành cảm ơn!
Sinh viên 1: Lâm Quang Lịch
Sinh viên 2: Lưu Quang Trung
do an
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA CNTT
******
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
Họ và tên sinh viên:
Lâm Quang Lịch
MSSV: 15110240
Lưu Quang Trung
MSSV: 15110345
Thời gian làm khóa luận từ 15/03/2019 đến 28/06/2019
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Tên đề tài: Thiết kế và xây dựng ứng dụng Business Weather
Họ và tên Giáo viên hướng dẫn: ThS. Nguyễn Trần Thi Văn
Nhiệm vụ thực hiện:
Lý thuyết:
- Kotlin, Firebase, Database Room, Retrofit, RxJava, Google Maps API, Open
Weather Map API, Google Places SDK, React Js.
Thực hành:
- Sử dụng Firebase authentication trong đăng nhập vào ứng dụng.
- Ngơn ngữ sử dụng chính là Kotlin.
- Sử dụng Firebase storage để lưu trữ dữ liệu người dùng.
- Sử dụng Database Room để lưu dữ liệu ở dạng local khi khơng có internet.
- Sử dụng Retrofit, RxJava để sử dụng chức năng của API (OpenWeatherMap).
- Sử dụng chức năng do API của Google Maps (Directions API) cung cấp để làm
chỉ đường tới các địa điểm.
- Sử dụng chức năng do API của Open Weather Map (Weather API) cung cấp để
làm chức năng xem chi tiết dự báo thời tiết.
- Sử dụng Google Places SDK để sử dụng thanh tìm kiếm địa điểm được hỗ trợ bởi
Google và lấy thông tin địa điểm được chọn khi tìm kiếm.
- Sử dụng React Js để viết website quản lý các đối tượng dữ liệu trong ứng dụng.
do an
MỤC LỤC
LỜI CẢM ƠN ............................................................................................................................. 2
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP ................................................................................ 3
PHẦN MỞ ĐẦU ........................................................................................................................ 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ............................................................................................ 2
1.1
1.2
1.3
1.4
1.5
GIỚI THIỆU VỀ KOTLIN ........................................................................................... 2
GIỚI THIỆU VỀ FIREBASE & ROOM ....................................................................... 5
MÃ NGUỒN MỞ RXJAVA & RETROFIT ................................................................ 10
OPENWEAHTERMAP & GOOGLE APIS ................................................................ 11
GIỚI THIỆU VỀ REACT JS ...................................................................................... 14
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU .................................... 19
2.1
KHẢO SÁT HIỆN TRẠNG ........................................................................................... 19
2.1.1
KHẢO SÁT ............................................................................................................ 19
2.1.1.1
2.1.1.2
2.1.1.3
2.1.1.4
Weather Forecast .............................................................................................. 19
Best Weather .................................................................................................... 21
Word weather forecast ...................................................................................... 22
Thời tiết Việt Nam ........................................................................................... 24
XÁC ĐỊNH YÊU CẦU .................................................................................................. 25
2.2
YÊU CẦU CHỨC NĂNG ....................................................................................... 25
YÊU CẦU PHI CHỨC NĂNG ................................................................................ 27
2.2.1
2.2.2
CHƯƠNG 3: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CSDL .................................................. 28
3.1
MÔ TẢ CÔNG VIỆC ................................................................................................. 28
3.1.1
3.1.2
3.2
3.3
LƯỢC ĐỒ USECASE DIAGRAM ............................................................................. 55
ĐẶC TẢ USECASE MỘT SỐ TÍNH NĂNG CHÍNH ................................................ 56
3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
3.4
User ..................................................................................................................... 28
Admin ................................................................................................................. 50
Nghiệp vụ Add weather place .............................................................................. 56
Nghiệp vụ Add favorite place .............................................................................. 57
Nghiệp vụ Giving directions ................................................................................ 58
Nghiệp vụ Remove activity log ............................................................................ 59
Nghiệp vụ Edit profile ......................................................................................... 60
SEQUENCE DIAGRAM MỘT SỐ TÍNH NĂNG CHÍNH ......................................... 61
3.4.1
User ..................................................................................................................... 61
3.4.1.1
Nghiệp vụ Managing/Add/Remove weather place & View current/other weather
61
3.4.1.2
Nghiệp vụ Managing/Add/Remove favorite place & View favorite place details
62
do an
3.4.1.3
Nghiệp vụ Giving directions, Search original point/destination point ................ 63
3.4.1.4
Nghiệp vụ View/Edit profile............................................................................. 64
3.4.1.5
Nghiệp vụ Add temporary weather place .......................................................... 65
3.4.1.6
Nghiệp vụ Add temporary favorite place .......................................................... 66
3.4.2
Admin ................................................................................................................. 67
3.4.2.1
Nghiệp vụ Counting the most searched City ..................................................... 67
3.4.2.2
Nghiệp vụ View/Remove weather place/Search by user ................................... 67
3.4.2.3
Nghiệp vụ Managing user/Search by user ......................................................... 68
3.4.2.4
Nghiệp vụ View/Remove favorite place/Search by user.................................... 69
3.4.2.5
Nghiệp vụ View/Remove activity log/Search by user ....................................... 69
3.5
BẢNG MÔ TẢ THUỘC TÍNH ................................................................................... 70
3.5.1
3.5.2
3.5.3
3.5.4
3.5.5
3.5.6
3.5.7
3.5.8
users .................................................................................................................... 70
places................................................................................................................... 70
favoriteplace ........................................................................................................ 70
history ................................................................................................................. 71
tempplace ............................................................................................................ 71
tempfavplace ....................................................................................................... 71
admin................................................................................................................... 72
statistics ............................................................................................................... 72
CHƯƠNG 4: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ................................................................... 73
4.1
ỨNG DỤNG BUSINESS WEATHER ........................................................................... 73
4.1.1
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
4.1.7
4.1.8
4.1.9
4.1.10
4.1.11
4.2
Giao diện Intro ........................................................................................................ 73
Giao diện Login ...................................................................................................... 74
Giao diện Sign up .................................................................................................... 75
Giao diện Home ...................................................................................................... 76
Giao diện Favorite Place.......................................................................................... 77
Giao diện Weather Place Management .................................................................... 78
Giao diện Direction ................................................................................................. 79
Giao diện History .................................................................................................... 81
Giao diện Detail Place ............................................................................................. 82
Giao diện Profile ..................................................................................................... 83
Giao diện Edit Profile .............................................................................................. 84
WEBSITE QUẢN LÝ .................................................................................................... 85
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
Trang Login ............................................................................................................ 85
Trang User Management ......................................................................................... 86
Trang Weather Place Management .......................................................................... 87
Trang Favorite Place Management .......................................................................... 88
Trang Activity Log Management ............................................................................. 89
Trang Searched City Statistics ................................................................................. 90
CHƯƠNG 5: CÀI ĐẶT ............................................................................................................ 91
do an
5.1
CÀI ĐẶT ....................................................................................................................... 91
5.1.1
5.1.2
5.1.3
5.1.4
5.2
Ngơn ngữ lập trình .................................................................................................. 91
Thư viện .................................................................................................................. 92
Hệ quản trị CSDL .................................................................................................... 92
Sơ đồ lớp ................................................................................................................. 94
KIỂM THỬ .................................................................................................................... 95
5.2.1
5.2.2
5.2.3
5.2.4
5.2.5
5.2.6
5.2.7
5.2.8
Màn hình Home ...................................................................................................... 95
Màn hình Weather Place Management..................................................................... 97
Màn hình Favorite Place .......................................................................................... 97
Màn hình Detail Place ............................................................................................. 98
Màn hình Direction ................................................................................................. 99
Màn hình History ...................................................................................................102
Màn hình Profile ....................................................................................................103
Màn hình Edit Profile .............................................................................................104
PHẦN KẾT LUẬN ..................................................................................................................105
TÀI LIỆU THAM KHẢO ........................................................................................................106
MỤC LỤC BẢNG BIỂU
Bảng biểu 3.1 Bảng biểu cầu chức năng nghiệp vụ user ............................................................ 28
Bảng biểu 3.2 Bảng quy định / Công thức liên quan user ........................................................... 29
Bảng biểu 3.3 Bảng yêu cầu chức năng hệ thống user ............................................................... 35
Bảng biểu 3.4 Bảng biểu cầu chức năng nghiệp vụ admin ......................................................... 50
Bảng biểu 3.5 Bảng quy định / Công thức liên quan admin ....................................................... 50
Bảng biểu 3.6 Bảng yêu cầu chức năng hệ thống admin ............................................................ 52
Bảng biểu 3.7 Mô tả Use Case Add weather place ..................................................................... 56
Bảng biểu 3.8 Mô tả Use Case Add favorite place ..................................................................... 57
Bảng biểu 3.9 Mô tả Use Case Giving directions ....................................................................... 58
Bảng biểu 3.10 Mô tả Use Case Remove activity log ................................................................ 59
Bảng biểu 3.11 Mô tả Use Case Edit profile .............................................................................. 60
Bảng biểu 3.12 Bảng mô tả thuộc tính users .............................................................................. 70
Bảng biểu 3.13 Bảng mơ tả thuộc tính places ............................................................................ 70
Bảng biểu 3.14 Bảng mơ tả thuộc tính favoriteplace .................................................................. 70
Bảng biểu 3.15 Bảng mơ tả thuộc tính history ........................................................................... 71
Bảng biểu 3.16 Bảng mơ tả thuộc tính tempplace ...................................................................... 71
do an
Bảng biểu 3.17 Bảng mơ tả thuộc tính tempfavplace ................................................................. 71
Bảng biểu 3.18 Bảng mơ tả thuộc tính admin ............................................................................ 72
Bảng biểu 3.19 Bảng mơ tả thuộc tính statistics......................................................................... 72
Bảng biểu 4.1 Bảng mô tả xử lý giao diện Intro......................................................................... 73
Bảng biểu 4.2 Bảng mô tả xử lý giao diện Login ....................................................................... 74
Bảng biểu 4.3 Bảng mô tả xử lý giao diện Sign up .................................................................... 75
Bảng biểu 4.4 Bảng mô tả xử lý giao diện Home ....................................................................... 76
Bảng biểu 4.5 Bảng mô tả xử lý giao diện Favorite Places......................................................... 77
Bảng biểu 4.6 Bảng mô tả xử lý giao diện Weather Place Management ..................................... 78
Bảng biểu 4.7 Bảng mô tả xử lý giao diện Direction.................................................................. 80
Bảng biểu 4.8 Bảng mô tả xử lý giao diện History..................................................................... 82
Bảng biểu 4.9 Bảng mô tả xử lý giao diện Detail Place ............................................................. 83
Bảng biểu 4.10 Bảng mô tả xử lý giao diện Profile .................................................................... 83
Bảng biểu 4.11 Bảng mô tả xử lý giao diện Edit Profile ............................................................ 85
Bảng biểu 4.12 Bảng mô tả xử lý giao diện trang Login ............................................................ 85
Bảng biểu 4.13 Bảng mô tả xử lý giao diện trang User Managegment ....................................... 86
Bảng biểu 4.14 Bảng mô tả xử lý giao diện trang Weather Place Management .......................... 87
Bảng biểu 4.15 Bảng mô tả xử lý giao diện trang Favorite Place Management .......................... 88
Bảng biểu 4.16 Bảng mô tả xử lý giao diện trang Activity Log Management............................. 89
Bảng biểu 5.1 Kiểm thử màn hình Home................................................................................... 95
Bảng biểu 5.2 Kiểm thử màn hình Weather Place Management ................................................. 97
Bảng biểu 5.3 Kiểm thử màn hình Favorite Place ...................................................................... 97
Bảng biểu 5.4 Kiểm thử màn hình Detail Place ......................................................................... 98
Bảng biểu 5.5 Kiểm thử màn hình Direction ............................................................................. 99
Bảng biểu 5.6 Kiểm thử màn hình History ...............................................................................102
Bảng biểu 5.7 Kiểm thử màn hình Profile ................................................................................103
Bảng biểu 5.8 Kiểm thử màn hình EditProfile ..........................................................................104
MỤC LỤC HÌNH ẢNH
Hình 1.1 Các thành phần chính trong Room ............................................................................... 9
Hình 2.1 Hình ảnh ứng dụng Weather Forecast 1 ..................................................................... 19
Hình 2.2 Hình ảnh ứng dụng Weather Forecast 2 ..................................................................... 19
Hình 2.3 Hình ảnh ứng dụng Weather Forecast 3 ..................................................................... 20
do an
Hình 2.4 Hình ảnh ứng dụng Weather Forecast 4 ..................................................................... 20
Hình 2.5 Hình ảnh ứng dụng Best Weather 1............................................................................ 21
Hình 2.6 Hình ảnh ứng dụng Best Weather 2............................................................................ 21
Hình 2.7 Hình ảnh ứng dụng Best Weather 3............................................................................ 21
Hình 2.8 Hình ảnh ứng dụng Best Weather 4............................................................................ 21
Hình 2.9 Hình ảnh ứng dụng Word weather forecast 1 ............................................................. 22
Hình 2.10 Hình ảnh ứng dụng Word weather forecast 2 ........................................................... 22
Hình 2.11 Hình ảnh ứng dụng Word weather forecast 3 ........................................................... 23
Hình 2.12 Hình ảnh ứng dụng Word weather forecast 4 ........................................................... 23
Hình 2.13 Hình ảnh ứng dụng Thời tiết Việt Nam 1 ................................................................. 24
Hình 2.14 Hình ảnh ứng dụng Thời tiết Việt Nam 2 ................................................................. 24
Hình 2.15 Hình ảnh ứng dụng Thời tiết Việt Nam 3 ................................................................. 24
Hình 2.16 Hình ảnh ứng dụng Thời tiết Việt Nam 4 ................................................................. 24
Hình 3.1 Hình ảnh Usecase Diagram của User .......................................................................... 55
Hình 3.2 Hình ảnh Usecase Diagram của Admin ....................................................................... 56
Hình 3.3 Sequence Diagram Nghiệp vụ Managing/Add/Remove weather place & View
current/other weather ................................................................................................................ 61
Hình 3.4 Sequence Diagram Nghiệp vụ Managing/Add/Remove favorite place & View favorite
place details .............................................................................................................................. 62
Hình 3.5 Sequence Diagram Nghiệp vụ Giving directions, Search original point/destination point
................................................................................................................................................. 63
Hình 3.6 Sequence Diagram Nghiệp vụ View/Edit profile ......................................................... 64
Hình 3.7 Sequence Diagram Nghiệp vụ Add temporary weather place ...................................... 65
Hình 3.8 Sequence Diagram Nghiệp vụ Add temporary favorite place ...................................... 66
Hình 3.9 Nghiệp vụ Counting the most searced City ................................................................. 67
Hình 3.10 Sequence Diagram Nghiệp vụ View/Remove weather place/Search by user .............. 67
Hình 3.11 Sequence Diagram Nghiệp vụ Managing user/Search by user ................................... 68
Hình 3.12 Sequence Diagram Nghiệp vụ View/Remove favorite place/Search by user .............. 68
Hình 3.13 Sequence Diagram Nghiệp vụ View/Remove activity log/Search by user ................. 69
Hình 4.1 Giao diện Intro ........................................................................................................... 73
Hình 4.2 Giao diện Login .......................................................................................................... 74
Hình 4.3 Giao diện Sign up ....................................................................................................... 75
Hình 4.4 Giao diện Home ......................................................................................................... 76
do an
Hình 4.5 Giao diện FavPlace 1 .................................................................................................. 77
Hình 4.6 Giao diện FavPlace 2 .................................................................................................. 77
Hình 4.7 Giao diện FavPlace 3 .................................................................................................. 77
Hình 4.8 Giao diện Click to Weather Place Management .......................................................... 78
Hình 4.9 Giao diện Weather Place Management........................................................................ 78
Hình 4.10 Giao diện Tìm kiếm địa điểm.................................................................................... 78
Hình 4.11 Giao diện Direction 1................................................................................................ 79
Hình 4.12 Giao diện Direction 2................................................................................................ 79
Hình 4.13 Giao diện Direction - Stepbystep .............................................................................. 80
Hình 4.14 Giao diện Direction – Start ....................................................................................... 80
Hình 4.15 Giao diện History 1.................................................................................................. 81
Hình 4.16 Giao diện History 2.................................................................................................. 81
Hình 4.17 Giao diện History 3.................................................................................................. 81
Hình 4.18 Giao diện Detail Place .............................................................................................. 82
Hình 4.19 Giao diện Profile ...................................................................................................... 83
Hình 4.20 Giao diện Edit Profile ............................................................................................... 84
Hình 4.21 Giao diện Edit Profile 2 ............................................................................................ 84
Hình 4.22 Giao diện Password Form ......................................................................................... 84
Hình 4.23 Giao diện Edit Profile Form ...................................................................................... 84
Hình 4.24 Giao diện trang Login ............................................................................................... 85
Hình 4.25 Giao diện trang User Management ............................................................................ 86
Hình 4.26 Giao diện User Information Modal trong trang User Management ............................ 86
Hình 4.27 Giao diện trang Weather Place Management ............................................................. 87
Hình 4.28 Giao diện trang Favorite Place Management ............................................................. 88
Hình 4.29 Giao diện trang Activity Log Management ............................................................... 89
Hình 4.30 Giao diện trang Searched City Statistics.................................................................... 90
Hình 5.1 Sơ đồ lớp .................................................................................................................... 94
do an
KẾ HOẠCH THỰC HIỆN
STT
Thời gian
Nhiệm vụ
-
Ghi chú
Tìm hiểu về Kotlin, Firebase, Database
Room, Retrofit + RxJava2, Google Places
SDK, OpenWeatherMap APIs, Google Maps
1
2
3
15/03 – 29/03
(Tuần 1 + 2)
30/03 – 12/04
(Tuần 3 + 4)
APIs, React Js.
hiện: Lịch +
-
Mô tả ứng dụng.
-
Xác định chức năng.
-
Vẽ usecase diagram.
-
Thiết kế prototype.
-
Thiết kế giao diện.
Người thực
-
Thiết kế CSDL và triển khai trên firebase.
hiện: Lịch +
Trung
Trung
-
Xử lý chức năng đăng nhập.
Người thực
-
Xử lý chức năng đăng ký.
hiện: Lịch +
-
Xử lý chức năng hiển thị thời tiết.
-
Xử lý chức năng hiển thị profile.
-
Xử lý chức năng sửa profile.
-
Xử lý chức năng tìm kiếm địa điểm.
-
Xử lý chức năng thêm/xóa địa điểm tìm
13/04 – 26/04
(Tuần 5 + 6)
Người thực
kiếm.
-
Xử lý chức năng đăng nhập trên website
quản lý.
-
Xử lý chức năng quản lý người dùng trên
website quản lý.
-
Xử lý chức năng quản lý địa điểm thời tiết
trên website quản lý.
-
Xử lý chức năng quản lý địa điểm yêu thích
trên website quản lý.
do an
Trung
-
-
Xử lý chức năng thêm/xóa địa điểm u
Người thực
thích.
hiện: Lịch +
Xử lý chức năng hiển thị chi tiết thông tin
Trung
địa điểm yêu thích.
4
27/04 – 17/05
(Tuần 7 + 8 + 9)
-
Xử lý chức năng xem/xóa lịch sử tìm kiếm.
-
Xử lý chức năng chỉ đường.
-
Xử lý chức năng logout.
-
Xử lý chức năng tự động gợi ý người dùng
thêm địa điểm thời tiết.
-
Xử lý chức năng tự động gợi ý người dùng
thêm địa điểm yêu thích.
-
Xử lý chức năng quản lý địa điểm tạm thời
trên website quản lý.
-
Xử lý chức năng quản lý lịch sử tìm kiếm
trên website quản lý.
5
18/05 – 31/05
-
chương trình.
(Tuần 10 + 11)
-
6
01/06 – 14/06
(Tuần 12 + 13)
Chỉnh sửa, tổng hợp báo cáo, kiểm thử
-
Người thực
hiện: Lịch +
Trung
Kiểm tra lại toàn bộ báo cáo, ứng dụng và
Người thực
website quản lý.
hiện: Lịch +
Trao đổi với GVHD về báo cáo, ứng dụng và
Trung
website quản lý.
7
15/06 – 28/06
(Tuần 14 + 15)
Người thực
-
Hoàn tất chương trình.
hiện: Lịch +
Trung
Ý kiến của Giáo viên hướng dẫn
(Ký và ghi rõ họ tên)
Ngày … tháng … năm 2019
Người viết đề cương
do an
PHẦN MỞ ĐẦU
PHẦN MỞ ĐẦU
1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI
Ứng dụng Business Weather nhắm vào đối tượng những người đi làm có mật độ đi
cơng tác hay du lịch thường xuyên hoặc mang tính tương đối. Cứ mỗi lần đi công tác hay
du lịch họ thường phải kiểm tra thời tiết của thành phố đó hay tìm kiếm các địa điểm ở
thành phố để ghé đến nhằm đảm bảo sự thuận lợi nhất có thể, bình qn mỗi người sẽ có
vài thành phố hoặc địa điểm họ thường ghé đến để cơng tác hay du lịch mang tính lặp lại.
Cho nên chúng tôi muốn xây dựng ứng dụng thời tiết du lịch Business Weather để người
dùng có thể theo dõi thời tiết ở nhiều thành phố khác nhau và các địa điểm thường ghé bên
trong các thành phố đó.
2. MỤC ĐÍCH CỦA ĐỀ TÀI
2.1.
Mục đích về cơng nghệ
Tìm hiểu về ngơn ngữ Kotlin.
2.2.
Mục đích về ứng dụng
Chúng tơi muốn xây dựng ứng dụng thời tiết du lịch Business Weather để thay thế
các ứng dụng thời tiết hiện nay chỉ cho phép xem thời tiết ở vị trí hiện tại. Ứng dụng sẽ
giúp người dùng có thể lưu trữ lại các thành phố thường ghé thăm hay sắp ghé thăm để tiện
theo dõi thời tiết của nhiều thành phố cùng lúc, đồng thời có thể lưu lại các địa danh yêu
thích trên các địa điểm để tiện cho việc ghé vào lần sau. Ngồi ra, ứng dụng cịn hỗ trợ chỉ
đường để giúp người dùng đang sử dụng ứng dụng có thể tra đường đi ngay đến các địa
điểm yêu thích hay bất cứ địa điểm nào họ muốn mà không cần sử dụng ứng dụng trung
gian.
3. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
-
Tìm hiểu về ngơn ngữ lập trình Kotlin.
-
Tìm hiểu về các API: Google Maps APIs, OpenWeatherMap APIs.
-
Tìm hiểu về các ứng dụng thời tiết liên quan.
4. KẾT QUẢ DỰ KIẾN
-
Hoàn thành ứng dụng đúng tiến độ
-
Ứng dụng có đầy đủ chức năng đã đề ra
1
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 GIỚI THIỆU VỀ KOTLIN
Kotlin là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được
biên dịch sang mã nguồn JavaScript hay sử dụng cơ sở hạ tầng trình biên dịch LLVM. Nó
được tài trợ và phát triển bởi bởi JetBrains. Mặc dù cú pháp khơng tương thích với Java,
nhưng hiện thực JVM của thư viện chuẩn Kotlin được thiết kế để tương tác với mã Java và
dựa vào mã Java từ Java Class Library có sẵn, ví dụ như collections framework. Kotlin sử
dụng suy luận kiểu một cách tích cực để xác định kiểu của giá trị và biểu thức vốn không
được nêu rõ. Điều này giúp giảm tính dài dịng của ngơn ngữ so với Java, vốn thường địi
hỏi tồn bộ đặc kiểu một cách dư thừa mãi đến phiên bản 10. Mã Kotlin có thể chạy trên
JVM đến phiên bản Java 11 mới nhất.
Kể từ Android Studio 3.0 (phát hành vào tháng 10 năm 2017), Kotlin được Google hỗ
trợ đầy đủ để sử dụng cho việc lập trình ứng dụng cho hệ điều hành Android của họ, và
được nhúng trực tiếp vào trong gói cài đặt của IDE đó để thay thế cho trình biên dịch Java
tiêu chuẩn. Trình biên dịch Android Kotlin cho phép người dùng chọn lựa giữa hướng đến
mã bytecode tương thích với Java 6, hay Java 8.
1.1.1 Kotlin Và Android
Lập trình Android là một trong những lĩnh vực quan trọng mà JetBrains hướng đến
với Kotlin. Ngôn ngữ mang đến tính tương thích ngược với Java 6 và 7, các phiên bản
của Java hầu hết đều tương thích chặt chẽ với Android. JetBrains cũng hy vọng Kotlin
sẽ được sử dụng trong các lĩnh vực khác chẳng hạn như các ứng dụng lớn và phức tạp,
đề cao hiệu suất.
Các nhà phát triển khơng có lựa chọn thay thế cho việc phát triển ứng dụng Android
bằng ngôn ngữ Java. Mặc dù được sử dụng rộng rãi, nhưng trong quá trình hoạt động
ngơn ngữ Java sinh ra rất nhiều file rác. Java 8 đã giải quyết một số vấn đề ngôn ngữ và
đặc biệt hơn là với Java 10. Để có được nhiều lợi ích từ việc chỉnh sửa trong hai phiên
bản này, bạn phải đặt SDK tối thiểu sang Android 24 chỉ để sử dụng Java 8. Kotlin
nhắm đến việc lấp đầy khoảng trống đó của một ngơn ngữ hiện đại đang thiếu cho nền
tảng Android.
2
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1.2 Ưu Nhược Điểm Của Kotlin
1.1.2.1 Ưu điểm:
Có thể thay thế cho Java:
Một trong những thế mạnh lớn nhất của Kotlin như là một ứng viên để thay thế cho Java
là khả năng tương tác rất tốt giữa Java và Kotlin, bạn có thể thậm chí có code Java và Kotlin
tồn tại song song trong cùng dự án, và tất cả mọi thứ vẫn sẽ được biên dịch một cách hồn
hảo. Vì Kotlin là hồn tồn tương thích với Java, nên cũng có thể sử dụng phần lớn các thư
viện Java và các framework trong dự án Kotlin của bạn, thậm chí nâng cao các framework
dựa vào chú thích xử lý.
Dễ học
Kotlin nhằm mục đích là nâng cao hơn so với Java, chứ không phải hồn tồn viết lại,
rất nhiều các kỹ năng đã có trong việc code Java của bạn vẫn được áp dụng đối với dự án
Kotlin. Kotlin cũng được thiết kế để có thể dễ học cho các nhà phát triển Java, họ sẽ cảm
thấy rằng hầu hết cú pháp của Kotlin đều quen thuộc. Ví dụ, code được sử dụng để tạo ra
một lớp mới trong Kotlin rất giống với Java: class MainActivity: AppCompatActivity () {
Kết hợp những gì tốt nhất của lập trình hàm và thủ tục
Hiện đang có một số lý thuyết lập trình được sử dụng rộng rãi, nhưng khi nói đến các
câu hỏi về "phương pháp nào là tốt nhất", thì khơng dễ để có câu trả lời. Mỗi kiểu lập trình
có tập hợp điểm mạnh và điểm yếu của nó, do đó, mặc dù khơng thiếu các kịch bản mà lập
trình hàm có một lợi thế, thì cũng có rất nhiều vấn đề nơi mà một cách tiếp cận lập trình
thủ tục sẽ hiệu quả hơn.
Android Studio hỗ trợ
Kotlin được phát triển bởi JetBrains, công ty đứng sau IntelliJ—IDE mà Android Studio
dựa trên nó. Khơng có gì bất ngờ, rằng Android Studio hỗ trợ tốt cho Kotlin. Một khi bạn
đã cài đặt plugin Kotlin, Android Studio làm cho việc cấu hình Kotlin trong dự án của bạn
trở nên đơn giản giống như mở một vài menu.
Một khi bạn đã thiết lập plugin Kotlin cho Android Studio, IDE của bạn sẽ khơng gặp
vấn đề gì việc hiểu, biên dịch và chạy code Kotlin. Android Studio cũng cung cấp việc gỡ
lỗi, tự động hoàn tác, điều hướng code, unit testing, và tái cấu trúc cho Kotlin.
3
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Code ngắn gọn hơn:
Nếu bạn so sánh một lớp Java và một lớp Kotlin cho ra cùng một kết quả, thì cái được
viết trong Kotlin thường sẽ gọn gàng hơn nhiều so với những gì được viết bằng Java. Kotlin
đặc biệt tốt trong việc giảm số lượng code mà bạn cần phải viết, làm cho việc viết code
trong Kotlin trở thành một trải nghiệm thú vị hơn nhiều so với việc viết code trong nhiều
ngôn ngữ khác như Java. Đặc biệt, các extension của Kotlin Android cho phép bạn nhập
tham chiếu đến một View vào một tập tin Activity, từ đó bạn có thể làm việc với giao diện
như thể nó là một phần của Activity đó.
Ví dụ: TextView text = (TextView) findViewById(R.id.myTextView);
text.setText ("Hello World");
Thành gọn gàng hơn nhiều: myTextView.setText("Hello World")
1.1.2.2 Nhược điểm:
Khơng có ngơn ngữ lập trình nào là hồn hảo, Kotlin có rất nhiều thứ để cung cấp cho
các nhà phát triển Android, nó vẫn có một số nhược điểm mà bạn cần lưu ý:
Thêm thời gian chạy Runtime
Thư viện tiêu chuẩn của Kotlin và runtime sẽ làm tăng kích thước tập tin .apk của bạn.
Mặc dù nó chỉ tương đương với khoảng 800KB, nhưng nếu ứng dụng của bạn đã lớn sẵn
rồi thì 800KB phụ có thể làm nó phình to và khiến người dùng nghĩ lại trước khi tải về ứng
dụng của bạn.
Không hẳn là code dễ đọc đối với beginer
Mặc dù cú pháp ngắn gọn của Kotlin là một trong những thế mạnh lớn nhất của ngơn
ngữ, nhưng bạn có thể thấy một số khó khăn ban đầu, đơn giản bởi vì có rất nhiều thứ đang
được thực hiện trong một số lượng nhỏ code đó. Java có thể dài dòng hơn, nhưng ngược lại
tất cả mọi thứ đều rõ ràng, có nghĩa là những người khơng quen code Java có xu hướng dễ
dàng hơn để hiểu so Kotlin.
Thiếu hỗ trợ chính thức
Kotlin có thể được trợ tốt trong Android Studio, nhưng cần ghi nhớ rằng Kotlin không
được xác nhận chính thức là của Google.Ngồi ra, tính năng tự động hồn tác và biên dịch
trong Android Studio có xu hướng chạy hơi chậm khi bạn làm việc với Kotlin so với một
dự án thuần Java.
4
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Cộng đồng nhỏ hơn và ít có sẵn trợ giúp
Kotlin là một ngơn ngữ tương đối mới, nên cộng đồng Kotlin vẫn còn khá nhỏ so với
cộng đồng ngôn ngữ khác như Java. Nếu bạn chuyển đổi sang Kotlin, thì bạn có thể khơng
có được truy cập vào cùng một số hướng dẫn, bài đăng trên blog, và tài liệu hướng dẫn sử
dụng, và có thể có ít hỗ trợ từ cộng đồng như các diễn đàn (Stack Overflow). Tại thời điểm
bài viết, tìm kiếm cho Kotlin trong Stack Overflow trả về các bài viết chỉ hơn 4.600 được
dán nhãn Kotlin - so với hơn 1.000.000 bài viết có chứa các từ khóa Java.
1.2 GIỚI THIỆU VỀ FIREBASE & ROOM
1.2.1 Firebase
Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được
thiết kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao. Với Google
Firebase, bạn có thể tạo ra các ứng dụng chat như Yahoo Message của ngày xưa hoặc như
Facebook Messager của ngày nay trong thời gian cực ngắn như khoảng một ngày thậm
chí là vài giờ bởi đơn giản là bạn chỉ cần lo phần client còn phần server và database đã có
firebase lo. Firebase là sự kết hợp giữa nền tảng cloud với hệ thống máy chủ cực kì mạnh
mẽ tới từ Google, để cung cấp cho chúng ta những API đơn giản, mạnh mẽ và đa nền tảng
trong việc quản lý, sử dụng database. Cụ thể hơn Google Firebase cung cấp tới chúng ta
những chức năng chính sau:
1.2.1.1 Realtime Database – Cơ sở dữ liệu thời gian thực
Firebase lưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộ database
tới tất cả các client theo thời gian thực. Cụ thể hơn là bạn có thể xây dựng được client
đa nền tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng chung 1
database đến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong database được
thêm mới hoặc sửa đổi. Ngoài ra Firebase còn cho phép bạn phân quyền một các đơn
giản bằng cú pháp tương tự như javascrip
1.2.1.2 Firebase Authentication – Hệ thống xác thực của Firebase
Với Firebase bạn có thể dễ dàng tích hợp các cơng nghệ xác thực của Google,
Facebook, Twitter, … hoặc một hệ thống xác thực mà bạn tự mình tạo ra vào trong ứng
dụng của bạn ở bất kì nền tảng nào như Android, iOS hoặc Web.
5
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2.1.3 Firebase Storage
Được xây dựng cho các nhà phát triển ứng dụng, để lưu trữ và phục vụ nội dung
do người dung tạo ra chẳng hạn như hình ảnh, video, hay dữ liệu dạng file.
Firebase Storage cung cấp các API cho việc uploads và download các file từ app
của bạn một cách bảo mật và bạn không cần quan tâm đến chất lượng đường truyền
mạng.
Firebase Storage được xây dựng trên nền tảng Google Cloud Platform nên có
nhiều lợi thế. Một số điểm mạnh cụ thể của Firebase:
-
Robust: Firebase Storage thực hiện việc upload và download không phụ thuộc
vào chất lượng đường truyền mạng hơn nữa các q trình đó có thể bắt đầu lại
khi bị tạm dừng giúp tiết kiệm thời gian và băng thông.
-
Secure: Được tích hợp Firebase Authentication cho việc bảo mật nên dễ dàng
quản lý quyền truy cập vào các files.
-
Scalable: Firebase Storage được xây dựng trên nền tảng Google Cloud Platform
nên khả năng mở rộng có thể lên đến hàng Petabyte dữ liệu.
1.2.1.4 Firebase Hosting.
Các bạn có thể triển khai một ứng dụng nền web nhanh chóng với hệ thống
Firebase, và các dữ liệu sẽ được lưu trữ đám mây đồng thời được bảo mật thông qua
giao thức truy cập SSL.Các ứng dụng sẽ được cấp 1 tên miền dạng *.firebaseapp.com
hoặc bạn có thể trả tiền để sử dụng tên miền của riêng mình.
1.2.1.5 Những Lợi Ích Từ Việc Sử Dụng Google Firebase
Ở phía trên là các chức năng của google firebase, vậy các chức năng đó sẽ đem
lại cho bạn những lợi ích gì, có lẽ một số bạn đã mường tượng ra rồi nhưng cũng có bạn
có lẽ vẫn cịn mơ hồ vì vậy hãy đọc kĩ phần này sẽ biết câu trả lời chính xác nhất.
Triển khai ứng dụng nhanh
Với Firebase bạn có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để
quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của
Firebase. Khơng chỉ có vậy Firebase cịn hỗ trợ đã nền tảng nên bạn sẽ càng đỡ mất thời
gian rất nhiều khi ứng dụng bạn muốn xây dựng là ứng dụng đa nền tảng. Không chỉ
6
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
nhanh chóng trong việc xây dựng database, Google Firebase cịn giúp ta đơn giản hóa
q trình đăng kí và đăng nhập vào ứng dụng bằng các sử dụng hệ thống xác thực do
chính Firebase cung cấp.
Bảo mật
Triển khai ứng dụng nhanh Firebase hoạt động dựa trên nền tảng cloud và thực hiện
kết nối thông qua giao thức bảo mật SSL, chính vì vậy bạn sẽ bớt lo lắng rất nhiều về
việc bảo mật của dữ liệu cũng như đường truyền giữa client và server. Không chỉ có
vậy, việc cho phép phân quyền người dùng database bằng cú pháp javascipt cũng nâng
cao hơn nhiều độ bảo mật cho ứng dụng của bạn, bởi chỉ những user mà bạn cho phép
mới có thể có quyền chỉnh sửa cơ sở dữ liệu.
Tính linh hoạt và khả năng mở rộng
Sử dụng Firebase sẽ giúp bạn dễ dàng hơn rất nhiều mỗi khi cần nâng cấp hay mở
rộng dịch vụ. Ngồi ra firebase cịn cho phép bạn tự xây dựng server của riêng mình để
bạn có thể thuận tiện hơn trong quá trình quản lý. Việc Firebase sử dụng NoSQL, giúp
cho database của bạn sẽ khơng bị bó buộc trong các bảng và các trường mà bạn có thể
tùy ý xây dựng database theo cấu trúc của riêng bạn
Sự ổn định
Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như bạn
khơng bao giờ phải lo lắng về việc sập server, tấn công mạng như DDOS, tốc độ kết
nối lúc nhanh lúc chậm, … nữa, bởi đơn giản là Firebase hoạt động trên hệ thống
server của Google. Hơn nữa nhờ hoạt động trên nền tảng Cloud nên việc nâng cấp,
bảo trì server cũng diễn ra rất đơn giản mà không cần phải dừng server để nâng cấp
như truyền thống.
Giá thành
Google Firebase có rất nhiều gói dịch vụ với các mức dung lượng lưu trữ cũng như
băng thông khác nhau với mức giá dao động từ Free đến $1500 đủ để đáp ứng được nhu
cầu của tất cả các đối tượng. Chính vì vậy bạn có thể lựa chọn gói dịch vụ phù hợp nhất
với nhu cầu của mình. Điều này giúp bạn tới ưu hóa được vốn đầu tư và vận hành của
mình tùy theo số lượng người sử dụng.
7
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2.2 Room
Room là một Persistence Library được google giới thiệu trong sự kiện google I/O
năm 2017, nó là một abstract layer cung cấp cách thức truy cập thao tác với dữ liệu trong
SQLite. Các ứng dụng sử dụng một lượng lớn dữ liệu có cấu trúc có thể hưởng lợi lớn từ
việc lưu dữ liệu trên local thông qua Room. Trường hợp thường gặp nhất là chỉ cache
những dữ liệu có liên quan, như vậy thì khi thiết bị khơng có kết nối internet thì user vẫn
có thể truy cập data đấy khi đang offline. Mọi dữ liệu được phát sinh hay thay đổi do user
sau đó sẽ được đồng bộ với server khi họ online trở lại.
Các thành phần chính trong Room:
Hình 1.1 Các thành phần chính trong Room
1.2.2.1 Entity
Component này đại diện cho một class chứa một row của database. Với mỗi một
entity thì một database table sẽ được tạo để giữ các items tương ứng, đồng thời nên tham
chiếu lớp enity thông qua mảng entities trong class Database. Mỗi một trường của entity
sẽ được pesist trong database trừ trường hợp bị chú thích là @Ignore.
Entity
Vơi mỗi Object được định nghĩa với anotation @Entity Room sẽ tạo một table cho
đối tượng này trong database với name là tableName được chú thích. Room sẽ tạo các
cột tương ứng với số field được khai báo trong object. Nếu khơng muốn lưu trữ bạn có
thể sử dụng anotation @Ignore. Bạn có thể custom lại tên của cột thông qua anotaion
@ColumnInfo (name = "column name").
8
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Primary key
Mỗi Object phải xác định ít nhất 1 trường làm khóa chính. Ngay cả khi chỉ có 1
trường, vẫn cần chú thích trường này bằng chú thích @PrimaryKey. Ngồi ra, nếu muốn
gán ID tự động cho các thực thể, có thể đặt thuộc tính autoGenerate vào @PrimaryKey.
Ví dụ: @PrimaryKey (autoGenerate = true) private int mId;
Indices and uniqueness
Trường hợp các bạn muốn đánh index cho một số trường trong database để tăng tốc
độ truy vấn các bạn có thể sử dụng như sau:
Ví dụ: @Entity (indices = {@Index (value = {"first_name", "last_name"}})
Một số trường hợp các bạn có thể muốn một số trường là duy nhất trong database ví
dụ first_name và last_name khơng thể có bản ghi nào trùng nhau các bạn có thể thêm
unique như sau:
@Entity (indices = {@Index (value = {"first_name", "last_name"}, unique = true)})
Nested objects
Trong một số trường hợp các bạn tạo ra object với các nested object, các bạn khơng
có nhu cầu lưu chúng thành 1 bảng riêng mà đơn giản chỉ giống như 1 column bình
thường các bạn có thể sử dụng anotaion @Embedded cho chúng giống như ví dụ cho
Place trong object User dưới đây:
Ví dụ: @Embedded private Place mPlace;
1.2.2.2 DAO (Data Access Objects)
Đây là component đại diện cho class hoặc interface như một đối tượng truy cập
dữ liệu (DAO). DAO là thành phần chính của Room chịu trách nhiệm trong việc định
nghĩa các phương thức truy cập CSDL. Các class được chú thích với @Database phải
chứa một phương thức trừu tượng có số lượng đối số truyền vào là 0 và đối tượng trả
về là đối tượng của lớp được chú thích bởi @Dao.
1.2.2.3 Database
Có thể dùng componenet này để tạo database holder. Annotation sẽ cung cấp
danh sách các thực thể và nội dung class sẽ định nghĩa danh sách các DAO của CSDL,
9
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
nó cũng là điểm truy cập chính cho các kết nối phía dưới. Annotated class nên để là lớp
abstract extends RoomDatabase, vì tại thời điểm runtime thì dev có thể nhận được một
instance của nó bằng cách gọi Room.databaseBuilder().
1.3 MÃ NGUỒN MỞ RXJAVA & RETROFIT
1.3.1 RxJava
-
RxJava là thư viện mã nguồn mở implement ReactiveX trên Java. Có 2 lớp chính là
Observable và Subscriber.
-
Observable là một lớp đưa ra dòng dữ liệu hoặc sự kiện (event). Flow của Observable
là đưa ra một hoặc nhiều các items, sau đó gọi kết thúc thành cơng hoặc lỗi.
-
Subscriber lắng nghe flow, thực thi các hành động trên dòng dữ liệu hoặc sự kiện
được đưa ra bởi Observable.
-
Một Observable có thể có một hoặc nhiều Subcriber Mỗi item được đưa ra bởi
Observable, nó sẽ được bắt bởi phương thức Subcriber.onNext().
-
Mỗi Observable kết thúc sẽ gọi phương thức Subscriber.onCompleted() hoặc
Subcriber.onError().
1.3.2 Retrofit
-
Nói một cách dễ hiểu Retrofit là một thư viện giúp phân tích cú pháp phản hồi API
dễ dàng và được xử lý tốt hơn để sử dụng trong ứng dụng. Theo định
nghĩa của Square (nhà phát triển Retrofit):
A type-safe HTTP client for Android and Java
-
Retrofit là một type-safe HTTP client cho Java và Android được phát triển bởi
Square. Retrofit giúp dễ dàng kết nối đến một dịch vụ REST trên web bằng cách
chyển đổi API thành Java Interface.
-
Type-safe một ví dụ đơn giản là trình biên dịch sẽ xác nhận hợp lệ các kiểu dữ liệu
trong khi biên dịch và ném một lỗi nếu bạn cố gán kiểu sai cho một biến.
-
Thư viện mạnh mẽ này giúp bạn dễ dàng xử lý dữ liệu JSON hoặc XML sau đó phân
tích cú pháp thành Plain Old Java Objects (POJOs). Tất cả các yêu cầu GET, POST,
PUT, PATCH, và DELETE đều có thể được thực thi.
10
do an
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.3.2.1 Retrofit Annotations
-
Sử dụng Annotations để mô tả yêu cầu HTTP:
-
Hỗ trợ tham số URL và tham số truy vấn
-
Chuyển đổi đối tượng để yêu cầu nội dung
-
Multipart request body và file upload.
1.3.2.1.1 Request Method
-
Mỗi phương thức phải có Annotation HTTP cung cấp request method và
URL. Có 5 loại Annotation được tích hợp sẵn: @GET, @POST, @PUT,
@DELETE và @HEAD.
-
Có thể chỉ định tham số truy vấn trong URL: @GET("users/list?sort=desc")
1.3.2.1.2 Url Manipulation
-
URL request có thể được cập nhật tự động bằng cách sử dụng các khối thay
thế và tham số trên phương thức.
-
Chúng ta có thể nối thêm paramater vào sau URL bằng cách sử dụng
@Query @GET("group/{id}/users") Call
groupList(@Path("id") int groupId, @Query("sort") String sort);
1.3.2.1.3 Request Body.
-
Một đối tượng có thể được chỉ định để sử dụng làm phần thân yêu cầu
HTTP với Annotation @Body.
@POST("users/new") Call<User> createUser (@Body User user);
-
Đối tượng cũng sẽ được chuyển đổi bằng cách sử dụng Converter được chỉ
định trên instance của Retrofit. Nếu khơng có Converter nào được thêm vào,
chỉ có thể sử dụng RequestBody.
1.4 OPENWEAHTERMAP & GOOGLE APIS
1.4.1 OpenWeatherMap API
API này cung cấp dịch vụ dữ liệu thời tiết và dự báo miễn phí, thích hợp cho bất kỳ
dịch vụ bản đồ như các ứng dụng web và điện thoại thông minh. Ý tưởng được lấy cảm
hứng từ OpenStreetMap và Wikipedia nhằm cung cấp thơng tin miễn phí và sẵn có cho
mọi người.
11
do an