android-MediaPlayer如何停止播放多个声音

android-MediaPlayer如何停止播放多个声音,第1张

概述我有一个播放声音的按钮.当我多次按下按钮时,它会多次播放声音.这是oke,我想要这个.但是,当我单击“停止”按钮时,它必须停止当前正在播放的所有声音.我用了:while(mediaPlayer.isPlaying()){mediaPlayer.stop();}但它不起作用,声音不断播放.有人能帮我吗?这是我的完整代码:

我有一个播放声音的按钮.
当我多次按下按钮时,它会多次播放声音.
这是oke,我想要这个.
但是,当我单击“停止”按钮时,它必须停止当前正在播放的所有声音.
我用了:

   while (mediaPlayer.isPlaying()){mediaPlayer.stop();}

但它不起作用,声音不断播放.有人能帮我吗?
这是我的完整代码:

public class HelloSoundboard extends Activity {MediaPlayer mediaPlayer;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    button item1 = (button)findVIEwByID(R.ID.item1);    item1.setonClickListener(new VIEw.OnClickListener() {       public voID onClick(VIEw vIEw) {           mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.atyourservice);           mediaPlayer.start();       }    });    button stop = (button)findVIEwByID(R.ID.stop);    stop.setonClickListener(new VIEw.OnClickListener() {       public voID onClick(VIEw vIEw) {          while (mediaPlayer.isPlaying()){mediaPlayer.stop();}        //  mediaPlayer.stop();       }     }); }}

解决方法:

SoundPool是一个更好的选择.我强烈警告不要实例化多个MediaPlayer实例,因为大多数系统没有资源来生成许多并行活动实例.您会发现在许多设备上按5次以上按钮会导致基于内存的崩溃.

至于停止所有活动流,还没有内置功能,但是很容易以类似于现有代码的方式完成.附带说明一下,有一个autopause()方法,该方法暂停所有流,但是并没有真正结束它们的播放(因为方法名称暗示).这是管理音频流的简单示例:

//SoundPool initialization somewhereSoundPool pool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);//Load your sound effect into the poolint soundID = pool.load(...); //There are several versions of this, pick which fits your soundList<Integer> streams = new ArrayList<Integer>();button item1 = (button)findVIEwByID(R.ID.item1);item1.setonClickListener(new VIEw.OnClickListener() {   public voID onClick(VIEw vIEw) {       int streamID = pool.play(soundID, 1.0f, 1.0f, 1, 0, 1.0f);       streams.add(streamID);   }});button stop = (button)findVIEwByID(R.ID.stop);stop.setonClickListener(new VIEw.OnClickListener() {   public voID onClick(VIEw vIEw) {      for (Integer stream : streams) {          pool.stop(stream);      }      streams.clear();   }});

与MediaPlayer实例相比,管理streamID值列表要节省内存,您的用户将非常感谢您.另外,请注意,即使streamID不再有效,也可以调用SoundPool.stop(),因此无需检查现有的播放.

HTH

总结

以上是内存溢出为你收集整理的android-MediaPlayer如何停止播放多个声音全部内容,希望文章能够帮你解决android-MediaPlayer如何停止播放多个声音所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存