Ответ 1
Для этого можно использовать вторую строку:
boolean accelerometer;
accelerometer = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if(accelerometer)
{
.
.
}
Я хотел бы узнать, присутствует ли на моем устройстве Android датчик (например, акселлерометр).
Я имею дело с классом SensorManager. Вот код, который я использую:
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1);
Спасибо.
Для этого можно использовать вторую строку:
boolean accelerometer;
accelerometer = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if(accelerometer)
{
.
.
}
загляните сюда:
http://developer.android.com/reference/android/content/pm/PackageManager.html
если вы думаете, что вам нужно это сделать:
PackageManager manager = getPackageManager();
boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);
Вот рекомендация от 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.
}
Поскольку я получаю ошибку 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;
}
}
Я использую следующий код:
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if( sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).size() > 0)
{
//sensor exist
}
else
{
//disable feature
}