5
我正在爲我的應用程序開發簡單的搖動功能,並且遇到了一個奇怪的問題。當我在Honor5x上測試它時,它的功能就像是一種魅力,但是當我嘗試在三星S5上執行它時,它太敏感了。加速度計可能在不同設備上的工作方式有所不同嗎?如果是這樣的話,修改外設取決於設備/加速度計的精度? 這裏是我的用於檢測震動事件代碼: 搖動事件在各種設備上的工作方式不同搖動事件自定義實現
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
float accX = event.values[0] - gravity[0];
float accY = event.values[1] - gravity[1];
float maxSpeed = Math.max(accX, accY);
if (maxSpeed > SHAKE_THRESHOLD)
{
if(shakesInRow == 0){
shakesInRow++;
shakeTime = System.currentTimeMillis();
}else{
if((System.currentTimeMillis() - shakeTime) < SHAKE_TIME_DETECTOR){
shakesInRow++;
}else{
shakesInRow = 0;
shakeTime = 0;
return;
}
if(shakesInRow>= SHAKE_IN_ROW) {
shakesInRow= 0;
runMainActivity();
}
}
}
謝謝,這個庫工作得很好,我的情況:) –