传感器功率/通知率问题

时间:2012-07-26 19:57:51

标签: android

我正在编写一个应用程序,它扩展了SensorEventListener接口,以监听对气压计的更改,我登录日志文件。在我开始记录之前,我预先设置一个系统时间(以毫秒为单位)(让我们称之为毫秒时间戳1或MT1),在记录完成后,我以毫秒为单位追加另一个系统时间戳(让我们称之为毫秒时间戳2或MT2)。

SensorEvent有自己的时间戳(我将称之为Nanosecond Timestamps,或NT),我也记录在MT1和MT2之间。

问题是:如果手机在记录期间进入睡眠状态,则SensorEvent速率似乎不再以我设置的速率发生(例如,SENSOR_DELAY_FASTEST)。此外,即使SensorEvent时间戳应该代表自手机重启以来的正常运行时间纳秒,也有“缺失”纳秒 - MT2和MT1之间的时间间隔通常是NTN之间的两倍或更多(其中N是样本数量)和NT1。

我已经能够通过使用PowerManager.Wakelock()来解决这个问题,但这导致我的应用程序成为一个巨大的耗电,看起来像一个非常笨拙的黑客。有没有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果设备进入休眠状态,或者即使屏幕关闭(但CPU尚未关闭),传感器也不能保证工作。这种行为没有记录,看起来肯定因设备而异。

要么成为“巨大的力量”,要么重新设计你的应用程序,除非屏幕打开,否则不需要传感器读数。

Android中的传感器绝对设计为前台应用程序主动使用,而不是用于长期日志记录或监控目的。