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

Android and Google API

Embed Size (px)

Citation preview

Page 1: Android and Google API

05/03/2023 1

TÌM HIỂU ANDROID VÀ GOOGLE API

Chung Nhật Trường – 11110153Phạm Xuân Lộc - 11110073

Page 2: Android and Google API

2

Nội Dung

JSON

Tổng quan về Android OS

Goole API

Chương trình minh họa

Page 3: Android and Google API

3

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

Page 4: Android and Google API

4

Các Phiên Bản

Page 5: Android and Google API

5

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

Khả năng tùy biến(Customize)

Page 6: Android and Google API

6

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

Kho ứng dụng phong phú

(Android market)

Page 7: Android and Google API

7

Hỗ trợ tối đa các chức năng của Google(Google maps, Google Latitude, Gmail, Youtube…)

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

Page 8: Android and Google API

8

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/downloads/jdk8-downloads-2133151.html - Công cụ lập trình Android http://developer.android.com/sdk/index.html

Page 9: Android and Google API

05/03/2023 9

Máy Ảo

Trong Eclipse chọn Window –> Android SDK ManagerCheck các phiên bản muốn cài đặt sau đó chọn Install Packages.

Page 10: Android and Google API

05/03/2023 10

Máy Ảo

Trong Eclipse chọn Window –> Android Virtual  Device Manager –> New

Page 11: Android and Google API

05/03/2023 11

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)

Page 12: Android and Google API

05/03/2023 12

Một số thư viện JSON

JSON

Page 13: Android and Google API

05/03/2023 13

Phân Tích Json

Phân tích Json thành đối tượngCá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ượngCá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

Page 14: Android and Google API

05/03/2023 14

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

Page 15: Android and Google API

05/03/2023 15

Sử Dụng

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

Page 16: Android and Google API

05/03/2023 16

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.

Page 17: Android and Google API

05/03/2023 17

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:

Page 18: Android and Google API

05/03/2023 18

Parameters

Tham Số Mô TảInput (bắt buộc) từ khóa tìm kiếmSensor (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ôngKey (bắt buộc) API key của ứng dụng

https://maps.googleapis.com/maps/api/place/autocomplete/json?location=10.823099,106.629664&radius=1000&types=establishment|geocode&key=AIzaSyBfLO4nm9nDdZV4NZGAGlLgTnnoU7ry1Pk&language=en&sensor=true&input=vo%20van

Page 19: Android and Google API

05/03/2023 19

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

Page 20: Android and Google API

05/03/2023 20

Status

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

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

một ngàyREQUEST_DENIED yêu cầu bị từ chốiINVALID_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ề.

Page 21: Android and Google API

05/03/2023 21

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

Page 22: Android and Google API

05/03/2023 22

Place Searches

Page 23: Android and Google API

05/03/2023 23

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?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

Page 24: Android and Google API

05/03/2023 24

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ếmRadius (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

https://maps.googleapis.com/maps/api/place/search/json?location=10.823099,106.629664&radius=5000&&types=atm&key=AIzaSyBfLO4nm9nDdZV4NZGAGlLgTnnoU7ry1Pk&language=en&sensor=true

Page 25: Android and Google API

05/03/2023 25

Response

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

Page 26: Android and Google API

05/03/2023 26

StatusStatus 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ốiINVALID_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ề.

Page 27: Android and Google API

05/03/2023 27

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.

Page 28: Android and Google API

05/03/2023 28

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

Page 29: Android and Google API

Place Detail

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

Page 31: Android and 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 and 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 and Google API

• Ví dụ:https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=10.849938333333334,106.77168666666667&radius=5000&types=hospital&sensor=true&key=AIzaSyAZE2NHm-bgBqY6qLorYaNHZeUKV6eLuF4

Place Detail – Request – Parameter

Page 34: Android and Google API

05/03/2023 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 and Google API

Place Detail – Response

Tham số Mô tảname Tên của địa điểm.

viciniyCá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 and 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 and 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 and Google API

05/03/2023 38

Google Map API

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

Page 39: Android and 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 and 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 and Google API

Google Map API

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

Page 42: Android and Google API

05/03/2023 42

Google Map API

Page 43: Android and Google API

05/03/2023 43

Google Map Key (Android key)

Google Map API

Page 44: Android and Google API

05/03/2023 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 and Google API

Thành phần google map API:• Map Objects– MapFragment– MapView

• Map Types• Map Padding

Google Map API

Page 46: Android and 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 and 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 and 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ức trong chu kỳ sống của Activity - như onCreate (), onDestroy (), onResume (), và onPause ()

Page 49: Android and Google API

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

MapView

Page 50: Android and 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 and 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 and Google API

• SatelliteCũng là bản đồ chụp từ vệ tinh, nhưng đường và nhãn không được hiển thị.

Page 53: Android and Google API

• Terrain :Bản đồ địa hình. Bản đồ bao màu sắc địa hình, các tuyến đườngvà các nhãn.

Page 54: Android and 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 and Google API

05/03/2023 55

Chức Năng Cơ Bản

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().findFragmentById(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 and Google API

05/03/2023 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 and Google API

Google Directions API

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

Page 59: Android and 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 and 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 and 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 and Google API

Direction – Response

Page 63: Android and 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 and Google API

Direction – Response

Page 65: Android and 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 and Google API

Direction – Response - RoutesTê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 and 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 and 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