2016-09-26 6 views
5

私は自分のアプリケーションのシンプルなShake機能を開発しています。私は奇妙な問題に直面しました。 Honor5xで試してみると魅力的ですが、サムスンS5でそれをやろうとすると、それはあまりにも敏感です。加速度計が異なるデバイスで異なる動作をする可能性はありますか?そうであれば、coniditionsを変更する可能性はデバイス/加速度計の精度に依存しますか? はここシェイクイベントを検出するための私のコードです: Shakeイベントはさまざまなデバイスで異なった動作をします。Shake Eventカスタム実装

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

答えて

1

あなたは振れ検出のための広場ライブラリを試すことができます - seismic

これらのサンプルの3/4が、その後加速しているなら、彼らは一定期間内のサンプルを収集し、それは揺れがあったことを意味します。

+0

ありがとう、このライブラリはかなり良い私の場合の作品:) –

関連する問題