commit edda0d1488990bbaaa2bacb77f7b2310ef47d6be parent 93e9a67daf4a20682023560ff2b4e441e227a465 Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sat, 17 Feb 2024 14:39:37 +0100 feat(core): default volume controls Diffstat:
4 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json @@ -538,6 +538,10 @@ "name": "Force Upload Source Quality", "description": "Forces Snapchat to upload media in the original quality\nPlease note that this may not remove metadata from media" }, + "default_volume_controls": { + "name": "Default Volume Controls", + "description": "Forces Snapchat to use system volume controls" + }, "disable_snap_splitting": { "name": "Disable Snap Splitting", "description": "Prevents Snaps from being split into multiple parts\nPictures you send will turn into videos" diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/Global.kt @@ -37,5 +37,6 @@ class Global : ConfigContainer() { val videoPlaybackRateSlider = boolean("video_playback_rate_slider") { requireRestart() } val disableGooglePlayDialogs = boolean("disable_google_play_dialogs") { requireRestart() } val forceUploadSourceQuality = boolean("force_upload_source_quality") { requireRestart() } + val defaultVolumeControls = boolean("default_volume_controls") { requireRestart() } val disableSnapSplitting = boolean("disable_snap_splitting") { addNotices(FeatureNotice.INTERNAL_BEHAVIOR) } } \ No newline at end of file diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/DefaultVolumeControls.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/DefaultVolumeControls.kt @@ -0,0 +1,19 @@ +package me.rhunk.snapenhance.core.features.impl.ui + +import android.view.KeyEvent +import me.rhunk.snapenhance.core.features.Feature +import me.rhunk.snapenhance.core.features.FeatureLoadParams +import me.rhunk.snapenhance.core.util.hook.HookStage +import me.rhunk.snapenhance.core.util.hook.hook + +class DefaultVolumeControls : Feature("Default Volume Controls", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) { + override fun onActivityCreate() { + if (!context.config.global.defaultVolumeControls.get()) return + context.mainActivity!!::class.java.hook("onKeyDown", HookStage.BEFORE) { param -> + val keyCode = param.arg<Int>(0) + if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { + param.setResult(false) + } + } + } +}+ \ No newline at end of file diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/FeatureManager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/manager/impl/FeatureManager.kt @@ -119,6 +119,7 @@ class FeatureManager( StealthModeIndicator(), DisablePermissionRequests(), SessionEvents(), + DefaultVolumeControls(), ) initializeFeatures()