ĐẠ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
I
ĐẠ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
II
VIETNAM 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
III
TÓ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ày
cà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 thanh
toá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ận trì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ộc
và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ên
nền tảng Struts2”[31]. Phần thứ hai là phía máy khách dưới dạng ứng dụng Android
cũ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ác
nhau. Ứ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ách
hà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ết
quả 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ộc
phầ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ài
khoả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ên
nề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.
IV
ABSTRACT
Summary: 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 thesis
indicate the part of building user management system in bus service.
The system include two basic part. The first part is server which provides web
services for database interaction. It is a part of another thesis [31]. The second part is
client which was two Android application. It’s main content of this thesis.
This thesis indicate two Android application which is built to solve two different
problems. User management application in bus service is create towards bus customer
management, 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 bus
service is build toward support bus customer. This application prodive user
information, payments and a map which show current location of buses, bus stop. That
map 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.
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át
triể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ết
trong 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ịu
trá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
Hà Nội, ngày tháng năm
Sinh viên
Quan Tuấn Vũ
VI
LỜI CẢM ƠN
Khóa luận tốt nghiệp được hoàn thành tại Đại học Công Nghệ - Đại học Quốc
Gia Hà Nội. Có được kết quả của khóa luận tốt nghiệp này, tôi xin bày tỏ lòng biết ơn
chân thành và sâu sắc đến Đại học Công Nghệ - Đại học Quốc Gia Hà Nội, đặc biệt là
thầy giáo Nguyễn Ngọc Hóa đã nhiệt tình chỉ bảo hướng dẫn, dìu dắt, giúp đỡ và đóng
góp những ý kiến quý báu cho tôi để hoàn thành khóa luận tốt nghiệp này.
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ôi
trong 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 tuy
nhiê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à Nội, ngày 14 tháng 5 năm 2014
Sinh viên
học, đọc giả và các bạn.
Xin chân thành cảm ơn!
Quan Tuấn Vũ
VII
MỤC LỤC
Contents
TÓM TẮT NỘI DUNG..........................................................................................iv
ABSTRACT.............................................................................................................v
LỜI CAM ĐOAN...................................................................................................vi
LỜI CẢM ƠN........................................................................................................vii
MỤC LỤC.............................................................................................................viii
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...............................................................3
2.1. Tổng quan về Android..................................................................................3
2.1.1. Giới thiệu chung.....................................................................................3
2.1.2. Một số đặc điểm của Android................................................................3
2.1.3. Kiến trúc Android..................................................................................5
2.1.4. Các thành phần chính trong một ứng dụng Android:............................6
2.2. Giới thiệu về công nghệ NFC và Android NFC API...................................7
2.2.1. Giới thiệu về Công nghệ NFC...............................................................7
2.2.2. Android NFC API................................................................................10
2.3. Google Maps Android API.........................................................................15
2.3.1. Các đối tượng Map..............................................................................16
2.3.2. Vẽ trên bản đồ......................................................................................17
2.3.3. Tương tác với bản đồ...........................................................................18
2.3.4. Dữ liệu về tọa độ..................................................................................18
2.3.5. Thay đổi góc nhìn................................................................................18
VIII
2.4. Hệ quản trị cơ sở dữ liệu MySQL..............................................................19
2.5. Cơ sở dữ liệu nhúng SQLite ......................................................................19
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG..............................................................22
3.1. Mô hình hệ thống........................................................................................22
3.2. Phân tích và xác định yêu cầu.....................................................................24
3.2.1. Ứng dụng quản lý người dùng dịch vụ xe buýt...................................24
3.2.2. Ứng dụng hỗ trợ người dùng dịch vụ xe buýt ....................................33
3.3. Thiết kế........................................................................................................39
3.3.1. Kiến trúc ứng dụng..............................................................................39
3.3.2. Xác định gói thiết kế............................................................................39
3.3.3. Thiết kế cho từng ca sử dụng...............................................................40
3.3.4. Thiết kế giao diện.................................................................................45
CHƯƠNG 4: THỰC NGHIỆM.............................................................................48
4.1. Môi trường thực nghiệm.............................................................................48
4.1.1. Cấu hình thiết bị...................................................................................48
4.1.2. Các công cụ phần mềm........................................................................49
4.2. Kết quả thực nghiệm...................................................................................49
4.3. Đánh giá và hướng phát triển......................................................................50
CHƯƠNG 5: KẾT LUẬN.....................................................................................51
TÀI LIỆU THAM KHẢO......................................................................................52
Tiếng Anh...........................................................................................................52
Tiếng Việt...........................................................................................................53
IX
BẢNG DANH MỤC TỪ VIẾT TẮT
NFC
Near field communication
HCE
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 HÌNH VẼ
XII
DANH MỤC BẢNG BIỂU
XIII
CHƯƠ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ới
quy 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ác
nghà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 con
ngườ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ần
tí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ậy
dị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
chuyển của toàn thành phố. Ước tính, trung bình mỗi ngày xe buýt vận hành trê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.000
lượ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ần
thiế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 ứng
củ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 thanh
toá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ười
dù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át
thanh 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. Trong
phạ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 xe
buý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 ra
trước hết là cách để định danh duy nhất một người sử dụng duy nhất. Cách định danh
phổ 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ấp
phá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
1
hiệ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ùng
dị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ều
thời gian, khó có thể thống kê và có thể dễ dàng làm giả. Vậy cách để định danh người
dù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ụng
thô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áy
chủ 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ụ xe
buýt sẽ là trung gian giao tiếp giữa thẻ từ NFC định danh người dùng và dịch vụ web
thẩ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ải
quyế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ác
trạ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
áp dụng để thực hiện hệ thống.
Chương 3 - Xây dựng hệ thống: Trình bày về mô hình của hệ thống, cấu trúc và
cách giải quyết của từng phần của hệ thống.
Chương 4 – Thực nghiệm: Trình bày về cách sử dụng hệ thống, những kết quả đã
đạt được. Đánh giá và trình bày hướng phát triển tiếp theo của hệ thống.
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.
2
CHƯƠ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ện
thoạ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ên
nhân Linux. Nó bao gồm giao diện cảm ứng, widgets, camera, … và tập các chức năng
cầ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 cho
phép người dùng có thể phát triển, cài đặt và sử dụng ứng dụng của họ. Android
FrameWork đượ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ều
hà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.
2.1.2.1. Tính mở
Android là một hệ điều hành mã nguồn mở, có thể tự do mở rộng để kết hợp
thêm các công nghệ mới.
Android được xây dựng trên cơ sở cho phép các nhà phát triển tạo ra các ứng
dụng di động dựa trên toàn bộ chức năng mà di động có. Ví dụ như, ứng dụng có thể
thực hiện các chức năng cốt lõi của điện thoại như: thực hiện cuộc gọi, gửi tin nhắn
văn bản hoặc sử dụng máy ảnh,… Điều này cho phép các nhà phát triển tạo ra các ứng
dụng mang đến sự trải nghiệm phong phú và gần gũi với người dùng.
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ôi
trường di động.
3
Android 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ản
chỉ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ển
bở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ỉnh
thiết bị theo cách họ mong muốn. Ví dụ như, cài đặt bất cứ ứng dụng nào, thay đổi
mà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ụng
mớ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ụng
cố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át
triể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ên
QEMU, 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át
triển tích hợp (IDE) được hỗ trợ chính thức là Eclipse sử dụng phần bổ sung Android
Development Tools (ADT). Các công cụ phát triển khác cũng có sẵn, gồm có Bộ phát
triể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++, Google
App Inventor, một môi trường đồ họa cho những nhà lập trình mới bắt đầu, và nhiều
nề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ện
năng. Khi một ứng dụng Android không còn được sử dụng, hệ thống sẽ tự động ngưng
hoạ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
4
thiết. Điều này giúp cho Android tăng khả năng đáp ứng người dùng (ứng dụng cần
khở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ên
cò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 khi
cà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 ứng
dụ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-code
resources.
o Notification Manager - cho phép tất cả các ứng dụng hiển thị thông
bá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ẽ được
các developer phát triển ứng dụng android thông qua tầng Android
Framework. Có thể kể ra đây một số thư viện quen thuộc với các lập trình
viên như: Media Libraries, Surface Manager, LibWebCore, ….
Tầng bốn: Nhân Linux.
5
Hì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:
-
Activity: là một thành phần của ứng dụng cung cấp một giao diện mà người
-
dùng có thể tương tác vào đó để thực hiện một hành động nào đó.
Service: là một thành phần chạy ngầm trong Android và không có giao diện.
-
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.
Broadcast Receiver(BR): là thành phần để thu nhận các Intent thông báo từ hệ
-
điều hành (pin yếu, có sms, có cuộc gọi đến..) hoặc từ chính trong ứng dụng
của chúng ta. BR cũng không có giao diện người dùng.
Content Provider: cho phép ứng dụng truy suất, chỉnh sửa và chia sẻ dữ liệu
riêng với nhau.
6
-
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ặc
cung cấp một BR.
App Widgets: là một ứng dụng nhỏ có thể được nhúng trong các ứng dụng
-
khác và được cập nhập một cách định kỳ.
Processes và Threads.
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ác
thiế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ột
chiề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 hai
chiề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ụng
NFC để bật Bluetooth ở cả hai thiết bị và tự động tăt Bluetooth khi kết thực hiện xong
mộ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 cho
Bluetooth.[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ại
thẻ tín dụng và thẻ điện tử thông minh.Như Google Wallet cho phép người tiêu dùng
lư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ới
thiết bị đọc thẻ chấp nhận giao dịch Master Card PayPass.[4] Germany[5], Austria[6],
Finland[7], New Zealand[8] , Italy[9], Iran[10] và Turkey[11] đã có hệ thống vé NFC
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 ít
hơ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ục
tiê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
cấ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ản
7
như : thẻ, thẻ dán, thẻ không cần pin. Nếu cả hai đối tượng đều chủ động thì cả hai
thiế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ác
vù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 NFC
pear-to-pear có thể kích hoạt khi hai thiết bị NFC đang bật.[3] Năng lượng RF tập
trung 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ấp
trong 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ện thoạ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ượng
thấ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ết
nố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ới
khoả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ẩn
ECMA. 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ần
thiế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ẩn
ISO/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).
GSMA: 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.
8
Nhiều tổ chức trong đó đã thực nghiệm công nghệ NFC trên toàn thế giới và đang
chuẩ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ác
thiế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 200
triệ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ởi
NXP 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ưng
công nghệ NFC không đảm bảo thông tin liên lạc được an toàn. Năm 2006, Ernst
Haselsteiner và Klemens Breitfuß đã liệt kê các loại tấn công có thể xảy ra khi sử dụng
thẻ NFC [20]. NFC không cung cấp phòng chống việc nghe trộm thông tin và dễ bị tổn
thươ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 bao
gồm:
-
-
-
Nghe trộm: Tín hiệu RF trong giao tiếp không dây có thể bắt được bằng ăng
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]
Sửa đổi dữ liệu: Có thể dễ dàng phá hủy dữ liệu bằng sóng nhiễu. Không có
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ếu
thiết bị NFC kiểm tra vùng RF trong khi đang gửi dữ liệu thì nó có thể phát
hiện dược các cuộc tấn công.
Tấn công chuyển tiếp: Các thiết bị NFC bao gồm các chuẩn giao thức ISO /
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ấn
cô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
và 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”.
9
-
-
Mất tài sản: Mất thẻ RFID, NFC sẽ cung cấp cho người tìm thấy mọi thông
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ý.
Walk-off : Sau khi mở quyền truy cập vào một chức năng, hoặc dữ liệu NFC,
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ấn
cô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ác
phức tạp với mã thực thi trên thẻ. Dữ liệu trong thẻ NFC thường có chung một định
dạng khung, hầu hết Android NFC API được xây dựng trên chuẩn NDEF (NFC Data
Exchange Format) của diễn đàn NFC. Thiết bị Android hỗ trợ NFC với ba chế độ
chính:
-
Chế độ đọc/ ghi. Cho phép thiết bị đọc và ghi các thẻ, thẻ dán NFC bị động.
Chế độ P2P. Cho phép các thiết bị NFC trao đổi dữ liệu thông qua chức năng
Android Beam.
Chế độ giả lập thẻ. Cho phép thiết bị Android hoạt động như một thẻ NFC.
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ân
loạ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:
-
Phân tích thẻ NFC và tìm ra định dạng MIME hoặc URI.
Đóng gói hai định dạng trên vào một intent.
Bắt đầu một hoạt động dựa trên intent.
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ản
ghi ( NdefRecord ). Mỗi NdefRecord phải được hình thành theo các đặc điểm kỹ thuật
của loại bản ghi. Khi thiết bị Android quét một thẻ NFC chứa dữ liệu định dạng
NDEF. 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ên
10
trong 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:
-
3-bit TNF: tên của loại định dạng.
Variable length type: lưu giữ loại của bản ghi.
Variable length ID: định danh cho bản ghi.
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 intent
ACTION_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ạng
MIME hay URI hoặc dữ liệu không bắt đầu với kiểu cấu trúc NDEF). Trong trường
hợ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 intent
ACTION_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:
-
ACTION_NDEF_DISCOVERED: intent này nhằm kích hoạt các Activity khi
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.
- ACTION_TECH_DISCOVERED: nếu không có Activity nào đăng kí xử lý
intent ACTION_NDEF_DISCOVERED: hệ thống công văn thẻ sẽ cố gắng
kích hoạt ứng dụng đăng ký xử dụng loại thẻ này. Intent này cũng được kích
hoạt đầu tiên, nếu thẻ quét được không chứa kiểu dữ liệu NDEF.
- ACTION_TAG_DISCOVERED nếu không có Activity nào đăng kí xử lý
ACTION_NDEF_DISCOVERED và ACTION_TECH_DISCOVERED
intent 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).
- Nếu không có Activity nào được kích hoạt, kích hoạt Activity với độ ưu tiên
thấp
nhất
(ACTION_TECH_DISCOVERED
hoặc
ACTION_TAG_DISCOVERED).
- Nếu không ứng dụng nào được kích hoạt. Thì không làm gì.
11
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:
-
EXTRA_TAG: Đối tượng thẻ (tag) đại diện cho thẻ được quét.
EXTRA_NDEF_MESSAGE: Một mảng các NdefMessage phân tích được
từ thẻ ( thành phần bắt buộc có trong intents).
EXTRA_ID: định danh cấp thấp của thẻ.
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ác
NdefRecord 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ột
NdefRecord. 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ếu
khô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ề.
AAR được sử dụng để ngăn các ứng dụng khác cùng xử lý một itent mà lập trình
viê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:
12