Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh thị trường thiết bị số cầm tay như điện thoại thông minh và máy tính bảng phát triển nhanh với giá thành ngày càng giảm, người dùng có xu hướng gia tăng việc sử dụng thiết bị di động để kết nối Internet, nghe nhạc số và giải trí. Sự tích hợp của các phần cứng như hệ thống định vị toàn cầu (GPS), cảm ứng và gia tốc kế đã biến thiết bị di động thành nền tảng phục vụ các nhu cầu sinh hoạt hàng ngày. Khác với các hệ điều hành độc quyền vốn hạn chế ứng dụng từ bên thứ ba, hệ điều hành mã nguồn mở Android của Google tạo điều kiện cho các lập trình viên tự do xây dựng phần mềm khai thác tối đa năng lực phần cứng.
Về mặt xã hội, thẻ rút tiền tự động (ATM) đã trở thành công cụ thanh toán và lưu trữ tiền tệ phổ biến, được sử dụng rộng rãi để chi trả tiền lương cho nhân viên hoặc tiếp nhận sinh hoạt phí của sinh viên học xa nhà. Tuy nhiên, người dùng thường gặp trở ngại khi cần định vị điểm đặt máy ATM phù hợp giữa hàng ngàn địa điểm tại các đô thị hoặc các khu vực địa lý chưa quen thuộc. Nhằm giải quyết bài toán thực tế này, tác giả Trần Ánh Bang (lớp CCLT04C, Khoa Khoa Học Máy Tính – Trường Cao Đẳng Công Nghệ Thông Tin Hữu Nghị Việt – Hàn) đã thực hiện đồ án tốt nghiệp với đề tài "Nghiên cứu hệ điều hành Android và xây dựng ứng dụng tìm kiếm máy rút tiền ATM".
Mục tiêu nghiên cứu của đồ án được xác định theo 4 nội dung cụ thể:
- Tìm hiểu các công nghệ lập trình cần thiết trên nền Android để hoàn thành ứng dụng có khả năng tìm kiếm nhanh và chính xác vị trí máy ATM.
- Nắm vững nguyên lý hoạt động của hệ điều hành Android, các thành phần của hệ thống cũng như cấu trúc một ứng dụng thực thi trên nền tảng này.
- Tìm hiểu và áp dụng các công nghệ lập trình trên nền Android như ngôn ngữ Java, cơ chế tương tác với tài nguyên hệ thống (GPS, Internet, màn hình cảm ứng TouchScreen), đồng thời tích hợp các dịch vụ trực tuyến của Google (Google Maps, Google Places API...).
- Tìm hiểu kỹ thuật xây dựng cơ sở dữ liệu bằng MySQL và xây dựng web service để quản lý, cập nhật thông tin phục vụ cho ứng dụng.
Nhiệm vụ nghiên cứu tập trung vào việc đọc các tài liệu kỹ thuật liên quan đến bộ thư viện lập trình Android và tìm hiểu các dịch vụ trực tuyến phục vụ bài toán bản đồ.
Đối tượng nghiên cứu bao gồm:
- Các ngôn ngữ lập trình: Java, XML, PHP.
- Hệ quản trị cơ sở dữ liệu: MySQL.
- Công cụ phát triển: Android SDK và môi trường Eclipse.
- Hệ điều hành và tài nguyên hệ thống Android.
- Các dịch vụ hỗ trợ bản đồ của Google: Google Maps, Google Places API...
Phạm vi hệ thống giới hạn ở chức năng tìm kiếm địa chỉ các trạm đặt máy ATM theo danh mục tỉnh, thành phố tại Việt Nam. Về mặt kiến trúc, hệ thống gồm ứng dụng di động chạy trên hệ điều hành Android kết hợp với Web Service viết bằng ngôn ngữ PHP truy xuất cơ sở dữ liệu MySQL. Ý nghĩa thực tiễn của đề tài là cung cấp một công cụ hỗ trợ người dùng định vị trạm ATM trên phạm vi toàn quốc với giao diện đơn giản, cho phép người có ít kiến thức kỹ thuật vẫn có thể thao tác thuận lợi.
Cơ sở lý thuyết và phương pháp
Khóa luận thiết lập nền tảng lý thuyết thông qua việc khảo cứu kiến trúc hệ điều hành Android, các chuẩn trao đổi dữ liệu và dịch vụ bản đồ số:
- Hệ điều hành Android: Khảo cứu nguồn gốc từ công ty Android, được Google mua lại vào năm 2005 và công bố ngày 05/11/2007 cùng với Liên minh thiết bị cầm tay mã nguồn mở (OHA) gồm 78 công ty. Hệ thống phát hành theo giấy phép mã nguồn mở Apache, quy mô khoảng 12 triệu dòng mã nguồn (bao gồm 3 triệu dòng XML, 2,1 triệu dòng Java). Kiến trúc Android được phân tích theo 4 tầng chức năng:
- Applications: Lớp ứng dụng tích hợp sẵn (Danh bạ, Trình duyệt, Máy ảnh, Điện thoại) viết bằng Java.
- Application Framework: Khung ứng dụng hỗ trợ lập trình viên xây dựng phần mềm và tái sử dụng thành phần.
- Libraries: Bộ thư viện C/C++ (System C library, Media Libraries, Surface Manager, LibWebCore, SQLite...).
- Android Runtime: Bao gồm hệ thống thư viện lõi Java và máy ảo Dalvik (Dalvik VM) dựa trên kiến trúc thanh ghi (register-based), tối ưu hóa việc thực thi tệp tin
.dex trong môi trường giới hạn bộ nhớ.
- Linux Kernel: Nhân Linux phiên bản 2.6 phụ trách các dịch vụ cốt lõi (bảo mật, quản lý bộ nhớ, quản lý tiến trình, ngăn xếp mạng, trình điều khiển phần cứng).
- Thành phần cấu trúc ứng dụng Android: Văn bản khảo cứu 7 thành phần cơ bản gồm Activity, Service, Content Provider, Intent, Broadcast Receiver, Widget và Notification; trong đó đi sâu vào vòng đời Activity qua 4 trạng thái (Active/Running, Pause, Stop, Killed) cùng chuỗi phương thức callback:
onCreate(), onRestart(), onStart(), onResume(), onPause(), onStop(), onDestroy().
- Ngôn ngữ và định dạng dữ liệu:
- Java: Lập trình hướng đối tượng, cơ chế biên dịch sang bytecode chạy trên máy ảo, tính độc lập nền tảng, cơ chế quản lý bộ nhớ tự động và hỗ trợ đa luồng.
- XML: Ngôn ngữ đánh dấu mở rộng do W3C phát triển dựa trên chuẩn SGML, phục vụ định nghĩa giao diện người dùng và tệp cấu hình hệ thống.
- JSON: Định dạng trao đổi dữ liệu dựa trên tiêu chuẩn ECMA-262 phiên bản 3 (tháng 12/1999), cấu trúc cặp tên-giá trị và danh sách mảng giá trị, tốc độ xử lý nhanh và tối ưu cho thiết bị di động so với XML.
- PHP: Lịch sử phát triển từ PHP/FI (1995) đến các phiên bản PHP 3, PHP 4, PHP 5 và thử nghiệm PHP 6; đóng vai trò xử lý yêu cầu HTTP và tương tác cơ sở dữ liệu phía máy chủ.
- Dịch vụ Google: Khảo cứu 4 dịch vụ bản đồ gồm Google Maps, Google Places API (yêu cầu đăng ký API Key), Google Directions API (tính khoảng cách, tọa độ, thời gian di chuyển) và Google Geocoding API (xác định các điểm trên tuyến đường).
Phương pháp nghiên cứu thực tế được tác giả áp dụng là phương pháp phân tích và thiết kế hệ thống hướng đối tượng (OOAD) sử dụng ngôn ngữ mô hình hóa thống nhất (UML), kết hợp với kỹ thuật thực nghiệm phần mềm:
- Xây dựng mô hình trường hợp sử dụng (Use Case) để xác định yêu cầu chức năng.
- Mô hình hóa khái niệm theo mô hình ba lớp (Lớp biên, Lớp điều khiển, Lớp thực thể).
- Mô hình hóa tương tác và hành vi hệ thống thông qua biểu đồ trình tự (Sequence Diagram), biểu đồ cộng tác (Collaboration Diagram), biểu đồ trạng thái (State Diagram) và biểu đồ hoạt động (Activity Diagram).
- Mô hình hóa kiến trúc vật lý qua biểu đồ thành phần (Component Diagram) và biểu đồ triển khai (Deployment Diagram).
- Nguồn dữ liệu thực nghiệm: Dữ liệu về ngân hàng, địa giới hành chính (tỉnh/thành, quận/huyện), tọa độ và thông tin trạm ATM được tổ chức và quản trị trong hệ cơ sở dữ liệu MySQL trên máy chủ Web Server.
Thiết kế và triển khai
Hệ thống được thiết kế theo mô hình tương tác Client-Server, tích hợp dịch vụ bên thứ ba. Bảng dưới đây tổng hợp các yêu cầu kỹ thuật được tác giả xác định trong đồ án:
| Hạng mục yêu cầu |
Nội dung đặc tả kỹ thuật |
| Yêu cầu chức năng |
Tìm kiếm ATM theo tiêu chí; xem ATM trên Google Maps; lưu và xem danh sách yêu thích; đăng ký/đăng nhập người dùng; quản lý thông tin tài khoản; gửi và xem góp ý; thêm, sửa, xóa danh mục ngân hàng, tỉnh thành, quận huyện, địa điểm ATM trên Web Service. |
| Yêu cầu phi chức năng |
Kết quả tìm kiếm chính xác với sai số nhỏ; hệ thống hoạt động ổn định, bảo mật cao; ứng dụng gọn nhẹ, tiêu thụ ít tài nguyên thiết bị; giao diện thân thiện, dễ sử dụng. |
| Yêu cầu môi trường |
Thiết bị chạy hệ điều hành Android phiên bản từ 2.0 trở lên; hỗ trợ kết nối Internet và có phần cứng GPS để xác định vị trí lân cận và vẽ đường đi. |
Về mặt phân tích hướng đối tượng, hệ thống xác định 2 tác nhân chính gồm Người sử dụng (thao tác trên ứng dụng di động) và Người quản lý (thao tác trên giao diện Web Service). Dữ liệu được mô hình hóa thành 8 lớp thực thể chính: Tinhthanh, Quanhuyen, Nganhang, Diadiem, User, Lienhe, Yeuthich, và Lienhediadiem. Mô hình triển khai vật lý phân tách thành 3 nút xử lý:
- Thiết bị Android: Thực thi ứng dụng di động client, tiếp nhận tương tác người dùng, truy xuất GPS và gửi yêu cầu mạng.
- Web Server: Máy chủ lưu trữ mã nguồn Web Service (PHP) và cơ sở dữ liệu MySQL, tiếp nhận dữ liệu truy vấn từ client và xuất dữ liệu.
- Google Web: Máy chủ cung cấp dịch vụ bản đồ MapView và các API vị trí của Google.
Quá trình triển khai kỹ thuật được hiện thực hóa qua các thành phần mã nguồn cụ thể:
Cơ chế giao tiếp Web Service và cơ sở dữ liệu: Ứng dụng Android đóng gói dữ liệu truy vấn bằng danh sách NameValuePair và gửi yêu cầu lên Web Service bằng phương thức HTTP POST. Tại máy chủ, mã PHP kiểm tra tham số, xử lý chuỗi bằng hàm addslashes(), mã hóa mật khẩu bằng hàm md5(), thực hiện truy vấn MySQL và trả dữ liệu về định dạng JSON bằng hàm json_encode():
if(isset($_POST['getuser']) && $_POST['getuser'] == 'login'){
$user = addslashes($_POST['user']);
$pass = md5($_POST['pass']);
$sql = mysql_query("SELECT * FROM tb_user WHERE user='"."'");
if(mysql_num_rows($sql) == 1){
$info = mysql_fetch_array($sql);
if($info['status'] == 'false'){
$trave['success'] = 0;
$trave['msg'] = 'Tài khoản bị khóa. Liện hệ Y!M: abit04c';
echo json_encode($trave);
}else{
$trave['success'] = 1;
$trave['userid'] = $info['userid'];
$trave['pass'] = $info['pass'];
$trave['dreg'] = date("d/m/Y", $info['ngaydangky']);
$trave['user'] = $info['user'];
$trave['stt'] = $info['status'];
$trave['fullname'] = $info['ten'];
$trave['quyen'] = $info['quyen'];
echo json_encode($trave);
}
}else{
$trave['success'] = 0;
$trave['msg'] = 'Thông tin đăng nhập không chính xác!';
echo json_encode($trave);
}
}
Phía Android tiếp nhận JSON, giải mã dữ liệu trạng thái và khởi tạo phiên đăng nhập:
public JSONObject login(String user, String pass) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pass", pass));
JSONObject json = jsonParser.getJSONFromUrl(getuser, params, "POST");
return json;
}
Cơ chế truyền dữ liệu giữa các Activity: Sử dụng cơ chế thông điệp Intent kết hợp với đối tượng Bundle chứa dữ liệu dạng cặp khóa - giá trị thông qua các phương thức putXXX() và getXXX().
Tích hợp bản đồ và định vị: Ứng dụng kế thừa lớp MapActivity và khai báo khóa bản đồ trong tệp bố cục XML:
android:apiKey="00WmoYsET3okvAu1sHp2AgUQnta7VpXxs_oQyag"
Để sử dụng phần cứng định vị và mạng, ứng dụng khai báo các quyền tương ứng trong tệp AndroidManifest.xml. Việc đánh dấu tọa độ địa điểm ATM trên bản đồ được thực hiện bằng cách kế thừa lớp ItemizedOverlay, truyền tọa độ kinh độ - vĩ độ qua phương thức setLocation() và gán vào MapView:
myItemizedOverlay = new ItemizedOverlay(marker, this);
mapView.addItem(location);
Phân tích cú pháp dữ liệu JSON: Dữ liệu phản hồi từ Web Service được trích xuất bằng cách khởi tạo JSONArray và truy xuất từng phần tử bằng phương thức getJSONObject(), sau đó lấy các trường thông tin cụ thể bằng phương thức getString():
JSONArray place = json_place.getJSONObject(i);
String tendiadiem = c.getString(KEY_A_PLACE);
Về kiểm thử thực tế, đồ án trình bày các màn hình giao diện kết quả gồm: giao diện Web Service (trang chính, danh sách ATM, thêm tài khoản, xóa tài khoản); giao diện ứng dụng di động (màn hình chính, form tìm kiếm, kết quả tìm kiếm, đánh dấu vị trí và tính toán vẽ đường, gửi góp ý, thông tin tài khoản, đăng nhập/đăng ký, xem danh sách yêu thích và hiển thị ATM trên bản đồ).
Nội dung chính theo từng chương
Chương 1. CHƯƠNG MỞ ĐẦU
Chương này nêu bật thực trạng phát triển của thị trường phần mềm trên thiết bị di động thông minh và sự ra đời của hệ điều hành mã nguồn mở Android. Tác giả phát biểu bài toán về nhu cầu tìm kiếm điểm rút tiền ATM trong đời sống thường nhật, từ đó xác lập 4 mục tiêu nghiên cứu, nhiệm vụ đọc tài liệu, xác định các đối tượng nghiên cứu (Java, XML, PHP, MySQL, Eclipse SDK, tài nguyên Android, dịch vụ Google), phạm vi hệ thống tại các tỉnh thành ở Việt Nam và ý nghĩa thực tiễn của phần mềm.
Chương 2. Giới thiệu hệ điều hành Android
Chương 2 trình bày chi tiết về cơ sở lý thuyết của hệ điều hành Android, bao gồm:
- Khái niệm, lịch sử phát triển gắn liền với thương vụ mua lại của Google năm 2005 và liên minh OHA năm 2007.
- Đặc điểm nổi bật của nền tảng: khung ứng dụng tái sử dụng, máy ảo Dalvik, trình duyệt tích hợp WebKit, đồ họa 2D/3D theo chuẩn OpenGL ES 1.0, cơ sở dữ liệu SQLite, hỗ trợ đa phương tiện, các kết nối mạng và cảm biến.
- Kiến trúc tổng thể 4 tầng của Android (Ứng dụng, Khung ứng dụng, Thư viện C/C++, Android Runtime và Nhân Linux 2.6).
- 7 thành phần cốt lõi của một ứng dụng di động, phân tích chuyên sâu vòng đời và 4 trạng thái của Activity.
- Công cụ phát triển Android Development Tools (ADT) trên nền Eclipse và phần mềm giả lập Android Emulator dựa trên QEMU của Fabrice Bellard.
- Tổng quan về các công nghệ lập trình liên quan gồm ngôn ngữ Java (cơ chế biên dịch bytecode, hướng đối tượng, an toàn bộ nhớ), XML (cấu trúc đánh dấu), JSON (chuẩn ECMA-262, định dạng cặp name-value và mảng), ngôn ngữ PHP (lịch sử từ PHP/FI đến PHP 5/6) và các dịch vụ bản đồ (Google Maps, Google Places API, Google Directions API, Google Geocoding API).
Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Nội dung chương 3 tập trung đặc tả quy trình phân tích và thiết kế hệ thống theo chuẩn UML:
- Xác định chi tiết các yêu cầu chức năng, yêu cầu phi chức năng và yêu cầu hệ điều hành/phần cứng.
- Mô hình hóa yêu cầu: Xác định 2 tác nhân (Người sử dụng, Người quản lý) cùng danh sách 10 trường hợp sử dụng cơ bản; xây dựng biểu đồ trường hợp sử dụng tổng quát và các biểu đồ ca sử dụng cập nhật ngân hàng, tỉnh thành, quận huyện, địa điểm, người dùng.
- Mô hình hóa khái niệm: Định nghĩa 8 lớp thực thể và cấu trúc các lớp theo mẫu rập khuôn (lớp biên, lớp điều khiển, lớp thực thể).
- Mô hình hóa tương tác đối tượng: Thiết lập 10 biểu đồ trình tự (khởi động, đóng hệ thống, tìm kiếm, đăng ký, đăng nhập, góp ý, xem ATM trên bản đồ, thêm/sửa/xóa địa điểm) tương ứng với 10 biểu đồ cộng tác.
- Mô hình hóa hành vi: Xây dựng 4 biểu đồ trạng thái (mở hệ thống, tìm kiếm, gửi góp ý, xem danh sách yêu thích) và 5 biểu đồ hoạt động (mở/đóng hệ thống, cập nhật ngân hàng, tìm kiếm, gửi góp ý).
- Thiết kế chi tiết biểu đồ lớp và thiết kế kiến trúc vật lý gồm biểu đồ thành phần cùng biểu đồ triển khai hệ thống 3 nút.
Chương 4. XÂY DỰNG ỨNG DỤNG
Chương 4 mô tả kết quả lập trình và demo hệ thống:
- Xây dựng giao diện và các chức năng xử lý phía Web Service bằng ngôn ngữ PHP kết nối cơ sở dữ liệu MySQL (giao diện danh sách địa điểm, quản trị thêm/xóa tài khoản, tiếp nhận tham số HTTP POST và xuất JSON).
- Cơ chế trao đổi dữ liệu giữa các Activity trong ứng dụng Android bằng Intent và Bundle.
- Kỹ thuật hiển thị bản đồ trên MapView sử dụng MapAPI Key, cấu hình quyền phần cứng GPS và Internet trong tệp tin bản kê hệ thống.
- Kỹ thuật đánh dấu điểm ATM lên bản đồ thông qua lớp
ItemizedOverlay và hàm setLocation().
- Phương thức đọc và phân tích mảng dữ liệu JSON bằng các lớp
JSONArray và JSONObject.
- Trình bày hệ thống giao diện thực tế của ứng dụng gồm 8 màn hình chức năng.
Kết quả và đóng góp
Về kết quả đạt được, đồ án đã hoàn thành các nội dung chính sau:
- Xây dựng thành công ứng dụng client chạy trên hệ điều hành di động Android giải quyết được bài toán tìm kiếm vị trí máy rút tiền ATM theo danh mục tỉnh/thành phố và hiển thị địa điểm trên nền bản đồ Google Maps.
- Phát triển hệ thống Web Service bằng ngôn ngữ PHP và cơ sở dữ liệu MySQL cho phép quản lý thông tin danh mục (ngân hàng, địa bàn, địa điểm ATM, người dùng) và giao tiếp hai chiều với ứng dụng di động qua chuẩn dữ liệu JSON.
- Triển khai được các tính năng phụ trợ trên ứng dụng gồm: đăng ký, đăng nhập tài khoản, quản lý danh sách địa điểm yêu thích, tiếp nhận ý kiến đóng góp của người dùng và hỗ trợ chia sẻ thông tin địa điểm lên mạng xã hội Facebook.
- Xây dựng hệ thống giao diện người dùng trên thiết bị di động tương đối trực quan, thao tác đơn giản, phù hợp với người dùng đại chúng.
Về giải pháp và đóng góp, tác giả đã đề xuất mô hình tích hợp ứng dụng di động Android với dịch vụ máy chủ Web Service độc lập kết hợp các API bản đồ trực tuyến của Google (Google Maps, Google Places API). Mô hình này giúp giảm tải việc xử lý và lưu trữ dữ liệu trực tiếp trên thiết bị di động, đảm bảo dữ liệu các trạm ATM có thể được cập nhật tập trung từ phía quản trị hệ thống.
Hạn chế và hướng nghiên cứu tiếp
Trong phần tự đánh giá, tác giả nêu rõ các hạn chế kỹ thuật do thời gian thực hiện đề tài ngắn:
- Cơ sở dữ liệu ATM thu thập được chưa hoàn toàn phản ánh chính xác dữ liệu thực tế tại tất cả các khu vực.
- Thiết bị phần cứng phục vụ thử nghiệm chưa đáp ứng đầy đủ yêu cầu kiểm thử hiệu năng.
- Chức năng vẽ đường đi từ vị trí người dùng đến trạm ATM chưa hoàn thiện trọn vẹn.
- Ứng dụng chưa hoàn thành hết toàn bộ các tính năng theo dự định ban đầu đặt ra.
Hướng nghiên cứu và phát triển tiếp theo được tác giả đề xuất gồm:
- Tập trung khắc phục triệt để các hạn chế còn tồn tại, đặc biệt là hoàn thiện thuật toán và chức năng vẽ đường đi trên bản đồ.
- Cập nhật, chuẩn hóa và mở rộng cơ sở dữ liệu điểm đặt máy rút tiền ATM đảm bảo độ chính xác cao trên phạm vi toàn quốc.
- Mở rộng phạm vi tìm kiếm của ứng dụng để đáp ứng tốt hơn nhu cầu sử dụng thực tế của người dùng.
Giá trị tham khảo
Đồ án là tài liệu tham khảo phù hợp cho sinh viên chuyên ngành Công nghệ thông tin, Khoa học máy tính hoặc Kỹ thuật phần mềm đang tìm hiểu về lập trình ứng dụng di động trong giai đoạn đầu tiếp cận nền tảng Android.
Các nội dung có giá trị tham khảo nổi bật trong văn bản gồm:
- Quy trình phân tích và thiết kế hệ thống hướng đối tượng theo chuẩn UML được thể hiện đầy đủ, chi tiết từ biểu đồ ca sử dụng, biểu đồ lớp, biểu đồ tương tác (trình tự, cộng tác), biểu đồ hành vi (trạng thái, hoạt động) đến biểu đồ kiến trúc vật lý.
- Phương thức thiết lập giao tiếp mạng giữa ứng dụng Android và hệ thống máy chủ phụ trợ (Web Service PHP) thông qua phương thức HTTP POST và định dạng trao đổi dữ liệu JSON.
- Kỹ thuật tích hợp bản đồ số Google Maps (MapView), quản lý quyền hệ thống (GPS, mạng Internet) và kỹ thuật kế thừa lớp
ItemizedOverlay để đánh dấu tọa độ vị trí trên giao diện di động.
Câu hỏi thường gặp
1. Khóa luận sử dụng các công nghệ và ngôn ngữ lập trình cụ thể nào để xây dựng hệ thống?
Phía ứng dụng di động được xây dựng bằng ngôn ngữ Java và XML trên môi trường Eclipse tích hợp bộ công cụ Android SDK (ADT). Phía máy chủ, hệ thống sử dụng ngôn ngữ PHP để viết Web Service và hệ quản trị cơ sở dữ liệu MySQL. Để hiển thị bản đồ và định vị, tác giả sử dụng các dịch vụ của Google gồm Google Maps, Google Places API, Google Directions API và Google Geocoding API.
2. Kiến trúc trao đổi dữ liệu giữa ứng dụng Android và máy chủ Web Service hoạt động như thế nào?
Ứng dụng Android đóng gói các tham số tìm kiếm hoặc xác thực vào đối tượng NameValuePair rồi gửi yêu cầu lên máy chủ qua phương thức HTTP POST. Mã nguồn PHP trên máy chủ tiếp nhận tham số từ mảng siêu toàn cục $_POST, thực hiện câu lệnh truy vấn dữ liệu trong MySQL và đóng gói dữ liệu phản hồi dưới định dạng JSON bằng hàm json_encode(). Phía Android tiếp nhận chuỗi JSON này, sử dụng các lớp JSONArray và JSONObject để bóc tách thông tin và hiển thị lên giao diện người dùng.
3. Khóa luận mô hình hóa cơ sở dữ liệu và cấu trúc hệ thống gồm những lớp thực thể nào?
Tại mức phân tích thiết kế, hệ thống xác định 8 lớp thực thể chính: Tinhthanh (lưu trữ thông tin tỉnh/thành phố), Quanhuyen (lưu trữ thông tin quận/huyện), Nganhang (lưu trữ thông tin ngân hàng), Diadiem (lưu thông tin vị trí các cây ATM), User (lưu trữ tài khoản người dùng), Lienhe (lưu thông tin liên hệ), Yeuthich (lưu danh mục ATM yêu thích của người dùng), và Lienhediadiem (lưu danh sách các địa điểm do người dùng gửi góp ý).
4. Ứng dụng tích hợp dịch vụ bản đồ Google Maps và đánh dấu vị trí trạm ATM bằng kỹ thuật gì?
Ứng dụng kế thừa lớp MapActivity và đưa thẻ MapView vào giao diện tệp bố cục XML kết hợp với khóa cấp phép android:apiKey="00WmoYsET3okvAu1sHp2AgUQnta7VpXxs_oQyag". Để tương tác với phần cứng GPS và mạng, ứng dụng cấu hình các thẻ cấp quyền trong tệp AndroidManifest.xml. Quá trình đánh dấu vị trí được thực hiện bằng cách kế thừa lớp ItemizedOverlay, truyền tọa độ kinh độ và vĩ độ vào phương thức setLocation() rồi vẽ điểm đánh dấu lên bản đồ thông qua phương thức mapView.addItem().
5. Những hạn chế kỹ thuật nào được tác giả trực tiếp thừa nhận trong đồ án?
Tác giả thừa nhận đồ án còn một số hạn chế do thời gian nghiên cứu hạn hẹp: cơ sở dữ liệu các trạm ATM chưa hoàn toàn chính xác so với thực tế, thiết bị phần cứng phục vụ thử nghiệm chưa đáp ứng tốt, chức năng vẽ đường đi trên bản đồ chưa được hoàn thiện và một số chức năng dự định ban đầu chưa thể hoàn thành trọn vẹn.
Kết luận
Đồ án tốt nghiệp của tác giả Trần Ánh Bang đã giải quyết được yêu cầu cơ bản về việc tìm kiếm vị trí các máy rút tiền tự động (ATM) trên thiết bị di động chạy hệ điều hành Android thông qua việc tích hợp bản đồ số Google Maps và Web Service quản lý dữ liệu nền tảng PHP/MySQL. Công trình thể hiện quy trình phân tích và thiết kế phần mềm hướng đối tượng mạch lạc, bao quát đầy đủ các dạng biểu đồ UML và cung cấp các giải pháp lập trình tương tác mạng thực tế. Mặc dù dữ liệu thực tế và chức năng vẽ đường đi còn tồn tại những hạn chế nhất định, đồ án đã hoàn thành mục tiêu xây dựng một ứng dụng di động có khả năng ứng dụng thực tế và cung cấp tài liệu kỹ thuật có giá trị tham khảo cho việc phát triển phần mềm di động dựa trên vị trí địa lý.