Đồ án Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android
MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
DANH MỤC CÁC TỪ VIẾT TẮT iv
DANH MỤC CÁC HÌNH VẼ v
CHƯƠNG 1 – CHƯƠNG MỞ ĐẦU 1
1.1. Lý do chọn đề tài 1
1.2. Mục tiêu và nhiệm vụ 1
1.3. Đối tượng nghiên cứu và phạm vi hệ thống 2
1.4. Phương pháp nghiên cứu 2
1.5. Ý nghĩa thực tiễn của ứng dụng 2
CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT 3
2.1. Giới thiệu hệ điều hành Android 3
2.1.1. Tổng quan cấu trúc của Android 3
2.1.2. Sơ lược các phiên bản Android 4
2.1.3. Các thành phần cơ bản của ứng dụng Android 5
2.2. Lập trình trên hệ điều hành Android 9
2.2.1. Ngôn ngữ JAVA 9
2.2.2. Ngôn ngữ JSON 12
2.2.3. Ngôn ngữ XML 12
2.2.4. Ngôn ngữ PHP 13
2.2.5. Các dịch vụ của google với lập trình MapView 14
2.3. Máy ảo Dalvik và Android SDK 16
2.3.1. Máy ảo Dalvik 16
2.3.2. Android SDK 17
2.3.3. Android Emulator 18
CHƯƠNG 3 – PHÂN TÍCH THIẾT KẾ HỆ THỐNG 19
3.1. Mô tả về hệ thống 19
3.1.1. Yêu cầu chức năng 19
3.1.2. Yêu cầu phi chức năng 19
3.1.3. Yêu cầu hệ thống 20
3.2. Phân tích thiết kế 20
3.2.1. Mô hình hóa yêu cầu 20
3.2.2. Mô hình hóa khái niệm 24
3.2.3. Mô hình hóa tương tác 26
3.2.4. Mô hình hóa hành vi 31
3.2.5. Thiết kế chi tiết biểu đồ lớp 35
3.2.6. Thiết kế kiến trúc vật lý 36
CHƯƠNG 4 – XÂY DỰNG ỨNG DỤNG 38
4.1. Demo chương trình 38
4.1.1. Xây dựng chức năng cập nhật dữ liệu của Web Services 38
4.1.2. Xây dựng chức năng xử lý của Web Services 38
4.1.3. Truyền dữ liệu qua các form 39
4.1.4. Hiển thị MapView 41
4.1.5. Sử dụng tài nguyên GPS và Internet của hệ thống 41
4.1.6. Đánh dấu vị trí trên MapView 42
4.1.7. Truy vấn và lấy dữ liệu từ hệ thống Services của Google 43
4.1.8. Đọc dữ liệu từ file JSON 43
4.2. Giao diện ứng dụng 44
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 48
DANH MỤC TÀI LIỆU THAM KHẢO 49
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 50
c Tìm kiếm bằng services ứng dụng. Hình 33: Biểu đồ cộng tác Tìm kiếm bằng services ứng dụng Biểu đồ cộng tác Tìm kiếm bằng google services. Hình 34: Biểu đồ cộng tác Tìm kiếm bằng google services Biểu đồ cộng tác Gửi góp ý. Hình 35: Biểu đồ cộng tác Gửi góp ý Mô hình hóa hành vi Biểu đồ trạng thái Biểu đồ trạng thái Mở hệ thống. Hình 36: Biểu đồ trạng thái Mở hệ thống Biểu đồ trạng thái Tìm kiếm. Hình 37: Biểu đồ trạng thái Tìm kiếm Biểu đồ trạng thái Gửi góp ý. Hình 38: Biểu đồ trạng thái Gửi góp ý Biểu đồ hoạt động Biểu đồ hoạt động Mở hệ thống. Hình 39: Biểu đồ hoạt động Mở hệ thống Biểu đồ hoạt động Đóng hệ thống. Hình 40: Biểu đồ hoạt động Đóng hệ thống Biểu đồ hoạt động Cập nhật DM Ngân hàng. Hình 41: Biểu đồ hoạt động Cập nhật DM Ngân hàng Biểu đồ hoạt động Cập nhật DM Tỉnh thành. Hình 42: Biểu đồ hoạt động Cập nhật DM Tỉnh thành Biểu đồ hoạt động Cập nhật DM Quận huyện. Hình 43: Biểu đồ hoạt động Cập nhật DM Quận huyện Biểu đồ hoạt động Cập nhật DS Địa điểm. Hình 44: Biểu đồ hoạt động Cập nhật DS Địa điểm Biểu đồ hoạt động Tìm kiếm. Hình 45: Biểu đồ hoạt động Tìm kiếm Biểu đồ hoạt động Gửi góp ý. Hình 46: Biểu đồ hoạt động Gửi góp ý Thiết kế chi tiết biểu đồ lớp Từ biểu đồ lớp mức phân tích, kết hợp với các biểu đồ trình tự, cộng tác, trạng thái và hoạt động. Biều đồ lớp mức thiết kế được phát triển như sau: Hình 47: Biểu đồ lớp mức chi tiết Thiết kế kiến trúc vật lý Biểu đồ thành phần Hệ thống được thiết kệ dựa theo mô hình client-server trong đó: Phía client là ứng dụng được triển khai trên các thiết bị chạy hệ điều hành Android. Gửi các truy vấn lấy dữ liệu tới web server chạy các services của ứng dụng. Phía server là ứng dụng được triển khai với ngôn ngữ PHP và cơ sở dữ liệu MySQL. Gồm các xử lý gửi dữ liệu được yêu cầu của máy client. Hình 48: Biểu đồ thành phần Biểu đồ triển khai Hình 49: Biểu đồ triển khai Google Web Services: Máy chủ dịch vụ của Google Application Web Services: Máy chủ dịch vụ của ứng dụng. Triển khai dịch vụ trên máy chủ Linux, sử dụng ngôn ngữ PHP và CSDL MySQL. Client Ung Dung: Thiết bị sử dụng ứng dụng tìm kiếm, triển khai trên hệ điều hành Android. CHƯƠNG 4 – XÂY DỰNG ỨNG DỤNG Demo chương trình Xây dựng chức năng cập nhật dữ liệu của Web Services Các chức năng cập nhật dữ liệu của service được xây dựng khá đơn giản với việc tạo ra các form nhập liệu phù hợp và chèn dữ liệu vào trong CSDL. Hình 50: Demo minh họa cập nhật dữ liệu Xây dựng chức năng xử lý của Web Services Có 3 chức năng xử lý chính của web services là trả về các kết quả truy vấn về danh sách các ngân hàng, tỉnh thành, quận huyện và địa điểm các máy ATM. Đều sử dụng chung một cách thức hoạt động là từ ứng dụng gửi các truy vấn có điều kiện, services xử lý rồi trả về kết quả tương ứng. Hình 51: Quá trình xử lý của Web Services Như đã thấy việc gửi các giá trị truy vấn lên web service của ứng dụng thông qua các giá trị $_REQUEST từ ứng dụng Android. Để làm được điều đó phía ứng dụng phải sử dụng một đối tượng có kiểu BasicNameValuePair để tạo ra các biến REQUEST thông qua phương thức add(“tên_biến_request”, “giá_trị”). nameValuePairs.add(new BasicNameValuePair("tieude",noidung)); Sau khi khai báo các biến $_REQUEST thì tiến hành xác định URL truy vấn và gán các biến NameValuePair cho URL đó rồi tiến hành thực thi. HttpPost httppost = new HttpPost(""); httppost.setEntity(newUrlEncodedFormEntity(nameValuePairs)); httpclient.execute(httppost); Tiếp đến ở phía service, php có nhiệm vụ nhận các yêu cầu đó sau đó tạo truy vấn (select) vào cơ sở dữ liệu, lấy ra dữ liệu phù hợp với truy vấn rồi tiến hành xuất kết quả. Dữ liệu đầu ra được php xử lý thành dạng ngôn ngữ JSON đã đề cập. $kq = mysql_query($sql); while($post = mysql_fetch_assoc($kq)) $posts[] = array('node_list_district'=>$post); …. …. header('Content-type: application/json'); echo json_encode(array('list_district'=>$posts)); Truyền dữ liệu qua các form Trong android để truyền dữ liệu qua các form để sử dụng ta sử dụng 2 đối tượng đó là Intent và Bundle. Thay vì dùng các danh sách tham số/đối số truyền thống, trong Android thì việc trao đổi dữ liệu giữa các tiến trình được sử dụng cơ chế Intent. Hình 52: Mô hình trao đổi dữ liệu giữa 2 Activity Để trao đổi dữ liệu thì Intent thường mang theo một danh sách các đối số được đặt tên chứa dữ liệu (Bundle) Hình 53: Cấu trúc 1 Intent Cấu trúc Bundle là một cơ chế đơn giản để truyền dữ liệu, với mỗi biến bundle sử dụng một định dạng cặp (“name”, value). Với các cặp phương thức để truyền và lấy dữ liệu như “putXXX”, “getXXX”. Bundle atm = new Bundle(); atm.putString(“diachi”, “512 Lê Văn Hiến”); Intent Form_gui = new Intent(“Form_nhan”); Form_gui.putExtras(atm); StartActivity(“Form_nhan”); ………… ………… Bundle atm_nhan = getIntent().getExtras(); String atm_add = atm_nhan.getString(“diachi”); Hiển thị MapView Lập trình android về mapView khá dễ dàng khi google cung cấp cho class MapActivity để đơn giản trong việc lập trình, để hiển thị một bản đồ trên ứng dụng, chúng ta chỉ cần lấy key MapAPI rồi đưa vào ứng dụng. Hình 54: Quá trình lấy dữ liệu map từ Google Thêm MapAPI key vào layout của form: android:apiKey="0rMwFsILEdg4813dweucAH5iRKJHGozQs8FFvzQ" Sử dụng tài nguyên GPS và Internet của hệ thống Việc sử dụng tài nguyên trong hệ thống Android được đề cập khá rõ khi lập trình, để tương tác được với các ứng dụng khác cũng như tài nguyên phần cứng, phải thêm các thẻ quyền (permission) vào file manifest của project. Hình 55: Quá trình sử dụng tài nguyên hệ thống Demo thêm quyền đề sử dụng tài nguyên: Đánh dấu vị trí trên MapView Để đánh dấu một vị trí nào đó bất kì ở trên map, sử dụng một class để định dạng vị trí đánh dấu được kế thừa từ class ItemizedOverlay trong thư viện android. Class object khá đầy đủ các phương thức để sử dụng. Class này hoạt động khi xác định được tọa độ của địa điểm cần đánh dấu (kinh độ và vĩ độ). Hình 56: Quá trình đánh dấu vị trí trên MapView Việc đưa vị trí cần đánh dấu được thực hiện bằng phương thức setLocation() trong ItemizedOverlay. Sau đó điểm đánh dấu sẽ được định dạng về đồ họa như trong cấu trúc của class ItemizedOverlay rồi được vẽ trên tọa độ MapView tương ứng. marker=getResources().getDrawable(R.drawable.hinh_danh_dau); myItemizedOverlay = new ItemizedOverlay(marker,this); mapView.getOverlays().add(myItemizedOverlay); myItemizedOverlay.addItem(location); Truy vấn và lấy dữ liệu từ hệ thống Services của Google Khi truy vấn vào hệ thống Google Places API kết quả mà ta nhận được đó là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn. Hình 57: Quá trình Truy vấn và lấy dữ liệu từ hệ thống Services của Google Cấu trúc URL truy vấn trong đó các thuộc tính tìm kiếm cần có đó là tọa độ nơi tìm kiếm và bán kính. Trong chương trình sẽ tạo một HttpClient để thực thi URL truy vấn và các đối tượng Response, Entity để lấy dữ liệu. Đọc dữ liệu từ file JSON Như đã đề cập khi trước khi truy vấn vào hệ thống Google Services và Web Services của ứng dụng kết quả mà ta nhận được đó là một file XML hoặc JSON dựa vào giá trị output trong câu truy vấn. Sau khi đã có dữ liệu dưới định dạng file JSON thì tiến hành tách các dữ liệu cần thiết. Cấu trúc file JSON xác định các mảng giá trị dựa vào một cặp thẻ đóng mở “[“ “]”. Vì thế để lấy dữ liệu thì khai báo một mảng JSONArray được định nghĩa sẵn và được gán dữ liệu thông qua phương thức getJSONArray(). Hình 58: Mô hình xác định mảng giá trị trong JSON JSONArray array_atm = json.getJSONArray("từ_khóa_trước_cặp_thẻ"); Cấu trúc các thẻ dữ liệu trong mảng là cấu trúc cây vì thế để truy cập đến các thẻ con trong mảng phải sử dụng phương thức getJSONObject(). JSONObject c = array_atm.getJSONObject(“geometry”); Cuối cùng là lấy dữ liệu thông qua phương thức getString(“tên_thẻ”). String atm_name = c.getString("name"); Giao diện ứng dụng Giao diện chính của chương trình. Hình 59: Giao diện chính của chương trình Giao diện phần tìm kiếm từ web services của ứng dụng. Hình 60: Giao diện phần tìm kiếm từ web services của ứng dụng Giao diện phần kết quả trả về từ tìm kiếm. Hình 61: Giao diện phần kết quả trả về từ tìm kiếm Các tùy chọn khi click vào kết quả tìm kiếm. Hình 62: Các tùy chọn khi click vào kết quả tìm kiếm Tùy chọn tới vị trí hiện tại và vẽ đường. Hình 63: Tùy chọn tới vị trí hiện tại và vẽ đường Giao diện phần tìm kiếm trên MapView. Hình 64: Giao diện phần tìm kiếm trên MapView Hình 65: Quá trình hiển thị kết quả Giao diện góp ý. Hình 66: Giao diện góp ý KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận: Chương trình được thực hiện với thời gian ngắn nên chưa được thành công mỹ mãn và còn tồn tại một số khuyết điểm. Chương trình đã giải quyết được vấn đề tìm kiếm ATM thường ngày, việc tìm kiếm chưa thực sự được nhanh và giao diện chương trình dễ sử dụng. Bên cạnh đó vần còn tồn tại một vài khuyết điểm như khả năng đánh dấu vị trí trên bản đồ còn chưa chính xác với các thiết bị phần cứng chưa đáp ứng, cơ sở dữ liệu thu thập còn chưa chính xác hoàn toàn, kết quả tìm kiếm từ dịch vụ Google Places chưa đầy đủ so với thực tế. Vẽ đường chưa hoàn toàn tối ưu. Hướng phát triển: Giải quyết triệt để những yếu điểm còn tồn tại và phát triển thêm các chức năng như hướng dẫn đường 3D. Mở rộng giải quyết những nhu cầu thường ngày như tìm kiếm trạm xăng, bến xe bus, nhà hàng, siêu thi, khách sạn, bệnh viện. DANH MỤC TÀI LIỆU THAM KHẢO [1] Google INC. Android Developer Docs. (Online) [2] Google INC. Google Maps API Web Services. (Online) [3] Wikipedia. Android(Hệ điều hành) (Online) [4] Wikipedia. Java (Ngôn ngữ lập trình) (Online) [5] ThS. Lê Tân. Giáo trình giảng dạy JAVA cơ bản. Trường CĐ CNTT Hữu Nghị Việt Hàn, 2010. [6] ThS. Lê Viết Trương. Giáo trình phân tích, thiết kế hướng đối tượng. Trường CĐ Công nghệ thông tin Hữu nghị Việt Hàn, 8/2011. [7] Jeff Friesen. Learn Java for Android Development, 2009. [8] Wallace Jackson. Android Apps for Absolute Beginners, 2011. NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
File đính kèm:
- Đồ án Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android.doc
- Code.zip
- Source Android.zip
- Thu vien.zip
- Tóm tắt đồ án.doc
- Xây dựng hệ thống tìm kiếm máy ATM trên hệ điều hành Android.ppt