java - 如何减慢光传感器的监听速度?
问题描述
我想限制光传感器检测光的频率,以节省电池电量和 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
}
}
};
推荐阅读
- react-native - sudo gem install cocoapods Erro 无法加载此类文件--socket
- python-3.x - Python post 字符串数组
- node.js - For 循环 - SyntaxError: await 仅在异步函数中有效
- spring-boot - 排除 org.springframework.cloud 导入的依赖
- ubuntu - 我应该把什么作为我的“组”放在 gunicorn 服务文件中
- python - 从 XLSX 创建 PDf 时显示的研磨线
- arrays - 使用 useState 更新数组对象
- javascript - JavaScript 如何存储未存储的值?
- php - 检查命名空间是否正确声明
- c++ - Benchmarking - g++ produces different code from MSVC