我想知道我的 Android 设备上是否存在传感器(例如加速度计)。
我正在处理 SensorManager 类。这是我正在使用的代码:
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1);
谢谢你。
我想知道我的 Android 设备上是否存在传感器(例如加速度计)。
我正在处理 SensorManager 类。这是我正在使用的代码:
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1);
谢谢你。
看看这里:
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's a magnetometer.
}
else {
// Failure! No magnetometer.
}
您的第二行可用于此:
boolean accelerometer;
accelerometer = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if(accelerometer)
{
.
.
}
由于我收到 API9 required 错误,因此我改用:
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
}