Als ich setVideoSource auf einem MediaRecorder Objekt aufrufen, es wirft ein Illegal. Ich habe diese geprüft:setVideoSource werfen Runtimeexception (war: Illegal)
(Android SDk 2.1) Getting error when I use setAudioSource and setVideoSource
Why following code shows setVideoSource failed exception setvideosource-failed-Ausnahme
MediaPlayer.prepare() throws IllegalStateException on Android L
Aber die Lösungen vorgeschlagen haben, entweder nicht unangemessen geholfen oder gewesen.
Der Code sieht so aus:
private void initRecorder() {
Log.i(TAG, "InitRecorder");
if(mRecorder == null) {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mRecorder.setVideoSize(640, 480);
mRecorder.setVideoFrameRate(30);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
CamcorderProfile cpHigh = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
mRecorder.setProfile(cpHigh);
mRecorder.setOutputFile("/sdcard/video.mp4");
mRecorder.setMaxDuration(50000); // 50 seconds
mRecorder.setMaxFileSize(5000000); // Approximately 5 megabytes
}
}
Ich bin sicher, dass setOutputFormat nicht vor setVideoSource aufgerufen wird, werden die richtigen Berechtigungen beantragt und erteilt werden, und es ist nur ein Videorecorder-Objekt in der Existenz.
Ich verwende Android SDK 23 auf einem Moto G mit Marshmallow installiert.
Hat jemand irgendwelche Ideen? Es wäre nützlich, mehr Informationen von der Ausnahme zu bekommen, aber irgendwie lässt Android Studio mich nicht dazu kommen. Ich denke, eine verwandte Frage wäre, wie kann ich eine Ausnahme an dem Punkt untersuchen, an dem sie geworfen wird? Ist es wahrscheinlich, dass mehr Informationen enthalten sind als nur die Tatsache, dass es sich um eine IllegalStateException handelt?
Die Ausnahme hat sich jetzt in eine RunTimeException geändert, was verwirrend ist. Ich habe alle Änderungen rückgängig gemacht, die ich daran vorgenommen habe. Daher sollte die IllegalStateException ausgelöst werden, aber die RunTimeException ist jetzt festgefahren. Hmm ...
Hier ist das Fehlerprotokoll:
06-28 13:10:14.989 30933-30933/com.dogtail W/ActivityThread: Application com.dogtail is waiting for the debugger on port 8100...
06-28 13:10:14.990 30933-30933/com.dogtail I/System.out: Sending WAIT chunk
06-28 13:10:15.142 30933-30939/com.dogtail I/art: Debugger is active
06-28 13:10:15.190 30933-30933/com.dogtail I/System.out: Debugger has connected
06-28 13:10:15.191 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:15.391 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:15.591 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:15.791 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:15.992 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:16.192 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:16.392 30933-30933/com.dogtail I/System.out: waiting for debugger to settle...
06-28 13:10:16.592 30933-30933/com.dogtail I/System.out: debugger has settled (1312)
06-28 13:10:16.636 30933-30933/com.dogtail W/System: ClassLoader referenced unknown path: /data/app/com.dogtail-1/lib/arm
06-28 13:10:17.599 30933-30933/com.dogtail W/System: ClassLoader referenced unknown path: /data/app/com.dogtail-1/lib/arm
06-28 13:10:17.681 30933-30933/com.dogtail I/APPLICATION: onCreate
06-28 13:10:17.934 30933-31061/com.dogtail I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/09/15, 6cbbf7d, I3193f6e94a
06-28 13:10:17.936 30933-31061/com.dogtail I/OpenGLRenderer: Initialized EGL, version 1.4
06-28 13:10:20.588 30933-30933/com.dogtail I/VideoRecorder: OnCreate
06-28 13:10:20.588 30933-30933/com.dogtail I/VideoRecorder: InitRecorder
06-28 13:10:20.598 30933-30933/com.dogtail E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dogtail, PID: 30933
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dogtail/com.dogtail.VideoRecorder}: java.lang.RuntimeException: setVideoSource failed.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.RuntimeException: setVideoSource failed.
at android.media.MediaRecorder.setVideoSource(Native Method)
at com.dogtail.VideoRecorder.initRecorder(VideoRecorder.java:45)
at com.dogtail.VideoRecorder.onCreate(VideoRecorder.java:30)
at android.app.Activity.performCreate(Activity.java:6245)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Bitte fügen Sie Ihr Fehlerprotokoll – USKMobility