1. Trang chủ
  2. » Công Nghệ Thông Tin

LẬP TRÌNH ANDROID Location & Sensor Programming

53 1,3K 17
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Location & Sensor Programming
Trường học University of Science and Technology
Chuyên ngành Android Programming
Thể loại Bài học
Năm xuất bản 2013
Thành phố Hanoi
Định dạng
Số trang 53
Dung lượng 0,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Android Location Service GPS Provider:  Sử dụng GPS Global positioning system để giúp thiết bị Android xác định vị trí của nó.. Android Location Service Network Provider:  Sử dụng C

Trang 1

Smart Robot Contest 2013

LẬP TRÌNH ANDROID

 Bài 03:

Location & Sensor Programming

Trang 2

Nội dung bài học

 Location Programming

 Sensor Programming

Trang 3

Nội dung bài học

 Location Programming

 Sensor Programming

Trang 4

Location Programming

 Giới thiệu Android Location Service.

 Xác định vị trí hiện tại của thiết bị.

 Theo dõi sự di chuyển của thiết bị.

 Proximity Alerts.

Trang 5

Location Programming

 Giới thiệu Android Location Service.

 Xác định vị trí hiện tại của thiết bị.

 Theo dõi sự di chuyển của thiết bị.

 Cảnh báo khi có sự di chuyển đến gần.

Trang 6

Android Location Service

 Để cung cấp thông tin về vị trí, Android sử

dụng “location provider” Các loại location provider như sau:

 GPS Provider

 Network Provider

Trang 7

Android Location Service

 GPS Provider:

 Sử dụng GPS (Global positioning system) để giúp

thiết bị Android xác định vị trí của nó.

 Tuy nhiên, thiết bị di động rất khó làm việc trực

