Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

传感器

Android 传感器 HAL 图标

Android 传感器使应用可以访问移动设备的底层实体传感器。它们是负责提供数据的虚拟设备,由传感器硬件抽象层 (HAL) sensor.h 进行定义。

什么是 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 兼容性测试套件 (CTS) 中进行测试。
  • 如果制造商在 Android 设备上集成了一种新型传感器,则可以自行定义一个临时类型来引用它。
    • 这些类型没有相关文档,因此应用开发者不太可能使用它们,因为开发者不了解它们,或者知道它们很少存在(仅在该特定制造商制造的某些设备上)。
    • 它们不会经过 CTS 测试。
    • 一旦 Android 为这种传感器定义了官方传感器类型,那么制造商必须停止使用自己的临时类型,并改为使用官方类型。这样,该传感器将可供更多应用开发者使用。
  • 设备上存在的所有传感器的列表由 HAL 实现报告。
    • 可以存在几个相同类型的传感器。例如,两个近程传感器或两个加速度计。
    • 绝大多数应用仅会请求给定类型的单个传感器。例如,请求默认加速度计的应用将获得列表中的第一个加速度计。
    • 传感器通常由唤醒非唤醒对进行定义,两种传感器会共用同一类型,但其唤醒特性不同。

Android 传感器提供的数据是一系列传感器事件。

每个事件包含:

对所报告数据的解析取决于传感器类型。有关每种传感器类型会报告什么数据的详细信息,请参见传感器类型定义。

现有文档

面向开发者

面向制造商