google cloud print in android

54
GOOGLE CLOUD PRINT IN ANDROID GVHD: Nguyễn Trần Thi Văn SV thực hiện: 1.Nguyễn Xuân Bàng 2.Từ Quốc Lân TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN

Upload: cong-thanh-nguyen

Post on 12-Jan-2017

958 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Google cloud print in android

GOOGLE CLOUD PRINT IN ANDROID

GVHD: Nguyễn Trần Thi VănSV thực hiện: 1. Nguyễn Xuân Bàng2. Từ Quốc Lân

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN

Page 2: Google cloud print in android

2 Các nội dung chính

I. Cloud và Google Cloud PrintII. Sơ đồ hoạt động Google Cloud Print (GCP)III. Các service interfaces

1. Submitting jobs2. Receiving jobs3. Sharing printers

IV. Tìm hiểu về JSONV. Hiện thực các bước bằng code

Page 3: Google cloud print in android

I. Cloud và Google Cloud Print

Định nghĩa: Cloud:

3

Page 4: Google cloud print in android

4 I. Cloud và Google Cloud Print

Google Cloud Print:1. Là dịch vụ web được phát triển bởi Google2. Người dùng có thể tương tác với các máy in thông

qua tài khoản Google3. Cho phép tương tác các máy in với tài khoản đó.4. Khi nhận lệnh in từ người dùng, GCP xác định

máy in thích hợp để thực thi

Page 5: Google cloud print in android

5 I. Cloud và Google Cloud Print

Google Cloud Print:

Page 6: Google cloud print in android

6 II. Sơ đồ hoạt động

1. Xác thực

2. Sử dụng dịch vụ

1. Xác thực

Page 7: Google cloud print in android

7 1. Xác thực bằng việc đăng nhập (ClientLogin authorization )

“ClientLogin” có thể được sử dụng với bất kỳ ứng dụng nào có thể tạo yêu cầu HTTP POST.

Với URL yêu cầu: https://www.google.com/accounts/ClientLogin

Theo sau URL trên là các đối số

Page 8: Google cloud print in android

8

Đối số Mô tảaccountType

Loại tài khoản yêu cầu các thực. Dùng “HOSTED_OR_GOOGLE” nếu là tài khoản Google

Email Địa chỉ email đầy đủ ([email protected])

Passwd Mật khẩu người dùng

service Tên dịch vụ yêu cầu xác thực. Google Calendar là 'cl‘, Google Cloud Print là ‘cloudprint’…

source Xác định ứng dụng người dùng. Mẫu : “tenCongTy-tenUngDung-phienBan”

logintoken (tùy chọn) Nếu đăng nhập thất bại. Lần sau bạn phải nhập chuỗi này.

logincaptcha

(tùy chọn) Chuỗi người dùng nhập để trả lời CAPTCHA

1. Xác thực bằng việc đăng nhập (ClientLogin authorization ) (tt)

Page 9: Google cloud print in android

9

Ví dụ:

https://www.google.com/accounts/ClientLogin?accountType=HOSTED_OR_GOOGLE&[email protected]&Passwd=north23AZ&service= cloudprint&source=UTE-App-1.0&logintoken=DQAAAGgA...dkI1LK9&logincaptcha=brinmar

Page 10: Google cloud print in android

101. Xác thực bằng việc đăng nhập (ClientLogin authorization ) (tt)

Hồi đáp của Google cho một yêu cầu xác thực: HTTP 200, nếu thành công

HTTP/1.0 200 OKSID=DQAAAGgA...7Zg8CTNLSID=DQAAAGsA...lk8BBbGAuth=DQAAAGgA...dk3fA5N

HTTP 403, nếu thất bại

HTTP/1.0 403 Access ForbiddenError=BadAuthentication

Tham khảo các lỗi: https://developers.google.com/accounts/docs/AuthForInstalledApps#Request

Page 11: Google cloud print in android

11 II. Sơ đồ hoạt động

1. Xác thực

2. Sử dụng dịch vụ

2. Sử dụng dịch vụ

Page 12: Google cloud print in android

12 2. Sử dụng dịch vụ GCP

Khi xác thực thành công, chúng ta có thể gọi các giao diện dịch vụ mà GCP cung cấp. Có 3 loại chính: Submitting print jobs Receiving print jobs Sharing printers

Page 13: Google cloud print in android

13 III. Các service interfaces1. Submitting Jobs

-Gồm 5 interfaces sau: /submit: gửi một lệnh in đến GCP /deleteJob: xóa một máy in xác định nào đó /jobs: lấy danh sách các lệnh in /printer: lấy tất cả các thuộc tính của máy in xác

