Java MediaPlayer保持播放,即使按钮被禁用

Java MediaPlayer保持播放,即使按钮被禁用,java,android,media-player,Java,Android,Media Player,我在stackoverflow上尝试了大多数可用的选项,你能帮我吗! 我有一个按钮,在单击时播放MediaPlayer实例,但问题是如果我在播放媒体时单击双击或单击,即使我设置了按钮,它也会播放两次。setEnable(false)和button.setClickable(false),下面是Main.java中的代码,我在xml android中设置了:onClick=“playMedia” 非常感谢1-每个活动/服务都应该有一个(最好是static)MediaPlayer实例 2-这个循环虽

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


非常感谢

1-每个活动/服务都应该有一个(最好是
static
MediaPlayer
实例

2-这个循环
虽然(mp.isplay())
是非常糟糕的做法,但您只需要监听相应的事件

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

要解决代码问题,可以执行以下操作:

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

2-


问题是,我还有6个按钮,每个按钮都有自己的媒体可供单击时播放,我如何使onCompletion方法更通用。您将收到一个
MediaPlayer
的实例,以便为所有按钮注册相同的侦听器;但请注意,每个应用程序不应该有多个MediaPlayer
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));
}
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);
}