我不想为每个传感器调用一个函数,只为我感兴趣的那个
这就是 Android 的工作方式,但只有在您注册多个传感器时才会发生这种情况。如果您想读取多个传感器,您可以使用 aswitch-case
过滤您最喜欢的传感器。
@Override
public void onSensorChanged(SensorEvent event) {
synchronized (this){
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
//Do your magic here
break;
case Sensor.TYPE_MAGNETIC_FIELD:
System.arraycopy(event.values, 0, magneticFieldValues, 0,
event.values.length);
break;
}
}
}
有没有办法节省这个 CPU 时间?
你真的需要SENSOR_DELAY_FASTEST
吗?您阅读的速度越快,您消耗电池的速度就越快。如果您更改了它,您将节省 CPU 时间,因为您不必像使用时那样多次读取传感器,SENSOR_DELAY_FASTEST
也不会执行那么多次该onSensorChanged
方法。
请记住,使用FASTEST, GAME, NORMAL or UI
并不意味着发生更改时您获得数据的速度有多快。这意味着设备读取注册传感器的频率(无论值是否相同)并onSensorChanged
在最后一个值与刚刚读取的值不同时执行该方法(两者都来自相同传感器)。