首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否提供android detect陀螺仪

是否提供android detect陀螺仪
EN

Stack Overflow用户
提问于 2013-07-01 12:09:56
回答 4查看 8.9K关注 0票数 8

如何检测android设备是否有陀螺仪?目前我正在使用以下方法来检测陀螺仪是否可用。如果陀螺仪不可用,则使用加速度计。

代码语言:javascript
复制
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);

然而,我的一些应用程序用户抱怨说,他们不能使用陀螺仪。代码有什么问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-01 12:14:15

您可以简单地使用Package Manager的系统功能来检查设备中是否有陀螺仪:

代码语言:javascript
复制
PackageManager packageManager = getPackageManager();
boolean gyroExists = packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_GYROSCOPE);

您当前的代码可能无法在某些设备上运行,因为不能保证传感器名称中包含Gyroscope

票数 21
EN

Stack Overflow用户

发布于 2013-07-01 12:17:35

使用以下命令:

代码语言:javascript
复制
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if(mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null)
{

         // Sensor FOUND
}
else
{
        //Sensor NOT FOUND
}
票数 7
EN

Stack Overflow用户

发布于 2013-07-01 12:14:06

你应该使用

代码语言:javascript
复制
sensor.getType() == Sensor.TYPE_GYROSCOPE

代替您当前的sensor.getName().contains("Gyroscope"),以确定传感器是否为陀螺仪。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17397313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档