diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json index 1a72fe3a..0aeb2cdf 100644 --- a/common/src/main/assets/lang/en_US.json +++ b/common/src/main/assets/lang/en_US.json @@ -931,6 +931,10 @@ "name": "Force Camera Source Encoding", "description": "Forces the camera source encoding" }, + "startup_default_camera": { + "name": "Startup Default Camera", + "description": "Sets the default camera when opening Snapchat" + }, "hevc_recording": { "name": "HEVC Recording", "description": "Uses HEVC (H.265) codec for video recording" @@ -1403,6 +1407,10 @@ "delete_message": "Delete Message", "mark_as_read": "Mark as Read", "custom_emoji_reaction": "Custom Emoji Reaction" + }, + "startup_default_camera": { + "front": "Front Camera", + "back": "Back Camera" } } }, diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt index 01d6fbf8..52d920e7 100644 --- a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt +++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Camera.kt @@ -54,6 +54,7 @@ class Camera : ConfigContainer() { val backCustomFrameRate = unique("back_custom_frame_rate", *customFrameRates) { requireRestart(); addFlags(ConfigFlag.NO_TRANSLATE) } val hevcRecording = boolean("hevc_recording") { requireRestart() } val forceCameraSourceEncoding = boolean("force_camera_source_encoding") + val startupDefaultCamera = unique("startup_default_camera", "front", "back") { requireRestart() } val overrideFrontResolution get() = _overrideFrontResolution val overrideBackResolution get() = _overrideBackResolution diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt index fd49fdd7..acbb7a5c 100644 --- a/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt +++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/database/DatabaseAccess.kt @@ -25,6 +25,7 @@ enum class DatabaseType( val fileName: String ) { MAIN("main.db"), + CORE("core.db"), ARROYO("arroyo.db"), SIMPLE_DB_HELPER("simple_db_helper.db") } @@ -508,4 +509,29 @@ class DatabaseAccess( ) } } + + fun setCameraType(cameraType: String) { + useDatabase(DatabaseType.CORE, writeMode = true)?.use { database -> + database.performOperation { + if (rawQuery("SELECT * FROM Preferences WHERE 'key' = 'CAMERA~CAMERA_TYPE'", null).use { !it.moveToFirst() }) { + insert( + "Preferences", + null, + ContentValues().apply { + put("key", "CAMERA~CAMERA_TYPE") + put("type", 0) + put("stringValue", cameraType) + } + ) + } else update( + "Preferences", + ContentValues().apply { + put("stringValue", cameraType) + }, + "key = ?", + arrayOf("CAMERA~CAMERA_TYPE") + ) + } + } + } } \ No newline at end of file diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt index 758207b9..765da077 100644 --- a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt +++ b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/tweaks/CameraTweaks.kt @@ -27,6 +27,10 @@ class CameraTweaks : Feature("Camera Tweaks") { override fun init() { val config = context.config.camera + config.startupDefaultCamera.getNullable()?.let { defaultCamera -> + context.database.setCameraType(if (defaultCamera == "back") "BACK_FACING" else "FRONT_FACING") + } + val frontCameraId by lazy { runCatching { context.androidContext.getSystemService(CameraManager::class.java).run { cameraIdList.firstOrNull { getCameraCharacteristics(it).get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT }