Android Sensor -- Overview


说明:Sensor 系列文章请参考 Android Sensor

此篇搬运自 android官方网站sensors

Sensors 传感器


Android sensors give applications access to a mobile device’s underlying physical sensors. They are data-providing virtual devices defined by sensors.h, the sensor Hardware Abstraction Layer (HAL).

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

What are Android sensors?

Android sensors are virtual devices that provide data coming from a set of physical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity, pressure, light, proximity and heart rate sensors.

Not included in the list of physical devices providing data are camera, fingerprint sensor, microphone, and touch screen. These devices have their own reporting mechanism; the separation is arbitrary, but in general, Android sensors provide lower bandwidth data. For example, “100hz x 3 channels” for an accelerometer versus “25hz x 8 MP x 3 channels” for a camera or “44kHz x 1 channel” for a microphone.

Android does not define how the different physical sensors are connected to the system on chip (SoC).

  • Often, sensor chips are connected to the SoC through a sensor hub, allowing some low-power monitoring and processing of the data.
  • Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface (SPI) is used as the transport mechanism.
  • To reduce power consumption, some architectures are hierarchical, with some minimal processing being done in the application-specific integrated circuit (ASIC - like motion detection on the accelerometer chip), and more is done in a microcontroller (like step detection in a sensor hub).
  • It is up to the device manufacturer to choose an architecture based on accuracy, power, price and package-size characteristics. See Sensor stack for more information.
  • Batching capabilities are an important consideration for power optimization. See Batching for more information.

Android 传感器属于虚拟设备,可提供来自以下各种物理传感器的数据:加速度计、陀螺仪、磁力计、气压计、湿度传感器、压力传感器、光传感器、近程传感器和心率传感器。

提供数据的物理设备列表中不包括相机、指纹传感器、麦克风和触摸屏。这些设备有自己的报告机制;这种区别是随意的,但一般来说,Android 传感器提供较低带宽的数据。例如,加速度计为“100 hz x 3 个通道”、相机为“25 hz x 8 MP x 3 个通道”,而麦克风为“44 kHz x 1 个通道”。

Android 不定义不同物理传感器如何连接到系统芯片 (SoC)。

  • 通常,传感器芯片通过传感器中枢连接到 SoC,允许对数据进行一些低功耗的监控和数据处理。
  • 通常,使用内部集成电路 (I2C) 或串行外设接口 (SPI) 作为传输机制。
  • 为了降低功耗,一些架构具有层次性,在专用集成电路(简称 ASIC,如加速度计芯片上的运动检测)中进行极少的处理,而在微控制器(如传感器中枢中的步数检测)中进行更多处理。
  • 设备制造商会根据精确度、功率、价格和封装大小特性来选择架构。有关详情,请参阅传感器堆栈
  • 批处理功能是功率优化的重要考虑因素。有关详情,请参阅批处理

Each Android sensor has a “type” representing how the sensor behaves and what data it provides.

  • The official Android Sensor types are defined in sensors.h under the names SENSOR_TYPE_…
    • The vast majority of sensors have an official sensor type.
    • Those types are documented in the Android SDK.
    • Behavior of sensors with those types are tested in the Android Compatibility Test Suite (CTS).
  • If a manufacturer integrates a new kind of sensor on an Android device, the manufacturer can define its own temporary type to refer to it.
    • Those types are undocumented, so application developers are unlikely to use them, either because they don’t know about them, or know that they are rarely present (only on some devices from this specific manufacturer).
    • They are not tested by CTS.
    • Once Android defines an official sensor type for this kind of sensor, manufacturers must stop using their own temporary type and use the official type instead. This way, the sensor will be used by more application developers.
  • The list of all sensors present on the device is reported by the HAL implementation.
    • There can be several sensors of the same type. For example, two proximity sensors or two accelerometers.
    • The vast majority of applications request only a single sensor of a given type. For example, an application requesting the default accelerometer will get the first accelerometer in the list.
    • Sensors are often defined by wake-up and non-wake-up pairs, both sensors sharing the same type, but differing by their wake-up characteristic.

Android sensors provide data as a series of sensor events.

Each event contains:

The interpretation of the reported data depends on the sensor type. See the sensor type definitions for details on what data is reported for each sensor type.

每个 Android 传感器都有一个“类型”,表示传感器的行为及其提供的数据。

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

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

每个事件包含:

  • 生成该事件的传感器的句柄
  • 检测到或测量事件时的时间戳
  • 以及一些数据

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

Existing documentation 现有文档


  Targeted at developers 面向开发者
  Targeted at manufacturers 面向制造商
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值