feat(core): startup default camera

Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
rhunk 2025-03-24 21:04:37 +01:00
parent b6aa4857d2
commit 3394bfce47
4 changed files with 39 additions and 0 deletions

View File

@ -931,6 +931,10 @@
"name": "Force Camera Source Encoding", "name": "Force Camera Source Encoding",
"description": "Forces the 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": { "hevc_recording": {
"name": "HEVC Recording", "name": "HEVC Recording",
"description": "Uses HEVC (H.265) codec for video recording" "description": "Uses HEVC (H.265) codec for video recording"
@ -1403,6 +1407,10 @@
"delete_message": "Delete Message", "delete_message": "Delete Message",
"mark_as_read": "Mark as Read", "mark_as_read": "Mark as Read",
"custom_emoji_reaction": "Custom Emoji Reaction" "custom_emoji_reaction": "Custom Emoji Reaction"
},
"startup_default_camera": {
"front": "Front Camera",
"back": "Back Camera"
} }
} }
}, },

View File

@ -54,6 +54,7 @@ class Camera : ConfigContainer() {
val backCustomFrameRate = unique("back_custom_frame_rate", *customFrameRates) { requireRestart(); addFlags(ConfigFlag.NO_TRANSLATE) } val backCustomFrameRate = unique("back_custom_frame_rate", *customFrameRates) { requireRestart(); addFlags(ConfigFlag.NO_TRANSLATE) }
val hevcRecording = boolean("hevc_recording") { requireRestart() } val hevcRecording = boolean("hevc_recording") { requireRestart() }
val forceCameraSourceEncoding = boolean("force_camera_source_encoding") val forceCameraSourceEncoding = boolean("force_camera_source_encoding")
val startupDefaultCamera = unique("startup_default_camera", "front", "back") { requireRestart() }
val overrideFrontResolution get() = _overrideFrontResolution val overrideFrontResolution get() = _overrideFrontResolution
val overrideBackResolution get() = _overrideBackResolution val overrideBackResolution get() = _overrideBackResolution

View File

@ -25,6 +25,7 @@ enum class DatabaseType(
val fileName: String val fileName: String
) { ) {
MAIN("main.db"), MAIN("main.db"),
CORE("core.db"),
ARROYO("arroyo.db"), ARROYO("arroyo.db"),
SIMPLE_DB_HELPER("simple_db_helper.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")
)
}
}
}
} }

View File

@ -27,6 +27,10 @@ class CameraTweaks : Feature("Camera Tweaks") {
override fun init() { override fun init() {
val config = context.config.camera 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 { val frontCameraId by lazy {
runCatching { context.androidContext.getSystemService(CameraManager::class.java).run { runCatching { context.androidContext.getSystemService(CameraManager::class.java).run {
cameraIdList.firstOrNull { getCameraCharacteristics(it).get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT } cameraIdList.firstOrNull { getCameraCharacteristics(it).get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT }