欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android传感器(sensor)简介

程序员文章站 2022-05-14 08:27:07
sensor android的sensor架构如下 系统,有些是hal—>qmi—>ssc,这里不对这部分做说明,关注aosp部分. 背景知识 在进入代码之前...

sensor

android的sensor架构如下

Android传感器(sensor)简介系统,有些是hal—>qmi—>ssc,这里不对这部分做说明,关注aosp部分.

背景知识

在进入代码之前,先简单描述一些相关背景知识点

传感器

android传感器框架中包括物理传感器和虚拟传感器两大类

物理传感器

表示物理特性和状态的传感器包括加速度计、陀螺仪、指南针、温度计、气压计、光传感器、心率计等等 虚拟传感器

旋转矢量、重力方向、线性加速度等,这些传感器的数据是依据物理传感器的数据,经过融合算法后计算得出的.(有些计步器是根据加速度计计算获得的,这种计步器也算是虚拟传感器)

这两类传感器单次数据量比较小,目前种类有30多个(sensor.h中查阅),市场中还存在一些其他传感器,如相机中的sensor,指纹传感器,触摸传感器.因其功能复杂且特殊被放在单独模块中处理,并不包含在传感器框架中,物理传感器和虚拟传感器对于应用程序来说,没有什么区别,aosp部分已将这部分做了一致处理..

对于常用的九轴传感器原理,融合算法,对比分析,可以看之前整理的文章9轴传感器

上报方式

不同的传感器的上报方式不同,根据实际情况进行设定,目前支持有四种上报方式

连续模式

传感器持续不断的上报数据,这种上报方式适用于加速度计、陀螺仪这样的传感器,使用它们时,往往需要实时(200hz~1khz)连续的上报. 变化模式

当传感器数据经过一段时间发生变化后,才上报,常见的是心率计和计步器 单次模式

当传感器检测到某种事件时触发,例如红外传感器,在检测到人靠近时,触发上报. 特定上报模式

用于支持特定需求的上报,较少使用.

唤醒传感器和唤醒传感器

所谓的唤醒是指是否能够唤醒soc处理器来处理事件,当soc处于挂起状态时,唤醒传感器可以将soc唤醒处理必要的事件.另外同一个传感器可以同时被定义为唤醒传感器和非唤醒传感器.两者相对独立.

多个应用共同访问同一个传感器

应用a以100hz速率访问传感器x,应用b以200hz速率访问传感器x,最终传感器上报速率以较高的为准,即200hz 多个应用设定了报告延迟时间,又可能会超过所设定的延迟时间 不支持多个应用对同一个传感器设定不同模式(例如:一个设定”高精度”,另一个设定”低功耗”) 应用不能将传感器数据下发(应用只向下发送控制命令,而不下发数据),否则其他应用可能接收到应用下发的错误数据.

融合算法

android平台可以依赖原始的9轴数据(加速度计、陀螺仪、指南针),融合出旋转矢量、重力和线性加速度传感器给应用程序使用,当然如果有能力可以自己实现更好的融合算法.