感應器

Android Sensors HAL 圖示

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

什麼是 Android 感應器?

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

提供資料的實體裝置清單不包括攝影機、指紋感應器、麥克風和觸控螢幕。這些裝置有自己的回報機制;雖然這種區分方式是任意的,但一般來說,Android 感應器提供的資料頻寬較低。舉例來說,加速度計為「100 Hz x 3 個通道」,攝影機為「25 Hz x 8 MP x 3 個通道」,麥克風則為「44 kHz x 1 個通道」。

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

  • 感應器晶片通常會透過感應器中樞連接至 SoC,以便進行部分低功耗監控和資料處理作業。
  • 通常會使用積體電路間 (I2C) 或序列周邊介面 (SPI) 做為傳輸機制。
  • 為了減少耗電量,部分架構採用階層式設計,在特定應用程式的積體電路 (ASIC,例如加速計晶片上的動作偵測) 中完成最少的處理作業,並在微控制器 (例如感應器中樞的步數偵測) 中完成更多作業。
  • 裝置製造商會根據準確度、電力、價格和封裝大小特性選擇架構。詳情請參閱「感應器堆疊」。
  • 批次處理功能是電力最佳化的重要考量因素。詳情請參閱「批次處理」。

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

  • Android 官方感應器類型定義於 sensors.h 中,名稱為 SENSOR_TYPE_…
    • 絕大多數感應器都有官方感應器類型。
    • Android SDK 中有這些類型的說明文件。
    • Android Compatibility Test Suite (CTS) 會測試這類感應器的行為。
  • 如果製造商在 Android 裝置上整合新型感應器,可以定義自己的暫時類型來參照該感應器。
    • 這些類型未列入文件,因此應用程式開發人員不太可能使用,原因可能是他們不知道這些類型,或是知道這些類型很少出現 (僅在特定製造商的部分裝置上)。
    • CTS 不會測試這些功能。
    • Android 為這類感應器定義正式感應器類型後,製造商就必須停止使用自己的暫時類型,改用正式類型。這樣一來,更多應用程式開發人員就能使用感應器。
  • HAL 實作會回報裝置上的所有感應器清單。
    • 可以有多個相同類型的感應器。例如兩個近接感應器或兩個加速計。
    • 大多數應用程式只會要求特定類型的單一感應器。舉例來說,如果應用程式要求預設加速度計,系統會提供清單中的第一個加速度計。
    • 感應器通常會定義為「喚醒」和「非喚醒」配對,這兩個感應器共用相同類型,但喚醒特性不同。

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

每個事件都包含:

解讀回報資料時,請務必考量感應器類型。如要瞭解每種感應器類型回報的資料,請參閱感應器類型定義。

現有說明文件

專為開發人員設計

適用於製造商