Top Banner
TÌM HIỂU ANDROID VÀ GOOGLE API 4/20/2016 1 Chung Nhật Trường – 11110153 Phạm Xuân Lộc - 11110073
68

Android & Google API

Jan 23, 2018

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android & Google API

TÌM HIỂU ANDROID

VÀ GOOGLE API

4/20/2016 1

Chung Nhật Trường – 11110153

Phạm Xuân Lộc - 11110073

Page 2: Android & Google API

Nội Dung

JSON

Tổng quan về Android OS

Goole API

2

Chương trình minh họa

Page 3: Android & Google API

I. Tổng Quan Về Android OS

Được phát triển bởi Google

Là hệ điều hành mã nguồn mở

cho thiết bị di động

Dựa trên nền tảng Linux

3

Page 4: Android & Google API

Các Phiên Bản

4

Page 5: Android & Google API

Những Điểm Nổi Bật

Khả năng tùy biến

(Customize)

5

Page 6: Android & Google API

Những Điểm Nổi Bật

Kho ứng dụng phong phú

(Android market)

6

Page 7: Android & Google API

Hỗ trợ tối đa các chức

năng của Google

(Google maps,

Google Latitude,

Gmail, Youtube…)

7

Những Điểm Nổi Bật

Page 8: Android & Google API

Công cụ và môi trường

phát triển

• Một môi trường hoàn chỉnh để có thể phát triển các

ứng dụng trên nền tảng Android gồm có:

– Cài Java Development Kit (JDK)

http://www.oracle.com/technetwork/java/javase/do

wnloads/jdk8-downloads-2133151.html

- Công cụ lập trình Android

http://developer.android.com/sdk/index.html

8

Page 9: Android & Google API

Máy Ảo

4/20/2016 9

Trong Eclipse chọn Window –> Android SDK Manager

Check các phiên bản muốn cài đặt sau đó chọn Install

Packages.

Page 10: Android & Google API

4/20/2016 10

Máy Ảo

Trong Eclipse chọn Window –> Android Virtual Device

Manager –> New

Page 11: Android & Google API

II. JSON

JSON (JavaScript Object Notation) : là cú pháp để lưu trữ và

trao đổi thông tin văn bản. Cũng giống như XML.

JSON là nhỏ hơn so với XML, và nhanh hơn và dễ dàng hơn để

phân tích (parse)

4/20/2016 11

Page 12: Android & Google API

Một số thư viện JSON

4/20/2016 12

JSON

Page 13: Android & Google API

Phân Tích Json

Phân tích Json thành đối tượng

Cách làm gồm 3 bước:

• Tạo đối tượng JSONParser

• Parser chuỗi JSON về một JSONObject

• Lấy các giá trị trong jsonObject thông qua các Key

Phân tích Json thành tập đối tượng

Cách làm gồm 3 bước:

• Tạo đối tượng JSONParser

• Parser chuỗi JSON về một JSONArray

• Lấy các giá trị trong jsonObject thông qua các Key

4/20/2016 13

Page 14: Android & Google API

Google Place API

Google Places API là một dịch vụ cung cấp thông tin về các địa điểm

trên toàn thế giới như các địa điểm kinh doanh, vị trí địa lý, hoặc các

địa danh nổi tiếng… bằng cách sử dụng yêu cầu thông qua HTTP

4/20/2016 14

Page 15: Android & Google API

Sử Dụng

API Key:

http://code.google.com/apis/console

4/20/2016 15

Page 16: Android & Google API

Goole Place Autocomplete

Google Places Autocomplete API là một dịch vụ web cung cấp bởi

Google, giúp tự động hoàn chỉnh từ khóa tìm kiếm bằng cách trả về

danh sách các địa điểm kinh doanh, địa chỉ,.. gần với từ khóa nhận

được nhất.

4/20/2016 16

Page 17: Android & Google API

Request

Một yêu cầu của Places Autocomplete là một đường dẫn HTTP URL

có dạng:

https://maps.googleapis.com/maps/api/place/autocomplete/output

?parameters

Trong đó, output có thể có các giá trị:

•json

•xml

Parameters là các tham số được phân biệt nhau bởi dấu &.

Bao gồm các tham số bắt buộc và các tham số không bắt buộc:

4/20/2016 17

Page 18: Android & Google API

Parameters

Tham Số Mô Tả

