繁体   English   中英

如何知道我的Android设备上是否存在传感器?

[英]How to know if a sensor is present on my Android device?

我想知道我的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);

您的第二行可以用于此:

boolean accelerometer;

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

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

由于出现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
       }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM