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更新了我的答案。