感應器

Android 感應器 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感測器類型Sensors.h中定義,名稱為 SENSOR_TYPE_...
    • 絕大多數感測器都有官方感測器類型。
    • 這些類型記錄在 Android SDK 中。
    • 這些類型的感測器的行為在 Android 相容性測試套件 (CTS) 中進行測試。
  • 如果製造商在 Android 裝置上整合了一種新型感測器,則製造商可以定義自己的臨時類型來引用它。
    • 這些類型沒有記錄,因此應用程式開發人員不太可能使用它們,要么因為他們不了解它們,要么知道它們很少出現(僅在該特定製造商的某些設備上)。
    • 它們未經 CTS 測試。
    • 一旦Android為此類感測器定義了官方感測器類型,製造商就必須停止使用自己的臨時類型,轉而使用官方類型。這樣,感測器將被更多的應用開發者使用。
  • 設備上存在的所有感測器的清單由 HAL 實現報告。
    • 可以有多個相同類型的感測器。例如,兩個接近感測器或兩個加速度計。
    • 絕大多數應用只需要一個給定類型的感測器。例如,請求預設加速計的應用程式將取得清單中的第一個加速計。
    • 感測器通常由喚醒非喚醒對定義,這兩個感測器共享相同類型,但喚醒特性有所不同。

Android 感測器以一系列感測器事件的形式提供數據。

每個事件包含:

報告數據的解釋取決於感測器類型。有關每種感測器類型報告的數據的詳細信息,請參閱感測器類型定義。

現有文檔

針對開發商

針對製造商