1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp An toàn thông tin: Ứng dụng di động đo lường chất lượng đường giao thông

98 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng di động đo lường chất lượng đường giao thông
Tác giả Le Dinh Khang
Người hướng dẫn TS. Le Kim Hung
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành An Toan Thong Tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Ho Chi Minh
Định dạng
Số trang 98
Dung lượng 55,75 MB

Nội dung

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 3

THÔ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 4

LỜ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 5

MỤ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 6

2.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 7

3.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 8

4.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 9

Hì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 10

Hì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 11

Hì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 12

Hì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 13

DANH 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 14

DANH 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 15

TOM 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 16

Chươ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 17

thô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 18

Chuong 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 19

2012, 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 20

lạ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 21

Android, 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 22

lý 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 24

Hì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 25

Hì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 27

2.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 28

Mụ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 29

mâ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 30

2.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 31

cá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 32

gọ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 33

Khi 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 34

ngườ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 35

Trong ứ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 36

Như đượ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 37

mà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 38

khở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 39

2 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

Ngày đăng: 02/10/2024, 04:53

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN