diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt index f3190670..0fccad1f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt @@ -69,6 +69,7 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave override fun onResume() { super.onResume() if (hasStorageAndCameraPermissions()) { + mPreview?.onResumed() resumeCameraItems() setupPreviewImage(mIsInPhotoMode) scheduleFadeOut() @@ -84,7 +85,6 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave if (hasStorageAndCameraPermissions()) { mOrientationEventListener.enable() } - mPreview?.onResumed() } override fun onPause() { 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 336afb91..ea48255a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt @@ -76,11 +76,8 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie } override fun onPaused() { + closeCamera() stopBackgroundThread() - mCaptureSession?.close() - mCameraDevice?.close() - mCameraDevice = null - mCaptureSession = null } override fun onSurfaceTextureSizeChanged(surface: SurfaceTexture?, width: Int, height: Int) { @@ -125,6 +122,21 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie } } + private fun closeCamera() { + try { + mCameraOpenCloseLock.acquire() + mCaptureSession?.close() + mCaptureSession = null + mCameraDevice?.close() + mCameraDevice = null + mImageReader?.close() + mImageReader = null + } catch (e: Exception) { + } finally { + mCameraOpenCloseLock.release() + } + } + private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader -> val image = reader.acquireNextImage() val buffer = image.planes[0].buffer @@ -249,7 +261,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie mTextureView.setTransform(matrix) } - private var cameraStateCallback = object : CameraDevice.StateCallback() { + private val cameraStateCallback = object : CameraDevice.StateCallback() { override fun onOpened(cameraDevice: CameraDevice) { mCameraOpenCloseLock.release() mCameraDevice = cameraDevice