屏幕关闭时是否可以覆盖SensorManager频率?

时间:2014-03-03 15:22:43

标签: android intervals accelerator sensormanager

我正在开发一个简单的应用程序,当加速度计达到一定值时播放声音 当屏幕打开时,没有问题。加速器运行的频率很好 这是正常的。

现在,我想在屏幕关闭时这样做 出于某种原因,无论SENSOR_DELAY如何,我每秒只能获得2次传感器更新 我怀疑这与Android有关,可以节省电力。但我需要更高的频率才能准确读取传感器数据。

在我转向唤醒锁定之前,我想知道是否可以覆盖这种“强制”频率降低,这是否与设备有关。我需要它保持更高的更新频率,即使屏幕关闭。

2 个答案:

答案 0 :(得分:0)

我不知道,但您是否使用SENSOR_DELAY_FASTEST获得更多更新?然后将这样的东西插入onSensorChanged():

public void onSensorChanged(SensorEvent event)
{
    if (event.sensor.getType() == Sensor.TYPE_)
    {
    long actualTime = System.currentTimeMillis();
        if (actualTime - lastUpdate > 63)
        {
        lastUpdate = actualTime;
        // update
        }
    }
}

答案 1 :(得分:0)

传感器延迟值仅仅是建议(或者至少是Android 4.0 / 4.1左右)。根据实施情况,传感器可以比请求更快地传递事件。这由驱动程序决定,行为可能因设备型号而异。

为什么要限制传感器的事件传递率?如果您在后台进行复杂处理并希望减少处理器的负载,请考虑以下方法:当您接收并处理事件时,记录其时间戳。当下一个事件到达时,计算其时间戳与先前存储的时间戳之间的差异。仅当时间戳差异至少与阈值一样大时才处理事件。虽然这不会降低事件传递速率,但它会减少处理时间,因为只有n个事件中的一个被处理。