Как узнать, присутствует ли сенсор на моем устройстве Android?

Я хотел бы узнать, присутствует ли на моем устройстве Android датчик (например, акселлерометр).

Я имею дело с классом SensorManager. Вот код, который я использую:

sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1);

Спасибо.

Ответ 1

Для этого можно использовать вторую строку:

boolean accelerometer;

accelerometer = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

if(accelerometer) 
{
.
.
}

Ответ 3

Вот рекомендация от developer.android.com: http://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-identify

Вы можете определить, существует ли определенный тип датчика на устройстве, используя метод getDefaultSensor() и передавая константу типа для конкретного датчика. Если устройство имеет более одного датчика данного типа, один из датчиков должен быть обозначен как датчик по умолчанию. Если для датчика определенного типа не существует датчика по умолчанию, вызов метода возвращает значение null, что означает, что устройство не имеет такого типа датчика.

private SensorManager mSensorManager;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null){
  // Success! There a magnetometer.
}
else {
  // Failure! No magnetometer.
}

Ответ 4

Поскольку я получаю ошибку API9, я использую вместо этого:

    SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
    for (int i = 0; i< deviceSensors.size(); i++) {
        if (deviceSensors.get(i).getType() == Sensor.TYPE_PRESSURE) {
            mHasBarometer = true;
            break;
        }
    }

Ответ 5

Я использую следующий код:

        SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
       if( sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).size() > 0)
       {
           //sensor exist
       }
       else
       {
           //disable feature
       }