Java ShakeDetector触发多次-如何获取最后的输出?

问题描述 投票:1回答:1

因此,我编写了一个用于掷骰子的Android应用,具有可调骰子(D4-100),金额和奖金。当我按下滚动按钮时,一切正常,但我也希望它对摇动手机做出反应。问题是,当我摇动一次时,它会显示结果,但是如果我摇动太久,显示的结果将被明显覆盖-我不希望用户继续摇动直到结果被接受!是否有某种方法可以收集所有ShakeEvent,并仅触发最后一个发生的事件?以下是与这些ShakeEvent相关的onCreate里面的内容:

SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
ShakeDetector shakeDetector = new ShakeDetector(this);
shakeDetector.start(sensorManager);

这是“ hearShake()”方法(来自Square,Inc.的地震方法:]]

@Override
public void hearShake() {
  Toast.makeText(this, "Rolling...", Toast.LENGTH_SHORT).show();
  Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   v.vibrate(VibrationEffect.createOneShot(250,VibrationEffect.DEFAULT_AMPLITUDE));
  } else {
   v.vibrate(250);
  }
  rollButton.performClick();
}

如果您想查看更多或所有代码,请告诉我!预先感谢您的帮助!

因此,我编写了一个用于掷骰子的Android应用,具有可调骰子(D4-100),金额和奖金。当我按下滚动按钮时,一切正常,但我也希望它对摇动手机做出反应。 ...

java android dice shake sensors
1个回答
0
投票

一种解决方法是记录抖动的记录时间,并忽略在接下来的3秒钟内发生的任何其他抖动。这样,他们就必须做很长时间的摇动才能使它计为多个。

© www.soinside.com 2019 - 2024. All rights reserved.