在我从加速度计(在X和Y轴上)获得值之后,我将这个值赋给xSpeed和ySpeed变量,然后根据这个值移动一个球。问题是,我希望在活动开始时xSpeed和ySpeed为0(在移动手机之前球不会移动),而不管加速度计的值是什么。我想做这样的校准。
对于Y轴,我尝试了这一点,但并不适用于手机的所有起始位置。
ball.setYSpeed(ySpeed-startAccelY);其中startAccelY是Y轴上加速度计的起始值,ySpeed将被指定为新值。
发布于 2012-08-16 00:25:38
我建议你取原始的起始值,从当前读数中减去它。
例如,您的代码中有一个变量:
float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer然后,当您将当前的加速度计读数应用于球时,可以减去initialPosition值以使球移动。这样,球在开始时就会看起来失速。
我希望这能帮到你。
发布于 2012-08-16 00:27:24
我猜你用的是TYPE_ACCELEROMETER传感器吧?请尝试使用TYPE_LINEAR_ACCELERATION传感器。它会自动从传感器读数中减去重力,所以如果你不移动手机,accln就会保持在0 (ish)。
不过编辑Api 9+。
https://stackoverflow.com/questions/11973084
复制相似问题