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 传感器提供的数据是一系列传感器事件。
每个事件包括:
生成事件传感器的句柄
还有一些数据
报告数据的分析取决于传感器类型。详情请参考传感器类型的定义。
现有文档
面向开发者
面向制造商
概览
传感器页及其子页。
Android CDD(兼容性定义文档)