Android sensor 传感器简介

这篇具有很好参考价值的文章主要介绍了Android sensor 传感器简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、定义

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);
int getFifoMaxEventCount():获取该传感器能分批处理的事件的最大数量。
    如果这个值是零,表明批处理模式不支持此传感器。如果其他应用程序登记到成批的传感器,可以进行批处理事件的实际数目可能是较小的,因为硬件FIFO将被部分用于批处理的另一传感器。

int getFifoReservedEventCount():保留此传感器中的分批方式的FIFO的事件数。给出了对可批处理事件的最小数量的保证。

int getMaxDelay():传感器最大延迟(微秒)。
    此值仅用于连续和按变化的传感器所定义。它是对应于该传感器支持的最低频率两个传感事件之间的延迟。当较低的频率通过registerListener请求()事件将在该频率产生代替。它可以用于估计当批量FIFO可以充分。旧设备可以将该值设置为零。忽略此值的情况下为负数或零。

int getMinDelay():传感器最小延迟(微秒)。

int getType():获取该传感器的类型。

int getVersion():传感器模块的版本。

int getReportingMode():报告模式为输入传感器,REPORTING_MODE_* 常量:
    REPORTING_MODE_CONTINUOUS
    REPORTING_MODE_ON_CHANGE
    REPORTING_MODE_ONE_SHOT
    REPORTING_MODE_SPECIAL_TRIGGER

float getMaximumRange():获取传感器最大值。

float getPower():获取传感器耗电量。

float getResolution():获取在传感器单元中的传感器的分辨率。

String getStringType():该传感器作为字符串的类型。

String getVendor():获取传感器的供应商。

String getName():获取传感器名称。

boolean isWakeUpSensor():当传感器是唤醒状态,返回true。
  • SensorEvent:表示传感器事件,它可以保存传感器的值,传感器类型、时间戳等信息;
  • SensorEventListener:提供回调以通知应用传感器相关事件的接口。为了能够接收这些事件,应用需要创建一个类实现 SensorEventListener 接口,并将其注册到 SensorManager;
onSensorChanged(SensorEvent):当传感器值发生改变时调用。


SensorEvent:
values数组:即传感器值,该值根据传感器类型不同返回不同的数值;
sensor:产生事件的传感器;
accuracy:这个事件的准确性;
timestamp:时间发生周期的纳秒值(时间戳)。


onAccuracyChanged(Sensor, int):当传感器的精度发生变化时调用。用以下四个状态常量之一来代表:
SENSOR_STATUS_ACCURACY_LOW:传感器报告低精度值;
SENSOR_STATUS_ACCURACY_MEDIUM:传感器报告平均精度值;
SENSOR_STATUS_ACCURACY_HIGH:传感器报告高精度值;
SENSOR_STATUS_UNRELIABLE:传感器报告的精度值不可靠。
  • SensorManager:SensorManager 让你可以访问设备(手机)的全部传感器。和其他的系统服务一样,它允许应用注册或注销传感器相关事件。一旦注册成功,应用将接收到从传感器传来的数据。除了允许应用注册以获取传感器数据以外,SensorManager 还提供处理传感器数据的方法;
List<Sensor>  getSensorList(Sensor.type) 获取传感器(多个)。

Sensor getDefaultSensor(Sensor.type):获取默认传感器。

float  getAltitude(float p0, float p1):计算海拔米的海平面大气压力和压力。

float  getInclination(float[] I):计算从返回getRotationMatrix(float[], float[], float[], float[])倾斜弧度矩阵地磁倾角。

float[]  getOrientation(float[] R, float[] values):计算基于旋转矩阵设备的方向。

void  getQuaternionFromVector(float[] Q, float[] rv):辅助功能旋转向量转换为四元数归。给定一个旋转矢量(大概从ROTATION_VECTOR传感器)时,返回一个归四元阵列Q的四元数的形式存储在[W,X,Y,Z]。

void  getRotationMatrixFromVector(float[] R, float[] rotationVector):辅助函数,来旋转矢量转换为旋转矩阵。

void  getAngleChange(float[] angleChange, float[] R, float[] prevR):计算两个旋转矩阵之间的角度变化。

boolean  cancelTriggerSensor(TriggerEventListener listener, Sensor sensor):取消接收的触发事件为触发传感器。

boolean  flush(SensorEventListener listener):刷新所有传感器的FIFO注册侦听器。

boolean  getRotationMatrix(float[] R, float[] I, float[] gravity, float[] geomagnetic):可以计算出旋转矩阵。

