android 的重力感应开发
(希望可以弄个引擎出来~努力中)
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
安卓重力感应的基本测试代码
public class SensorTestActivity extends Activity {    /** Called when the activity is first created. */private SensorManager sensorMgr;Sensor sensor; private int x, y, z; private int ox=0, oy=0, oz=0; String str=""; TextView m_path; Button m_clear;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        m_path=(TextView)findViewById(R.id.path);        m_clear=(Button)findViewById(R.id.clear);                m_clear.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View view) {// TODO Auto-generated method stubstr="";update();}        });        sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);        sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);        SensorEventListener lsn = new SensorEventListener() {         public void onAccuracyChanged(Sensor s, int accuracy) {         }@Overridepublic void onSensorChanged(SensorEvent e) {// TODO Auto-generated method stub        x = (int)e.values[SensorManager.DATA_X];        y = (int)e.values[SensorManager.DATA_Y];         z = (int)e.values[SensorManager.DATA_Z];          if(x==ox&&y==oy&&z==oz){              }else{       ox=x;       oy=y;       oz=z;       str+="x="+x+","+"y="+y+","+"z="+z+"\n";            update();             }} };         sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);           }    public void update(){    m_path.setText(str);    }}

调试遇到的问题:
1、 如果是float来进行比较的话 基本上都不会相等,所以画面会一直刷。还是强制转换成INT型进行比较
2、至于哪个方向对应哪个值 靠自己进行脑补架构了。。。


基本假设(仅供参考和交流)
参考http://www.cnblogs.com/bpasser/archive/2011/10/17/2214517.html
我懒得研究底层了(有兴趣的可以自行搜索),就根据数据进行了假设
1 假设手机中有一个正方体,内部有个小球。六个面都有传感器分别是 X+, X-, Y+, Y-, Z+, Z- 当传感器被小球压到的时候 其获得的重力值 然后加上 + - 就成了参数 X Y Z 有正有负


2 获得的 X Y Z代表的是 手机传感器内部的压力值 也就是力 三个方向的合力即是重力的大小为9.7左右

范例: 将手机平放 显示 x=0 y=0 z=9 g=Math.sqrt(x * x + y * y + z * z); 重力为9.7左右 Z+的那个感应器的位置是在手机的后背 相应的Z-的感应器在手机前面 (懒的画图了 脑补吧 需要的时候在弄个图)
3 面对手机屏幕的时候 Z+在手机背面;Z-在手机正面;Y+在手机底部;Y-在手机顶部;X+在手机左边;X-在手机右边;很难理解 所以只能这么记得

范例: 试试就知道了 没有统一的模型 还是靠理解吧
4 相应方向的值可以大于10 说明处于受力 减速状态。

范例:手机面朝上,猛的往下一放,就像手机掉下去然后接住那个过程(当然摔到手机 我不负责),z值会变小,然后大于10,然后等于10。也就是先进入失重状态 a<G 然后进入超重状态 a>G 然后恢复为正常 a=G

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
基本理论完成 其他待续。。。

更多相关文章

  1. 列出手机中所有的App,点击启动
  2. android之通过MediaRecorder进行手机录音
  3. android解锁触发广播
  4. Android获取手机本地图片缩略图
  5. android手机打电话代码分析
  6. Android之NFC第一课
  7. Android中手机震动的设置(Vibrator)的步骤(Android学习随笔三)
  8. 安卓手机助手Jihosoft Android(安卓)Manager英文安装及注册教程(
  9. 如何在Android上获取本机号码?

随机推荐

  1. php中的错误级别
  2. php关于网页乱码问题
  3. 如何从其他文件调用数组
  4. 今天去面试遇到了一个问题,左连接查询的问
  5. php清理当前目录下的指定文件和空目录(源
  6. PHP的订单生成算法
  7. 切出多维数组的一部分
  8. PHP 创建对象的两种方法
  9. php mail函数一段好的代码
  10. 使用“.html”链接到.html.php文件 - 这