Java 检测特定的震动运动(图示:D)

Java 检测特定的震动运动(图示:D),java,android,accelerometer,Java,Android,Accelerometer,我正在开发一个Android平台。我想做一个跳跃控制,基本上,你摇动手机。然而,正如你可能知道的,我有点困惑 我有加速度计的X,Y,Z值,我如何判断播放器是否在晃动手机?据我所知,这不是小事。。。至少对我来说 颤抖可能是个错误的词,它更像是将手机向上移动以跳跃。我不知道如何用语言来解释,所以这里有一个漂亮的例子: 您要使用来完成此任务 只需将传感器类型放入触发器代码中,并将所需的任何逻辑放入onSensorChanged() 希望这有帮助 把鲁尔加速度计坐标想象成一个有惯性的球。如果手机跳跃,球

我正在开发一个Android平台。我想做一个跳跃控制,基本上,你摇动手机。然而,正如你可能知道的,我有点困惑

我有加速度计的X,Y,Z值,我如何判断播放器是否在晃动手机?据我所知,这不是小事。。。至少对我来说

颤抖可能是个错误的词,它更像是将手机向上移动以跳跃。我不知道如何用语言来解释,所以这里有一个漂亮的例子:

您要使用来完成此任务

只需将传感器类型放入触发器代码中,并将所需的任何逻辑放入
onSensorChanged()


希望这有帮助

把鲁尔加速度计坐标想象成一个有惯性的球。如果手机跳跃,球就会跳跃(Z向上移动,然后再向下移动)。

我将描述如何手动操作

加速计返回与对象感觉到的加速度相对应的值

例如,如果X值较高,则表示手机在X方向加速。然而,你无法从一张快照中知道这个加速度是因为震动还是因为突然向稳定方向移动

因此,你要寻找的是当加速度很高,然后突然很低或负,等等。你想要的是加速度的变化率,或者说急动

就代码而言,您希望保留加速度值的历史记录,并保留运行的jerk值(例如,在最后10帧中加速度的变化)。如果该值达到阈值(正或负),则这是您的抖动


当然,分别对X、Y和Z加速度执行此操作,然后添加jerk值,以获得最后一个测试阈值的值。

我认为您应该将加速度计读数的时间平均为250 ms,然后查看平均值是否高于某个值(由您自行决定,并根据应用程序的要求)在你期望的方向上。如果成功了,你的行动就完成了。震动时,加速计的时间平均值将基本处于中性。但我上面所描述的需要反复测试,才能将其调整到正确的数字,以获得更好的用户体验。

谢谢,但它的硬件有多常见?我承认,我对硬件传感器几乎一无所知。这是你需要自己确定的目标设备。尝试查看Android开发站点目标设备部分。据我所知,任何带有加速计的设备都有这种传感器(很可能是普通加速计的衍生产品)