现在众多智能手机都加入了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:用户界面延迟,一般对于屏幕方向自动旋转使用,相对节省电能和逻辑处理,一般游戏开发中我们不使用。

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/game/103.html
2012年7月7日
发布:鸡啄米 分类:Android游戏开发 浏览: 评论:3