Android sensor 传感器简介

news/2024/11/24 19:14:29/

一、定义

Android 传感器相关术语微机电传感器(MEMS)MEMS 通常制作在规格很小的硅芯片上,借用了计算机芯片的制作技术。通常来说,所有的 Android 传感器都使用了这些技术,但是从技术的角度来说,MEMS 指的是在该传感器的部分设计中纳入了物理移动或震动,例如压力传感器、加速度计、陀螺仪等,也有可能是指南针,这些才是真正意义上的 MEMS。

二、分类及名词解释

Android 中引用的传感器大致分为两种,原始传感器(物理传感器)和合成传感器(虚拟传感器)。

原始传感器给出从传感器获得的原始数据,并且一个原始传感器对应一个 Android 设备中实际存在的的物理传感器组件。

合成传感器通过结合多个原始传感器的原始数据,或者修改原始传感器的数据,在应用代码和和底层设备之间提供一个抽象层,并为上层业务提供服务。

二元传感器(Binary Sensor)二元传感器,是一种只输出两个值其中之一的传感器。大多数的距离传感器和光传感器都属于二元传感器,因为他们只输出远和近的测量。

连续传感器(Continuous Sensor)连续传感器,测量从最小值到最大值之间的所有的数据。动态范围(Dynamic Range)动态范围指的是传感器能测量的值的范围。例如光传感器的动态范围可以是1~~10000 lux。

饱和状态(Saturation)饱和状态,在传感器视图感测一个超出它的最大测量值时产生。

分辨率(Resolution)在很多情况下,分辨率表示实际能够检测到的最小物理差值。该差值受到噪音的限制。分辨率有时用来描述在考虑系统噪音的情况下,两个信号之间能够检测出的最小差值。在 Android 系统中,分辨率是一个独立于传感器噪音之外的数字分辨率。Android 传感器输出数字信号,例如常见的有8位(256个可能的值)、10位(1024个可能的值)和12位(4096个可能的值)加速度计。最大范围除以可能的值的个数即为输出的分辨率(通过 Sensor.getResolution() 获取的值)。

采样频率(Sampling Frequency)采样频率是两次测量间的时间间隔,以赫兹(Hertz)为单位。在注册监听器的时候,可以指定监听器的延迟和测量速率。可以设置的速率值如下(SensorManager 中):
SENSOR_DELAY_FASTEST
SENSOR_DELAY_GAMESENSOR_DELAY_UI
SENSOR_DELAY_NORMAL(默认值)

三、常用API

Android SDK 提供的与传感器相关的类有(位于 android.hardware 包):

Sensor: 表示传感器的类,它保存有传感器信息:最大范围(Maximum range)、最小范围(Minimum range)、名称(Name)、功率(Power)、分辨率(Resolution)、类型(* TYPE)、供应商(Vendor)、版本(Version);

SensorEvent:表示传感器事件,它可以保存传感器的值,传感器类型、时间戳等信息;

SensorEventListener:提供回调以通知应用传感器相关事件的接口。为了能够接收这些事件,应用需要创建一个类实现 SensorEventListener 接口,并将其注册到 SensorManager。

SensorManager:SensorManager 让你可以访问设备(手机)的全部传感器。和其他的系统服务一样,它允许应用注册或注销传感器相关事件。一旦注册成功,应用将接收到从传感器传来的数据。除了允许应用注册以获取传感器数据以外,SensorManager 还提供处理传感器数据的方法。

SensorEventSensorEvent:是一个数据结构,包含了传感器输出到应用的信息。

accuracy:传感器输出的精度分为四个等级。在这种情况下,accuracy 指的就是输出数据的可靠程度,而不是与物理值的接近程度。可能的 accuracy 值有如下几种(SensorManage 中):
SENSOR_STATUS_ACCURACY_HIGH
SENSOR_STATUS_ACCURACY_MEDIUM
SENSOR_STATUS_ACCURACY_LOW
SENSOR_STATUS_UNRELIABLE

精确度不可靠并不意味着传感器的损坏,有可能是周围环境的变化而引起的。
sensor:传感器对象 Sensor 的对象。timestamp SensorEvent 发生的时间,以毫秒为单位。

values:表示传感器数据的数组。数据的大小以及数据的含义取决于产生数据的传感器。

四、常见的类型

目前 常用Android 设备支持的传感器类型有很多,但是有些手机设备支持的类型也很少,如下:

  • TYPE_ACCELEROMETER  加速度传感器,又叫 G-sensor,该数值包含地心引力的影响,单位是 m/s2,测量应用于设备 x 、y、z 轴上的加速度。将手机平放在桌面上,x 轴默认为0,y 轴默认0,z 轴默认9.81。将手机朝下放在桌面上,z 轴为-9.81。将手机向左倾斜,x 轴为正值。将手机向右倾斜,x 轴为负值。将手机向上倾斜,y 轴为负值。将手机向下倾斜,y 轴为正值。
  • TYPE_AMBIENT_TEMPERATURE  温度传感器 ,单位是 ℃,返回当前的温度。
  • TYPE_GAME_ROTATION_VECTOR  游戏动作传感器,用来探测运动而不必受到电磁干扰的影响,因为它并不依赖于磁北极。
  • TYPE_GEOMAGNETIC_ROTATION_VECTOR  地磁旋转矢量传感器 ,提供手机的旋转矢量,当手机处于休眠状态时,仍可以记录设备的方位。
  • TYPE_GRAVITY  重力传感器,简称 GV-sensor,单位是 $m/s^2%,测量应用于设备X、Y、Z轴上的重力。在地球上,重力数值为9.8,
  • TYPE_GYROSCOPE  陀螺仪传感器,叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。单位是 radians/second。
  • TYPE_GYROSCOPE_UNCALIBRATED  未校准陀螺仪传感器 ,提供原始的、未校准、补偿的陀螺仪数据,用于后期处理和融合定位数据。
  • TYPE_LIGHT  光线感应传感器,检测实时的光线强度 ,光强单位是lux,其物理意义是照射到单位面积上的光通量。
  • TYPE_LINEAR_ACCELERATION  线性加速度传感器,简称LA-sensor。线性加速度传感器是加速度传感器减去重力影响获取的数据。单位是 m/s2。
  • TYPE_MAGNETIC_FIELD  磁力传感器,简称为M-sensor,返回 x、y、z 三轴的环境磁场数据。该数值的单位是微特斯拉(micro-Tesla),用uT表示。单位也可以是高斯(Gauss),1Tesla=10000Gauss。硬件上一般没有独立的磁力传感器,磁力数据由电子罗盘传感器提供(E-compass)。电子罗盘传感器同时提供方向传感器数据。
  • TYPE_MAGNETIC_FIELD_UNCALIBRATED  未校准磁力传感器 ,提供原始的、未校准的磁场数据。
  • TYPE_ORIENTATION  方向传感器,简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。为了得到精确的角度数据,E-compass 需要获取 G-sensor 的数据,经过计算生产 O-sensor 数据,否则只能获取水平方向的角度。方向传感器提供三个数据,分别为azimuth、pitch和roll:azimuth: 方位,返回水平时磁北极和 Y 轴的夹角,范围为0°至360°。0°为北,90°为东,180°为南,270°为西。pitch: x 轴和水平面的夹角,范围为-180°至180°。当 z 轴向 y 轴转动时,角度为正值。roll: y 轴和水平面的夹角,由于历史原因,范围为-90°至90°。当 x 轴向 z 轴移动时,角度为正值。
  • TYPE_PRESSURE  压力传感器 ,单位是hPa(百帕斯卡),返回当前环境下的压强 。
  • TYPE_PROXIMITY 接近传感器检测物体与手机的距离 ,单位是厘米。一些接近传感器只能返回远和近两个状态,因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。
  • TYPE_RELATIVE_HUMIDITY  湿度传感器 ,单位是 %,来测量周围环境的相对湿度。
  • TYPE_ROTATION_VECTOR  旋转矢量传感器,简称RV-sensor。旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。RV-sensor输出三个数据:xsin(theta/2)ysin(theta/2)z*sin(theta/2)sin(theta/2)是 RV 的数量级。RV 的方向与轴旋转的方向相同。RV 的三个数值,与cos(theta/2)组成一个四元组。
  • TYPE_SIGNIFICANT_MOTION  特殊动作触发传感器。
  • TYPE_STEP_COUNTER   计步传感器 ,用于记录激活后的步伐数。
  • TYPE_STEP_DETECTOR 步行检测传感器 ,用户每走一步就触发一次事件。
  • TYPE_TEMPERATURE  温度传感器 ,目前已被* TYPE_AMBIENT_TEMPERATURE替代。

http://www.ppmy.cn/news/773068.html

相关文章

定时器中断实验(stm32)

目录 TIME的代码time.ctime.h main.c TIME的代码 time.c void TIM3_Int_Init(u16 arr,u16 psc) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能//定时器TIM3初始化…

探秘制造业数智化:揭开低代码开发平台的新篇章

前言 随着数智时代的到来,制造业面临着前所未有的转型机遇。在这个信息爆炸的时代,如何有效运用科技和数据资源,成为了制造业企业的当务之急。而低代码开发平台,如JNPF快速开发平台,正是这个转型过程中不可或缺的利器。…

开源Cillium项目为容器提供强大的网络功能

试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术,为容器提供一种新的网络方法。 试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器…

SpringBoot 配置文件:什么时配置文件?配置文件能干什么?

文章目录 🎇前言1.配置文件的格式2. properties配置文件说明2.1 properties基本语法2.2 读取配置文件 3. yml 配置文件说明3.1 yml 基本语法 4.properties与yml 对比 🎇前言 学习一个东西,我们先要知道它有什么用处。整个项目中所有重要的数…

android13(T) Settings 主页面 Suggestion 菜单源码分析

1、什么是 Suggestion 菜单 呐,下面这个就是 Suggestion 菜单,一般出现在设置主界面最上方位置。 出现时机需要满足三个条件,1、设备不是 LowRam 设备 2、启用 settings_contextual_home 特性 3、在开机一定时间后(一般是几天,具…

易车说新能源汽车的发展历程

去年大众等海外品牌、吉利等中国品牌、蔚来等新势力,在中国新能源领域完成了基本布局或试水。2019-2020年随着双积分等政策的持续加码,各方力量将开启大规模的“冲量”模式,也将正式开启中国新能源车市的充分竞争模式,具备更多竞争…

中国新能源物流车市场运营状况分析与投资战略规划报告2022年版

中国新能源物流车市场运营状况分析与投资战略规划报告2022年版 ═━┈┈━══━┈┈━══━┈┈━══━ 【报告编号】: 415328 【出版时间】: 2022年3月 【出版机构】: 中商经济研究网 ​ 章 新能源物流车相关概述 节 物流车的概念及分类 一、 物流车的定…

为什么要支持新能源汽车?

汽车产业发展: 中国汽车行业现在已经取得了长足的进步,产销量已连续多年位居世界第一,中国品牌汽车也是占据了最大的市场份额。但是很可惜,主要的核心技术,并不在中国厂商手上。 发动机,大家都喜欢德国、…