android - 检测智能手机在 table 上的水平和垂直运动

标签 android accelerometer android-sensors

我正在尝试编写一个将手机放在 table 上的小型安卓游戏。
屏幕上有一个球,用户可以通过移动手机来控制它的运动。
在整个游戏过程中,用户不会从 table 上拿起手机。
一开始球会放在屏幕中间:
initial state
从用户那里推送电话:
Pushing the phone from the user
enter image description here

应该将球移向智能手机屏幕的顶部:
the ball move toward the top of the smartphone screen

然后从球的当前位置,将手机移回用户,并向右移动:
enter image description here
enter image description here
将相应地移动球:
enter image description here

我读了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/

相关文章:

java - LaunchMap 无法解析或不是字段

java - Google Cloud Endpoints 设置问题

android - 可用的 Android 设备传感器列表

android - 如何检测建筑物中是否有智能手机?

安卓:Sensor.getResolution() 值

android - 为什么我要用 HPROF 查看器和分析器查找 "Duplicate Strings"?

android - 在程序执行期间使用新图像更新过渡可绘制对象?

iphone - 通过 iPhone SDK 测量速度

ios - 不显示加速度计/陀螺仪 View

android - 如何在按钮的 onClick 方法中注册传感器监听器?