diff --git a/AlwaysAllowChargingFeedback/Readme.md b/AlwaysAllowChargingFeedback/Readme.md new file mode 100644 index 0000000..2f668a2 --- /dev/null +++ b/AlwaysAllowChargingFeedback/Readme.md @@ -0,0 +1,4 @@ +# AlwaysAllowChargingFeedback + +Always allow charging feedback, +even when the device is in Do-not-Disturb mode. diff --git a/AlwaysAllowChargingFeedback/build.gradle.kts b/AlwaysAllowChargingFeedback/build.gradle.kts new file mode 100644 index 0000000..8b19b6e --- /dev/null +++ b/AlwaysAllowChargingFeedback/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + alias(libs.plugins.buildlogic.android.application) + alias(libs.plugins.buildlogic.kotlin.android) +} + +android { + namespace = "de.binarynoise.AlwaysAllowChargingFeedback" + + defaultConfig { + minSdk = 28 + targetSdk = 36 + } +} + +dependencies {} diff --git a/AlwaysAllowChargingFeedback/src/main/AndroidManifest.xml b/AlwaysAllowChargingFeedback/src/main/AndroidManifest.xml new file mode 100644 index 0000000..1a5a909 --- /dev/null +++ b/AlwaysAllowChargingFeedback/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/AlwaysAllowChargingFeedback/src/main/assets/xposed_init b/AlwaysAllowChargingFeedback/src/main/assets/xposed_init new file mode 100644 index 0000000..ffb29ca --- /dev/null +++ b/AlwaysAllowChargingFeedback/src/main/assets/xposed_init @@ -0,0 +1 @@ +de.binarynoise.AlwaysAllowChargingFeedback.Hook diff --git a/AlwaysAllowChargingFeedback/src/main/java/de/binarynoise/AlwaysAllowChargingSounds/Hook.kt b/AlwaysAllowChargingFeedback/src/main/java/de/binarynoise/AlwaysAllowChargingSounds/Hook.kt new file mode 100644 index 0000000..ebfc45b --- /dev/null +++ b/AlwaysAllowChargingFeedback/src/main/java/de/binarynoise/AlwaysAllowChargingSounds/Hook.kt @@ -0,0 +1,27 @@ +package de.binarynoise.AlwaysAllowChargingFeedback + +import android.content.Context +import android.provider.Settings +import de.robv.android.xposed.IXposedHookLoadPackage +import de.robv.android.xposed.XC_MethodReplacement +import de.robv.android.xposed.XposedHelpers +import de.robv.android.xposed.callbacks.XC_LoadPackage + +class Hook : IXposedHookLoadPackage { + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + if (lpparam.packageName != "android") return + + val NotifierClass = XposedHelpers.findClass("com.android.server.power.Notifier", lpparam.classLoader) + XposedHelpers.findAndHookMethod(NotifierClass, "isChargingFeedbackEnabled", Int::class.java, object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam): Boolean { + val userId = param.args[0] as Int + val context = XposedHelpers.getObjectField(param.thisObject, "mContext") as Context + // charging_sounds_enabled comes from Settings.Secure.CHARGING_SOUNDS_ENABLED which is @hide + return XposedHelpers.callStaticMethod( + Settings.Secure::class.java, "getIntForUser", context.contentResolver, "charging_sounds_enabled", 1, userId + ) != 0 + } + }) + } +} diff --git a/AlwaysAllowChargingFeedback/src/main/res/values/arrays.xml b/AlwaysAllowChargingFeedback/src/main/res/values/arrays.xml new file mode 100644 index 0000000..db6e46a --- /dev/null +++ b/AlwaysAllowChargingFeedback/src/main/res/values/arrays.xml @@ -0,0 +1,6 @@ + + + + android + + diff --git a/README.md b/README.md index 3a7c600..6a89956 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ A collection of small Xposed Modules. | Module | Author | Description | Releases | |-|-|-|-| +| [AlwaysAllowChargingFeedback](AlwaysAllowChargingFeedback) | [@binarynoise](https://github.com/binarynoise) | Always allow charging feedback, even in DnD mode | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AlwaysAllowChargingFeedback) | | [AlwaysAllowMultiInstanceSplit](AlwaysAllowMultiInstanceSplit) | [@binarynoise](https://github.com/binarynoise) & [@programminghoch10](https://github.com/programminghoch10) | Allow all apps to be launched twice in a split screen | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AnimationScaleMod) | | [AnimationScaleMod](AnimationScaleMod) | [@programminghoch10](https://github.com/programminghoch10) | Add more animation scale multipliers | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AnimationScaleMod) | | [AntiBrightnessChange](AntiBrightnessChange) | [@programminghoch10](https://github.com/programminghoch10) | Prevent apps from changing display brightness | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AntiBrightnessChange) [IzzyOnDroid](https://apt.izzysoft.de/fdroid/index/apk/com.programminghoch10.AntiBrightnessChange) | diff --git a/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/full_description.txt b/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/full_description.txt new file mode 100644 index 0000000..775fa12 --- /dev/null +++ b/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/full_description.txt @@ -0,0 +1,2 @@ +Always allow charging feedback, +even when the device is set into Do-not-Disturb mode. diff --git a/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/short_description.txt b/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/short_description.txt new file mode 100644 index 0000000..ec53190 --- /dev/null +++ b/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/short_description.txt @@ -0,0 +1 @@ +Always allow charging feedback, even in DnD mode diff --git a/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/title.txt b/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/title.txt new file mode 100644 index 0000000..83bfe24 --- /dev/null +++ b/metadata/de.binarynoise.AlwaysAllowChargingSounds/en-US/title.txt @@ -0,0 +1 @@ +AlwaysAllowChargingFeedback diff --git a/settings.gradle.kts b/settings.gradle.kts index 667cf53..931746a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,6 +39,7 @@ dependencyResolutionManagement { rootProject.name = "XposedModulets" enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") +include(":AlwaysAllowChargingFeedback") include(":AlwaysAllowMultiInstanceSplit") include(":AnimationScaleMod") include(":AntiBrightnessChange")