Tải bản đầy đủ (.ppt) (26 trang)

Bài 1 khai thác tài nguyên internet

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 (252.34 KB, 26 trang )

Trường ĐH Khoa Học Tự Nhiên Tp. Hồ Chí Minh
TRUNG TÂM TIN HỌC
2014
Lập trình Android
Bài 1. Khai thác tài nguyên Internet
Ngành Mạng & Thiết bị di động
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 2
1. Kết nối tài nguyên Internet

Tài nguyên Internet trên thiết bị di động

Các vấn đề về kết nối – Hình thức kết nối

Lớp khai báo kết nối
2. Sử dụng dịch vụ DownloadManager
Nội dung
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 3
1.1 Tài nguyên Internet trên thiết bị di động

Ứng dụng trực tuyến trên thiết bị di động được xây dựng nhằm
mục đích hiển thị dữ liệu đầu cuối được xử lý từ các máy chủ cũng
như gửi các yêu cầu về truy xuất dữ liệu .

Khi xây dựng các ứng dụng trực tuyến cần xác định rõ nguồn tài
nguyên được cung cấp:

Định dạng tài nguyên (văn bản, hình ảnh…)

Giao thức kết nối đến máy chủ (http, https, tcp, rtsp…)

Sử dụng công nghệ kết nối không dây (Wifi, Internet Mobile…)


Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 4
1.2 Các vấn đề kết nối

Xây dựng ứng dụng thực hiện kết nối Internet trên thiết bị di động
cần đảm bảo các vấn đề sau:

Băng thông

Lưu Cache

Năng lượng

Tính năng thiết bị
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 5
1.2 Hình thức kết nối

Các thiết bị di động ở thời điểm hiện tại có thể quy chung về hình
thức kết nối sau:

Mobile Internet: một dạng kết nối thông qua hình thức cung cấp dịch vụ băng
thông của nhà mạng, bao gồm một số chuẩn phổ biến sau: GPRS, EDGE,
3G, 4G, LTE…

Wifi: kết nối không dây và truyền dữ liệu ra Internet thông các thiết bị mạng
(router, switch…), ngoài ra thiết bị di động Android có khả năng phát tín hiệu
mạng cho các thiết bị khác.
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 6
1.3 Lớp khai báo kết nối

Việc khai báo kết nối tùy thuộc vào chuẩn giao thức kết nối và địa

chỉ URL của máy chủ cần kết nối:

URL: lớp giải quyết phân giải tên miền thành địa chỉ IP.

Định dạng: http://username:password@host:8080/directory/file?query#ref:

Phương thức kết nối

openConnection

URLConnection: lớp thực hiện kết nối đến URL được chỉ định cho việc đọc
hoặc ghi dữ liệu, hỗ trợ các giao thức:

File: URIs

FTP

HTTP & HTTPS

Jar
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 7
1.3 Lớp khai báo kết nối

URLConnection:

Các phương thức quan trọng:

connect()

getContent()


getContentType()

getInputStream()

getOutputStream()

setDoInput – getDoInput

setDoOutput - getDoOutput
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 8
1.3 Lớp khai báo kết nối

URLConnection:

Các lớp giao thức HTTP & HTTPS:

HttpURLConnection

HttpsURLConnection

Các phương thức quan trọng:

disconnect()

getContentEncoding()

getResponseCode()

getResponseMessage()

Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 9
1.3 Lớp khai báo kết nối

Thực hiện kết nối Internet (HTTP):

Bao gồm các bước sau:

Thực hiện mở kết nối đến địa chỉ URL được chỉ định ->
HttpURLConnection.

Thực hiện khai báo các header, content-type, cookies…

Gọi phương thức setDoOutput(true) thực hiện xây dựng phần dữ liệu cần
gửi lên máy chủ, dữ liệu được thiết lập được trả thông qua phương thức
getOutputStream(). (Optional).

Thực hiện truy xuất dữ liệu thông qua phương thức getInputStream(), để
lấy các thông tin về nội dung được trả, độ dài, thời gian…

