我尝试了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));
}
非常感谢
答案 0 :(得分:0)
1-您的活动/服务应该有一个(最好是static
)MediaPlayer
个实例
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);
}