从这一期开始我们介绍一下Android中的Sensor传感器,首先我们来看一下这一期的内容
传感器是我们Android手机中的一种标准设备,在手机、iPad中都有一套sensor的处理机制。在电视上虽然没有内置的sensor,但是如果我们接一些游戏手柄,我们使用手柄来控制游戏的时候,他走的也是Android标准的sensor处理机制。第二个我们会介绍一下手机sensor的主要类型,以及他在手机中期的作用。第三我们来看一下sensor的系统架构,包括我们的应用层、framework层、Hal层、driver、Hardware,他们是如何串行起来供我们整个系统的应用来调用这些sensor。传感器的种类也有好多种,下面我们来看一下Android sensor主要支持的类型
Android sensor支持的类型包括:加速度传感器、磁感应传感器、方向传感器、陀螺仪、光线传感器、压力传感器、温度传感器、距离传感器、重力传感器、线性加速度传感器、翻转传感器、相对湿度传感器等等,有些并不是安卓手机上配备的,有些可能是在手环上配备的,或者其他的一些智能设备上所带的传感器。而我们手机上常用的传感器有:加速度传感器、磁感应传感器、陀螺仪、光线传感器、距离传感器,重力传感器、线性加速度传感器、翻转传感器等,这些就足够我们Android系统来使用了,对于上层的应用支撑也足够了。这些传感器的选型以及他的配置,都是由我们硬件厂商来决定的,比如三星手机、华为等,他们是否支持这些传感器,都是根据他们对产品的定义来决定的,在他们做硬件设备以及做产品定义的时候,就会规定好。但是这些产品的选型就会根据厂商所提供的型号、价格、以及精度来决定是否使用某一个传感器。
下面我们来看一下主要的传感器:Android加速度传感器
加速度传感器的作用就是,当手机在移动过程中,可以获取三个轴的加速度,这三个轴分别是X、Y、Z轴。它的基本原理是:在我们手机移动过程中,会使我们传感器内部的一些器件产生变形,然后输出三个与之相对应的电压信号。这个输出信号是和他移动过程中产生的加速度成一定比例的,当我们的硬件截获到这一信号后,就会经过Android系统的一系列处理,然后拿到我们三个轴上的加速度的值,这时候我们的应用就可以根据这些数据来做自己的处理。应用场景就是我们微信上的摇一摇,或者游戏的控制等。我们可以从示意图中看到水平方向是X轴和Y轴,竖直方向是Z轴,如果我们手机平放,那么我们可以看到在Z轴上会有一个9.8的加速度,这个加速度就是我们的地心引力,在Android代码中会用不同的星球的加速度的值。
下面我们来看第二个传感器:磁感应传感器
磁传感器的作用主要是:获取磁场变化的一个值,并且根据这个值输出xyz三个方向的数据,然后就可以根据这个数据来判断我们当前所指向的一个方向。主要应用在指南针、定位我们设备的一个方位。比如在室内没有GPS的话我们就可以使用磁感应传感器来定位,这个定位就没有那么严格了,因为磁场本来就有一定的偏差
第三个传感器是我们的陀螺仪传感器
陀螺仪的原理是:角动量守恒,中间会有一个陀螺,周围有三个轴的定位组件,当我们手机自己旋转,或者上翻下翻的过程中,这三个组件和陀螺会有一个偏差,根据这个偏差陀螺仪会计算出三个加速度,然后给我们三个信号,返回值就是XYZ三个轴的角速度的数据,根据这个数据就可以知道我们手机当前的位置,应用就是我们的游戏,在游戏体验上要比我们使用加速度传感器要好很多。
下面我们来看一下这三个传感器的区别:
1.加速度传感器:它主要是用来测试设备的一个重力情况,也就是我们设备在移动过程中,每一个轴上的加速度情况,这个加速度是参照外部参照物的。
2.磁感应传感器是用来定位我们设备的方位,可以测量出当前设备和东南西北四个方向上的夹角,这样的话我们就可以知道当前的一个位置。
3.陀螺仪是用来测量设备自身的旋转运动,这个测量对我们设备自身的运动比较擅长,但是并不能确定我们设备的一个方位。比如我们的设备是否在左右移动,这个他就没办法判断了,但是我们的设备有没有翻转可以使用陀螺仪测量出来。
在很多时候我们都会使用加速度传感器,磁感应传感器,陀螺仪来共同完成一些事情,这样的话才能更好地利用我们的传感器,这些应用就是在我们的应用层实现的,我们的底层全是为我们的上层应用来服务的。
下面我们再来看一下其他的传感器:
1.光感应传感器:主要是在我们开启自动调节屏幕亮度时,用来调整屏幕的亮度
2.距离传感器:主要是在我们打电话时,手机贴近耳朵黑屏的操作,这样是为了再打电话时不会误操作,把电话挂掉,这个也是手机必备的一个
3.压力传感器:主要是计算我们手机离地面的距离,检测的精度不是很准确。
这些就是我们Android上应用的主要传感器