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

Mil*_*loš 14 android android-sensors

我想知道我的Android设备上是否有传感器(例如accellerometer).

我正在处理SensorManager类.这是我正在使用的代码:

sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Sam*_*lix 29

看看这里:

http://developer.android.com/reference/android/content/pm/PackageManager.html

如果认为你需要那样做:

PackageManager manager = getPackageManager();
boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);
Run Code Online (Sandbox Code Playgroud)


Mil*_*vic 14

你的第二行可用于此:

boolean accelerometer;

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

if(accelerometer) 
{
.
.
}
Run Code Online (Sandbox Code Playgroud)

  • 你为什么要注册一个听众? (8认同)

Dmi*_*Dzz 13

以下是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.
}
Run Code Online (Sandbox Code Playgroud)