Tải bản đầy đủ (.pdf) (82 trang)

Xây dựng ứng dụng gọi xe nha trang trên thiết bị di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.44 MB, 82 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN VĂN BÉ

XÂY DỰNG ỨNG DỤNG “GỌI XE NHA TRANG”
TRÊN THIẾT BỊ DI ĐỘNG

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công nghệ thông tin

Nha Trang – 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN VĂN BÉ

XÂY DỰNG ỨNG DỤNG “GỌI XE NHA TRANG”
TRÊN THIẾT BỊ DI ĐỘNG

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Ngành: Công nghệ thông tin

CÁN BỘ HƯỚNG DẪN:
ThS. TRẦN MINH VĂN

Nha Trang – 2016




LỜI MỞ ĐẦU
Ngày nay, việc sử dụng điện thoại thông minh là rất phổ biến trên toàn thế
giới. Nhiều công ty phần mềm lớn và các doanh nghiệp khởi nghiệp đã tận dụng tính
di động của điện thoại thông minh cùng với những lợi thế của các hệ điều hành như
iOS, Android… để cho ra đời những sản phẩm ứng dụng mới lạ như: Uber và Grab
với các ứng dụng đặt xe và mô hình đi nhờ xe/quá giang để tiết kiệm chi phí; hay
ShipS với mô hình giao hàng dành cho những người nhàn rỗi muốn kiếm thêm thu
nhập ngoài công việc chính.
Với mục đích tiếp cận các mô hình mới này, cũng như để học hỏi các kiến
thức mới và cách để tạo ra một ứng dụng như vậy, tôi đã thực hiện đề tài “Xây dựng
ứng dụng ‘Gọi Xe Nha Trang’ trên thiết bị di động”. Phần mềm sẽ được viết bằng
ngôn ngữ Java, sử dụng công cụ phát triển Android Studio và được phát triển trên
nền tảng Android 4.0.3. Ngoài ra, kết hợp phần mềm sẽ là một Web Service được
phát triển dựa trên ngôn ngữ PHP và sử dụng Yii Framework.
Phần mềm “Gọi Xe Nha Trang” sẽ giúp kết nối những người sử dụng ứng
dụng với những người lái xe để có thể gọi và đặt xe khi nào muốn di chuyển từ một
địa điểm đến địa điểm khác với mức cước phí rẻ hơn phí đi bằng các phương tiện
khác như taxi, và cùng với đó là sự tiện lợi và nhanh chóng. Phần mềm sẽ giúp cho
những người nhàn rỗi, mà đặc biệt là những người lái xe thồ, có thêm thu nhập ngoài
công việc chính của mình.
Tôi xin chân thành cảm ơn thầy Trần Minh Văn, giảng viên bộ môn Hệ thống
thông tin, thuộc khoa Công nghệ thông tin, trường Đại học Nha Trang đã tận tình
hướng dẫn và giúp đỡ để tôi có thể hoàn thành đề tài này. Vì là lần đầu tiên xây dựng
một ứng dụng Android, nên phần mềm sẽ còn nhiều thiếu sót. Vì vậy rất mong nhận
được nhiều sự góp ý từ các thầy cô để phần mềm có thể hoàn thiện hơn.
Sinh viên thực hiện
Nguyễn Văn Bé



MỤC LỤC
CHƯƠNG 1. TỔNG QUAN .................................................................................... 1
1.1 Đặt vấn đề ........................................................................................................ 1
1.2 Mục tiêu của đề tài ......................................................................................... 1
1.3 Nội dung cơ bản .............................................................................................. 1
CHƯƠNG 2. GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ANDROID ............................ 3
2.1 Android là gì? ................................................................................................. 3
2.2 Lịch sử Android .............................................................................................. 3
2.3 Các phiên bản Android .................................................................................. 5
2.3.1 Android 1.0 – 9/2008 ................................................................................. 5
2.3.2 Android 1.1 – 2/2009 ................................................................................. 5
2.3.3 Android 1.5 (Cupcake) – 4/2009 ............................................................... 6
2.3.4 Android 1.6 (Donut) – 9/2009 ................................................................... 7
2.3.5 Android 2.0 / 2.1 (Éclair) – 9/2009 ........................................................... 7
2.3.6 Android 2.2 (Froyo) – 5/2010 .................................................................... 8
2.3.7 Android 2.3 (Gingerbread) – 12/2010 ....................................................... 8
2.3.8 Android 3.0 (Honeycomb) – 2/2011.......................................................... 9
2.3.9 Android 4.0 (Ice Cream Sandwich) – 10/2011 .......................................... 9
2.3.10 Android 4.1 / 4.2 / 4.3 (Jelly Bean) – 7/2012 ........................................ 10
2.3.11 Android 4.4 (Kitkat) – 10/2013 ............................................................. 10
2.3.12 Android 5.0 (Lollipop) – 11/2014 ......................................................... 11
2.3.13 Android 6.0 (Marshmallow) – 10/2015 ................................................. 11
2.3.14 Android N Developer Preview 3 – 5/2016 ............................................ 12
2.4 Thị phần của Android so với các nền tảng di động khác ......................... 12
2.5 Kiến trúc của hệ điều hành Android .......................................................... 12
2.5.1 Nhân Linux (Linux Kernel) ..................................................................... 13
2.5.2 Thư viện Android (Android Libraries) và Android Runtime .................. 13
2.5.3 Khung ứng dụng (Application Framework) ............................................ 15
2.5.4 Ứng dụng (Applications) ......................................................................... 15