boolean  remapCoordinateSystem(float[] inR, int X, int Y, float[] outR):旋转供给旋转矩阵,以便它表示不同的坐标系中。

boolean  requestTriggerSensor(TriggerEventListener listener, Sensor sensor):请接受触发事件的触发传感器。
  • 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 设备支持的传感器类型有很多,但是有些手机设备支持的类型也很少,如下:文章来源地址https://www.toymoban.com/news/detail-531738.html

  • 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替代。

到了这里,关于Android sensor 传感器简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动驾驶定位算法:基于多传感器融合的状态估计(muti-Sensors Fusion)

    1、传感器(Sensor)选取 自动驾驶系统中用于状态估计(State Estimation)的常用传感器包括GPS/GNSS、IMU、激光雷达(Lidar)。 状态估计(State Estimation)选用传感器需要考虑哪些因素: 1)误差不相关性。也就是说,用于Sensor Fusion的传感器其中单个传感器(Sensor Measurement)测量失败,不会导

    2024年04月13日
    浏览(43)
  • 使用传感器融合的前方碰撞预警-(Forward Collision Warning Using Sensor Fusion)

    这个例子matlab自动驾驶工具箱中关于使用传感器融合的前方碰撞预警-(Forward Collision Warning Using Sensor Fusion)例子,其展示了如何通过融合视觉和雷达传感器的数据来跟踪车辆前方的物体,从而实现前向碰撞预警系统的开发与验证。 前方碰撞预警(FCW)是驾驶辅助系统和自动驾驶系

    2024年02月06日
    浏览(37)
  • 【雕爷学编程】Arduino动手做(174)---Sensor Shield V5.0传感器扩展板

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)

    2024年02月15日
    浏览(45)
  • 论文阅读综述:自动驾驶感知的多模态传感器融合Multi-modal Sensor Fusion for Auto Driving Perception: A Survey

    题目 :Multi-modal Sensor Fusion for Auto Driving Perception: A Survey 用于自动驾驶感知的多模态传感器融合:综述 链接 :https://arxiv.org/abs/2202.02703 只翻译了个人认为比较重要的东西,有些官方话就省了。这篇文章通俗易懂,不过综述都是标记文献[xx]干了啥,其实咱也不知道他具体是咋

    2023年04月08日
    浏览(49)
  • 01-无线传感器网络(WSN)简介

    01-1定义 无线传感器网络(WSN)集成了传感器技术、嵌入式技术、计算机网络和无线通信技术等,在各个领域的应用不断扩展,被认为是21世纪最有影响力的技术之一。无线传感器网络是由大量静止或移动的传感器以自组织和多跳的方式构成的无线网络,目的是协作地探测、处

    2024年02月06日
    浏览(47)
  • 传感器:探索Android中的传感器功能与使用

    利用 Android 传感器框架,您可以访问多种类型的传感器。有些传感器基于硬件,有些基于软件。基于硬件的传感器是内置在手机或平板设备中的物理组件。这类传感器通过直接测量特定的环境属性(如加速度、地磁场强度或角度变化)来采集数据。基于软件的传感器不是物理

    2024年02月03日
    浏览(66)
  • 【Android开发基础】手机传感器信息的获取

    描述:关于传感器的使用,我在同栏目下发了一篇关于传感器(方向传感器、加速度传感器)的使用,这篇博客主要以获取不同手机所支持的传感器信息为主,具体如何使用这些传感器,需要自己进行查阅和学习,也可以私聊我。 博客:传感器(方向传感器、加速度传感器)

    2024年02月10日
    浏览(97)
  • IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解

    人们为了从外界获取信息,必须借助于感觉器官。而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了。为适应这种情况,就需要传感器。因此可以说,传感器是人类五官的延长,又称之为电五官。 在现代工业生产尤其是自动化生产过

    2023年04月09日
    浏览(45)
  • 13.Android学习之传感器与定位服务(一)

    目录 1.Android传感器概述(一) 1-1.Android 的常用传感器 1-2.开发步骤 传感器是一种微型的物理设备, 能够探测、感受到外界信号, 并按一定规律转换成我们需要的信息。在Android系统中,提供了用于接收这些信息并传递给我们的API。利用这些API就可以开发出想要的功能。 And

    2023年04月16日
    浏览(32)
  • 【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)

    需要源码请点赞关注收藏后评论区留言~~~ 传感器Sensor是一系列感应器的总称,是Android设备用来感知周围环境和运动信息的工具。 因为具体的感应信息依赖于相关硬件,所以虽然Android定义了众多感应器,但是并非每部手机都能支持这么多感应器。 传感器一般借助于硬件监听

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包