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