java - 随机音频按钮在设定的点击次数后停止工作

标签 java android

我遇到了一些问题,基本上我目前有一个按钮设置来播放各种声音,每次单击时都应该播放随机声音。这工作正常,但是在点击一定次数的按钮(等于我播放的声音文件的数量)后,它就停止播放了。很困惑为什么会发生这种情况以及解决它的方法。

private final int SOUND_CLIPS = 11;
private int mfile[] = new int[SOUND_CLIPS];
private Random rnd = new Random();
MediaPlayer mpButtonOne;

    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //I list all my sounds files here, removed for sake of saving space.        

    Button bButtonOne = (Button) findViewById(R.id.button1);
    bButtonOne.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mpButtonOne = MediaPlayer.create(myMenu.this, mfile[rnd.nextInt(SOUND_CLIPS)]);
            mpButtonOne.seekTo(0);
            mpButtonOne.start();
            }
    });
    }
 }

所有这些代码都做了我想要它做的事情,即在每次单击按钮时从剪辑列表中播放随机声音剪辑,但它似乎只执行一定的次数,然后停止播放任何内容。任何帮助将不胜感激。

最佳答案

您会随时发布 MediaPlayer 吗?您似乎每次点击都会创建一个新的,并且永远不会释放它。最终你可能会耗尽资源。

阅读有关释放 MediaPlayer 的部分:

http://developer.android.com/guide/topics/media/mediaplayer.html

本质上,您想要实现一个 onCompletionListener 并将其注册到您的 MediaPlayer,然后在那里进行清理:

mpButtonOne.setOnCompletionListener(new SoundCompletionListener());


    private class SoundCompletionListener implements OnCompletionListener{

    @Override
    public void onCompletion(MediaPlayer mp) {
        if(mp!=null){
            mp.release();
            mp=null;
        }   
    }
}

关于java - 随机音频按钮在设定的点击次数后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669028/

相关文章:

java - 如何在android中右对齐PreferenceActivity?

android - Kotlin 懒惰使用

android - Xamarin.forms 在 knox standard sdk 5.7 中激活 Kiosk 模式后启用状态栏

java - 通过 Spring Data 将 joda DateTime 插入 MongoDB 时出错

java - 在 JAVA 中替代 PHP 的关联数组

java - 查找JList的选中项并实时显示

java - Swagger Gateway 微服务聚合

android - 带有加载器框架的 MapActivity

android - 如何创建 View 部分不可见

android - 我如何在 AsyncTask 中从 onPostExecute 发回数据?