Gọi phương thức disconnect() để đóng các kết nối khi kết thúc phiên làm
việc và giải phóng tài nguyên.
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 10
1.3 Lớp khai báo kết nối

Thực hiện kết nối Internet:

Một số lưu ý khi thực hiện:

Cần thực hiện xin cấp quyền truy cập Internet cho ứng dụng trong tập tin
AndroidManifest.


<uses-permission android:name="android.permission.INTERNET" />

Trong một vài trường hợp cần xin cấp quyền kiểm soát trạng thái Internet

<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />

Không được thực hiện kết nối Internet trực tiếp trên tiến trình chính của
ứng dụng. Sử dụng AsyncTask hoặc Thread để thay thế.
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 11
1.3 Lớp khai báo kết nối

Thực hiện kết nối Internet (HTTP):

Ví dụ:
URL url = new URL(“”);
URLConnection urlConnection = url.openConnection();
HttpURLConnection httpURLConnection =
(HttpURLConnection) urlConnection;
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = httpURLConnection
.getInputStream();
// Xử lý đọc dữ liệu từ InputStream
}
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 12
1.3 Lớp khai báo kết nối

Thực hiện kết nối Internet (HTTPS):


Bao gồm các bước sau:

Khai báo KeyStore dùng để chứng thực.

Chứng thực KeyStore thông qua X509TrustManager hoặc
SSLSocketFactory.

Thực hiện mở kết nối đến địa chỉ URL được chỉ định ->
HttpsURLConnection.

Thực hiện gắn SSLContext cho việc chứng thực.

Gọi phương thức setDoOutput(true) thực hiện xây dựng phần dữ liệu cần
gửi lên máy chủ, dữ liệu được thiết lập được trả thông qua phương thức
getOutputStream(). (Optional).

Thực hiện truy xuất dữ liệu thông qua phương thức getInputStream(), để
lấy các thông tin về nội dung được trả, độ dài, thời gian…

Gọi phương thức disconnect() để đóng các kết nối khi kết thúc phiên làm
việc và giải phóng tài nguyên.
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 13
1.3 Lớp khai báo kết nối

Thực hiện kết nối Internet (HTTPS):

Ví dụ:
KeyStore keyStore = ;
String algorithm = TrustManagerFactory.getDefaultAlgorithm();

TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);
tmf.init(keyStore);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
URL url = new URL(" />HttpsURLConnection urlConnection = (HttpsURLConnection)
url.openConnection();
urlConnection.setSSLSocketFactory(context.getSocketFactory());
InputStream in = urlConnection.getInputStream();
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 14
1. Kết nối tài nguyên Internet
2. Sử dụng dịch vụ DownloadManager

Giới thiệu

Khai báo và sử dụng

Tuỳ chỉnh thông báo và nơi lưu trữ

Truy vấn nội dung tải
Nội dung
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 15
2.1 Giới thiệu

DownloadManager:

Download Manager là trình quản lý các tác vụ tải trên thiết bị Android được
Google tích hợp từ phiên bản Android 2.3 (API 9).

Download Manager được thiết kế hoạt động như một dịch vụ chạy ngầm, cho
phép quản lý và giám sát sự thay đổi của các kết nối.


Sử dụng:

Được sử dụng trong các trường hợp cần thực hiển tải một nội dung
trong một thời gian dài ở chế độ ngầm giữa các phiên tương tác của
người dùng
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 16
2.2 Khai báo và sử dụng

DownloadManager:

Việc truy xuất dịch vụ được thông qua Context của ứng dụng gọi thực thi:
DownloadManager manager = (DownloadManager)
getSystemService(DOWNLOAD_SERVICE);

Để khởi tạo yêu cầu tải một nội dung, tiến hành tạo đối tượng Request.

Ví dụ:
Uri uri = Uri.parse
(" />Request request = new Request(uri);
long id_reference = manager.enqueue(request);
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 17
2.2 Khai báo và sử dụng

DownloadManager:

Một số phương thức quan trọng:

getMaxBytesOverMobile


getRecommendedMaxBytesOverMobile (Android 3.0)

enqueue

remove

getMineTypeForDownloadedFile

getUriForDownloadedFile

openDownloadedFile

query
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 18
2.2 Khai báo và sử dụng

DownloadManager:

Nhận biết các trạng thái các yêu cầu tải: cần xây dựng bộ BroadcastReceiver
cho phép bắt lại Intent từ dịch vụ.

Các trạng thái của yêu cầu tải:

STATUS_FAILED

STATUS_PAUSED

PAUSED_QUEUE_FOR_WIFI

PAUSED_UNKNOWN


PAUSED_WAITING_FOR_NETWORK

PAUSED_WAITING_TO_RETRY

STATUS_PENDING

STATUS_RUNNING

STATUS_SUCCESSFUL
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 19
2.2 Khai báo và sử dụng

DownloadManager:

Các hành động tương tác dịch vụ:

ACTION_DOWNLOAD_COMPLETE

ACTION_NOTIFICATION_CLICKED

ACTION_VIEW_DOWNLOADS
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 20
2.2 Khai báo và sử dụng

DownloadManager:

Ví dụ kiểm tra khi thực hiện tải thành công từ dịch vụ:
IntentFilter filter = new IntentFilter
(DownloadManager.ACTION_DOWNLOAD_COMPLETE);

BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long id_reference = intent.getLongExtra
(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
Log.d("HTSI", "File's id: " + id_reference);
} };
registerReceiver(receiver, filter);
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 21
2.3 Tuỳ chỉnh thông báo và nơi lưu trữ

DownloadManager:

Tuỳ chỉnh thông báo: mặc định trên thanh trạng thái (Status Bar) của thiết bị
sẽ xuất hiện một hộp thoại thông báo hoạt động hiện tại, hiển thị các thông tin
như: tên tập tin được tải, ngày giờ tải, dung lượng đã tải…
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 22
2.3 Tuỳ chỉnh thông báo và nơi lưu trữ

DownloadManager:

Tuỳ chỉnh thông báo: được thông qua đối tượng Request

setTitle

setVisibleInDownloadUi

setNotificationVisibility

VISIBILITY_HIDDEN


<uses-permission
android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION
"/>

VISIBILITY_VISIBLE

VISIBILITY_VISIBLE_NOTIFY_COMPLETED

VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETED
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 23
2.3 Tuỳ chỉnh thông báo và nơi lưu trữ

DownloadManager:

Mặc định các nội dung tải được hệ thống lưu trữ trong Content Providers của
ứng dụng Download:

data/user/0/com.android.providers.downloads/cache/<Tên tập tin>

Các tập tin trong thư mục này sẽ không thể truy xuất bằng đường dẫn của tập
tin, chỉ có thể truy xuất thông qua Uri của tập tin.

Tuỳ chỉnh nơi lưu trữ: được thông qua đối tượng Request.

setDestinationUri

setDestinationInExternalPublicDir

setDestinationInExternalFilesDir


/storage/emulated/0/Android/data/<pakage-name>/files/
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 24
2.4 Truy vấn nội dung tải

DownloadManager:

Các cột dữ liệu quan trọng trong bảng dữ liệu Download.

COLUMN_ID

COLUMN_LOCAL_FILENAME

COLUMN_LOCAL_URI

COLUMN_MEDIA_TYPE

COLUMN_REASON

COLUMN_STATUS

COLUMN_BYTES_DOWNLOADED_SO_FAR

COLUMN_TOTAL_SIZE_BYTES
Lập trình Android (2014) – Bài 1. Khai thác tài nguyên Internet 25
2.4 Truy vấn nội dung tải

DownloadManager:

Việc truy vấn thông qua đối tượng Query, dữ liệu trả về là đối tượng Cursor.


Ví dụ:
Query query = new Query();
query.setFilterById(id_reference);
Cursor cursor = manager.query(query);
if (cursor.moveToFirst()) {
String path = cursor.getString(cursor.getColumnIndex
(DownloadManager.COLUMN_LOCAL_FILENAME));
if (path != null)
imageView.setImageURI(Uri.parse(path));
}

×