Tổng quan Ứng dụng tự động ghi nhận lại những đữ liệu bắt đồng bộ được lay từ cam biến gia tốc kế va gia tốc trọng trường của thiết bị chạy hệ điều hành Android trong quá trình người dùn
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MAY TÍNH VÀ TRUYEN THONG
LE DINH KHANG
KHOA LUAN TOT NGHIEP
DUONG GIAO THONG
TRAFFIC ROADS QUALITY MEASURE
MOBILE APPLICATION
KY SU NGANH AN TOAN THONG TIN
TP HO CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA MANG MAY TINH VA TRUYEN THONG
LE DINH KHANG - 17520612
KHOA LUAN TOT NGHIEP
UNG DUNG DI DONG DO LUONG CHAT LUQNG
DUONG GIAO THONG
TRAFFIC ROADS QUALITY MEASURE
MOBILE APPLICATION
KY SU NGANH AN TOAN THONG TIN
GIANG VIEN HUONG DAN
TS LE KIM HUNG
TP HO CHÍ MINH, 2021
Trang 3THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 463/QD-DHCNTT
ngày 23/07/2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1 Chủ tịch: TS Nguyễn Tuan Nam
2 Uỷ viên: ThS Nguyễn Duy
3 Thư ký: ThS Trần Hồng Nghi
Trang 4LỜI CÁM ƠN
Lời đầu tiên, chúng em xin trân trọng cảm ơn quý thầy, cô đang công tác vàgiảng day tại khoa Mạng máy tính và Truyền thông, cũng như toàn thé thay, cô
khác công tác tại trường Đại học Công nghệ Thông tin - ĐHQG HCM đã truyền đạt
những kiến thức, bài học, kinh nghiệm quý báu cho chúng em trong suốt quãng thời
gian bốn năm vừa qua Và đã sắp xếp thời gian, chương trình hợp lý để chúng em
có cơ hội hoàn thành khóa luận tốt nghiệp tốt nhất Chúng em xin kính chúc khoaMạng máy tính và Truyền thông nói riêng và trường Đại học Công nghệ Thông tin
nói chung luôn thành công rực rỡ trên con đường giảng dạy đảo tạo nhân tải, sẽ mãi
là niêm tin vững chắc cho các thê hệ sinh viên trên con đường giáo dục.
Đặc biệt, chúng em xin gửi lời cảm ơn chân thành nhất đến giảng viên, TS
Lê Kim Hùng Nhờ những kinh nghiệm, bài học quý báu được chia sẻ từ thầy, thầy
đã luôn quan tâm và giúp đỡ chúng em giải quyết những vấn đề phát sinh, khó khăntrong quá trình thực hiện Nhờ có thầy, chúng em đã có cơ hội hoàn thành tốt khóaluận tốt nghiệp này
Tiếp theo, chúng em xin cảm ơn về phía gia đình đã luôn luôn tin tưởng,động viên chúng em trong suốt quá trình học tập tại trường Đại học Công nghệThông tin - ĐHQG HCM, giúp chúng em có thêm nguồn năng lượng để đi đến
được như ngày hôm nay.
Cuối cùng, nhóm chúng em xin gửi lời cảm ơn đến các anh, chị và các bạn
sinh viên tại trường Dai học Công nghệ Thông tin —- ĐHQG HCM đã luôn nhiệt tình
hỗ trợ, chia sẻ ý kiến và góp ý cho chúng em trong quãng thời gian thực hiện khóaluận.
TP Hồ Chi Minh, thứ hai ngày 12 tháng 7 năm 2021
Tác giả
Lê Đình Khang
Trang 5MỤC LỤC
Chương 1 _ MỞ ĐẦU 22 52222222121 EE192121121121121E 1111111111 c0 2
1.2 Đặt vấn đề ch kg 2
1.4 Đối tượng và phạm vi nghiên CỨU - 2- 2 2 +2 ++E£+E££Ee£EeEEeEEerxrrezreee 3
1.4.1 — Đối tượng 2c t1 121111111 re 3
1.4.2 I0 0 1ẼẺ75 A A(L¬Aa:AÔÔÔ 3
Chuong 2 CHƯƠNG 2: CƠ SỞ LÝ THUYÉT 2:22 5+2cx++cs+¿ 4
2.1 Tổng quar cccccccccecsecctiecsecssessssssscssessuessssstecssessscssssenesssessscesecsnessscesscesecsseeseeeses 42.2 Giới thiệu về hệ điều hành Android -c¿ ccsc+cc+esrcverrrreerrrrked 42.3 Giới thiệu ban đồ sử 000i 0U Ẻ8ẺẼẺ 7 5
2.3.1 GoOOgle Map cecceescceescceseeeneceeeceseeceseeceeceaeceeeceeeseaeessaeeeeeeseneeseaees 5
2.3.2 Google Map APIH Ăn HH HH key 7
2.3.3 Map S[yÏe Ăn HH HH TH HH HH HH tr 72.4 Chỉ số độ nhám quốc tẾ -: - + +¿+++2E++EE++EE+2EEtEEEtEEESEEzrxerkrerkesred 92.5 Cảm DIGM ec ceeeecsseescsssneessssseessnsecessnecessnseesstnecesnnecesnneessneessnneeesnneeessneessneeee 10
2.5.1 Cảm biến gia tốc kế (Accelerometer SenSOT) :- - + s+s+sezszx2 10
2.5.2 Cảm biến gia tốc trọng trường (Gravity SensOr) -s:-s- 10
2.6 Công nghé sử dỤng sờ 11
2.6.1 2.6.1 Thư viện sử dỤng - «+ k1 SH HH HH Hy 11
P NNN: 11
Trang 62.6.1.2 R€frOfT( - - - L L LL SH ST TS nn ng 5511k kkkEr 13
"0 "“ẽ vn 14
2.6.1.4 Firebase AuthenfICafIO - s5 sư 14
2.6.1.5 Firebase Cloud StOFÀ€ c1 HH ng re 16
2.6.1.6 Firebase Realtime Database - - cc tk HH re 17
2.6.1.7 Firebase Cloud Functions s5 + + skksiksrkrskeree 18
2.6.2 Backend/Database HH TH nghệ 19
2.6.2.1 Backend SH HH9 HT HH nh rưg 19
2.6.2.2 Database LH HH HH HH ng Hi hư, 19
2.7 Tốiưuứng dung đF Z2 Na ——Ằ 2-52 5 20
2.7.1 Kiểm tra hoạt động cua CPU với CPU Profiler - ‹ 212.7.2 Kiểm tra mức sử dụng bộ nhớ của ứng dụng bằng Memory Profiler232.7.3 Kiểm tra lưu lượng mạng bằng Network Profiler - 252.7.4 Kiểm tra việc sử dung năng lượng với Energy Profiler 28
Chuong 3 CHƯƠNG 3: MƠ HÌNH - 2 2©E++E2E2EESEESEEEEErEkerkerkerex 30
3.1 Mơ hình chung - - c1 HH Hi, 30
3.2 Mơ hình xử lý ở thiẾt bị -¿- 2-52 2E SE ke EEEEEE121121121121E 2111111 txe, 31
3.2.1 Giới thiệu Chung - s11 91 911 11 vn ng rvg 31
3.2.2 Thuật tốn - LH HH TH HH HH nh như 32
3.2.2.1 Nghiên cứu thuật tốn - - - c 1xx SH HH ng rrg 32
3.2.2.2 Thuật tốn tính độ nay và việc áp dụng thuật tốn trong ứng dung
32
3.2.2.3 Kiểm thử thuật tốn ¿tk St Sk+k#EEEESEEEEEEEEEEEEkEkrkererkskerrrx 36
Trang 73.2.3 — Vị trí của thiết bị -cc set SE S21 EE1E12EE111121511111111E 1x5 xe 36
3.2.4 3.2.4 Ghi nhận và xử lý dữ liệu thu thập được - 37
SN Cố 37
c9 2 Ö 383.2.5 Thuật toán mã hoá dé tạo mã chuyến đi -: -¿ + 55-52 40
3.2.9.1 Đăng nhập/đăng Xuất -¿- +5 +k+Ek‡EEEEE2EE2EE2EEEEerkrrkrrkrex 46
3.2.9.2 Tạo/tham gia một chuyến đi đường dài 2-2-5 e2 49
3.2.9.3 Tự động nghi nhận và xử lý dữ liệu những đoạn đường xấu 57
3.2.9.4 Chia sẻ vi trí theo thời gian thựC . - «+ sss+*scxsseexsseseeers 61
3.2.9.5 Tự động thông báo với các thành viên khi một người gặp sự có 63
3.3 Mô hình xử lý © S€TV€T - - SH HH ng HH, 68
3.3.1 Xử lý backend - Ăn HH HH HH HH nh ngư 69
3.3.2 Phân tích dữ liệu thu thập được - + sseesessessree 69
Chương 4 THỰC NGHIỆM VÀ ĐÁNH GIA -+©cs++cxcecsees 72
Trang 84.1 Thực nghiỆm G1 v1 HH TH HH Hư 72
4.1.1 Thực nghiệm đoạn đường XAU eccccecsececsesesecsesesecscsvsececevsucecsessucecanenees 72
4.1.2 _ Thực nghiệm tính năng khác s5 Scs + +serseerreerrerrrerre 72
4.1.3 _ Thực nghiệm mức tiêu thụ pin của ứng dụng «<< «+ 73
4.2 Dah na e 73
4.2.1 Đánh giá khả năng ghi nhận những đoạn đường xấu 734.2.2 Tốn pin khi sử dụng +- ++2+c2E++EE+EEeEEerkrrrkrrkerkerrees 784.2.3 Cấu trúc project chưa hop lý - + s+cs+xt+kzEerkerkerkerserkee 784.2.4 Phụ thuộc nhiều vào bên thứ ba ¿2 5+ t+E+EeEzEzE+Eertzxsxers 79
4.2.5 Các tính năng chưa chạy tốt ở những phiên bản, dòng điện thoại chạy
hệ điều hành Android khác 2:2¿++22++++2E+++tEx+ttrxxrzrxxrsrrxrsrrkree 79Chương 5 CHƯƠNG 5: TONG KET VÀ HƯỚNG PHÁT TRIỀN 80
5.1 Kết quả dat được cS2cecke SH Hee 805.2 2/0 0 6e 4 81
Trang 9Hình 2.4: Ba trục vật ly (x,y,z) biêu diễn các giá trị của các cảm biến trong không
gian Nguồn Google - + 2+Ss+SE++E£2EE£EEEEEEEE211211271717112111171.11 111110 11
Hình 2.5: Timeline trong CPU Profiler Nguồn Android Developers 22Hình 2.6: Memory Profiler Nguồn Android Developers .c.cscecssessessessessesesseeee 24Hình 2.7: Cửa số Network Profiler Nguồn Android Developers - 26
Hình 2.8: Kiểm tra các yêu cầu mạng theo chuỗi ứng dụng trong Thread View
Nguồn Android Developers . 2- 2-52 22 SE‡EE£SES2EE2EEEEEEEEEEEEEEEEEEEEEEEEEEEkrrkerree 27
Hình 2.9:Chuyén đổi giữa văn bản thô (trái) và văn bản được định dạng (phải) bangcách nhấp vào liên kết tương ứng Nguồn Android Developers - 28
Hình 2.10: Các mốc thời gian trong Energy Profiler Nguồn Android Developers 29
Hình 3.1: Mô hình chung của ứng dụng - - +5 + + *+Esetrseerrereeerrrrrree 30
Hình 3.2: Mô hình xử lý dit liệu ở thiẾt bị - 2-2 s2E2+EE+EE+£EerEerresrxerxerex 31
Hình 3.3: Biểu diễn vector gia tốc va trong trường trong không gian ba chiều [20]
— 33Hình 3.4: Phép chiếu vector trong không gian hai chiều [20] -. 33Hình 3.5: Biểu diễn phép chiếu vector trong không gian ba chiều [21] 34Hình 3.6: Thé hiện trạng thái đoạn đường qua màu sắc . 2- s22 s2 36
Hình 3.7: Thông bao ghi nhận dữ liệu - 5 5-2325 E S22 E*+EE+eEseerreereersrerrrs 37
Trang 10Hình 3.8: Biểu diễn IRI và vị trí theo thời gian ¿- 5: ©2+cszccxcecxerrecree 39Hình 3.9: Dữ liệu mong muốn - ¿2 2S +E£2E£2EE£EEtEEEEEEEEEEEEtEEErEkrrkerkrree 39
Hình 3.10: Một thao tac MDS Nguồn Wikipedia c-cccccccrsrserecrex 41
Hình 3.11: Logo của ứng dung oo ee eeeeeeceecsecseesseeseeseesessessecseesessessaeeseaseaeeaeens 44
Hình 3.12:Flowchart tinh năng đăng nhập/đăng xuất -2- ¿555552 46
Hình 3.13: Màn hình khi chạy ứng dụng Ăn rikt 47
Hình 3.14: Popup chọn tài khoản đăng nhập - - 555555 *S*+sseeseesesers 48
Hình 3.15: Màn hình sau khi đăng nhập -. - 5 5 S51 *+sEseerrererseere 48
Hình 3.16: Popup thông báo việc đăng Xuất 2-52 + 2+c+Ee£kerkerxerxersrree 49Hình 3.17: Flowchart tính năng tao/tham gia một chuyên đi -. - 50
Hình 3.18: Màn hình chính sau khi đăng nhập ¿5555 +5 £+sc<+e+seeses 50
Hình 3.19: Popup chon tạo hay tham gia nhóm - - + + + £++*e++eexsee+eesss 51
Hình 3.20: Chọn điểm diém của chuyến ổi -2- 2 + + + £+E£+EerEerxerxerszxez 51Hình 3.21: Màn hình tìm kiếm điểm đến -52c2+cccecxverrrrrrrrrrkerrre 52Hình 3.22: Màn hình sau khi chọn điểm đến -¿-©2c+ccxeecerrverrrrrerrre 53Hình 3.23: Màn hinh sau khi tạo chuyến đi 2-2 22S22££+£E+£EzEzEzrxerxezez 53Hình 3.24: Man hình thông tin chi tiết chuyến đi - 2-2 2 2 s+x+£xz£z£szs+2 54
Hình 3.25: Popup chọn tạo hay tham gia nhÓm - - - 5-5 + ++*k+seexeeeseeers 55
Hình 3.26: Popup nhập mã chuyến 2-2: 2 2 EEE+EE£2EE2EE+EE+EEZEEzEEerxrrxerer 55Hình 3.27: Màn hình thông tin chuyến đi 2-2 52 £+S£+££+E+EerEerxerxersree 56Hình 3.28: Màn hình sau khi tham gia chuyến đi 2-2 + 2£2+£s+zx+zxzsz 57Hình 3.29: Flowchart ghi nhận và xử lý đữ liệu những đoạn đường xấu 58Hình 3.30: Thông báo đang ghi nhận đường Xau cccccccsesssesssssseessecssesstesseesseesseens 59
Trang 11Hình 3.31: Những vị trí được ghi nhận là đường xấu từ cộng đồng 60
Hình 3.32: Tuy chọn hiện thông tin đoạn đườn - 55+ + + +++sexseeesseess 60
Hình 3.33: Flowchart tính năng chia sẻ tốc độ, vị trí theo thời gian thực 61Hình 3.34: Màn hình khi tạo/tham gia chuyến đi 2-©5¿cs¿+c+zs+ec+z 62Hình 3.35: Popup hiền thị thông tin thành viên -2¿- 5 ©£©5z+zx2z++zx+zcsz 63Hình 3.36: Flowchart tinh năng thông báo sự cỐ -¿- 2 + x+2x++zs+zxerxcrez 64
Hình 3.37: Màn hình sau khi đăng nhập -. - 5 5 S1 S3 +seeresersesrs 65
Hình 3.38: Popup hiên thị thông báo sự cỐ 2- 2-5252 £+E+E£EerEerxerxersrree 66Hình 3.39: Chọn nội dung Sự CỐ -2- 2-52 2E SE£EEEEEEEEEEEEEEEEEEEEEEEEEEEErkrrkrree 66Hình 3.40: Nội dung thông báo sự C6 - ¿5:22 ©5++x+2Ext2EEvExterxesrxerreeree 67Hình 3.41: Popup huỷ sự C6 vcecceccccsscsscsscsscsscssessesscssessessesessessessesucsecsvesssessessessessesnease 68
Hình 3.42: Mô hình xử ly ở S€TV€T Ă 1211111911 v1 ng ng ng ng 68
Hình 3.43: Upload hai đoạn đường trùng nhau - 5 55555 *++sk++eexseesseess 70
Hình 3.44: Đoạn đường trùng dữ liệu, khác điểm đầu/cuối - 5-52 70Hình 3.45: Đoạn đường trùng dữ liệu, khác đầu/cuối sau khi cập nhật 71Hình 4.1: Đoạn đường chạy thực nghiệm Nguồn ban đồ Google Map 72
Trang 12Hình 4.9: Hình ảnh thực tế 3 Nguồn Google MapHình 4.10: Kết quả thực nghiệm 3
Trang 13DANH MỤC BANG
Bảng 2.1: So sánh retrofit với các thư viện khác Nguồn Topdev 13
Trang 14DANH MỤC TỪ VIET TAT
TỪ NỘI DUNG DIEN GIẢI
IRI International roughness index Chi số độ nhám quốc tế
API là một giao diện lập trình
dùng phương thức kết nối vớicác phần mềm và thư viện khác
Application Programming
Interface
API
Trang 15TOM TAT KHÓA LUẬN
Nhìn vào thực trạng hiện nay, tình trạng đường giao thông tồn tại những 6
gà, ô voi, những hồ tử thần dường như là một chuyện không còn quá xa lạ đối vớingười dân Việt Nam Mặc dù nhà nước và các cơ quan liên quan đang ra sức khắcphục, nhưng vẫn chưa thê xử lý một cách kịp thời và nhanh chóng
Điều này dẫn đến nhiều vụ tai nạn đáng tiếc đối với những người tham giagiao thông, nhẹ thì bị xây xước, còn nặng thì tử vong Từ đó, cần có một giải pháp
có thé giúp các cơ quan liên quan có thê nhanh chóng nắm bắt được thông tin nhữngđoạn xấu dé từ đó tiến hành sửa chữa để có thé đảm bảo sự an toàn cho những
người tham gia giao thông mỗi ngày.
Thông qua khoá luận này, chúng em mong muốn có thể xây dựng được mộtứng dụng có thể phát hiện và ghi nhận lại những đoạn đường xấu, giúp những người
tham gia giao thông bằng xe gắn máy chú ý hơn khi tham gia giao thông, giúp
những người thuộc các co quan ban ngành có liên quan có thé nhanh chóng xử lý,khắc phục và góp một phần nhỏ trong việc giảm thiêu những vụ tai nạn giao thông
liên quan đên những đoạn đường xâu.
Trang 16Chương 1 MỞ ĐẦU
1.1 Tên đề tài
e Tiếng Việt: Ung dung di động đo lường chất lượng đường giao thông
e Tiếng Anh: Traffic roads quality measure mobile application
1.2 Dat van dé
Trong những năm gan đây, những vụ tai nan do 6 ga, 6 voi đã mang đến nhiềunỗi lo cho người dân Việt Nam khi họ tham gia giao thông, như được thê hiện trong
bài báo Người Lao Động [1] Những đoạn đường xấu này đã gây ra không ít tai nan
cho người tham gia giao thông và đặc biệt là những người tham gia giao thông bằng
xe gan máy, trong khi đó thì xe gắn máy là được dự đoán van là phương tiện chủyếu tại Việt Nam đến năm 2030 [2]
Những vụ tại nạn do những đoạn đường xấu không những gây tai nạn chonhững người tham gia giao thông mà còn dé lại nỗi ám ảnh cho những người dânsinh sông xung quanh những khu vực có nhiều 6 gà, 6 voi chi chit nay [3] Nhiéu vutai nan xảy ra vi những đoạn đường xấu này, nhẹ thì xây xát, nặng thì bam dap tham
chi là tử vong.
Van đề trên đã tồn tại rất lâu nhưng vẫn chưa được xử lý nhanh chóng, triệt dé
để đảm bảo sự an toàn cho những người tham gia giao thông
1.3 Mục tiêu của đề tài
Nhóm chúng em hướng tới việc xây dựng một ứng dụng di động cho phép
phát hiện đoạn đường xấu khi người dùng lưu thông qua Từ đó hướng tới việc mộtbản đồ gồm những đoạn đường xấu dé người dùng có thé tránh khi tham gia giaothông và để cho các cơ quan chức năng có thể nhanh chóng xử lý những đoạn
đường đó dé đảm an toàn cho người tham gia giao thông
Phần lõi của ứng dụng là một thuật toán cho phép phát hiện đoạn đường xấu
Trang 17thông qua sự rung, lắc của điện thoại Ngoài ra, ứng dụng đề xuất còn cung cấp rất
nhiều tính năng hữu ích phục vụ cho người dùng trong quá trình di chuyển ví dụ
như tạo nhóm du lịch, thông báo tình trạng,
1.4 Đối tượng và phạm vi nghiên cứu
1.4.1 Đối tượng
Những người tham gia giao thông bằng xe gắn máy có sử dụng thiết bị di động là
hệ điều hành Android Những người thuộc nằm trong các cơ quan chức năng chịutrách nhiệm chính về việc khắc phục những đoạn đường xấu
1.4.2 Phạm vi
Ứng dụng di động trên điện thoại chạy hệ điều hành Android
Trang 18Chuong 2 CHUONG 2: CƠ SỞ LÝ THUYET
2.1 Tổng quan
Ứng dụng tự động ghi nhận lại những đữ liệu bắt đồng bộ được lay từ cam
biến gia tốc kế va gia tốc trọng trường của thiết bị chạy hệ điều hành Android trong
quá trình người dùng sử dung ứng dụng khi tham gia giao thông.
Sau đó, nêu co dir liệu được ghi nhận lại nêu người dùng có gặp những đoạnđường xấu thì ứng dụng sẽ tự động tính toán ra độ nảy dựa trên những dư liệu này
Ung dụng cũng sẽ sử dụng những bộ filter để lọc ra những dữ liệu thừa, trong quá
trình nghi nhận và xử lý dé giảm thiểu tối đa những dữ liệu không cần thiết giúp tiết
kiệm bộ nhớ của thiết bị.
2.2 Giới thiệu về hệ điều hành Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành chocá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 tinh
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 chính 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ở: 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ở cho các thiết bị di động Chiếc điện thoại đầu
tiên chạy Android được bán vào năm 2008.
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phépApache 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à các 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 Ngoài ra, Android còn có
một cộng đông lập trình viên đông đảo chuyên viết các ứng dụng dé mở rộng chức
năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa déiThang 10 năm
Trang 192012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ GooglePlay, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt.
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minhphô biến nhất thế giới,vượt qua Symbian OS vào quý 4 năm 2010, và được các công
ty công nghệ lựa chọn khi họ cần một hệ điều hanh không nặng nề, có khả năng tinhchỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Kếtquả là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đãxuất hiện trên TV, máy chơi game va các thiết bị điện tử khác Bản chất mở của
Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê
sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án
này bố sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưaAndroid vào các thiết bị ban đầu chạy hệ điều hành khác
Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vàothờ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ệulượt kích hoạt mỗi ngày Sự thành công của hệ điều hành cũng khiến nó trở thànhmụ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ệ [4]
2.3 Giới thiệu bản đồ sử dụng
2.3.1 Google Map
Google Maps là một dich vụ lập bản đồ web do Google phát triển Nó cung
cấp hình ảnh vệ tinh, chụp anh từ trên không, bản đồ đường phó, chế độ xem toàn
cảnh tương tác 360 °Của các đường phố (Google Street View), điều kiện giao thông
thời gian thực và lập kế hoạch tuyến đường dành cho người di bộ, ô tô, xe đạp,
đường hàng không (trong phiên bản beta) và phương tiện giao thông công cộng.
Vào năm 2020, Google Maps đã được hơn 1 tỷ người sử dụng mỗi tháng.
Google Maps được khởi đầu như một chương trình desktop viết bằng C ++ tai
Where 2 Technologies Vào tháng 10 năm 2004, khi công ty này được Google mua
Trang 20lại, công ty đã chuyền đổi nó thành một ứng dụng web Sau khi mua lại một công ty
trực quan hóa dữ liệu không gian địa lý và một công ty phân tích lưu lượng truy cậptheo thời gian thực, Google Maps đã được ra mắt vào tháng 2 năm 2005 Phần front
end sử dụng Javascript, XML, và Ajax Google Maps cung cấp một API cho phépnhúng bản đồ trên các trang web của bên thứ ba, và cung cấp công cụ định vị chocác doanh nghiệp và tổ chức khác ở nhiều quốc gia trên thế giới Google MapMaker cho phép người dùng cộng tác với nhau để mở rộng và cập nhật bản đồ của
dịch vụ trên toàn thế giới nhưng đã ngừng hoạt động từ tháng 3 năm 2017 Tuy
nhiên, các đóng góp của nguồn lực cộng đồng cho Google Maps không bị ngừng vìcông ty đã thông báo rằng các tính năng đó sẽ được chuyển sang chương trình
Google Local Guides.
Chế độ xem vệ tinh của Google Maps là chế độ xem "từ trên xuống" hoặc chế độxem toàn cảnh; hau hết các hình ảnh có độ phân giải cao của các thành phố là khôngảnh chụp từ máy bay bay ở độ cao 800 đến 1.500 foot (240 đến 460 m), trong khihầu hết các hình anh khác là từ vệ tinh Phần lớn hình anh vệ tinh được chụp trongphạm vi ba năm gần nhất và được cập nhật thường xuyên Google Maps trước đây
đã sử dụng một biến thê của phép chiếu Mercator va do đó không thé hiển thị chính
xác các khu vực xung quanh các cực Vào tháng 8 năm 2018, phiên ban Google
Maps dành cho máy tính dé bàn đã được cập nhật đề hién thị hình anh địa cầu 3D,
và có thể chuyền về bản đồ 2D trong phần cài đặt
Google Maps cho Android va iOS thiết bị được phát hành vào tháng năm 2008 vàtính năng dẫn đường chỉ tiết đến từng ngã tư dùng GPS cùng với tính năng hỗ trợđậu xe Vào tháng 8 năm 2013, nó được xác định là ứng dụng phổ biến nhất thé giới
dành cho điện thoại thông minh, với hơn 54% chu sở hữu điện thoại thông minh
toàn câu sử dụng nó ít nhât một lân.
Vào năm 2012, Google báo cáo có hơn 7.100 nhân viên và nhà thầu trực tiếp làm
việc trong lĩnh vực lập bản đồ
Vào tháng 5 năm 2017, ứng dụng đã được báo cáo có 2 tỷ người dùng trên
Trang 21Android, cùng với một số dịch vụ khác của Google bao gồm YouTube, Chrome,Gmail, Google Search va Google Play, Google Maps đạt hơn 1 tỷ người dùng hang
tháng [5].
2.3.2 Google Map API
Ung dung Google Map 1a mét dich vu ban đồ trực tuyến trên web và app miễn
phi do Google phát hành và quan lý, ứng dụng hỗ trợ nhiều dich vụ, tính năng cho
người dùng nhưng phổ biến nhất là dò đường, chi đường, tìm vị trí; hiển thị nhữngtuyến đường tối ưu cho từng phương tiện tham gia giao thông, ngoài ra còn hướngdẫn cách bắt xe và chuyên tuyến xe dành cho người tham gia các phương tiện lưuthông công cộng (xe bus), hiển thị những địa điểm xung quanh vị trí người dùng
hoặc vi trí chỉ định như ATM, trạm xăng, bệnh viện,
Google Map API là một phương pháp cho phép một website B có thể sử dụngdịch vụ hoặc hiền thị nội dung của một trang web khác, ở đây là là website A —Google Map (thông qua Map API), dich vụ bản đồ của website A (Map) sẽ đượcnhúng vào website B (Website cá nhân), tại trang web B có thé sử dụng những dich
vụ mà Google Map cung cấp thông qua Google Map API như: di chuyển, zoom,đánh dấu trên bản đồ
Hiện nay, các ứng dụng xây dựng trên nền tảng Google Maps như Grab thường
sử dụng Google Map API để nhúng bản đồ vào trang web hoặc ứng dụng thông qua
ngôn ngữ Javascripts, chính vì vậy mà việc sử dung API từ Google cũng khá dễ
dàng Đồng thời Map API cũng đã được nâng cấp lên phiên bản mới, không chỉ hỗ
trợ cho máy tính và website truyền thống mà còn cả thiết bi di động, giúp ứng dụng
hoạt động nhanh hơn và hiệu quả hơn [6].
2.3.3 Map Style
Tính năng này giúp tùy chỉnh bản đồ và thay đổi cách hién thị trực quan của các
yêu tô như đường, công viên và tòa nhà Tùy chỉnh bản đô băng các công cụ sau:
e_ Cloud-based maps styling: Sử dụng Google Cloud Console dé tạo và quan
Trang 22lý kiểu bản đồ, đồng thời liên kết chúng với ban đồ bang cách sử dụng ID
bản đồ Có thé tạo kiểu mới bang cach sử dung công cụ tạo kiểu hoặc nhậpcác định nghĩa kiêu hiện có Mỗi lần cập nhật một kiểu, trang web/ứng dụngcủa ta sẽ được tự động cập nhật các thay đôi
e JSON style declarations: Đối với mọi thay đổi tùy chỉnh đối với bản đồ,
hay sử dụng khai báo kiêu JSON được nhúng dé xác định kiểu bản đồ theo
cách thủ công Việc thay đổi các khai báo kiểu này yêu cầu cập nhật mã phíaclient sử dụng thiết bị của người dùng cuối dé thực hiện các thao tác và cập
Hình 2.1: Các kiểu ban đồ Nguồn https://mapstyle.withgoogle.com/
Ở đây ta chọn kiêu “Standard” và tuỳ chỉnh thêm một số tính năng khác như:
Trang 23ân di các nhãn, tên của các toà nha, công viên, trường học, ân hêt những thứ
không cần thiết trên ban đồ
ve 4
Kevhoard shortcuts Man data ©2021 Termsof lise Renort:
Hình 2.2: Ban đồ sau khi ân những thứ không cần thiết Nguồn Google Map
2.4 Chỉ số độ nhám quốc tế
Các “chỉ số độ nhám quốc tế” (IRI) là chỉ số độ nhám thường thu được từ cácmặt cắt dọc đường được đo Nó được tính toán bằng cách sử dụng mô hình toán họcmột phan tu 6 tô, phản ứng của nó được tích lũy dé mang lại chỉ số độ nhám với cácđơn vị độ đốc (in / mi, m / km, v.v.) Thước đo hiệu suất này có ít tính ngẫu nhiên
và chủ quan hơn so với chỉ số hiệu suất mặt đường, nhưng nó không hoàn toànkhông có ngẫu nhiên Các nguồn thay đổi trong dữ liệu IRI bao gồm sự khác biệt
giữa các kết quả đọc của các lần chạy khác nhau của xe thử nghiệm và sự khác biệtgiữa các kết quả đọc của đường bánh xe bên phải và bên trái Bất chấp những thực
tế này, ké từ khi được giới thiệu vào năm 1986, IRI đã trở thành con đường sự thô
ráp chỉ số được sử dụng phô biến nhất trên toàn thế giới để đánh giá và quản lý hệ
thống đường
Trang 24Hình 2.3: Tiến trình độ nhám cho một con đường ở Texas, Hoa Kỳ Chấm màu
xanh lam hiên thị thời gian bảo trì [8].
Việc đo lường IRI là bắt buộc đối với dit liệu được cung cấp cho Cục Quản lý
Đường cao tốc Liên bang Hoa Kỳ và được đề cập trong một số tiêu chuẩn từ ASTM
quốc tế: ASTM E1926 - 08, ASTM E1364 - 95 (2005), và những người khác IRIcũng được sử dụng dé đánh giá việc xây dựng mặt đường mới, để xác định cáckhoản tiền phạt hoặc tiền thưởng dựa trên độ nhẫn [8]
2.5 Cảm biến
Có hai loại cảm biên được sử dụng:
e Accelerometer Sensor: cảm biên gia toc kê
e Gravity Sensor: cảm biến gia tốc trọng trường
2.5.1 Cảm biến gia tốc kế (Accelerometer Sensor)
Đo lực gia tốc tính bằng m/s? tác động lên một thiết bị trên cả ba trục vật lý
(x,y,z), bao gom ca luc hap dan
2.5.2 Cảm biến gia tốc trọng trường (Gravity Sensor)
Đo lực hap dan tinh bang m/s? tác dụng lên một thiết bị trên cả ba trục vật lý
(x,y,Z).
10
Trang 25Hình 2.4: Ba trục vật lý (x,y,z) biêu diễn các giá trị của các cảm biến trong không
gian Nguôn Google.
2.6 Công nghệ sử dụng
2.6.1 2.6.1 Thư viện sử dụng
2.6.1.1 Glide
e Giới thiệu
Glide là một thư viện open source hỗ trợ load ảnh trên Android Dùng Glide sẽ
đơn giản hóa các công việc cần làm khi sử dụng một bức ảnh trong Android đi rấtnhiều Chúng ta không cần quan tâm đến việc decoding, memory and disk caching
mà thay vào đó chỉ cần sử dung interface rất đơn giản từ Glide
Glide hỗ trợ fetching, decoding và hiển thị cả ảnh tĩnh hoặc ảnh động đó là điểmnổi bật của nó so với các thư viện load ảnh khác cho android Glide có thé được dé
dàng đưa vào bất kỳ mô hình mạng nào Mặc định Glide sử dụng mô hình custom
của HttpUrlConnection tuy nhiên chúng ta có thé dé dàng cho nó hoạt động với
Volley hoặc OkHttp.
Cơ chế download hình của Glide là download ảnh với kích thước day du về sau
lãi
Trang 26đó resize lai theo đúng kích thước được yêu cầu dé hiền thị va lưu lại kích thước sau
khi resize, vì thé dung lượng cần để lưu lại hình ảnh nhỏ, tiết kiệm bộ nhớ [9]
e Cài đặt
Đề sử dụng Glide trong project trên Android studio, chúng ta thêm dependencies
sau vào build.gradle.
dependencies {
compile "com github bumptech gLide : gLide: 3 7 9"
compile 'com android support: support-v4:23 1 1 '
}
Thêm các Permission vào AndroidManifest.xml
<uses-permission android:name= "android permission INTERNET"/>
<uses-permission android:name="android.permisston.ACCESS_NETWORK_STATE"/>
<uses-permisston android:name="android.permisston.WRITE_EXTERNAL_STORAGE"/>
Glide hỗ trợ các chức năng
o Load ảnh từ một url
o Resize lại kích thước của ảnh
o Crop ảnh với kích thước tuỳ chỉnh
o_ Hiễn thị ảnh ở trung tâm, vừa với view muốn hién thị
o Hiển thị hình ảnh thay thế trong lúc đợi download hình hoặc khi
download lỗi.
o Tuy chỉnh chat lượng tải về
° Áp dụng
Glide được sử dụng dé download và hién thị hình ảnh đại diện của tài khoản
Google được sử dụng dé đăng nhập trong ứng dụng
12
Trang 272.6.1.2 Retrofit
e Giới thiệu
Retrofit là một công nghệ được phát triển bởi Square, nó được xây dựng dựatrên rất nhiều công nghệ mạnh mẽ cho phép giải quyết tốt các yêu cầu từ phía client
và server một cách nhanh và hiệu quả nhất Tóm lai, Retrofit là một REST Client
dành Android và cả Java Retrofit được phát triển giúp cho quá trình kết nối client —server trở nên dễ dàng, nhanh chóng Đối với Retrofit ta có thé GET, POST, PUT,DELETE
Ngoài ra Retrofit ngày càng được phổ biến hơn với nhiều ưu điểm mà nó demlại, ví dụ như là hiệu năng, thời gian hoàn thành task nhanh hơn các thư viện phổbiến khác như AsyncTask và Volley
Dashbroad One Discussion
Bang 2.1: So sánh retrofit với các thu viện khác Nguồn Topdev
Nói một cách dễ hiểu hơn, Retrofit chính là một type-safe HTTP Client cho Java
và Android Nó làm cho việc truy xuất và tải lên JSON (hoặc dữ liệu có cấu trúckhác) tương đối dé dàng thông qua một dich vụ web dựa trên REST Trong Retrofit,
ta cầu hình bộ chuyên đôi nào được sử dụng dé tuần tự hóa đữ liệu Thông thường,
đối với JSON, ta sử dung GSon, nhưng ta có thể thêm bộ chuyên đổi tùy chỉnh dé
xử ly XML hoặc các giao thức khác Retrofit sử dụng thư viện OkHttp cho các yêu
cầu HTTP [10]
e Cài đặt
Thêm các phan dependency sau vào file build.gradle
13
Trang 28Mục đích của Paper là cung cấp một tùy chọn lưu trữ object đơn giản nhưng
nhanh chóng cho Android Nó cho phép sử dụng các lớp Java/Kotlin như: không có
chú thích, phương thức gốc, phần mở rộng lớp bắt buộc, v.v Hơn nữa, việc thêm
hoặc xóa các trường vào các lớp dữ liệu không còn là vấn đề khó khăn - tất cả các
thay đôi cấu trúc dữ liệu đều được xử lý tự động
Hầu hết các ứng dụng cần biết danh tính của người dùng Việc biết danh tính của
người dùng cho phép ứng dụng lưu đữ liệu người dùng một cách an toản trên đám
14
Trang 29mây và cung cap trải nghiệm được cá nhân hóa giông nhau trên tat cả các thiệt bi của người dùng.
Xác thực Firebase cung cấp các dịch vụ phụ trợ, SDK dễ sử dụng và thư viện
giao diện người dùng được tạo sẵn dé xác thực người dùng với ứng dụng Nó hỗ trợxác thực bằng mật khẩu, số điện thoại, các nhà cung cấp danh tính liên hợp phổ biếnnhư Google, Facebook và Twitter, v.v.
Xác thực Firebase tích hợp chặt chẽ với các dịch vụ Firebase khác và nó tận
dụng các tiêu chuẩn ngành như OAuth 2.0 va OpenID Connect, vì vậy nó có thé
được tích hợp dé dàng với backend [11].
e Cách thức hoạt động
Dé đăng nhập một người dùng vào ứng dụng, trước tiên phải nhận được thôngtin xác thực từ người dùng đó Các thông tin xác thực này có thé là địa chỉ email vàmật khẩu của người dùng hoặc mã thông báo OAuth từ nhà cung cấp danh tính
được liên kết Sau đó, chuyền các thông tin xác thực này cho SDK xác thực
Firebase Các dịch vụ phụ trợ của Firebase sau đó sẽ xác minh các thông tin đăng
nhập đó và tra lại phản hồi cho client.
Sau khi đăng nhập thành công, ta có thê truy cập thông tin hồ sơ cơ bản của user
và ta có thể kiểm soát quyền truy cập của người dùng vào dữ liệu được lưu trữ trongcác sản phâm Firebase khác Ta cũng có thé sử dụng mã xác thực được cung cap dé
xác minh danh tính của người dùng trong các backend service.
Lưu ý: Theo mặc định, người dùng đã xác thực có thể đọc và ghi dữ liệu vàoRealtime Database và Cloud Storage của Firebase Ta có thể kiểm soát quyền truycập của những người dùng đó bằng cách sửa đôi Firebase Realtime Database và
Cloud Storage Security Rules [11].
° Áp dụng
Ta sử dụng Firebase Authen tication trong việc xác thực người dùng trước người
dùng có thể thực hiện được các chức năng khác trong ứng dụng
15
Trang 302.6.1.5 Firebase Cloud Storage
e Giới thiệu
Cloud Firestore là một cơ sở dữ liệu linh hoạt, có thé mở rộng dé phát triển thiết
bị di động, web và máy chủ từ Firebase và Google Cloud Giống như RealtimeDatabase của Firebase, nó giữ cho dữ liệu được đồng bộ hóa trên các ứng dụng
khách thông qua trình xử lý thời gian thực và cung cấp hỗ trợ ngoại tuyến cho thiết
bị di động và web có thể tạo các ứng dụng đáp ứng hoạt động bat kê độ trễ mạng
hoặc kết nối Internet Cloud Firestore cũng cung cấp khả năng tích hợp liền mạchvới các sản phẩm Firebase và Google Cloud khác, bao gồm cả Cloud Functions[12].
e Cach thức hoạt động
Cloud Firestore là cơ sở dữ liệu NoSQL, được lưu trữ trên dam mây mà các ứng
dụng web iOS, Android và web của mình có thể truy cập trực tiếp thông qua SDK
gốc Cloud Firestore cũng có sẵn trong các SDK Node.js, Java, Python, Unity, C ++
và Go, ngoài các API REST va RPC
Theo mô hình đữ liệu NoSQL của Cloud Firestore, ta lưu trữ dữ liệu trong các
tài liệu có chứa các trường ánh xa tới các giá tri Các tai liệu này được lưu trữ trong
các bộ sưu tập, là các vùng chứa tài liệu của mình mà mình có thể sử dụng dé sapxếp dữ liệu và xây dựng các truy van Tai liệu hỗ trợ nhiều kiểu dữ liệu khác nhau,
từ chuỗi và số đơn giản, đến các đối tượng lồng nhau, phức tạp Ta cũng có thể tạocác bộ sưu tập con trong tài liệu và xây dựng cấu trúc dữ liệu phân cấp mở rộng quy
mô khi cơ sở dữ liệu của mình phát triển Mô hình dữ liệu Cloud Firestore hỗ trợbat kỳ cấu trúc dữ liệu nào hoạt động tốt nhất cho ứng dụng của minh
Ngoài ra, truy vấn trong Cloud Firestore rất rõ ràng, hiệu quả và linh hoạt Tạocác truy vấn nông dé truy xuất đữ liệu ở cấp độ tài liệu mà không cần truy xuất toàn
bộ collection hoặc bất kỳ collection con lồng nhau nào Thêm sắp xếp, lọc và giớihạn cho các truy van hoặc con trỏ dé phân trang kết quả Dé giữ cho dữ liệu trong
16
Trang 31các ứng dụng luôn cập nhật mà không cần truy xuất toàn bộ cơ sở dữ liệu mỗi khi
cập nhật xảy ra, hãy thêm trình nghe thời gian thực Việc thêm trình nghe thời gianthực vào ứng dụng sẽ thông báo bằng snapshot dit liệu bat cứ khi nào dit liệu mà
ứng dụng khách đang lắng nghe các thay đổi, chỉ truy xuất các thay đôi mới
Bảo vệ quyền truy cập vào đữ liệu trong Cloud Firestore với Firebase
Authentication va Cloud Firestore Security Rules cho Android, iOS và JavaScript
hoặc Identity and Access Management (IAM) cho các ngôn ngữ phía may chủ [12].
e Áp dụng
Firebase Cloud Storage được sử dụng dé lưu trữ dit liệu đoạn đường do user gửilên trước khi được trigger thực hiện việc đồng bộ hoá với dữ liệu cộng đồng cũngtrên Cloud Storage.
2.6.1.6 Firebase Realtime Database
e Giới thiệu
Cơ sở dữ liệu thời gian thực của Firebase là cơ sở dữ liệu được lưu trữ trên đám
mây Dữ liệu được lưu trữ dưới dạng JSON và được đồng bộ hóa trong thời gianthực cho mọi máy khách được kết nối Khi tạo ứng dụng đa nên tảng với SDK 1OS,
Android và JavaScript của Firebase, tất cả user đều chia sẻ một phiên ban Realtime
Database và tự động nhận các bản cập nhật với dữ liệu mới nhất [13]
e Cách thức hoạt động
Cơ sở đữ liệu thời gian thực của Firebase cho phép tạo các ứng dụng hợp tác,phong phú bang cách cho phép truy cập an toàn vào cơ sở dữ liệu trực tiếp từ mã
phía client Dữ liệu được lưu trữ cục bộ và ngay cả khi ngoại tuyến, các sự kiện thời
gian thực vẫn tiếp tục kích hoạt, mang lại cho người dùng cuối trải nghiệm đáp ứng.Khi thiết bị lay lại kết nối, Realtime Database đồng bộ hóa các thay đổi dữ liệu cục
bộ với các bản cập nhật từ xa xảy ra trong khi máy khách ngoại tuyến, tự động hợp
nhất mọi xung dot
Realtime Database cung cấp ngôn ngữ quy tắc dựa trên biéu thức linh hoạt, được
17
Trang 32gọi là Firebase Realtime Database Security Rules, để xác định cách dữ liệu nên
được cấu trúc và khi nào dit liệu có thé được đọc hoặc ghi vào Khi được tích hợp
với Firebase Authentication, các nhà phát triển có thể xác định ai có quyền truy cậpvào dir liệu nao và cách họ có thê truy cập dữ liệu đó.
Cơ sở dữ liệu thời gian thực là một cơ sở dữ liệu NoSQL và như vậy có các
chức năng và tối ưu hóa khác nhau so với cơ sở đữ liệu quan hệ API cơ sở dữ liệuthời gian thực được thiết kế để chỉ cho phép các hoạt động có thể được thực thinhanh chóng Điều này cho phép xây dựng trải nghiệm thời gian thực tuyệt vời cóthé phục vụ hang triệu người dùng mà không ảnh hưởng đến kha năng phản hồi Do
đó, điều quan trọng là phải suy nghĩ về cách người dùng cần truy cập vào dữ liệu và
sau đó cấu trúc nó cho phù hợp [13]
Cloud Functions là một khuôn khổ không máy chủ cho phép tự động chạy mã
phụ trợ dé phản hồi các sự kiện được kích hoạt bởi các tính năng Firebase và các
yêu cầu HTTPS Mã JavaScript hoặc TypeScript được lưu trữ trong đám mây của
Google và chạy trong môi trường được quản lý Không cần phải quản lý và mở rộng
các máy chủ của riêng [14].
e Cách thức hoạt động
Sau khi bviết và triển khai một function, các máy chủ của Google bắt đầu quản
lý function đó ngay lập tức Có thé kích hoạt chức năng trực tiếp với một yêu cầuHTTP hoặc, trong trường hợp là các chức năng nền, máy chủ của Google sẽ lắng
nghe các sự kiện và chạy function khi nó được kích hoạt.
18
Trang 33Khi tai tăng hoặc giảm, Google sẽ phản hồi bang cách nhanh chóng mở rộng sốlượng phiên bản máy chủ ảo cần thiết để chạy function Mỗi function chạy riêng lẻ,
trong môi trường riêng với cau hình riêng [14]
° Áp dụng
Sử dụng Firebase Cloud Functions dé tạo một trigger lắng nghe khi có sự thay đổi
của dữ liệu sẽ thực hiện việc đồng nhất đữ liệu vừa được upload với bộ dữ liệu cộngđồng đã ton tại
2.6.2 Backend/Database
2.6.2.1 Backend
Khi một một bộ dữ liệu mới được upload lên Firebase Cloud Storage,
Firebase Cloud Functions có thé nhận biết được sự thay đổi dữ liệu trong đó Ngay
khi lắng nghe được sự thay đôi, Cloud Function ngay lập tức thực hiện thuật toán déđồng nhất bộ dữ liệu vừa được người dùng upload và dit liệu cộng đồng trong một
collection khác trong Cloud Storage.
Thuật toán sử dung trong Firebase Cloud Functions được biết băng Javascrip,chạy với RAM là 4GB dé có thé thực hiện việc đồng nhất một cách nhanh chóng
2.6.2.2 Database
Trong ứng dụng nay sử dung 2 loại database là Firebase Cloud Storage va
Firebase Realtime Database.
Firebase Cloud Storage được sử dung dé chứa những đữ liệu đoạn đường đã
được xử lý ở phía người dùng khi gửi lên và dữ liệu đoạn đường được ghi nhận của
cộng đồng sau khi đã đồng nhất với dữ liệu được gửi lên Hai bộ dữ liệu này là khác
nhau và được chia vào 2 collection khác nhau trong cùng một Firebase Cloud
Storage.
Collection “raw” chứa dữ liệu được gửi lên gôm dữ liệu đoạn đường và người
ghi nhận lại những dữ liệu đó Nếu người dùng đăng nhập thì sẽ dùng email của
19
Trang 34người dùng dé xác định Nếu không thì sẽ không có người dùng nào được xác địnhcho những dữ liệu đó.
Collection “geopoints” chứ bộ dữ liệu cộng đồng sau khi đã được đồng nhất
với những dữ liệu mà người dùng gửi lên Những dữ liệu trong bộ dữ liệu này được
hiền thị trực tiếp cho người dùng thông qua ban đồ được hỗ trợ bởi Google Map
2.7 Tối ưu ứng dụng
Một ứng dung được coi là có hiệu suất kém nếu phản hồi chậm, hiển thị hoạt
ảnh bị giật, đơ hoặc tiêu thụ quá nhiều năng lượng Khắc phục sự cố hiệu suất liên
quan đến việc xác định các khu vực mà ứng dụng mà ta sử dụng kém hiệu quả các
tài nguyên như CPU, bộ nhớ, đồ họa, mang va pin thiết bị Dé tim và khắc phụcnhững sự cố này, ta sử dụng các công cụ được Android giới thiệu [15]
e Android Studio cung cấp một số công cụ đề giúp tim và hình dung các van
đề tiềm an:
o CPU profiler: Công cụ này giúp theo dõi các van đề về hiệu suất thời
gian chạy.
o Memory profiler: Công cụ này giúp theo dõi việc cấp phát bộ nhớ
o Network profiler: Công cụ này giám sát việc sử dụng lưu lượng
mạng.
o Energy profiler: Công cụ này theo dõi việc sử dụng năng lượng, điều
này có thê góp phần làm tiêu hao pin
e Cac thư viện Jetpack Benchmark cho phép đo lường các hoạt động quan
trọng khác nhau:
o_ Maerobenchmark: Do lường các trường hợp sử dụng hiệu suất quan
trọng, bao gồm khởi động ứng dụng và vẽ lại được kích hoạt bởi các
hành động như hoạt ảnh giao diện người dùng hoặc cuộn.
o Benchmark: Do lường chi phí CPU của các chức năng cụ thé
20
Trang 35Trong ứng dụng này, ta sử dụng công cụ Profiler do Android Studio cung cấp.
2.7.1 Kiếm tra hoạt động của CPU với CPU Profiler
Tối ưu hóa việc sử dụng CPU của ứng dụng có nhiều lợi thé, chang hạn như mang
lại trải nghiệm người dùng nhanh hơn và mượt mà hơn cũng như duy trì tuổi thọ pin
của thiết bị
Ta thé sử dụng CPU Profiler để kiểm tra mức sử dụng CPU và hoạt động luồng
của ứng dụng trong thời gian thực trong khi tương tác với ứng dụng hoặc có thé
kiểm tra chỉ tiết trong method traces, function traces và system traces [16]
Các loại thông tin cụ thể mà CPU Profiler ghi lại và hiển thị được xác định bởicấu hình ghi đã chọn:
e System Trace: Ghi lại các chi tiết chỉ tiết cho phép kiểm tra cách ứng dụng
tương tác với tài nguyên hệ thống
e_ Method and function traces: Đối với mỗi luồng trong quy trình ứng dụng,
ta có thể tìm ra method nào được thực thi trong một khoảng thời gian và tảinguyên CPU mà mỗi method tiêu thụ trong quá trình thực thi Cũng có thé sửdụng method traces và function traces để xác định hàm gọi và hàm được goi
Hàm gọi là một hàm gọi một hàm khác và một hàm được gọi là một hàm
được gọi bởi một hàm khác Ta có thể sử dụng thông tin này dé xác định
phương thức hoặc chức năng nào chịu trách nhiệm thực hiện các tác vụ tốn
nhiều tài nguyên cụ thể quá thường xuyên và tối ưu hóa mã ứng dụng đểtránh công việc không cần thiết
21
Trang 36Như được chỉ ra trong hình, chế độ xem mặc định của CPU Profiler bao gồm
các timeline sau:
1 Event timeline: Hiển thi các hoạt động trong ứng dung khi chúng chuyển
đổi qua các trạng thái khác nhau trong vòng đời của chúng và cho biết các
tương tác của người dùng với thiết bị, bao gồm cả các sự kiện xoay màn
hình.
2 CPU timeline: Hién thị mức sử dụng CPU trong thời gian thực của ứng dụng
— dưới dạng phần trăm tổng thời gian CPU khả dụng — và tổng số luồng
mà ứng dụng đang sử dụng Dòng thời gian cũng hiển thị mức sử dụng CPUcủa các quy trình khác (chăng hạn như system processes hoặc các ứng dụngkhác), vì vậy ta có thể so sánh nó với mức sử dụng ứng dụng của mình Ta
có thé kiểm tra dữ liệu sử dung CPU trước đây băng cách di chuyển chuột
dọc theo trục ngang của dòng thời gian.
3 Thread activity timeline: Liệt kê từng chuỗi thuộc quy trình ứng dụng và
cho biết hoạt động của chúng dọc theo dòng thời gian băng cách sử dụng các
22
Trang 37màu được liệt kê bên dưới Sau khi bạn ghi lại một dấu vết, ta có thé chọn
một chuỗi từ dòng thời gian nay dé kiểm tra dữ liệu của nó trong ngăn theo
dõi.
a Màu xanh lá cây: Luồng đang hoạt động hoặc đã sẵn sang dé sử
dụng CPU Đó là, nó ở trạng thái chạy hoặc chạy được.
b Màu vàng: Luông đang hoạt động, nhưng nó dang chờ hoạt động
1/0, chang han như I / O đĩa hoặc mang, trước khi có thể hoàn
thành công việc của mình.
c Màu xám: Luồng đang ngủ và không tiêu tốn bất ky thời gian nào
của CPU Điều này đôi khi xảy ra khi luồng yêu cầu quyền truycập vào một tài nguyên chưa có sẵn Chuỗi chuyên sang trạng tháingủ tự nguyện hoặc hạt nhân đặt chuỗi ở trạng thái ngủ cho đến
khi tài nguyên được yêu cau trở nên khả dụng.
2.7.2 Kiếm tra mức sử dụng bộ nhớ của ứng dụng bằng Memory Profiler
Android cung cấp môi trường bộ nhớ được quản lý — khi xác định rằng ứngdụng không còn sử dụng một số đối tượng nữa, trình thu gom rác sẽ giải phóng bộnhớ không sử dụng trở lại heap Cách Android tìm kiếm bộ nhớ không sử dụng liêntục được cải thiện, nhưng tại một số thời điểm trên tất cả các phiên bản Android, hệthống phải tạm dừng code trong một thời gian ngắn Hầu hết thời gian, việc tạmdừng là không thé cưỡng lai Tuy nhiên, nếu ứng dụng phân bồ bộ nhớ nhanh hon
hệ thống có thê thu thập, thì ứng dụng có thê bị trì hoãn trong khi bộ thu thập giải
phóng đủ bộ nhớ dé đáp ứng phân bỏ Độ trễ có thé khiến ứng dụng bỏ qua khunghình và gây ra hiện tượng chậm.
Ngay cả khi ứng dụng không có biểu hiện chậm, nhưng nếu nó bị rò rỉ bộnhớ, nó có thê giữ lại bộ nhớ đó ngay cả khi nó ở chế độ nền Hành vi này có thểlàm chậm phần còn lại của hiệu suất bộ nhớ của hệ thống băng cách buộc các sựkiện thu gom rác không cần thiết Cuối cùng, hệ thống buộc phải giết tiến trình ứngdụng để lấy lại bộ nhớ Sau đó, khi người dùng quay lại ứng dụng, ứng dụng phải
23
Trang 38khởi động lại hoàn toàn [17].
Dé giúp ngăn chặn những sự cố này, ta sử dụng Memory Profiler để thực
hiện những việc sau:
e_ Tìm kiếm các mẫu phân bổ bộ nhớ không mong muốn trong dong thời gian
có thé gây ra sự có về hiệu suất
e Xuất Java heap dé xem đối tượng nào đang sử dụng hết bộ nhớ tai bat ky thời
điểm nào Một đối tượng tôn tại trong heap một khoảng thời gian dài có thé
giúp xác định rò rỉ bộ nhớ.
e Ghi lại phân bổ bộ nhớ trong quá trình tương tác bình thường và không bình
thường của người dùng để xác định chính xác nơi code đang phân bổ quánhiều đối tượng trong thời gian ngắn hoặc cấp phát các đối tượng bị rò ri
Khi ta mở Memory Profiler lần đầu tiên, ta sẽ thấy tiến trình chỉ tiết về việc sửdụng bộ nhớ của ứng dụng và các công cụ truy cập dé buộc thu thap rac, ghi lai kétxuất đống và ghi lai phan bồ bộ nhớ
Như được chỉ ra trong hình, chế độ xem mặc định cho Memory Profiler baogồm những thứ sau:
1 Một nút dé buộc một sự kiện 24ong24om rác
24
Trang 392 Một nút dé chụp lại heap dump.
3 Một menu thả xuống dé chỉ định tần suất trình biên dịch thu thập phân bô bộ
nhớ Chọn tùy chọn thích hợp có thé giúp ta cải thiện hiệu suất ứng dụngtrong khi lập hồ sơ
4 Các nút dé phóng to / thu nhỏ dong thời gian
5 Một nút đề chuyên tiếp đến đữ liệu bộ nhớ trực tiếp
6 Dòng thời gian sự kiện, hiển thị trạng thái hoạt động, sự kiện người dùng
nhập và sự kiện xoay màn hình.
7 Dòng thời gian sử dụng bộ nhớ, bao gồm những điều sau:
a Stacked graph về lượng bộ nhớ đang được sử dụng bởi từng danh mục
bộ nhớ, như được biểu thị băng trục y ở bên trái và phim mau ở trên
cùng.
b Một đường đứt nét cho biết số lượng đối tượng được phân bổ, như
được chỉ ra bởi trục y ở bên phải.
c Một biểu tượng cho mỗi sự kiện 25ong25om tác
2.7.3 Kiểm tra lưu lượng mang bằng Network Profiler
Khi ứng dụng đưa ra yêu cầu với mạng, thiết bị phải sử dụng 25ong di động hoặcWi-Fi ngốn điện dé gửi và nhận các gói Bộ đàm không chỉ sử dụng nguồn điện détruyền dữ liệu mà còn phải sử dụng thêm nguồn điện dé bật và giữ thức
Bằng cách sử dụng Network Profiler, ta có thể tìm kiếm các hoạt động mạngthường xuyên, trong thời gian ngắn, có nghĩa là ứng dụng yêu cầu bộ đàm phải bậtthường xuyên hoặc thức trong thời gian dài để xử lý nhiều yêu cầu ngắn gần nhau
Mau này cho biết rằng có thé tối ưu hóa ứng dụng của minh dé cải thiện hiệu suất
pin bang cách phân chia các yêu cầu mạng, do đó giảm số lần bộ đàm phải bật dégửi hoặc nhận dữ liệu Điều này cũng cho phép bộ đàm chuyên sang chế độ nănglượng thấp đê tiết kiệm pin trong khoảng thời gian dài hơn giữa các yêu cầu theo
đợt [18].
25
Trang 40Ở đầu cửa sé, có thé thay dòng thời gian của sự kiện Trên dòng thời gian, ta
có thé nhấp “1” và kéo dé chọn một phan của dòng thời gian dé kiểm tra trafic
Trong ngăn “2” bên dưới dong thời gian, chọn một trong các tab sau dé biếtthêm chỉ tiết về hoạt động mạng trong phần đã chọn của dòng thời gian:
e Connection View: Liệt kê các tệp đã được gửi hoặc nhận trong phần đã chọn
của dong thời gian trên tat cả các luồng CPU của ứng dụng Đối với mỗi yêu
cầu, có thể kiểm tra kích thước, loại, trạng thái và thời lượng truyền Ta có
thé sắp xếp danh sách này bằng cách nhấp vào bất kỳ tiêu đề cột nao Tacũng thay bảng phân tích chi tiết về phần đã chọn của dòng thời gian, hiểnthị thời điểm mỗi tệp được gửi hoặc nhận
e Thread View: Hién thị hoạt động mạng của từng luồng CPU của ứng dụng
Như thể hiện trong hình bên dưới, chế độ xem này cho phép ta kiểm tra
luông ứng dụng nào chiu trách nhiệm cho mỗi yêu câu mạng.
26