Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ số phát triển, thị trường thiết bị di động thông minh (smartphone) và máy tính bảng ghi nhận sự tăng trưởng mạnh mẽ, dần thay thế máy tính cá nhân (PC) trong các tác vụ công việc và hoạt động giải trí hàng ngày. Hầu hết các dòng điện thoại thông minh đều được tích hợp hệ thống định vị toàn cầu GPS cùng các ứng dụng bản đồ số, cho phép người dùng tra cứu địa điểm, tìm kiếm tuyến đường và định vị vị trí cá nhân một cách thuận tiện.

Tại Việt Nam, du lịch là ngành kinh tế có tốc độ tăng trưởng cao với nhiều danh lam thắng cảnh và di sản nổi tiếng như Vịnh Hạ Long, Huế, Hội An. Tuy nhiên, khách tham quan thường gặp trở ngại trong việc tiếp cận thông tin chính xác về các điểm đến, tra cứu dịch vụ hỗ trợ và định hướng không gian tại địa phương. Việc sử dụng bản đồ giấy truyền thống bộc lộ nhiều điểm bất tiện khi di chuyển. Xuất phát từ thực tế đó, đề tài "Xây dựng ứng dụng bản đồ địa điểm du lịch Hội An trên Android" được thực hiện nhằm cung cấp công cụ số hóa hỗ trợ du khách tra cứu thông tin địa điểm và dẫn đường trực tiếp trên thiết bị di động.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án được xác định cụ thể như sau:

  • Mục tiêu nghiên cứu:
    1. Tìm hiểu các công nghệ lập trình nền tảng trên hệ điều hành Android nhằm hoàn thiện ứng dụng có khả năng tìm kiếm và hiển thị thông tin, vị trí các điểm du lịch.
    2. Nắm vững nguyên lý vận hành của Android, cấu trúc hệ thống và chu trình hoạt động của các thành phần trong ứng dụng di động.
    3. Nghiên cứu và ứng dụng ngôn ngữ Java, kỹ thuật tương tác với tài nguyên phần cứng (GPS, kết nối Internet, màn hình cảm ứng TouchScreen) cùng các dịch vụ từ Google bao gồm: Google Maps, Google Places API, Google Directions API và Google Geocoding API.
    4. Xây dựng dịch vụ web (WebService) trên nền tảng ngôn ngữ PHP kết hợp hệ quản trị cơ sở dữ liệu MySQL để phục vụ việc lưu trữ và truy xuất dữ liệu.
  • Nhiệm vụ nghiên cứu:
    1. Nghiên cứu các tài liệu kỹ thuật, thư viện lập trình của bộ công cụ phát triển phần mềm Android SDK.
    2. Khảo sát và tích hợp các giao diện lập trình ứng dụng (API) của Google phục vụ chức năng bản đồ và định tuyến.

Về đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Ngôn ngữ lập trình Java, PHP; các chuẩn định dạng dữ liệu JSON, XML; hệ quản trị cơ sở dữ liệu MySQL; môi trường phát triển Android SDK và Eclipse; hệ điều hành Android cùng tài nguyên thiết bị; các dịch vụ nền tảng Google Maps, Google Places API, Google Directions API, Google Geocoding API.
  • Phạm vi nghiên cứu: Ứng dụng giới hạn chức năng hiển thị bản đồ, tra cứu thông tin và dẫn đường cho du khách trong phạm vi không gian thành phố Hội An; hệ thống vận hành trên các thiết bị cài đặt hệ điều hành Android phiên bản từ 2.2 trở lên.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết của đồ án dựa trên kiến trúc hệ thống của hệ điều hành Android và mô hình kiến trúc phần mềm phân tán. Hệ điều hành Android được xây dựng trên nền tảng nhân Linux (cung cấp giao diện phần cứng cấp thấp, quản lý bộ nhớ, tiến trình), kết hợp hệ thống thư viện C/C++ (SQLite, WebKit, OpenGL), môi trường thực thi máy ảo Dalvik tối ưu cho thiết bị hạn chế tài nguyên, tầng khung ứng dụng (Application Framework) và tầng ứng dụng người dùng. Cấu trúc ứng dụng Android vận hành dựa trên các thành phần cốt lõi:

  • Activity: Thành phần giao diện tương tác người dùng, hoạt động theo cơ chế ngăn xếp (stack) với chu trình sống gồm 4 trạng thái (Active/Running, Pause, Stop, Killed) và các phương thức callback tương ứng (onCreate, onStart, onRestart, onResume, onPause, onStop, onDestroy).
  • Service, Content Provider, Intent, Broadcast Receiver, Widget, Notification: Các khối chức năng hỗ trợ thực thi tác vụ nền, quản lý chia sẻ dữ liệu, truyền thông điệp liên tiến trình và hiển thị thông báo.

