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();

        ......
    }

Проверьте эту ссылку. Вы можете поймать исключение, если остановите рекордер сразу после его запуска.

Другие вопросы по тегам