2015-11-06 208 views
2

我将使用活动识别API对应用程序进行一些优化。 总之,我需要知道什么时候设备仍然存在。但我不希望应用程序始终保持传感器电池耗尽。检查Sensor.TYPE_SIGNIFICANT_MOTION是否支持硬件

在报道:

为了节省电池,当该设备是“STILL”用于在延长的时间周期活动报告可能会停止。一旦设备再次移动,它将恢复。这只发生在支持Sensor.TYPE_SIGNIFICANT_MOTION硬件的设备上。

我只会注册到ActivityRecognitionAPI,以便支持HW进行重要运动检测的设备。 但我找不到一种方法来检查此支持何时存在。

使用:

SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION); 
    boolean supportSignificantMotion = (sensor != null); 

如果载体是由HW或SW(在大多数设备这可以仅通过软件上的加速度计传感器来实现)不区分。

有谁知道是否可能执行该检查?

谢谢

回答

2

我只是检查活动识别API和我有同样的问题。

据我所知,没有办法检查它是硬件还是软件传感器,但是当我在https://source.android.com/devices/sensors/sensor-types.html#significant_motion处读到时,我猜测所有重要的运动传感器都是软件。也许你报告的文件是一个错字。

我认为它应该工作,只要它是一个唤醒传感器。

是困惑我是语句

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION)返回一个非唤醒 传感器

非唤醒传感器也不会醒的事情设备,如http://developer.android.com/intl/pt-br/reference/android/hardware/Sensor.html#isWakeUpSensor()

中所述但是在重要运动传感器的文档中(http://developer.android.com/intl/pt-br/reference/android/hardware/Sensor.html#TYPE_SIGNIFICANT_MOTION)表示这是一个唤醒传感器。

也许这取决于软件的实施? 如果是这样,将有可能与http://developer.android.com/intl/pt-br/reference/android/hardware/Sensor.html#isWakeUpSensor()

检查我仍在搜索和测试。如果我收到任何消息,我会更新答案。

请让我知道你是否有任何消息。

PS:我知道这不是一个真正的答案,但它太长了评论

+0

也许你找到了解决办法。它可能是一个唤醒传感器,只要它是一个硬件传感器(即使在CPU休眠时它也能工作)。如果是软件(加速度计轮询),它需要在CPU上运行,并且在CPU休眠时不能运行(因此它不能唤醒CPU)。 – ARLabs