định /search: danh sách các máy in xử dụng gần đây

-Cách sử dụnghttps://www.google.com/cloudprint/submit?paramters

Page 14: Google cloud print in android

14

-Ví dụ: https://www.google.com/cloudprint/submit?printerid=_google_doc_&title=TieuDe&ticket=aTicket&content=NoiDung&contentType=image/png

Đối số Mô tả

printerid * Mã máy in được tạo bởi GCP, được lấy nhờ vào /seacrch

title * Tiêu đề lệnh in

ticket * Gồm các thẻ theo định dạng CJT

content * Nội dung cần in, có thể là chuỗi hoặc một tập tin

contentType

(tùy chọn) loại tài liệu theo chuẩn MIME

tag (tùy chọn) được thêm vào lệnh in, hữu ích trong việc gửi và nhận lệnh in trong tương lai

1./submit

Page 15: Google cloud print in android

15

- Hồi đáp từ GCP:+ Là một đối tượng JSON+ Chứa:

Biến Boolean chỉ ra kết quả submit XSRF token được sử dụng Danh sách các đối số kèm theo với yêu cầu

Page 16: Google cloud print in android

16

- Hồi đáp từ GCP:+Là một đối tượng JSON+Chứa:

Biến Boolean chỉ ra kết quả xóa Một tin nhắn kèm theo XSRF token được sử dụng Danh sách các đối số kèm theo với yêu cầu

Đối số Mô tả

jobid * Mã máy in cần xóa,

2./deleteJobs

Page 17: Google cloud print in android

2./jobs17

Đối số Mô tảprinterid (tùy chọn) Tìm những lệnh in theo mã máy in

owner (tùy chọn) Chỉ ra tài khoản nào sở hữu máy in

status (tùy chọn) Trạng thái hiện tại của việc in (QUEUED, IN_PROGRESS, DONE, ERROR, SUBMITTED, HELD)

q (tùy chọn) Tiêu đề hoặc thẻ (tag) có chứa chuỗi q này

offset (tùy chọn) Tìm tại offset cho trước

limit (tùy chọn) Giới hạn số lệnh cần tìm

sortorder (tùy chọn) Chỉ tiêu sắp xếp: CREATE_TIME, CREATE_TIME_DESC, STATUS, …, TITLE, …

Page 18: Google cloud print in android

18 2./jobs-Hồi đáp từ GCP:

Là một đối tượng JSONChứa:

Giá trị Boolean chỉ ra kết quả tìm Danh sách các đối số kèm theo với yêu cầu Danh sách các lệnh in, với mỗi lệnh (id, printerid,

printerName, title, contentType, fileUrl, ticketUrl….)

Page 19: Google cloud print in android

19 3./printer

Đối số Mô tả

printerid * Mã máy in

use_cdd Nếu = true, lấy về tất cả các đặc tính máy in này

extra_fields

Bao gồm các thuộc tính mở rộng như: connectionStatus…

Page 20: Google cloud print in android

20 3./printer-Hồi đáp từ GCP:

Là một đối tượng JSONChứa:

Giá trị Boolean chỉ ra kết quả tìm Danh sách các đối số kèm theo với yêu cầu Danh sách các thuộc tính của máy in đó (id, name,

defaultDisplayName, displayName, description, type, proxy , createTime,….)

Page 21: Google cloud print in android

21 2./jobs

Đối số Mô tả

printerid * Mã máy in

use_cdd Nếu = true, lấy về tất cả các đặc tính máy in này

extra_fields

Bao gồm các thuộc tính mở rộng như: connectionStatus…

Page 22: Google cloud print in android

22

Đối số Mô tả

printerid (tùy chọn) Tìm những lệnh in theo mã máy in

owner (tùy chọn) Chỉ ra tài khoản nào sở hữu máy in

status (tùy chọn) Trạng thái hiện tại của việc in (QUEUED, IN_PROGRESS, DONE, ERROR, SUBMITTED, HELD)

q (tùy chọn) Tiêu đề hoặc thẻ (tag) có chứa chuỗi q này

offset (tùy chọn) Tìm tại offset cho trước

limit (tùy chọn) Giới hạn số lệnh cần tìm

sortorder (tùy chọn) Chỉ tiêu sắp xếp: CREATE_TIME, CREATE_TIME_DESC, STATUS, …, TITLE, …

4./search

Page 23: Google cloud print in android

23 2. Receiving Print Jobs

Mục đích: sẽ giúp các nhà phát triển phần mềm xây dựng các máy in và phần mềm in tích hợp các giải pháp của họ với dịch vụ Google Cloud Print để cho phép máy in của mình nhận được công việc từ Google Could

