gpt4 book ai didi

java - 如何在翻转手机时更改神奇8球答案?

转载 作者:行者123 更新时间:2023-12-02 09:31:48 24 4
gpt4 key购买 nike

我需要创建一个神奇的 8 球应用程序,当手机翻转时它会改变答案。因此,当android加速度计的z值小于9时,我需要改变一次答案。

我的问题是,由于当手机保持在 if 语句值内的稳定位置时,加速度计值不断变化,因此循环将继续执行。

public class MainActivity extends Activity implements SensorEventListener {
private float xvalue, yvalue, zvalue;

private SensorManager sensorManager;
private Sensor accelerometer;

private float z;


TextView answer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
zvalue = sensorEvent.values[2];

if(zvalue > 9 & zvalue < 9)
printAnswer();

}

@Override
public void onAccuracyChanged(Sensor sensor, int i) {}

/** Called when the user taps the Send button */
public void sendMessage(View view) {
printAnswer();

}

public void printAnswer(){
answer = (TextView) findViewById(R.id.answer);
final String[] answers = {"It is certain", "It is decidedly so", "Without a doubt", "Yes definitely", "You may rely on it", "As I see it yes", "Most likely", "Outlook good", "Yes",
"Signs point to yes", "Reply hazy try again", "Ask again later", "Better not tell you now", "Cannot predict now", "Concentrate and ask again",
"Don't count on it", "My reply is no", "My sources say no", "Outlook not so good", "Very doubtful"};

Random r = new Random();
int randomNum = r.nextInt(answers.length);

answer.setText(answers[randomNum]);
}
}

最佳答案

有很多不同的方法可以实现这一点。我在这里提到的两种方法都属于“去抖动”类别,即平滑粗糙输入的过程。

您可以保留一个 prevZ 变量,该变量始终在 onSensorChanged 末尾设置。这将帮助您了解 z 如何随时间变化。如果 prevZ 小于阈值并且当前 z 高于阈值,则您刚刚识别出翻转!如果两个 Z 都低于阈值或高于阈值,则不执行任何操作。在这种情况下,最好有两个阈值:较高的阈值用于初始化翻转,较低的阈值用于何时指示翻转结束。否则奇怪的场景可能会在你的阈值附近来回跳跃,而你仍然会处于这种情况。

可能更好的方法是保留您上次注意到翻转的时间戳。当发生新的翻转时,检查距离上次翻转已经过去了多长时间。如果距离最后一次翻转还不到 1 秒,则无需执行任何操作。超过一秒?再次翻转并更新上次翻转的时间戳。您可以调整 1 秒的间隔,直到找到一个足够长的延迟,这样您就不会经常显示财富,但又足够短,这样人们就不会因为自己的翻转未被识别而感到被欺骗(例如 10 秒是可能太长了)。

关于java - 如何在翻转手机时更改神奇8球答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com