BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC CÔNG NGHỆ TP.HCM
LẬP TRÌNH
TRÊN THIẾT BỊ DI ĐỘNG
Biên Soạn:
ThS. Nguyễn Hà Giang
www.hutech.edu.vn
LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
Ấn bản 2014
MỤC LỤC
I
MỤC LỤC
MỤC LỤC ...................................................................................................................I
HƯỚNG DẪN ............................................................................................................. V
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG ....................................... 1
1.1 THIẾT BỊ DI ĐỘNG .............................................................................................. 1
1.1.1 Nền tảng Android ............................................................................................ 2
1.1.2 Nền tảng iOS .................................................................................................. 3
1.1.3 Nền tảng Windows Phone ................................................................................. 4
2.2 ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG ................................................................... 4
1.1.4 Native Application ........................................................................................... 5
1.1.5 Mobile Web Application .................................................................................... 6
1.1.6 Hybrid Application ........................................................................................... 7
1.1.7 Chọn lựa giữa Native, Web hay Hybrid ............................................................... 8
TÓM TẮT .................................................................................................................. 9
BÀI TẬP ................................................................................................................... 9
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID ........................................................ 10
2.1 HỆ ĐIỀU HÀNH ANDROID ................................................................................. 10
2.1.1 Đặc điểm cơ bản ........................................................................................... 10
2.1.2 Giao diện ..................................................................................................... 11
2.1.3 Ứng dụng ..................................................................................................... 12
2.1.4 Kiến trúc ...................................................................................................... 13
2.1.5 Quản lý bộ nhớ ............................................................................................. 15
2.1.6 Các phiên bản Android ................................................................................... 15
2.1.7 Các thiết bị khác dùng Android........................................................................ 16
2.2 PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID ........................................................... 17
2.2.1 Nền tảng xây dựng và phát triển ứng dụng Android ........................................... 18
2.2.2 Công cụ và môi trường để phát triển ứng dụng trên Android ............................... 19
2.2.3 Các bước chuẩn bị môi trường phát triển ứng dụng ............................................ 20
2.3 QUY TRÌNH PHÁT TRIỂN ỨNG DỤNG ANDROID ................................................. 23
2.3.1 Giai đoạn phát triển ....................................................................................... 25
2.3.2 Giai đoạn build & run ứng dụng Android ........................................................... 27
2.3.3 Giai đoạn publish .......................................................................................... 30
2.4 CÁC THÀNH PHẦN TRONG ỨNG DỤNG ANDROID ............................................... 31
2.4.1 Activity ........................................................................................................ 31
2.4.2 Service ........................................................................................................ 31
2.4.3 Content provider ........................................................................................... 32
2.4.4 Broadcast receiver......................................................................................... 32
2.4.5 Đối tượng Intent ........................................................................................... 33
TÓM TẮT ................................................................................................................ 35
II
MỤC LỤC
BÀI TẬP ................................................................................................................. 35
BÀI 3: XÂY DỰNG ACTIVITY ...................................................................................... 36
3.1 ĐẶC ĐIỂM ACTIVITY ......................................................................................... 36
3.2 VÒNG ĐỜI HOẠT ĐỘNG..................................................................................... 36
3.2.1 Tiến trình hoạt động của ứng dụng Android .......................................................36
3.2.2 Activity stack .................................................................................................38
3.2.3 Vòng đời hoạt động của Activity .......................................................................39
3.3 XÂY DỰNG ACTIVITY ........................................................................................ 40
3.3.1 Tạo ứng dụng Android với Activity ....................................................................40
3.3.2 Các thành phần trong cấu trúc project Android ..................................................44
3.3.3 Làm việc với resource .....................................................................................50
3.4 XỬ LÝ SỰ KIỆN ................................................................................................. 55
3.4.1 Đăng ký xử lý sự kiện thông qua anonymous inner class .....................................57
3.4.2 Đăng ký thông qua lớp Activity thực thi giao diện Listener ...................................61
3.4.3 Đăng ký thông qua XML Layout ........................................................................62
TÓM TẮT ................................................................................................................ 65
BÀI TẬP ................................................................................................................. 66
BÀI 4: THIẾT KẾ GIAO DIỆN ...................................................................................... 67
4.1 TỔ CHỨC GIAO DIỆN ......................................................................................... 67
4.2 THIẾT KẾ GIAO DIỆN QUA XML ......................................................................... 70
4.3 CÁC THUỘC TÍNH XML CƠ BẢN .......................................................................... 72
4.4 ANDROIDMANIFEST.XML ................................................................................. 76
4.5 RESOURCE VÀ R.JAVA....................................................................................... 77
4.5.1 Resource .......................................................................................................77
4.5.2 Sử dụng resource trong mã chương trình (java code) .........................................78
4.5.3 Tham chiếu resource trong resource khác .........................................................79
4.5.4 Nhiều phiên bản của resource và tính năng localization .......................................80
4.5.5 Tập tin R.java ................................................................................................80
4.6 LINEARLAYOUT ................................................................................................ 82
4.7 ABSOLUTELAYOUT ........................................................................................... 85
4.8 RELATIVELAYOUT ............................................................................................ 87
4.9 TABLELAYOUT .................................................................................................. 89
4.10 FRAMELAYOUT ............................................................................................... 93
4.11 SCROLLVIEW.................................................................................................. 95
4.12 GRIDLAYOUT.................................................................................................. 97
TÓM TẮT .............................................................................................................. 105
BÀI TẬP ............................................................................................................... 106
BÀI 5: THÀNH PHẦN VIEW - WIDGET ...................................................................... 109
5.1 VIEW CƠ BẢN ................................................................................................. 109
5.2 VIEW NÂNG CAO ............................................................................................ 121
MỤC LỤC
III
5.3 TOAST VÀ DIALOG .......................................................................................... 138
TÓM TẮT .............................................................................................................. 142
BÀI TẬP ............................................................................................................... 142
BÀI 6: THÀNH PHẦN INTENT ................................................................................... 146
6.1 CƠ CHẾ INTENT .............................................................................................. 146
6.2 ĐỐI TƯỢNG INTENT ....................................................................................... 147
6.3 PHÂN LOẠI INTENT ........................................................................................ 149
6.3.1 Intent Filter ................................................................................................. 150
6.3.2 Cách thức xác định thành phần phù hợp với Intent ........................................... 151
6.4 SỬ DỤNG CÁC INTENT .................................................................................... 152
6.4.1 Explicit Intent thực thi Activity ....................................................................... 153
6.4.2 Implicit Intent thực thi Activity ....................................................................... 153
6.5 GỌI HIỂN THỊ ACTIVITY ................................................................................. 154
6.5.1 Gọi hiển thị không có trau đổi dữ liệu.............................................................. 154
6.5.2 Gọi hiển thị và truyền dữ liệu cho Activity con .................................................. 155
6.5.3 Gọi hiển thị và truyền/nhận dữ liệu với Activity con .......................................... 156
TÓM TẮT .............................................................................................................. 159
BÀI TẬP ............................................................................................................... 160
BÀI 7: LẬP TRÌNH SQLITE ....................................................................................... 161
7.1 CƠ SỞ DỮ LIỆU SQLITE ................................................................................... 161
7.1.1 Đặc trưng cơ bản của SQLite.......................................................................... 162
7.1.2 Lập trình với SQLite ...................................................................................... 162
7.1.3 Kiểu dữ liệu lưu trữ ....................................................................................... 163
7.1.4 Các lớp cơ bản trong gói SQLite ..................................................................... 164
7.1.5 Thư mục lưu trữ ........................................................................................... 165
7.2 ỨNG DỤNG MINH HỌA .................................................................................... 166
7.2.1 Tạo lớp kế thừa từ SQLiteOpenHelper ............................................................. 166
7.2.2 Tạo lớp chứa dữ liệu DTO là Student ............................................................... 167
7.2.3 Tạo lớp truy cập dữ liệu ................................................................................ 168
7.2.4 Thao tác insert dữ liệu .................................................................................. 171
7.2.5 Hiển thị danh sách sinh viên .......................................................................... 172
TÓM TẮT .............................................................................................................. 173
BÀI TẬP ............................................................................................................... 173
BÀI 8: ỨNG DỤNG SERVICE ..................................................................................... 175
8.1 THÀNH PHẦN SERVICE ................................................................................... 175
8.1.1 Vòng đời của Service .................................................................................... 176
8.1.2 Khuôn mẫu chung của lớp thực thi Service ...................................................... 177
8.2 ỨNG DỤNG CHƠI NHẠC ................................................................................... 179
TÓM TẮT .............................................................................................................. 184
BÀI TẬP ............................................................................................................... 185
IV
MỤC LỤC
BÀI 9: BROADCAST RECEIVER ................................................................................. 186
9.1 CƠ CHẾ BROADCAST RECEIVER ...................................................................... 186
9.1.1 Phân loại Broadcast ...................................................................................... 187
9.1.2 Tạo một broadcast receiver ........................................................................... 187
9.1.3 Đăng ký xử lý Broadcast Intent ...................................................................... 187
9.1.4 Một số các Broadcast Intent .......................................................................... 188
9.1.5 Phát sinh Custome Broadcast Intent ............................................................... 189
9.2 MINH HỌA BẮT VÀ HIỂN THỊ SMS ................................................................... 190
9.2.1 Cách thức bắt và xử lý SMS ........................................................................... 190
TÓM TẮT .............................................................................................................. 195
BÀI TẬP ............................................................................................................... 196
BÀI 10: THÀNH PHẦN NOTIFICATION ..................................................................... 197
10.1 THÀNH PHẦN NOTIFICATION ....................................................................... 197
10.2 THỂ HIỆN THÔNG ĐIỆP ................................................................................. 198
10.2.1 Dạng bình thường ....................................................................................... 198
10.2.2 Dạng lớn ................................................................................................... 199
10.3 TẠO THÔNG ĐIỆP ......................................................................................... 200
10.3.1 Các nội dung thông điệp bắt buộc ................................................................. 200
10.3.2 Hành động của thông điệp ........................................................................... 201
10.3.3 Tạo thông điệp đơn giản .............................................................................. 201
10.4 SỬ DỤNG THANH TIẾN ĐỘ ............................................................................ 202
10.4.1 Thanh tiến độ với thời gian xác định ............................................................. 202
10.4.2 Thanh chỉ dẫn liên tục ................................................................................. 203
TÓM TẮT .............................................................................................................. 205
BÀI TẬP ............................................................................................................... 205
TÀI LIỆU THAM KHẢO ........................................................................................... 206
HƯỚNG DẪN
V
HƯỚNG DẪN
MÔ TẢ MÔN HỌC
Môn học trang bị các kiến thức về cách thức phát triển ứng dụng trên nền tảng
thiết bị di động. Bao gồm các nhóm kiến thức: giới thiệu các nền tảng hay hệ điều
hành trên thiết bị di động, các công cụ và môi trường để phát triển ứng dụng trên
thiết bị di động thông minh.
NỘI DUNG MÔN HỌC
-
Bài 1. Tổng quan về lập trình trên thiết bị di động: Kiến thức cơ bản về thiết bị di
động và khái niệm cơ bản về môi trường và cách thức lập trình trên thiết bị di
động.
-
Bài 2. Phát triển ứng dụng trên Android: Cung cấp các kiến thức cơ bản về hệ điều
hành Android. Trình bày mô hình quy trình phát triển ứng dụng trên thiết bị di
động hỗ trợ Android. Ngoài ra giới thiệu các thành phần chính của một ứng dụng
Android điển hình.
-
Bài 3. Xây dựng Activity trong ứng dụng Android: Bài học cung cấp kiến thức để
xây dựng ứng dụng có giao diện tương tác với người dùng; cách thức hoạt động
của thành phần Activity trong ứng dụng Android. Làm quen với cách thức sử dụng
layout XML để khởi tạo giao diện của Activity.
-
Bài 4. Thiết kế giao diện: Trong bài này trình bày các loại layout cơ bản và nâng
cao để tạo giao diện cho Activity.
-
Bài 5. Thành phần View-Widget: Cung cấp các loại widget từ cơ bản đến nâng cao,
bao gồm chức năng, cách sử dụng trong thiết kế giao diện và cách tham chiếu để
lập trình trong mã nguồn Java.
-
Bài 6. Thành phần Intent: Bài này cung cấp kỹ thuật để truyền thông và giao tiếp
giữa các thành phần trong ứng dụng Android. Cách thức gọi hiển thị Activity trong
cùng một ứng dụng và gọi các ứng dụng hệ thống cũng được trình bày chi tiết
trong bài học.
VI
-
HƯỚNG DẪN
Bài 7. Lập trình với SQLite: Kỹ thuật để tạo và sử dụng cơ sở dữ liệu SQLite trong
ứng dụng Android.
-
Bài 8. Xây dựng ứng dụng Service: Cung cấp mô hình tổng quát để tạo ứng dụng
Android chạy background, là dạng ứng dụng khi hoạt động không có giao diện
tương tác với người dùng.
-
Bài 9. Lập trình Broadcast Receiver: Cung cấp kỹ thuật đăng ký xử lý các thông
điệp của hệ thống hay của ứng dụng.
-
Bài 10. Thành phần Notification: Cách thức sử dụng Notification trong ứng dụng
Android.
KIẾN THỨC TIỀN ĐỀ
Sinh viên có kiến thức về lập trình hướng đối tượng, lập trình có giao diện tương
tác với người dùng. Ngoài ra có kiến thức về cơ sở dữ liệu quan hệ và lập trình cơ sở
dữ liệu.
YÊU CẦU MÔN HỌC
Người học phải tham dự đầy đủ các buổi lên lớp và làm bài tập đầy đủ ở nhà.
Ngoài ra trước mỗi buổi học, người học phải đọc trước bài học trong bài giảng để nắm
các nội dung chính. Sau mỗi giờ lên lớp, người học cần đọc thêm tài liệu do giảng viên
trực tiếp đứng lớp yêu cầu. Do giới hạn của bài giảng không thể cung cấp hết và chi
tiết các thành phần trong lập trình Android, vì vậy yêu cầu người học cần phải đọc
thêm các tài liệu tham khảo liệt kê trong phần cuối của bài giảng.
CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC
Để học tốt môn này, người học cần ôn tập các bài đã học, trả lời các câu hỏi và
làm đầy đủ bài tập; đọc trước bài mới và tìm thêm các thông tin liên quan đến bài
học.
Đối với mỗi bài học, người học đọc trước mục tiêu và tóm tắt bài học, sau đó đọc
nội dung bài học. Kết thúc mỗi bài học người đọc cần phải làm tối thiểu các bài tập
yêu cầu.
HƯỚNG DẪN
VII
Ngoài ra đây là môn học trong đó có một số bài sẽ có phần thực hành là viết
chương trình, do đó người học cần phải làm những bài tập phần thực hành tương ứng
với những bài học.
PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC
Môn học được đánh giá gồm:
Điểm quá trình: 30%. Hình thức và nội dung do giảng viên quyết định, phù hợp với
quy chế đào tạo và tình hình thực tế tại nơi tổ chức học tập.
Điểm thi: 70%. Hình thức thi là báo cáo đồ án môn học.
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
1
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH
TRÊN THIẾT BỊ DI ĐỘNG
Học xong bài này người học cần nắm được các nội dung sau.
-
Tổng quan về các nền tảng trên thiết bị di động thông minh.
-
Các khái niệm cơ bản về phát triển các dạng ứng dụng trên thiết bị di động.
-
Phân biệt được thế nào là Native App, Web App, và Hybrid App trên các thiết bị di
động.
1.1 THIẾT BỊ DI ĐỘNG
Điện thoại di động thông minh hay còn gọi là smart phone thực sự đã mang đến
một cuộc cách mạng cho các thiết bị di động, trong thời kì mà công nghệ số phát
triển với tốc độ chóng mặt như hiện nay.
Nhu cầu sử dụng thiết bị di động đã trở nên rất phổ biến không chỉ ở Việt Nam mà
trên toàn thế giới. Sự tiến bộ vượt bậc của công nghệ đã làm thay đổi hoàn toàn thói
quen cũng như hành vi của con người trong cuộc sống. Chỉ với một chiếc smart phone
người ta có thể thỏa mãn hầu hết các nhu cầu cơ bản như: trò chuyện, gửi tin nhắn,
chơi game, nghe nhạc, lướt web, thanh toán… Thiết bị di động là phân khúc đã có
bước phát triển nhanh chóng trên thị trường. Theo nhiều cuộc nghiên cứu, đến năm
2015, số lượng truy cập Internet từ thiết bị di động sẽ vượt qua truy cập trên máy
tính cá nhân. Trong tương lai, thiết bị di động sẽ trở thành phương tiện giao tiếp và
làm việc chủ yếu của con người. Và phần cốt lõi để tạo ra sức hấp dẫn từ những chiếc
smart phone chính là hệ điều hành và các ứng dụng mà chúng đang chạy.
Do sự phát triển vượt bậc của thiết bị di động nên xu hướng hiện nay các công ty
phát triển phần mềm đã chuyển hướng sang phát triển phần mềm trên thiết bị di
2
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
động. Vì thế trong những năm gần đây nhu cầu nhân lực phát triển ứng dụng trên
thiết bị di động hay smart phone đang rất phát triển.
Hình 1.1: Điện thoại di động thông minh.
Như chúng ta đã biết hiện tại vào thời điểm quý tư năm 2013, có 3 nền tảng di
động đang được dùng khá phổ biến như: Android, iOS, Windows Phone. Theo khảo
sát của IDC vào quý 3 của 2013 thì bảng thị phần các hệ điều hành như sau:
Hình 1.2: Thị phần hệ điều hành di động
1.1.1 Nền tảng Android
Đây là nền tảng phát triển nhanh nhất hiện nay, chiếm thị phần lớn nhất. Đa dạng
về chủng loại và các thiết bị. Được rất nhiều hãng điện thoại lớn chọn để cài đặt cho
thiết bị như Samsung, LG, Sony, HTC…
Đây là hệ điều hành dựa trên nền tảng Linux, là mã nguồn mở do Google quản lý.
Android được tích hợp và hỗ trợ rất nhiều dịch vụ của Google. Các ứng dụng chạy trên
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
3
Android được cung cấp qua Google Play và có thể cài trực tiếp trên máy thông qua
tập tin nén .apk (ứng dụng được viết bằng Java cho Android).
Hình 1.3: Logo của Android.
1.1.2 Nền tảng iOS
iOS là hệ điều hành trên các thiết bị di động của
Apple. Ban đầu hệ điều hành này chỉ được phát triển để
chạy trên iPhone (gọi là iPhone OS), nhưng sau đó đã
được mở rộng để chạy trên các thiết bị của Apple như
iPod Touch, iPad và Apple TV. Ngày 31 tháng 5, 2011,
App Store của Apple chứa khoảng 500.000 ứng dụng
iOS, và được tải về tổng cộng khoảng 15 tỷ lần.
Hiện tại phiên bản iOS 7 được phát hành vào tháng
11/2013. Các thiết bị dùng iOS đều do Apple độc quyền
sản xuất. Các thiết bị dùng iOS luôn có thiết kế mượt
mà, đồ họa lôi cuốn nên luôn được giới công nghệ ưa
chuộng. Chính việc ra đời thiết bị iPhone dùng iOS và
App Store đã đi tiên phong và thúc đẩy việc phát triển
các ứng dụng dành cho các thiết bị di động. Như chúng
ta cũng biết các ứng dụng dành cho iOS được phân
phối đến người dùng thông qua App Store đều có chất
lượng cao, các ứng dụng này đều được kiểm duyệt
trước khi đến tay người dùng iOS.
Hình 1.4: Màn hình Home
Screen iOS 7.
4
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
1.1.3 Nền tảng Windows Phone
Windows Phone là hệ điều hành của Microsoft dành cho
smart phone kế tục nền tảng Windows Mobile, mặc dù chúng
không tương thích với nhau. Khác với Windows Mobile,
Windows Phone tập trung vào sự phát triển của Marketplace nơi các nhà phát triển có thể cung cấp sản phẩm (miễn phí
hoặc có phí) tới người dùng. Windows Phone được bán vào
tháng 10 năm 2010 và đầu năm 2011 tại Châu Á.
Phiên bản mới nhất hiện tại là Windows Phone 8. Microsoft
còn đang phát triển bản Windows Phone Apollo Plus, và trong
tương lai có thể còn có Windows Blue (hay có thể là Windows
9) giúp tương thích với hệ điều hành Windows trên máy tính.
Với Windows Phone, Microsoft đã phát triển giao diện người
dùng mới mang tên Modern (trước đây tên là Metro) - tích hợp
Hình 1.5: Home
Screen WP 8.
khả năng liên kết với các phần cứng và phần mềm của hãng
thứ ba một cách dễ dàng.
1.2 ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
Ngoài ứng dụng được cài đặt sẵn trên
thiết bị di động, thì còn các ứng dụng
được cài đặt thêm vào trong quá trình sử
dụng thiết bị di động. Các ứng dụng này
được bên thứ 3 cung cấp thông qua các
kho ứng dụng di động trên Internet. Mỗi
nền tảng di động sẽ có kho ứng dụng
riêng:
-
Android có Google Play
-
iOS có App Store
-
Windows Phone có Windows Phone
Store
Hình 1.6: Mobile Native – Web.
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
5
Các dạng ứng dụng cài đặt sẵn hay được cài đặt từ các cửa hàng ứng dụng như
trên được gọi là "Native application". Đây là dạng ứng dụng chính trên thiết bị di
động, ứng dụng này có nhiều tính năng mạnh mẽ do tận dụng được tối đa kiến trúc
cũng như là phần cứng của thiết bị.
Các ứng dụng dành cho thiết bị di động có thể chia thành ba dạng như sau:
-
Native application
-
Mobile web application
-
Hybrid application.
1.1.4 Native Application
Native application là dạng ứng dụng được cài đặt trong thiết bị và được truy cập
thông qua các biểu tượng trên màn hình Home Screen của thiết bị. Tùy theo nền tảng
cụ thể mà các ứng dụng này có thể được cài đặt. Ví dụ như ứng dụng iOS thì cài đặt
thông qua App Store của Apple, ứng dụng Android thì được cài đặt thông qua Google
Play. Các dạng ứng dụng này được phát triển chuyên dụng cho một nền tảng xác
định, chúng có thể tận dụng đầy đủ các đặc tính của phần cứng thiết bị; có thể sử
dụng camera, GPS, gia tốc kế, la bàn, danh sách các contact… Ngoài ra có thể sử
dụng hệ thống notification của thiết bị và có thể làm việc offline mà không cần phải
có kết nối đến Internet.
Ứng dụng Native được viết trên các ngôn ngữ đặc biệt hướng tới nền tảng di động
đó, ví dụ Objective-C cho iOS, Java cho Android. Nói chung là các ứng dụng này có
hiệu suất thực thi cao và có mức độ tin cậy cao. Tuy nhiên, kiểu ứng dụng này thì rất
bất tiện do được phát triển bó buộc với một nền tảng, nếu muốn phát triển trên nền
tảng khác thì nhà phát triển phải xây dựng một phiên bản khác và được mã hóa theo
ngôn ngữ phát triển ứng dụng trên nền tảng đó. Đa số các dạng game đồ họa cao đều
phát triển theo kiểu Native Application. Ví dụ như ứng dụng nổi tiếng Candy Crush có
các phiên bản khác nhau chạy trên iOS, Android và Windows Phone.
6
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
Hình 1.7: Ứng dụng Native
1.1.5 Mobile Web Application
Ứng dụng Web không thật sự là ứng dụng, chúng giống như trang Web theo nhiều
phương diện. Giao diện của chúng khá giống với Native Application, tuy nhiên lại chạy
trên nền của trình duyệt và thường được viết bằng HTML5. Người dùng truy cập lần
đầu tiên giống như việc truy cập trang Web bình thường: chuyển tới URL xác định và
sau đó có chức năng cài đặt vào màn hình Home Screen bằng cách tạo bookmark đến
trang đó.
Dạng ứng dụng này thật sự được phổ biến khi HTML5 xuất hiện và các nhà phát
triển nhận ra có thể tạo ra trang Web giống như ứng dụng Native và chạy trên trình
duyệt. Cách thể hiện của Web Application cũng làm người dùng khó phân biệt với
Native Application. Ví dụ như không xuất hiện các button và bar trong trình duyệt
Safari (truy cập từ iPhone). Người dùng có thể kéo ngang để di chuyển qua phần khác
của ứng dụng. Và do cơ chế caching của trình duyệt, có thể đọc được nội dung của
trang tin offline.
Các đặc tính cũng hỗ trợ trong HTML5, như GPS, gọi, camera. Tuy nhiên các tính
năng này cũng không có nhiều ứng dụng cho đến thời điểm này sử dụng. Vẫn còn
nhiều các tính năng Native mà HTML5 không truy cập được (tại thời điểm hiện tại)
như: notification, chạy nền, gia tốc kế.
Nói chung là vẫn còn đang tranh luận về việc có nên chọn Web app để phát triển
cho các ứng dụng trên di động hay không.
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
7
1.1.6 Hybrid Application
Ứng dụng này là sự kết hợp giữa Native và Web, một phần của ứng dụng là dạng
Native, một phần là dạng Web. Chính vì lý do này mà nhiều người nhầm lẫn là dạng
Web Application. Tương tự như Native Application, dạng này triển khai trong kho ứng
dụng và tận dụng các đặc tính của thiết bị. Giống như Web Application, dựa trên
HTML nên được thể hiện trong trình duyệt, thực tế là trình duyệt được nhúng trong
ứng dụng.
Thông thường, các công ty xây dựng các ứng dụng Hybrid như là dạng wrapper
của trang web đã có. Theo cách này, các ứng dụng sẽ có mặt trên kho ứng dụng mà
không cần phải tốn quá nhiều công sức khi phải xây dựng ứng dụng khác. Ứng dụng
hybrid cũng khá phổ biến do cho phép cross-platform. Các thành phần mã HTML có
thể được dùng lại trong các nền tảng di động khác nhau, do đó làm giảm chi phí trong
việc phát triển ứng dụng trên nhiều nền tảng khác nhau. Các công cụ như PhoneGap
hay Sencha Touch cho phép nhà phát triển xây dựng các mã cross-platform, tận dụng
sức mạnh của HTML.
Hình 1.8: Một ứng dụng Hybrid trên hai nền tảng.
8
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
1.1.7 Chọn lựa giữa Native, Web hay Hybrid
Mỗi dạng ứng dụng trong số ba kiểu trên đều có những ưu và khuyết riêng. Có thể
khảo sát theo các tiêu chí sau:
-
Đặc tính của thiết bị: mặc dù ứng dụng Web có thể truy cập một số đặc tính của
thiết bị nhưng chỉ hạn chế, trong khi đó ứng dụng Native và các thành phần Native
trong ứng dụng Hybrid có thể truy cập đầy đủ các đặc tính của thiết bị như GPS,
camera, gesture và notification.
-
Tốc độ thực thi: ứng dụng Native có tốc độ thực thi cao nhất.
-
Cài đặt: việc cài đặt một ứng dụng Native hay Hybrid là rào cản lớn cho người
dùng, họ phải lên kho ứng dụng để tải ứng dụng về và cài đặt. Trong khi với Web
Application thì đơn giản là bookmark lại trang Web trên màn hình Home Screen.
-
Duy trì ứng dụng: đối với ứng dụng Native thì việc duy trì không những khó cho
người dùng mà còn khó cho người phát triển ứng dụng, đặc biệt khi họ phải đối
mặt với nhiều phiên bản trên các nền tảng khác nhau. Các thay đổi sẽ phải đóng
gói lại trong phiên bản mới và đưa lên kho ứng dụng. Trong khi đó việc duy trì ứng
dụng Web hay Hybrid thì đơn giản như việc duy trì trang Web.
-
Giao diện người dùng: ứng dụng Native có ưu thế hơn hai ứng dụng kia về việc xây
dựng giao diện người dùng.
Nhìn chung, các loại ứng dụng đều có ưu và nhược, tùy theo yêu cầu cụ thể của
ứng dụng mà nhà phát triển có thể chọn cho mình kiểu ứng dụng thích hợp nhất.
BÀI 1: TỔNG QUAN VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
9
TÓM TẮT
Bài học giới thiệu tổng quan về thiết bị di động cá nhân, điển hình là điện thoại di
động và ngày nay thường được trang bị cấu hình mạnh nên được gọi là điện thoại
thông minh. Do thiết bị này hiện tại khá phổ biến nên việc phát triển ứng dụng trên
thiết bị này được yêu cầu khá nhiều. Bài học giới thiệu các hệ điều hành dành cho
thiết bị di động phổ biến hiện nay là Android, iOS và Windows Phone. Bài học cũng
giới thiệu các dạng ứng dụng cơ bản trên thiết bị di động thông minh. Mỗi loại ứng
dụng có ưu và khuyết điểm riêng, người lập trình cần phải phân biệt rõ để chọn lựa
kiểu ứng dụng thích hợp cho yêu cầu nhất.
BÀI TẬP
Câu 1: Hãy cho biết các nền tảng cho thiết bị di động thông minh hiện nay? Với mỗi
nền tảng hãy cho biết đặc điểm, ưu và khuyết điểm.
Câu 2: Hãy cho biết đặc điểm của ứng dụng Native? Liệt kê 5 ứng dụng dạng này mà
bạn biết?
Câu 3: Hãy cho biết đặc điểm của ứng dụng Mobile Web? Liệt kê các ứng dụng loại
này mà bạn biết?
Câu 4: Hãy cho biết đặc điểm của ứng dụng Hybrid? Cho biết một số các ứng dụng
loại này?
Câu 5: Hãy cho biết các đặc điểm cơ bản của nền tảng iOS?
Câu 6: Cho biết ngôn ngữ chính để phát triển ứng dụng trên nền iOS?
Câu 7: Hãy cho biết các đặc điểm cơ bản của nền tảng Windows Phone?
Câu 8: Cho biết ngôn ngữ và môi trường để phát triển ứng dụng trên Windows
Phone?
Câu 9: Hãy tìm hiểu các ngôn ngữ để phát triển ứng dụng Web?
10
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID
BÀI 2: PHÁT TRIỂN ỨNG DỤNG
TRÊN ANDROID
Học xong bài này người học cần nắm được các nội dung sau.
-
Kiến thức cơ bản hệ điều hành Android.
-
Các thành phần chính trong kiến trúc của nền tảng Android.
-
Quy trình phát triển của ứng dụng Android.
-
Công cụ và môi trường để phát triển ứng dụng Android.
-
Các thành phần chính của một ứng dụng Android.
2.1 HỆ ĐIỀU HÀNH ANDROID
2.1.1 Đặc điểm cơ bản
Android là hệ điều hành dựa trên nền tảng Linux và được thiết kế chuyên dành cho
các thiết bị di động có màn hình cảm ứng như: điện thoại di động thông minh (smart
phone), máy tính bảng (tablet) và thiết bị lai giữa smart phone – tablet (gọi là
phablet).
Ban đầu, Android được phát triển bởi Android, Inc., công ty này được Google hỗ
trợ tài trợ về tài chính, và Google chính thức mua lại vào năm 2005. Hệ điều hành
Android ra mắt vào năm 2007 cùng với việc thành lập liên minh thiết bị cầm tay mở
(Open Handset Alliance), đây là hiệp hội gồm các công ty phần cứng, phần mềm, và
viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở dành cho các thiết bị di động.
Chiếc điện thoại thông minh đầu tiên chạy Android được bán vào tháng 10 năm 2008.
Android là hệ điều hành mã nguồn mở, Google phát hành mã nguồn theo giấy
phép Apache. Chính vì mã nguồn mở cùng với giấy phép không có nhiều ràng buộc đã
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID
11
cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên trên toàn thế
giới tự do điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có
một cộng đồng lập trình viên đông đảo, mạnh mẽ chuyên viết các ứng dụng (giới lập
trình hay gọi tắt là "apps") để mở rộng chức năng của thiết bị. Ngôn ngữ lập trình
chính trên Android là loại ngôn ngữ Java đã có hiệu chỉnh dành riêng cho Android.
Chính vì lý do trên mà các ứng dụng dành cho Android được phát triển khá nhanh,
vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android. Số lượt tải ứng
dụng từ Google Play, nơi cung cấp ứng dụng Android, ước tính khoảng 25 tỷ lượt.
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ
biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty công
nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh,
và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu. Kết quả là mặc
dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên
TV, máy chơi game và các thiết bị điện tử khác. Bản chất mở của Android cũng khích
lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn
mở để tạo ra những dự án do cộng đồng quản lý. Những dự án này bổ sung các tính
năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị
ban đầu chạy hệ điều hành khác.
Android chiếm 64% thị phần điện thoại thông minh trên toàn thế giới vào thời
điểm quý 1 năm 2013, với tổng cộng 1 tỷ thiết bị đã được kích hoạt và 1,3 triệu lượt
kích hoạt mỗi ngày. Sự thành công của hệ điều hành Android cũng khiến nó trở thành
mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là
"cuộc chiến điện thoại thông minh" giữa các công ty công nghệ.
2.1.2 Giao diện
Giao diện người dùng của Android dựa trên nguyên tắc tác động trực tiếp, sử dụng
cảm ứng chạm tương tự như những động tác ngoài đời thực như vuốt, chạm, kéo dãn
và thu lại để xử lý các đối tượng trên màn hình. Sự phản ứng với tác động của người
dùng diễn ra gần như ngay lập tức, nhằm tạo ra giao diện cảm ứng mượt mà, thường
dùng tính năng rung của thiết bị để tạo phản hồi rung cho người dùng. Những thiết bị
phần cứng bên trong như gia tốc kế, con quay hồi chuyển và cảm biến khoảng cách
12
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID
được một số ứng dụng sử dụng để phản hồi một số hành động khác của người dùng,
ví dụ như điều chỉnh màn hình từ chế độ hiển thị dọc sang chế độ hiển thị ngang tùy
theo vị trí của thiết bị, hoặc cho phép người dùng lái xe đua bằng xoay thiết bị, giống
như đang điều khiển vô-lăng.
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính, điểm khởi đầu
với các thông tin chính trên thiết bị, tương tự như khái niệm desktop (bàn làm việc)
trên máy tính để bàn. Màn hình chính Android thường gồm nhiều biểu tượng (icon) và
tiện ích (widget); biểu tượng ứng dụng sẽ mở ứng dụng tương ứng, còn tiện ích hiển
thị những nội dung sống động, cập nhật tự động như dự báo thời tiết, hộp thư của
người dùng, hoặc những mẩu tin thời sự ngay trên màn hình chính. Màn hình chính có
thể gồm nhiều trang xem được bằng cách vuốt ra trước hoặc sau, mặc dù giao diện
màn hình chính của Android có thể tùy chỉnh ở mức cao, cho phép người dùng tự do
sắp đặt hình dáng cũng như hành vi của thiết bị theo sở thích. Những ứng dụng do
các hãng thứ ba có trên Google Play và các kho ứng dụng khác còn cho phép người
dùng thay đổi "chủ đề" của màn hình chính, thậm chí bắt chước hình dáng của hệ
điều hành khác như Windows Phone chẳng hạn. Phần lớn những nhà sản xuất, và một
số nhà mạng, thực hiện thay đổi hình dáng và hành vi của các thiết bị Android của họ
để phân biệt với các hãng cạnh tranh.
Ở phía trên cùng màn hình là thanh trạng thái, hiển thị thông tin về thiết bị và tình
trạng kết nối. Thanh trạng thái này có thể "kéo" xuống để xem màn hình thông báo
gồm thông tin quan trọng hoặc cập nhật của các ứng dụng, như email hay tin nhắn
SMS mới nhận, mà không làm gián đoạn hoặc khiến người dùng cảm thấy bất tiện.
Trong các phiên bản đời đầu, người dùng có thể nhấn vào thông báo để mở ra ứng
dụng tương ứng, về sau này các thông tin cập nhật được bổ sung theo tính năng, như
có khả năng lập tức gọi ngược lại khi có cuộc gọi nhỡ mà không cần phải mở ứng
dụng gọi điện ra. Thông báo sẽ luôn chờ cho đến khi người dùng đọc hoặc xóa đi.
2.1.3 Ứng dụng
Android có lượng ứng dụng của bên thứ ba ngày càng nhiều, được chọn lọc và đặt
trên một cửa hàng ứng dụng như Google Play hay Amazon Appstore để người dùng
lấy về, hoặc bằng cách tải xuống rồi cài đặt tập tin APK từ trang web khác. Các ứng
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID
13
dụng trên Google Play cho phép người dùng duyệt, tải về và cập nhật các ứng dụng
do Google và các nhà phát triển thứ ba phát hành. Google Play được cài đặt sẵn trên
các thiết bị tương thích của Google. Ứng dụng sẽ tự động lọc ra một danh sách các
ứng dụng tương thích với thiết bị của người dùng, và nhà phát triển có thể giới hạn
ứng dụng của họ chỉ dành cho những nhà mạng cố định hoặc những quốc gia cố định
vì lý do kinh doanh. Nếu người dùng mua một ứng dụng mà họ cảm thấy không thích,
họ được hoàn trả tiền sau 15 phút kể từ lúc tải về, và một vài nhà mạng còn có khả
năng mua giúp các ứng dụng trên Google Play, sau đó tính tiền vào trong hóa đơn sử
dụng hàng tháng của người dùng. Đến tháng 9 năm 2012, có hơn 675.000 ứng dụng
dành cho Android, và số lượng ứng dụng tải về từ Google Play ước tính đạt 25 tỷ.
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.4 Kiến trúc
Android có một hạt nhân dựa trên nhân Linux phiên bản 2.6, kể từ Android 4.0 Ice
Cream Sandwich trở về sau, là phiên bản 3.x, với middleware, thư viện và API viết
bằng C, còn phần mềm ứng dụng chạy trên một nền tảng ứng dụng gồm các thư viện
tương thích với Java dựa trên Apache Harmony. Android sử dụng máy ảo Dalvik với
một trình biên dịch động để chạy "mã dex" (Dalvik Executable) của Dalvik, thường
được biên dịch sang Java bytecode. Nền tảng phần cứng chính của Android là kiến
trúc ARM. Người ta cũng hỗ trợ x86 thông qua dự án Android x86, và Google TV cũng
sử dụng một phiên bản x86 đặc biệt của Android.
Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đổi về kiến trúc
so với nhân Linux gốc. Android không có sẵn X Window System cũng không hỗ trợ các
14
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID
thư viện GNU chuẩn, nên việc chuyển các ứng dụng hoặc thư viện Linux có sẵn sang
Android rất khó khăn. Các ứng dụng C đơn giản và SDL cũng được hỗ trợ bằng cách
chèn những đoạn shim Java và sử dụng tương tự JNI, như khi người ta chuyển Jagged
Alliance 2 sang Android.
Hình 2.1: Kiến trúc hệ điều hành Android.
Bộ lưu trữ flash trên các thiết bị Android được chia thành nhiều phân vùng, như
"/system" dành cho hệ điều hành và "/data" dành cho dữ liệu người dùng và cài đặt
ứng dụng. Khác với các bản phân phối Linux cho máy tính để bàn, người sở hữu thiết
bị Android không được trao quyền truy cập root vào hệ điều hành và các phân vùng
nhạy cảm như /system được thiêt lập chỉ đọc. Tuy nhiên, quyền truy cập root có thể
chiếm được bằng cách tận dụng những lỗ hổng bảo mật trong Android, điều mà cộng
BÀI 2: PHÁT TRIỂN ỨNG DỤNG TRÊN ANDROID
15
đồng mã nguồn mở thường xuyên sử dụng để nâng cao tính năng thiết bị của họ, kể
cả bị những cá nhân sử dụng để cài virus và phần mềm có chủ ý.
Việc Android có được xem là một bản phân phối Linux hay không vẫn còn là vấn đề
gây tranh cãi, tuy được Linux Foundation và Chris Di Bona, trưởng nhóm mã nguồn
mở Google ủng hộ. Một số khác, như linux-magazine.com thì không đồng ý, do
Android không không hỗ trợ nhiều công cụ GNU, trong đó có glibc.
2.1.5 Quản lý bộ nhớ
Vì các thiết bị Android chủ yếu chạy bằng pin, nên Android được thiết kế để quản
lý bộ nhớ (RAM) nhằm giảm tối đa tiêu thị điện năng, trái với hệ điều hành máy tính
để bàn luôn cho rằng máy tính sẽ có nguồn điện không giới hạn. Khi một ứng dụng
Android không còn được sử dụng, hệ thống sẽ tự động ngưng ứng dụng trong bộ nhớ,
những ứng dụng này sẽ không tiêu thụ bất cứ tài nguyên nào (như năng lượng pin
hay năng lượng xử lý) và nằm chờ đó cho đến khi được gọi. Cách làm như vậy có
nhiều ưu điểm là vừa làm tăng khả năng phản hồi của thiết bị Android, vì ứng dụng
không nhất thiết phải đóng rồi mở lại từ đầu, vừa đảm bảo các ứng dụng nền không
làm tiêu hao năng lượng một cách không cần thiết.
Android quản lý các ứng dụng trong bộ nhớ một cách tự động: khi bộ nhớ thấp, hệ
thống sẽ bắt đầu kết thúc ứng dụng và tiến trình không hoạt động trong một khoảng
thời gian, sắp theo thời điểm cuối mà chúng được sử dụng (tức là cũ nhất sẽ bị tắt
trước). Tiến trình này được thiết kế ẩn đi với người dùng, để người dùng không cần
phải quản lý bộ nhớ hoặc tự tắt các ứng dụng. Tuy nhiên, sự che giấu này của hệ
thống quản lý bộ nhớ Android đã dẫn đến sự thịnh hành của các ứng dụng tắt chương
trình của bên thứ ba trên cửa hàng Google Play; những ứng dụng kiểu như vậy được
cho là có hại nhiều hơn có lợi.
2.1.6 Các phiên bản Android
Danh sách các phiên bản Android cho đến thời điểm tháng 10 năm 2013 được liệt
kê trong bảng 2.1. Cho đến thời điểm này phần lớn các thiết bị Android vẫn chạy hệ
điều hành phiên bản cũ 2.3 Gingerbread được phát hành tháng 12 năm 2010, nguyên
nhân là do nhiều thiết bị cấp thấp sử dụng 2.3 vẫn còn được phát hành.