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

Tìm hiểu osmand và xây dựng ứng dụng minh họa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.44 MB, 45 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO
ĐỒ ÁN 2
ĐỀ TÀI:
Tìm hiểu OsmAnd và xây dựng ứng dụng minh họa
Giảng viên hướng dẫn:
Huỳnh Tuấn Anh
Sinh viên thực hiện:
Phan Phước Đính-17520345

TP.Hồ Chí Minh – Tháng 1/2021


2

Lời cảm ơn
Lời đầu tiên, nhóm chúng em gửi lời cảm ơn đến thầy Huỳnh Tuấn Anh
– Giảng viên hướng dẫn mơn Đồ án 2 lớp SE122.L11. Chính nhờ sự giúp
đỡ hết lịng của thầy mà nhóm em mới có thể hồn thiện được được đồ án
này một cách sn sẻ nhất.
Mặc dù kiến thức của nhóm em vẫn cịn hạn hẹp nên khơng thể tránh khỏi
những thiếu sót nhưng nhóm em đã cố gắng hồn thiện đồ án, hạn chế
mắc lỗi nhất có thể.
Trong q trình làm đề tài báo cáo, chắc khơng tránh khỏi nhiều điều thiếu
sót, rất mong nhận được phản hồi từ thầy để góp phần làm cho bản báo
cáo thêm hoàn thiện hơn.
Chân thành cảm ơn!


SE122.L11


3

Mục lục
Chương 1 Giới thiệu đề tài ................................................................................... 5
1.1
1.2

OsmAnd là gì? ................................................................................................ 5
OsmAnd đóng vai trị gì trong cuộc sống? ..................................................... 5

1.3

Cộng đồng OsmAnd ....................................................................................... 6

1.4

Các tính năng nổi bật ...................................................................................... 6

1.5 Hướng dẫn sử dụng một số tính năng cơ bản của OsmAnd(bản Free trên
Android) ................................................................................................................... 7
1.6

Đánh giá về OsmAnd(bản Free) ..................................................................... 8

Chương 2 Xây dựng ứng dụng minh họa các tính năng của OsmAnd ................ 8
2.1 Tổng quan .......................................................................................................... 8
2.2 Hướng tiếp cận ................................................................................................... 8

2.3 Xây dựng tính năng Navigation ....................................................................... 10
2.3.1 Mục đích tính năng:................................................................................... 10
2.3.2 Mơ tả sơ bộ chức năng: ............................................................................. 10
2.3.3 Sơ đồ use-case: .......................................................................................... 10
2.3.4 Kiến thức vận dụng: .................................................................................. 10
2.3.5 Thiết kế giao diện: ..................................................................................... 10
2.4 Xây dựng tính năng Xem bản đồ Offline ........................................................ 15
2.4.1 Mục đích tính năng:................................................................................... 15
2.4.2 Mơ tả tính năng: ........................................................................................ 15
2.4.3 Chuẩn bị sẵn bản đồ offline: ..................................................................... 16
2.4.4 Thiết kế giao diện: ..................................................................................... 18
2.5 Xây dựng tính năng Lưu đường đi theo file GPX ........................................... 19
2.5.1 Mục đích tính năng:................................................................................... 19
2.5.2 Mơ tả sơ bộ chức năng: ............................................................................. 20
2.5.3 Sơ đồ use-case: .......................................................................................... 20
2.5.4 Kiến thức vận dụng: .................................................................................. 20
2.5.5 Thiết kế giao diện: ..................................................................................... 21
2.6 Xây dựng tính năng Vẽ đường đi theo file GPX ............................................. 26
2.6.1 Mục đích tính năng:................................................................................... 26
2.6.2 Mơ tả chức năng: ....................................................................................... 26
SE122.L11


4

2.6.3 Sơ đồ use-case: .......................................................................................... 26
2.6.4 Kiến thức vận dụng: .................................................................................. 27
2.6.5 Thiết kế giao diện: ..................................................................................... 27
2.7 Xây dựng tính năng Lưu các địa điểm yêu thích ............................................. 29
2.7.1 Mục đích tính năng:................................................................................... 29

