Android - 设备移动无法正常工作

时间:2014-11-20 00:04:09

标签: java android accelerometer

我已经实现了以下代码。基本上,我只是寻找设备的运动而不是它的位置。所以冲动。如果您突然将设备向右移动,我的onMoveRight()功能将被调用。我正在使用加速度计

问题是指当我向右移动时,好像onMoveRight()被称为并且就在{{1}之后}} 叫做!!!这不精确。它做了我想要的,但我的其他功能也被调用!!

我的加速度计周期(更新)是100毫秒。我试着把它做得更多,但那时它并没有听取这个动作。或者它听但很晚

onMoveLeft()

1 个答案:

答案 0 :(得分:0)

正如zapl所说你正在测量加速度,在这种情况下,负加速度并不意味着设备向左移动,我建议:

/* these should not be in the loop
double xCoordinate = 0;
double yCoordinate = 0;
double newXCoordinate, newYCoordinate;
*/
/*these lines won't be needed
if (mLastAcc == null) {
    mLastAcc = acc;
}
*/
newXCoordinate = xCoordinate + 0.5 * acc.x*Math.pow(0.1,2);//0.1 is the period update
newYCoordinate = yCoordinate + 0.5 * acc.y*Math.pow(0.1,2);

double xChange = xCoordinate - newXCoordinate;
double yChange = yCoordinate - newYCoordinate;
xCoordinate = newXCoordinate;
yCoordinate = newYCoordinate;

if(xChange < -2.0)
{
    mContext.onMoveRight();
}
else if(xChange > 2.0)
{
    mContext.onMoveLeft();
}
else if(yChange > 2.0)
{
    mContext.onMoveDown();
}
else if(yChange < -2.0)
{
    mContext.onMoveUp();
}

让我知道它是否有效,我没时间测试它。