diff --git a/AntiBrightnessChange/README.md b/AntiBrightnessChange/README.md new file mode 100644 index 0000000..75d0d5c --- /dev/null +++ b/AntiBrightnessChange/README.md @@ -0,0 +1,6 @@ +# AntiBrightnessChange + +This module prevents selected apps from overwriting the screen brightness. + +If applied to System Framework (`android`) +it will prevent every app from changing the screen brightness. diff --git a/AntiBrightnessChange/build.gradle.kts b/AntiBrightnessChange/build.gradle.kts new file mode 100644 index 0000000..ae3b9fe --- /dev/null +++ b/AntiBrightnessChange/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("com.android.application") +} + +android { + val packageName = "com.programminghoch10.AntiBrightnessChange" + namespace = packageName + + defaultConfig { + applicationId = packageName + minSdk = 33 + targetSdk = 33 + compileSdk = 33 + versionCode = 1 + versionName = "1.0" + } +} + +dependencies {} diff --git a/AntiBrightnessChange/src/main/AndroidManifest.xml b/AntiBrightnessChange/src/main/AndroidManifest.xml new file mode 100644 index 0000000..0eaa936 --- /dev/null +++ b/AntiBrightnessChange/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/AntiBrightnessChange/src/main/assets/xposed_init b/AntiBrightnessChange/src/main/assets/xposed_init new file mode 100644 index 0000000..bb3b42b --- /dev/null +++ b/AntiBrightnessChange/src/main/assets/xposed_init @@ -0,0 +1 @@ +com.programminghoch10.AntiBrightnessChange.Hook diff --git a/AntiBrightnessChange/src/main/java/com/programminghoch10/AntiBrightnessChange/Hook.java b/AntiBrightnessChange/src/main/java/com/programminghoch10/AntiBrightnessChange/Hook.java new file mode 100644 index 0000000..b11e88f --- /dev/null +++ b/AntiBrightnessChange/src/main/java/com/programminghoch10/AntiBrightnessChange/Hook.java @@ -0,0 +1,38 @@ +package com.programminghoch10.AntiBrightnessChange; + +import static android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE; + +import android.view.WindowManager; + +import androidx.annotation.Keep; + +import de.robv.android.xposed.IXposedHookLoadPackage; +import de.robv.android.xposed.XC_MethodHook; +import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.callbacks.XC_LoadPackage; + +@Keep +public class Hook implements IXposedHookLoadPackage { + @Override + public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) { + if (lpparam.packageName.equals("android")) { + XposedHelpers.findAndHookMethod("com.android.server.wm.RootWindowContainer", lpparam.classLoader, "handleNotObscuredLocked", + "com.android.server.wm.WindowState", boolean.class, boolean.class, new XC_MethodHook() { + @Override + protected void afterHookedMethod(MethodHookParam param) { + XposedHelpers.setFloatField(param.thisObject, "mScreenBrightnessOverride", Float.NaN); + } + }); + return; + } + + XposedHelpers.findAndHookMethod(WindowManager.LayoutParams.class, "copyFrom", WindowManager.LayoutParams.class, new XC_MethodHook() { + @Override + protected void beforeHookedMethod(MethodHookParam param) { + WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) param.args[0]; + layoutParams.screenBrightness = BRIGHTNESS_OVERRIDE_NONE; + layoutParams.buttonBrightness = BRIGHTNESS_OVERRIDE_NONE; + } + }); + } +} diff --git a/AntiBrightnessChange/src/main/res/values/arrays.xml b/AntiBrightnessChange/src/main/res/values/arrays.xml new file mode 100644 index 0000000..549bac0 --- /dev/null +++ b/AntiBrightnessChange/src/main/res/values/arrays.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/metadata/com.programminghoch10.AntiBrightnessChange/en-US/full_description.txt b/metadata/com.programminghoch10.AntiBrightnessChange/en-US/full_description.txt new file mode 100644 index 0000000..369a48d --- /dev/null +++ b/metadata/com.programminghoch10.AntiBrightnessChange/en-US/full_description.txt @@ -0,0 +1,4 @@ +This module prevents selected apps from overwriting the screen brightness. + +If applied to System Framework (`android`) +it will prevent every app from changing the screen brightness. diff --git a/metadata/com.programminghoch10.AntiBrightnessChange/en-US/short_description.txt b/metadata/com.programminghoch10.AntiBrightnessChange/en-US/short_description.txt new file mode 100644 index 0000000..28dc657 --- /dev/null +++ b/metadata/com.programminghoch10.AntiBrightnessChange/en-US/short_description.txt @@ -0,0 +1 @@ +Prevents selected apps from overwriting the screen brightness. diff --git a/metadata/com.programminghoch10.AntiBrightnessChange/en-US/title.txt b/metadata/com.programminghoch10.AntiBrightnessChange/en-US/title.txt new file mode 100644 index 0000000..2009e45 --- /dev/null +++ b/metadata/com.programminghoch10.AntiBrightnessChange/en-US/title.txt @@ -0,0 +1 @@ +Anti Brightness Change diff --git a/settings.gradle.kts b/settings.gradle.kts index 5494f32..8d730d0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,6 +18,7 @@ dependencyResolutionManagement { } rootProject.name = "XposedModulets" +include(":AntiBrightnessChange") include(":AutomaticAdvancedSettingsExpander") include(":BetterVerboseWiFiLogging") include(":BetterBluetoothDeviceSort")