在android中停止几个媒体播放器

时间:2013-11-02 18:23:41

标签: android android-mediaplayer

我在同一个活动中有几个MediaPlayers。它的工作原理如下:

MediaPlayer mpOne开始播放,如果变量值为“yes”,MediaPlayer mptwo开始播放,否则mpThree开始播放。
当音频结束时,启动另一个相同的过程 这是我的代码:

MediaPlayer mpOne,mpTwo,mpThree,mpFour,mpFive

...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.morning);

        mpOne= MediaPlayer.create(this, R.raw.one);
        mphora.setLooping(false);
mpTwo= MediaPlayer.create(this, R.raw.two);
        mphora.setLooping(false);
mpThree= MediaPlayer.create(this, R.raw.three);
        mphora.setLooping(false);
mpFour= MediaPlayer.create(this, R.raw.four);
        mphora.setLooping(false);
mpFive= MediaPlayer.create(this, R.raw.five);
        mphora.setLooping(false);

    mpOne.start();
        mpOne.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
                if (variable.equals("yes"){
                        mpTwo.start();
            } else {
            mpThree.start();    
            }
        });

        mpTwo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
            mpFour.start();
        });

        mpThree.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
            mpFour.start();
        });

        mpFour.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
            // same proccess
        });

}

我的问题是当我想要停止所有音频时。 目前我有一个按钮,可执行以下操作:

stop.setOnClickListener(new View.OnClickListener(){ 
                public void onClick(View view){ 

.setOnClickListener(new View.OnClickListener(){ 
                public void onClick(View view){ 

                    if(mpOne.isPlaying()){mpOne.stop();mpOne.release();}
                    else if(mpTwo.isPlaying()){mpTwo.stop();mpTwo.release();}
                    else if(mpThree.isPlaying()){mpThree.stop();mpThree.release();}
                    else if(mpFour.isPlaying()){mpFour.stop();mpFour.release();}
                    else if(mpFive.isPlaying()){mpFive.stop();mpFive.release();}
                }
                }
        });

问题在于它有时会起作用,有时音频仍在播放。

我搜索并发现了类似的问题,但不是解决方案

有谁能告诉我一种安全的方法来停止所有播放?

非常感谢你。

问候

1 个答案:

答案 0 :(得分:1)

您只能执行一个MediaPlayer实例,并且在onCompletion上设置不同的音频源