android - Why show error IllegalStateException when setting MediaRecorder? -
my code setting mediarecorder, show error @ row set quality
mmediarecorder = new mediarecorder(); // step 1: unlock , set camera mediarecorder mcamera.stoppreview(); mcamera.unlock(); mmediarecorder.setcamera(mcamera); mmediarecorder.setaudiosource(mediarecorder.audiosource.camcorder); mmediarecorder.setvideosource(mediarecorder.videosource.default); mmediarecorder.setoutputformat(mediarecorder.outputformat.mpeg_4); mmediarecorder.setprofile(camcorderprofile .get(camcorderprofile.quality_high)); mmediarecorder.setaudioencoder(mediarecorder.audioencoder.aac); mmediarecorder.setvideoencoder(mediarecorder.videoencoder.mpeg_4_sp); // step 4: set output file mmediarecorder.setoutputfile(getoutputmediafile(media_type_video).tostring()); // step 5: set preview output mmediarecorder.setpreviewdisplay(mpreview.getholder().getsurface()); // step 6: prepare configured mediarecorder try { mmediarecorder.prepare(); log.d("debug", "illegalstateexception preparing mediarecorder: " + e.getmessage()); releasemediarecorder(); return false; } catch (ioexception e) { log.d("debug", "ioexception preparing mediarecorder: " + e.getmessage()); releasemediarecorder(); return false; }
ex:
java.lang.illegalstateexception
stacktrace:
java.lang.illegalstateexception @ android.media.mediarecorder.setoutputformat(native method) @ android.media.mediarecorder.setprofile(mediarecorder.java:366) @ jp.osaka.e028.preparevideorecorder(e028.java:1441) @ jp.osaka.e028.access$16(e028.java:1403) @ jp.osaka.e028$6.onclick(e028.java:344) @ android.view.view.performclick(view.java:3517) @ android.view.view$performclick.run(view.java:14155) @ android.os.handler.handlecallback(handler.java:605) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4503) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:809) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:576) @ dalvik.system.nativestart.main(native method)
why show error illegalstateexception when setting mediarecorder?
actually mmediarecorder.setoutputformat()
twice: 1 time explicitly , afterwards mmediarecorder.setprofile()
tries again can see in stacktrace.
the android media recorder has low robustness things that.
so remove line says
mmediarecorder.setoutputformat();
and error should go away. , btw. remove
mmediarecorder.setaudioencoder(mediarecorder.audioencoder.aac); mmediarecorder.setvideoencoder(mediarecorder.videoencoder.mpeg_4_sp);
which mmediarecorder.setprofile()
has done well.
Comments
Post a Comment