0

我在同一个活动中有几个 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();}
                }
                }
        });

问题是有时它可以工作,有时音频仍在播放。

我已经搜索并发现了类似的问题,但没有解决方案

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

非常感谢您提前。

问候

4

1 回答 1

1

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

于 2013-11-02T19:41:04.697 回答