设置的点击次数后,随机音频按钮停止工作

时间:2013-09-07 02:18:29

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

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

1 个答案:

答案 0 :(得分:1)

您是否随时发布了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;
        }   
    }
}