You are on page 1of 18

Lập trình với các sensor

Lập trình với các sensor


 Hầu hết các thiết bị hỗ trợ Android đều có cảm biến tích hợp
 Android hỗ trợ ba loại cảm biến:
 Cảm biến chuyển động: Những cảm biến này đo lực gia tốc và lực quay
dọc theo ba trục. Danh mục này bao gồm gia tốc kế (accelerometers),
cảm biến trọng lực (gravity sensors), con quay hồi chuyển (gyroscopes)
và cảm biến vectơ quay rotational vector sensors .
 Cảm biến môi trường: Những cảm biến này đo các thông số môi
trường khác nhau, chẳng hạn như nhiệt độ và áp suất không khí xung
quanh, độ chiếu sáng và độ ẩm. Danh mục này bao gồm áp kế
barometers, quang kế photometers,và nhiệt kế, thermometers.
 Cảm biến vị trí:Những cảm biến này đo vị trí vật lý của một thiết bị.
Danh mục này bao gồm cảm biến định hướngorientation sensors và
từ kế magnetometers.
Các bước thực hiện
 Xác định cảm biến nào có sẵn trên thiết bị.
 Xác định các khả năng của một cảm biến riêng lẻ,
chẳng hạn như phạm vi tối đa, nhà sản xuất, yêu cầu
năng lượng và độ phân giải của nó.
 Có được dữ liệu cảm biến thô và xác định tốc độ tối
thiểu thu được dữ liệu cảm biến.
 Đăng ký và hủy đăng ký sự kiện theo dõi thay đổi cảm
biến.
Các lớp, giao diện gói android.hardware
 Người lập trình có thể truy cập các cảm biến và có được dữ
liệu cảm biến thô bằng cách sử dụng khung cảm biến
Android. Khung cảm biến là một phần của gói
android.hardware và bao gồm các lớp và giao diện sau:
 SensorManager: lớp này để tạo một thể hiện của dịch vụ
cảm biến, cung cấp các phương thức khác nhau để truy cập
và liệt kê các cảm biến, đăng ký và không đăng ký sự kiện
cảm biến và thu thập thông tin định hướng.
 Cung cấp một số hằng số cảm biến được sử dụng để báo
cáo độ chính xác của cảm biến, đặt tốc độ thu thập dữ liệu
và hiệu chỉnh cảm biến, cho phép xác định khả năng của
cảm biến.
Các lớp, giao diện gói android.hardware
 Sensor: lớp này để tạo một đối tượng sự kiện cảm biến, cung
cấp thông tin về một sự kiện cảm biến, bao gồm các thông tin
sau: dữ liệu cảm biến thô, loại cảm biến tạo ra sự kiện, độ
chính xác của dữ liệu và thời gian cho sự kiện
 SensorEventListener: sử dụng giao diện này để tạo hai
phương thức gọi, nhận thông báo (sự kiện cảm biến) khi giá
trị cảm biến thay đổi hoặc khi độ chính xác của cảm biến thay
đổi.
Giám sát sự kiện cảm biến
 Là cách mà người lập trình có được dữ liệu cảm biến
thô.
 Một sự kiện cảm biến xảy ra mỗi khi cảm biến phát

hiện ra sự thay đổi trong các thông số mà nó đang đo.


 Một sự kiện cảm biến cung cấp bốn thông tin: tên của

cảm biến đã kích hoạt sự kiện, dấu thời gian cho sự


kiện, độ chính xác của sự kiện và dữ liệu cảm biến thô
đã kích hoạt sự kiện.
Các bước lập trình

 Bước 1: Truy cập vào cảm biến


 sensorManager = (SensorManager)

getSystemService(Context.SENSOR_SERVICE);
 Liệt kê các cảm biến có trong thiết bị:
 List<Sensor> deviceSensors =

sensorManager.getSensorList(Sensor.TYPE_ALL);
 Bước 2: Gọi tên sensor cần sử dụng:
 Sensor tên_sensor = sensorManager.getDefaultSensor(Sensor.Kiểu_sensor);
Các bước lập trình

 Kiểm tra sensor có tồn tại không:


 if(tên_Sensor == null) {
 // thông báo sensor không tồn tại
 finish(); // Close app
 }
 Bước 3: Đăng ký một Listener:
Các bước lập trình

 Bước 3: Đăng ký một Listener:


 SensorEventListener ss1Listener = new SensorEventListener()
 ss.registerListener(ss1Listener,ss1, tốc độ lấy mẫu);
 Bước 4: Sử dụng dữ liệu thô
 Đối tượng SensorEvent, tồn tại trong phương thức onSensorChanged(), có một mảng
values chứa tất cả các dữ liệu thô, được tạo ra bởi các cảm biến gắn liền với nó
 Hủy đăng ký trước khi kết thúc
 Hủy trong phương thức onPause() hoặc onStop().
