Как узнать, есть ли датчик на моем устройстве Android? - PullRequest
13 голосов
/ 27 января 2012

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

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

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

Спасибо.

Ответы [ 5 ]

28 голосов
/ 27 января 2012

посмотрите здесь:

http://developer.android.com/reference/android/content/pm/PackageManager.html

, если считаете, что вам нужно это сделать:

13 голосов
/ 27 января 2012

Для этого может использоваться ваша вторая строка:

boolean accelerometer;

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

if(accelerometer) 
{
.
.
}
11 голосов
/ 26 сентября 2014

Вот рекомендация 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's a magnetometer.
}
else {
  // Failure! No magnetometer.
}
3 голосов
/ 22 октября 2013

Поскольку я получаю требуемую ошибку 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;
        }
    }
0 голосов
/ 30 ноября 2017

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

        SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
       if( sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).size() > 0)
       {
           //sensor exist
       }
       else
       {
           //disable feature
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...