2.6 Đại cương về lập trình ứng dụng cho Android .......................................... 15
2.6.1 Thành phần của Ứng dụng ....................................................................... 16
2.6.2 Kích hoạt Thành phần .............................................................................. 20
2.6.3 Tệp Bản kê khai ....................................................................................... 21
CHƯƠNG 3. GIỚI THIỆU VỀ RESTFUL WEB SERVICE ............................ 22


3.1 Service là gì? ................................................................................................. 22
3.2 Web service là gì? ......................................................................................... 22
3.2.1 Một vài định nghĩa về Web service ......................................................... 22
3.2.2 Đặc điểm của Web service ...................................................................... 23
3.2.3 Ưu và nhược điểm của Web service ........................................................ 24
3.2.4 Các kiến trúc của Web service................................................................. 25
3.2.5 Các loại Web service ............................................................................... 25
3.3 Big web service .............................................................................................. 26
3.3.1 Giới thiệu ................................................................................................. 26
3.3.2 Cách thức hoạt động ................................................................................ 26
3.3.3 Các thành phần ........................................................................................ 26
3.3.3.1 WSDL – Web Service Description Language .................................. 26
3.3.3.2 UDDI – Universal Description, Discovery, and Integration ............ 27
3.3.3.3 SOAP – Simple Object Access Protocol .......................................... 28
3.3.4 Khi nào sử dụng Big web service? .......................................................... 28
3.4 RESTful web service .................................................................................... 29
3.4.1 REST là gì? .............................................................................................. 29
3.4.2 Các ràng buộc của REST ......................................................................... 29
3.4.2.1 Client-Server ..................................................................................... 29
3.4.2.2 Stateless ............................................................................................. 29
3.4.2.3 Cache ................................................................................................. 30
3.4.2.4 Uniform Interface .............................................................................. 30
3.4.2.5 Layered System ................................................................................. 31

3.4.2.6 Code-On-Demand ............................................................................. 31
3.4.3 Các ràng buộc giao diện trong hệ thống REST ....................................... 31
3.4.3.1 Tài nguyên và định danh tài nguyên ................................................. 31
3.4.3.2 Đại diện và điều khiển tài nguyên qua các đại diện .......................... 31
3.4.3.3 Các thông điệp tự mô tả .................................................................... 32
3.4.3.4 Hypermedia as the engine of application state (HATEOAS) ........... 32
3.4.4 Lợi ích của RESTful web service ............................................................ 34
3.4.5 Một vài khẳng định về REST để tránh các quan niệm sai lầm ................ 34
3.4.5.1 REST không phụ thuộc vào giao thức bất kỳ nào ............................ 34
3.4.5.2 REST không ánh xạ CRUD với các phương thức của HTTP........... 35
3.4.5.3 REST sẽ không phải là REST nếu không có HATEOAS ................. 35
3.4.5.4 REST không thể so sánh trực tiếp với SOAP ................................... 35


CHƯƠNG 4. GOOGLE MAPS, GOOGLE MAPS APIS VÀ CÁC DỊCH VỤ
CỦA GOOGLE ...................................................................................................... 36
4.1 Giới thiệu về Google Maps .......................................................................... 36
4.2 Giới thiệu về Google Maps APIs ................................................................. 36
4.3 Google Maps Android API .......................................................................... 37
4.4 Google Maps APIs Web Services ................................................................ 38
4.4.1 Giới thiệu ................................................................................................. 38
4.4.2 Sử dụng Google Maps Web services ....................................................... 38
4.4.3 Giới thiệu về Google Maps Directions API ............................................ 38
4.4.4 Giới thiệu về Google Maps Geocoding API............................................ 39
4.4.5 Giới thiệu về Google Places API Web Service ....................................... 39
4.5 Giới thiệu về Google Cloud Messaging ...................................................... 40
4.5.1 Google Cloud Messaging là gì? ............................................................... 40
4.5.2 Các tính năng của Google Cloud Messaging........................................... 40
4.5.3 Dòng tiến trình của Google Cloud Messaging ........................................ 42
CHƯƠNG 5. XÂY DỰNG ỨNG DỤNG .............................................................. 44

