Android游戏开发教程之十二:浅谈Sensor重力感应
2012-07-07 20:55
274 查看
现在众多智能手机都加入了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系统提供的感应器主要包含在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游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- Android游戏开发教程之三:View类用法详解
- 【Android LibGDX游戏引擎开发教程】第03期:示例代码详细讲解
- Android游戏开发教程之四:Canvas与Paint的应用实例
- Android游戏开发是视频教程
- Android游戏开发教程之一:长按事件的原理
- 【Android LibGDX游戏引擎开发教程】第08期:中文字体的显示和绘制(下)
- (转)【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- android游戏开发框架libgdx的使用-安卓巴士教程地址汇总
- Android游戏引擎libgdx使用教程16:使用TexturePacker工具加快开发速度
- 【Visual C++】游戏开发笔记四十四 浅墨DirectX教程十二 网格模型和X文件使用面面观
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- Android游戏开发教程之十四:按键中断事件的处理
- Android开发视频教程之十二(RadioGroup、RadioButton、CheckBox和Toast的使用)
- Android游戏开发教程汇总
- 【Android LibGDX游戏引擎开发教程】第04期:各个模块的详细介绍
- 【COCOS2DX-ANDROID-游戏开发之十二】Android平台第三方应用分享到微信开发
- android游戏开发视频教程下载
- 【Visual C++】游戏开发笔记四十四 浅墨DirectX教程十二 网格模型和X文件使用面面观
- (一)安卓android游戏开发之2048游戏开发教程----创建项目