Input (bắt buộc) từ khóa tìm kiếm

Sensor (bắt buộc) biết yêu cầu được gửi có sử dụng thiết bị định vị để xác

định ví trí gửi yêu cầu không

Key (bắt buộc) API key của ứng dụng

4/20/2016 18

https://maps.googleapis.com/maps/api/place/autocomplete/json?loca

tion=10.823099,106.629664&radius=1000&types=establishment|ge

ocode&key=AIzaSyBfLO4nm9nDdZV4NZGAGlLgTnnoU7ry1Pk

&language=en&sensor=true&input=vo%20van

Page 19: Android & Google API

Response

Kết quả trả về dạng JSON gồm hai phần tử gốc sau:

• status – chứa siêu dữ liệu thể hiện trạng thái của request

• predictions – chứa một danh sách các địa điểm tìm được kèm

theo thông tin từng địa điểm

4/20/2016 19

Page 20: Android & Google API

Status

Status Mô tả

ZERO_RESULTS không tìm thấy kết quả nào phù

hợp

OVER_QUERY_LIMIT quá giới hạn gửi yêu cầu trong một

ngày

REQUEST_DENIED yêu cầu bị từ chối

INVALID_REQUEST yêu cầu không hợp lệ

OK không có lỗi nào xảy ra và có ít

nhất một kết quả được trả về.

4/20/2016 20

Page 21: Android & Google API

Predictions

predictions Mô tả

description tên của kết quả

reference chứa mã duy nhất dùng để lấy thêm

thông tin về địa điểm thông qua một API

khác đó là Place Detail API.

id mã duy nhất để xác định địa điểm này

terms là một mảng chứa từng phần (section)

của kết quả tìm được trong chuỗi

description (value và offset)

matched_substring hai phần tử offset và lengh, dùng để xác

định vị trí và độ dài của đoạn văn bản

(input) trong kết quả tìm được

4/20/2016 21

Page 22: Android & Google API

Place Searches

4/20/2016 22

Page 23: Android & Google API

Request

Một yêu cầu của Places Autocomplete là một đường dẫn HTTP URL có

dạng:

https://maps.googleapis.com/maps/api/place/search/output?parameter

s

Trong đó, output có thể có các giá trị:

•json

•xml

Parameters là các tham số được phân biệt nhau bởi dấu &.

Bao gồm các tham số bắt buộc và các tham số không bắt buộc

4/20/2016 23

Page 24: Android & Google API

Các Tham Số

Tham Số Mô Tả

location (bắt buộc) tâm của khu vực muốn tìm kiếm

Radius (bắt buộc) bán kính khu vực tìm kiếm (m)

Key (bắt buộc) API key của ứng dụng

4/20/2016 24

https://maps.googleapis.com/maps/api/place/search/json?lo

cation=10.823099,106.629664&radius=5000&&types=atm

&key=AIzaSyBfLO4nm9nDdZV4NZGAGlLgTnnoU7ry1P

k&language=en&sensor=true

Page 25: Android & Google API

Response

Kết quả trả về dạng JSON gồm các phần tử gốc

• status,

• html_attributions,

• results

4/20/2016 25

Page 26: Android & Google API

Status

Status Mô tả

ZERO_RESULTS không tìm thấy kết quả nào phù

hợp

OVER_QUERY_LIMIT quá giới hạn gửi yêu cầu trong

một ngày

REQUEST_DENIED yêu cầu bị từ chối

INVALID_REQUEST yêu cầu không hợp lệ

OK không có lỗi nào xảy ra và có ít

nhất một kết quả được trả về.

4/20/2016 26

Page 27: Android & Google API

Html_attributions

Chứa các thông tin về nhà cung cấp phải được hiển thị cho người

dùng.

4/20/2016 27

Page 28: Android & Google API

Results

results Mô tả

name tên của địa điểm.

viciniy các địa điểm lân cận

geometry chứa thông tin về vị trí địa lý của địa

điểm

icon chứa URL của icon cho địa điểm

types[] chứa một mảng các loại địa điểm mô tả

cho các địa điểm.

reference chứa mã duy nhất dùng để lấy thêm

thông tin về địa điểm thông qua một API

khác đó là Place Detail API.

id chứa mã duy nhất để xác định địa điểm

này

4/20/2016 28

Page 29: Android & Google API

