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

HỌC PHẦN: CHUYÊN ĐỀ 3 LẬP TRÌNH MẠNG TRÊN ANDROID HỆ: ĐẠI HỌC

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 (425.92 KB, 20 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA CÔNG NGHỆ THƠNG TIN
***

HỌC PHẦN: CHUN ĐỀ 3
LẬP TRÌNH MẠNG TRÊN ANDROID
HỆ: ĐẠI HỌC
(tài liệu lưu hành nội bộ)

Hưng Yên – Tháng 1 năm 2017


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android

MỤC LỤC
Bài 1 Tổng quan về module ..................................................................................................1
1.1. Tổng quan về module ...................................................................................................1
1.2. Một số thư viện thường dùng trong android..................................................................1
1.2. Tiến trình và luồng .......................................................................................................3
1.2.1 Tiến trình ................................................................................................................3
1.2.2. Luồng ....................................................................................................................3
1.2.3. Lớp Hander ...........................................................................................................3
1.2.4. Giới thiệu đa luồng ................................................................................................6
1.3. AsyncTask ...................................................................................................................7
1.3.1. Tổng quan về lớp AsyncTask.................................................................................7
1.3.2. Mô tả lớp AsyncTask .............................................................................................7
1.3.3. Ứng dụng tải ảnh từ internet ..................................................................................9
1.3.4. Ứng dụng ProgressBar với AsyncTask................................................................. 11
Bài 2 Tin nhắn ...................................................................................................................... 14
2.1. SmsManager .............................................................................................................. 14
2.1.1. Giới thiệu SmsManager ....................................................................................... 14


2.1.2. Để thực hiện xây dựng ứng dụng với SmsManager qua các bước sau:.................. 14
2.2. Telephony .................................................................................................................. 17
2.2.1. Giới thiệu Telephony Manager ............................................................................ 17
2.2.2. Thao tác với Telephony Manager ......................................................................... 17
2.3. Intent ......................................................................................................................... 19
2.3.1. Định nghĩa ........................................................................................................... 19
2.3.2. Phương thức và mô tả Intent ................................................................................ 19
2.3.3. Thao tác với intent ............................................................................................... 20
2.4. BroadcastReceiver ..................................................................................................... 20
2.4.1. Giới thiệu về Broadcast Receiver ......................................................................... 20
2.4.2. Ứng dụng thông báo thay đổi trạng thái wifi ........................................................ 21
2.4.3. Ví dụ ứng dụng BroadCast tự định nghĩa ............................................................. 22
Bài 3 Thư điện tử ................................................................................................................. 25
3.1. Gửi email ................................................................................................................... 25
3.1.1. Intent Object – Những hỗ trợ để sử dụng tính năng Email .................................... 25
3.1.2. Intent ứng dụng trong gửi email ........................................................................... 26
3.2. Gmail API .................................................................................................................. 26
3.3. Một số chức năng của email ....................................................................................... 27
3.3.1. Xem email ........................................................................................................... 27
3.3.2 Tạo thư nháp......................................................................................................... 28
3.3.3 Cập nhật thư rác.................................................................................................... 30
3.3.4 Gửi thư rác ........................................................................................................... 30
Bài 4 Ứng dụng tin nhắn và ứng dụng thư điện tử ................................................................. 31
4.1. Tổng hợp kiến thức liên quan ..................................................................................... 31
4.2. Ứng dụng tin nhắn SMS ............................................................................................. 31
4.3. Ứng dụng thư điện tử ................................................................................................. 40
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 1



Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
Bài 5 Một số dịch vụ trên google .......................................................................................... 43
5.1. Giới thiệu Google service .......................................................................................... 43
5.2. Google Map Service .................................................................................................. 43
5.2.1. Một số ứng dụng của Google Map API................................................................ 45
5.2.2 Yêu cầu để hiển thị bản đồ sử dụng google map ................................................... 45
5.3. Mapview.................................................................................................................... 48
5.3.1. Giới thiệu Mapview............................................................................................. 48
5.3.2. Sử dụng Mapview cơ bản .................................................................................... 48
5.3.3. Xây dựng ứng dụng hiển thị vị trí của 1 địa điểm trên bản đồ .............................. 48
5.4. Location Base Service ............................................................................................... 55
5.4.1 The Location Object ............................................................................................. 56
5.4.2. LocationManager ................................................................................................ 57
5.4.3. Ứng dụng vị trí .................................................................................................... 58
Bài 6 Ứng dụng Location Base service ................................................................................. 63
6.1. Tìm tọa độ của 1 địa điểm .......................................................................................... 63
6.1.1. Tìm tọa độ của 1 địa điểm với google map .......................................................... 63
6.1.2. Tìm tọa độ của 1 địa điểm với Google Earth ........................................................ 63
6.2. Các phương thức của lớp Map ................................................................................... 65
6.3. Ứng dụng tìm đường đi giữa 2 vị trí dung Google Map Direction API ....................... 67
Bài 7 Kết nối với tài nguyên Internet .................................................................................... 68
7.1. Giới thiệu WebView .................................................................................................. 68
7.1.1. Giới thiệu WebView............................................................................................ 68
7.1.2. Thao tác với WebView qua các bước sau: ........................................................... 68
7.1.3. Ví dụ ................................................................................................................... 68
7.2. Giới thiệu ConnectionReceiver và NetworkInfo ......................................................... 70
7.2.1. Lớp ConnectivityManager ................................................................................... 70
7.2.2 Lớp NetworkInfo.................................................................................................. 71
7.3. Quản lý mạng và kết nối mạng................................................................................... 71

7.3.1. Kiểm tra trạng thái kết nối mạng.......................................................................... 71
7.3.2. Ứng dụng cảnh báo khi trạng thái kết nối mạng thay đổi với BroadcashReceiver. 74
Bài 8 Sử dụng nguồn dữ liệu từ internet ............................................................................... 76
8.1. Định vị tài nguyên ..................................................................................................... 76
8.1.1. Liên kết ............................................................................................................... 76
8.1.2. Định nghĩa URL .................................................................................................. 76
8.1.3. Cấu trúc của URL................................................................................................ 76
8.2. HTML và RSS ........................................................................................................... 77
8.2.1. Định nghĩa HTML............................................................................................... 77
8.2.2. Cấu trúc cây HTML cơ bản ................................................................................. 77
8.2.3. HTML và CSS .................................................................................................... 78
8.2.4. Một số thể hay dùng trong HTML ....................................................................... 79
8.2.5. RSS ..................................................................................................................... 79
8.2.6. Đặc tả RSS .......................................................................................................... 80
8.2.7. Một số phần tử của RSS ...................................................................................... 81
8.3. Một số lớp liên quan tới ............................................................................................. 81
8.3.1. Giới thiệu lớp URL ............................................................................................. 81
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 2


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
8.3.2. Giới thiệu lớp URLConnection ............................................................................ 82
8.3.3. Giới thiệu lớp HttpURLConnection ..................................................................... 83
8.4. Lấy dữ liệu đơn giản từ URL trên internet .................................................................. 84
8.4.1. Load dữ liệu văn bản từ internet về điện thoại ...................................................... 84
8.4.2. Load ảnh từ internet ............................................................................................. 86
8.4.3. Load nhạc từ internet ........................................................................................... 89
Bài 9 Ứng dụng duyệt web Webmini và đọc tin tức .............................................................. 89

9.1. Tổng hợp kiên thức liên quan ..................................................................................... 89
9.2. Ứng dụng duyệt web Webmini ................................................................................... 89
9.3. Ứng dụng đọc báo ...................................................................................................... 94
Bài 10 Một số khái niệm cơ bản về dịch vụ mạng ................................................................. 95
10.1. Một số khái niệm cơ bản .......................................................................................... 95
10.1.1. Mơ hình OSI ...................................................................................................... 95
10.1.2. Giao thức ........................................................................................................... 96
10.1.3. Địa chỉ IP........................................................................................................... 97
10.1.4. Cổng (Port) ........................................................................................................ 98
10.1.5. Mơ hình hướng kết nối TCP/IP .......................................................................... 98
10.1.6. So sánh sự khác nhau giữa TCP và UDP .......................................................... 100
10.1.6. Mô hình OSI và TCP/IP ................................................................................... 101
10.2. Giới thiệu WebService ........................................................................................... 101
10.2.1. Giới thiệu WebService ..................................................................................... 101
10.2.2. Định nghĩa WebService ................................................................................... 101
10.2.3. Đặc điểm của Web service ............................................................................... 102
10.2.4. Ưu và nhược điểm ........................................................................................... 102
10.3. Kiến trúc của Web service ...................................................................................... 103
10.3.1. Kiến trúc của Web service ............................................................................... 103
10.3.2.Thành phần cơ bản của Web service ................................................................. 104
10.4. Xây dựng và triển khai dịch vụ mạng cho ứng dụng di động................................... 105
10.4.1. Giới thiệu......................................................................................................... 105
10.4.2. Các bước chính trong triển khai dịch vụ mạng cho ứng dụng di động ............... 106
10.4.3. Giao tiếp client và server ................................................................................. 106
10.5. Một số công nghệ lập trình mạng ........................................................................... 106
10.5.1. Cơng nghệ Web Service ................................................................................... 107
Bài 11 Định dạng dữ liệu XML .......................................................................................... 110
11.1. Tổng quan về XML ................................................................................................ 110
11.1.1. Giới thiệu XML ............................................................................................... 110
11.1.2. XML và HTML ............................................................................................... 110

11.1.3. XML đã làm cải thiện dịch vụ Web.................................................................. 111
11.2. Đặc tả cấu trúc và nội dung tài liệu XML ............................................................... 112
11.2.1. Các quy tắc văn bản XML ............................................................................... 112
11.2.2. Cú pháp của XML ........................................................................................... 114
11.2.3. Đặc tả tài liệu XML ......................................................................................... 116
11.2.4. Ví dụ đặc tả tệp XML ...................................................................................... 117
11.2.5. Tài liệu XML hợp lệ ........................................................................................ 118
11.2.6 Tạo tài liệu XML hợp lệ ................................................................................... 120
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 3


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
11.3. Phân tích dữ liệu XML........................................................................................... 121
13.3.1. Phân tích XML bằng kỹ thuật DOM ................................................................ 122
13.3.2. Phân tích XML bằng kỹ thuật SAX ................................................................. 123
13.3.3. Kỹ thuật DOM và kỹ thuật SAX ...................................................................... 124
11.4. Tạo một tài liệu XML trên android......................................................................... 124
Bài 12 Định dạng dữ liệu JSON ......................................................................................... 129
12.1. Giới thiệu JSON .................................................................................................... 129
12.1.1. Giới thiệu về JSON ......................................................................................... 129
12.1.2. Định nghĩa JSON ............................................................................................ 129
12.1.3. Ưu điểm của Json ............................................................................................ 129
12.2. Cấu trúc tệp JSON ................................................................................................. 129
12.2.1. Cấu trúc tệp JSON ........................................................................................... 129
12.2.2. Ví dụ mơ tả JSON ........................................................................................... 131
12.3. Thao tác với tệp định dạng JSON ........................................................................... 132
12.3.1. Tổng quan về thao tác với tệp JSON ................................................................ 132
12.3.2. Các bước thực hiện thao tác với URL định dạng JSON .................................... 132

12.3.3. Đọc databse dạng jSON ................................................................................... 133
12.4. JSON và XML ....................................................................................................... 134
Bài 13 Dịch vụ Web với WebService ................................................................................. 136
13.1. Cấu hình IIS và SQL .............................................................................................. 136
13.1.1. Cài đặt IIS ....................................................................................................... 136
13.1.2. Cấu hình SQL.................................................................................................. 137
13.2. Khởi tạo WebService ............................................................................................. 138
13.2.1. Các bước xây dựng WebService ...................................................................... 138
13.2.2. Xây dựng WebService hỗ trợ các phép tính cộng ............................................. 139
Bài 14 Lập trình dịch vụ mạng Xây dựng ứng dụng di động ............................................... 142
14.1. Tổng hợp một số kiến thức liên quan ..................................................................... 142
14.1.1. Sử dụng AsyncTask ......................................................................................... 142
14.1.2. Thư viện KSOAP 2 ......................................................................................... 142
14.1.3. Thư viện Retrofit ............................................................................................. 142
14.2. Ứng dụng WebService ........................................................................................... 142
Bài 15 Dịch vụ Web với WebAPI ...................................................................................... 152
15.1 Tổng quan về Web API........................................................................................... 152
15.1.1. Giới thiệu API ................................................................................................. 152
15.1.2 Giới thiệu Web API .......................................................................................... 152
15.1.3. Đặc điểm Web API (.NET 4.0 trở lên) ............................................................. 153
15.1.4. Công cụ phát triển Web API ............................................................................ 153
15.2. Khởi tạo và cấu hình Web API............................................................................... 154
15.2.1 Tạo ứng dụng Web API bằng Visual Studio ..................................................... 154
15.2.2 Tạo ứng dụng Web API đầu tiên....................................................................... 156
Bài 16 Ứng dụng Dịch vụ Web theo công nghệ WebAPI ................................................... 160
16.1. Tổng hợp một số khái niệm lien quan với WebAPI ................................................ 160
16.1.1. Tạo Web API: ................................................................................................. 160
16.1.2. TẠO WEB API BẰNG NODEJS, CSDL MONGODB(NoSQL) ..................... 160
16.2. Ứng dụng quản lý account với Web API ................................................................ 161
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin


Trang 4


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
16.3. Xây dựng app android đọc account từ Web API ..................................................... 166
Bài 17 Giới thiệu về bảo mật trên mobile............................................................................ 171
17.1.Giới thiệu ................................................................................................................ 171
17.2. Các mức bảo vệ trên mạng ..................................................................................... 171
17.2.1. Bảo vệ Quyền truy nhập................................................................................... 171
17.2.2. Đăng ký tên /mật khẩu. .................................................................................... 171
17.2.3. Mã hoá dữ liệu ................................................................................................. 172
17.2.4. Bảo vệ vật lý .................................................................................................... 172
17.2.5. Tường lửa ........................................................................................................ 172
17.2.6. Quản trị mạng .................................................................................................. 172
17.2.7. An tồn thơng tin bằng mật mã ........................................................................ 173
17.3. Một số phương pháp bảo mật ứng dụng Android .................................................... 173
17.3.1. Lưu trữ nội bộ .................................................................................................. 174
17.3.2. Mã hóa dữ liệu trên bộ nhớ ngoài ..................................................................... 174
17.3.3. Sử dụng Intents cho IPC .................................................................................. 174
17.3.4. Sử dụng HTTPS............................................................................................... 175
17.3.5. Sử dụng GCM thay cho SMS ........................................................................... 176
17.3.6. Tránh Yêu cầu dữ liệu cá nhân ......................................................................... 176
17.3.7. Xác nhận User Input ........................................................................................ 176
17.3.8. Sử dụng ProGuard Trước khi Publishing.......................................................... 177
17.4. Tạo chữ ký kỹ thuật số trong ứng dụng Android ..................................................... 177
17.4.1 Giới thiệu ......................................................................................................... 177
17.4.2. Tạo chữ ký kỹ thuật số trong ứng dụng Android .............................................. 178

Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin


Trang 5


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android

DACH MỤC TỪ VIẾT TẮT
STT Từ viết tắt
API
1

Cụm từ đầy đủ
Application Programming Interface

2

CSS

Cascading Style Sheets

3

DB

DataBase

4

GCM


Google Cloud Messaging

5

GPS

Global Positioning Service

6

GUI

Graphical User Interface

7

HTML

Hyper Text Markup Language

8

HTTP

Hyper Text Transfer Protocol

9

HTTPS


Secure Hyper Text Transfer Protocol

10

IP

Internet Protocol

11

JDBC

Java Database Connectivity

12

JSON

JavaScript Object Notation

13

LINQ

Language Integrated Query

14

REST


Representational State Transfer

15

RESTFul

Representational State Transfer

16

RPC

Remote Procedure Calls

17

RSS

Really Simple Syndication

18

SOAP

Simple Object Access Protocol

19

SQL


Structured Query Language

20

SSL

Secure Sockets Layer

21

TCP

Transmission Control Protocol
Transmission
Control
Protocol/Internet
Protocol

22

TCP/IP

23

URI

Uniform Resource Identifier

24


URL

Uniform Resource Locator

25
26
27

WCF

Windows Communication Foundation
Web Service Description Language
Extensible Markup Language

WSDL
XML

Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 2


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android

DANH MỤC HÌNH VẼ, BẢNG
Hình 1. Hình ảnh mơ phịng MultiThreading.........................................................................7
Hình 2. Lớp kế thừa từ lớp AsyncTask..................................................................................8
Hình 3. Mơ hình làm việc AsyncTask ...................................................................................8
Hình 4. Thứ tự thực hiện các phương thức của lớp AsyncTask ..............................................9
Hình 5. Kết quả ứng dụng ProgressBar ............................................................................... 13

Hình 6. Hoạt động Broadcast Receiver................................................................................ 21
Hình 7. Các kiểu giao diện hiển thị bản đồ mà Google Maps cung cấp ................................ 44
Hình 8. API key và google service ...................................................................................... 45
Bảng 1. Bảng một số phương thức hay sử dụng lớp Location .......................................... 56
Bảng 2. Các tham số của phương thức locationManager.requestLocationUpdates ............ 57
Hình 9. Lấy tọa độ của 1 địa điểm với google map.............................................................. 63
Hình 10. Lấy tọa độ của 1 địa điểm với google Earth ........................................................ 64
Bảng 3. Các phương thức của lớp Map ............................................................................ 65
Bảng 4. Các thuộc tính của lớp Map ................................................................................ 66
Bảng 5. Sự kiện của Map ................................................................................................. 66
Bảng 6. Các điều khiển của Map ...................................................................................... 66
Hình 11. Cấu trúc trang web theo định dạng HTML .......................................................... 78
Hình 12. Cấu trúc trang web theo định dạng HTML5 ........................................................ 78
Bảng 7. Bảng các phương thức khởi tạo của lớp URL ...................................................... 81
Bảng 8. Bảng một số phương thức trong lớp URL ........................................................... 82
Bảng 9. Bảng mô tả các chức năng trong mơ hình OSI..................................................... 96
Hình 13. Phương thức hoạt động của bộ giao thức TCP/IP ................................................ 99
Hình 14. Mơ hình OSI và cụm giao thức TCP/IP ............................................................. 101
Hình 15. Kiến trúc của Web service ................................................................................ 103
Hình 16. Mơ hình giao tiếp client và server ..................................................................... 106
Hình 17. Kiến trúc WCF ................................................................................................. 107
Hình 18. Kiến trúc WebAPI ............................................................................................ 109
Hình 19. Phân tích cú pháp của XML .............................................................................. 114
Hình 20. Phân tích XML bằng kỹ thuật DOM ................................................................. 122
Hình 21. Cấu trúc tệp JSON ............................................................................................ 131
Hình 22. Cài đặt IIS ........................................................................................................ 137

Bộ mơn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 3




Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android

Bài 1 Tổng quan về module
1.1. Tổng quan về module
Module này giới thiệu cho người học về dịch vụ mạng và các đối tượng thư viện hỗ
trợ việc lập trình dịch vụ mạng trên android. Dịch vụ và dịch vụ mạng được giới thiệu trong
module gồm: Các dịch vụ trên điện thoại, dịch vụ của google, dịch vụ trên web. Một số vấn
đề liên quan được giới thiệu như: khái niệm webservice, cụm giao thức mạng, các loại dữ liệu
XML, JSON lưu trữ dữ liệu trên internet.

1.2. Một số thư viện thường dùng trong android
1. Gson
Gson là thư viện Android dùng để tạo ra Json từ Java Object hoặc gắn giá trị cho Java
Object từ Json. Thư viện này thường được sử dụng khi tương tác với APIs. Chúng ta thường
sử dụng Json bởi vì nó nhẹ và đơn giản hơn so với XML.
2. Retrofit
Trên trang chủ của Retrofit có câu: “Retrofit turns your REST API into a Java
interface” nói lên đầy đủ chức năng của nó. Đây là một giải pháp tuyệt vời để tổ chức các lời
gọi API trong một dự án. Các lời gọi request được thêm đơn giản và tiện dụng. Ta sử
dụng Callback để lấy kết quả các request gửi lên.
Sử dụng thư viện Retrofit Trang chủ: />Retrofit là một Rest Client (Tìm hiểu thêm về chuẩn RESTFul dưới link tham khảo)
cho Android và Java và được tạo ra bởi Square. Họ làm cho việc nhận và tải lên JSON (hoặc
dữ liệu khác) một cách khá dễ dàng tới một WebService dựa trên mô hình REST.
Để làm việc với Retrofit cần triển khai cơ bản 3 lớp:
– Model class to map JSON Data
– Interfaces để định nghĩa các API cho Webservice
– Retrofit.Builder Lớp để định nghĩa URL Endpoint cho các hoạt động liên quan tới

Http
3. EvenBus
EvenBus là thư viện làm đơn giản giao tiếp giữa các phần trong ứng dụng của bạn. Ví
dụ, để gửi dữ liệu từ Activity tới Service đang chạy, hoặc gửi dữ liệu giữa các Fragment.
4. ActiveAndroid
ActiveAndroid là một ORM dành cho Android. Nó là một trừu tượng của SQLite cho
phép bạn giao tiếp với database trong một device khi không phải viết câu lệnh SQL.
5. Universal Image Loader
UIL là thư viện cung cấp asynchronous, caching hình ảnh …
6. KSOAP
KSOAP2 là một thư viện nhẹ để sử dụng trong các thiết bị bị ràng buộc. Nó khơng
phải là một thư viện bao gồm tất cả thư viện do-it-all. Tuy nhiên nó có nghĩa là để tương tác
với hầu hết các động cơ SOAP phổ biến.
SOAP đưa ra một số chi phí đáng kể cho các dịch vụ web có thể là vấn đề đối với các
thiết bị di động. Nếu bạn có tồn quyền kiểm sốt máy khách và máy chủ, kiến trúc dựa trên
REST / JSON đơn giản có thể đầy đủ hơn. KSOAP2 được tạo thành từ một trình phân tích cú
pháp XML, một bộ phân tách de / và một lớp vận chuyển.

Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 1


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
7. Piccaso
Khi tải hình ảnh từ web, thì bạn nên sử dụng Picasso vì nó đơn giản và dễ dàng và tôi
thực sự như thế nào API được viết.
Các bước bạn cần thực hiện để tải xuống hình ảnh chỉ với các API Android chuẩn:
– Nhận URL Hình ảnh
– Tạo AsyncTask để tải hình ảnh

– Thực thi AsyncTask
– Lưu trữ kết quả trong Bitmap
– Đặt bitmap làm nguồn
– Hình ảnh Cache cho tương lai
8.Dagger
Dagger được biết đến và sử dụng là một thư viện dependency injection trong Android.
Nó là một dependency injection đơn giản và nhanh cho cả Android và Java, bao gồm 2 phần:
thư viện Dagger (size 100kb) và trình biên dịch Dagger.
Thư viện này chứa tất cả những logic cần thiết và một số chú thích.Nó cũng sử dụng
chuẩn chú thích javax.inject, làm code của bạn khác với các dependency injection khác của
framework như Spring hay Guice.
Dagger được cấp phép theo Apache License 2.0, được phát triển và điều hành bởi
Square và Google và có thể tìm được ở đây: />9. LeakCanary
Bạn có biết những người thợ mỏ sử dụng một con chim hoàng yến nhốt trong một
chiếc lồng, nếu khí gas nhiều đến mức con hồng yến chết, đó sẽ là dấu hiệu để họ rời khỏi
mỏ. LeakCanary dễ dàng phát hiện các đối tượng bị rò rỉ bằng cách thêm một vài dòng code
Java vào code đã có sẵn. Nó miễn phí và dễ dàng sử dụng.
LeakCanary được cấp phép theo Apache License 2.0, được phát triển và điều hành bởi
Square và có thể tìm được ở đây: />10. ZXing
Sử dụng mã vạch và mã QR làm tiêu chuẩn trong các thiết bị đọc dữ liệu. Ban đầu
được viết bằng Java, nó có thể đọc và tạo mã vạch trên nhiều nền tảng, và nó đã được chuyển
sang nhiều ngôn ngữ khác. Thư viện này đã được phát triển một thời gian và có cơ sở người
dùng tốt. Trình đọc mã QR được dùng trên smartphone cũng sử dụng thư viện này. Nó làm
việc hiệu quả và có lịch sử tốt.
ZXing được phát triển bởi Sean Oven,Daniel Switkin, ZXing Team và được cấp phép
theo Apache License 2.0. Nó có thể tìm được ở đây: />11. Libphonenumber
Khi phân tích cú pháp và định dạng số điện thoại, khơng có nhiều giải pháp sẵn có tốt
và miễn phí. Rất may, Google team đã đưa ra một thư viện có tên Libphonenumber. Đây có lẽ
là thư viện tốt và tồn diện nhất để phân tích cú pháp, xác nhận và định dạng số điện thoại.
Nó khá đơn giản và dễ dàng để sử dụng API và cũng đã được chuyển sang các ngơn

ngữ khác ngồi JVM như C# và PHP. Libphonenumber được phát triển và điều hành bởi
Google và được cấp phép Apache License 2.0. Download tại đây:
/>12.Tape
Đây là một thư viện khác của Square. Tape là một tập hợp của các lớp để xử lý hàng
đợi. Thật tuyệt khi xử lý luồng dữ liệu và download dữ liệu trong mơi trường khơng ổn
định.Thay vì code xử lý hàng đợi bằng tay, Tape sẽ làm thay bạn. Nếu có lỗi nào đó, Tape sẽ

Bộ mơn Cơng nghệ Phân mềm khoa Công nghệ Thông tin

Trang 2


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
tự động chạy lại lệnh hoặc hoạt động lại một lần nữa. Ngoài ra, tất cả các kết quả trung gian
sẽ được tự đọng o lưu trữ, đây cũng là một tính năng hữu ích của Tape.
Tape được được cấp phép Apache License 2.0, bạn có thể tìm tại đây:
/>13.Jitpack.io
Jitpack.io được phát triển bởi nhóm nghiên cứu của Streametry Ltd. Jitpack có thể
built bất kỳ project GitHub nào và phát hành tới repo Maven cơng cộng. Nó giúp tiết kiệm
thời gian và rắc rối khi xây dựng dependency. Nó là một trong những cách đơn giản nhất để
xuất bản bất kì project GitHub nào như một Maven dependency
Bạn có thể kiểm tra Jitpack tại đây: Jitpack uses a custom terms of
usage license.

1.2. Tiến trình và luồng
1.2.1 Tiến trình
Process là quá trình hoạt động của một ứng dụng. Điều đó nghĩa là gì? Có thể lấy một
ví dụ như sau, khi bạn click đúp chuột vào biểu tượng MS Word, một process chạy ứng dụng
Word được khởi tạo.


1.2.2. Luồng
Thread là một tiến trình đơn vị xử lý của máy tính có thể thực hiện một cơng việc
riêng biệt. Trong Java các luồng được quản lý bởi máy ảo Java (JVM).
Thread là một bước điều hành bên trong một process. Một process dĩ nhiên có thể
chứa nhiều thread bên trong nó. Khi chúng ta chạy ứng dụng Word, hệ điều hành tạo ra một
process và bắt đầu chạy các thread chính của process đó.
Điểm quan trọng nhất cần chú ý là một thread có thể làm bất cứ nhiệm vụ gì một
process có thể làm. Tuy nhiên, vì một process có thể chứa nhiều thread, mỗi thread có thể coi
như là một process nhỏ. Vậy, điểm khác biệt mấu chốt giữa thread và process là công việc
mỗi cái thường phải làm.
Một điểm khác biệt nữa đó là nhiều thread nằm trong cùng một process dùng một
không gian bộ nhớ giống nhau, trong khi process thì khơng. Điều này cho phép các thread đọc
và viết cùng một kiểu cấu trúc và dữ liệu, giao tiếp dễ dàng giữa các thread với nhau. Giao
thức giữa các process, hay còn gọi là IPC (interprocess communication) thì tương đối phức
tạp bởi các dữ liệu có tính tập trung sâu hơn.

1.2.3. Lớp Hander
Khi một tiến trình được tạo cho một ứng dụng, main thread của nó được dành riêng để
chạy một message queue, queue này quản lý các đối tượng bậc cao của ứng dụng (activity,
intent receiver, v.v..) và các cửa sổ mà chúng tạo ra.
Ta có thể tạo các thead phụ, chúng tương tác với thread chính của ứng dụng qua một
Handler.
Khi ta tạo một Handler mới, nó được gắn với message queue của thread tạo ra nó – từ đó trở
đi, nó sẽ gửi các message và các runnable tới message queue đó và thực thi chúng khi chúng
ra khỏi message queue.
Hai ứng dụng chính của Handler: xếp lịch cho các message và runnable cần được thực
thi vào thời điểm nào đó trong tương tai và xếp hàng một action cần thực hiện tại một thread
khác.
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin


Trang 3


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
Một số phương thức hay dùng của Handler
– Activity.runOnUiThread(Runnable)
– View.post(Runnable)
– View.postDelayed(Runnable, long)
Có 2 cách tạo lớp Handler
Tạo một lớp thread mới kế thừa từ lớp Thread
public class NewThread extends Thread{
public void run()
{
print(“Hello”)
}
}
Tạo một biến mới của lớp Thread với đối tượng Runnable
Thread background = new Thread(new Runnable() {
public void run() {
print(“Hello”)
}
}
Và để chạy bất kỳ một thread nào ta đều phải gọi phương thức start();
background.start()
Ví dụ
import android.os.Handler;
Handler mHandler = new Handler();
// ...
new Thread() {
public void run() {

// Instantiate XML parser
mHandler.post (new Runnable() {
public void run() {
parsingStatus.setText (“Began Parsing...”);
}
});
// XML Parsing loop here
// Update parsingStatus has needed…
mHandler.post (new Runnable() {
public void run() {
parsingStatus.setText (“Finished parsing...”);
}
});
}
}.start();

public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 4


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
// a potentially time consuming task
final Bitmap bitmap =
processBitMap("image.png");
mImageView.post(new Runnable() {
public void run() {

mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}

Bước 1: Tạo Project và thiết lập quyền cần thiết trong file app\Manifest\AndroidManifest.xml

Bước 2: Thiết kế các giao diện cần thiết cho ứng dụng res\layout\*.xml
<?xml version="1.0" encoding="utf8"?>
<LinearLayout xmlns:android=" />android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

Bước 3: Xây dựng các lớp và các chức năng *.java
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;
public class HandlerDemo extends Activity {
ProgressBar bar;
Handler handler=new Handler() {
@Override

public void handleMessage(Message msg) {
bar. incrementProgressBy(5);
}
};
boolean isRunning=false;
@Override
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 5


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
public void onCreate(Bundle icicle) {
super. onCreate(icicle);
setContentView(R.layout.main);
bar=(ProgressBar)findViewById(R.id.progress);
}
public void onStart() {
super. onStart();
bar. setProgress(0);
Thread background=new Thread(new Runnable() {
public void run() {
try {
for (int i=0;i<20 && isRunning;i++) {
Thread. sleep(1000);
handler. sendMessage(handler. obtainMessage());
}
}
catch (Throwable t) {
// just end the background thread

}
}
});
isRunning=true;
background. start();
}
public void onStop() {
super. onStop();
isRunning=false;
}
}

1.2.4. Giới thiệu đa luồng
Multithread là khái niệm cho nhiều tiến trình chạy đồng thời. Một ứng dụng Java ngồi luồng
chính có thể có các luồng khác thực thi đồng thời làm ứng dụng chạy nhanh và hiệu quả hơn.
VD: Trong một game đánh nhau có 2 người chơi thì mỗi người chơi sẽ do 1 luồng quản lý.
Các hoạt cảnh game có thể do một luồng khác quản lý. Làm cho game trở nên sinh động.

Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 6


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
Hình 1.

Hình ảnh mơ phịng MultiThreading.

Ưu điểm của đa luồng:
Mỗi luồng có thể dùng chung và chia sẻ nguồn tài ngun trong q trình chạy, nhưng có thể

thực hiện một cách độc lập.
Ứng dụng trách nhiệm có thể được tách
+ Luồng chính chạy giao diện người dung
+ Các luồng phụ nhiệm gửi đến luồng chính.
Luồng mang tính chất trừu tượng
Một chương trình đa luồng hoạt động nhanh hơn trên máy tính có cấu hình tốt và mạnh
* Nhược điểm của đa luồng:
Càng nhiều luồng thì xử lý càng phức tạp
Cần phát hiện tránh các luồng chết, luồng chạy mà khơng làm gì trong ứng dụng cả

1.3. AsyncTask
1.3.1. Tổng quan về lớp AsyncTask
AsyncTask là 1 class hỗ trợ, cung cấp cơ chế thuận tiện để di chuyển những xử lý tốn
thời gian vào những tiến trình chạy ngầm (background thread). Nó cung cấp các sự kiện xử lý
đồng bộ, đưa ra kết quả khi tiến thành hoàn thành.
AsyncTask bao gồm 1 tiến trình chạy ngầm và một UI cập nhật kết quả khi tiến trình
kết thúc(theo “Professional Android 2 Application”)

1.3.2. Mô tả lớp AsyncTask
Để tạo task bất đồng bộ này thì cần extend AsyncTask. Cần chỉ định một class thực
hiện phương thức execute, với format sau:
AsyncTask<[Loại Tham số truyền vào], [Loại update],[Loại kết quả trả về]>
Nếu không muốn sử dụng tham số truyền vào, tiến độ update, hoặc kết quả trả về, sử dụng
Void cho tất cả.
Ví dụ:

Bộ mơn Cơng nghệ Phân mềm khoa Công nghệ Thông tin

Trang 7



Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
Hình 2.

Lớp kế thừa từ lớp AsyncTask

Trong đó các hàm cần chú ý:
– onPreExecute: hàm này sẽ chạy đầu tiên khi class được gọi.
– doInBackground: đây là phương thức chạy background nên NĨ KHƠNG ĐƯỢC TƯƠNG
TÁC VỚI OBJECT Ui (vd như set text cho textview hay showToast ở đây là không được…).
ở đây đặt phần code xử lý tốn thời gian vào, và sử dụng phương thức publishProgress để cho
phép phương thức onProgressUpdate() update lên UI.
Khi tiến trình này kết thúc, trả về kết quả cuối cùng cho xử lý onPostExecute.
– onProgressUpdate: nhận các thông số thông qua phương thức publishProgress trong
doInBackground. Phương thức này thì đồng bộ với UI đang chạy.
– onPostExecute: là phương thức được gọi khi doInBackground hồn thành.

Giải thích cho ví dụ DownLoad:
– Ta thực hiện một phương thức dowdload một tập tin. Bạn xử lý như sau: hiện lên một
progress thông báo % của q trình download, và hiển thì thơng báo thành cơng khi hồn
thành download. Như vậy thì ở:
– onPreExecute: sẽ hiển thị thanh progress đang ở 0%.
– doInBackground: thực hiện download, trong này bạn xử lý để lấy được % download là n,
bàn dùng phương thức publishProgress để truyền n ra ngồi. Chú ý là trong này bạn khơng thể
update cái progress lên n% được được.
– onProgressUpdate: nhận được n và bạn sẽ update cho progress lên n %.
– onPostExecute: kết thúc download, hiện thị Toast thơng báo download thành cơng.

Hình 3.


Mơ hình làm việc AsyncTask

Bộ mơn Cơng nghệ Phân mềm khoa Công nghệ Thông tin

Trang 8


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
Hình 4.

Thứ tự thực hiện các phương thức của lớp AsyncTask

1.3.3. Ứng dụng tải ảnh từ internet
Bước 1: Tạo Project và thiết lập quyền cần thiết trong file app\Manifest\AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
Bước 2: Thiết kế các giao diện cần thiết cho ứng dụng res\layout\*.xml
<?xml version="1.0" encoding="utf8"?>
<LinearLayout xmlns:android=" />android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Ảnh hiển thị"
android:id="@+id/textView" />
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/img"
android:layout_gravity="center_horizontal" />

</LinearLayout>
Bước 3: Xây dựng các lớp và các chức năng *.java
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 9


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android
public class MainActivity extends AppCompatActivity {
ImageView img;
String uri = " />@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.httpconnection);
img = (ImageView) findViewById(R.id.img);
//Biến u lấy uri; URL(uri)fair nằm trong try catch

// B3 Chạy loadImageFromInternet
runOnUiThread(new Runnable() {
@Override
public void run() {
// Gọi lớp loadImageFromInternet vừa Tạo trong B2
new loadImageFromInternet().execute(uri);
}
});
}
// url, %tải về
private class loadImageFromInternet extends AsyncTask<String, Integer, String> {
//doInBackground: Hàm chỉ hành động. VD này là hành động lấy hình từ internet
@Override
protected String doInBackground(String... params) {
//Biến u lấy uri
try {
URL u = new URL(params[0]);
Bitmap bm=BitmapFactory.decodeStream(u.openConnection().getInputStream());
img.setImageBitmap(bm);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}
}
}


Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 10


Bài tập thực hành CĐ3: Lập trình dịch vụ mạng trên Android

1.3.4. Ứng dụng ProgressBar với AsyncTask
Bước 1: Tạo ứng dụng vào thiết lập quyền truy cập internet
<uses-permission android:name="android.permission.INTERNET" />
Bước 2: Thiết kế giao diện main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" />xmlns:tools=" />android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.nguyennghia.asynctaskworking.MainActivity">
android:id="@+id/pb_counter"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminate="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:id="@+id/tv_message"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:layout_gravity="center"
android:text="Start"

android:id="@+id/btn_counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Bước 3.1.Tạo lớp kế thừa từ AsyncTask
class UpdateProgresBarTask extends AsyncTask<Integer, Integer, Void>{
@Override
protected void onPreExecute() {
super.onPreExecute();
tvMessage.setText("Update");
}
@Override
protected Void doInBackground(Integer... params) {
int n = params[0];
for(int i = 0; i < n; i++)
publishProgress(i);
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
Bộ môn Công nghệ Phân mềm khoa Công nghệ Thông tin

Trang 11



×