Hệ thống định dạng và trao đổi dữ liệu được chuẩn hóa thông qua:

  • JSON (JavaScript Object Notation): Chuẩn định dạng dữ liệu văn bản theo tiêu chuẩn ECMA-262, cấu trúc dựa trên cặp khóa - giá trị (name - value) và mảng đối tượng, tối ưu tốc độ phân tích cú pháp (parse) trên thiết bị di động.
  • XML (eXtensible Markup Language): Ngôn ngữ đánh dấu định hình cấu trúc giao diện và quản lý tệp cấu hình tài nguyên trong Android.
  • Hệ thống dịch vụ Google: Tích hợp Google Places API (truy vấn danh bạ địa điểm kinh doanh, thắng cảnh), Google Directions API (tính toán lộ trình, khoảng cách và thời gian di chuyển giữa hai tọa độ), và Google Geocoding API (chuyển đổi địa chỉ và tọa độ địa lý).

Phương pháp nghiên cứu thực tế được tác giả áp dụng là phương pháp tổng hợp tài liệu chuyên ngành, nghiên cứu lập trình thực nghiệm trên bộ công cụ Eclipse IDE phối hợp Android Emulator, và phương pháp phân tích thiết kế hệ thống hướng đối tượng thông qua ngôn ngữ mô hình hóa thống nhất (UML).

Nguồn dữ liệu của đề tài gồm hai phần: cơ sở dữ liệu địa phương quản lý danh mục địa điểm, loại hình du lịch Hội An được xây dựng trên máy chủ MySQL, kết hợp dữ liệu mở địa không gian được nạp động từ các máy chủ dịch vụ của Google.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo kiến trúc Client - Server ba tầng phân tán:

Tầng hệ thống Thành phần triển khai Công nghệ / Dịch vụ sử dụng Chức năng chính
Client Ứng dụng di động trên Android Java, Android SDK, MapActivity, MapView Gửi yêu cầu tìm kiếm, nhận dữ liệu JSON, hiển thị bản đồ, vẽ đường, chia sẻ Facebook
Application Server Máy chủ ứng dụng (Web Server) Linux, Apache/PHP, MySQL Tiếp nhận $_REQUEST, truy vấn cơ sở dữ liệu, tuần tự hóa kết quả sang chuẩn JSON
External Services Máy chủ dịch vụ Google Google Maps, Places, Directions API Cung cấp lớp bản đồ nền, dữ liệu tọa độ địa điểm mở rộng và thuật toán định tuyến chỉ đường

