... Host-based card emulation Ứng dụng hỗ trợ người dùng DVXB Ứng dụng hỗ trợ người dùng dịch vụ xe buýt Ứng dụng quản lý người dùng DVXB Ứng dụng quản lý người dùng dùng dịch vụ xe buýt X XI DANH MỤC CÁC... thống hai ứng dụng: ứng dụng quản lý người sử dụng dịch vụ xe buýt ứng dụng hỗ trợ người dùng dịch vụ xe buýt việc quản lý tài khoản giao dịch đồ xe buýt để người sử dụng quan sát vị trí xe buýt trạm... Google API Từ khóa: Hệ thống quản lý người dùng dịch vụ xe buýt ,Ứng dụng quản lý người dùng dịch vụ xe buýt, NFC, Ứng dụng hỗ trợ người dùng dịch vụ xe buýt IV ABSTRACT Summary: Nowaday, under
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Quan Tuấn Vũ
PHÁT TRIỂN ỨNG DỤNG QUẢN LÝ NGƯỜI DÙNG DỊCH VỤ XE BUÝT TRÊN NỀN ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
HÀ NỘI - 2014
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Quan Tuấn Vũ
PHÁT TRIỂN ỨNG DỤNG QUẢN LÝ NGƯỜI DÙNG DỊCH VỤ XE BUÝT TRÊN NỀN ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
Cán bộ hướng dẫn: TS Nguyễn Ngọc Hóa
Cán bộ đồng hướng dẫn: ThS Dư Phương Hạnh
HÀ NỘI - 2014
Trang 3VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Quan Tuan Vu
DEVELOPING USER MANAGEMENT
APPLICATION IN BUS SERVICE BASE ANDRIOD
Major: Engineering and Technology
Supervisor: TS Nguyen Ngoc Hoa
Co-Supervisor: ThS Du Phuong Hanh
HA NOI - 2014
Trang 4TÓM TẮT NỘI DUNG
Tóm tắt: Ngày nay, đi với quá trình đô thị hóa nhanh chóng, nhu cầu di chuyển
của con người cũng theo đó tăng lên, mạng lưới xe buýt công cộng cũng theo đó ngàycàng mở rộng Với quy mô ngày càng lớn, việc xác thực người dùng, kiểm soát thanhtoán, quản lý và hỗ trợ khách hàng trên xe buýt ngày càng trở nên khó khăn Khóa luậntrình bày về việc xây dựng một phần của hệ thống quản lý người dùng dịch vụ xe buýt
Hệ thống gồm hai phần cơ bản chạy riêng biệt, phần thứ nhất là phía máy chủcung cấp các dịch vụ web nhằm thao tác dữ liệu với cơ sở dữ liệu – phần này thuộcvào phạm vi khóa luận “Phát triển hệ thống quản lý người dùng dịch vụ xe buýt trênnền tảng Struts2”[31] Phần thứ hai là phía máy khách dưới dạng ứng dụng Androidcũng được chia thành hai phần nhỏ hơn – là phần chính mà khóa luận này nói đến.Khóa luận sẽ trình bày xây dựng hai ứng dụng nhằm giải quyết hai bài toán khácnhau Ứng dụng quản lý người dùng dịch vụ xe buýt hướng tới việc quản lý kháchhàng trên xe buýt, giải quyết bài toán xác thực người dùng bằng thẻ NFC bằng các kếtquả trả về của dịch vụ web của phần thứ nhất của hệ thống Ngoài phần máy chủ thuộcphần một của hệ thống, tôi cũng xây dựng một máy chủ riêng với phạm vi nhỏ hơn,nhằm giải quyết các vấn đề truy xuất về dữ liệu bản đồ xe buýt của ứng dụng thứ hai.Ứng dụng hỗ trợ người dùng dịch vụ xe buýt hướng tới việc trợ giúp khách hàng sửdụng dịch vụ xe buýt, ứng dụng cung cấp cho người sử dụng những thông tin tàikhoản, giao dịch trong giới hạn cũng như một bản đồ xe buýt để người sử dụng có thểquan sát được vị trí hiện tại của các xe buýt và các trạm dừng của tuyến xe buýt đóđược xây dựng trên dữ liệu trạm xe buýt ở khóa luận “Số hóa hệ thống xe buýt trênnền Google Maps” [30] và Google API
Từ khóa: Hệ thống quản lý người dùng dịch vụ xe buýt ,Ứng dụng quản lý người dùng dịch vụ xe buýt, NFC, Ứng dụng hỗ trợ người dùng dịch vụ xe buýt.
Trang 5Summary: Nowaday, under the rapid growth in urbanization process, the
demond for moving is quick increased As a result, network bus public transportation
is more and more wide The problems of user authentication, payment control,management and support bus service’s customer become to difficult work This thesisindicate the part of building user management system in bus service
The system include two basic part The first part is server which provides webservices for database interaction It is a part of another thesis [31] The second part isclient which was two Android application It’s main content of this thesis
This thesis indicate two Android application which is built to solve two differentproblems User management application in bus service is create towards bus customermanagement, user authencation by using NFC tag and the results of web services.Outside the scope of the first part, I have a small server to solve a database interaction
of bus location for the second Android Application User support application in busservice is build toward support bus customer This application prodive userinformation, payments and a map which show current location of buses, bus stop Thatmap base in data from “Digitize bus system based Google Maps” [30]
Words: User management system in bus service , User management application in bus service, NFC, User support application in bus service.
Trang 6Hà Nội, ngày tháng năm
Sinh viên
Quan Tuấn Vũ
LỜI CAM ĐOAN
Tôi xin cam đoan những nghiên cứu của tôi về nội dung khóa luận “Pháttriển ứng dụng quản lý người dùng dịch vụ xe buýt trên nền Android” mà tôi viếttrong khoá luận này là sự thật Những gì tôi viết ra không sao chép từ các tài liệu,không sử dụng các kết quả của người khác mà không trích dẫn cụ thể
Tôi xin cam đoan ứng dụng này tôi trình bày trong khoá luận là do tôi tựphát triển, không sao chép mã nguồn của người khác.Nếu sai tôi hoàn toàn chịutrách nhiệm theo quy định của trường Đại Học Công Nghệ - Đại Học Quốc Gia
Hà Nội
Trang 7Hà Nội, ngày 14 tháng 5 năm 2014
Xin gửi lời cảm ơn chân thành toàn thể các thầy cô trường Đại học Công Nghệ đại học Quốc Gia Hà Nội đã dạy dỗ và truyền đạt những kiến thức quí báu cho tôitrong những năm tháng qua
-Cuối cùng, tôi xin được cảm ơn cha mẹ, bạn bè và người thân, những người đã ởbên tôi, khuyến khích và động viên tôi trong cuộc sống, học tập
Trong quá trình hoàn thành khóa luận tốt nghiệp, Tôi mặc dù đã rất cố gắng tuynhiên sẽ không tránh khỏi những hạn chế về mặt kiến thức và cũng như kinh nghiệm
mà tự mình không thể nhìn thấy được Vậy nên, tôi rất mong nhận được sự đóng góp,phê bình của quý thầy cô, các nhà khoa
học, đọc giả và các bạn
Xin chân thành cảm ơn!
Trang 8MỤC LỤC
Contents
LỜI CẢM ƠN vii
TÓM TẮT NỘI DUNG iv
ABSTRACT v
LỜI CAM ĐOAN vi
MỤC LỤC vii
BẢNG DANH MỤC TỪ VIẾT TẮT x
DANH MỤC CÁC HÌNH VẼ xii
DANH MỤC BẢNG BIỂU xiii
CHƯƠNG 1: GIỚI THIỆU 1
CHƯƠNG 2: LÝ THUYẾT LIÊN QUAN 4
2.1 Tổng quan về Android 4
2.1.1 Giới thiệu chung 4
2.1.2 Một số đặc điểm của Android 4
2.1.3 Kiến trúc Android 6
2.1.4 Các thành phần chính trong một ứng dụng Android: 7
2.2 Giới thiệu về công nghệ NFC và Android NFC API 8
2.2.1 Giới thiệu về Công nghệ NFC 8
2.2.2 Android NFC API 11
2.3 Google Maps Android API 17
2.3.1 Các đối tượng Map 17
2.3.2 Vẽ trên bản đồ 19
2.3.3 Tương tác với bản đồ 19
2.3.4 Dữ liệu về tọa độ 20
Trang 92.3.5 Thay đổi góc nhìn 20
2.4 Hệ quản trị cơ sở dữ liệu MySQL 20
2.5 Cơ sở dữ liệu nhúng SQLite 21
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG 23
3.1 Mô hình hệ thống 23
3.2 Phân tích và xác định yêu cầu 25
3.2.1 Ứng dụng quản lý người dùng dịch vụ xe buýt 25
3.2.2 Ứng dụng hỗ trợ người dùng dịch vụ xe buýt 35
3.3 Thiết kế 41
3.3.1 Kiến trúc ứng dụng 41
3.3.2 Xác định gói thiết kế 41
3.3.3 Thiết kế cho từng ca sử dụng 42
3.3.4 Thiết kế giao diện 47
CHƯƠNG 4: THỰC NGHIỆM 51
4.1 Môi trường thực nghiệm 51
4.1.1 Cấu hình thiết bị 51
4.1.2 Các công cụ phần mềm 52
4.2 Kết quả thực nghiệm 52
4.3 Đánh giá và hướng phát triển 53
CHƯƠNG 5: KẾT LUẬN 54
TÀI LIỆU THAM KHẢO 55
Tiếng Anh 55
Tiếng Việt 56
Trang 10BẢNG DANH MỤC TỪ VIẾT TẮT
buýt
vụ xe buýt
Trang 12DANH MỤC CÁC HÌNH VẼ
Hình 2.1 Mô hình kiến trúc phần mềm Android 7
Hình 2.2 Cơ chế hoạt động của Hệ thống công văn Thẻ [22] 13
Hình 2.3 Giả lập thẻ NFC thông qua thành phần bảo mật [23] 15
Hình 2.4 Giả lập NFC thông qua HBC [23] 16
Hình 3.1 Mô hình hệ thống 24
Hình 3.2 Mô hình thực thể 25
Hình 3.3 Mô hình Use Case: Ứng dụng quản lý người dùng dịch vụ xe buýt 26
Hình 3.4 Use case: "Đăng nhập" 28
Hình 3.5 Use case: "Đăng xuất" 29
Hình 3.6 Use case: "Kiểm tra thông tin cá nhân" 30
Hình 3.7 Use case: "Kiểm tra lịch sử giao dịch" 31
Hình 3.8 Use case: "Xác thực người dùng dịch vụ xe buýt" 32
Hình 3.9 Uses case: "Báo cáo vi phạm" 33
Hình 3.10 Mô hình lớp phân tích: Ứng dụng quản lý người DVXB 33
Hình 3.11 Mô hình Use Case Ứng dụng hỗ trợ người dùng dịch vụ xe buýt 36
Hình 3.12 Use case: "Kiểm tra lịch sử giao dịch" 37
Hình 3.13 Use case: "Hiển thị bản đồ xe buýt" 38
Hình 3.14 Sequence Diagram: Khởi tạo bản đồ và Hiển thị trạm xe buýt 39
Hình 3.15 Mô hình lớp phân tích: Ứng dụng hỗ trợ người dùng DVXB 40
Hình 3.16 Kiến trúc ứng dụng 41
Hình 3.17 Gói Src 42
Hình 3.18 Giao diện quản lý quản lý người dùng dịch vụ xe buýt 49
Hình 3.19 Giao diện ứng dụng hỗ trợ người dùng dịch vụ xe buýt 50
Trang 13DANH MỤC BẢNG BIỂU
Bảng 3.1 Các lớp phân tích: Ứng dụng quản lý người dùng DVXB 35
Bảng 3.2 Các lớp phân tích: Ứng dụng hỗ trợ người dùng DVXB 40
Bảng 3.3 Lớp thiết kế : “Đăng nhập” 43
Bảng 3.4 Lớp thiểt kế: “Đăng xuất” 44
Bảng 3.5 Lớp thiết kế: "Kiểm tra thông tin" 44
Bảng 3.6 Lớp thiết kế:"Xác thực người dùng xe buýt" 45
Bảng 3.7 Lớp thiết kế: "Báo cáo vi phạm" 46
Bảng 3.8 Lớp thiết kế: "Kiểm tra lịch sử giao dịch (nhân viên)" 46
Bảng 3.9 Lớp thiết kế: "Kiểm tra lịch sử giao dịch(người dùng)" 46
Bảng 3.10 Lớp thiết kế: "Hiển thị bản đồ xe buýt" 47
Bảng 4.1 Cấu hình thiết bị thực nghiệm 51
Bảng 4.2 Cấu hình máy tính 52
Bảng 4.3 Công cụ, và các gói phần mềm,… 52
Trang 14CHƯƠNG 1: GIỚI THIỆU
Với tốc độ tăng trưởng chóng mặt như hiện nay, các nghành cũng phát triển vớiquy mô rộng lớn, đặc biệt với nghành dịch vụ Một nền kinh tế năng động phải có cácnghành dịch vụ phát triển với nhiều loại hình Khi kinh tế phát triển, nhu cầu conngười ngày càng cao, xu thế xuất hiện những nhu cầu mới phục vụ những nhu cầu đónhư các dịch vụ khách sạn, du lịch, chăm sóc sức khỏe,… Trong số các nhu cầu đó cầntính đến nhu cầu di chuyển
Tại nước ta đặc biệt Hà Nội nhu cầu di chuyển của người dân là rất lớn, vì vậydịch vụ xe buýt công cộng hiện nay đang rất sôi động Theo Tổng công ty Vận tải HàNội, năm 2009 đã có 385 triệu hành khách đi xe buýt chiếm trên 92% sản lượng vận
10.000 lượt xe, vận chuyển được trên 1 triệu lượt hành khách, hạn chế trên 700.000lượt xe máy tham gia giao thông trên đường phố [32] Với hệ thống xe buýt bao phủkhắp Hà Nội đã giảm đáng kể số vụ tai nạn trong thành phố, cũng như giảm tắc đường,bảo vệ môi trường của thủ đô Xe buýt không ngừng phục vụ cho những nhu cầu cầnthiết của con người như: đi học, đi làm, …
Tuy nhiên, với số lượng hành khách quá đông như hiện nay, khả năng đáp ứngcủa xe buýt là hoàn toàn không đủ và việc xác thực người dùng dịch, kiểm soát thanhtoán trên một chuyến xe cũng như việc hỗ trợ khách hàng là khó thực hiện Cũng vì lý
do trên, chúng tôi thực hiện đề tài này nhằm xây dựng một hệ thống quản lý ngườidùng dịch vụ xe buýt để khắc phục các vấn đề về xác thực người dùng và kiểm soátthanh toán trên xe buýt và hỗ trợ khách hàng để cải thiện thực trạng hiện nay Trongphạm vi khóa luận này, tôi sẽ đi sâu vào các nội dung xung quanh phần thứ hai của hệthống là hai ứng dụng: ứng dụng quản lý người sử dụng dịch vụ xe buýt và ứng dụng
hỗ trợ người dùng dịch vụ xe buýt trong việc quản lý tài khoản giao dịch của mình vàmột bản đồ xe buýt để người sử dụng có thể quan sát được vị trí hiện tại của các xebuýt và các trạm dừng của tuyến xe buýt đó
Để xây dựng được ứng dụng quản lý người dùng dịch vụ xe buýt, bài toán đặt ratrước hết là cách để định danh duy nhất một người sử dụng duy nhất Cách định danhphổ biến và thường được sử dụng là mỗi người dùng dịch vụ xe buýt thường được cấpphát một thẻ xe buýt trong đó ghi rõ nội dung cần thiết để xác thực người sử dụng vàtình trạng sử dụng dịch vụ hiện tại của người xe buýt đó Tuy nhiên, thẻ định danh
Trang 15hiện tại đang được sử dụng tại Việt Nam là loại thẻ giấy và việc xác thực người dùngdịch vụ xe buýt được thực hiện một cách thủ công để xác thực chính xác thì mất nhiềuthời gian, khó có thể thống kê và có thể dễ dàng làm giả Vậy cách để định danh ngườidùng dịch vụ xe buýt phải đảm bảo độ tin cậy về thông tin, tốc độ nhanh, an toàn và cóthể thực hiện tự động.
Theo các điều kiện đặt ra ở trên, ý tưỏng của tôi là xác thực người sử dụngthông qua thẻ từ: cụ thể là loại thẻ NFC Như vậy việc định danh người sử dụng sẽđịnh danh thông qua ID của thẻ, thông tin người sử dụng sẽ được lưu trên một máychủ và truy vấn thông qua các dịch vụ web Ứng dụng quản lý người dùng dịch vụ xebuýt sẽ là trung gian giao tiếp giữa thẻ từ NFC định danh người dùng và dịch vụ webthẩm định người dùng Điều này có nghĩa là mỗi xe buýt sẽ được trang bị một thiết bị
có khả năng đọc thẻ từ, ở đây tôi chọn thiết bị Android có hỗ trợ đọc thẻ từ NFC.Còn với ứng dụng hỗ trợ người dùng dịch vụ xe buýt, ngoài việc sử dụng thẻNFC để định danh người sử dụng như ứng dụng quản lý người dùng dịch vụ xe buýt
đã nói ở phần trên Đối với bài toán còn lại là làm việc với dữ liệu bản đồ, tôi sẽ giảiquyết bài toán này thông qua Google Maps API vì tính phổ biến, dữ liệu vừa đủ và sự
đa dạng trong các tính năng mà nó cung cấp trên nền Android cùng với dữ liệu cáctrạm xe buýt được số hóa ở khóa luận “Số hóa hệ thống xe bus trên nền Google Maps”[30], và các dịch vụ web để giải quyết bài toán hiển thị bản đồ xe buýt
Nội dung khóa luận bao gồm 4 chương:
Chương 1 - Giới thiệu: Nêu thực trạng, giới thiệu bài toán, ý tưởng xây dựng vàcác vấn đề sẽ được trình bày
Chương 2 – Các công cụ được sử dụng: Nêu những công cụ, cơ sở lý thuyết được
Chương 5 – Kết luận: Tóm tắt lại quá trình xây dựng, những kết quả đã đạt được,
ý nghĩa thực tiễn của hệ thống
Trang 16CHƯƠNG 2: LÝ THUYẾT LIÊN QUAN
2.1 Tổng quan về Android
2.1.1 Giới thiệu chung
Android là một hệ điều hành mã nguồn mở dành cho thiết bị di động như điệnthoại thông minh và máy tính bảng Được phát triển bởi Liên minh thiết bị cầm tay mởrộng, dẫn đầu là Google
Từ quan điểm của nhà phát triển, Android là một hệ điều hành xây dựng trênnhân Linux Nó bao gồm giao diện cảm ứng, widgets, camera, … và tập các chức năngcần thiết để có thể được gọi là điện thoại thông minh Android là một nền tảng hỗ trợcác ứng dụng khác nhau, có sẵn trong Google Play Store Nền tảng Android cũng chophép người dùng có thể phát triển, cài đặt và sử dụng ứng dụng của họ AndroidFrameWork được cấp phép theo chứng chỉ Apache
2.1.2 Một số đặc điểm của Android
Android cung cấp đầy đủ bộ phần mềm cho các thiết bị di động bao gồm: hệ điềuhành, middleware (các phần mềm có nhiệm vụ kết nối các thành phần phần mềm vàcác ứng dụng với nhau) và ứng dụng di động cốt lõi
Android được xây dựng trên nhân Linux (là phần mềm mở và miễn phí) và sửdụng máy ảo được thiết kế và tối ưu hóa bộ nhớ và tài nguyên phần cứng trong môitrường di động
Trang 17Android có một cộng đồng các lập trình viên và những người đam mê rất năngđộng Họ sử dụng mã nguồn Android để phát triển và phân phối những phiên bảnchỉnh sửa của hệ điều hành.
2.1.2.2 Tính ngang bằng giữa các ứng dụng
Android không phân biệt các ứng dụng cốt lõi và các ứng dụng được phát triểnbởi bên cung cấp thứ ba Mọi ứng dụng đều được phát triển trên cơ sở truy cập toàn bộchức năng của thiết bị di động nhằm cung cấp cho người dùng các ứng dụng và dịch
vụ phong phú
Với các thiết bị xây dựng trên nền tảng Android, người dùng có thể tùy chỉnhthiết bị theo cách họ mong muốn Ví dụ như, cài đặt bất cứ ứng dụng nào, thay đổimàn hình chính của thiết bị, thiết đặt cách xử lý các sự kiện bằng các ứng dụng mà họnghĩ là phù hợp
2.1.2.3 Phá vỡ ranh giới ứng dụng
Android phá vỡ các rào cản cần thiết nhằm hướng tới xây dựng các ứng dụngmới và sáng tạo nhờ vào khai thác tối đa chức năng của phần cứng Ví dụ như, nhàphát triển có thể xây dựng các ứng dụng chụp ảnh với nhiều đổi mới so với ứng dụngcốt lõi có sẵn
2.1.2.4 Phát triển các ứng dụng một cách nhanh chóng và dễ dàng
Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử dụng bộ pháttriển phần mềm Android (SDK) SDK bao gồm một bộ đầy đủ các công cụ dùng đểphát triển, gồm có công cụ gỡ lỗi, thư viện phần mềm, bộ giả lập điện thoại dựa trênQEMU, tài liệu hướng dẫn, mã nguồn mẫu, và hướng dẫn từng bước Môi trường pháttriển tích hợp (IDE) được hỗ trợ chính thức là Eclipse sử dụng phần bổ sung AndroidDevelopment Tools (ADT) Các công cụ phát triển khác cũng có sẵn, gồm có Bộ pháttriển gốc dành cho các ứng dụng hoặc phần mở rộng viết bằng C hoặc C++, GoogleApp Inventor, một môi trường đồ họa cho những nhà lập trình mới bắt đầu, và nhiềunền tảng ứng dụng web di động đa nền tảng phong phú
2.1.2.5 Quản lý bộ nhớ
Android được thiết kế quản lý bộ nhớ (RAM) nhằm giảm tối thiệu tiêu thụ điệnnăng Khi một ứng dụng Android không còn được sử dụng, hệ thống sẽ tự động ngưnghoạt động của ứng dụng đó, mặc dù thực sự là nó vẫn ở trạng thái mở Vì điều đó, cácứng dụng được tạm ngưng không tiêu thụ tài nguyên và được khởi động lại khi cần
Trang 18thiết Điều này giúp cho Android tăng khả năng đáp ứng người dùng (ứng dụng cầnkhởi động lại), mặt khác đảm bảo tối thiệu tiêu hao năng lượng của ứng dụng nền.Quản lý bộ nhớ được thực hiện một cách tự động: khi bộ nhớ đầy hệ thống sẽ bắtđầu diệt ứng dụng và tiến trình không hoạt động được một thời gian, sắp theo thờiđiểm cuối mà chúng được sử dụng.
2.1.2.6 Bảo mật và riêng tư
Các ứng dụng được giới hạn trong phạm vi tài nguyên của chính mình, chúngđược hoạt động một cách riêng biệt và không được phép chạm đến phần tài nguyêncòn lại ngoại trừ người sử dụng trao quyền đó một cách công khai cho ứng dụng khicài đặt Điều này làm giảm bớt ảnh hưởng của lỗi bảo mật hoặc lỗi chương trình cótrong ứng dụng
2.1.3 Kiến trúc Android
Kiến trúc Android (Hình 2.1) được chia làm bốn tầng bao gồm:
- Tầng một: tầng Application là tầng ở trên cùng cách xa với phần cứng nhất,
nó chứa các ứng dụng mà lập trình viên phát triển
- Tầng hai: Application Framework Một vài trong đó là:
o Activity Manager: quản lý vòng đời của các Activity
o Windows Manager: quản lý form của các ứng dụng
o Content Providers: cho phép các ứng dụng truy cập dữ liệu từ các ứngdụng khác hoặc để chia sẻ dữ liệu của riêng ứng dụng
o View UI - để xây dựng layout của ứng dụng
o Resource Manager - cung cấp cách thức truy cập đến non-coderesources
o Notification Manager - cho phép tất cả các ứng dụng hiển thị thôngbáo của mình trên hệ điều hành
o Google xây dựng cho các developer để phát triển các ứng dụng của họtrên Android chỉ bằng cách gọi các API
- Tầng ba: Libraries.là các thư viện được viết bằng ngôn ngữ C/C++ sẽ đượccác developer phát triển ứng dụng android thông qua tầng AndroidFramework Có thể kể ra đây một số thư viện quen thuộc với các lập trìnhviên như: Media Libraries, Surface Manager, LibWebCore, …
- Tầng bốn: Nhân Linux
Trang 19Hình 2.1 Mô hình kiến trúc phần mềm Android
2.1.4 Các thành phần chính trong một ứng dụng Android:
Một ứng dụng Android thường có các thành phần sau:
dùng có thể tương tác vào đó để thực hiện một hành động nào đó
Khi được bật Service dùng để update dữ liệu, đưa ra các cảnh báo(Notifacation) và không bao giờ hiển thị cho người dùng nhìn thấy
điều hành (pin yếu, có sms, có cuộc gọi đến ) hoặc từ chính trong ứng dụngcủa chúng ta BR cũng không có giao diện người dùng
riêng với nhau
Trang 20- Intent và bộ lọc Intent: là một đối tượng dùng để thông báo yêu cầu hànhđộng từ một thành phần khác như: khởi động một Activity, một Service hoặccung cấp một BR.
khác và được cập nhập một cách định kỳ
2.2 Giới thiệu về công nghệ NFC và Android NFC API
2.2.1 Giới thiệu về Công nghệ NFC
2.2.1.1 Khái quát về NFC
Near Field Communication là tập hợp các tiêu chuẩn cho smartphone và cácthiết bị tương tự có thể thiết lập một kết nối thông qua sóng radio khi các thiết bị đónằm trong một phạm vi đủ gần Kết nối cũng có thể được thiết lập giữa các thiết bịNFC và chip NFC không dùng năng lượng ( hay còn gọi là thẻ NFC).[1][2]
NFC xây đựng dựa trên các hệ thống RFID : là các hệ thống chỉ giao tiếp mộtchiều từ các thẻ thông minh, NFC cải tiến hơn so với RFID Nó cho phép giao tiếp haichiều giữa các thiết bị đầu cuối Một trong những thể hiện của việc giao tiếp này làtính năng Android Beam trên thiết bị thông minh Android Android Beam sử dụngNFC để bật Bluetooth ở cả hai thiết bị và tự động tăt Bluetooth khi kết thực hiện xongmột công việc nào đó S-Beam là mở rộng của AndroidBeam, sử dụng NFC để chia sẻđịa chỉ MAC và IP và thực hiện công việc trực tiếp trên mạng WIFI thay choBluetooth.[3]
Thiết bị NFC có thể sử dụng cho việc thanh toán điện tử, tương tự với các loạithẻ tín dụng và thẻ điện tử thông minh.Như Google Wallet cho phép người tiêu dùnglưu trữ thông tin thẻ tín dụng trong một chiếc ví ảo sau đó sử dụng thiết bị NFC vớithiết bị đọc thẻ chấp nhận giao dịch Master Card PayPass.[4] Germany[5], Austria[6],
cho dịch vụ xe công cộng
2.2.1.2 Các thông số kỹ thuật của thẻ NFC
NFC là một tập hợp các công nghệ không dây tầm ngắn ( phạm vi 10 cm hoặc íthơn ) NFC hoạt động ở tần số 13,56 MHz trên chuẩn ISO/IEC 18000-3 và tốc độ từ
106 kbit/s tới 424 kbit/s NFC luôn có một đối tượng khởi động và một đối tượng mụctiêu Nếu mục tiêu là đối tượng bị động, đối tượng khởi động tạo ra một vùng RF cung
Trang 21cấp năng lượng cho mục tiêu bị động Cho nên đối tượng NFC có hình thức đơn giảnnhư : thẻ, thẻ dán, thẻ không cần pin Nếu cả hai đối tượng đều chủ động thì cả haithiết bị đều là đối tượng khởi động (nguồn cung cấp điện) và luân phiên tạo ra cácvùng riêng, thiết bị chờ dữ liệu sẽ vô hiệu hóa trường RF của chính nó Giao tiếp NFCpear-to-pear có thể kích hoạt khi hai thiết bị NFC đang bật.[3] Năng lượng RF tậptrung trong phạm vi ±7 KHZ phạm vi băng thông, nhưng đường bao phổ đầy đủ có thểrộng tới 1.8 MHz khi sử dụng biến điệu ASK.[12]
Thẻ NFC chứa dữ liệu và thường chỉ đọc, và có thể cho phép ghi đè Thẻ NFC cóthể được tùy chỉnh bởi nhà sản xuất hoặc sử dụng các thông số kỹ thuật được cung cấptrong diễn đàn NFC An toàn lưu dữ liệu cá nhân trong thẻ NFC như thẻ ghi nợ và thẻtín dụng, mã PIN và các thông tin khác Diễn đàn NFC định nghĩa có bốn loại thẻ NFC
có tốc độ truyền thông khác nhau về cấu hình, bảo mật, dữ liệu lưu trữ và độ bền Bộnhớ của thẻ từ 96 đến 4096 bytes
2.2.1.3 So sánh với Bluetooth
NFC và Bluetooth đều là công nghệ giao tiếp tầm ngắn và được tích hợp vào điệnthoại di động NFC hoạt động ở tốc độ chậm hơn so với Bluetooth, nhưng tiêu thụ ítđiện năng và không yêu cầu ghép nối NFC thiết lập nhanh hơn so với Bluetooth,nhưng có tốc độ truyền chậm hơn so với Bluetooth ngay cả ở trạng thái năng lượngthấp Với NFC, thay vì thực hiện các công việc thủ công để xác định các thiết bị, kếtnối của hai thiết bị NFC được thiết lập một cách nhanh chóng (chưa tới 1/10 giây).Vớikhoảng cách tối đa là 20cm, NFC có khoảng cách ngắn làm giảm khả năng bị chặn dẫnđến ngắt trong khu vực đông đúc Trái ngược với Bluetooth, NFC tương thích với hạtầng công nghệ RFID thụ động (13.56 MHz ISO/IEC 18000-3) [13]
2.2.1.4 Tổ chức tiêu chuẩn và dự án công nghiệp
Tiêu chuẩn: NFC được chấp nhận là tiêu chuẩn ISO/IEC vào 8/10/2003 và chuẩnECMA NFC là một công nghệ mở được chuẩn hóa ECMA-340 và ISO/IEC 18092 Tiêu chuẩn quốc tế này quy định cụ thể : tiêu chuẩn sản xuất, mã hóa, tốc độ truyền,định dạng khung và giao diện RF, cũng như khởi tạo các phương án và điều kiện cầnthiết để kiểm soát xung đột dữ liệu trong quá trình khởi tạo Hơn nữa, tiêu chuẩn nàyđịnh nghĩa giao thức vận chuyển bao gồm cả giao thức kích hoạt và phương pháp traođổi dữ liệu Giao diện không khí cho NFC được chuẩn hóa tại: ISO/IEC 18092 /ECMA-340[14] và ISO/IEC 21481 / ECMA-352[15] NFC cũng bao gồm cả chuẩnISO/IEC 14443 A, B, và FeliCa Ngoài ra diễn đàn NFC đã xác định kiểu dữ liệu phổbiến là NFC Data Exchange Format (NDEF)
Trang 22GSMA: Hiệp hội GSMA là hiệp hội thương mại toàn cầu đại diện cho 800 nhàvận hành điện thoại di động và 200 công ty sản phẩm và dịch vụ trên 219 quốc gia.Nhiều tổ chức trong đó đã thực nghiệm công nghệ NFC trên toàn thế giới và đangchuẩn bị cho quá trình thương mại hóa [16]
GSMA có liên quan đến:
- Thiết lập tiêu chuẩn: GSMA đang phát triển chứng nhận và thử nghiệm đểđảm bảo khả năng tương tác toàn cầu của dịnh vụ NFC [16]
- Xác định cách tiếp cận toàn cầu chung nhất để sử dụng NFC để liên kết cácthiết bị NFC với hệ thống thanh toán không tiếp xúc [17][18]
- 17/11/2010 AT&T, Verizon và T-Mobile ra mất công ty liên doanh (ISIS)nhằm phát triển nền tảng duy nhất sử dụng công nghệ NFC để thanh toán diđộng ISIS cho phép thiết bị NFC có chức năng như thẻ tín dụng cho 200triệu khách hàng
Diễn đàn NFC: là một hiệp hội phi lợi nhuận được thành lập vào 18/3/2004 bởiNXP Semiconductors, Sony và Nokia để thúc đẩy việc sử dụng NFC trong thiết bịđiện tử tiêu dùng, thiết bị di động và máy tính NFC Forum thúc đẩy việc thực hiện vàtiêu chuẩn của công nghệ NFC để đảm bảo khả năng tương tác giữa các thiết bị vàdịch vụ Tính đến tháng 6 năm 2013, Diễn đàn NFC đã có hơn 190 thành viên.[19]
2.2.1.5 Các khía cạnh an toàn
Mặc dù phạm vi giao tiếp của NFC chỉ giới hạn trong một vài centimet nhưngcông nghệ NFC không đảm bảo thông tin liên lạc được an toàn Năm 2006, ErnstHaselsteiner và Klemens Breitfuß đã liệt kê các loại tấn công có thể xảy ra khi sử dụngthẻ NFC [20] NFC không cung cấp phòng chống việc nghe trộm thông tin và dễ bị tổnthương bởi thay đổi dữ liệu Ứng dụng phải sử dụng các phương thức cao hơn nhưgiao thức mã hóa để thiết lập an toàn Các kiểu tấn công khi sử dụng thẻ NFC baogồm:
ten Phạm vi có thể nghe trộm tín hiệu RF phụ thuộc vào nhiều thông số.Thường là 10m với thiết bị chủ động và 1m cho thiết bị thụ động.[20] [21]
cách nào hiện nay có thể ngăn chặn được sự tấn công này Tuy nhiên, nếuthiết bị NFC kiểm tra vùng RF trong khi đang gửi dữ liệu thì nó có thể pháthiện dược các cuộc tấn công
IEC 14443, các kiểu tấn công chuyến tiếp cũng có tính khả thi Trong kiểu tấncông này, kẻ tấn công có thể chuyển các yêu cầu của người đọc cho nạn nhân
Trang 23và chuyển tiếp câu trả lời của kẻ tấn công cho người đọc, để kẻ tấn công cóthể giả mạo là chủ của chiếc thẻ Cũng tương tự như kiểu tấn công “người ởgiữa”.
tin chứng thực được lưu trong thẻ của người mất Để thiết giải quyết vấn đềnày, cần nhiều hơn một yếu tố xác thực vật lý
hệ thống thườmg đặt chế độ time-out khi không sử dụng Cuộc tấn công cóthể xảy ra vào thời điểm hệ thống chưa time-out Cách giải quyết kiểu tấncông cần nhiều hơn một yếu tố xác thực vật lý
2.2.2 Android NFC API
Thẻ NFC có độ phức tạp, tinh vi tùy vào loại thẻ Loại đơn giản chỉ cung cấp đọc
và viết, đôi khi cũng có một số trường trong thẻ được dùng để quy định thẻ chỉ có thểđược đọc Thẻ phức tạp hơn cung cấp các hoạt động toán học, có phần cứng mã hóa đểphân quyền truy cập vào khu vực của thẻ Thẻ thiết kế tinh vi nhất cung cấp tương tácphức tạp với mã thực thi trên thẻ Dữ liệu trong thẻ NFC thường có chung một địnhdạng khung, hầu hết Android NFC API được xây dựng trên chuẩn NDEF (NFC DataExchange Format) của diễn đàn NFC Thiết bị Android hỗ trợ NFC với ba chế độchính:
Android Beam
2.2.2.1 Các vấn đề cơ bản của NFC trong Android
2.2.2.1.1 Hệ thống công văn thẻ
Các thiết bị Android thường tìm kiếm thẻ NFC khi màn hình mở khóa và chế độNFC được bật Hệ thống này thực thi phân tích thẻ đã được thiết bị phát hiện, phânloại dữ liệu và khởi động ứng dụng quan tâm đến dữ liệu thu nhập được bằng cách:
2.2.2.1.2 Cơ chế ánh xạ NFC tới định dạng MIME, URI
NDEF được đóng gói bên trong một tin nhắn ( NdefMessage ) có chứa các bảnghi ( NdefRecord ) Mỗi NdefRecord phải được hình thành theo các đặc điểm kỹ thuật
Trang 24của loại bản ghi Khi thiết bị Android quét một thẻ NFC chứa dữ liệu định dạngNDEF Từ NdefMessage quét được, hệ thống phân tích NdefMessage nhằm tìm cácđịnh dạng MIME và URI Để thực hiện điều đó, hệ thống đọc NdefRecord đầu tiêntrong NdefMessage để xác định cách đọc toàn bộ dữ liệu NDEF Một NdefMessage tốt
có cấu trúc NdefRecord đầu tiên như sau:
- Variable length payload: tải trọng thực tế của dữ liệu để đọc hoặc viết
Hệ thống công văn thẻ sử dụng NdefRecord đầu tiên để ánh xạ định dạng MIME
và URI Nếu thành công, thông tin đó được đóng gói trong một intentACTION_NDEF_DISCOVERED Trong một số trường hợp, hệ thống này không xácđịnh dược NdefRecord đầu tiên (đồng nghĩa với việc không thể ánh xạ định dạngMIME hay URI hoặc dữ liệu không bắt đầu với kiểu cấu trúc NDEF) Trong trườnghợp này, thông tin về các công nghệ thẻ và tải trọng thực tế được đóng gói trong intentACTION_TECH_DISCOVERED
2.2.2.1.3 Cơ chế kích hoạt ứng dụng qua thẻ NFC
Khi thông tin được đóng trong một intent, hệ thống công văn thẻ sẽ gửi intent đótới các ứng dụng quan tâm tới intent đó Nhìn chung có ba loại intent chính cho cơ chếquét thẻ NFC:
thẻ chứa dữ liệu NDEF Đây là loại intent được ưu tiên hàng đầu, nó sẽ được
ưu tiên kích hoạt hàng đầu so với hai kiểu intent còn lại
intent ACTION_NDEF_DISCOVERED: hệ thống công văn thẻ sẽ cố gắngkích hoạt ứng dụng đăng ký xử dụng loại thẻ này Intent này cũng được kíchhoạt đầu tiên, nếu thẻ quét được không chứa kiểu dữ liệu NDEF
ACTION_NDEF_DISCOVERED và ACTION_TECH_DISCOVEREDintent này được kích hoạt
Các hoạt động cơ bản của hệ thống công văn thẻ hoạt động:
- Cố gắng kích hoạt Activity bởi intent đã được tạo khi quét thẻ NFC(ACTION_NDEF_DISCOVERED hoặc ACTION_TECH_DISCOVERED)
Trang 25- Nếu không có Activity nào được kích hoạt, kích hoạt Activity với độ ưu tiên
ACTION_TAG_DISCOVERED)
Hình 2.2 Cơ chế hoạt động của Hệ thống công văn Thẻ [22]
2.2.2.1.4 Lấy thông tin từ Intent
NFC intent có thể chứa các thành phần sau của thẻ được quét:
từ thẻ ( thành phần bắt buộc có trong intents)
2.2.2.1.5 Tạo NdefRecord phổ biến
Từ phiên bản Android 4.0 ( API level 14)[22], Android hỗ trợ việc tạo Uri tựđộng Từ phiên bản 4.1 (API lv 16) [22], hỗ trợ các phương thức tạo MIME và cácNdefRecord mở rộng
2.2.2.1.6 Android Application Record (AAR)
AAR được hỗ trợ ở phiên bản Android 4.0 trở lên AAR chắc chắn cho ứng dụngđược ưu tiên khi xử lý NdefMessage thông qua tên gói được nhúng trong mộtNdefRecord Có thể thêm AAR vào bất cứ NdefRecord nào của NdefMessage, bởi vìAndroid tìm kiếm AAR trên tất cả NdefRecord của NdefMessage Nếu tìm thấy AAR,Android kích hoạt ứng dụng qua tên gói của ứng dụng được nhúng trong AAR Nếukhông tìm thấy ứng dụng, Android sẽ bật Google Play để tìm kiếm ứng dụng và tải về
Trang 26AAR được sử dụng để ngăn các ứng dụng khác cùng xử lý một itent mà lập trìnhviên triển khai trong thẻ NFC AAR chỉ hỗ trợ ở mức độ ứng dụng, bộ lọc Intent hỗ trợ
ở mức Activity Một thẻ NFC có chứa AAR, sẽ được hệ thống công văn thẻ xử lý nhưsau:
kiện AAR thì khởi động Activity
Activity có thể xử lý intent đó, hoặc không Activity nào có thể xử lý Kíchhoạt ứng dụng thỏa mãn AAR
- Nếu không ứng dụng nào có thể bắt đầu với AAR, vào GooglePlay vàdownload ứng dụng
2.2.2.1.7 Truyền NdefMessage tới thiết bị Android hỗ trợ NFC khác
AnroidBeam cho phép hai thiết bị Android hỗ trợ NFC có thể trao đổi dữ liệu.Ứng dụng dùng để truyền dữ liệu cần nằm ở tiền cảnh và thiết bị nhận đang ở trạngthái không khóa Khi thiết bị truyền nằm trong phạm vi vừa đủ với thiết bị nhận, người
sử dụng có thể chọn hoặc không chọn truyền dữ liệu cho thiết bị nhận
Một Activity chỉ có thể đẩy một NdefMessage tại một thời điểm Thiết bị NFCnhận dữ liệu phải được hỗ trợ gói com.android.npp - giao thức đẩy dữ liệu NDEF hoặcgiao thức SNEP (Simple NDEF Exchange Protocol) của diễn đàn NFC Giao thứccom.android.npp là cần có của phiên bản Android API level 9 (Android 2.3) tới level
13 (Android 3.2) [22] Từ Android 4.0 trở lên đều cần cả com.android.npp lẫnSNEP[22]
2.2.2.2 Các vấn đề nâng cao của NFC trong Android
Phần này nói qua về các API cho phép sử dụng các công nghệ thẻ khác nhau màAndroid hỗ trợ Android đọc, ghi dữ liệu dưới các chuỗi byte và sử dụng giao thức dongười lập trình thiết lập (có thể không phải kiểu dữ liệu NDEF hoặc là NDEF) để pháthiện và xác định và kết nối với thẻ
Khi làm việc với thẻ NFC và các thiết bị hỗ trợ Android, định dạng chínhthường đước sử dụng là NDEF Với kiểu dữ liệu NDEF, Android hỗ trợ phân tích cúpháp của thông điệp và đặt nó trong một NdefMessage nếu có thể
Tuy nhiên, có những trường hợp thẻ không chứa dữ liệu NDEF hoặc không thểánh xạ MIME/URI, trong trường hợp này lập trình viên cần kết nối với thẻ, đọc và viết
Trang 27theo giao thức riêng Android cung cấp gói android.nfc.tech để sử dụng trong cáctrường hợp nói trên.
2.2.2.3 Mô phỏng thẻ NFC
Nhiều thiết bị Android cung cấp chức năng giả lập thẻ NFC Chức năng nàythường được thực hiện bởi một chip riêng biệt trong thiết bị, là một thành phần bảomật Một số SIM được cung cấp bởi một số nhà mạng không dây cũng có thành phầnnày
Android 4.4 có một số phương pháp bổ sung giả lập thẻ mà không cần thông quacác thành phần bảo mật là : “host-based card emulation” (HCE)[23] Điều này chophép bất cứ ứng dụng Android có thể giả lập thẻ NFC và giao tiếp với các thiết bị đọcthẻ NFC
2.2.2.3.1 Giả lập với thành phần bảo mật
Khi giả lập thẻ NFC được thực hiện thông qua thành phần bảo mật, thẻ được môphỏng nằm trong thành phần bảo mật và các thông tin được truy xuất thông qua ứngdụng Android Khi đọc thẻ NFC, bộ điều khiển NFC chuyển hướng đích đọc của thiết
bị đọc sang thành phần bảo mật
Hình 2.3 Giả lập thẻ NFC thông qua thành phần bảo mật [23]
Các thành phần bảo mật tự thực hiện các công việc giao tiếp với các thiết bị đọcthẻ NFC mà không cần sự hỗ trợ nào của tầng ứng dụng Sau khi giao dịch hoàn tất,
Trang 28ứng dụng có thể truy vấn đến các yếu tố bảo mật để lấy các thông tin cần thiết từ giaodịch.
2.2.2.3.2 Host-Based Card Emulation
Khi mô phỏng thẻ bằng HCE, dữ liệu được chuyển tới CPU mà trên đó ứng dụngAndroid đang chạy trực tiếp
Hình 2.4 Giả lập NFC thông qua HBC [23]
2.2.2.3.3 Các loại thẻ giao thức NFC được hỗ trợ để tạo giả lập
Android 4.4 hỗ trợ nhiều giao thức, loại thẻ phổ biến Cụ thể hơn là các loại thẻdựa trên các chuẩn của diễn đàn NFC : ISO-DEP (dựa trên ISO/IEC 14443-4) [23] vàtiến trình Application Protocol Data Units (APDUs) được nêu trong các chuẩn kĩ thuậtISO/IEC 7816-4 [23] Android chỉ được giới hạn giả lập công nghệ tiêu chuẩn ISO-DEP NFC-A (ISO / IEC 14.443-3 Loại A) [23] Còn công nghệ NFC-B (ISO / IEC14.443-4 Loại B) [23] là tùy chọn
2.2.2.3.4 Dịch vụ HCE
Kiến trúc HCE dựa trên thành phần dịch vụ Android (Android service) Lợi thếcủa thành phần dịch vụ Android là có thể chạy nền để có thể phản hồi thiết bị đọc NFCtrong nền mà không cần khởi động giao diện
Trang 292.2.2.3.5 HCE và bảo mật
Kiến trúc HCE bản thân nó cung cấp một phần cốt lõi của an ninh: vì dịch vụ nàyđược bảo vệ bới system permission BIND_NFC_SERVICE, chỉ có hệ điều hành có thểgiao tiếp và liên kết với dịch vụ HCE
2.3 Google Maps Android API
Google Maps Android API hỗ trợ việc thêm bản đồ dựa trên dữ liệu bản đồ củaGoogle Maps API này tự động xử lý các việc truy cập vào máy chủ Google Mapsnhằm tải tài liệu, hiển thị bản đồ, và phản hồi biển hiện bản đồ API này cũng đượcdùng cho việc đánh dấu bản đồ, vẽ đa giác, tạo một lớp phủ lên bản đồ cơ bản, thayđổi góc nhìn của người sử dụng trên một khu vực bản đồ Các đối tượng cung cấpthông tin bổ sung thêm cho các địa điểm, cho phép người dùng tương tác với bản đồ.API cho phép thêm đồ họa trên bản đồ
2.3.1 Các đối tượng Map
Google Maps API cho phép hiển thị Google Map trên ứng dụng Loại bản đồ nàygiống với bản đồ của ứng dụng Google Maps for Mobile (GMM)[25], bản đồ doGoogle Maps API tạo ra và bản đồ của ứng dụng GMM có nhiều tính năng tương tự.Nhưng có hai sự khác biệt cơ bản, bản đồ tạo ra bởi API thì:
nhân
nhiên, các địa điểm được thêm vào có thể được nhấp, API hỗ trợ việc đánhdấu nghe gọi cho các tương tác khác nhau
Ngoài chức năng tạo lập bản đồ, API cũng hỗ trợ các chức năng phù hợp với giaodiện người dùng Android Ví dụ, thiết lập các tương tác với bản đồ bằng cách thiết lậplắng nghe sự kiện phản hồi lại tương tác của người sử dụng
Lớp quan trọng khi làm việc với đối tượng bản đồ là lớp GoogleMap Trong giaodiện người dùng Android, một bản đồ sẽ được biểu diễn bằng một MapFragment hoặcđối tượng MapView
GoogleMap xử lý hoạt động tự động sau:
Trang 30- Phản hồi tương tác cho pan và zoom như di chuyển bản đồ và zoom in vàzoom out.
2.3.1.1 MapFragment
MapFragment là lớp con Fragment trong Android, cho phép đặt bản đồ Googletrong một Fragment của Android Các đối tượng MapFragment cung cấp các phươngthức truy cập vào GoogleMap
Không giống như một View, một Fragment là một hành vi hay một phần của giaodiện người dùng trong một Activity Nhiều Fragment có thể kết hợp trong mộtActivity để tạo một giao diện đa cửa sổ[26]
2.3.1.2 MapView
MapView là lớp con của View trong Android, cho phép đặt bản đồ Google trongmột View của Android View là một đại diện cho vùng chữ nhật trên màn hình là mộtkhối cơ bản để xây dựng giao diện Android và Widgets Các đối tượng Mapview cungcấp các phương thức truy cập vào GoogleMap
2.3.1.3 Các loại bản đồ
Google Maps Android API cung cấp bốn loại bản đồ:
các đối tượng tự nhiên quan trọng như: sông, hồ, … Đường bộ và tính năngnhãn cũng được hiển thị
tính năng nhãn cũng được hiển thị
nhãn Đường bộ và tính năng nhãn cũng được hiển thị
trống
2.3.1.4 Indoors Maps
Ở các mức độ zoom khác nhau, bản đồ có thể hiển thị mặt phẳng đáy cho cáckhông gian kiến trúc như: sân bay, trung tâm mua sắm, cửa hàng lớn, trạm trungchuyển,… Loại hiển thị này được áp dụng cho bản đồ loại Normal, sẽ được tự độngkích hoạt khi người dùng thay đổi mức độ zoom
Trang 31Mặt phẳng đáy được hiển thị trên bản đồ tại một thời điểm Mặc định sẽ là bản
đồ đầu tiên được bổ sung vào ứng dụng
2.3.2 Vẽ trên bản đồ
Google Maps Android API cung cấp chức năng thêm vào bản đồ các đối tượngsau:
cung cấp cho phép lắng nghe sự kiện tương tác của người dùng với Marker
tác động vào Markers Chỉ một Infor Wondow được phép hiển thị trong mộtthời điểm
một số cách đơn giản, để thêm các Shape vào bản đồ bao gồm: tập các đoạnthẳng giữa hai đường thẳng có ít nhất một đỉnh (Polyline) thường dùng đểđánh dấu đường và các tuyến đường, đa giác (Polygon) thường dùng để đánhdấu các khu vực trên bản đồ, hình tròn (Circle) là hình chiếu của hình tròntrên trái đất được vẽ trên bản đồ
Không giống Marker, Ground Overlays được định hướng với trái đất chứkhông phải màn hình
của các ô trên bản đồ cơ sở
2.3.3 Tương tác với bản đồ
Google Maps Android API cung cấp cách thức người dùng có thể tương tác với bảnđồ
có thể thấy ở ứng dụng Google Maps bao gồm: điều khiển zoom, la bàn, vịtrí hiện tại
của bản đồ khi người dùng tương tác như: phản hồi bằng cách zoom (với cáctương tác như: nhấp đúp, kéo bằng hai tương tác đồng thời,… ), phản hồibằng cách di chuyển điểm nhìn,
Trang 322.3.4 Dữ liệu về tọa độ
Các dữ liệu có sẵn của một thiết bị Android bao gồm vị trí hiện tại của thiết bị,Google API cho phép đồng bộ vị trí đó lên bản đồ Google Play services Location APIcho phép: xác định vị trí thiết bị, lắng nghe sự thay đổi của vị trí, xác định phươngthức vẩn chuyển, tạo và giám sát các khu vực địa lý trước
2.3.5 Thay đổi góc nhìn
Google Maps Android API v2 có thể nghiêng, xoay góc và di chuyển điểm nhìnbản đồ, tạo cho người dùng khả năng định hướng một cách dễ dàng dù là ở mức độzoom nào
2.4 Hệ quản trị cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở được sử dụng nhiềuthứ hai trên thế giới được phát triển bởi MySQL AB MySQL là miễn phí nằm ở vị trítrung tâm trong nhóm LAMP cho ứng dụng web mã nguồn mở (Linux-Apache-MySQl-Pearl/PHP/Python) Vì MySQL ổn định và dễ sử dụng, có tính khả chuyển,hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích mãnh
mẽ, MySQL có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL vì thế
mà MySQL được sử dụng và hỗ trợ của những lập trình viên yêu thích mã nguồn mở MySQL là một hệ cơ sở dữ liệu quan hệ, dữ liệu được lưu trữ trong nó theo cácbảng riêng biệt và giữa các bảng được liên kết với nhau theo các mối quan hệ xác địnhchứ không đưa dữ liệu vào một khối chung Cách lưu trữ như vậy làm tăng thêm tốc
độ và tính linh hoạt Giao dịch trong MySQL được thực hiện tuân theo mô hình ACID,cho phép đánh chỉ mục, hỗ trợ các kiểu dữ liệu chuẩn, cho phép thực hiện replicationdatabase,… Với các đặc tính như vậy, hệ quản trị cơ sở dữ liệu quan hệ MySQL thíchhợp trong các mô hình và giải pháp thương mại điện tử
MySQL được viết bằng ngôn ngữ C/C++ và được sử dụng trên nhiều hệ điềuhành khác nhau như: AIX, BSDi, FreeBSD, HP-UX, eComStation, i5/OS, IRIX,Linux, OS X, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD,OpenSolaris, OS/2 Warp, QNX, Oracle Solaris, Symbian, … Hầu hết các ngôn ngữ lậptrình đều hỗ trợ các API để thao tác với MySQL như: Connector/Net của Microsoft'sVisual Studio , JDBC cho java, …
MySQL bao gồm các lớp bảo mật dữ liệu vững chắc để bảo vệ dữ liệu nhạy cảm
từ những kể xâm nhập Thêm vào đó, tính mở rộng là rất quan trọng với hệ quản trị cơ
Trang 33hạn kích thước tập tin (file) mặc định là 4GB tuy nhiên, chúng ta có thể tăng co số nàylên đến 8TB.[26] Và cuối cùng, MySQL có khả năng quản lý bộ nhớ tốt, máy chủ củaMySQL thường xuyên được kiểm tra kĩ lưỡng để tránh việc rò rỉ bộ nhớ.
2.5 Cơ sở dữ liệu nhúng SQLite
Được giới thiệu để giúp các ứng dụng quản lý dữ liệu của mình thuận tiện hơn,SQLite là một bộ thư viện dùng trong lập trình để hiện thực một SQL Database Engine
có khả năng tự tổ chức quản lý dữ liệu, không cần server mà thực hiện đọc ghi vào filetrực tiếp, không cần cấu hình mà vẫn hỗ trợ đầy đủ các tính năng quản lý giao tác.SQLite là SQL Database Engine nhúg mã nguồn mở theo mô hình dữ liệu quan hệđang được sử dụng nhiều nhất trên thế giới do tính cơ động cao, dễ sử dụng, gọn nhẹ,hiệu quả và tin cậy
SQLite là một thư viện nhỏ gọn kích thước tối đa là 500 KB, tùy thuộc vào nềntảng hướng đến mà thiết lập để tối ưu hóa trình biên dịch Nếu các tính năng tùy chọnđược bỏ qua, kích thước tối đa của SQLite là 300 KB, hơn nữa nó được thiết kế đểchạy chiếm một khoảng nhỏ trong không gian stack và rất nhỏ trong heap Chính vìvậy, SQLite là công củ cơ sợ dữ liệu phổ biến trên các bộ nhớ hạn chế các tiện íchnhư: điện thoại di động, máy nghe nhạc MP3, … Lưu ý, bộ nhớ cấp phát càng nhiềuthì Sqlite có tốc độ càng lớn, nhưng không có nghĩa là tốc độ của nó không chấp nhậnđược trong môi trường bộ nhớ hạn chế.[28]
SQLite có thể làm việc với cơ sở dữ liệu lên đến hằng TetraByte, và hầu hết cácthao tác trên dữ liệu thông thường đều chạy nhanh hơn các hệ cơ sỡ dữ liệu theo môhình client-server phổ biến khác Và hơn nữa nó có khả năng tổ chức lưu trữ mà khôngphải phụ thuộc vào các thư viện bên ngoài Đây là một đặc điểm khá quan trọng khiếnSQLite trở thành CSDL phù hợp để nhúng vào các thiết bị di động hoặc tích hợp vàocác ứng dụng muốn chạy mà không cần phải điều chỉnh cấu hình hệ thống
Ngoài ứng dụng như một định dạng tập tin vào các ứng dụng và làm cơ sở dữliệu cho các thiết bị điện tử SQLite còn có thể sử dụng làm cơ sở dữ liệu cho cácwebsite vì SQLite không cần phải cấu hình và dữ liệu được lưu trữ thành các tập tintrên đĩa thật sự nên nó đang trở thành lựa chọn phổ biến cho các website vừa và nhỏ
Mỗi phiên bản SQLite được kiểm tra cẩn thận trước khi công bố cho nên Sqliterất đáng tin cậy Giao dịch trong SQLite được thực hiện tuân theo mô hình ACID và
nó vẫn tuân thủ ACID trong trường hợp có sự cố hệ thống hay mất điện Đương nhiên,điều đó không có nghĩa là SQLite không tồn tại lỗi
Trang 34Hiển nhiên, các đặc điểm tạo nên các ưu điểm của SQLite là con dao hai lưỡi làmcho SQLite có các hạn chế sau:
- Kết nối mạng: SQLite không có máy chủ, biện pháp là chia sẻ thông quanetwork file systems Hệ thống này có độ trễ nhất định điều này làm ảnhhưởng đến hiệu xuất của SQLite Mặt khác, khi sử dụng điều này lỗ hổng anninh là có thể xảy ra vì: các tập tin truyền đi có thể bị mở và điều chỉnh từ xa
- Chỉ phù hợp với các ứng dụng quy mô nhỏ: SQLite không phải là lựa chọnthích hợp cho các loại dữ liệu lớn và được cập nhập một cách liên tục
- Tính đồng thời: SQLite cho phép đọc đồng thời nhưng chỉ một người có thểđược ghi trong một thời điểm