5.1 Phân tích thiết kế hệ thống .......................................................................... 44
5.1.1 Hiện trạng của ứng dụng .......................................................................... 44
5.1.2 Mục tiêu của ứng dụng ............................................................................ 44
5.1.3 Những lợi thế của ứng dụng so với các ứng dụng khác .......................... 45
5.1.4 Đặc tả hệ thống ........................................................................................ 45
5.1.5 Mô hình thực thể liên kết mở rộng (EER diagram) ................................. 47
5.2 Giới thiệu về ứng dụng ................................................................................. 53
5.2.1 Giới thiệu về Web service của ứng dụng và trang quản lý ...................... 53
5.2.2 Giới thiệu về ứng dụng “Gọi Xe Nha Trang” dành cho khách hàng ....... 57
5.2.3 Giới thiệu về ứng dụng “Gọi Xe Driver” dành cho người lái xe ............. 64
CHƯƠNG 6. KẾT LUẬN ...................................................................................... 71
6.1 Ưu điểm và khuyết điểm của các ứng dụng đã xây dựng ......................... 71
6.1.1 Ưu điểm ................................................................................................... 71
6.1.2 Khuyết điểm............................................................................................. 71
6.1.3 Hướng khắc phục trong tương lai ............................................................ 71
6.2 Các kết quả đã đạt được .............................................................................. 72


DANH MỤC CÁC BẢNG
Bảng 5.1: Chi tiết bảng user ..................................................................................... 48
Bảng 5.2: Chi tiết bảng driver .................................................................................. 48
Bảng 5.3: Chi tiết bảng fee....................................................................................... 49
Bảng 5.4: Chi tiết bảng vehicle_producer ................................................................ 50
Bảng 5.5: Chi tiết bảng vehicle ................................................................................ 50
Bảng 5.6: Chi tiết bảng order ................................................................................... 50
Bảng 5.7: Chi tiết bảng favorite ............................................................................... 51
Bảng 5.8: Chi tiết bảng rating .................................................................................. 52


DANH MỤC HÌNH ẢNH

Hình 2.1: Hình ảnh biểu trưng của hệ điều hành Android ......................................... 3
Hình 2.2: HTC G1 – Chiếc điện thoại chạy Android đầu tiên ................................... 6
Hình 2.3: Hình biểu tượng Android 1.5 ..................................................................... 6
Hình 2.4: Hình biểu tượng Android 1.6 ..................................................................... 7
Hình 2.5: Hình biểu tượng Android 2.0 – 2.1 ............................................................ 7
Hình 2.6: Hình biểu tượng Android 2.2 ..................................................................... 8
Hình 2.7: Hình biểu tượng Android 2.3 ..................................................................... 8
Hình 2.8: Hình biểu tượng Android 3.0 ..................................................................... 9
Hình 2.9: Hình biểu tượng Android 4.0 ..................................................................... 9
Hình 2.10: Hình biểu tượng Android 4.1 / 4.2 / 4.3 ................................................. 10
Hình 2.11: Hình biểu tượng Android 4.4 ................................................................. 10
Hình 2.12: Hình biểu tượng Android 5.0 ................................................................. 11
Hình 2.13: Hình biểu tượng Android 6.0 ................................................................. 11
Hình 2.14: Thị phần các nền tảng di động toàn cầu quý 1/2016 ............................. 12
Hình 2.15: Kiến trúc 4 lớp của Android .................................................................. 13
Hình 3.1: Kiến trúc của Big web service ................................................................. 26
Hình 3.2: HATEOAS trong Twitter API ................................................................. 33
Hình 3.3: Các hành động có thể có trong trang đấu giá eBay ................................. 33
Hình 3.4: HATEOAS trong eBay API ..................................................................... 34
Hình 4.1: Các tính năng của Google Cloud Messaging ........................................... 40
Hình 4.2: Dòng tiến trình của Google Cloud Messaging ......................................... 42
Hình 5.1: Mô hình thực thể liên kết mở rộng .......................................................... 47
Hình 5.2: Giao diện trang quản trị ........................................................................... 53
Hình 5.3: Giao diện khi vừa mở ứng dụng .............................................................. 58
Hình 5.4: Giao diện đăng nhập và đăng ký .............................................................. 58
Hình 5.5: Giao diện chính của ứng dụng ................................................................. 59
Hình 5.6: Giao diện sau khi nhấn PICKUP ............................................................. 59
Hình 5.7: Giao diện tìm kiếm địa điểm .................................................................... 60
Hình 5.8: Giao diện kết quả tìm đường đi và người lái xe ...................................... 61
Hình 5.9: Thông tin chi tiết của người lái xe ........................................................... 62

Hình 5.10: Giao diện xem vị trí người lái xe theo thời gian thực ............................ 62
Hình 5.11: Giao diện sau khi hoàn tất chuyến đi ..................................................... 63


