如何检测android设备是否有陀螺仪?目前我正在使用以下方法来检测陀螺仪是否可用。如果陀螺仪不可用,则使用加速度计。
SensorManager mgr = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> sensors = mgr.getSensorList(Sensor.TYPE_ALL);
for (Sensor sensor : sensors) {
Log.i("sensors",sensor.getName());
if(sensor.getName().contains("Gyroscope")){
try{
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR),
SensorManager.SENSOR_DELAY_FASTEST);
return;
}catch(Exception e){
}
}
}
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);然而,我的一些应用程序用户抱怨说,他们不能使用陀螺仪。代码有什么问题吗?
发布于 2013-07-01 12:14:15
您可以简单地使用Package Manager的系统功能来检查设备中是否有陀螺仪:
PackageManager packageManager = getPackageManager();
boolean gyroExists = packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_GYROSCOPE);您当前的代码可能无法在某些设备上运行,因为不能保证传感器名称中包含Gyroscope。
发布于 2013-07-01 12:17:35
使用以下命令:
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if(mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null)
{
// Sensor FOUND
}
else
{
//Sensor NOT FOUND
}发布于 2013-07-01 12:14:06
你应该使用
sensor.getType() == Sensor.TYPE_GYROSCOPE代替您当前的sensor.getName().contains("Gyroscope"),以确定传感器是否为陀螺仪。
https://stackoverflow.com/questions/17397313
复制相似问题