一、光照傳感器的用法
1. 獲取 SensorManager 實例。
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
2. 通過 getDefaultSensor() 得到某種傳感器的實例。
Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3. 借助 SensorEventListener 對傳感器輸出的信號進行監(jiān)聽。
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
}
};
- 當傳感器的精度發(fā)生變化時就會調(diào)用 onAccuracyChanged() 方法。
- 當傳感器監(jiān)測到的數(shù)值發(fā)生變化時就會調(diào)用 **onSensorChanged() **方法。
**onSensorChanged() **方法中傳入了一個 SensorEvent 參數(shù),這個參數(shù)里又包含了一個 values 數(shù)組,所有傳感器輸出的信息都是存放在這里的。
4. 調(diào)用 SensorManager 的 registerListener() 方法來注冊SensorEventListener 使其生效。
senserManager.registerListener(listener, senser, SensorManager.SENSOR_DELAY_NORMAL);
- 第一個參數(shù):SensorEventListener 的實例。
- 第二個參數(shù):Sensor 的實例。
- 第三個參數(shù):傳感器輸出信息的更新速率。以下更新速率是依次遞增。
- SENSOR_DELAY_UI
- SENSOR_DELAY_NORMAL
- **SENSOR_DELAY_GAME **
- **SENSOR_DELAY_FASTEST **
5. 最后調(diào)用 unregisterListener() 方法將使用的資源釋放掉。
sensorManager.unregisterListener(listener);
二、制作簡易光照傳感器
public class MainActivity extends Activity {
private SensorManager sensorManager;
private TextView lightLevel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lightLevel = (TextView) findViewById(R.id.light_level);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (sensorManager != null) {
sensorManager.unregisterListener(listener);
}
}
private SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// values數(shù)組中第一個下標的值就是當前的光照強度
float value = event.values[0];
lightLevel.setText("Current light level is " + value + " lx");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。