gpt4 book ai didi

java - Android - 暂停执行直到声音播放

转载 作者:行者123 更新时间:2023-11-30 03:16:23 25 4
gpt4 key购买 nike

我正在为 Android 创建一个 Simon Says 应用程序。游戏有四个板 block :红色、蓝色、绿色和黄色。当游戏开始时,程序会在 1 到 4 之间随机选择一个数(对应四种颜色)并将其存储在一个字符串中。每轮游戏都会在字符串中添加一个新数字。然后程序应该播放字符串中的第一个字符并播放独特的声音并使相应按钮的颜色变亮约 1 秒,然后再继续下一个字符。每次玩家正确输入模式时,它都会在字符串中添加另一个数字。

我的问题是这样的:我找到了在声音持续期间保持按钮变亮的方法,但所有这些方法都会导致程序在声音完成播放所需的时间内执行整个 for 循环.这是我的代码:

case R.id.new_game_button:
if (event.getAction() == MotionEvent.ACTION_DOWN) {
combination += randomGenerator();

for (int i=0; i < combination.length(); i++) {
if (combination.charAt(i) == 49) {
findViewById(R.id.red_button).setBackgroundResource(color.red_pressed);
red_sound.start();

red_sound.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
findViewById(R.id.red_button).setBackgroundResource(color.red);

}
});
}
}
}
break;

我已经尝试过 Thread.sleep()、OnCompletionListeners、postDelayed Handlers 和 CountDownTimers,但我无法让它们中的任何一个执行我需要它们执行的操作。我该如何在播放声音时停止执行 for 循环?

最佳答案

你真的需要暂停代码的执行吗?你能跟踪你在哪个数字上,并在 onCompletion() 回调期间开始下一次迭代吗?

关于java - Android - 暂停执行直到声音播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20038480/

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