Sensor Type Description Common Uses
TYPE_ACCELEROMETER Hardware Measures the acceleration force in Motion detection (shake,
m/s2 that is applied to a device on all tilt, etc.).
three physical axes (x, y, and z),
including the force of gravity.
TYPE_AMBIENT_TEMPER Hardware Measures the ambient room Monitoring air
ATURE temperature in degrees Celsius (°C). temperatures.
See note below.
TYPE_GRAVITY Software or Measures the force of gravity in Motion detection (shake,
Hardware m/s2 that is applied to a device on all tilt, etc.).
three physical axes (x, y, z).
TYPE_GYROSCOPE Hardware Measures a device's rate of rotation in Rotation detection (spin,
rad/s around each of the three physical turn, etc.).
axes (x, y, and z).
TYPE_LIGHT Hardware Measures the ambient light level Controlling screen
(illumination) in lx. brightness.
TYPE_LINEAR_ACCELERA Software or Measures the acceleration force in Monitoring acceleration
TION Hardware m/s2 that is applied to a device on all along a single axis.
three physical axes (x, y, and z),
excluding the force of gravity.
TYPE_MAGNETIC_FIELD Hardware Measures the ambient geomagnetic Creating a compass.
field for all three physical axes (x, y, z)
in μT.
TYPE_ORIENTATION Software Measures degrees of rotation that a device makes Determining device
around all three physical axes (x, y, z). As of API level 3 position.
you can obtain the inclination matrix and rotation
matrix for a device by using the gravity sensor and the
geomagnetic field sensor in conjunction with the
getRotationMatrix() method.

TYPE_PRESSURE Hardware Measures the ambient air pressure in hPa or mbar. Monitoring air pressure
changes.
TYPE_PROXIMITY Hardware Measures the proximity of an object in cm relative to Phone position during a
the view screen of a device. This sensor is typically used call.
to determine whether a handset is being held up to a
person's ear.

TYPE_RELATIVE_HUMIDITY Hardware Measures the relative ambient humidity in percent (%). Monitoring dewpoint,
absolute, and relative
humidity.
TYPE_ROTATION_VECTOR Software or Measures the orientation of a device by providing the Motion detection and
Hardware three elements of the device's rotation vector. rotation detection.

TYPE_TEMPERATURE Hardware Measures the temperature of the device in degrees Monitoring temperatures.
Celsius (°C). This sensor implementation varies across
devices and this sensor was replaced with the
TYPE_AMBIENT_TEMPERATURE sensor in API Level 14
Ví dụ
 Liệt ke các cảm biến có sẵn trong thiết bị.
Ví dụ 2
 Đọc giá trị của cảm biến tiệm cận. Thông báo khi có
vật tiến đến gần thiết bị.
Bài tập
 Đọc giá trị của cảm biến accelerometers
 Có 3 giá trị (x,y,z) – values[0], values[1] values[2]
 Hiển thị 3 giá trị vừa đọc lên màn hình
 Thông báo: điện thoại đang đứng, đang nằm ngang

hay nằm nghiêng


Bài 2
 Đọc giá trị của cảm biến ánh sáng. Thiết giao diện cho
phép người dùng nhập cường độ ánh sáng ngưỡng
trên và ngưỡng dưới.
 Nếu giá trị đọc được từ cảm biến ánh sáng nằm trong

ngưỡng vừa nhập thì thông báo “ cường độ as trung


bình
 Nếu giá trị đọc được từ cảm biến ánh sáng < ngưỡng

dưới thì thông báo” Ánh sáng yếu”


 Nếu giá trị đọc được từ cảm biến ánh sáng > ngưỡng

trên thì thông báo” Quá sáng”


Bài 3
 Viết chương trình đọc và hiển thị giá trị thô từ sensor
con quay hồi chuyển gyroscopes. Hiển thị thông báo và
chuyển màu nền màn hình từ màu đỏ sang xanh hoặc
từ xanh sang đỏ khi điện thoại của người dùng được
thay đổi sang trái hay sang phải.
Baì 4
 Viết chương trình đọc và hiển thị giá trị thô từ sensor
ánh sáng. Chuyển đổi màu sắc của màn hình từ xanh
đậm sang xanh nhạt khi cường độ ánh sáng tăng dần
Baì 4
 Đọc giá trị của cảm biến accelerometers
 Có 3 giá trị (x,y,z) – values[0], values[1] values[2]
 Hiển thị 3 giá trị vừa đọc lên màn hình
 Khi giá trị của trục y tăng dần từ 0 đến 10 màn hình

điện thoại chuyển từ màu đỏ nhạt sang đỏ đậm


 Khi giá trị của trục x tăng dần từ 0 đến 10 màn hình

điện thoại chuyển từ màu xanh nhạt sang xanh đậm

You might also like