[英]How to slow the rate at which light sensor listens?
我想限制光傳感器檢測光的頻率,以節省電池電量和 CPU 使用率。
在閱讀了 SO 並親自嘗試之后,我發現更改registerListener
方法的參數沒有任何作用。
所以我猜下一個賭注是讓它進入睡眠狀態,或者每次傳感器感應到光時等待? 我該怎么做? 我試着把wait(2000);
在里面,但這給出了一個錯誤。
這是光傳感器代碼:
SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor light = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
//Here is where I want to do my stuff
}
};
sm.registerListener(listener, light, SensorManager.SENSOR_DELAY_NORMAL);
以最短的時間間隔做你的事情:
private final long minimumInterval = 100;
private long lastRefresh;
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
long timeMillis = System.currentTimeMillis();
if (lastRefresh - timeMillis > minimumInterval) {
lastRefresh = timeMillis;
//do stuff
}
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.