我正在尝试编写一个将手机放在 table 上的小型安卓游戏。
屏幕上有一个球,用户可以通过移动手机来控制它的运动。
在整个游戏过程中,用户不会从 table 上拿起手机。
一开始球会放在屏幕中间:
从用户那里推送电话:
应该将球移向智能手机屏幕的顶部:
然后从球的当前位置,将手机移回用户,并向右移动:
将相应地移动球:
我读了Android Motion Sensors Guide仔细但我什至没有意识到我应该使用什么 Sensor
\Sensors
。
我很想得到任何指示。
最佳答案
首先TYPE_LINEAR_ACCELERATION、TYPE_ROTATION_VECTOR、TYPE_GRAVITY不是物理传感器,而是传感器融合而成。
其次,从 Android 4+ 开始,这些融合传感器使用设备陀螺仪,因此如果移动设备没有陀螺仪,它们将不会工作。
因此,如果您想为所有手机制作通用应用程序,最好只使用加速度计 (TYPE_ACCELEROMETER)。
现在针对您的情况,因为用户不会将手机从 table 上拿起来,如果您愿意,您可以轻松地从加速度计中减去重力分量。参见 http://developer.android.com/reference/android/hardware/SensorEvent.html 在 Sensor.TYPE_ACCELEROMETER 部分下。 (也给出了代码)。
现在你可以看到How can I find distance traveled with a gyroscope and accelerometer?找到线性位移和第一个答案表明他们没有使用陀螺仪。 (或者您可以通过谷歌搜索加速度计读数中的位移/线速度)
希望这一切能给你很多想法。
关于android - 检测智能手机在 table 上的水平和垂直运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863362/