感應器

Android Sensors HAL 圖示

Android 感應器可讓應用程式存取行動裝置的底層實體感應器。這些是資料提供虛擬裝置,由 sensors.h 定義,即感應器硬體抽象層 (HAL)。

什麼是 Android 感應器?

Android 感應器是虛擬裝置,可提供一組實體感應器的資料:加速計、陀螺儀、磁力計、氣壓計、濕度、壓力、光線、鄰近感應器和心率感應器。

相機、指紋感應器、麥克風和觸控螢幕不在提供資料的實體裝置清單中。這些裝置有各自的回報機制,分離方式不一定,但一般而言,Android 感應器會提供較低頻寬的資料。例如,加速計的「100hz x 3 個通道」與相機的「25hz x 8 MP x 3 個通道」或麥克風的「44kHz x 1 個通道」相比。

Android 並未定義不同實體感應器如何連線至晶片系統 (SoC)。

  • 通常,感應器晶片會透過感應器中樞連接至 SoC,以便進行一些低功耗的監控和資料處理作業。
  • 通常會使用內部集成電路 (I2C) 或序列外圍介面 (SPI) 做為傳輸機制。
  • 為減少耗電量,部分架構採用分層式設計,在特殊應用積體電路 (ASIC,例如加速計晶片上的動作偵測) 中執行部分最少的處理作業,並在微控制器中執行更多處理作業 (例如感應器中樞中的步數偵測)。
  • 裝置製造商可根據精確度、效能、價格和套件大小等特徵,選擇所需架構。詳情請參閱「感應器堆疊」。
  • 批次功能是電源最佳化的重要考量。詳情請參閱「批次處理」一節。

每個 Android 感應器都有一個「類型」,代表感應器的行為方式和提供的資料。

  • 官方 Android Sensor 類型已在 sensors.h 中定義,名稱為 SENSOR_TYPE_…
    • 絕大多數感應器都有官方感應器類型。
    • 這些類型已在 Android SDK 中記錄。
    • 在 Android Compatibility Test Suite (CTS) 中,會測試這些類型的感應器行為。
  • 如果製造商在 Android 裝置上整合新類型的感應器,製造商可以定義自己的暫時型別來參照該感應器。
    • 這些類型沒有相關文件,因此應用程式開發人員不太可能使用這些類型,原因可能是他們不瞭解這些類型,或是知道這些類型很少出現 (僅出現在特定製造商的部分裝置上)。
    • 並未經過 CTS 測試。
    • Android 為這類感應器定義官方感應器類型後,製造商就必須停止使用自己的臨時類型,改用官方類型。這樣一來,更多應用程式開發人員就能使用這項感應器。
  • HAL 實作會回報裝置上所有感應器的清單。
    • 同類型的感應器可能有好幾個。例如兩個接近感應器或兩個加速度計。
    • 大多數應用程式只會要求特定類型的單一感應器。舉例來說,要求預設加速計的應用程式會取得清單中的第一個加速計。
    • 感應器通常會以喚醒非喚醒組合定義,兩者都是同類型感應器,但喚醒特徵不同。

Android 感應器會以一系列感應器事件的形式提供資料。

每個事件都包含:

回報資料的解讀方式取決於感應器類型。如要進一步瞭解每種感應器類型會回報哪些資料,請參閱感應器類型定義。

現有說明文件

鎖定開發人員

鎖定製造商