【问题标题】:Check if Sensor.TYPE_SIGNIFICANT_MOTION is hardware supported检查 Sensor.TYPE_SIGNIFICANT_MOTION 是否支持硬件
【发布时间】:2016-01-29 04:14:41
【问题描述】:

我将使用 Activity Recognition API 对 App 进行一些优化。 简而言之,我需要知道设备何时处于静止状态。但我不希望 App 因传感器始终开启而耗尽电池电量。

报告开启:

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

我只会为支持硬件显着运动检测的设备注册 ActivityRecognitionAPI。 但我找不到检查这种支持何时存在的方法。

使用:

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

不区分硬件或软件支持(在大多数设备上,这可能仅通过加速度计传感器上的软件实现)。

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

谢谢

【问题讨论】:

    标签: android sensors android-sensors


    【解决方案1】:

    我刚刚检查了 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:我知道这不是一个真正的答案,但它太长了,无法发表评论

    【讨论】:

    • 也许您已经找到了解决方案。只有当它是一个硬件传感器时,它才可能是一个唤醒传感器(即使在 CPU 休眠时它也能工作)。如果是软件(加速计轮询),它需要在 CPU 上运行,并且在 CPU 休眠时无法运行(因此无法唤醒 CPU)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2020-06-01
    • 1970-01-01
    • 2013-02-26
    • 2011-10-17
    相关资源
    最近更新 更多