2.7.2 Mơ tả chức năng: ....................................................................................... 29
2.7.3 Sơ đồ use-case: .......................................................................................... 30
2.7.4 Kiến thức vận dụng: .................................................................................. 30
2.7.5Thiết kế giao diện: ...................................................................................... 30
2.8 Xây dựng tính năng Xem đường đi tới đích đến với các phương tiện khác nhau
................................................................................................................................ 35
2.8.1 Mục đích tính năng:................................................................................... 35
2.8.2 Mơ tả chức năng: ....................................................................................... 35
2.8.3 Sơ đồ use-case: .......................................................................................... 35
2.8.4 Kiến thức vận dụng: .................................................................................. 35
2.8.5 Thiết kế giao diện: ..................................................................................... 35
2.9 Xây dựng tính năng Vẽ đường đi minh họa giữa 2 điểm và tính khoảng cách 38
2.9.1 Mục đích tính năng:................................................................................... 38
2.9.2 Mơ tả chức năng: ....................................................................................... 38
2.9.3 Sơ đồ use-case: .......................................................................................... 38
2.9.4 Kiến thức vận dụng: .................................................................................. 38
2.9.5 Thiết kế giao diện: ..................................................................................... 38
Chương 3 Đánh giá, hướng phát triển ................................................................ 42
3.1 Đánh giá ........................................................................................................... 42
3.2 Hướng phát triển .............................................................................................. 45
3.3 Tài liệu tham khảo ........................................................................................... 45

SE122.L11


5

Chương 1 Giới thiệu đề tài
1.1 OsmAnd là gì?


Hình 1

OsmAnd (OSM Automated Navigation Directions) là ứng dụng mã nguồn mở
để xem bản đồ, chỉnh sửa, theo dõi bản ghi và dịch chuyển sử dụng cơ sở dữ
liệu OpenStreetMap(OSM) cho cả việc sử dụng trực tuyến và ngoại tuyến. Nó
cũng bao gồm tính năng định tuyến và điều hướng với hướng dẫn bằng hình
ảnh và giọng nói, cũng có sẵn trực tuyến và ngoại tuyến. OsmAnd cho phép
người dùng đóng góp trực tiếp vào OpenStreetMap bằng cách báo cáo lỗi, tải
lên GPX track, và thêm (hoặc chỉnh sửa) POIs(các điểm yêu thích),…
1.2 OsmAnd đóng vai trị gì trong cuộc sống?
OpenStreetMap(bao gồm dữ liệu bản đồ và các thành phần máy chủ) và ứng
dụng OsmAnd trên di động(Android,IOS) là hai dự án mã nguồn mở, vì vậy cả
hai đều phải đạt độ chính xác để đem lại hiệu quả khi sử dụng. Ví dụ: các vấn
SE122.L11


6

đề với dữ liệu bản đồ cơ bản (thiếu khóa và giá trị, lỗi kết nối đường, sự không
nhất quán, v.v.) có thể khiến OsmAnd điều hướng khơng hiệu quả và bỏ lỡ các
tuyến đường tốt nhất.
Dữ liệu bản đồ ln thường xun cập nhật, ln có hàng trăm, nghìn chỉnh
sửa bổ sung ở mỗi lần cập nhật. Tương tự, các POI(điểm ưa thích) cũng phải
cần xem xét liên tục để đảm bảo tính liên quan và chính xác với nhiều nhóm, tổ
chức cần di chuyển hoặc cơng việc kinh doanh mỗi tháng. Việc cung cấp dữ
liệu cho máy chủ OpenStreetMap rất dễ dàng. Người dùng chỉ việc gửi báo cáo
hoặc có thể bắt tay vào chỉnh sửa dữ liệu trực tiếp chỉ sau vài phút đăng ký
1.3 Cộng đồng OsmAnd
OsmAnd là dự án phần mềm lớn với hàng triệu người dùng. Nhưng số lượng
người đóng góp thực sự cho ứng dụng thì khơng nhiều. Nhà phát triển OsmAnd

khuyến khích người dùng nếu có vấn đề và đã giải quyết nó qua nhiều bước
phức tạp thì hãy vào cập nhật vấn đề và cách giải quyết tại trang Wiki, diễn
đàn,… của OsmAnd để cho người sau dễ xử lý. Nếu người dùng có kiến thức
về lập trình(Java) thì đóng góp bằng cách thêm vào những tính năng mới hoặc
chỉnh sửa lại mã nguồn nhằm khắc phục vấn đề nào đó hiện tại của app
1.4 Các tính năng nổi bật
• Navigation(Điều hướng)
Chức năng này cho phép bạn tới điểm đến dễ dàng bằng hướng dẫn giọng nói.
Tính năng này có thể chạy trực tuyến(tốc độ nhanh) hoặc ngoại tuyến(khơng
tính phí chuyển vùng khi ở nước ngồi). Người dùng có thể chọn điểm xuất
phát là vị trí hiện tại, POI(vị trí yêu thích) hoặc sử dụng một địa chỉ; sau đó để
điều hướng đến một vị trí, nhấn vào nút Navigation, ứng dụng sẽ tạo một tuyến
đường và bắt đầu hướng dẫn đường đi. Ngồi ra người dùng có thể nhấn phím
Home nhưng tính năng vẫn chạy ở chế độ nền, tức vẫn nhận được lời nhắc từ
ứng dụng
• Map viewing
OsmAnd cung cấp cho bạn khả năng tuyệt vời để sử dụng bản đồ. Bạn có thể
xem, tải xuống và ngay cả tùy chỉnh chúng. Cụ thể:
✓ Hiển thị vị trí và hướng
✓ Tùy chọn căn chỉnh bản đồ theo la bàn hoặc hướng chuyển động
✓ Lưu các địa điểm quan trọng trong Favorites
✓ Hiển thị POIs(các điểm ưa thích) xung quanh bạn
SE122.L11


