2015-05-27 40 views
1

我已經使用下面的代碼來檢查TYPE_SIGNIFICANT_MOTION傳感器的可用性。如何檢查Android設備中的TYPE_SIGNIFICANT_MOTION傳感器可用性?

SensorManager mSensorManager = (SensorManager) context 
      .getSystemService(Context.SENSOR_SERVICE); 

    List<Sensor> sensors = mSensorManager 
      .getSensorList(Sensor.TYPE_SIGNIFICANT_MOTION); 

    boolean isSensorAvailable = Boolean.valueOf(sensors.size() > 0); 

我測試過三種不同的設備。所有設備返回false。

在doc中,他們給出TYPE_SIGNIFICANT_MOTION常量在API 18中添加。如何檢查此傳感器的可用性,以版本18以前的版本。 糾正我以獲得正確的傳感器可用性狀態。

回答

1

根據相關文檔,它的建議,以檢查這樣的可用性:

if (mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION) != null){ 
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION); 
} 

對於之前的版本18,它永遠是零,因爲它尚未確定。

由於顯著運動傳感器是基於加速度計,原因你測試檢查該傳感器可能是當返回false設備的製造商沒有實施使用加速度計這個軟件傳感器。但是你總是可以自己實現類似的東西。

希望這會有所幫助!

+0

嗨暗紅,我有加速度計,但上面的返回null。有沒有辦法通過簡單的加速度計從睡眠中醒來? – ransh

+0

使用加速度計並不意味着您有其他類型的軟件傳感器 - 因此您可能想要嘗試該類別中的每個傳感器並使用可用的傳感器 – Anhong

相關問題