Place Detail

• Cung cấp thông tin chi tiết về 1 địa điểm trên Map

Page 30: Android & Google API

Place Detail - Request

https://maps.googleapis.com/maps/api/place/details/output?p

arameters

Output:

• JSON

• XML

Page 31: Android & Google API

Place Detail – Request –

Parameter

• Required:

• key: API key dùng cho trình duyệt

• placeid: duy cho mỗi địa điểm, lấy từ place searches

• reference: duy cho mỗi địa điểm, lấy từ place searches

(deprecated).

Page 32: Android & Google API

• Optional:

• language: ngôn ngữ cho kết quả trả về

• sensor: cho biết yêu cầu được gửi đến từ thiết bị có sử

dụng thiết bị định vị hay không, có giá trị true hoặc

false.

• …

Place Detail – Request –

Parameter

Page 33: Android & Google API

• Ví dụ:

https://maps.googleapis.com/maps/api/place/nearbysearch/jso

n?location=10.849938333333334,106.77168666666667&radi

us=5000&types=hospital&sensor=true&key=AIzaSyAZE2N

Hm-bgBqY6qLorYaNHZeUKV6eLuF4

Place Detail – Request –

Parameter

Page 34: Android & Google API

4/20/2016 34

Kết quả trả về dạng JSON gồm các phần tử gốc:

• Status

• html_attributions,

• Results.

Place Detail – Response

Page 35: Android & Google API

Place Detail – Response

Tham số Mô tả

name Tên của địa điểm.

viciniy

Các địa điểm lân cận, thường thì các

đường phố hoặc vùng lân cận nằm

trong phạm vi các kết quả.

types[]Chứa một mảng các loại địa điểm mô

tả cho các địa điểm.

formated_phone_number Số điện thoại của địa điểm.

formated_address Địa chỉ của địa điểm.

Page 36: Android & Google API

Place Detail – Response

address_components[]

Là một mảng các thành phần địa chỉ, ví dụ: “111 8th

Avenue, New York, NY" bao gồm 3 thành phần "111" (số

nhà), "8th Avenue" (đường), "New York" (thành phố) and

"NY" (tiểu bang). Mỗi address_component bao gồm:

type[] – mảng các loại địa điểm.

long_name – tên đầy đủ của add_component.

short_name – tên viết tắt, ví dụ “Alaska” thành

“AK”.

geometry Chứa location (lat, long) của địa điểm.

Page 37: Android & Google API

Place Detail – Response

urlĐịa chỉ trang thông tin chi tiết của địa điểm (Google Place

Page).

rating Điểm đánh giá của người dùng cho địa điểm (từ 0 đến 5).

reference

Mã dùng để truy vấn đên Details service trong tương lai.

Mã này có thể khác mã reference được sử dụng để yêu cầu

đến Detail service trước đó. Mã này là để cập nhật thêm

thông tin.

id

Chứa mã duy nhất để xác định địa điểm này. id này không

được dùng để lấy thông tin về địa điểm, nhưng có thể

được sử dụng để hợp nhất dữ liệu của một địa điểm. id này

thỉnh thoảng có thể bị thay đổi.

Page 38: Android & Google API

4/20/2016 38

Google Map API

Dịch vụ bản đồ trực tuyến

Page 39: Android & Google API

Google Map API

• Google Maps là một dịch vụ bản đồ trực tuyến miễn phí

• Được cung cấp bởi Google

• Hỗ trợ bản đồ: đường sá, bản đồ vệ tinh, hướng dẫn đường đi,

địa điểm,…

• Có thể tích hợp vào website, ứng dụng,…

Page 40: Android & Google API

Google Map API

• 2006, Google giới thiệu công nghệ Google Maps cho

Mobile

• Android platform là một nền tảng hỗ trợ tối đa cho Google

Maps

• Dễ dàng nhúng nó vào ứng dụng của mình một cách dễ

dàng và hiệu quả

Page 41: Android & Google API

Google Map API

• Để sử dụng Google Map cho Android, cần cài đặt Google

APIs

Page 42: Android & Google API

4/20/2016 42

Google Map API

Page 43: Android & Google API

4/20/2016 43

Google Map Key

(Android key)

Google Map API

Page 44: Android & Google API

4/20/2016 44

Google Map API

Bổ sung một số quyền vào AndroidManifest.xml