tiếp với GPS (thời gian truyền thông tin vị trí các

vệ tinh đến thiết bị) Các thiết bị di động hiện đại thường sử dụng A-GPS (thông tin vị trí các vệ tinh truyền qua mạng viễn thông đến thiết bị) hoặc S-GPS (cho phép sử dụng đồng thời GPS

Trang 8

Android Location Service

 GPS Provider:

 Hạn chế:

 GPS provider hầu như không thể hoạt động trong nhà

hay ở ngoài trời những vùng mà bầu trời bị che khuất như trong rừng rậm chẳng hạn

 Nếu trên đường đi của sóng bị nhiều vật cản, sóng phải

phản xạ nhiều lần → tăng độ dài đường đi → xác định

vị trí bị sai (multipath error)

Trang 9

Android Location Service

 Network Provider:

 Sử dụng Wireless Network Access Point.

 Sử dụng Cell ID.

Trang 10

Android Location Service

 Sử dụng Wireless Network Access Point:

 Sử dụng thông tin Wi-Fi (MAC của AP và cường độ tín

hiệu nhận bởi AP) để truy vấn Google location service

 Điểm mạnh của phương pháp này là có thể xác định vị

trí của thiết bị ở những nơi mà GPS Provider không thể cung cấp

 Điểm yếu:

 Yêu cầu phải có mạng Wi-Fi, AP phải cấu hình SSID hoặc

SSID không kết thúc bằng _nomap.

 Thay đổi vị trí của AP.

Trang 11

Android Location Service

 Network Provider:

 Sử dụng Cell ID:

 Sử dụng Cell ID để truy vấn Google location service

về thông tin vị trí của thiết bị

 Về điểm mạnh và điểm yếu thì phương pháp này khá

giống với phương pháp sử dụng “Wireless Network Access Points” Tuy nhiên thì vị trí của các cột phát sóng (cell tower) rất hiếm thay đổi so với các access point

Trang 12

Location Programming

 Giới thiệu Android Location Service.

 Xác định vị trí hiện tại của thiết bị.

 Theo dõi sự di chuyển của thiết bị.

 Promixity Alerts.

Trang 13

Xác định vị trí hiện tại của thiết bị

 Các thành phần của Android Location API.

 Xác định location provider.

 Cập nhật thông tin location.

 Ví dụ minh hoạ.

Trang 14

Xác định vị trí hiện tại của thiết bị

 Các thành phần của Android Location API:

Trang 15

Xác định vị trí hiện tại của thiết bị

ACCESS_COARSE_LOCATION

Sử dụng nhiều pin nhất so với các provider khác

Chính xác nhất trong các provider

Ít chính xác hơn GPS provider

Trang 16

Xác định vị trí hiện tại của thiết bị

 Cập nhật thông tin location: Có hai phương

pháp

 Sử dụng LocationListener và hiện thực phương

thức onLocationChanged

 Sử dụng Broadcast Receiver để nhận broadcast

Intent khi location được cập nhật.

Trang 17

Hiện thực ứng dụng demo

 Lấy handle của LocationManager

 Hiện thực interface LocationListener

 Yêu cầu cập nhật thông tin location.

 Dọn dẹp

Trang 19

onProviderEnabled Người dùng disable/enable location provider từ setting menu.

public void onLocationChanged(Location arg0) {

arg0.getLatitude();//Vĩ độ arg0.getLongitude()); //Kinh độ

Trang 20

Hiện thực ứng dụng demo

 Chúng ta không thể yêu cầu Android cung cấp

thông tin này ngay lập tức mà chúng ta chỉ yêu cầu

và nhận được thông tin 1 lần khi nào nó có thông qua phương thức.

Trang 21

Hiện thực ứng dụng demo

protected void onResume() {

super.onResume();

StringBuffer stBuffer = new StringBuffer();

Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_COARSE);

//Lấy ra những provider mà đang enable.

enabledProviders = lm getProviders(criteria, true);

/ /Đăng ký listener location update 1 lần, qua provider_name

lm requestSingleUpdate(provider_name, location_listener, null); }

Trang 23

Location Programming

 Giới thiệu Android Location Service.

 Xác định vị trí hiện tại của thiết bị.

 Theo dõi sự di chuyển của thiết bị.

 Promixity Alerts.

Trang 24

Theo dõi sự di chuyển của thiết bị

 Thu thập dữ liệu location.

 Trình bày dữ liệu location

Trang 25

Theo dõi sự di chuyển của thiết bị

 Thu thập dữ liệu location.

 Trình bày dữ liệu location

Trang 26

Theo dõi sự di chuyển của thiết bị

 Thu thập dữ liệu location:

 Sử dụng BrodcastReceiver.

 Sử dụng Service.

Trang 27

Theo dõi sự di chuyển của thiết bị

 Thu thập dữ liệu location:

 Sử dụng BroadcastReceiver:

 Tạo broadcast Intent với action đã định nghĩa trước

 Tạo PendingIntent từ getBroadcast

 Sử dụng phương thức

LocationManager#requestLocationUpdate để đăng ký PendingIntent với LocationManager

 Hiện thực BroadcastReceiver để nhận broadcast Intent

được gửi mỗi khi location được cập nhật

Trang 28

Theo dõi sự di chuyển của thiết bị

 Thu thập dữ liệu location:

 Sử dụng Service:

 Hiện thực Service và LocationListener

 Trong phương thức onCreate lấy handle của

LocationManager

 Trong phương thức onStartCommand sử dụng phương

thức requestOnLocationUpdate để đăng ký listener cho LocationManger

 Trong onLocationChanged chúng ta lưu lại location

 Trong phương thức onDestroy chúng ta dùng phương

thức removeUpdate để xoá đăng ký

Trang 29

Theo dõi sự di chuyển của thiết bị

 Thu thập dữ liệu location.

 Trình bày dữ liệu location

Trang 30

Theo dõi sự di chuyển của thiết bị

 Trình bày dữ liệu location:

 Thường sử dụng Google Map để trình bày dữ liệu

location thu thập được Đây là chủ đề tự tìm hiểu.

 Chúng ta có thể giả lập sự thay đổi location trên

emulator bằng cách dùng DDMS-Emulator control (sẽ chỉ chi tiết hơn trong thực hành)

Trang 31

Location Programming

 Giới thiệu Android Location Service.

 Xác định vị trí hiện tại của thiết bị.

 Theo dõi sự di chuyển của thiết bị.

 Promixity Alerts.

Trang 32

Promixity Alerts

 Geocoding

 Thiết lập Promixity Alert.

 Đối ứng với Promixity Alert

O

Trang 33

Promixity Alerts

 Thiết lập Promixity Alert.

 Đối ứng với Promixity Alert

Trang 34

Promixity Alerts

 Geocoding:

 Chuyển tên vị trí sang toạ độ (kinh độ, vĩ độ).

 Class android.location.Geocoder cho phép chúng

ta thực hiện geocoding và ngược lại.

 isPresent → kiểm tra bản Android hiện tại có hỗ trợ

các phương thức geocoding và reverse geocoding hay không

 GetLocationFromName trả về danh sách các địa điểm

phù hợp với tên được cung cấp

Trang 35

Promixity Alerts

 Geocoding

 Thiết lập Promixity Alert.

 Đối ứng với Promixity Alert

Trang 36

Promixity Alerts

 Sử dụng phương thức

LocationManager#addPromixityAlert để thiết lập proximity alert:

 Kinh độ, vĩ độ

 Bán kính vùng xung quanh

 Giới hạn về thời gian

 PendingIntent: intent sẽ được send broadcast khi

proximity alert được kích hoạt

 Sử dụng phương thức

LocationManager#removeProximityAlert để huỷ đăng ký 1 proximity alert

Trang 37

Promixity Alerts

 Geocoding.

 Thiết lập Promixity Alert.

 Đối ứng với Promixity Alert.

Trang 38

Promixity Alerts

 Đối ứng với Promixity Alert: Khi proximity alert bị

kích hoạt thì intent trong PendingIntent sẽ được gửi broadcast → Hiện thực BroadcastReceiver để nhận intent này

 Sử dụng key

LocationManager.KEY_PROXIMITY_ENTERING để filter và nhận thông tin từ Intent.

Trang 39

Nội dung bài học

 Location Programming

 Sensor Programming

Trang 40

Sensor Programming

 Giới thiệu

 Android Sensor Programming API

 Ví dụ minh hoạ

Trang 41

Sensor Programming

 Giới thiệu

 Android Sensor Programming API

 Ví dụ minh hoạ

Trang 42

Sensor Programming

 MEMS (Microelectromechanical sensors) là những cảm

biến có kích thước cực kỳ nhỏ được sản xuất dựa trên kỹ thuật sản xuất chip máy tính.

 Raw sensor cung cấp dữ liệu thô từ thiết bị vật lý

 Sensor.TYPE_LIGHT (Cảm biến ánh sáng)

 Sensor.TYPE_PROXIMITY (Cảm biến tiệm cận)

 Sensor.TYPE_PRESSURE (Cảm biến áp suất)

Sensor.TYPE_TEMPERATURE (Cảm biến nhiệt độ thiết bị)

 Sensor.TYPE_ACCELEROMETER (Cảm biến gia tốc)

 Sensor.TYPE_GYROSCOPE (Cảm biến con quay)

 Sensor.TYPE_MAGNETIC_FIELD (Cảm biến từ trường)

 Sensor.TYPE_RELATIVE_HUMIDITY (Cảm biến độ ẩm)

Trang 43

Sensor Programming

 Giới thiệu

 Các loại cảm biến:

 Synthetic sensor (composite, virtual): abstract layer

giữa code và thiết bị vật lý

 Sensor.TYPE_ROTATION_VECTOR (CB véc tơ quay)

Trang 44

Sensor Programming

 Giới thiệu

 Android chia cảm biến thành 3 loại:

 Nhóm cảm biến về chuyển động: Cảm biến gia tốc,

cảm biến trọng lực, cảm biến con quay, cảm biến gia tốc không trọng lực, cảm biến véc tơ quay

 Nhóm cảm biến về vị trí:Cảm biến từ trường, cảm

biến phương hướng, cảm biến tiệm cận

 Nhóm cảm biến về môi trường: Cảm biến nhiệt độ

môi trường, cảm biến ánh sáng, cảm biến áp suất, cảm biến độ ẩm, cảm biến nhiệt độ thiết bị

Trang 45

Sensor Programming

 Giới thiệu

 Android Sensor Programming API

 Ví dụ minh hoạ

Trang 46

Sensor Programming

 Android Sensor Programming API:

 Package: android.hardware

 Class & Interface:

 SensorManager → Android sensor service

 Sensor → sensor cụ thể

 SensorEvent → sự kiện trên sensor

 SensorEventListener → thông báo khi có sự kiện xảy

ra trên sensor cụ thể

Trang 47

 Để truy xuất đến instance của lớp này chúng ta sử dụng

phương thức Context#getSystemService với tham số là Context.SENSOR_SERVICE

 Các phương thức thường dùng:

 Sensor getDefaultSensor(int type) //tra ve default sensor theo type

 boolean registerListener(SensorEventListener listener,Sensor

sensor, int rate)

rate: Chỉ ra thời gian hay tần suất đo để chuyển cho listener Đây chỉ là giá trị đề nghị, hệ

thống có thể trả về nhanh hơn hoặc chậm hơn Các giá trị định nghĩa sẵn:

Trang 49

Sensor Programming

 Sensor class:

 Lớp này đại diện cho một cảm biến

 Các thông tin lớp này cung cấp về một cảm biến:

 Maximum range → Độ đo lớn nhất (theo đơn vị của cảm biến).

 Minimum delay → Khoảng thời gian nhỏ nhất giữa 2 sự kiện xảy ra.

 Name → Tên cảm biến.

 Power → Cường độ dòng điện dùng bởi cảm biến.

 Resolution → Độ phân giải của cảm biến (theo đơn vị của cảm biến).

 Type → Loại cảm biến.

 Vendor → Tên của nhà sản xuất.

 Version → Phiên bản.

 Các thông tin của cảm biến có thể truy xuất thông qua các

Trang 50

Sensor Programming

 Android Sensor Programming API:

 SensorEvent class:

 Lớp này đại diện cho một sự kiện của cảm biến

 Các thông tin lớp này cung cấp về một sự kiện của cảm

biến:

 Độ chính xác của sự kiện.

 Cảm biến sinh ra sự kiện.

 Thời điểm phát sinh sự kiện.

 Một chuỗi dữ liệu (độ dài và thành phần phụ thuộc vào loại cảm biến).

Trang 51

Sensor Programming

 Android Sensor Programming API:

 SensorEventListener class:

 Để giao tiếp với cảm biến thì ứng dụng cần đăng ký với

SensorManager cảm biến mà ứng dụng quan tâm cùng với bản hiện thực SensorEventListener Mỗi khi có một

sự kiện xảy ra trên cảm biến thì SensorManager sẽ thông báo cho ứng dụng qua các hàm callback của bản hiện

thực SensorEventListener mà ứng dụng đã đăng ký

 Hai phương thức bắt buộc phải hiện thực:

accuracy) → gọi khi độ chính xác của phép đo của

cảm biến thay đổi

Trang 52

Cách simulate sensor trên Emulator

 Tham khảo cách setup sensor simulate:

Trang 53

Sensor Programming

 Giới thiệu

 Android Sensor Programming API

 Ví dụ minh hoạ

Ngày đăng: 03/10/2013, 01:02

HÌNH ẢNH LIÊN QUAN

 Yêu cầu phải có mạng Wi-Fi, AP phải cấu hình SSID hoặc SSID không kết thúc bằng _nomap. - LẬP TRÌNH ANDROID Location & Sensor Programming
u cầu phải có mạng Wi-Fi, AP phải cấu hình SSID hoặc SSID không kết thúc bằng _nomap (Trang 10)

TỪ KHÓA LIÊN QUAN

w