Quy trình phân tích thiết kế hướng đối tượng được thể hiện chi tiết qua các nhóm mô hình UML:

  • Mô hình hóa yêu cầu (Use Case): Hệ thống phục vụ hai tác nhân là Người sử dụng (du khách) và Quản trị viên. Các trường hợp sử dụng gồm: Mở hệ thống, Đóng hệ thống, Cập nhật danh sách địa điểm (thêm, hiệu chỉnh, xóa), Cập nhật danh mục loại địa điểm (thêm, hiệu chỉnh, xóa), Tìm kiếm địa điểm (qua WebService nội bộ hoặc qua Google Places), Xem vị trí địa điểm trên bản đồ.
  • Mô hình hóa cấu trúc và tương tác: Phân rã cấu trúc hệ thống thành ba nhóm lớp:
    • Lớp biên (Boundary): FrmMo he thong, FrmDong he thong, FrmTim qua webservices, FrmTim qua google places, Frm cap nhat dia diem, Frm cap nhat loai dia diem, Frm xem dia diem qua ban do.
    • Lớp điều khiển (Control): Ctl Mo he thong, Ctl Dong he thong, Ctl cap nhat dia diem, Ctl cap nhat loai dia diem, Ctl Tim qua webservices, Ctl Tim qua google places, Ctl xem dia diem qua ban do.
    • Lớp thực thể (Entity): Diadiem, Loaidiadiem.
    • Tương tác giữa các đối tượng được đặc tả thông qua hệ thống biểu đồ trình tự (Sequence Diagram), biểu đồ cộng tác (Collaboration Diagram), biểu đồ trạng thái (Statechart Diagram) và biểu đồ hoạt động (Activity Diagram) cho từng luồng chức năng.

Về mặt kỹ thuật triển khai phần mềm:

  • Xử lý WebService: Phía client khởi tạo đối tượng DefaultHttpClient và HttpPost, đóng gói tham số truy vấn bằng BasicNameValuePair gửi đến máy chủ PHP. Máy chủ truy xuất dữ liệu MySQL và trả về chuỗi JSON.
  • Xử lý dữ liệu nội bộ: Sử dụng Intent và Bundle để truyền dữ liệu tọa độ (_x, _y) giữa các màn hình Activity (DanhSach sang MapHeThong). Phân tích cú pháp JSON bằng các lớp đối tượng JSONArray và JSONObject.
  • Hiển thị bản đồ và định tuyến: Nhúng đối tượng com.google.android.maps.MapView thông qua apiKey đã đăng ký (0uFUtqa9T1qX31Wem1iBF3ZUfFkMfL1Lg4QePaQ). Chức năng đánh dấu địa điểm được thực hiện bằng cách kế thừa lớp ItemizedOverlay và ghi đè phương thức vẽ biểu tượng (Marker) theo tọa độ. Thuật toán vẽ đường đi sử dụng dữ liệu phản hồi từ URL chỉ đường của Google Directions API theo cấu trúc: http://maps.google.com/maps/api/directions/json?origin={lat,lng}&destination={lat,lng}&sensor=true&mode=driving
  • Tích hợp mạng xã hội: Ứng dụng nhúng mô-đun đăng nhập và chia sẻ thông tin địa điểm trực tiếp lên tài khoản Facebook của người dùng.

Nội dung chính theo từng chương

Chương 1. Chương mở đầu

Chương này thiết lập nền tảng đề tài thông qua việc phân tích thực trạng phát triển của điện thoại thông minh, hệ điều hành mã nguồn mở Android và nhu cầu thực tiễn của ngành du lịch Việt Nam, cụ thể là địa bàn Hội An. Tác giả chỉ ra nhược điểm của bản đồ giấy, từ đó xác định mục tiêu làm chủ công nghệ lập trình Android, tìm hiểu dịch vụ bản đồ số và hoàn thiện phần mềm tra cứu cầm tay. Chương cũng xác định phạm vi nghiên cứu gói gọn trong địa bàn thành phố Hội An với các đối tượng công nghệ: Java, PHP, MySQL, JSON, XML và hệ thống API của Google.

Chương 2. Giới thiệu về Android

