final MediaPlayer buttononclick = MediaPlayer.create(this, soundtrack);
ImageButton tempbutton = (ImageButton) findViewById(i);
tempbutton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
try {
if (buttononclick != null) {
buttononclick.start();
}
} catch (IllegalStateException e) {
e.printStackTrace();
}
break;
case MotionEvent.ACTION_UP:
buttononclick.stop();
return true;
}
return true;
}
});
我一直在研究按钮,当我点击按钮时可以发出声音,当我松开按钮时停止声音。如果我再次点击按钮,声音将从钢琴开始。但错误显示:状态64并开始调用状态0错误。
01-31 13:32:01.526 13888-13888/com.cambo.liyuan.projectcombo E/MediaPlayer﹕ start called in state 64
01-31 13:32:01.526 13888-13888/com.cambo.liyuan.projectcombo E/MediaPlayer﹕ error (-38, 0)
01-31 13:32:01.526 13888-13888/com.cambo.liyuan.projectcombo E/MediaPlayer﹕ Error (-38,0)
01-31 13:32:01.892 13888-13888/com.cambo.liyuan.projectcombo E/MediaPlayer﹕ stop called in state 0
01-31 13:32:01.892 13888-13888/com.cambo.liyuan.projectcombo E/MediaPlayer﹕ error (-38, 0)
01-31 13:32:01.892 13888-13888 / com.cambo.liyuan.projectcombo E / MediaPlayer:错误(-38,0)
我一直在查看媒体播放器的状态图,并尝试在stackflow上发布的几种方法使其正常工作,但是如果我在st之前检查isPlaying()或者在启动ect之前设置prepare(),它会一直存在错误或者非法状态错误。 ... 有人说在停止后将玩家分配为null但它是最终变量。 如果可以帮助我找出实现此功能的正确方法,我将非常感谢。 谢谢。
答案 0 :(得分:0)
在buttononclick.stop();
buttononclick.reset();
buttononclick.release();
你很高兴。