我正在做一个需要几个媒体播放器和onTouchListener的项目。我想要添加CheckBox和如果复选框,循环Mp。但我得到了这个错误,我不知道为什么。这是我的代码:
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked == true) {
mp1.setLooping(true);
mp2.setLooping(true);
mp3.setLooping(true);
mp4.setLooping(true);
mp5.setLooping(true);
mp6.setLooping(true);
mp7.setLooping(true);
mp8.setLooping(true);
mp9.setLooping(true);
mp10.setLooping(true);
mp11.setLooping(true);
mp12.setLooping(true);
mp13.setLooping(true);
mp14.setLooping(true);
mp15.setLooping(true);
Toast.makeText(MainClass.this, "Looping On",
Toast.LENGTH_SHORT).show();
} else {
mp1.setLooping(false);
mp2.setLooping(false);
mp3.setLooping(false);
mp4.setLooping(false);
mp5.setLooping(false);
mp6.setLooping(false);
mp7.setLooping(false);
mp8.setLooping(false);
mp9.setLooping(false);
mp10.setLooping(false);
mp11.setLooping(false);
mp12.setLooping(false);
mp13.setLooping(false);
mp14.setLooping(false);
mp15.setLooping(false);
Toast.makeText(MainClass.this, "Looping Off",
Toast.LENGTH_SHORT).show();
}
}
});和议员:
if (id == R.id.sound5) {
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
pressed = true;
mp5 = MediaPlayer.create(MainClass.this, R.raw.item5);
mp5.start();
sound5.setBackgroundResource(R.drawable.button_pressed);
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
pressed = false;
mp5.stop();
mp5.release();
sound5.setBackgroundResource(R.drawable.button_normal);
}
07-17 15:41:14.272: W/dalvikvm(16742): threadid=1: thread exiting with uncaught exception (group=0x41a138b0)
07-17 15:41:14.282: E/AndroidRuntime(16742): FATAL EXCEPTION: main
07-17 15:41:14.282: E/AndroidRuntime(16742): java.lang.IllegalStateException
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.media.MediaPlayer.setLooping(Native Method)
07-17 15:41:14.282: E/AndroidRuntime(16742): at soundmaniacs.com.MainClass$1.onCheckedChanged(MainClass.java:96)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.widget.CompoundButton.setChecked(CompoundButton.java:126)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.widget.CompoundButton.toggle(CompoundButton.java:87)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.widget.CompoundButton.performClick(CompoundButton.java:99)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.view.View$PerformClick.run(View.java:17903)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.os.Handler.handleCallback(Handler.java:730)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.os.Looper.loop(Looper.java:213)
07-17 15:41:14.282: E/AndroidRuntime(16742): at android.app.ActivityThread.main(ActivityThread.java:5225)
07-17 15:41:14.282: E/AndroidRuntime(16742): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 15:41:14.282: E/AndroidRuntime(16742): at java.lang.reflect.Method.invoke(Method.java:525)
07-17 15:41:14.282: E/AndroidRuntime(16742): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
07-17 15:41:14.282: E/AndroidRuntime(16742): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-17 15:41:14.282: E/AndroidRuntime(16742): at dalvik.system.NativeStart.main(Native Method)第96行是:
mp1.setLooping(true);有人能告诉我我做错了什么吗?难道是因为下院议员不玩吗?
发布于 2014-07-17 14:45:30
您得到一个IllegalStateException,因为您在MediaPlayer对象上调用release(),这使它处于结束状态。当一个MediaPlayer达到这种状态时,“不能再使用它了,也没有办法将它带回到任何其他状态。”这意味着调用播放机上的setLooping()将导致上述异常.避免这种情况的最简单方法是删除对release()的调用。如果您确实希望尽可能释放播放机,以使资源的使用量降到最低,那么您需要确保在调用setLooping()时,播放机是重新实例化的,并且处于有效状态。
引文来源于医生,给你。
https://stackoverflow.com/questions/24805437
复制相似问题