我在处理onCompletion函数时遇到问题。 我认为这是时间上的问题,但不完全了解。 这是东西:
我有几个按钮可以播放简短的原始文件。每次按下按钮时,按钮上的图像应从“播放”按钮变为“暂停”按钮。 声音结束后,应再次显示“播放图标”。
当我尝试此操作时,在开始播放和结束播放声音之前没有任何动作时,效果很好。图标更改正确
但是!当我在播放过程中按另一个按钮时,第一声音的暂停图标保持显示。
我现在尝试了几种方法,例如实现全局变量,例如一种信号量(但没有多线程)。
如果有必要,我可以尝试添加视频(但是我是新来的,所以我必须研究它的工作原理)
代码如下:
公共无效播放检查(MediaPlayer mMediaPlayer,ImageView btn){ btnPlaying = btn;
if (semAudio == false) {
semAudio = true;
mMediaPlayer.start();
btnPlaying.setImageResource(R.drawable.ic_pause_circle_outline_white_24dp);
mMediaPlayer
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
btnPlaying.setImageResource(R.drawable.ic_play_circle_outline_white_24dp);
semAudio = false;
};
});
}
}