Các bước thực hiện Các Interfaces

Page 24: Google cloud print in android

24 Các bước thực hiện

- Bước 1: Đăng ký máy in+ Chuẩn bị các máy in ở trạng thái sẵn sàng để có thể đăng ký với GCP(Google Cloud Print)+  Sử dụng kết nối GCP của Google Chrome để đăng ký máy in (đối với máy in cổ điển)

Page 25: Google cloud print in android

25 Các bước thực hiện- Bước 2: Máy in xử lý+ Đồng bộ hóa với việc đăng ký GCP: Kiểm tra các dich vụ Cloud Print và đồng bộ trạng thái và tính năng của máy in với danh sách của Cloud+ Cập nhật máy in : Nếu một máy in đã được đăng ký, nhưng thông tin về nó đã thay đổi vì các lỗi, nâng cấp hoặc có sự cố, chúng ta có thể sử dụng interface /update để sửa lại các trường đã được thiết lập lúc đăng ký

Page 26: Google cloud print in android

26 Các bước thực hiện- Bước 3: Xử lý công việc in+ Nhận thông báo: Máy in sẽ nhận thông báo từ dịch vụ Google Cloud Print thông qua một kết nối+ Lấy công việc in: Máy in sẽ sử dụng interface /fetch để lấy tất cả các công việc có sẵn trong hàng đợi+ Xử lý việc in: Sử dụng interface /control để kiểm soát tình trạng của việc in ấn

Page 28: Google cloud print in android

28 1./control- Phiên bản GCP 2.0

Đối số Mô tả

jobid  Xác định công việc duy nhất( được tạo ra bởi server)

semantic_state_diff Sử dụng để cập nhật trạng thái và số lượng của các trang in

- Các phiên bản < GCP 2.0: có 4 đối số+ jobid+ status+ code+ message

Page 29: Google cloud print in android

29- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa: biến Boolean để chỉ ra kết quả submit một tin nhắn token XSRF sử dụng một danh sách các đối số yêu cầu các đối tượng công việc cập nhật+ Ví dụ:

Page 30: Google cloud print in android

30 2./deleteĐối số Mô tả

printerid  Xác định máy in duy nhất( được tạo ra bởi Google Cloud Print)

- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa:• biến Boolean để chỉ ra kết quả submit• một tin nhắn• token XSRF sử dụng• một danh sách các đối số yêu cầu+ Ví dụ:

Page 31: Google cloud print in android

31 3./fetchĐối số Mô tả

printerid  Xác định máy in duy nhất( được tạo ra bởi Google Cloud Print)

- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa:• biến Boolean để chỉ ra kết quả submit• một danh sách các đối số yêu cầu• một danh sách các công việc

Page 32: Google cloud print in android

32+ Ví dụ :

Page 33: Google cloud print in android

33 4./listĐối số Mô tả

proxy Xác định các proxy

extra_fields  Danh sách các trường bổ sung được ngăn cách bỡi dấu phẩy

- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa:• biến Boolean để chỉ ra kết quả submit• một danh sách các đối số yêu cầu• một danh sách các đối tượng máy in

Page 34: Google cloud print in android

34 + Ví dụ :

Page 35: Google cloud print in android

35 5./registerĐối số Mô tả

name Tên hệ thống của máy in (không cần phải là duy nhất)

default_display_name

Tên của máy in sẽ được hiển thị cho người sử dụng

proxy  Xác định các máy in client hoặc proxy (nhiều máy in có thể chia sẻ cùng proxy)

uuid  Nhà sản xuất-cung cấp số serial của máy in

manufacturer  Tên của các nhà sản xuất máy in

model  Mô hình máy in.

gcp_version  Phiên bản của giao thức GCP máy in hỗ trợ, ví dụ như "2.0"

setup_url  URL hướng dẫn cài đặt máy in.

support_url  URL mà người dùng sẽ đi tới nếu họ có nhu cầu hỗ trợ

Page 36: Google cloud print in android

36Đối số Mô tả

update_url URL mà người dùng sẽ được dẫn đến máy in nếu cần một bản cập nhật firmware

firmware  Phiên bản firmware của máy in

local_settings  Thiết lập cục bộ của máy in

semantic_state  Trạng thái hiện tại của máy in

capabilities  Tính năng của máy in

defaults  Thiết lập máy in mặc định

tag  Tag thêm vào máy in

data  Dữ liệu cá nhân them vào máy in

Page 37: Google cloud print in android

37- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa:• biến Boolean để chỉ ra kết quả submit• token XSRF sử dụng• một danh sách các đối số yêu cầu• một danh sách các máy in+ Ví dụ

Page 38: Google cloud print in android

38 6./updateĐối số Mô tả

printerid  Xác định máy in duy nhất (được tạo ra bởi Google Cloud Print)

name Tên hệ thống của máy in (không cần phải là duy nhất)

default_display_name

Tên của máy in sẽ được hiển thị cho người sử dụng

proxy  Xác định các máy in client hoặc proxy (nhiều máy in có thể chia sẻ cùng proxy)

uuid  Nhà sản xuất-cung cấp số serial của máy in

manufacturer  Tên của các nhà sản xuất máy in

model  Mô hình máy in.

gcp_version  Phiên bản của giao thức GCP máy in hỗ trợ, ví dụ như "2.0"

setup_url  URL hướng dẫn cài đặt máy in.

support_url  URL mà người dùng sẽ đi tới nếu họ có nhu cầu hỗ trợ

Page 39: Google cloud print in android

39Đối số Mô tả

update_url URL mà người dùng sẽ được dẫn đến máy in nếu cần một bản cập nhật firmware

firmware  Phiên bản firmware của máy in

local_settings  Thiết lập cục bộ của máy insemantic_state  Trạng thái hiện tại của máy in

capabilities  Tính năng của máy in

defaults  Thiết lập máy in mặc định

tag  Tag thêm vào máy in

remove_tag  Bỏ tag ra khỏi máy in

data  Dữ liệu cá nhân thêm vào máy in

remove_data  Bỏ dữ liệu cá nhân ra khỏi máy in

Page 40: Google cloud print in android

40- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa:• biến Boolean để chỉ ra kết quả submit• một tin nhắn• token XSRF sử dụng• một danh sách các đối số yêu cầu• một đối tượng máy in được truy cập+ Ví dụ

Page 41: Google cloud print in android

41 3. Sharing Printers

- Mục đích: sẽ giúp các nhà phát triển phần mềm chia sẻ máy in kết hợp với một tài khoản xác thực- Các Interfaces: Gồm 2 interface /share : chia sẻ máy in với một phạm vi (người

dùng hoặc nhóm hoặc tên miền) /unshare : xóa một phạm vi của máy in

Page 42: Google cloud print in android

42 1./shareĐối số Mô tả

printerid  ID của máy in được chia sẻ

scope  Email của người dùng hoặc nhóm hoặc tên miền để chia sẻ máy in

role  Vai trò của người dùng hoặc nhóm được gán. Có thể là USER hoặc MANAGER

skip_notification   True để không gửi một email mời đến phạm vi các máy in được chia sẻ.

Page 43: Google cloud print in android

43- Hồi đáp từ GCP+ Là 1 chuỗi JSON+ Chứa:• biến Boolean để chỉ ra kết quả submit• một tin nhắn• token XSRF sử dụng• một danh sách các đối số yêu cầu

Page 44: Google cloud print in android

44 2./unshare

Đối số Mô tả

printerid  ID của máy in không được chia sẻ

scope  Email của người dùng hoặc nhóm hoặc tên miền để xóa chia sẻ từ máy in

-Hồi đáp từ GCP : giống hồi đáp của interface /share

Tài liệu tham khảo: https://developers.google.com/cloud-print/

Page 45: Google cloud print in android

45 IV. Tìm hiểu về JSON

JSON (JavaScript Object Notation) : là một dạng chuẩn để định dạng dữ liệu, nó có thể dùng để lưu trữ và trao đổi thông tin văn bản

Lợi ích của JSON: khi sử dụng JSON với JavaScript thì không cần phải có các bước phân tích phức tạp như đối với XML. Mà có thể truy vấn trực tiếp giá trị theo tên (khóa) được định nghĩa trong JSON.

JSON là một chuẩn cực kỳ quan trọng trong lập trình ở phía client

Page 46: Google cloud print in android

46 Ví dụ- Dữ liệu XML - Dữ liệu JSON

Sử dụng JavaScript để đọc dữ liệu

Page 47: Google cloud print in android

47 Các trường hợp nên sử dụng JSON

Lưu trữ dữ liệu đơn thuần, khi bạn muốn lưu trữ dữ liệu dưới dạng metadata ở phía server. Chuỗi JSON sẽ được lưu vào database và sau đó khi cần dữ liệu thì sẽ được giải mã

Sử dụng JavaScript để xử lý thông tin trả về từ phía server. Rất nhanh và rất dễ dàng.

Page 48: Google cloud print in android

