首届 Google 暑期大学生博客分享大赛——2010 Andriod 篇

之前在网上看到一个HTC的Windows Mobile手机中的一个应用重力感应器的程序“蛋疼的小球”,地址: http://v.youku.com/v_show/id_XMTkxOTc0MDg0.html 由于最近本人正在学习Android系统开发,有点跃跃欲试的感觉,想自己也做一个。于是开始做准备工作,找素材就略过不提了。

下面开始第一步,Android中传感器的使用。

Android中有很多API可以直接调用手机中的传感器,通过这些传感器可以得到手机在真实的环境中的速度,空间位置,指向方向,光线感应,磁场,压力计以及温度等信息,获取这些信息之后,就可以做出来一些很炫很好玩的功能。

1. 首先要得到一个手机上的传感器,代码比较简单。通过这行代码我们得到一个硬件设备的控制器。

SensorManager mManager = (SensorManager) getSystemService(SENSOR_SERVICE);

2. 通过上一步得到的硬件控制器,我们要得到想要的传感器,比如重力传感器。需要注意的是有些手机上可能不支持我们需要的传感器,那么mSensor就为null,所以为了安全起见,应该判断是否为null。

Sensor mSensor = sensorMgr.getDefaultSensor(Sensor. TYPE_ACCELEROMETER);

关于其中的参数,还有很多其他的类型。在官方文档中对于各个类型的说明:

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,其他的感应器本次不使用,以后会陆续试用。

3. 通过重力感应器的数据,我们可以知道手机的偏转度,然后才能控制小球的移动。这里对手机上X、Y、Z三维坐标系说明一下,借助网上某网友的图片说明一下。

以屏幕左下角为原点,屏幕上方为Y轴正方向,屏幕右方为X轴正方向,手机屏幕正上方为Z轴正方向,传感器返回的数据都是float型,并且正方向返回正直,反方向返回负值,范围从-10到10,所以根据这些数据和三角函数等,就可以算出手机的运动状态了。

4. 要想得到传感器的数据,就要使用监听器,当手机状态发生变化的时候,就会得到最新的数据。这就需要使用SensorEventListener了,需要重写public void onSensorChanged(SensorEvent e) 和public void onAccuracyChanged(Sensor s, int accuracy),前者是传感器的数据发生变化时所触发的事件,后者是传感器的灵敏度发生改变时触发的事件。

1 SensorEventListener listener = new SensorEventListener() {
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. 通过上一步的代码可以很容易看出监听器的简单和方便性,下一步我们就要注册监听器,注册方法也只有一行代码。

sensorMgr.registerListener(listener, mSensor, SensorManager.SENSOR_DELAY_GAME);

前两个参数上面已经定义,第三个参数为传感器的灵敏度,官方文档中说灵敏度氛围四种:

SENSOR_DELAY_FASTEST 最灵敏

SENSOR_DELAY_GAME 游戏的时候用这个,灵敏度比较高
SENSOR_DELAY_NORMAL 正常一般

SENSOR_DELAY_UI  最不灵敏的一般只有横和纵

通过以上各个步骤,可以很容易得到传感器的数据,通过处理这些数据就可以进行不同的事件等等,当然这个需要开发者的大量实验和想象。暂时重力传感器就先说到这里。

转载于:https://www.cnblogs.com/wanlipeng/archive/2010/09/02/1816320.html

重力球——重力感应器应用相关推荐

  1. 【luogu P7473】重力球

    重力球 题目链接:luogu P7473 题目大意 有一个图中有一些障碍物,边界也是障碍物. 然后又每个询问给出两个小球的位置,你可以改变重力变成左右前后,问你最少要改变多少次重力才能使得两个小球滚到 ...

  2. Cocos Creator 一步一步实现重力球游戏

    「获取源码」 点击上方蓝字关注公众号「游戏开发小白变怪兽」,回复「重力球」获取源码及美术资源. 「游戏玩法」 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或 ...

  3. js重力球效果代码实例

    分享一段代码实例,它利用js实现了重力球效果. 本例子中,用鼠标向下拖动小球,然后松开即可查看演示. 代码实例如下: 001 002 003 004 005 006 007 008 009 010 0 ...

  4. CocosCreator一步一步实现重力球游戏

    『 获取源码 』 关注公众号,发送"重力球"获取源码 『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏 ...

  5. java字符下落,重力球,加速下落减速上弹,重力下落,这段代码是看到网上一个关...

    重力球,加速下落减速上弹,重力下落,这段代码是看到网上一个关 这段代码是看到网上一个关于碰壁球修改而成的,用到事件,画图,Timer类package Cheman;import javax.swing ...

  6. Cocos Creator下JavaScript一步一步实现重力球游戏,附代码

    『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束. 『 游戏预览 』 『 开发工具 』 1. CocosCreator ...

  7. Cocos Creator一步一步实现重力球游戏,附完整代码

    『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束. 『 游戏预览 』 『 开发工具 』 1. CocosCreator ...

  8. Cocos Creator 重力球游戏制作教程

    本文首发于:一枚小工(caizj_cn) Cocos 经授权转载,感谢作者创作 游戏玩法 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结 ...

  9. 【bfs】重力球(luogu 7473/NOI Online 2021 普及组 T3)

    正题 luogu 7473 题目大意 给出一个正方形区域,中间有一些障碍 现在有两个球,每次操作可以使两个球同时向一个方向移动,直到遇到障碍或边界 现在问你让两个球到同一个位置最少要多少步 解题思路 ...

最新文章

  1. linux下同时安装多个tomcat实例
  2. IDEA 方法注释模板和类注释模板
  3. 网易云信携手SNH48 GROUP,打造在线追星新体验
  4. ES6基础5(Promise)-学习笔记
  5. java 文件流的处理 文件打包成zip
  6. 我悄悄地把cocos2d-x占了
  7. 数据科学 IPython 笔记本 8.4 简单的折线图
  8. springboot应用启动原理(一) 将启动脚本嵌入jar
  9. UNIGUI接收普通消息和被动回复用户消息
  10. MySQL常用语句总结
  11. 贪吃蛇(C语言实现)
  12. 计算机考研初试/复试——软件工程
  13. 【标准正态分布查询表】
  14. 秒杀系统企业级实战应用之真实工业界案例视频
  15. 如何ocr识别图片中是否有logo?4种思路解决方案分析
  16. 英文转换-在线英文批量转换器免费
  17. 第一百二十一天 : varnish
  18. 批量修改计算机用户名,域环境下批量修改计算机名
  19. win10开启hdr功能屏幕泛白如何解决?
  20. 多米诺骨牌问题Push Dominoes

热门文章

  1. seo编辑内容优化的苦恼:文章该多长才最适合
  2. 【智能优化算法】基于全局优化的改进鸡群算法求解单目标优化问题(ECSO)附matlab代码
  3. ArcPy计算多影像有效像元的平均值
  4. 【hh】我胡汉三又回来了
  5. 硬件工程师成长之路(9)——检测标准
  6. 2022-02-15
  7. AH8696_非隔离IC,AC220V降12V500MA,超高效简约电路,电源芯片IC*
  8. 【98期】面试官:给我说说你对Java GC机制的理解?
  9. Android知识导图
  10. 以梦为马,不负韶华|电巢科技延安大学飞鹰计划实习班精彩回顾