2012-01-26 88 views
10

我想知道我的Android設備上是否有傳感器(例如accellerometer)。如何知道我的Android設備上是否有傳感器?

我正在處理SensorManager類。 這裏是我使用的代碼:

sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); 
sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),1); 

謝謝。

回答

10

你的第二行可以用於此:

boolean accelerometer; 

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

if(accelerometer) 
{ 
. 
. 
} 
+0

它的工作原理,感謝 – 2012-01-26 23:56:04

+6

你爲什麼要註冊一個偵聽器? – 2016-04-18 11:16:41

18

採取這裏看看:

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

如果認爲你需要做的是:

PackageManager manager = getPackageManager(); 
boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER); 
+0

我會試試這個,謝謝。 – 2012-01-26 23:52:39

+1

這很重要,因爲你不依賴傳感器管理器 – 2016-04-17 10:45:53

3

由於我得到一個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; 
     } 
    } 
9

下面是從developer.android.com recomendation: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. 
} 
0

我使用下面的代碼:

 SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     if(sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).size() > 0) 
     { 
      //sensor exist 
     } 
     else 
     { 
      //disable feature 
     } 
相關問題