加速度计起始位置

时间:2012-08-15 16:20:57

标签: android accelerometer

从加速度计(在X和Y轴上)获取值后,我将此值分配给xSpeed和ySpeed变量,然后根据此值移动球。问题是我希望在活动开始时xSpeed和ySpeed为0(无论加速度计值是什么,球都不会移动,直到手机移动)。我想做这种校准。

对于Y轴,我试过这个,但不适用于手机的所有起始位置。

ball.setYSpeed(ySpeed-startAccelY);

其中startAccelY是Y轴上加速度计的起始值,ySpeed将被赋予新值。

2 个答案:

答案 0 :(得分:2)

我建议您取出原始起始值并从当前读数中减去它。

例如,您的代码中有一个变量:

float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer

然后,当您将当前加速计读数应用于球时,您可以减去initialPosition值以使球移动。这样球就会在开始时失速。

我希望这会有所帮助。

答案 1 :(得分:1)

我假设您使用的是TYPE_ACCELEROMETER传感器?请尝试使用TYPE_LINEAR_ACCELERATION传感器。它会自动从传感器读数中减去重力,因此如果您不移动手机,则accln将保持为0(ish)。

[编辑] Api 9 +虽然。