您好,欢迎访问三七文档
传感器入门1.传感器分类2.如何使用传感器3.获取手机中所有传感器4.传感器事件概念5.为应用注册传感器6.获取传感器的值和精度什么是传感器能感受某种类型的变化并按照约定的规律转换成可用输出信号的装置,叫做传感器。目前上市的Android手机,基本上都安装了至少3个传感器,分别是陀螺仪,方位传感器和加速度传感器。Android的API支持多种传感器(可选支持,大部分手机只支持其中一部分)Android对于传感器的操作,是利用android.hardware包中的部分类和接口来实现的。下一节我们将对其逐一进行讲解。3传感器的种类1.动作传感器加速度传感器,重力传感器和陀螺仪等2.位置传感器方向传感器和磁力传感器3.环境传感器温度,压力,亮度Sensor类定义了以下几种类型的传感器(需要硬件支持)种类说明TYPE_ACCELEROMETER加速度传感器TYPE_GYROSCOPE陀螺仪传感器TYPE_LIGHT光传感器TYPE_MAGNETIC_FIELD磁场传感器TYPE_ORIENTATION方位传感器TYPE_PRESSURE压力传感器TYPE_PROXIMITY距离传感器TYPE_TEMPERATURE温度传感器TYPE_ALL全部的传感器5获取传感器的信息方法说明getMaximumRange()传感器的最大值(按传感器的单位计算)getName()传感器的名字getPower()传感器使用时的电流强度(毫安)getType()传感器的类型getVentor()传感器供应商的信息getVersion()传感器的版本号6SensorManager类摘要Android中只能通过SensorManager类来访问传感器设备只能使用下面的方法获得SensorManager的实例SensorManager中定义了一组采样率的常量,使用时请酌情选择,以免应用太耗电(SensorManager)Context.getSystemService(Context.SENSOR_SERVICE);种类说明SENSOR_DELAY_FASTEST以最快的速度获得传感器的相关数据SENSOR_DELAY_GAME此速率适合游戏中使用SENSOR_DELAY_UI此速率适合用户界面中使用SENSOR_DELAY_NORMAL此速率适合在屏幕横竖变换中使用7SensorManager类的关键方法:方法说明getDefaultSensor(inttype)根据type编号获得相应的SensorregisterListener(SensorEventListenerlistener,Sensorsensor,intrate)将一个监听器注册到传感器设备(rate代表之前提到的采样率)unregisterListener(SensorEventListenerlistener)注销已经注册的监听器getSensorList(inttype)获得可用的Sensor的列表8SensorEventListener接口摘要SensorEventListener是用于监听传感器的通用接口。该接口有两个方法:onAccuracyChanged(Sensorsensor,intaccuracy)当传感器的精度(采样率)发生变化时被调用。onSensorChanged(SensorEventevent)当传感器的值发生变化时被调用。使用传感器时,需要先实现SensorEventListener接口,然后使用SensorManager的registerListener方法注册该接口,这样,当对应的传感器精度变化或者值变化的时候,都会调用该接口对应的方法。9SensorEvent类摘要SensorEvent代表传感器事件,它持有传感器所传递的关键信息传感器会向已注册的SensorEventListener发送SensorEvent对象。SensorEvent中包含了传感器发送的关键信息values。不同的传感器所发送的SensorEvent对象,其values的含义不同。需要根据传感器的定义,自行处理。下面是SensorEvent类的成员:publicintaccuracy传感器的精度(采样率)publicSensorsensor发送此SensorEvent的传感器的引用publiclongtimestamp传感器发生此事件的时间戳publicfinalfloat[]values传感器的值(关键所在)10SensorEvent.values详解values,传感器的值,是浮点型数组根据传感器的不同,values的长度和含义都不相同。Sensor.TYPE_ORIENTATION方位传感器,它的values有三个值:values[0],方位角,手机绕z轴旋转0=北90=东180=南270=西values[1],倾斜角,手机绕x轴旋转如图屏幕朝上时的值是0,旋转到屏幕朝下时的值是180values[2],旋转角,手机绕y轴旋转取值范围是-90≤values[2]≤90,如图屏幕朝上时的值是0手机左边沿竖直向上时的值是-90,游边沿竖直向上时的值是9011Sensor.TYPE_ACCELEROMETER加速度传感器,它的values有三个值(单位是m/s^2):values[0],表示设备的加速度值减去重力加速度在x轴上的分量values[1],表示设备的加速度值减去重力加速度在y轴上的分量values[2],表示设备的加速度值减去重力加速度在z轴上的分量例如:当设备平放在桌面上时,将设备从左向右推,x轴方向的值是正值。当设备平放在桌面时,它的加速度为+9.81,也就是设备的加速度(0m/s^2)减去重力加速度(-9.81m/s^2)。当设备平放在桌面上时,然后以Am/s^2的加速度抛向空中时,它的加速度为A+9.81,也就是设备的加速度(+Am/s^2)减去重力加速度(-9.81m/s^2)。12Sensor.TYPE_MAGNETIC_FIELD磁场传感器,它的values有三个值(单位是micro-Tesla,缩写是uT):values[0],表示设备在x轴上的磁场分量values[1],表示设备在y轴上的磁场分量values[2],表示设备在z轴上的磁场分量Sensor.TYPE_LIGHT光传感器,它的values只有一个值(单位是Lux,照明度):values[0],表示设备周围的照明度Sensor.TYPE_PROXIMITY距离传感器,它的values只有一个值(单位是cm,厘米):values[0],表示设备与周围物体之间的距离13使用传感器1.获取SensorManager2.执行SensorManager对象的getDefaultSensor()方法获取对象3.获取Sensor对象的各种属性传感器事件注册传感器publicbooleanregisterListener(SensorEventListenerlistener,Sensorsensor,intrate)传感器采样率SENSOR_DELAY_NORMAL200000微秒SENSOR_DELAY_UI60000微秒SENSOR_DELAY_GAME20000微秒SENSOR_DELAY_FASTEST0微秒
本文标题:传感器入门
链接地址:https://www.777doc.com/doc-7706716 .html