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);

3 つの異なるデバイスでテストしました。すべてのデバイスが 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 になります。

重要なモーション センサーは加速度計に基づいているため、このセンサーをチェックしたときにテストしたすべてのデバイスが false を返す理由は、メーカーが加速度計を使用してこのソフトウェア センサーを実装していない可能性があります。しかし、似たようなものをいつでも自分で実装できます。

お役に立てれば!

于 2015-06-10T22:29:22.517 に答える