我已经实现了以下代码。基本上,我只是寻找设备的运动而不是它的位置。所以冲动。如果您突然将设备向右移动,我的onMoveRight()
功能将被调用。我正在使用加速度计
问题是指当我向右移动时,好像onMoveRight()
被称为并且就在{{1}之后}} 叫做!!!这不精确。它做了我想要的,但我的其他功能也被调用!!
我的加速度计周期(更新)是100毫秒。我试着把它做得更多,但那时它并没有听取这个动作。或者它听但很晚
onMoveLeft()
答案 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();
}
让我知道它是否有效,我没时间测试它。