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();
}
}
}
ありがとう、このライブラリはかなり良い私の場合の作品:) –