Ich habe den folgenden Code:setOutputFormat in einem ungültigen Zustand genannt: 4 (wo und warum)
Log.i("xx","A");
media_recorder = new MediaRecorder();
Log.i("xx","B");
media_recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i("xx","C");
media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
Log.i("xx","D");
media_recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
Log.i("xx","E");
media_recorder.setVideoSize(320, 240);
Log.i("xx","F");
media_recorder.setVideoFrameRate(15);
Log.i("xx","G");
CamcorderProfile profile = CamcorderProfile.get(CameraInfo.CAMERA_FACING_FRONT,CamcorderProfile.QUALITY_LOW);
Log.i("xx","H");
media_recorder.setProfile(profile);
Log.i("xx","I");
media_recorder.setOutputFile(fname);
Wenn der Code ausgeführt wird, sehe ich die folgenden in meinen Logs;
02-07 16:12:47.628: I/xx(15436): A
02-07 16:12:47.628: I/xx(15436): B
02-07 16:12:47.638: I/xx(15436): C
02-07 16:12:47.638: I/xx(15436): D
02-07 16:12:47.638: I/xx(15436): E
02-07 16:12:47.638: I/xx(15436): F
02-07 16:12:47.638: I/xx(15436): G
02-07 16:12:47.638: I/xx(15436): H
02-07 16:12:47.638: E/MediaRecorder(15436): setOutputFormat called in an invalid state: 4
Das hat mich verwirrt, weil der Aufruf von setOutputFormat
zwischen „C“ und „D“, aber der Bericht des Fehlers vorgenommen wurde, erscheint sofort nach dem H zu sein (nie „I“ zu erreichen). So, jetzt weiß ich nicht, was den Fehler verursacht, und ich bin verwirrt darüber, wo der Fehler auftritt.
EDIT: Ich trat nur durch den Code im Debugger - und sicher genug der Fehler auftritt, während der Anruf setProfile (Profil) ... so scheint es, dass die zu setOutputFormat gemacht Anruf (zwischen „C“ & "D") muss in Ordnung gewesen sein, aber dann muss setProfile selbst einen zweiten Aufruf von setOutputFormat machen, was dann fehlschlägt ... ist das, was los ist?
EDIT: Und was bedeutet ungültiger Zustand 4 eigentlich? Gibt es irgendwo eine Liste, die dir die Bedeutung jeder möglichen ungültigen Zustandsnummer 1,2,3,4 ... etc verrät?