Android Camera2 API API MediaRecorder Stop() ошибка
Я очень новичок в Android, и я пытаюсь создать простое приложение для записи видео, используя Android Camera2 API. Следуя инструкциям на YouTube, мне удалось предварительно просмотреть камеру в TextureView и начать захват с помощью MediaRecorder, но у меня возникли проблемы с остановкой рекордера и сохранением видео в моем устройстве хранения.
Эта ошибка появляется на MediaRecorder.stop()
W / Adreno-EGLSUB:: сбой собственного буфера в очереди: нет такого устройства, буфер =0x0, дескриптор = 0x0. W/Adreno-EGL:: EGL_BAD_SURFACE E/CameraDeviceGLThread-0: Получено исключение в потоке рендеринга GL: java.lang.IllegalStateException: sw apBuffers: ошибка EGL: 0x300d в android.hardware.camera2.legacy.SurfaceTextureRenderer.checkEglError(SurfaceTextureRenderer.java:544) в android.hardware.camera2.legacy.SurfaceTextureRenderer.ware.exware.ware.legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:741) в android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:105) в android.os.Handler.dispatchMatch.os.Looper.loop(Looper.java:148) на android.os.HandlerThread.run(HandlerThread.java:61) I/CameraDeviceState: устаревшая служба камеры переходит в состояние ERROR
Я использую устройство Android 6.0 api23 для запуска приложения.
Спасибо
РЕДАКТИРОВАТЬ: вот функция stopRecording.
try{
previewSession.stopRepeating();
previewSession.abortCaptures();
}catch(CameraAccessException e){
e.printStackTrace();
}
recorder.stop();
recorder.reset();
isRecording = false;
Toast.makeText(getApplicationContext(),"Recording Stopped",Toast.LENGTH_SHORT).show();
... основываясь на ответе @NewOne, я включил перехват попытки до рекордера.stop(), тогда у меня новая ошибка
--------- начало сбоя E/AndroidRuntime: FATAL EXCEPTION: main Процесс: com.tingker.daryl.camera2, PID: 9014 Тема: themes:{default=overlay:com.cyngn.hexo, iconPack:com.cyngn.hexo, fontPkg:com.cyngn.hexo, com.android.systemui=overlay:com.cyngn.hexo, com.android.systemui.navbar=overlay:com.cyngn.hexo} java.lang.IllegalStateException: Сессия была закрыта; дальнейшие изменения незаконны. на android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:606) на android.hardware.camera2.impl.CameraCaptureSessionImpl.stopRepeating(CameraCaptureSessionImpl.jain.A.onClick(MainActivity.java:121) в android.view.View.performClick(View.java:5204) в android.view.View$PerformClick.run(View.java:21158) в android.os.Handler.handleCallback(обработчик)..java:739) на android.os.Handler.dispatchMessage(Handler.java:95) на android.os.Looper.loop(Looper.java:148) на android.app.ActivityThread.main(ActivityThread.java:5461) на java.lang.reflect.Method.invoke(собственный метод) на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) на com.android.internal.os.ZygoteInit.main(ZygoteInit. Java:616)
1 ответ
Я не знаю, в настоящее время, что есть в вашем методе остановки записи. Если бы вы могли поделиться, может быть, я могу помочь лучше. В любом случае, прежде чем вызывать метод stop, убедитесь, что у вас есть строки кода ниже.
private void stopRecording()) {
.....
try {
preview.stopRepeating();
preview.abortCaptures();
} catch (CameraAccessException e) {
e.printStackTrace();
}
try{
mediaRecorder.stop();
}catch(RuntimeException e){
//handle the exception
}
mediaRecorder.reset();
......
}
Проверьте эту ссылку. Вы можете поймать исключение, если остановите рекордер сразу после его запуска.