Hình 5.12: Giao diện lịch sử đặt xe và danh sách yêu thích .................................... 64
Hình 5.13: Giao diện ban đầu của “Gọi Xe Driver” ................................................ 65
Hình 5.14: Giao diện đăng nhập của ứng dụng ........................................................ 65
Hình 5.15: Giao diện màn hình chính của ứng dụng ............................................... 66
Hình 5.16: Chi tiết thu nhập trong một ngày ........................................................... 67
Hình 5.17: Thông báo xuất hiện khi có đơn hàng mới ............................................ 68
Hình 5.18: Giao diện chi tiết đơn đặt hàng .............................................................. 68
Hình 5.19: Giao diện khi người lái xe chấp nhận đơn hàng .................................... 69
Hình 5.20: Thống kê đã được làm mới sau khi hoàn tất đơn hàng .......................... 70


1

CHƯƠNG 1

TỔNG QUAN
1.1 Đặt vấn đề
Hiện nay trên địa bàn thành phố Nha Trang vẫn còn rất nhiều người lái xe thồ
đang hoạt động. Nhiều người lái xe thồ thường chỉ ngồi tại một ví trí cố định để chờ
khách đến, cũng có nhiều người lái xe thồ đi dọc quanh các con đường lớn của thành
phố để tìm kiếm khách hàng bằng cách chào gọi. Có thể thấy cả hai phương pháp này
hoặc khá kém hiệu quả hoặc tốn chi phí tiền xăng cho việc chạy lòng vòng để tìm
khách hàng.
Bên cạnh đó, cũng có một bộ phận sinh viên muốn kiếm thêm thu nhập sau
giờ học chính để trang trải tiền học phí và chi phí sinh hoạt hàng ngày. Hầu hết sinh
viên đều làm thêm với những nghề như gia sư, phục vụ quán cà phê, tiếp thị… Thế

nhưng do những nghề này phải làm theo giờ cố định, có khi tối muộn mới có thể về
đến nhà khiến họ gặp nhiều khó khăn trong việc sắp xếp lịch học.
Vì vậy, để giải quyết vấn đề này cần có một ứng dụng giúp cho những người
lái xe thồ có thể dễ dàng có thêm được khách hàng, cũng như giúp cho những bạn
sinh viên có thể kiếm thêm thu nhập mà vẫn chủ động về thời gian. Đó là lý do ứng
dụng “Gọi Xe Nha Trang” được phát triển.
1.2 Mục tiêu của đề tài
 Rèn luyện kỹ năng về lập trình ứng dụng: cơ sở dữ liệu, web service, lập trình
thiết bị di động Android.
 Viết chương trình ứng dụng cộng đồng giúp kết nối người lái xe thồ và khách
hàng trên địa bàn thành phố Nha Trang thông qua thiết bị di động.
1.3 Nội dung cơ bản
Về lý thuyết:
 Tìm hiểu về phân tích thiết kế hệ thống thông tin.
 Tìm hiểu về lập trình cơ sở dữ liệu.
 Tìm hiểu về xây dựng ứng dụng Web Service RESTful.
 Tìm hiểu về xây dựng ứng dụng trên thiết bị di động Android.
 Tìm hiểu về dịch vụ Google Maps.


2

Về cài đặt, thực nghiệm:
Xây dựng ứng dụng cộng đồng kết nối người lái xe và khách hàng tại thành
phố Nha Trang trên thiết bị di động có các tính năng sau:
 Xây dựng cơ sở dữ liệu quản lý thông tin về người lái xe.
 Khách hàng có thể tìm kiếm người lái xe thông qua bản đồ, gọi xe.
 Tính toán khoảng cách di chuyển, cước phí.
 Người lái xe xác định khách hàng qua bản đồ.



3

CHƯƠNG 2

GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ANDROID

Hình 2.1: Hình ảnh biểu trưng của hệ điều hành Android

2.1 Android là gì?
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính
bảng. Không những thế, hiện nay hệ điều hành Android còn được các nhà sản xuất
tùy chỉnh nó để cài đặt được trên các Smart TV (Ti vi thông minh), máy chơi game,
các thiết bị điện tử khác…
2.2 Lịch sử Android
Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto,
California vào tháng 10 năm 2003 bởi Andy Rubin (đồng sáng lập công ty Danger),
Rich Miner (đồng sáng lập Tổng công ty Viễn thông Wildfire), Nick Sears (từng là
Phó giám đốc T-Mobile), và Chris White (trưởng thiết kế và phát triển giao diện tại
WebTV) để phát triển, theo lời của Rubin, "các thiết bị di động thông minh hơn có
thể biết được vị trí và sở thích của người dùng". Mục đích ban đầu của công ty là phát
triển một hệ điều hành nâng cao cho các thiết bị máy ảnh số. Nhưng khi nhận ra rằng
thị trường cho các thiết bị này không đủ lớn, công ty đã chuyển hướng sang sản xuất
một hệ điều hành cho điện thoại thông minh, đối đầu với hai hệ điều hành lớn lúc này
là Symbian và Microsoft Windows Mobile. Mặc dù những người thành lập và nhân


4


