android手机重力感应例子
生活随笔
收集整理的這篇文章主要介紹了
android手机重力感应例子
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
手機(jī)重力感應(yīng)實(shí)現(xiàn)簡(jiǎn)單介紹
現(xiàn)在有很多游戲是通過搖晃手機(jī)實(shí)現(xiàn)的,比如賽車游戲 搖骰子游戲 迷宮游戲 等等 。 今天我用簡(jiǎn)單的代碼為大家介紹一下android 下重力感應(yīng)的實(shí)現(xiàn)方式 下面是一個(gè)模擬器的屏幕 Y軸 以屏幕的左下方為原點(diǎn) ,向上為正 向下為負(fù)數(shù)(剛好和編程時(shí)坐標(biāo)是相反的 向下為正 向上為負(fù)數(shù))。從-10到10。 X軸 以屏幕左下方為原點(diǎn) 向左為正 向右為負(fù)數(shù)取值范圍從-10到10 。 Z軸 朝天就是正數(shù) 朝地就是負(fù)數(shù)數(shù)取值范圍從-10到10 。由此可見重力感應(yīng)的取值范圍都是在 -10 到10之間的 我們就可以根據(jù)這個(gè)數(shù)字算出 速度 加速度 等等。
[img]
[/img]
下面我介紹一下代碼的實(shí)現(xiàn)方式
01.private SensorManager sensorMgr;
02.Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
03.
04. //保存上一次 x y z 的坐標(biāo)
05. float bx = 0;
06. float by = 0;
07. float bz = 0;
08. long btime = 0;//這一次的時(shí)間
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. //在這里我們可以計(jì)算出 X Y Z的數(shù)值 下面我們就可以根據(jù)這個(gè)數(shù)值來計(jì)算搖晃的速度了
16. //我想大家應(yīng)該都知道計(jì)算速度的公事 速度 = 路程/時(shí)間
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. //這樣簡(jiǎn)單的速度就可以計(jì)算出來 如果你想計(jì)算加速度 也可以 在運(yùn)動(dòng)學(xué)里,加速度a與速度,
24. //位移都有關(guān)系:Vt=V0+at,S=V0*t+1/2at^2, S=(Vt^2-V0^2)/(2a),根據(jù)這些信息也可以求解a。
25. //這里就不詳細(xì)介紹了 公事 應(yīng)該初中物理課老師就教了呵呵~~
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. // 注冊(cè)listener,第三個(gè)參數(shù)是檢測(cè)的精確度
40. sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
現(xiàn)在有很多游戲是通過搖晃手機(jī)實(shí)現(xiàn)的,比如賽車游戲 搖骰子游戲 迷宮游戲 等等 。 今天我用簡(jiǎn)單的代碼為大家介紹一下android 下重力感應(yīng)的實(shí)現(xiàn)方式 下面是一個(gè)模擬器的屏幕 Y軸 以屏幕的左下方為原點(diǎn) ,向上為正 向下為負(fù)數(shù)(剛好和編程時(shí)坐標(biāo)是相反的 向下為正 向上為負(fù)數(shù))。從-10到10。 X軸 以屏幕左下方為原點(diǎn) 向左為正 向右為負(fù)數(shù)取值范圍從-10到10 。 Z軸 朝天就是正數(shù) 朝地就是負(fù)數(shù)數(shù)取值范圍從-10到10 。由此可見重力感應(yīng)的取值范圍都是在 -10 到10之間的 我們就可以根據(jù)這個(gè)數(shù)字算出 速度 加速度 等等。
[img]
[/img]
下面我介紹一下代碼的實(shí)現(xiàn)方式
01.private SensorManager sensorMgr;
02.Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
03.
04. //保存上一次 x y z 的坐標(biāo)
05. float bx = 0;
06. float by = 0;
07. float bz = 0;
08. long btime = 0;//這一次的時(shí)間
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. //在這里我們可以計(jì)算出 X Y Z的數(shù)值 下面我們就可以根據(jù)這個(gè)數(shù)值來計(jì)算搖晃的速度了
16. //我想大家應(yīng)該都知道計(jì)算速度的公事 速度 = 路程/時(shí)間
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. //這樣簡(jiǎn)單的速度就可以計(jì)算出來 如果你想計(jì)算加速度 也可以 在運(yùn)動(dòng)學(xué)里,加速度a與速度,
24. //位移都有關(guān)系:Vt=V0+at,S=V0*t+1/2at^2, S=(Vt^2-V0^2)/(2a),根據(jù)這些信息也可以求解a。
25. //這里就不詳細(xì)介紹了 公事 應(yīng)該初中物理課老師就教了呵呵~~
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. // 注冊(cè)listener,第三個(gè)參數(shù)是檢測(cè)的精確度
40. sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
總結(jié)
以上是生活随笔為你收集整理的android手机重力感应例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PrivacyPolicy 隐私政策
- 下一篇: flash 编程总结