从加速度计(在X和Y轴上)获取值后,我将此值分配给xSpeed和ySpeed变量,然后根据此值移动球。问题是我希望在活动开始时xSpeed和ySpeed为0(无论加速度计值是什么,球都不会移动,直到手机移动)。我想做这种校准。
对于Y轴,我试过这个,但不适用于手机的所有起始位置。
ball.setYSpeed(ySpeed-startAccelY);
其中startAccelY是Y轴上加速度计的起始值,ySpeed将被赋予新值。
答案 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 +虽然。