Java MediaPlayer保持播放,即使按钮被禁用
我在stackoverflow上尝试了大多数可用的选项,你能帮我吗! 我有一个按钮,在单击时播放MediaPlayer实例,但问题是如果我在播放媒体时单击双击或单击,即使我设置了按钮,它也会播放两次。setEnable(false)和button.setClickable(false),下面是Main.java中的代码,我在xml android中设置了:onClick=“playMedia”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-这个循环虽
非常感谢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);
}