viên đều là những người có tiếng tăm, Tổng công ty Android hoạt động một cách âm
thầm, chỉ tiết lộ rằng họ đang làm phần mềm dành cho điện thoại di động. Trong năm
đó, Rubin hết kinh phí. Steve Perlman, một người bạn thân của Rubin, mang cho ông
10.000 USD tiền mặt nhưng từ chối tham gia vào công ty.
Google mua lại Tổng công ty Android vào ngày 17 tháng 8 năm 2005 với giá
50 triệu USD, biến nó thành một bộ phận trực thuộc Google. Những nhân viên của
chủ chốt của Tổng công ty Android, gồm Rubin, Miner và White, vẫn tiếp tục ở lại
công ty làm việc sau thương vụ này. Vào thời điểm đó không có nhiều thông tin về
Tổng công ty, nhưng nhiều người đồn đoán rằng Google dự tính tham gia thị
trường điện thoại di động sau bước đi này. Tại Google, nhóm do Rubin đứng đầu đã
phát triển một nền tảng thiết bị di động phát triển trên nền nhân Linux. Google quảng
bá nền tảng này cho các nhà sản xuất điện thoại và các nhà mạng với lời hứa sẽ cung
cấp một hệ thống uyển chuyển và có khả năng nâng cấp. Google đã liên hệ với hàng
loạt hãng phần cứng cũng như đối tác phần mềm, bắn tin cho các nhà mạng rằng họ
sẵn sàng hợp tác với các cấp độ khác nhau.
Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di
động xuất hiện trong tháng 12 năm 2006. Tin tức của BBC và Nhật báo phố Wall
(The Wall Street Journal) chú thích rằng Google muốn đưa công nghệ tìm kiếm và
các ứng dụng của họ vào điện thoại di động và họ đang nỗ lực làm việc để thực hiện
điều này. Các phương tiện truyền thông truyền thống lẫn online cũng viết về tin đồn
rằng Google đang phát triển một thiết bị cầm tay mang thương hiệu Google. Một vài
tờ báo còn nói rằng trong khi Google vẫn đang thực hiện những bản mô tả kỹ thuật
chi tiết, họ đã trình diễn sản phẩm mẫu cho các nhà sản xuất điện thoại di động và
nhà mạng. Tháng 9 năm 2007, InformationWeek (một tạp chí số có trụ sở tại
California) đăng tải một nghiên cứu của Evalueserve cho biết Google đã nộp một số
đơn xin cấp bằng sáng chế trong lĩnh vực điện thoại di động.
Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở (Open Handset
Alliance), một hiệp hội bao gồm nhiều công ty trong đó có Texas Instruments, Tập
đoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Nvidia,
Motorola, Qualcomm, Samsung Electronics, Sprint Nextel và T-Mobile được thành

lập với mục đích phát triển các tiêu chuẩn mở cho thiết bị di động. Cùng ngày,


5

Android cũng được ra mắt với vai trò là sản phẩm đầu tiên của Liên minh, một nền
tảng thiết bị di động được xây dựng trên nhân Linux phiên bản 2.6. Chiếc điện thoại
chạy Android đầu tiên được bán ra là HTC Dream (hay còn gọi là T-Mobile G1),
phát hành ngày 22 tháng 10 năm 2008.
Từ tháng 10 năm 2008, hệ điều hành Android đã chính thức trở thành phần
mềm mã nguồn mở. Theo đó, các công ty thứ ba được phép thêm những ứng dụng
của riêng của họ vào Android và bán chúng mà không cần phải hỏi ý kiến Google.
Với mục đích là hệ điều hành Linux dành cho di động (LiMO), Google Android mong
muốn mang lại điều tương tự ở phạm vi rộng lớn và thống nhất hơn, và qua đó thu
hút một lượng khách hàng không nhỏ trong tương lai. Kết quả là Liên minh OHA ra
mắt gói phát triển phần mềm Android SDK cho nhà lập trình vào ngày 12 tháng 11
năm 2008.
2.3 Các phiên bản Android
Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến hệ
điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát hành trước.
Phiên bản đầu tiên của hệ điều hành Android 1.0 ra đời vào ngày 23 tháng 9 năm
2008 và phiên bản nâng cấp 1.1 sau đó vào ngày 9 tháng 2 năm 2009 không có tên
gọi chính thức. Về sau, những phiên bản tiếp theo ra đời với tên gọi được đặt tên theo
một món ăn tráng miệng, với vần đầu là các chữ cái theo thứ tự trong bảng Alphabet.
2.3.1 Android 1.0 – 9/2008
Thiết bị nổi bật: HTC G1 (hay HTC Dream)
 Tích hợp chặt chẽ với các ứng dụng của Google như Gmail và YouTube.
 Kho ứng dụng Android Market phiên bản thử nghiệm Beta ra mắt, nhưng
chỉ có khoảng 35 ứng dụng.
 Thanh thông báo kéo từ trên xuống và các widget (tiện ích) trên màn hình

chính.
2.3.2 Android 1.1 – 2/2009
 Tính năng cập nhật qua mạng OTA (Over The Air).


6

