Android平台下传感器应用的开发--基础知识

Android平台下的传感器包括加速度传感器(Accelerometer)、姿态传感器(Orientation)、磁场传感器(Magnetic Field)和光传感器(Light)。

Android 平台下传感器应用的开发通过监听器机制来实现,要针对某一种或多种传感器开发应用,主要的步骤如下:

1. 创建SensorManager对象

2. 实现SensorListener接口

       这是开发传感器应用最主要的工作,实现SensorListener接口主要需要实现一下两个方法。

  •         void onAccuracyChanged(int sensor, int accuracy):该方法在传感器的精确度发生变化时调用,SensorManager提供了3种精确度,由高到低分别为:SENSOR_STATUS_ACCURACY_HIGH、SENSOR_STATUS_ACCURACY_MEDIUM和SENSOR_STATUS_ACCURACY_LOW。参数accuracy为新的精确度。
  •         void onSensorChanged(int sensor, float[] values):该方法在传感器的数据发生变化时调用,开发传感器应用的主要的业务代码应该放在这里执行,如读取数据并根据数据的变化进行相应的操作等。方法传入的参数sensor为代表传感器类型的常量,values为float类型数组,其长度和内容因传感器类型的不同而变化。

3. 注册SensorListener

  •         开发玩SensorListener之后,剩下的工作就是在程序的适当位置注册监听和取消监听了。在这里调用步骤1中获得的SensorManager对象的registerListener方法来注册监听器,其接收的参数为监听器对象、传感器类型以及传感器事件传递的频度。
  •         取消注册SensorListener时调用SensorManager的unregisterListener方法,一般来讲注册和取消注册的方法应该成对出现,如果在Activity的onResume方法中注册SensorListener监听就应在onPause方法中取消注册。

常用传感器简介

1>. 加速度传感器Accelerometer

加速度传感器主要感应手机的运动,在注册了传感器监听器后加速度传感器主要捕获3个参数values[0]、values[1]、values[2]。

values[0]:空间坐标系中x轴方向上的加速度减去重力加速度减去中立加速度在x轴上的分量。

values[1]:空间坐标系中x轴方向上的加速度减去重力加速度减去中立加速度在y轴上的分量。

values[2]:空间坐标系中x轴方向上的加速度减去重力加速度减去中立加速度在z轴上的分量。

上述3个数据的单位均为米每二次方秒。

距离说明:

1.当手机平放到桌面静止时,加速度为重力加速度g,通过0减去-g(重力加速度g方向为z轴反方向,故为负值)得到values[2]为g。

2.如果把手机水平方向右推,此时手机x方向上的加速度为正,即values[0]为正。

3.当把手机以a米每二次方秒的加速度竖值向上举时,values[2]的返回值为(a+g)米每二次方秒,通过a减去-g得到。

2>.姿态传感器Orientation

姿态传感器主要感应手机方位的变化,其每次读取的都是静态的状态值,在注册了传感器监听器后姿态传感器主要捕获3个参数values[0]、values[1]、values[2],分别代表手机沿Yaw轴、Pitch轴和Roll轴转过的角度。

1.Yaw轴是3个方向轴中唯一不变的轴,其方向总是竖直向上,和空间坐标系中的z轴是等同的,也就是中立加速度g的反方向。

2.Pitch轴方向依赖于手机沿Yaw轴的转动情况,即当手机沿Yaw转过一定角度后,Pitch轴也相应围绕Yaw轴转过相同的角度。Pitch轴的位置依赖于手机沿Yaw轴转过的角度,好比Yaw轴和Pitch轴是两个焊死在一起成90度夹角的铁棍。

3.Roll轴的方向虽然依赖于手机沿Yaw轴和Pitch轴转动的情况,但是Roll轴的确定并不复杂,Roll轴与手机之间的相对关系是固定的。其总是沿着手机屏幕长边正方向。

注:

1.Yaw轴永远是竖直向上的方向,因为额在驾驶飞机的时候无论飞机如何旋转/翻滚/飞行员都必须确定向上的举对方向。

2.Pitch轴会随着Yaw轴旋转,实际上Pitch轴方向可以通过推算飞机的朝向,绕Pitch轴旋转表示飞机上拉(抬头起机)或下推(机头向下)

3.Roll轴表示贯穿机身的轴,与飞机是相对静止的,飞机绕Roll轴旋转左倾或右倾。

3>.其他传感器

1. 磁场传感器Magnetic Field

磁场传感器主要用于感应周围的磁感应强度,注册监听器后其主要捕获3个参数:values[0]、values[1]、values[2]。3个参数分别代表磁感应强度在空间坐标系中3个方向轴上的分量,所有数据的单位为uT,即微特拉斯。

2. 光传感器Light

光传感器用于感应周围的光强,注册监听器后只捕获一个参数:values[0]。该参数代表周围的光照强度,单位为勒克斯(lux)。

3. 距离传感器 Proximity

距离传感器用于感应周围靠近的物体,在注注册监听器后只捕获一个参数:values[0]。该参数代表传感器的物体距离,以厘米为单位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值