Android游戏开发之十二:浅谈Sensor重力感应

移动开发 Android 游戏开发
现在众多智能手机都加入了Sensor感应器硬件,一般比较常见的有重力感应器、加速度感应器和光线感应器,还有些手机加入了更高级的陀螺仪、温度感应器、距离感应器、磁极方向等。在Android游戏开发中,主要用的有四种:重力、加速度、磁力和陀螺仪,一些游戏可能还会用到GPS或Cellid定位来修正一些位移信息。

Android系统提供的感应器主要包含在android.hardware中,可以看到有 android.hardware.SensorEventListener、Sensor和SensorManager这三个类,而我们发现它们能做的 除了能够获取感应器的信息和一些原始数据外,并没有提供相关的逻辑处理。本教程后面将详细介绍不同感应器的作用和逻辑处理,例如晃动、磁极、旋转速度或自 由落体。

很多Android手机可能没有配备轨迹球或导航键的方向控制,所以重力感应器是这类实时性较强游戏的首选控制方式。对于Sensor感应器主要有以下几点问题:

1. 降噪处理。

如果做过LBS软件的大家可能明白偏移修正,在GPS无法正常获取数据较间断时地图不能乱飘,这里Sensor也不例外,除了使用采样数据平均值获取外,可以间隔采样的方法来处理。细节的算法我们将在下节给出示例代码。

2. Sensor感应器的敏感度。

在Android中提供了四种延迟级别分别为:

SENSOR_DELAY_FASTEST:最低延迟,一般不是特别敏感的处理不推荐使用,该种模式可能造成手机电力大量消耗,由于传递的为原始数据,算法不处理好将会影响游戏逻辑和UI的性能,所以Android开发网不推荐大家使用。

SENSOR_DELAY_GAME:游戏延迟,一般绝大多数的实时性较高的游戏都使用该级别 

int SENSOR_DELAY_NORMAL:标准延迟,对于一般的益智类或EASY级别的游戏可以使用,但过低的采样率可能对一些赛车类游戏有跳帧现象。

int SENSOR_DELAY_UI:用户界面延迟,一般对于屏幕方向自动旋转使用,相对节省电能和逻辑处理,一般游戏开发中我们不使用。

责任编辑:闫佳明 来源: jizhuomi
相关推荐

2013-05-21 11:26:49

Android游戏开发Sensor感应

2012-05-28 15:55:47

XNA 重力感应

2010-01-27 17:17:42

Android重力感应

2012-12-24 09:01:41

iOSUnity3D

2011-09-14 09:30:27

2016-05-18 09:52:20

2013-05-21 13:55:51

Android游戏开发图像渐变特效

2013-05-20 17:48:20

2013-05-21 10:42:48

Android游戏开发Bitmap位图旋转

2013-05-21 09:56:15

2013-05-21 11:20:37

Android游戏开发View手势识别

2013-05-21 13:33:02

Android游戏开发异步音乐播放

2013-05-21 14:15:23

Android游戏开发屏幕分辨率

2013-05-21 14:10:11

Android游戏开发SoundPool类同时多音效

2013-05-20 17:33:44

Android游戏开发自定义View

2013-05-21 14:22:29

Android游戏开发捕获屏幕双击事件

2013-05-20 17:51:47

Android游戏开发SurfaceView

2013-05-21 15:28:31

2013-05-21 16:17:13

2013-05-20 17:21:34

点赞
收藏

51CTO技术栈公众号