简介
在Android平台中,传感器框架通常是使用一个标准的三维坐标系来表示一个值。
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
磁场传感器(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(手机外部)