android手机重力感应例子

手机重力感应实现简单介绍


现在有很多游戏是通过摇晃手机实现的,比如赛车游戏 摇骰子游戏 迷宫游戏 等等 。 今天我用简单的代码为大家介绍一下android 下重力感应的实现方式 下面是一个模拟器的屏幕 Y轴 以屏幕的左下方为原点 ,向上为正 向下为负数(刚好和编程时坐标是相反的 向下为正 向上为负数)。从-10到10。 X轴 以屏幕左下方为原点 向左为正 向右为负数取值范围从-10到10 。 Z轴 朝天就是正数 朝地就是负数数取值范围从-10到10 。由此可见重力感应的取值范围都是在 -10 到10之间的 我们就可以根据这个数字算出 速度 加速度 等等。

[img]


[/img]

下面我介绍一下代码的实现方式


01.private SensorManager sensorMgr;
02.Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
03.
04. //保存上一次 x y z 的坐标
05. float bx = 0;
06. float by = 0;
07. float bz = 0;
08. long btime = 0;//这一次的时间
09. sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
10. SensorEventListener lsn = new SensorEventListener() {
11. public void onSensorChanged(SensorEvent e) {
12. float x = e.values[SensorManager.DATA_X];
13. float y = e.values[SensorManager.DATA_Y];
14. float z = e.values[SensorManager.DATA_Z];
15. //在这里我们可以计算出 X Y Z的数值 下面我们就可以根据这个数值来计算摇晃的速度了
16. //我想大家应该都知道计算速度的公事 速度 = 路程/时间
17. //X轴的速度
18. float speadX = (x - bx) / (System.currentTimeMillis() - btime);
19. //y轴的速度
20. float speadY = (y - by) / (System.currentTimeMillis() - btime);
21. //z轴的速度
22. float speadZ = (z - bz) / (System.currentTimeMillis() - btime);
23. //这样简单的速度就可以计算出来 如果你想计算加速度 也可以 在运动学里,加速度a与速度,
24. //位移都有关系:Vt=V0+at,S=V0*t+1/2at^2, S=(Vt^2-V0^2)/(2a),根据这些信息也可以求解a。
25. //这里就不详细介绍了 公事 应该初中物理课老师就教了呵呵~~
26.
27. bx = x;
28. by = y;
29. bz = z;
30.
31. btime = System.currentTimeMillis();
32.
33.
34. }
35.
36. public void onAccuracyChanged(Sensor s, int accuracy) {
37. }
38. };
39. // 注册listener,第三个参数是检测的精确度
40. sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值