Java 如何让MediaPlayer等待其他命中请求?
有一个播放按钮(声音回顾),当我点击它播放,但当我点击几次,它播放倍增。 我想用其他主题的代码来阻止它,但没有帮助,有什么想法吗Java 如何让MediaPlayer等待其他命中请求?,java,android,Java,Android,有一个播放按钮(声音回顾),当我点击它播放,但当我点击几次,它播放倍增。 我想用其他主题的代码来阻止它,但没有帮助,有什么想法吗 img_scream1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mediaControl.isPlaying()==true){
img_scream1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mediaControl.isPlaying()==true){
mediaControl.pause();
}
else
{
mediaControl = MediaPlayer.create(java_sounds_scary.this, R.raw.hooray);
mediaControl.start();
}
}
});
将代码更改为以下内容:
boolean isPaused = true;
img_scream1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isPaused){
mediaControl = MediaPlayer.create(java_sounds_scary.this, R.raw.hooray);
mediaControl.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
}
});
mediaControl.start();
isPaused = false;
}
else
{
mediaControl.pause();
isPaused = true;
}
}
});
不要每次都创建
mediaControl
实例(,这会使歌曲从一开始就加载)。相反,您可以将mediaControl
初始化为null
,并在其为null
mediaControl =null;
img_scream1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View view){
if (mediaControl == null) {
mediaControl = MediaPlayer.create(java_sounds_scary.this, R.raw.hooray);
}
if (mediaControl.isPlaying() == true) {
mediaControl.pause();
} else {
mediaControl.start();
}
}
});
它成功了一半。当用户点击播放按钮时,将等待结束。若用户再次点击该按钮,将不得不等待结束。我的意思是,我认为还需要setOnCompleteListener。当我不知道您在代码中做了什么时,我就无能为力了,而且我认为
setOnCompletionListener
不会解决您当前的问题。顺便说一句,我用CompletionListener更新了我的答案。