我将使用Activity Recognition API对App进行一些优化。 简而言之,我需要知道设备什么时候仍然存在。但我不希望应用程序通过始终打开传感器而耗尽电池耗电量。
据报道On:
为了节省电量,当设备“仍然”时,活动报告可能会停止。很长一段时间。一旦设备再次移动,它将恢复。这仅在支持Sensor.TYPE_SIGNIFICANT_MOTION硬件的设备上发生。
我只会为支持HW重要运动检测的设备注册ActivityRecognitionAPI。 但我无法找到检查何时存在这种支持的方法。
使用:
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
boolean supportSignificantMotion = (sensor != null);
不区分硬件还是SW支持(在大多数设备上,这可能仅通过加速计传感器上的软件实现)。
有谁知道是否可以执行该检查?
由于
答案 0 :(得分:3)
我只是在检查Activity Recognition 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:我知道这不是一个真正的答案,但是作为评论太长了