diff --git a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt index 6887f488..80a95b2e 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt @@ -976,14 +976,33 @@ class SettingsActivity : MIUIActivity() { ) Line() TitleText(resId = R.string.sound) - Text( - resId = R.string.media_volume_steps, + val mediaVolumeStepsSwitchBinding = GetDataBinding( + object : DefValue { + override fun getValue(): Any { + return getSP().getBoolean("media_volume_steps_switch", false) + } + } + ) { view, flags, data -> + when (flags) { + 1 -> (view as Switch).isEnabled = data as Boolean + 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE + } + } + TextSummaryWithSwitch( + TextSummaryV( + textId = R.string.media_volume_steps_switch, + tips = "${getString(R.string.take_effect_after_reboot)}\n${getString(R.string.media_volume_steps_summary)}" + ), + SwitchV( + "media_volume_steps_switch", + dataBindingSend = mediaVolumeStepsSwitchBinding.bindingSend + ) ) SeekBarWithText( "media_volume_steps", 15, 29, - 15 + 15, dataBindingRecv = mediaVolumeStepsSwitchBinding.binding.getRecv(2) ) } register("scope_other", getString(R.string.scope_other), false) { diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/SystemPropertiesHook.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/SystemPropertiesHook.kt index c9ef3bfc..7102ec0a 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/SystemPropertiesHook.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/SystemPropertiesHook.kt @@ -5,8 +5,10 @@ import com.lt2333.simplicitytools.util.hookBeforeMethod import com.lt2333.simplicitytools.util.xposed.base.HookRegister object SystemPropertiesHook : HookRegister() { - override fun init() { + val mediaStepsSwitch = XSPUtils.getBoolean("media_volume_steps_switch", false) + val mediaSteps = XSPUtils.getInt("media_volume_steps", 15) + "android.os.SystemProperties".hookBeforeMethod( getDefaultClassLoader(), "getInt", @@ -14,8 +16,9 @@ object SystemPropertiesHook : HookRegister() { Int::class.java ) { when (it.args[0] as String) { - "ro.config.media_vol_steps" -> it.result = XSPUtils.getInt("media_volume_steps",15) + "ro.config.media_vol_steps" -> if (mediaStepsSwitch) it.result = mediaSteps } } + } } \ No newline at end of file