commit 3394bfce47c36b3c193d481d512ea7667ec49dc8 parent b6aa4857d2849774da05b3f90b057f27d35f6fea Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Mon, 24 Mar 2025 21:04:37 +0100 feat(core): startup default camera Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com> Diffstat:
4 files changed, 39 insertions(+), 0 deletions(-)
diff --git 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 @@ -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 @@ -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 @@ -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 }