14.11 传感器详解

简介

在Android平台中,传感器框架通常是使用一个标准的三维坐标系来表示一个值。

14.11 传感器详解_第1张图片
三维坐标

X轴的方向:沿着屏幕水平方向从左到右,如果手机如果不是是正方形的话,较短的边需要水平 放置,较长的边需要垂直放置。

Y轴的方向:从屏幕的左下角开始沿着屏幕的的垂直方向指向屏幕的顶端

Z轴的方向:当水平放置时,指向天空的方向


方向传感器(Orientation sensor)

注:方向传感器其实就是利用加速度传感器和磁场传感器来获取方位的。

传感器的回调方法:onSensorChanged中的参数SensorEvent event,event的 值类型是Float[]的,而且最多只有三个元素,

                                而方向传感器则刚好有三个元素,都表示度数。

values[0]:方位角,手机绕着Z轴旋转的角度。(指南针)

                  当手机水平放置时,0表示正北(North),90表示正东(East), 180表示正南(South),270表示正西(West)。

values[1]:倾斜角,手机绕着x轴倾斜时的角度。取值范围是[-180,180]之间。

                  手机水平放置桌面,屏幕朝上,此时value[1] = 0。

value[2]:滚动角,沿着Y轴的滚动角度,取值范围为:[-90,90]之间。

                手机水平放置桌面,屏幕朝上,此时value[2] = 0。


加速传感器(Accelerometer sensor)

加速度传感器的单位:加速度(m/s^2)

方向传感器获取到的加速度是:手机运动的加速度与重力加速度(9.81m/s^2)的合加速度

可以实现:计步器

实现计步器几步一般有2种方法:

1.利用加速传感器,通过计算二次波峰来确定每一步,这种方法误差比较大,但普适性好;

2.利用Android4.4之后的Sensor.TYPE_STEP_DETECTOR来计步;


陀螺仪传感器(Gyroscope sensor)

也称角速度传感器,一般用来检测手机姿态的,好像手机中的陀螺仪传感器一般都是三轴的! 体感游戏用得最多,手机拍照防抖,GPS惯性导航,还有为APP添加一些动作感应(比如轻轻晃动手机 关闭来电铃声)等等。

陀螺仪传感器的单位:角速度(弧度/秒)radians/second

14.11 传感器详解_第2张图片
计算角度

磁场传感器(Magnetic field sensor)

作用:该传感器主要用于读取手机附近的磁场变化

传感器的值采集到的值:有三个,分别是:X,Y,Z轴上方向上的磁场值

数值单位:T,微特斯拉

传感器获取:Sensor.TYPE_MAGNETIC_FIELD


距离传感器(Proximity sensor)

作用:用于感应手机与人体的距离。比如手机通话时候,脸部贴近屏幕时会熄灭, 离开屏幕一段距离又会亮起,避免脸部误碰挂断按钮。

传感器的值采集到的值:有一个,物体与设备间的距离

数值单位:cm,厘米

传感器获取:Sensor.TYPE_PROXIMITY

关于距离传感器可能有两种:

1.能直接给出距离的

2.给出靠近或者远离,返回两个值0.0或者最大值

通过对比解析度sensor.getResolution()和最大值getMaximumRange()是否相等进行判断


光线传感器(Light sensor)

作用:用来读取光度值,即光线强度

传感器的值采集到的值:有一个,光亮度值

数值单位:lux,1流明每平方米面积,就是1勒克斯(lux),最大值是:120000.0f

                  Android 中把光线强度分了不同的等级,可以自行查看SensorManager类~

传感器获取:Sensor.TYPE_LIGHT


气压传感器(Pressure sensor)

作用:用于测量大气压力,常用于测量海拔高度

传感器的值采集到的值:有一个,大气压值

数值单位:hPa,百帕

传感器获取:Sensor.TYPE_PRESSURE


温度传感器(Temperature sensor)

作用:测量手机内部的温度或者外部环境的问题

传感器的值采集到的值:有一个,温度值

数值单位:℃,摄氏度

传感器获取:Sensor.TYPE_TEMPERATURE(手机内部)/TYPE_AMBIENT_TEMPERATURE(手机外部)


你可能感兴趣的:(14.11 传感器详解)