浅谈Android传感器的应用

浅谈Android传感器的应用

最近再做一个基于手机传感器的的一个小应用,总结一下,加强学习,希望能帮到大家。


在应用程序中使用传感器

在Android应用程序中使用传感器要使用android.hardware.SensorEventListener接口。通过该接口可以监听传感器的各种事件。接口代码如下

public interface SensorEventListener{
    public void onSensorChanged(SensorEvent event);
    public void onAccuracyChange(SensorEvent event,int accuracy);
}

其中onSensorChange()会在传感器的值发生变化时被调用,onAccuracyChange()会在传感器的精度发生变化时被调用。

接下来解释一下SensorEvent这个类。这个类中有一个values变量,类型为float[],保存的值和数目会依据所选用传感器的不同而不同(怎么选择和应用不同的传感器后面会讲到)。

例如,加速度传感器中values有3个值。分别为X、Y、Z轴(不知道手机坐标系的见后面的补充)的加速度值,沿坐标轴方向为正。

再例如,方向传感器中values也有3个值。
values[0]表示方位,也就是手机绕着Z轴旋转的角度,0表示北,90表示东,180表示南,270表示西。
values[1]表示手机绕着X轴旋转的角度,范围-180~180,水平时是0,抬起手机顶部,该值变小,直到反面朝下,为-180,抬起手机底部则反之。
values[2]表示手机绕着Y轴旋转的角度,范围-90~90,水平时为0,抬起左边,该值变小,直到手机垂直与水平面为-90,抬起手机右边则反之。

其他还有好多,详见http://developer.android.com/guide/topics/sensors/sensors_motion.html

补充:手机的坐标系
首先把手机放在水平面上(当然是正着放手机了,你要是反着放我也没办法)。
X轴的方向是沿着屏幕水平方向从左至右,一般是平行于手机屏幕短边。
Y轴的方向是沿着屏幕水平方向从下到上,一般是平行于手机屏幕长边。
Z轴方向就是手机屏幕指向天空的方向。

然后就是accurancy这个玩意儿了,速率这个东西是靠传感器的管理者来操作的,所以它的取值都是SensorManager中的一些常量,以下列几个常见的取值:
SensorManager.SENSOR_DELAY_NORMAL:默认速度。
SensorManager.SENSOR_DELAY_GAME:开发和传感器相关的游戏时,一般用该值。
SensorManager.SENSOR_DELAY_UI:要利用传感器更新UI中的数据,一般用该值。
SensorManager.SENSOR_DELAY_FASTEST:尽可能快!

介绍完SensorEventListener这个接口,我们来获取一下传感器,以加速度传感器为例。
首先,我们要从系统服务中获得让我们可以对传感器进行管理的传感器管理器SensorManager。

SensorManager sm=(SensorManager)getSystemService(SENSOR_SERVICE);//关键就是这个字段

我们可以管理传感器了,再就是得到我们想要的传感器。

Sensor sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//可以通过这个字段获得不同的传感器

然后我们就得管理这个传感器了,得让它和我们的管理器联系上,这时候就得注册了

sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);
//参数分别为实现了SensorEventListener接口的监听器、传感器、传感器速率

好了,接下来的简单操作只要重写SensorEventListener接口中的方法就行了。

如有错误,望众位指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值