我正在编写一个扩展 SensorEventListener 接口的应用程序,以监听气压计的变化,我将其登录到日志文件中。在开始记录之前,我以毫秒为单位添加一个系统时间(我们称之为毫秒时间戳 1,或 MT1),在记录完成后,我附加另一个以毫秒为单位的系统时间戳(我们称之为毫秒时间戳 2,或 MT2)。
SensorEvent 在 MT1 和 MT2 之间有自己的时间戳(我将其称为纳秒时间戳或 NT),我也记录了该时间戳。
问题是这样的:如果手机在记录期间进入睡眠状态,SensorEvent 速率似乎不再以我设置的速率发生(例如,SENSOR_DELAY_FASTEST)。此外,即使 SensorEvent 时间戳应该代表手机重启后的正常运行时间的纳秒,也存在“缺失”纳秒——MT2 和 MT1 之间的时间间隔通常是 NTN 之间的两倍或更多(其中 N 是样本数)和 NT1。
我已经能够通过使用 PowerManager.Wakelock() 来解决这个问题,但这会导致我的应用程序成为一个巨大的耗电者,并且看起来像是一个非常笨拙的黑客攻击。有没有其他方法可以解决这个问题?