mirror of
				https://github.com/SimpleMobileTools/Simple-Camera.git
				synced 2025-06-27 09:02:59 +02:00 
			
		
		
		
	store/restore last used camera lens
This commit is contained in:
		@@ -0,0 +1,11 @@
 | 
			
		||||
package com.simplemobiletools.camera.extensions
 | 
			
		||||
 | 
			
		||||
import androidx.camera.core.CameraSelector
 | 
			
		||||
 | 
			
		||||
fun CameraSelector.toLensFacing(): Int {
 | 
			
		||||
    return if (this == CameraSelector.DEFAULT_FRONT_CAMERA) {
 | 
			
		||||
        CameraSelector.LENS_FACING_FRONT
 | 
			
		||||
    } else {
 | 
			
		||||
        CameraSelector.LENS_FACING_BACK
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
package com.simplemobiletools.camera.extensions
 | 
			
		||||
 | 
			
		||||
import androidx.camera.core.CameraSelector
 | 
			
		||||
import androidx.camera.core.ImageCapture
 | 
			
		||||
import com.simplemobiletools.camera.helpers.FLASH_AUTO
 | 
			
		||||
import com.simplemobiletools.camera.helpers.FLASH_OFF
 | 
			
		||||
@@ -23,3 +24,12 @@ fun Int.toAppFlashMode(): Int {
 | 
			
		||||
        else -> throw IllegalArgumentException("Unknown mode: $this")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun Int.toCameraSelector(): CameraSelector {
 | 
			
		||||
    return if (this == CameraSelector.LENS_FACING_FRONT) {
 | 
			
		||||
        CameraSelector.DEFAULT_FRONT_CAMERA
 | 
			
		||||
    } else {
 | 
			
		||||
        CameraSelector.DEFAULT_BACK_CAMERA
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package com.simplemobiletools.camera.helpers
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.os.Environment
 | 
			
		||||
import androidx.camera.core.CameraSelector
 | 
			
		||||
import com.simplemobiletools.commons.helpers.BaseConfig
 | 
			
		||||
import java.io.File
 | 
			
		||||
 | 
			
		||||
@@ -37,6 +38,10 @@ class Config(context: Context) : BaseConfig(context) {
 | 
			
		||||
        get() = prefs.getString(LAST_USED_CAMERA, "0")!!
 | 
			
		||||
        set(cameraId) = prefs.edit().putString(LAST_USED_CAMERA, cameraId).apply()
 | 
			
		||||
 | 
			
		||||
    var lastUsedCameraLens: Int
 | 
			
		||||
        get() = prefs.getInt(LAST_USED_CAMERA_LENS, CameraSelector.LENS_FACING_BACK)
 | 
			
		||||
        set(lens) = prefs.edit().putInt(LAST_USED_CAMERA_LENS, lens).apply()
 | 
			
		||||
 | 
			
		||||
    var initPhotoMode: Boolean
 | 
			
		||||
        get() = prefs.getBoolean(INIT_PHOTO_MODE, true)
 | 
			
		||||
        set(initPhotoMode) = prefs.edit().putBoolean(INIT_PHOTO_MODE, initPhotoMode).apply()
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ const val SOUND = "sound"
 | 
			
		||||
const val VOLUME_BUTTONS_AS_SHUTTER = "volume_buttons_as_shutter"
 | 
			
		||||
const val FLIP_PHOTOS = "flip_photos"
 | 
			
		||||
const val LAST_USED_CAMERA = "last_used_camera_2"
 | 
			
		||||
const val LAST_USED_CAMERA_LENS = "last_used_camera_lens"
 | 
			
		||||
const val FLASHLIGHT_STATE = "flashlight_state"
 | 
			
		||||
const val INIT_PHOTO_MODE = "init_photo_mode"
 | 
			
		||||
const val BACK_PHOTO_RESOLUTION_INDEX = "back_photo_resolution_index_2"
 | 
			
		||||
 
 | 
			
		||||
@@ -43,10 +43,11 @@ import com.bumptech.glide.load.ImageHeaderParser.UNKNOWN_ORIENTATION
 | 
			
		||||
import com.simplemobiletools.camera.R
 | 
			
		||||
import com.simplemobiletools.camera.extensions.config
 | 
			
		||||
import com.simplemobiletools.camera.extensions.toAppFlashMode
 | 
			
		||||
import com.simplemobiletools.camera.extensions.toCameraSelector
 | 
			
		||||
import com.simplemobiletools.camera.extensions.toCameraXFlashMode
 | 
			
		||||
import com.simplemobiletools.camera.extensions.toLensFacing
 | 
			
		||||
import com.simplemobiletools.camera.helpers.MediaSoundHelper
 | 
			
		||||
import com.simplemobiletools.camera.helpers.PinchToZoomOnScaleGestureListener
 | 
			
		||||
import com.simplemobiletools.camera.helpers.ZoomCalculator
 | 
			
		||||
import com.simplemobiletools.camera.interfaces.MyPreview
 | 
			
		||||
import com.simplemobiletools.commons.extensions.showErrorToast
 | 
			
		||||
import com.simplemobiletools.commons.extensions.toast
 | 
			
		||||
@@ -110,7 +111,7 @@ class CameraXPreview(
 | 
			
		||||
        get() = cameraProvider?.availableCameraInfos?.size ?: 0
 | 
			
		||||
 | 
			
		||||
    private val frontCameraInUse: Boolean
 | 
			
		||||
        get() = lensFacing == CameraSelector.DEFAULT_FRONT_CAMERA
 | 
			
		||||
        get() = cameraSelector == CameraSelector.DEFAULT_FRONT_CAMERA
 | 
			
		||||
 | 
			
		||||
    private var preview: Preview? = null
 | 
			
		||||
    private var cameraProvider: ProcessCameraProvider? = null
 | 
			
		||||
@@ -119,7 +120,7 @@ class CameraXPreview(
 | 
			
		||||
    private var camera: Camera? = null
 | 
			
		||||
    private var currentRecording: Recording? = null
 | 
			
		||||
    private var recordingState: VideoRecordEvent? = null
 | 
			
		||||
    private var lensFacing = CameraSelector.DEFAULT_BACK_CAMERA
 | 
			
		||||
    private var cameraSelector = config.lastUsedCameraLens.toCameraSelector()
 | 
			
		||||
    private var flashMode = config.flashlightState.toCameraXFlashMode()
 | 
			
		||||
    private var isPhotoCapture = config.initPhotoMode
 | 
			
		||||
 | 
			
		||||
@@ -161,7 +162,7 @@ class CameraXPreview(
 | 
			
		||||
        cameraProvider.unbindAll()
 | 
			
		||||
        camera = cameraProvider.bindToLifecycle(
 | 
			
		||||
            activity,
 | 
			
		||||
            lensFacing,
 | 
			
		||||
            cameraSelector,
 | 
			
		||||
            preview,
 | 
			
		||||
            captureUseCase,
 | 
			
		||||
        )
 | 
			
		||||
@@ -332,11 +333,13 @@ class CameraXPreview(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun toggleFrontBackCamera() {
 | 
			
		||||
        lensFacing = if (frontCameraInUse) {
 | 
			
		||||
        val newCameraSelector = if (frontCameraInUse) {
 | 
			
		||||
            CameraSelector.DEFAULT_BACK_CAMERA
 | 
			
		||||
        } else {
 | 
			
		||||
            CameraSelector.DEFAULT_FRONT_CAMERA
 | 
			
		||||
        }
 | 
			
		||||
        cameraSelector = newCameraSelector
 | 
			
		||||
        config.lastUsedCameraLens = newCameraSelector.toLensFacing()
 | 
			
		||||
        startCamera()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user