android中的很多游戏的游戏都使用了重力感应的技术,但其api demo却并没有重力感应的实例(不知道是不是我没找到,找到的朋友麻烦告诉我一下,谢谢),因为开发的需要,就研究了一下重力感应这方面,因为网上关于这方面的东西比较少,所以写出来跟大家交流一下,算是抛砖引玉吧。(ps.因为重力感应式需要真机才能测试的,所以,下面提供的demo程序只能在真机上跑。)因为官方说明比较含糊难懂,我用最简单的方式讲一下android重力感应系统的坐标系


以屏幕的左下方为原点(2d编程的时候,是以屏幕左上方为原点的,这个值得注意一下),箭头指向的方向为正。从-10到10,以浮点数为等级单位,想象一下以下情形:
手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10);
手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10);
手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(10,0,0);
手机竖直(y轴朝天)向上的时候,(x,y,z)的值分别为(0,10,0);
其他的如此类推,规律就是:朝天的就是正数,朝地的就是负数。利用x,y,z三个值求三角函数,就可以精确检测手机的运动状态了。

接下来,用最短的代码完成功能,程序效果就是在title上面输出x,y,z的值。
package com.ray.test;import android.app.Activity;import android.os.Bundle;import android.hardware.SensorManager;import android.hardware.Sensor;import android.hardware.SensorEventListener;import android.hardware.SensorEvent;public class SensorTest extends Activity {private SensorManager sensorMgr;Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);private float x, y, z;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);SensorEventListener lsn = new SensorEventListener() {public void onSensorChanged(SensorEvent e) {x = e.values[SensorManager.DATA_X]; y = e.values[SensorManager.DATA_Y]; z = e.values[SensorManager.DATA_Z];setTitle("x="+(int)x+","+"y="+(int)y+","+"z="+(int)z);}public void onAccuracyChanged(Sensor s, int accuracy) {}};//注册listener,第三个参数是检测的精确度sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);}}


Android游戏开发之小球重力感应实现
http://blog.csdn.net/xys289187120/article/details/6702953

更多相关文章

  1. 主流智能手机屏幕材质介绍
  2. Android(安卓)手机翻转实现技术
  3. 解决Android手机屏幕横竖屏切换
  4. Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法
  5. Android传感器---Motion Sensor(三)
  6. Android(安卓)距离感应器和耳机状态监测(控制Audio输出通道切换)
  7. android小游戏模版—重力感应
  8. 【Android笔记 六】Android(安卓)Sensor感应器介绍(二)线程中刷新U
  9. Android获取三轴加速度和view的重绘

随机推荐

  1. Android控件之HorizontalScrollView 去掉
  2. Android(安卓)Application
  3. Ubuntu 11.10编译Android(安卓)错误
  4. JNI和NDK的区别
  5. Android中string.xml使用总结
  6. Android(安卓)利用HttpURLConnection对象
  7. editText 不可编辑的操作
  8. Android启动画面的实现
  9. Android(安卓)组件安全
  10. [安卓基础] 008.Android中的显示单位