48 IV. Hiện thực các bước bằng code1. Lấy chuỗi xác thực2. authorizeURL=“https

://www.google.com/accounts/ClientLogin?accountType=HOSTED_OR_GOOGLE&[email protected]&Passwd=north23AZ&service= cloudprint&source=UTE-App-1.0”

Page 49: Google cloud print in android

49 1. Lấy chuỗi xác thực

URL url = new URL(authorizeURL);HttpURLConnection connection = (HttpURLConnection)url.openConnection();InputStream inStream = connection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));StringBuilder builder = new StringBuilder();String line;String response="";while ((line = reader.readLine()) != null) { builder.append(line); builder.append("\r\n");}response =builder.toString();

Page 50: Google cloud print in android

50 1. Lấy chuỗi xác thực

Sử dụng các hàm cắt chuỗi để lấy ra chuỗi xác thực: SID=DQAAAPMAAABoESaB7JK9JO0HA_eIboilyGYHusGp-

foFoMhIcoqGW14kIzN2Z8cIPHyAPodArKFPOZh8Nus_cLvSTskfYEqB-2UMbDFwTPqC3JF8OrOKq67MplcP7Q7YPfGU7XCwkaQYO9OCdrbSbtRYMK-GFognkBbPWwakQ-Mo-ffwrj1WABLz43MLWB98YQ4CHlomx7_ArQr3nvyXNiK81npMxvLU_BIah8xwWaozFgBwXVLRCjTimJ465Db7FPmK3gfstvkKY20LwWXiwN01Oxnomcx0Hd5_FvDd4PS6WQ2JflCYznqQb1tlHGeL1m42LFM-Zf2XOpiclnnzVWc4hdI9dRWw

LSID=DQAAAPYAAAD_NZjd5nek3rsve8tKyudZg1b0D4ZXvLVdDwOHpbCB3Qh_pThOlEMaBBkfKvfJowPOo8unKOQgAiZLGMclpvoet93FiadurjHZjwKqMsyh30xSl108kwI1RSj2D-uxxU9BwATebzS2DYCBQszvzLcR6QynUg2SbRT1ACqxeGcG4fNxu0189TrA3M9Jt251THwo9jmoTmJn0w0oL08ISWg2dUWOjygRUEU_BCR3uegjOgtNIpahGZFDikuDRu2sWekkEe25AK9G1_Ran-IcjrGUW6nx_BzRRH-ASVLcokk7uUL7aYh-GXUpO8qGLNsIPM6M-SPtiMk6vJq1-hbj21cv

Auth=DQAAAPYAAABjE_bOy282mO6DhHEjU-p4RbJi8eu-1z4qVjWcrY21QjzDcDuNyxgelHgwXYuZTf051uO3InL3T7RF3eJv9GltrB2YEWY43zLl0JhBCAU7wtc5xOUBNO4fgtJ0utdD4f2ffQZ0gG0ENXtUwueIe8jJaurF7631lHQlb23VBKPJzaoOTH54RlaybLJAQZsSGbgJcmJqLsea1BiTZsvrTtyFkd2ayvLVVg3NXBUbTwfla5usoHv6ZF_ZRDTFcpzsbJDNVmiM6P5EhN1mV9wK-QHXyc4XTU5auJaStAl72crTuOohGtWJB58dHqi_btne8A3f2XaUK1VNKQg4cnUbgg_W

Page 51: Google cloud print in android

51 2. Sử dụng dịch vụ

a . Gửi yêu cầu kèm theo mã xác thựchttps://www.google.com/cloudprint/submit?printerid=_google_doc_&title=TieuDe&ticket=aTicket&content=NoiDung&contentType=text/plain

Auth=DQAAAP…gg_W -> Kèm vào header

Application

Requests data with token

Page 52: Google cloud print in android

52 2. Sử dụng dịch vụ

b . Nhận kết quả hồi đáp

ApplicationResponds

{ success = true, message = Đã thêm lệnh in., xsrf_token = AIp06DiRHVMG46e5mcUfn5vjPbEUESFJNw:1417706784605}

Page 53: Google cloud print in android

53 2. Sử dụng dịch vụ

urlString=“https://www.google.com/cloudprint/submit?printerid=_google_doc_&title=TieuDe&ticket=aTicket&content=NoiDung&contentType=text/plain”

URL url = new URL(urlString);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.addRequestProperty("X-CloudPrint-Proxy", SERVICE_SOURCE_NAME);connection.addRequestProperty("Authorization", "GoogleLogin auth=“ + Auth);// sau đó lấy hồi đáp về từ kết nối này

Page 54: Google cloud print in android

54

THANK YOU