Pergunta

gostaria de saber se um sensor (por exemplo, o acelerômetro) está presente no meu dispositivo Android.

Estou lidando com a classe SensorManager.Aqui está o código que estou usando:

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

Obrigado.

Foi útil?

Solução

Sua segunda linha pode ser usada para isso:

boolean accelerometer;

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

if(accelerometer) 
{
.
.
}

Outras dicas

dê uma olhada aqui:

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

se você acha que precisa fazer isso:

PackageManager manager = getPackageManager();
boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);

Aqui está a recomendação de developer.android.com: http://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-identificar

Você pode determinar se existe um tipo específico de sensor em um dispositivo usando o método getDefaultSensor() e passando a constante de tipo para um sensor específico.Se um dispositivo tiver mais de um sensor de um determinado tipo, um dos sensores deverá ser designado como sensor padrão.Se não existir um sensor padrão para um determinado tipo de sensor, a chamada do método retornará nulo, o que significa que o dispositivo não possui esse tipo de sensor.

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.
}

Como recebo um erro de API9 obrigatório, uso:

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

Eu uso o seguinte código:

        SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
       if( sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).size() > 0)
       {
           //sensor exist
       }
       else
       {
           //disable feature
       }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top