如何检查Android设备中的TYPE_SIGNIFICANT_MOTION传感器可用性?

时间:2015-05-27 17:07:09

标签: android sensor sensormanager user-activity

我使用以下代码检查TYPE_SIGNIFICANT_MOTION传感器的可用性。

    SensorManager mSensorManager = (SensorManager) context
            .getSystemService(Context.SENSOR_SERVICE);

    List<Sensor> sensors = mSensorManager
            .getSensorList(Sensor.TYPE_SIGNIFICANT_MOTION);

    boolean isSensorAvailable = Boolean.valueOf(sensors.size() > 0);

我已经在三种不同的设备上进行了测试。所有设备都返回false。

在doc中,他们在API 18中添加了TYPE_SIGNIFICANT_MOTION常量。如何将此传感器可用性检查到18之前的版本。 纠正我以获得正确的传感器可用性状态。

1 个答案:

答案 0 :(得分:1)

根据文档,建议检查可用性如下:

if (mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION) != null){
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
}

对于18之前的版本,它始终为null,因为它尚未定义。

由于重要的运动传感器基于加速度计,因此在检查此传感器时,您测试的所有设备返回错误的原因可能是制造商未使用加速度计实现此软件传感器。但你总是可以自己实现类似的东西。

希望这有帮助!