【问题标题】:Stopping several Media Players in android在android中停止几个媒体播放器
【发布时间】:2013-11-02 18:23:40
【问题描述】:

我在同一个活动中有多个 MediaPlayer。它是这样工作的:

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();}
                }
                }
        });

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

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

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

非常感谢您。

问候

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:

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

    【讨论】:

    • 但是要启动一个新的音频源,必须启动一个新的 MediaPlayer,不是吗?我想我不明白你的回答。请问你有例子吗?谢谢
    • @MiguelC Paolino 是正确的。每次你想播放一个新的声音(我假设它是声音)时,你应该在同一个MediaPlayer 上通过reset()setDataSource(...)prepare()start() 序列。或者最多,在两个之间交替。如果声音很短,您可能也应该查看SoundPool。它可能更适合您的情况。
    猜你喜欢
    • 2016-09-17
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    相关资源
    最近更新 更多