Chương 2 trình bày tổng quan lý thuyết về hệ điều hành Android từ lịch sử hình thành, kiến trúc phân tầng đến môi trường lập trình. Tác giả trích dẫn số liệu thị phần quý II/2010 tại Mỹ theo hãng nghiên cứu NPD, ghi nhận Android đứng vị trí thứ nhất với 33%, vượt qua BlackBerry OS (28%) và iOS (22%); hệ sinh thái thời điểm đó đạt khoảng 70.000 ứng dụng và 100.000 ứng dụng đã được đệ trình. Mã nguồn Android gồm khoảng 12 triệu dòng mã (trong đó có 3 triệu dòng XML và 2,1 triệu dòng Java).

Chương phân tích chi tiết:

  • Các phiên bản Android từ Android 1.0 (trên thiết bị HTC Dream/G1), Android 1.1, qua Ice Cream Sandwich 4.0 đến Jelly Bean 4.1/4.2.
  • Chu trình sống của Activity và cơ chế quản lý bộ nhớ của máy ảo Dalvik (thực thi mã bytecode dạng .dex tối ưu hóa cho phần cứng hạn chế, khác biệt với Java ME).
  • Đặc điểm của các ngôn ngữ Java, PHP, định dạng XML và chuẩn JSON.
  • Tổng quan chức năng các API của Google: Google Maps, Google Places, Google Directions, Google Geocoding và môi trường kiểm thử Android Emulator.

Chương 3. Phân tích thiết kế hệ thống

Chương 3 tập trung mô hình hóa hệ thống thông tin theo phương pháp hướng đối tượng. Tác giả xác lập các yêu cầu chức năng (mở/đóng ứng dụng, tìm kiếm, cập nhật địa điểm, cập nhật danh mục, hiển thị bản đồ) và yêu cầu phi chức năng (giao diện đơn giản, vận hành ổn định, độ sai số nhỏ). Hệ thống yêu cầu thiết bị chạy Android phiên bản từ 2.2 trở lên.

Toàn bộ hệ thống được phân tích qua 32 sơ đồ thiết kế chi tiết: biểu đồ trường hợp sử dụng (Use Case) tổng quát và phân rã; cấu trúc phân tầng lớp biên, lớp điều khiển, lớp thực thể; biểu đồ trình tự và biểu đồ cộng tác cho 7 luồng xử lý; biểu đồ trạng thái và hoạt động tương ứng; biểu đồ lớp chi tiết; cùng biểu đồ thành phần và biểu đồ triển khai vật lý xác định rõ mối liên kết mạng TCP/IP giữa Android Client, máy chủ Application Web Services (Linux/PHP/MySQL) và máy chủ Google Web Services.

Chương 4. Xây dựng ứng dụng

Chương 4 mô tả toàn bộ quá trình hiện thực hóa phần mềm thành mã nguồn và giao diện người dùng. Các nội dung triển khai kỹ thuật gồm:

  • Phương thức trao đổi HTTP giữa client và WebService thông qua đối tượng DefaultHttpClient, cấu hình tham số bằng BasicNameValuePair và gán vào yêu cầu HttpPost.
  • Cơ chế truyền dữ liệu giữa các Activity bằng Intent mang theo Bundle chứa các cặp giá trị tên - thuộc tính (name, value).
  • Kỹ thuật truy vấn máy chủ Google Places API, trích xuất cấu trúc dữ liệu JSON đa cấp bằng JSONArray và JSONObject.
  • Cấu hình tệp AndroidManifest.xml để cấp quyền truy cập tài nguyên GPS và Internet; kỹ thuật nhúng thẻ MapView với apiKey trong tệp giao diện XML layout.
  • Kế thừa lớp ItemizedOverlay để hiển thị biểu tượng đánh dấu vị trí trên lớp bản đồ số.
  • Tách lọc thông tin lộ trình từ tệp JSON trả về bởi Google Directions API để kẻ tuyến đường đi.
  • Minh chứng kết quả thực nghiệm với 9 màn hình giao diện: Giao diện chính, danh sách địa điểm và thanh tìm kiếm, kết quả hiển thị trên bản đồ, phân loại vị trí người dùng với nhà hàng/thắng cảnh, phân loại với quán cà phê/khách sạn, giao diện vẽ đường lộ trình kèm hiển thị địa chỉ chi tiết, cùng quy trình đăng nhập và chia sẻ thông tin vị trí lên mạng xã hội Facebook.

