MediaPlayer继续播放甚至禁用按钮

时间:2013-02-18 04:33:06

标签: java android media-player

我尝试了stackoverflow上的大多数选项,请你帮帮我吧! 我有一个单击时播放MediaPlayer实例的按钮,但如果我在播放媒体时点击双击或点击它会发生两次问题,即使我设置了button.setEnable(false)和button.setClickable(false),下面是Main.java中的代码,我在xml中设置了android:onClick =“playMedia”

MediaPlayer playMedia;
private void playGeneric(MediaPlayer mp, int name, Button button) {
    button.setEnabled(false);
    button.setClickable(false);
    mp = MediaPlayer.create(this, name);
    mp.start();
    while (mp.isPlaying()) {
    }
    mp.stop();
    mp.release();
    mp = null;
    button.setEnabled(false);
    button.setClickable(false);

}

// play the Media
public void playMedia(View button) {
    playGeneric(Media, R.raw.Media, (Button) findViewById(R.id.button1));
}

非常感谢

1 个答案:

答案 0 :(得分:0)

1-您的活动/服务应该有一个(最好是staticMediaPlayer个实例

2-这个循环while (mp.isPlaying())是非常糟糕的做法,你只需要听取相应的事件

3-在创建新的MediaPlayer实例之前,您必须检查当前的实例是否为null然后停止并释放它

要解决您的代码,您可以执行以下操作:

1-让您的类实现OnCompletionListener并覆盖方法onCompletion(MediaPlayer mp),以便在MediaPlayer完成后通知并清理资源(但您需要在活动时清除它) /服务被破坏)

2-

static MediaPlayer playMedia;

private void playGeneric(MediaPlayer mp, int name, Button button) {
    button.setEnabled(false);
    button.setClickable(false);
    if(mp !=null){
      mp.stop();
      mp.release();
    }
    mp = MediaPlayer.create(this, name);
    mp.start();

}

@Override
public void onCompletion(MediaPlayer mp) {
    mp.release();
    playMedia = null;
    button.setEnabled(true);
    button.setClickable(true);
}