我是 android 的新手,我正在尝试使用 android camera2 api 创建一个简单的录像机应用程序。通过遵循 youtube 上的教程,我设法在 TextureView 中预览相机并开始使用 MediaRecorder 进行捕捉,但我无法停止记录器并将视频保存到我的设备存储中。
此错误出现在 MediaRecorder.stop()
W/Adreno-EGLSUB: : dequeue native buffer failed: No such device, buffer=0x0, handle=0x0 W/Adreno-EGL: : EGL_BAD_SURFACE E/CameraDeviceGLThread-0: GL 渲染线程收到异常:java.lang.IllegalStateException: swapBuffers:EGL 错误:android.hardware.camera2.legacy.SurfaceTextureRenderer.swapBuffers(SurfaceTextureRenderer.java:537) 上 android.hardware.camera2.legacy.SurfaceTextureRenderer.checkEglError(SurfaceTextureRenderer.java:544) 上的 0x300d android.hardware.camera2 .legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:741) 在 android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:105) 在 android.os.Handler.dispatchMessage(Handler.java:98) 在 android.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 的回答,我在 recorder.stop() 之前包含了 try catch 然后我有一个新错误
--------- 崩溃开始 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.tingker.daryl.camera2, PID: 9014 Theme: 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.java:272) 在 com.tingker.daryl.camera2.MainActivity$2。 onClick(MainActivity.java:121) 在 android。