Android camera2basic在拍照后崩溃

Android camera2basic在拍照后崩溃,android,camera,android-camera,android-5.0-lollipop,Android,Camera,Android Camera,Android 5.0 Lollipop,我正在使用Android 5.0.1 MotoX第二代上的Camera2基本示例,但我有一些问题 首先,当我点击图片按钮时,示例代码显然拍摄了2张图像 然后我得到一个setPreviewTexture失败错误 有时相机预览会重新启动,有时会崩溃,有时会冻结 以下是一些logcat输出: 06-18 18:49:00.777: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is n

我正在使用Android 5.0.1 MotoX第二代上的Camera2基本示例,但我有一些问题

首先,当我点击图片按钮时,示例代码显然拍摄了2张图像

然后我得到一个setPreviewTexture失败错误

有时相机预览会重新启动,有时会崩溃,有时会冻结

以下是一些logcat输出:

06-18 18:49:00.777: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
06-18 18:49:00.777: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.778: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.792: D/LegacyFocusStateMapper(17418): onAutoFocusMoving - ignoring move callbacks from old af run1
06-18 18:49:00.803: I/RequestQueue(17418): Repeating capture request cancelled.
06-18 18:49:00.805: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
06-18 18:49:00.806: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.806: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.826: I/MESSAGE_WRITE(17418): Message write: { when=-2ms what=3 arg1=-1 arg2=-1 obj=[B@ace89d5 target=com.{PACKAGE_NAME}.bluetooth.BluetoothManager$2 }
06-18 18:49:00.833: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
06-18 18:49:00.833: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.833: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.961: I/RequestThread-0(17418): Received jpeg.
06-18 18:49:00.961: I/RequestThread-0(17418): Producing jpeg buffer...
06-18 18:49:00.965: D/ImageReader_JNI(17418): ImageReader_imageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
06-18 18:49:00.977: I/Completed(17418): onCaptureCompleted Saved: /storage/emulated/0/Android/data/com.{PACKAGE_NAME}/files/Pictures/pic.jpg
06-18 18:49:00.978: I/RequestQueue(17418): Repeating capture request set.
06-18 18:49:00.979: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
06-18 18:49:00.979: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:00.979: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:01.092: E/BufferQueueProducer(17418): [unnamed-17418-30] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
06-18 18:49:01.094: I/RequestThread-0(17418): Received jpeg.
06-18 18:49:01.094: I/RequestThread-0(17418): Producing jpeg buffer...
06-18 18:49:01.099: D/ImageReader_JNI(17418): ImageReader_imageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
06-18 18:49:01.109: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
06-18 18:49:01.109: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:01.109: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:01.110: I/Completed(17418): onCaptureCompleted Saved: /storage/emulated/0/Android/data/com.{PACKAGE_NAME}/files/Pictures/pic.jpg
06-18 18:49:01.110: I/RequestQueue(17418): Repeating capture request cancelled.
06-18 18:49:01.110: I/RequestQueue(17418): Repeating capture request set.
06-18 18:49:01.121: E/BufferQueueProducer(17418): [unnamed-17418-30] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
06-18 18:49:01.129: E/RequestThread-0(17418): Received device exception: 
06-18 18:49:01.129: E/RequestThread-0(17418): java.io.IOException: setPreviewTexture failed
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.hardware.Camera.setPreviewTexture(Native Method)
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.hardware.camera2.legacy.RequestThreadManager.doPreviewCapture(RequestThreadManager.java:315)
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.hardware.camera2.legacy.RequestThreadManager.access$1600(RequestThreadManager.java:61)
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.hardware.camera2.legacy.RequestThreadManager$5.handleMessage(RequestThreadManager.java:756)
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.os.Handler.dispatchMessage(Handler.java:98)
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.os.Looper.loop(Looper.java:135)
06-18 18:49:01.129: E/RequestThread-0(17418):   at android.os.HandlerThread.run(HandlerThread.java:61)
06-18 18:49:01.129: I/CameraDeviceState(17418): Legacy camera service transitioning to state ERROR
06-18 18:49:01.133: W/LegacyRequestMapper(17418): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
06-18 18:49:01.133: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:01.133: W/LegacyRequestMapper(17418): Only received metering rectangles with weight 0.
06-18 18:49:01.138: E/RequestThread-0(17418): Received device exception: 
06-18 18:49:01.138: E/RequestThread-0(17418): java.io.IOException: setPreviewTexture failed
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.hardware.Camera.setPreviewTexture(Native Method)
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.hardware.camera2.legacy.RequestThreadManager.doPreviewCapture(RequestThreadManager.java:315)
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.hardware.camera2.legacy.RequestThreadManager.access$1600(RequestThreadManager.java:61)
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.hardware.camera2.legacy.RequestThreadManager$5.handleMessage(RequestThreadManager.java:756)
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.os.Handler.dispatchMessage(Handler.java:98)
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.os.Looper.loop(Looper.java:135)
06-18 18:49:01.138: E/RequestThread-0(17418):   at android.os.HandlerThread.run(HandlerThread.java:61)
06-18 18:49:01.197: I/art(17418): Background partial concurrent mark sweep GC freed 349615(13MB) AllocSpace objects, 3(1418KB) LOS objects, 39% free, 21MB/35MB, paused 736us total 103.977ms
06-18 18:49:04.139: E/RequestThread-0(17418): Timed out while queueing cleanup request.
06-18 18:49:04.139: W/RequestHolder(17418): Capture failed for request: 4
06-18 18:49:04.139: I/CameraDeviceState(17418): Legacy camera service transitioning to state CAPTURING
06-18 18:49:04.140: E/CameraDeviceState(17418): Cannot call capture while in state: 0
06-18 18:49:04.140: W/RequestHolder(17418): Capture failed for request: 6
06-18 18:49:04.140: I/CameraDeviceState(17418): Legacy camera service transitioning to state CAPTURING
06-18 18:49:04.140: E/CameraDeviceState(17418): Cannot call capture while in state: 0
06-18 18:49:04.471: W/CameraCaptureSession(17418): Session 0: The camera device was already closed: 
06-18 18:49:04.471: W/CameraCaptureSession(17418): java.lang.IllegalStateException: CameraDevice was already closed
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:1482)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:677)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:328)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at com.{PACKAGE_NAME}.Camera2BasicFragment.closeCamera(Camera2BasicFragment.java:631)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at com.{PACKAGE_NAME}.Camera2BasicFragment.onPause(Camera2BasicFragment.java:509)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.Fragment.performPause(Fragment.java:2212)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:939)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1049)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:1885)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.Activity.performPause(Activity.java:6062)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1317)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3292)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3259)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3234)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.ActivityThread.access$1000(ActivityThread.java:148)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.os.Handler.dispatchMessage(Handler.java:102)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.os.Looper.loop(Looper.java:135)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at android.app.ActivityThread.main(ActivityThread.java:5312)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at java.lang.reflect.Method.invoke(Native Method)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at java.lang.reflect.Method.invoke(Method.java:372)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
06-18 18:49:04.471: W/CameraCaptureSession(17418):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)

我如何克服这个问题???

您解决了这个问题吗?我现在有了同样的一个((不是真的,我还在做它,但是为了项目的目的,我换了一个不推荐的摄像头API,虽然不是最好的方式,但它可以工作。