问题描述
我想每x秒从心率传感器获取一次数据。 我使用postDelayed()进行了尝试,但是它只能用于每x秒读取一次数据,但是传感器当时正在运行,并且电池消耗非常快。 我正在尝试找到一种方法来启动传感器,获取数据并每x秒停止传感器。
这是我到目前为止所做的:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
checkHR = true;
handler.postDelayed(this,10000);
}
},1);
public void onSensorChanged(SensorEvent event) {
if(checkHR == true){
if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) {
String msg = "" + (int)event.values[0];
heartRate = (int)event.values[0];
Log.d("Heart rate is:",msg);
checkHR = false;
}
}
解决方法
在unregisterListener
中获取了一些数据后,您是否尝试过onSensorChanged
?并在postDelayed
触发时重新注册。也许这就是为什么传感器仍在工作(即使checkHR=false
时仍保持注册状态的传感器)并耗尽电池电量的原因。您可以显示如何注册此侦听器吗?心脏监护仪在Android设备中并不常见...
使用默认的传感器实现(SensorManager
和SensorEventListener
),这是禁用传感器的唯一可行方法-实际上,系统始终在处理传感器,并且仅在某些应用程序注册侦听器时才传递数据。因此,当您取消注册侦听器并且其他任何应用都没有注册类似的侦听器时,系统默认会禁用传感器,因为没有人向其请求数据...