7

✓ Hiển thị các GPX tracks trên bản đồ
✓ Hiển thị tên địa điểm phù hợp với ngôn ngữ người dùng, tiếng địa
phương

✓ Các kiểu vẽ bản đồ đa dạng
✓ Hiển thị các đường đi cho từng loại phương tiện giao thơng
✓ …
• Quick Action
Đây là giao diện menu các phím tắt linh hoạt cho phép trực tiếp truy cập vào
bất kỳ tính năng nào bạn cần truy cập thường xun nhất
• Travel with OsmAnd(hỗ trợ du lịch, tham quan)
Tính năng này dựa trên Wikivoyage, một dự án cộng đồng nơi các thành viên
tình nguyện đóng góp các bài báo về thông tin địa điểm như phương tiện giao
thông, địa danh, điểm mua sắm,…
Ngồi Wikivoyage, tính năng này cũng kết hợp với Wikipedia
• Đóng góp trực tiếp cho OsmAnd
OsmAnd là một phần mềm mã nguồn mở và luôn luôn trong trạng thái đang
phát triển. Vì thế mọi người dùng đều có thể đóng góp các vấn đề, tùy chỉnh
những tính năng để ứng dụng trở nên tuyệt vời hơn. Bạn có thể thơng báo các
bug trên bản đồ, đăng tải các GPX tracks hoặc các POI.
• Tính năng cho người đi bộ, xe,…
Với tính năng này, bản đồ sẽ bao gồm các đường bộ, đường xe,… rất phù hợp
cho các chuyến đi, hoạt động ngoài trời; cung cấp chế độ định tuyến và hiển thị
đặc biệt cho người đi bộ, xe,…. Ngồi ra tính năng cịn cho phép người dùng
ghi lại cuộc hành trình thơng qua file GPX

1.5 Hướng dẫn sử dụng một số tính năng cơ bản của OsmAnd(bản Free
trên Android)
Dưới đây là video sử dụng một số tính năng tiện dụng của app OsmAnd bản
free trên Android.
Link tải app:
/>Link video:
/>view?usp=sharing
SE122.L11



8

1.6 Đánh giá về OsmAnd(bản Free)
Ưu điểm:
✓ Tính năng hoạt động chính xác
✓ Nhiều tính năng tiện lợi và thú vị(Tạo Route Plan, Xem POIs,…)
✓ Các tính năng được trau chuốt, có chiều sâu, mang lại sự đa dạng: Tính
năng xem bản đồ có nhiều chế độ, tính năng Setting có nhiều lựa chọn
bật tắt,…
✓ Giao diện tương đối dễ sử dụng
✓ Phù hợp gần như mọi đối tượng lưu thơng bên ngồi, từ người đi bộ đến
người đi du lịch, đi xe và các phương tiện khác
Nhược điểm:
Chế độ chuyển phương tiện chưa thấy sự khác biệt về hiệu quả mang lại: ví dụ
như bản đồ của người đi bộ và người đi xe đạp chỉ khác về màu nền, cịn các
chi tiết thì gần như y chang,… dẫn đến sự chưa cần thiết để chuyển qua 2 chế
độ
Tổng quan: Bên cạnh Google Map, đây là một ứng dụng bản đồ hỗ trợ tuyệt
vời với các tính năng cơ bản nhưng được trau chuốt, có sự đa dạng bên trong;
bên cạnh đó có các tính năng mới lạ nhưng khá gần gũi với thực tế. Đây là một
phần mềm ứng dụng mã nguồn mở, vì vậy hồn tồn có thể tin rằng trong
tương lai ứng dụng luôn nhận được những bản cập nhật, thay đổi.

Chương 2

Xây dựng ứng dụng minh họa các

tính năng của OsmAnd

