媒体播放器的问题

时间:2014-01-09 09:45:39

标签: android audio media-player

好吧,我正在为Android制作声音应用程序并且存在一个小问题。 当我点击另一个按钮播放另一个声音时,我让我的应用程序停止播放当前声音,因此它们不会在彼此之上播放。 对于前4位媒体播放器,它运作良好。但是在第5和第6媒体播放器上存在问题,我无法弄清楚是什么导致了它。 当我玩Mp6,我想播放例如Mp2时,它会先暂停它,所以我需要双击才能播放它。 继承我的代码

mp=MediaPlayer.create(this, R.raw.hekler);

ImageButton btn1 =(ImageButton)findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View v) {
    if (mp.isPlaying()){
        mp.pause();
        mp.seekTo(0);
    }
    if (mp2.isPlaying()){
        mp2.pause();
        mp2.seekTo(0);
    }
    if (mp3.isPlaying()){
        mp3.pause();
        mp3.seekTo(0);
    }
    if (mp4.isPlaying()){
        mp4.pause();
        mp4.seekTo(0);
    }
    if (mp5.isPlaying()){
        mp5.pause();
        mp5.seekTo(0);

    }
    if (mp6.isPlaying()){
        mp6.pause();
        mp6.seekTo(0);

    }
    else{
        mp.start();
    }
    }

});

 mp2=MediaPlayer.create(this, R.raw.famas);
 ImageButton btn2 = (ImageButton) findViewById(R.id.btn2);
 btn2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (mp.isPlaying()){
            mp.pause();
            mp.seekTo(0);
        }
        if (mp3.isPlaying()){
            mp3.pause();
            mp3.seekTo(0);
        }
        if (mp4.isPlaying()){
            mp4.pause();
            mp4.seekTo(0);
        }
        if (mp5.isPlaying()){
            mp5.pause();
            mp5.seekTo(0);

        }
        if (mp6.isPlaying()){
            mp6.pause();
            mp6.seekTo(0);
        }

        else{
            mp2.start();
        }
        }

 });
 mp3=MediaPlayer.create(this, R.raw.kalas);
 ImageButton btn3 = (ImageButton) findViewById(R.id.btn3);
 btn3.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (mp3.isPlaying()){
            mp3.pause();
            mp3.seekTo(0);
        }
        if (mp.isPlaying()){
            mp.pause();
            mp.seekTo(0);
        }
        if (mp2.isPlaying()){
            mp2.pause();
            mp2.seekTo(0);
        }

        if (mp4.isPlaying()){
            mp4.pause();
            mp4.seekTo(0);
        }
        if (mp5.isPlaying()){
            mp5.pause();
            mp5.seekTo(0);

        }
        if (mp6.isPlaying()){
            mp6.pause();
            mp6.seekTo(0);
        }

        else{
            mp3.start();
        }   
    }
});
 mp4=MediaPlayer.create(this, R.raw.emka);
 ImageButton btn4 = (ImageButton) findViewById(R.id.btn4);
 btn4.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (mp4.isPlaying()){
            mp4.pause();
            mp4.seekTo(0);
        }
        if (mp.isPlaying()){
            mp.pause();
            mp.seekTo(0);
        }
        if (mp2.isPlaying()){
            mp2.pause();
            mp2.seekTo(0);
        }
        if (mp3.isPlaying()){
            mp3.pause();
            mp3.seekTo(0);
        }
        if (mp5.isPlaying()){
            mp5.pause();
            mp5.seekTo(0);

        }
        if (mp6.isPlaying()){
            mp6.pause();
            mp6.seekTo(0);
        }


        else{
            mp4.start();
        }   
    }
});
 mp5=MediaPlayer.create(this, R.raw.uzi);
 ImageButton btn5 = (ImageButton) findViewById(R.id.btn5);
 btn5.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        if (mp.isPlaying()){
            mp.pause();
            mp.seekTo(0);
        }
        if (mp2.isPlaying()){
            mp2.pause();
            mp2.seekTo(0);
        }
        if (mp3.isPlaying()){
            mp3.pause();
            mp3.seekTo(0);
        }
        if (mp4.isPlaying()){
            mp4.pause();
            mp4.seekTo(0);
        }

        if (mp6.isPlaying()){
            mp6.pause();
            mp6.seekTo(0);
        }
        if (mp5.isPlaying()){
            mp5.pause();
            mp5.seekTo(0);
        }

        else{
            mp5.start();
        }   
    }
});
 mp6=MediaPlayer.create(this, R.raw.sporet); 
 ImageButton btn6 = (ImageButton) findViewById(R.id.btn6);
 btn6.setOnClickListener(new View.OnClickListener() {

     @Override
        public void onClick(View v) {

            if (mp.isPlaying()){
                mp.pause();
                mp.seekTo(0);
            }
            if (mp2.isPlaying()){
                mp2.pause();
                mp2.seekTo(0);
            }
            if (mp3.isPlaying()){
                mp3.pause();
                mp3.seekTo(0);
            }

            if (mp4.isPlaying()){
                mp4.pause();
                mp4.seekTo(0);
            }

            if (mp5.isPlaying()){
                mp5.pause();
                mp5.seekTo(0);
            }
            if (mp6.isPlaying()){
                mp6.pause();
                mp6.seekTo(0);
            }

            else{
                mp6.start();
            }   
        }
    });

}

1 个答案:

答案 0 :(得分:3)

这一次,问题在于您的订单检查媒体播放器和逻辑是否冲突

在mp2部分中使用此代码:

 mp2=MediaPlayer.create(this, R.raw.famas);
 ImageButton btn2 = (ImageButton) findViewById(R.id.btn2);
 btn2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

    if (mp.isPlaying()){
        mp.pause();
        mp.seekTo(0);
    }
    if (mp3.isPlaying()){
        mp3.pause();
        mp3.seekTo(0);
    }
    if (mp4.isPlaying()){
        mp4.pause();
        mp4.seekTo(0);
    }
    if (mp5.isPlaying()){
        mp5.pause();
        mp5.seekTo(0);

    }
    if (mp6.isPlaying()){
        mp6.pause();
        mp6.seekTo(0);
    }
     if (mp2.isPlaying()){ // Put this if branch just before else, likewise for other media players too.
        mp2.pause();
        mp2.seekTo(0);
    } 
    else{
        mp2.start();
    }
    }

});

之前检查mp2是否正在播放 。对其他人也一样。也就是说,只有在你检查了其他玩家之后,你应该检查你想要玩的当前玩家。

让我详细解释原因

 if (mp6.isPlaying()){
        mp6.pause();
        mp6.seekTo(0);
    }

    else{
        mp2.start();
    }
    }

你的代码在mp2部分的那部分中,您正在检查 mp6 是否正在播放并停止播放。由于如果保持良好,其他 将不会执行该回合。因此,您必须再次按 才能使mp2播放。按照我说的那样,即检查当前玩家将与相应的其他条件匹配,因此您的问题将得到解决。

编辑:在所有六个按钮点击事件中,您已检查mp6是否正在其他部分之前播放。这是一个合乎逻辑的缺陷。在else之前,您应该拥有对应的 mediaplayer对象的if。