Thư viện OpenGL ES version 2

Page 45: Android & Google API

Thành phần google map API:

• Map Objects

– MapFragment

– MapView

• Map Types

• Map Padding

Google Map API

Page 46: Android & Google API

Map Objects

• Trong giao diện,để hiển thị bản đồ ta sử dụng đối tượng

MapFragment hoặc MapView

• GoogleMap xử lý các tác vụ sau tự động:

– Kết nối với dịch vụ Google Map

– Tải bản đồ

– Hiển thị các ô bản đồ lên màn hình thiết bị

– Hiển thị những điều khiển như pan và zoom

– Hồi đáp lại pan và zoom khi di chuyển bản đồ hoặc phóng to thu nhỏ

• Ngoài các xử lý tự động, ta có thể kiểm soát bản đồ như: xử

lý khi chạm lên bản đồ, vẽ các biểu tượng đánh dấu trên bản

đồ

Page 47: Android & Google API

MapFragment

• Đối tượng MapFragment như một container cho bản đồ, và

cung cấp truy cập vào các đối tượng GoogleMap.

<?xml version="1.0" encoding="utf-8"?>

<fragment

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/map"

android:name="com.google.android.gms.maps.MapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent" />

• Khai báo một fragment trong giao diện:

Page 48: Android & Google API

MapView

• Giống như một MapFragment, các MapView đóng

vai trò như một container cho bản đồ, xử lý chức năng

bản đồ thông qua các đối tượng GoogleMap.

• Sdụng các lớp này phải thông qua tất cả phương thứctrong chu kỳ sống của Activity - như onCreate (),

onDestroy (), onResume (), và onPause ()

Page 49: Android & Google API

• Khai báo MapView trong giao diện:

MapView

Page 50: Android & Google API

Map types

Các API Google Maps Android cung cấp bốn loại bản

đồ, cũng như một tùy chọn để không có bản đồ ở tất

cả:

• Normal:

Bản đồ đường đặc trưng. Gồm đường

giao thông, một số tính năng nhân tạo,

và đặc điểm tự nhiên quan trọng như

dòng sông,….

Page 51: Android & Google API

• Hybrid:

Bản đồ được chụp từ vệ tinh, có thêm đường

và nhãn được hiển thị như trạm xe bus,đánh dấu địa

điểm…

Page 52: Android & Google API

• Satellite

Cũng là bản đồ chụp từ

vệ tinh, nhưng đường và

nhãn không được hiển

thị.

Page 53: Android & Google API

• Terrain :

Bản đồ địa hình. Bản đồ bao

màu sắc địa hình, các tuyến đường

và các nhãn.

Page 54: Android & Google API

GoogleMap map;

...

// Sets the map type to be "hybrid"

map.setMapType(GoogleMap.MAP_TYPE_HYBRID);

• Chọn loại bản đồ hiển thị:

Page 55: Android & Google API

Chức Năng Cơ Bản

4/20/2016 55

1. Biến GoogleMap

Biến dùng để điều khiển bản đồ, tác động tới giao diện của

bản đồ. Khởi tạo bằng cách:

GoogleMap mMap = ((SupportMapFragment) getSupportFragmentManager().findF

ragmentById(R.id.map)).getMap();

2. Biến LatLng

Biến để lưu tọa độ 1 điểm, gồm kinh độ và vĩ độ

LatLng latlngPhamHung = new LatLng(21.009642, 105.788684);

Page 56: Android & Google API

4/20/2016 56

3. Phóng to, thu nhỏ bản đồ (Zoom in, zoom out)

Bản đồ có độ zoom từ 0->19, số càng lớn thì bản đồ càng phóng

to

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlngPhamHung, 16

));

Chức Năng Cơ Bản

4. Đánh dấu 1 điểm trên bản đồ

Để đánh dấu điểm trên bản đồ và khi người dùng chạm

vào điểm đánh dấu sẽ hiện lên 1 khung nhỏ ghi tên đường

thì làm như sau:

