当我从加速度计(在X轴和Y轴上)得到数值后,我将这个值赋给xSpeed和ySpeed变量,然后根据这个数值移动一个球。问题在于,无论加速度计的值是什么,我都希望在活动开始时xSpeed和ySpeed为0(直到电话被移动时球才会移动)。我想做这种校准。加速度计开始位置
对于Y轴我试过,但不适用于手机的所有起始位置。
ball.setYSpeed(ySpeed-startAccelY);
其中startAccelY是在Y轴上,并ySpeed加速度计的初始值将被asigned新值。
当我从加速度计(在X轴和Y轴上)得到数值后,我将这个值赋给xSpeed和ySpeed变量,然后根据这个数值移动一个球。问题在于,无论加速度计的值是什么,我都希望在活动开始时xSpeed和ySpeed为0(直到电话被移动时球才会移动)。我想做这种校准。加速度计开始位置
对于Y轴我试过,但不适用于手机的所有起始位置。
ball.setYSpeed(ySpeed-startAccelY);
其中startAccelY是在Y轴上,并ySpeed加速度计的初始值将被asigned新值。
我建议你采取原始的起始值,并从当前读数中减去它。
例如你有一个变量在你的代码:
float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer
然后,当你申请的当前的加速度阅读你的球,你可以减去initialPosition值使球移动。这样球就会在开始时停顿。
我希望这会有所帮助。
我假设您使用TYPE_ACCELEROMETER传感器?请尝试使用TYPE_LINEAR_ACCELERATION传感器。它会自动从传感器读数中减去重力,所以如果你不移动手机accln保持在0(ish)。
Api 9 +虽然。
这没有解决问题。 – Alex 2012-08-15 16:52:01
这正是我为Y轴所做的。它工作的很好,但是当手机直线向上时,它不会很好地工作。但是这对X轴不起作用。 – Alex 2012-08-15 16:35:00
X轴的任何解决方案? – Alex 2012-08-15 16:43:50
也应该为X轴工作,为什么它不工作? – 2012-08-15 17:12:33