2016-09-26 15 views
5

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(); 
       } 
      } 
     } 

Trả lời

1

Bạn có thể thử thư viện Quảng trường để phát hiện rung - seismic

Họ thu thập mẫu trong khoảng thời gian nhất định, và nếu 3/4 của những người mẫu được đẩy nhanh sau đó nó có nghĩa là có một sự run rẩy.

+0

Cảm ơn, thư viện này hoạt động khá tốt trong trường hợp của tôi :) –

Các vấn đề liên quan