Hình 2.2: HTC G1 – Chiếc điện thoại chạy Android đầu tiên
2.3.3 Android 1.5 (Cupcake) – 4/2009

Hình 2.3: Hình biểu tượng Android 1.5
Thiết bị nổi bật: HTC myTouch 3G (hay HTC Magic)
 Bản phím ảo trên màn hình lần đầu tiên xuất hiện.
 Lần đầu tiên hỗ trợ khả năng quay phim.
 Cải tiến Widget: kho ứng dụng widget phong phú và đa dạng hơn.


7

2.3.4 Android 1.6 (Donut) – 9/2009

Hình 2.4: Hình biểu tượng Android 1.6
 Hỗ trợ mạng CDMA.
 Lần đầu hỗ trợ nhiều độ phân giải màn hình.
2.3.5 Android 2.0 / 2.1 (Éclair) – 9/2009

Hình 2.5: Hình biểu tượng Android 2.0 – 2.1
Thiết bị nổi bật: Motorola DROID, HTC Nexus One
 Hỗ trợ nhiều tài khoản người dùng: lần đầu tiên, nhiều tài khoản Google
có thể được đăng nhập trên cùng một thiết bị Android.

 Hình nền động (Live Wallpaper).
 Cải tiến bàn phím ảo, hỗ trợ HTML5 cho trình duyệt, hỗ trợ Bluetooth 2.1.


8

2.3.6 Android 2.2 (Froyo) – 5/2010

Hình 2.6: Hình biểu tượng Android 2.2
Thiết bị nổi bật: Motorola DROID 2
 Xuất hiện tính năng trạm phát Wifi (Wifi Hotspot).
 Trình duyệt được thêm engine Chrome V8 JavaScript và được hỗ trợ
Adobe Flash.
2.3.7 Android 2.3 (Gingerbread) – 12/2010

Hình 2.7: Hình biểu tượng Android 2.3
Thiết bị nổi bật: Samsung Nexus S
 Bàn phím ảo được cải thiện để nâng cao độ chính xác và tốc độ gõ.
 Chức năng sao chép và dán được cải thiện với hai thanh chặn văn bản giúp
việc chọn một hay nhiều từ trở nên tiện lợi.
 Lần đầu tiên hỗ trợ chuẩn trao đổi dữ liệu không dây NFC (near-field
communication).
 Hỗ trợ camera trước, có công cụ quản lý pin và ứng dụng rất hiệu quả.


9

2.3.8 Android 3.0 (Honeycomb) – 2/2011

Hình 2.8: Hình biểu tượng Android 3.0

Thiết bị nổi bật: Motorola Xoom
 Phiên bản tối ưu cho máy tính bảng.
 Thiết kế giao diện người dùng mới được gọi là “Holographic”.
2.3.9 Android 4.0 (Ice Cream Sandwich) – 10/2011

Hình 2.9: Hình biểu tượng Android 4.0
Thiết bị nổi bật: Samsung Galaxy Nexus
 Hợp nhất hệ điều hành dành cho điện thoại thông minh và máy tính bảng
làm một.
 Hỗ trợ bộ font mới tên là Roboto, hệ thống thông báo (notification) bổ sung
tính năng trượt ngang để xóa, …


10

2.3.10 Android 4.1 / 4.2 / 4.3 (Jelly Bean) – 7/2012

Hình 2.10: Hình biểu tượng Android 4.1 / 4.2 / 4.3
Thiết bị nổi bật: Asus Nexus 7, LG Nexus 4, Samsung Nexus 10
 Project Butter: giúp cải thiện rất nhiều hiệu năng cảm ứng và tốc độ xử lý
độ họa trên điện thoại và máy tính bảng.
 Google Now với khả năng điều khiển bằng giọng nói hoạt động không cần
kết nối mạng Wifi hay 3G.
 Chức năng Daydream hiển thị thông tin khi điện thoại ở chế độ màn hình
khóa.
2.3.11 Android 4.4 (Kitkat) – 10/2013

Hình 2.11: Hình biểu tượng Android 4.4
Thiết bị nổi bật: LG Nexus 5
 Hỗ trợ chế độ toàn màn hình, hiệu ứng chuyển cảnh màn hình, …

 Ứng dụng nhắn tin truyền thống được gộp chung với ứng dụng nhắn tin và
liên lạc online Hangouts.


11

2.3.12 Android 5.0 (Lollipop) – 11/2014

Hình 2.12: Hình biểu tượng Android 5.0
Thiết bị nổi bật: Motorola Nexus 6
 Thiết kế “Material” mới.
 Hệ thống thông báo thêm tính năng báo nhắc bằng cách nhảy ra (pop up)
mà không can thiệp vào những gì bạn đang xem hoặc đang thao tác trên
màn hình.
 Hỗ trợ chip 64 bit.
 Hỗ trợ chụp ảnh với định dạng RAW.
2.3.13 Android 6.0 (Marshmallow) – 10/2015