mMap.addMarker(new MarkerOptions().position(latlngPhamHung).title("Phạm Hù

ng"));

Page 57: Android & Google API

Google Directions API

• Để tính toán đường đi giữa hai địa điểm, baogồm cả cách đi (lộ trình), thời gian và khoảngcách ngắn nhất, ta có thể dùng Google Maps API Direction Service

Page 58: Android & Google API

Direction - Request

• http://maps.googleapis.com/maps/api/directions/output?parameters

Output:• JSON• XML

Page 59: Android & Google API

Direction - Request

• Required:

• origin: Địa chỉ hoặc tọa độ địa lý (latitude/longitude) từ

nơi cần tính đường đi (nguồn).

• destination: Địa chỉ hoặc tọa độ địa lý

(latitude/longitude) nơi cần đến (đích).

• sensor:

Page 60: Android & Google API

Direction - Request

• Optional:• mode: Xác định cách thức di chuyển (driving,

walking, bicycling) để tính đường đi cho phù hợp

• language: Ngôn ngữ thể hiện trong kết quả• …

Page 61: Android & Google API

Direction – Request

• Ví dụ:https://maps.googleapis.com/maps/api/directions/json?origin=10.819742431522862,106.62718333303928&destination=10.833911896665953,106.62622578442097&sensor=false

Page 62: Android & Google API

Direction – Response

Page 63: Android & Google API

Direction – Response

• Một route bao gồm cả lộ trình đường đi màu xanh ở trên.

• Từ A đến B là một leg, và từ B đến C là một leg.

• Một step là một đoạn đường, trên hình là từ A đến 2.Vo Van Ngan là một step.

Page 64: Android & Google API

Direction – Response

Page 65: Android & Google API

Direction – ResponseTên thuộc tính Giá trị và ý nghĩa

status

OK Kết quả trả về hợp lệ

NOT_FOUNDNguồn, đích hoặc một trong các điểm

trung gian không xác định được

ZERO_RESULT Không tìm được đường đi nào

MAX_WAYPOINTS

_EXCEEDED

Có quá nhiều waypoint được cung cấp

trong request. Số waypoint tối đa là 8.

INVALID_REQUEST Request không hợp lệ

OVER_QUERY_LIMITQuá số request bị giới hạn trong một

khoảng thời gian

REQUEST_DENIED Bị từ chối yêu cầu bởi nhà cung cấp

UNKNOWN_ERRORRequest không được xử lý bởi lỗi

server, có thể thử lại sẽ thành công.

routes Là một mảng các “lộ trình” mà server tìm được để đi từ điểm gốc tới đích.

Page 66: Android & Google API

Direction – Response - Routes

Tên thuộc tính Giá trị và ý nghĩa

summaryMột chuỗi mô tả ngắn gọn về lộ trình. Có thể dùng để đặt tên cho

lộ trình.

legs[]

Một mảng chứa những thông tin về một nhánh đi giữa hai địa

điểm trong lộ trình. Một lộ trình nếu không được cung cấp các

waypoint thì chỉ có 1 leg.

waypoint_orderChứa một mảng các waypoint theo thứ tự trong các waypoint

được tính toán trong route.

overview_polylineChứa đối tượng giữ một mảng những points được mã hóa và

levels thể hiện đường đi gần đúng của kết quả.

bounds Đường bao chứa lộ trình (route) trên bản đồ.

copyrights Chuỗi thể hiện bản quyền của lộ trình.

warnings[] Mảng các cảnh báo có thể xảy ra trong lộ trình.

Page 67: Android & Google API

Direction – Response - Legs

Tên thuộc tính Ý nghĩa

steps[]Mảng các step. Mỗi step là một tập các thông tin trên một đoạn

đường trong lộ trình.

distance Tổng khoảng cách trong một leg.

durationTổng thời gian trong một leg. Thời gian này được tính toán dựa

theo travel_mode cung cấp trong request.

start_location Tọa độ điểm bắt đầu trên leg

end_location Tọa độ điểm đích trên leg

start_address Địa chỉ điểm bắt đầu bằng chữ dựa vào start_location

end_address Địa chỉ điểm đích bằng chữ dựa vào end_location

Page 68: Android & Google API

Direction – Response - Steps

Tên thuộc tính Ý nghĩa

html_instructionHướng dẫn đi bằng lời trên đoạn này, đã được định

dạng theo html.

distanceTổng khoảng cách trên một step (đoạn đường). Cũng có

2 thuộc tính con giống distance trong leg.

durationTổng thời gian trong một step. Cũng có 2 thuộc tính con

giống duration trong leg.

start_location Điểm bắt đầu của một step

end_location Điểm kết thúc của một step