Kết quả và đóng góp

Đồ án đã hiện thực hóa thành công một sản phẩm ứng dụng di động hoàn chỉnh phục vụ tra cứu du lịch tại Hội An trên nền tảng Android. Các kết quả cụ thể bao gồm:

  • Xây dựng giải pháp tra cứu đa kênh: Ứng dụng cung cấp hai cơ chế tìm kiếm dữ liệu địa điểm, kết hợp giữa cơ sở dữ liệu cục bộ và dữ liệu mở toàn cầu:
Tiêu chí so sánh Tìm kiếm qua WebService Tìm kiếm qua Google Places API
Nguồn dữ liệu Cơ sở dữ liệu MySQL nội bộ của ứng dụng Cơ sở dữ liệu đám mây của Google
Cơ chế truy vấn Gửi biến $_REQUEST qua HTTP POST tới máy chủ PHP Gửi chuỗi URL truy vấn kèm API Key tới máy chủ Google
Định dạng phản hồi Chuỗi JSON do mã nguồn PHP tự đóng gói Tệp JSON hoặc XML chuẩn hóa từ Google API
Mục đích sử dụng Quản lý dữ liệu địa phương do quản trị viên thiết lập Tra cứu mở rộng các địa điểm công cộng, kinh doanh toàn cầu
  • Tích hợp định vị và dẫn đường tương tác: Ứng dụng kết nối trực tiếp với phần cứng GPS để xác định vị trí thực của người dùng, thể hiện trực quan khoảng cách tới các danh thắng, khách sạn, nhà hàng, quán cà phê tại Hội An, đồng thời tự động tính toán và kẻ lộ trình di chuyển thông qua Google Directions API.
  • Đóng góp thực tiễn: Tác giả đã chứng minh tính khả thi của việc ứng dụng các công nghệ di động mã nguồn mở kết hợp điện toán đám mây để thay thế bản đồ du lịch truyền thống, cung cấp giải pháp tra cứu tiện lợi cho du khách khi đến tham quan Hội An.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế được tác giả nêu trong văn bản: Do giới hạn về mặt thời gian thực hiện, đồ án chưa hoàn thiện được toàn bộ các tính năng như dự định ban đầu đã đề ra. Về phạm vi không gian, cơ sở dữ liệu mới chỉ dừng lại ở quy mô nhỏ thuộc địa bàn thành phố Hội An.
  • Hạn chế về mặt công nghệ: Ứng dụng sử dụng nền tảng Google Maps API đời đầu (hỗ trợ MapActivity và MapView phiên bản 1). Tại thời điểm thực hiện, Google đã ngừng cấp mới dịch vụ cho Map API phiên bản này và chuyển dịch sang hỗ trợ API V2, V3 (chỉ vận hành trên thiết bị Android thật, đòi hỏi cấu hình bổ sung).
  • Hướng nghiên cứu tiếp: Tiếp tục hoàn thiện các khối chức năng còn dang dở, cập nhật mã nguồn tương thích với các phiên bản Google Maps API mới hơn (V2/V3), đồng thời mở rộng phạm vi thu thập dữ liệu địa điểm ra các trung tâm du lịch lân cận.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên chuyên ngành Khoa học Máy tính, Công nghệ Thông tin hoặc Kỹ thuật Phần mềm đang tìm hiểu về phát triển ứng dụng di động trên hệ điều hành Android.

