68
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

Android & Google API

Embed Size (px)

Citation preview

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

Nội Dung

JSON

Tổng quan về Android OS

Goole API

2

Chương trình minh họa

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

Các Phiên Bản

4

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

Khả năng tùy biến

(Customize)

5

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

Kho ứng dụng phong phú

(Android market)

6

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

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

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.

4/20/2016 10

Máy Ảo

Trong Eclipse chọn Window –> Android Virtual Device

Manager –> New

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

Một số thư viện JSON

4/20/2016 12

JSON

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

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

Sử Dụng

API Key:

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

4/20/2016 15

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

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

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

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

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

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

Place Searches

4/20/2016 22

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

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

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

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

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

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

Place Detail

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

Place Detail - Request

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

arameters

Output:

• JSON

• XML

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).

• 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

• 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

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

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.

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.

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.

4/20/2016 38

Google Map API

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

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,…

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ả

Google Map API

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

APIs

4/20/2016 42

Google Map API

4/20/2016 43

Google Map Key

(Android key)

Google Map 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

Thành phần google map API:

• Map Objects

– MapFragment

– MapView

• Map Types

• Map Padding

Google Map 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

đồ

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:

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 ()

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

MapView

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,….

• 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…

• Satellite

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

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

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

thị.

• 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.

GoogleMap map;

...

// Sets the map type to be "hybrid"

map.setMapType(GoogleMap.MAP_TYPE_HYBRID);

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

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);

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"));

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

Direction - Request

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

Output:• JSON• XML

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:

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ả• …

Direction – Request

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

Direction – Response

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.

Direction – Response

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.

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.

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

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