Android傳感器概述(七)

處理不同的傳感器器配置

Android不給設備指定標準的傳感器配置,這就意味著制造商能夠把任何他們想要的傳感器配置包含到他們的Android設備中。因此,設備能夠包含配置廣泛的各種傳感器。例如,摩托羅拉的Xoom有一個壓力傳感器,但是三星的Nexus S卻沒有。同樣Xoom和Nexus S都有陀螺儀,但是HTC的Nexus One卻沒有。如果你的應用程序依賴特殊類型的傳感器,就必須確保傳感器存在於設備上,以保證你的應用程序能夠成功的運行。有兩種方法來確定給定的傳感器是否存在於設備上:

1. 在運行時檢測傳感器,並根據檢測結果來啟用或禁用應用程序相關的功能;

2. 使用Google Play來過濾目標設備上是否有指定的傳感器配置。

在運行時檢測傳感器

如果你的應用程序使用的是一種特殊的傳感器類型,但是不想依賴它,你能夠使用傳感器框架在運行時來檢測該傳感器,然後決定禁止或啟用應用程序對應的功能。例如,一個導航應用程序可能要使用溫度傳感器、壓力傳感器、GPS傳感器和地磁場傳感器來顯示溫度、氣壓、位置和羅盤方位。如果設備沒有壓力傳感器,你能夠使用傳感器框架在運行時來檢測壓力傳感器的存在性,然後禁用顯示壓力的應用程序的UI部分。例如,下列代碼用來檢查設備上是否有壓力傳感器:

private SensorManager mSensorManager;

  …

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

  if (mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) != null){

  // Success! There's a pressure sensor.

  }

  else {

  // Failure! No pressure sensor.

  }

使用Google Play來過濾目標指定的傳感器配置

如果你要把應用程序發佈到Google Play上,那麼在你的應用程序清單文件中能夠使用<uses-feature>元素來過濾那些沒有相應傳感器配置的設備。<uses-feature>元素有幾個硬件描述符,它們會讓你基於指定傳感器的存在性來過濾應用程序。你能夠列出的傳感器包括:加速度度、氣壓、羅盤(地磁場)、陀螺儀、亮度以及距離。下例應用程序清單,會阻止應用程序安裝到沒有加速度傳感器的設備上:

<uses-feature android:name="android.hardware.sensor.accelerometer"

              android:required="true" />

如果你把這個元素添加到應用程序的清單中,在Google Play上,用戶隻會在有加速度傳感器的設備看到你的應用程序。

如果你的應用程序完全依賴一種特定的傳感器,那麼就應該把描述設置成:android:required=”true”。如果你的應用程序隻有某些功能使用該傳感器,而在沒有傳感器時還要依然運行,你應該在<uses-feature>元素中列出該傳感器,但要把描述符設置為:android:required=”false”。這樣有助於即使在沒有指定傳感器的設備上也能安裝你的應用程序。這也是項目管理的最佳實踐,它有助於你跟蹤應用程序功能的使用情況。要記住,如果你的應用程序使用一種特殊的傳感器,但在沒有傳感器時還要依然運行,那麼應該在運行時檢測傳感器,並根據檢測的結果來禁止或啟用應用程序相應的功能。

You May Also Like