Cảm biến có thể được sử dụng để theo dõi sự di chuyển thiết bị ba chiều hoặc thay đổi trong môi trường của thiết bị. Android cung cấp cảm biến api để làm việc với các loại khác nhau của cảm biến Sensor trong học lập trình android.

1. Các loại cảm biến
Android hỗ trợ ba loại cảm biến:

  • Chuyển động cảm biến : Chúng được sử dụng để đo lực gia tốc và lực lượng quay cùng với ba trục.


  • Cảm biến vị trí : Chúng được sử dụng để đo vị trí vật lý của thiết bị.


  • Cảm biến môi trường : Chúng được sử dụng để đo lường sự thay đổi môi trường như nhiệt độ, độ ẩm, vv

2. Android Sensor API
Android cảm biến api cung cấp nhiều lớp và các giao diện. Các lớp học quan trọng và giao diện của các cảm biến api như sau:
Lớp SensorManager
Lớp android.hardware.SensorManager cung cấp phương pháp:
- Để có được sự cảm biến,
- Để truy cập các cảm biến và danh sách,
- Đăng ký và hủy đăng ký người nghe cảm biến vv

Bạn có thể lấy ví dụ của SensorManager bằng cách gọi phương thức getSystemService() và đi qua các hằng số SENSOR_SERVICE trong đó.
Mã:
SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);
Lớp cảm biến
Lớp android.hardware.Sensor cung cấp phương pháp để có được thông tin về các cảm biến như cảm biến tên, kiểu cảm biến, độ phân giải cảm biến, kiểu cảm biến vv
Lớp SensorEvent
Cá thể của nó được tạo ra bởi hệ thống. Nó cung cấp thông tin về các cảm biến.
Giao diện SensorEventListener
Nó cung cấp hai phương pháp gọi lại để có được thông tin khi giá trị cảm biến (x, y, z) thay đổi hoặc thay đổi cảm biến độ chính xác.
- Khoảng trống onAccuracyChanged (sensor cảm biến, int độ chính xác): nó được gọi là độ chính xác khi cảm biến được thay đổi.
- Khoảng trống onSensorChanged (sự kiện SensorEvent): nó được gọi là khi giá trị cảm biến được thay đổi.
Tham khảo: laptrinhandroid.net.vn

3. Ví dụ Android đơn giản về ứng dụng cảm biến
Hãy xem hai ví dụ cảm biến.
- Một ví dụ cảm biến mà giá trị trục x, y, z. Ở đây, chúng ta sẽ thấy điều đó.
- Một ví dụ cảm biến mà thay đổi màu nền khi điện thoại bị xáo trộn. Nhấn vào đây để thay đổi màu nền của các ví dụ cảm biến hoạt động
Chỉ có một TextView trong tập tin này.
File: activity_main.xml
Mã:
<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:layout_marginLeft="92dp" 
android:layout_marginTop="114dp" 
android:text="TextView" /> 

</RelativeLayout>
Lớp Activity
Hãy viết code mà in giá trị của trục x, y và z.
File: MainActivity.java
Mã:
package com.example.sensorsimple; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.hardware.SensorManager; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorEvent; 
import android.hardware.Sensor; 
import java.util.List; 
public class MainActivity extends Activity { 
SensorManager sm = null; 
TextView textView1 = null; 
List list; 

SensorEventListener sel = new SensorEventListener(){ 
public void onAccuracyChanged(Sensor sensor, int accuracy) {} 
public void onSensorChanged(SensorEvent event) { 
float[] values = event.values; 
textView1.setText("x: "+values[0]+"\ny: "+values[1]+"\nz: "+values[2]); 
} 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

/* Get a SensorManager instance */ 
sm = (SensorManager)getSystemService(SENSOR_SERVICE); 

textView1 = (TextView)findViewById(R.id.textView1); 

list = sm.getSensorList(Sensor.TYPE_ACCELEROMETER); 
if(list.size()>0){ 
sm.registerListener(sel, (Sensor) list.get(0), SensorManager.SENSOR_DELAY_NORMAL); 
}else{ 
Toast.makeText(getBaseContext(), "Error: No Accelerometer.", Toast.LENGTH_LONG).show(); 
} 
} 

@Override 
protected void onStop() { 
if(list.size()>0){ 
sm.unregisterListener(sel); 
} 
super.onStop(); 
} 
}
Kết quả:




--------------------- || ---------------------
Nguồn: Tổng quan Sensor trong lập trình Android


Chủ đề tương tự: