Tôi đang phát triển tính năng Lắc đơn giản cho ứng dụng của mình và tôi gặp phải sự cố lạ. Khi tôi kiểm tra nó trên Honor5x của tôi nó hoạt động như một say mê, nhưng khi tôi đã cố gắng để thực hiện nó trên Samsung S5 nó quá nhạy cảm. Có thể là gia tốc hoạt động khác nhau trên các thiết bị khác nhau không? Nếu có thì có thể thay đổi các coniditions phụ thuộc vào độ chính xác của thiết bị/gia tốc không? Dưới đây là mã của tôi để phát hiện sự kiện Shake: Sự kiện lắc hoạt động khác nhau trên các thiết bị khác nhau Thực hiện tùy chỉnh Lắc Sự kiện
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();
}
}
}
Cảm ơn, thư viện này hoạt động khá tốt trong trường hợp của tôi :) –