From 15bf2ee1938324c877903f722bae9a9776de4e2c Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 8 Aug 2018 23:54:58 +0200 Subject: [PATCH] couple updates related to capturing images with Camera2 --- app/build.gradle | 2 +- .../camera/views/PreviewCameraTwo.kt | 23 ++++++++----------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d6b092e7..550bd883 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,7 +45,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:4.6.3' + implementation 'com.simplemobiletools:commons:4.6.4' debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion" releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion" diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt index 494a3a45..e4bb7276 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt @@ -283,9 +283,11 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader -> try { - val buffer = reader.acquireNextImage().planes.first().buffer + val image = reader.acquireNextImage() + val buffer = image.planes.first().buffer val bytes = ByteArray(buffer.remaining()) buffer.get(bytes) + image.close() PhotoProcessor(mActivity, mTargetUri, mRotationAtCapture, mSensorOrientation, mUseFrontCamera, mIsImageCaptureIntent).execute(bytes) } catch (e: Exception) { } @@ -338,7 +340,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie mMediaRecorder = MediaRecorder() } else { mImageReader = ImageReader.newInstance(currentResolution.width, currentResolution.height, ImageFormat.JPEG, 2) - mImageReader!!.setOnImageAvailableListener(imageAvailableListener, mBackgroundHandler) + mImageReader!!.setOnImageAvailableListener(imageAvailableListener, null) mMediaRecorder = null } @@ -595,7 +597,10 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie } val captureCallback = object : CameraCaptureSession.CaptureCallback() { - override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) {} + override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { + unlockFocus() + mActivity.toggleBottomButtons(false) + } override fun onCaptureFailed(session: CameraCaptureSession?, request: CaptureRequest?, failure: CaptureFailure?) { super.onCaptureFailed(session, request, failure) @@ -796,7 +801,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie if (mLastFocusX != 0f && mLastFocusY != 0f) { focusArea(mLastFocusX, mLastFocusY, false) } - } catch (e: Exception) { + } catch (e: CameraAccessException) { } finally { mCameraState = STATE_PREVIEW } @@ -1033,15 +1038,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie override fun resumeCamera() = true - override fun imageSaved() { - mImageReader?.close() - mActivity.toggleBottomButtons(false) - if (shouldLockFocus()) { - unlockFocus() - } else { - resetPreviewSession() - } - } + override fun imageSaved() {} override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {} }