2.1 Tổng quan
Qua việc tìm hiểu OsmAnd, em thấy được các tính năng của ứng dụng
OsmAnd rất thú vị, mang lại những hiệu quả thực tế, gần gũi với đời sống hằng
ngày. Vì vậy, để trau dồi và học hỏi, em đặt mục tiêu xây dựng được ứng dụng
trên nền tảng mobile có các chức năng tương tự, gần giống như OsmAnd; đáp
ứng các tính năng cơ bản cũng như có 1 vài chức năng mới lạ
2.2 Hướng tiếp cận
Để xây dựng ứng dụng, em đã đề ra những việc cần làm theo trình tự,
được tổng hợp ở bảng bên dưới
STT
Việc cần làm
SE122.L11


9

1
2

3

4
5

Chọn ra 1 tính năng dự định sẽ làm
Mở phần mềm OsmAnd sử dụng tính năng ấy để
xác định được đầu vào, đầu ra, các use-case khi sử
dụng,…
Xác định các kiến thức cần vận dụng để xây dựng
tính năng này. Trong bước này, một số tính năng

em tham khảo những doc,source mẫu để tham khảo
Thực hiện xây dựng mã nguồn
Test thử. Nếu có lỗi quay lại bước 3 để xác định lại
những lỗi liên quan. Nếu tính năng chạy ổn, quay
lại bước 1
Table 1

Sau khi tìm hiểu OsmAnd, em chọn ra các tính năng sau sẽ thực hiện cho
đề tài này:
Tên tính năng
Mơ phỏng tính năng điều hướng chỉ
đường
Xem bản đồ Offline
Lưu đường đi trên bản đồ

Vẽ đường đi trên bản đồ

Lưu và hiển thị các địa điểm yêu
thích
Xem đường đi tới đích đến với các
phương tiện khác nhau

SE122.L11

Mơ tả
Tính năng mô phỏng chỉ đường
cho người sử dụng đến vị trí
u cầu, có giọng nói
Lưu bản đồ offline để khi
người sử dụng ngoại tuyến vẫn

có thể theo dõi được bản đồ
Tính năng cho phép người
dùng lưu lại đường mình đã đi,
để có thể lần sau xem lại hoặc
chia sẻ cho bạn bè về đường đi
của mình
Tính năng cho phép người
dùng chọn các điểm cần đi đến,
ứng dụng tự động vẽ lên đường
đi phù hợp đến các điểm đến ấy
Tính năng giúp người dùng lưu
lại vị trí các địa điểm yêu thích
Tính năng giúp người dùng
xem được đường đi tương thích
với các phương tiện(Xe đạp sẽ
tránh đường lớn, Xe con sẽ lựa
đường ngắn nhất)


10

Ước tính khoảng cách đường đi
thực tế

Vẽ đường đi minh họa giữa 2
điểm và tính khoảng cách
Table 2

2.3 Xây dựng tính năng Navigation
2.3.1 Mục đích tính năng:

Tính năng mơ phỏng chỉ đường cho người sử dụng đến vị trí yêu cầu, có giọng nói
hỗ trợ
2.3.2 Mơ tả sơ bộ chức năng:
Người dùng chọn 1 vị trí trên bản đồ. Khi click vào button Navigation, chuyển
sang màn hình điều hướng tới vị trí đã chọn
2.3.3 Sơ đồ use-case:

Hình 2

2.3.4 Kiến thức vận dụng:
Mapbox API(Tương tự OsmAnd, Mapbox cũng là 1 sản phẩm mã nguồn mở,
chuyên cung cấp các API về bản đồ cho các website, ứng dụng lớn hiện nay).
Ở đây sử dụng lớp NavigationLauncherOptions để quản lý việc navigate sang
một màn hình khác, ở đây là navigate sang màn hình mô phỏng qua việc gọi
hàm shouldSimulate()
2.3.5 Thiết kế giao diện:
Màn hình 1: Cho phép người dùng chọn vị trí. Khi chọn xong, button
Navigation hiện ra cho phép người dùng click vào

SE122.L11


11

Hình 3

SE122.L11


12


Hình 4

Màn hình 2: Màn hình điều hướng

SE122.L11


13

Hình 5

SE122.L11


14

Hình 6

Mơ tả Màn hình 2:
: bật/tắt giọng chỉ đường
: user đang ở chế độ tổng quát bản đồ, click button này để
màn hình đi theo user

SE122.L11


15

: user đang ở chế độ màn hình theo user, click để về chế độ tổng quát

