1

我已使用以下代码检查 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。

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

4

1 回答 1

1

根据文档,建议像这样检查可用性:

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

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

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

希望这可以帮助!

于 2015-06-10T22:29:22.517 回答