重力球——重力感应器应用
首届 Google 暑期大学生博客分享大赛——2010 Andriod 篇
之前在网上看到一个HTC的Windows Mobile手机中的一个应用重力感应器的程序“蛋疼的小球”,地址: http://v.youku.com/v_show/id_XMTkxOTc0MDg0.html 由于最近本人正在学习Android系统开发,有点跃跃欲试的感觉,想自己也做一个。于是开始做准备工作,找素材就略过不提了。
下面开始第一步,Android中传感器的使用。
Android中有很多API可以直接调用手机中的传感器,通过这些传感器可以得到手机在真实的环境中的速度,空间位置,指向方向,光线感应,磁场,压力计以及温度等信息,获取这些信息之后,就可以做出来一些很炫很好玩的功能。
1. 首先要得到一个手机上的传感器,代码比较简单。通过这行代码我们得到一个硬件设备的控制器。
2. 通过上一步得到的硬件控制器,我们要得到想要的传感器,比如重力传感器。需要注意的是有些手机上可能不支持我们需要的传感器,那么mSensor就为null,所以为了安全起见,应该判断是否为null。
关于其中的参数,还有很多其他的类型。在官方文档中对于各个类型的说明:
int |
TYPE_ACCELEROMETER |
A constant describing an accelerometer sensor type. |
int |
TYPE_ALL |
A constant describing all sensor types. |
int |
TYPE_GYROSCOPE |
A constant describing a gyroscope sensor type |
int |
TYPE_LIGHT |
A constant describing an light sensor type. |
int |
TYPE_MAGNETIC_FIELD |
A constant describing a magnetic field sensor type. |
int |
TYPE_ORIENTATION |
A constant describing an orientation sensor type. |
int |
TYPE_PRESSURE |
A constant describing a pressure sensor type. |
int |
TYPE_PROXIMITY |
A constant describing an proximity sensor type. |
int |
TYPE_TEMPERATURE |
A constant describing a temperature sensor type. |
由于本次只需要重力感应器,即“加速度”TYPE_ACCELEROMETER,其他的感应器本次不使用,以后会陆续试用。
以屏幕左下角为原点,屏幕上方为Y轴正方向,屏幕右方为X轴正方向,手机屏幕正上方为Z轴正方向,传感器返回的数据都是float型,并且正方向返回正直,反方向返回负值,范围从-10到10,所以根据这些数据和三角函数等,就可以算出手机的运动状态了。
4. 要想得到传感器的数据,就要使用监听器,当手机状态发生变化的时候,就会得到最新的数据。这就需要使用SensorEventListener了,需要重写public void onSensorChanged(SensorEvent e) 和public void onAccuracyChanged(Sensor s, int accuracy),前者是传感器的数据发生变化时所触发的事件,后者是传感器的灵敏度发生改变时触发的事件。
2 public void onSensorChanged(SensorEvent e) {
3 x = e.values[SensorManager.DATA_X];
4 y = e.values[SensorManager.DATA_Y];
5 z = e.values[SensorManager.DATA_Z];
6 // do something with x, y, z
7 }
8
5. 通过上一步的代码可以很容易看出监听器的简单和方便性,下一步我们就要注册监听器,注册方法也只有一行代码。
前两个参数上面已经定义,第三个参数为传感器的灵敏度,官方文档中说灵敏度氛围四种:
SENSOR_DELAY_FASTEST 最灵敏
SENSOR_DELAY_GAME 游戏的时候用这个,灵敏度比较高
SENSOR_DELAY_NORMAL 正常一般
SENSOR_DELAY_UI 最不灵敏的一般只有横和纵
通过以上各个步骤,可以很容易得到传感器的数据,通过处理这些数据就可以进行不同的事件等等,当然这个需要开发者的大量实验和想象。暂时重力传感器就先说到这里。
转载于:https://www.cnblogs.com/wanlipeng/archive/2010/09/02/1816320.html
重力球——重力感应器应用相关推荐
- 【luogu P7473】重力球
重力球 题目链接:luogu P7473 题目大意 有一个图中有一些障碍物,边界也是障碍物. 然后又每个询问给出两个小球的位置,你可以改变重力变成左右前后,问你最少要改变多少次重力才能使得两个小球滚到 ...
- Cocos Creator 一步一步实现重力球游戏
「获取源码」 点击上方蓝字关注公众号「游戏开发小白变怪兽」,回复「重力球」获取源码及美术资源. 「游戏玩法」 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或 ...
- js重力球效果代码实例
分享一段代码实例,它利用js实现了重力球效果. 本例子中,用鼠标向下拖动小球,然后松开即可查看演示. 代码实例如下: 001 002 003 004 005 006 007 008 009 010 0 ...
- CocosCreator一步一步实现重力球游戏
『 获取源码 』 关注公众号,发送"重力球"获取源码 『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏 ...
- java字符下落,重力球,加速下落减速上弹,重力下落,这段代码是看到网上一个关...
重力球,加速下落减速上弹,重力下落,这段代码是看到网上一个关 这段代码是看到网上一个关于碰壁球修改而成的,用到事件,画图,Timer类package Cheman;import javax.swing ...
- Cocos Creator下JavaScript一步一步实现重力球游戏,附代码
『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束. 『 游戏预览 』 『 开发工具 』 1. CocosCreator ...
- Cocos Creator一步一步实现重力球游戏,附完整代码
『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束. 『 游戏预览 』 『 开发工具 』 1. CocosCreator ...
- Cocos Creator 重力球游戏制作教程
本文首发于:一枚小工(caizj_cn) Cocos 经授权转载,感谢作者创作 游戏玩法 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结 ...
- 【bfs】重力球(luogu 7473/NOI Online 2021 普及组 T3)
正题 luogu 7473 题目大意 给出一个正方形区域,中间有一些障碍 现在有两个球,每次操作可以使两个球同时向一个方向移动,直到遇到障碍或边界 现在问你让两个球到同一个位置最少要多少步 解题思路 ...
最新文章
- linux下同时安装多个tomcat实例
- IDEA 方法注释模板和类注释模板
- 网易云信携手SNH48 GROUP,打造在线追星新体验
- ES6基础5(Promise)-学习笔记
- java 文件流的处理 文件打包成zip
- 我悄悄地把cocos2d-x占了
- 数据科学 IPython 笔记本 8.4 简单的折线图
- springboot应用启动原理(一) 将启动脚本嵌入jar
- UNIGUI接收普通消息和被动回复用户消息
- MySQL常用语句总结
- 贪吃蛇(C语言实现)
- 计算机考研初试/复试——软件工程
- 【标准正态分布查询表】
- 秒杀系统企业级实战应用之真实工业界案例视频
- 如何ocr识别图片中是否有logo?4种思路解决方案分析
- 英文转换-在线英文批量转换器免费
- 第一百二十一天 : varnish
- 批量修改计算机用户名,域环境下批量修改计算机名
- win10开启hdr功能屏幕泛白如何解决?
- 多米诺骨牌问题Push Dominoes