Hình 2.13: Hình biểu tượng Android 6.0
Thiết bị nổi bật: LG Nexus 5X, Huawei Nexus 6P
 Google Now on Tap: có khả năng quét chữ trên màn hình hiện tại và đưa
ra các đề xuất tương ứng.
 Hỏi quyền sử dụng permission chỉ khi cần thiết, tắt bật từng permission
riêng lẻ.
 Chính thức hỗ trợ cảm biến vân tay và USB Type-C.
 Hệ thống sao chép, cắt dán văn bản thay đổi: trình đơn (menu) xuất hiện
trực tiếp trên văn bản đã chọn.


12


 DOZE: tính năng giúp giám sát thiết bị và điều chỉnh hoạt động ứng dụng
cho phù hợp để tăng tuổi thọ pin.
2.3.14 Android N Developer Preview 3 – 5/2016


Instant Apps: Trải nghiệm ứng dụng nhanh kể cả khi chưa cài ứng dụng.



Đa nhiệm đa cửa sổ.



Trả lời ngay trên thanh thông báo.



Hỗ trợ Java 8, Unicode 9.

2.4 Thị phần của Android so với các nền tảng di động khác
Theo báo cáo mới nhất về doanh số điện thoại thông minh trong Quý 1/2016,
Android chiếm đến 84.1% thị phần. Như vây, Android là hệ điều hành chiếm thị phần
cao nhất trong các nền tảng thiết bị điện thoại thông minh, tiếp theo là iOS, Windows
Phone, …

Hình 2.14: Thị phần các nền tảng di động toàn cầu quý 1/2016
2.5 Kiến trúc của hệ điều hành Android
Hệ điều hành Android là một ngăn xếp của các thành phần ứng dụng (stack of
software components), có thể chia thành 5 phần và 4 lớp như trong sơ đồ kiến trúc

Android trong hình 2.15:


13

Hình 2.15: Kiến trúc 4 lớp của Android

2.5.1 Nhân Linux (Linux Kernel)
Nằm ở tầng dưới cùng là lớp Linux kernel - Linux 3.6 với khoảng 115 bản vá
lỗi. Lớp này liên hệ với phần cứng và nó chứa tất cả driver phần cứng cần thiết như
camera, bàn phím, màn hình…
2.5.2 Thư viện Android (Android Libraries) và Android Runtime
Phía trên tầng Linux kernel là tầng Libraries, chứa những thư viện hỗ trợ. Một
số có thể kể đến như là bộ máy trình duyệt web mã nguồn mở WebKit, thư viện libc,
cơ sở dữ liệu SQLite tiện lợi cho việc lưu trữ và chia sẻ dữ liệu, thư viện hỗ trợ thu
phát âm thanh và video, thư viện SSL giúp bảo mật mạng…


14

Tầng này chứa tất cả các thư viện Java, được viết đặc biệt cho Android như
các thư viện framework, các thư viện xây dựng giao diện, đồ họa và cơ sở dữ liệu.
Dưới đây là một số thư viện quan trọng mà các lập trình viên nên biết:
 android.app - Cung cấp quyền truy cập tới mô hình ứng dụng và là nền
tảng của mọi ứng dụng Android applications.
 android.content - Cho phép truy cập nội dung, phát hành và tin nhắn
giữa các ứng dụng và các thành phần trong một ứng dung.
 android.database - Được dùng để truy cập vào dữ liệu được đưa ra bởi
bộ phận cung cấp nội dung, bao gồm các lớp quản lý cơ sở dữ liệu
SQLite.

 android.opengl - Cho phép tương tác với thư viện đồ họa OpenGL ES
3D.
 android.os - Giúp ứng dụng truy cập những dịch vụ cơ bản của hệ điều
hành bao gồm tin nhắn, dịch vụ hệ thống và liên lạc nội bộ (interprocess communication).
 android.text - Được dùng để vẽ và thao tác văn bản trên màn hình.
 android.view - Các khối xây dựng cơ bản của giao diện người dùng.
 android.widget - Một tập hợp rất nhiều thành phần giao diện được xây
dựng sẵn như nút bấm (button), nhãn (label), danh sách hiển thị (list
views), quản lý bố cục (layout managers)…
 android.webkit - Tập hợp các lớp (classes) cho phép trình duyệt web
được nhúng vào ứng dụng.
Trong tầng này còn có một phần không kém phần quan trọng là Android
Runtime. Android Runtime chứa Dalvik Virtual Machine (DVM) - một biến thể của
Java Virtual Machine (Máy ảo Java), đặc biệt thiết kế và tối ưu hóa cho Android.
DVM giúp mỗi ứng dụng Android chạy trong chính tiến trình (process) của nó với
một đại diện (instance) của DVM. Ngoài ra, Android Runtime cũng chứa tập hợp các
thư viện quan trong cho phép người lập trình viết ứng dụng sử dụng ngôn ngữ lập
trình Java.


15

