在安卓系统中,如何确定传感器是否在屏幕关闭时工作?

12

我希望确定在设备屏幕关闭时,用于活动识别的传感器是否有效。

当设备屏幕关闭以节省电池时,活动识别会停止。我搜索了一下并发现传感器在屏幕关闭时不起作用。

因此,有一种方法可以通过isWakeUpSensor()来识别这些传感器,但是isWakeUpSensor()仅适用于API 21及以上版本。

如何在API 14及更高版本上使它正常工作?在开始活动识别之前确定传感器,就像应用程序“Moves”一样。

1个回答

9
经过一番搜索,我找到了这篇文档,其中提到:

在KitKat版本之前,传感器是唤醒传感器还是非唤醒传感器取决于传感器类型:大多数传感器都是非唤醒传感器,除了接近传感器和显著动作检测器

另一方面,显著动作检测器页面说:

仅实现此传感器的唤醒版本。 getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) 返回一个非唤醒传感器

这让我感到困惑。不过,它是一个复合传感器,这意味着它的唤醒状态取决于基础实际传感器(我想象的)。

进一步研究表明,显著动作检测器是在Android 4.3 (API 18)中添加的,因此在API 14设备中,您只能使用接近传感器作为可用的唤醒传感器,这主要是用于在打电话时开关屏幕。

看起来似乎没有办法做到您所想的而不使用唤醒锁定


1
活动识别在设备屏幕关闭后立即停止。我搜索了一下,发现传感器在屏幕关闭时不工作以节省电池电量。这只发生在少数设备上。那么如何确定当设备屏幕关闭时活动识别将停止呢? - Sagar Patil
我认为你不能这样做,至少在屏幕关闭后尝试跟踪活动识别之前需要一些启发式算法。API 21之前的传感器就没有提供那些信息。 - Zharf
如果你检查“Moves”应用程序,在安装后第一次运行时,当设备屏幕关闭时它立即会显示设备不支持活动识别。如果他们能够识别,则必须有一些技术可在API级别低于21的情况下进行识别。 - Sagar Patil
对我来说,最高的评论描述了与你遇到的相同的问题...他们可能有某种设备黑名单,其中它不起作用,但也不是非常可靠。 - Zharf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接