在android中停止几个媒体播放器
Posted
技术标签:
【中文标题】在android中停止几个媒体播放器【英文标题】:Stopping several Media Players in 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();
);
问题是有时它可以工作,有时音频仍在播放。
我已经搜索并发现了类似的问题,但没有解决方案
谁能告诉我停止所有播放的安全方法?
非常感谢您。
问候
【问题讨论】:
【参考方案1】:您只能执行一个 MediaPlayer 实例并在 onCompletion 设置不同的音频源
【讨论】:
但是要启动一个新的音频源,必须启动一个新的 MediaPlayer,不是吗?我想我不明白你的回答。请问你有例子吗?谢谢 @MiguelC Paolino 是正确的。每次你想播放一个新的声音(我假设它是声音)时,你应该在同一个MediaPlayer
上通过reset()
、setDataSource(...)
、prepare()
、start()
序列。或者最多,在两个之间交替。如果声音很短,您可能也应该查看SoundPool
。它可能更适合您的情况。以上是关于在android中停止几个媒体播放器的主要内容,如果未能解决你的问题,请参考以下文章
应用程序关闭后,用于媒体控件的 Android 广播接收器停止工作