bản đồ
2.4 Xây dựng tính năng Xem bản đồ Offline
2.4.1 Mục đích tính năng:
Cung cấp bản đồ cho người dùng trong trường hợp không có kết nối Internet
2.4.2 Mơ tả tính năng:
Người dùng xem bản đồ trong điều kiện khơng có kết nối Internet. Bản đồ
offline sẽ hiển thị không đầy đủ chức năng như bản đồ online
Ý tưởng: Với tính năng này, em đã tìm hiểu và thấy có rất nhiều hướng giải
quyết và nhiều thư viện hỗ trợ. Ví dụ như:
Mapbox API: để xây dựng tính năng này, đầu tiên người dùng phải khoanh
vùng 1 khu vực, nói cách khác ứng dụng phải tải về trước bản đồ offline để
hiển thị cho người dùng; và một kiểu StyleUrl(một Url trả về 1 kiểu bản đồ đã
được Mapbox Studio vẽ sẵn). Bản đồ này được thiết kế theo các tiles và người
dùng có thể cập nhật khi có kết nối mạng. Tiles map là map được hiển thị bằng
1 loạt các ảnh nhỏ cấu tạo nên nó
Osmdroid API: ứng dụng cũng yêu cầu người dùng phải tải trước về 1 file map
tiles, ở đây Osmdroid sử dụng MOBAC(Mobile Atlas Creator), một phần mềm
khoanh vùng 1 khu vực để xuất ra file SQLite
… Và rất nhiều cách tiếp cận khác. Tuy nhiên điểm chung là chúng đều theo 1
ý tưởng duy nhất, đó là tải trước về 1 file sau đó sử dụng thư viện của riêng
chúng để vẽ bản đồ lên
Ở tính năng này, em sử dụng Osmdroid API. Link tham khảo:
/>
SE122.L11


16

2.4.3 Chuẩn bị sẵn bản đồ offline:


Hình 7

SE122.L11


17

Hình 8

SE122.L11


18

Hình 9

2.4.4 Thiết kế giao diện:
Ở đây màn hình sử dụng trực tiếp thư viện vẽ bản đồ của Osmdroid

SE122.L11


19

Hình 10

2.5 Xây dựng tính năng Lưu đường đi theo file GPX
2.5.1 Mục đích tính năng:
Ghi(record) các điểm đi mà người sử dụng đã đi qua thành 1 file GPX. Người
dùng cũng có thể coi đường đi mình đã ghi trước đó. File GPX(viết tắt là GPS

Exchange Format), là một file text viết theo định dạng xml với các thông tin
địa lý như các điểm, vị trí đã được lưu từ người dùng. File GPX có thể dùng để
chia sẻ với người khác. Dưới đây là một file GPX ví dụ:
<rte>: thông tin về route(đường đi)
<rtept>: thông tin về routepoint(các điểm)

SE122.L11


20

Hình 11

2.5.2 Mơ tả sơ bộ chức năng:
Người dùng tạo mới một đường đi, trong quá trình di chuyển người dùng có
thể chọn thêm vị trí hiện tại thành 1 routepoint. Người dùng có thể chọn Pause
để dừng việc ghi lại, ấn Resume để tiếp tục và Stop để ngừng và lưu file
2.5.3 Sơ đồ use-case:

Hình 12

2.5.4 Kiến thức vận dụng:
Mapbox API
BroadcastReceiver: lắng nghe các sự kiện mà app phát ra thông qua Intent để
xử lý. Ở đây, việc ghi chép đường đi được xử lý ở Background do việc ghi lại
đường đi là 1 quá trình dài, trong quá trình người dùng có thể bật/tắt/dừng việc
ghi chép nên phải xử lý ở Background
Gpx-Parse: chuyển đổi các chuỗi thông tin về vị trí về định dạng của file gpx.
Dưới đây là lớp quản lý định dạng:


SE122.L11


21

Hình 13

2.5.5 Thiết kế giao diện:
Màn hình 1: Màn hình chính cho phép người dùng lựa chọn ghi mới hoặc mở
file đã ghi trước đó

SE122.L11


22

Hình 14

: Lựa chọn xóa các file ghi trước đó

SE122.L11


23

: Tạo mới 1 bản ghi
Màn hình 2: Điền thơng tin bản ghi mới

Hình 15


SE122.L11


24

Màn hình 3: Màn hình bản đồ, người dùng có thể thêm các điểm yêu cầu tại
đây

Hình 16

Add Waypoint: thêm điểm hiện tại
Pause: dừng
Stop: ngưng và lưu file
Khi click Add Waypoint, 1 dialog cho phép nhập thông tin tên, ghi chú tại
điểm này
SE122.L11


25

Hình 17

Kết quả file GPX đã ghi được khi test: Link drive
/>w?usp=sharing

Hình 18

SE122.L11



×