Các nội dung có giá trị học thuật và kỹ thuật thực tiễn cao gồm:

  • Tài liệu phân tích thiết kế hệ thống hoàn chỉnh ở Chương 3, cung cấp hệ thống 32 biểu đồ UML chuẩn hóa từ Use Case, Sequence, Collaboration đến Component và Deployment Diagram.
  • Mô hình kết nối đa tầng giữa thiết bị di động Android với WebService viết bằng PHP/MySQL thông qua giao thức HTTP và định dạng dữ liệu JSON.
  • Quy trình xử lý các lớp giao diện bản đồ chuyên biệt (MapActivity, MapView, ItemizedOverlay) và kỹ thuật bóc tách dữ liệu định tuyến từ Google Directions API.

Câu hỏi thường gặp

1. Ứng dụng trao đổi dữ liệu giữa Android client và máy chủ cục bộ bằng cơ chế nào?
Phía ứng dụng Android sử dụng lớp DefaultHttpClient và HttpPost để gửi các biến truy vấn dạng $_REQUEST (thông qua đối tượng BasicNameValuePair). Máy chủ WebService viết bằng PHP tiếp nhận yêu cầu, truy vấn dữ liệu từ MySQL và xuất kết quả phản hồi về client dưới định dạng chuỗi JSON.

2. Dữ liệu tọa độ được truyền giữa các màn hình (Activity) trong ứng dụng ra sao?
Ứng dụng sử dụng cơ chế truyền thông điệp thông qua đối tượng Intent kết hợp với đối tượng Bundle. Tọa độ (_x, _y) được đóng gói vào Bundle bằng phương thức putExtras() tại màn hình nguồn (DanhSach.class), sau đó màn hình nhận (MapHeThong) giải nén dữ liệu thông qua phương thức getIntent().getExtras().

3. Làm thế nào ứng dụng đánh dấu được vị trí các điểm du lịch lên bản đồ?
Tác giả xây dựng một lớp đối tượng kế thừa từ lớp ItemizedOverlay trong thư viện Android Maps. Khi xác định được tọa độ địa lý của địa điểm, phương thức setLocation() sẽ đưa tọa độ vào đối tượng ItemizedOverlay, định dạng biểu tượng đồ họa (Marker) và vẽ điểm đánh dấu lên giao diện MapView.

4. Chức năng vẽ đường đi của ứng dụng hoạt động dựa trên dịch vụ nào?
Chức năng này sử dụng Google Directions API. Ứng dụng gửi yêu cầu HTTP tới máy chủ Google với tham số tọa độ điểm xuất phát (origin), điểm đến (destination) và phương thức di chuyển (mode=driving). Tệp JSON kết quả trả về sẽ được phân tích để lấy thông tin các điểm nút và vẽ tuyến đường tương ứng lên lớp đè (Overlay) của bản đồ.

5. Tại sao đồ án phân tích sự khác biệt giữa máy ảo Dalvik và máy ảo Java thông thường?
Tác giả làm rõ rằng Android không sử dụng máy ảo Java chuẩn (JVM) do các thiết bị di động có cấu hình phần cứng hạn chế (RAM nhỏ, CPU chậm, không có vùng tráo đổi dữ liệu bù đắp bộ nhớ). Máy ảo Dalvik được thiết kế tối ưu riêng cho Android, thực thi các tệp định dạng .dex có kích thước nhỏ gọn hơn nhiều so với tệp .class của Java.

Kết luận

Khóa luận của tác giả Võ Minh Trí đã hoàn thành việc nghiên cứu kiến trúc hệ điều hành Android, kỹ thuật lập trình Java di động và các giao diện lập trình ứng dụng định vị không gian của Google. Hệ thống được phân tích thiết kế bài bản thông qua bộ mô hình UML chi tiết và được hiện thực hóa thành ứng dụng tra cứu, dẫn đường du lịch hoạt động trên thực tế tại thành phố Hội An. Mặc dù còn hạn chế về quy mô dữ liệu và chưa hoàn thiện toàn bộ các tính năng dự kiến, đồ án đã giải quyết thỏa đáng bài toán tích hợp giữa dịch vụ web nội bộ và các API đám mây trên thiết bị cầm tay.