检查Sensor.TYPE_SIGNIFICANT_MOTION是否受硬件支持

时间:2015-11-06 14:29:53

标签: android sensor android-sensors

我将使用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支持(在大多数设备上,这可能仅通过加速计传感器上的软件实现)。

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

由于

1 个答案:

答案 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:我知道这不是一个真正的答案,但是作为评论太长了