2.5.3 Khung ứng dụng (Application Framework)
Application Framework cung cấp nhiều dịch vụ cấp cao dưới dạng các lớp viết
bằng Java (Java classes). Lập trình viên được phép sử dụng các lớp này để tạo ra các
ứng dụng.
Android Framework chứa các dịch vụ quan trọng như:
 Activity Manager - Quản lý tất cả các phần của vòng đời (lifecycle)
ứng dụng và các hoạt động ngăn xếp (activity stack).
 Content Providers - Cho phép ứng dụng phát hành và chia sẻ dữ liệu

với ứng dụng khác.
 Resource Manager - Cho phép truy cập tới những tài nguyên không
phải là mã nguồn như chuỗi, cài đặt màu, bố cục giao diện.
 Notifications Manager - Giúp ứng dụng hiển thị thông báo và nhắc nhở
người dùng.
 View System - Một tập hợp mở rộng giúp tạo giao diện người dùng.
2.5.4 Ứng dụng (Applications)
Ở tầng trên cùng là các ứng dụng Android để tương tác với người dùng. Các
ứng dụng này có thể là ứng dụng đi kèm với hệ điều hành như Danh bạ, Trình duyệt
web, Games… hay các ứng dụng do lập trình viên và bên thứ ba phát triển.
2.6 Đại cương về lập trình ứng dụng cho Android
Ứng dụng Android được viết bằng ngôn ngữ lập trình Java. Bộ công cụ SDK
Android sẽ biên dịch mã của bạn - cùng với bất kỳ tệp dữ liệu và tài nguyên nào vào một APK: một gói Android, đó là một tệp lưu trữ có hậu tố .apk. Một tệp APK
chứa tất cả nội dung của một ứng dụng Android và là tệp mà các thiết bị dựa trên nền
tảng Android sử dụng để cài đặt ứng dụng.
Sau khi được cài đặt lên một thiết bị, từng ứng dụng Android sẽ ở bên trong
hộp cát bảo mật1 của chính nó:
 Hệ điều hành Android là một hệ thống Linux đa người dùng trong đó mỗi
ứng dụng là một người dùng khác nhau.
Sandbox: là một kỹ thuật nhằm ngăn chăn các phần mềm độc hại, giúp bảo vệ hệ thống cũng như tránh bị
đánh cắp các thông tin cá nhân.
1


16

 Theo mặc định, hệ thống gán cho từng ứng dụng một ID người dùng Linux
duy nhất (ID chỉ được sử dụng bởi hệ thống và không xác định đối với ứng
dụng). Hệ thống sẽ đặt quyền cho tất cả tệp trong một ứng dụng sao cho
chỉ ID người dùng được gán cho ứng dụng đó mới có thể truy cập chúng.

 Mỗi tiến trình có máy ảo (VM) riêng của mình, vì thế mã của một ứng
dụng sẽ chạy độc lập với các ứng dụng khác.
 Theo mặc định, mọi ứng dụng chạy trong tiến trình Linux của chính nó.
Android khởi động tiến trình khi bất kỳ thành phần nào của ứng dụng cần
được thực thi, sau đó tắt tiến trình khi không còn cần nữa hoặc khi hệ thống
phải khôi phục bộ nhớ cho các ứng dụng khác.
Bằng cách này, hệ thống Android triển khai nguyên tắc đặc quyền ít nhất. Cụ
thể, theo mặc định, mỗi ứng dụng chỉ có thể truy cập vào các thành phần mà nó cần
để thực hiện công việc của mình và không hơn. Điều này tạo ra một môi trường rất
bảo mật mà trong đó một ứng dụng không thể truy cập các bộ phận của hệ thống mà
nó không được cấp quyền.
Tuy nhiên, có nhiều cách để một ứng dụng chia sẻ dữ liệu với các ứng dụng
khác và để một ứng dụng truy cập vào các dịch vụ của hệ thống:
 Có thể sắp xếp để hai ứng dụng chia sẻ cùng ID người dùng Linux, trong
trường hợp đó chúng có thể truy cập các tệp của nhau. Để tiết kiệm tài
nguyên của hệ thống, các ứng dụng có cùng ID người dùng cũng có thể
sắp xếp để chạy trong cùng tiến trình Linux và chia sẻ cùng VM (các ứng
dụng cũng phải được ký bằng cùng chứng chỉ).
 Một ứng dụng có thể yêu cầu quyền truy cập dữ liệu của thiết bị chẳng hạn
như danh bạ của người dùng, tin nhắn SMS, thiết bị lưu trữ gắn được (thẻ
SD), máy ảnh, Bluetooth và nhiều nữa. Tất cả quyền ứng dụng đều phải
được cấp bởi người dùng tại thời điểm cài đặt.
Đó là cách mà một ứng dụng Android tồn tại trong hệ thống.
2.6.1 Thành phần của Ứng dụng
Thành phần của ứng dụng là những khối dựng thiết yếu của một ứng dụng
Android. Mỗi thành phần là một điểm khác nhau mà qua đó hệ thống có thể vào ứng


×