Android-检测后的事件';x';绕局部Z轴的转鼓数

Android-检测后的事件';x';绕局部Z轴的转鼓数,android,android-activity,android-sensors,Android,Android Activity,Android Sensors,我目前正努力在安卓系统中使用探测器。我正在开发一个应用程序,我希望它能在用户将手机“滚动”到手中后执行某些操作 更准确地说,我希望他们将手机绕本地Z轴旋转720°(如果我没有弄错的话,手机的“高度”),然后让应用程序返回一些信息 我真的不知道怎么做。到目前为止,我想到的最好的方法是声明8个布尔变量,每个变量占所做滚动的四分之一,当滚动值在一定范围内时设置为true。是 啊我真是太绝望了 感谢您的帮助 考虑到横滚角度穿过2*pi边界时,可以累积横滚角度的变化。当总滚动角度大于4*pi或小于-4*p

我目前正努力在安卓系统中使用探测器。我正在开发一个应用程序,我希望它能在用户将手机“滚动”到手中后执行某些操作

更准确地说,我希望他们将手机绕本地Z轴旋转720°(如果我没有弄错的话,手机的“高度”),然后让应用程序返回一些信息

我真的不知道怎么做。到目前为止,我想到的最好的方法是声明8个布尔变量,每个变量占所做滚动的四分之一,当滚动值在一定范围内时设置为true。是 啊我真是太绝望了


感谢您的帮助

考虑到横滚角度穿过2*pi边界时,可以累积横滚角度的变化。当总滚动角度大于4*pi或小于-4*pi时通知用户

void updateTotalRoll(float currentAngle) {
    if ((currentAngle < (pi/2)) && (prevAngle > (3*pi/2))) {
        totalRoll += (currentAngle+2*pi-prevAngle);
    } else if ((currentAngle > (3*pi/2)) && (prevAngle < (pi/2))) {
        totalRoll -= (prevAngle+2*pi-currentAngle);
    } else {
        totalRoll += currentAngle-prevAngle;
    }
}
void updateTotalRoll(浮动当前角度){
如果((当前角度<(pi/2))&(当前角度>(3*pi/2))){
总滚动+=(当前角度+2*pi角度);
}否则如果((当前角度>(3*pi/2))&&(当前角度<(pi/2))){
totalRoll-=(prevAngle+2*pi currentAngle);
}否则{
totalRoll+=当前角度prevAngle;
}
}

哇,非常感谢!回答得很好。但是,是否应该在某个地方有一个超时呢?当然,尽管实现将取决于您对事件计时的方式。例如,在应用程序的整个生命周期中查找卷与向用户请求卷不同,如果卷在一定时间内没有发生,则会超时。