2012-08-15 76 views
0

当我从加速度计(在X轴和Y轴上)得到数值后,我将这个值赋给xSpeed和ySpeed变量,然后根据这个数值移动一个球。问题在于,无论加速度计的值是什么,我都希望在活动开始时xSpeed和ySpeed为0(直到电话被移动时球才会移动)。我想做这种校准。加速度计开始位置

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

ball.setYSpeed(ySpeed-startAccelY); 

其中startAccelY是在Y轴上,并ySpeed加速度计的初始值将被asigned新值。

回答

2

我建议你采取原始的起始值,并从当前读数中减去它。

例如你有一个变量在你的代码:

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

然后,当你申请的当前的加速度阅读你的球,你可以减去initialPosition值使球移动。这样球就会在开始时停顿。

我希望这会有所帮助。

+0

这正是我为Y轴所做的。它工作的很好,但是当手机直线向上时,它不会很好地工作。但是这对X轴不起作用。 – Alex 2012-08-15 16:35:00

+0

X轴的任何解决方案? – Alex 2012-08-15 16:43:50

+0

也应该为X轴工作,为什么它不工作? – 2012-08-15 17:12:33

1

我假设您使用TYPE_ACCELEROMETER传感器?请尝试使用TYPE_LINEAR_ACCELERATION传感器。它会自动从传感器读数中减去重力,所以如果你不移动手机accln保持在0(ish)。

Api 9 +虽然。

+0

这没有解决问题。 – Alex 2012-08-15 16:52:01