From d01ad834f6e85d177a25644fa6958342f0f10328 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 29 May 2018 23:42:23 +0200 Subject: [PATCH] add a toggle for selecting if front/rear camera should be used --- .../camera/views/PreviewCameraTwo.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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 5f887de2..c81ffa8c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt @@ -42,6 +42,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie private var mIsFlashSupported = true private var mIsImageCaptureIntent = false private var mIsInVideoMode = false + private var mUseFrontCamera = false private var mCameraId = "" private var mCameraState = STATE_INIT private var mFlashlightState = FLASH_OFF @@ -111,7 +112,7 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie } private fun openCamera(width: Int, height: Int) { - setUpCameraOutputs(width, height) + setupCameraOutputs(width, height) configureTransform(width, height) val manager = mActivity.getSystemService(Context.CAMERA_SERVICE) as CameraManager try { @@ -124,14 +125,22 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie } } - private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader -> val image = reader.acquireNextImage() } + private val imageAvailableListener = ImageReader.OnImageAvailableListener { reader -> + val image = reader.acquireNextImage() + val buffer = image.planes[0].buffer + } - private fun setUpCameraOutputs(width: Int, height: Int) { + private fun setupCameraOutputs(width: Int, height: Int) { val manager = mActivity.getSystemService(Context.CAMERA_SERVICE) as CameraManager try { for (cameraId in manager.cameraIdList) { val characteristics = manager.getCameraCharacteristics(cameraId) + val facing = characteristics.get(CameraCharacteristics.LENS_FACING) ?: continue + if ((mUseFrontCamera && facing == CameraCharacteristics.LENS_FACING_BACK) || !mUseFrontCamera && facing == CameraCharacteristics.LENS_FACING_FRONT) { + continue + } + val map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP) ?: continue val largest = map.getOutputSizes(ImageFormat.JPEG).maxBy { it.width * it.height }