Android - 检测到围绕局部 Z 轴的滚动次数 'x' 后的事件
Android - Event after detecting 'x' number of rolls around local Z axis
我目前正在努力使用 Android 中的检测器。我正在开发一个应用程序,我希望它在用户将 phone 'roll' 拿到手后执行某些操作。
更准确地说,我希望他们围绕局部 Z 轴滚动 phone 720°(如果我没记错的话,[=23= 的 'height' ]) 然后,让应用程序 return something.
我真的不知道该怎么做。到目前为止,我想出的最好的方法是声明 8 个布尔变量,每个变量占滚动的四分之一,当滚动值在一定范围内时设置为真。是的。我好绝望
感谢任何帮助!
您可以累积滚动角度的变化,同时考虑角度何时穿过 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;
}
}
我目前正在努力使用 Android 中的检测器。我正在开发一个应用程序,我希望它在用户将 phone 'roll' 拿到手后执行某些操作。
更准确地说,我希望他们围绕局部 Z 轴滚动 phone 720°(如果我没记错的话,[=23= 的 'height' ]) 然后,让应用程序 return something.
我真的不知道该怎么做。到目前为止,我想出的最好的方法是声明 8 个布尔变量,每个变量占滚动的四分之一,当滚动值在一定范围内时设置为真。是的。我好绝望
感谢任何帮助!
您可以累积滚动角度的变化,同时考虑角度何时穿过 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;
}
}