如何在 Android Studio 中每 x 秒获取一次心率?
How to get heart rate every x seconds in Android Studio?
我想每隔 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;
}
}
在 onSensorChanged
中获取了一些数据后,您尝试过 unregisterListener
吗?并在 postDelayed
触发时再次注册。也许这就是为什么传感器仍在工作(仍然注册传感器,即使 checkHR=false
)并耗尽电池。你能告诉你如何注册这个听众吗?心脏监护仪在 Android 设备中并不常见...
使用默认传感器实现(SensorManager
和 SensorEventListener
)这是禁用传感器的唯一可能方法 - 事实上系统一直在处理传感器并且仅在某些应用程序注册侦听器时传递数据.因此,当您取消注册您的侦听器并且没有其他应用程序注册类似的侦听器时,系统可能会默认禁用传感器,因为没有人从它请求数据...
我想每隔 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;
}
}
在 onSensorChanged
中获取了一些数据后,您尝试过 unregisterListener
吗?并在 postDelayed
触发时再次注册。也许这就是为什么传感器仍在工作(仍然注册传感器,即使 checkHR=false
)并耗尽电池。你能告诉你如何注册这个听众吗?心脏监护仪在 Android 设备中并不常见...
使用默认传感器实现(SensorManager
和 SensorEventListener
)这是禁用传感器的唯一可能方法 - 事实上系统一直在处理传感器并且仅在某些应用程序注册侦听器时传递数据.因此,当您取消注册您的侦听器并且没有其他应用程序注册类似的侦听器时,系统可能会默认禁用传感器,因为没有人从它请求数据...