diff --git a/app/src/main/cpp/dex_builder b/app/src/main/cpp/dex_builder new file mode 160000 index 00000000..77f48fdd --- /dev/null +++ b/app/src/main/cpp/dex_builder @@ -0,0 +1 @@ +Subproject commit 77f48fdd795f5e178aeefb6858e3357505e5daba 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 cdb79da2..5c580955 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt @@ -966,6 +966,14 @@ class SettingsActivity : MIUIActivity() { SwitchV("remove_macro_blacklist") ) ) + add( + TextSummaryWithSwitchV( + TextSummaryV( + textId = R.string.battery_life_function + ), + SwitchV("battery_life_function") + ) + ) add(LineV()) add(TitleTextV(resId = R.string.scope_mediaeditor)) add( diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt index dfaaa69c..b60cddd0 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/Updater.kt @@ -1,8 +1,8 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.util.XSPUtils +import com.lt2333.simplicitytools.util.hookBeforeMethod 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 @@ -15,11 +15,9 @@ class Updater : IXposedHookLoadPackage { "com.android.updater.common.utils.$letter", lpparam.classLoader ) ?: continue if (classIfExists.declaredFields.size >= 9 && classIfExists.declaredMethods.size > 60) { - XposedHelpers.findAndHookMethod(classIfExists, "T", object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - param.result = false - } - }) + classIfExists.hookBeforeMethod("T") { + it.result = false + } return } letter++ diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt index 234fbee5..611b1e69 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/android/DisableFlagSecure.kt @@ -1,6 +1,7 @@ package com.lt2333.simplicitytools.hook.app.android -import com.lt2333.simplicitytools.util.* +import com.lt2333.simplicitytools.util.hasEnable +import com.lt2333.simplicitytools.util.hookBeforeMethod import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.callbacks.XC_LoadPackage diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt index 30be292c..81fa6aa0 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt @@ -1,15 +1,28 @@ package com.lt2333.simplicitytools.hook.app.securitycenter -import com.lt2333.simplicitytools.util.log +import android.app.AndroidAppHelper +import android.content.BroadcastReceiver +import android.content.Context +import android.content.IntentFilter +import android.content.res.Configuration +import android.graphics.Color +import android.graphics.Typeface +import android.util.TypedValue +import android.view.Gravity +import android.view.View +import android.widget.LinearLayout +import android.widget.TextView +import cn.fkj233.ui.activity.dp2px +import com.lt2333.simplicitytools.util.* import de.robv.android.xposed.IXposedHookLoadPackage -import de.robv.android.xposed.XC_MethodReplacement -import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.callbacks.XC_LoadPackage import me.iacn.biliroaming.utils.DexHelper +import java.lang.reflect.Field class ShowBatteryTemperature(private val dexHelper: DexHelper?): IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + if (!XSPUtils.getBoolean("battery_life_function", false)) return if (dexHelper == null) { log("DexHelper为null,hook ShowBatteryTemperature 失败") return @@ -33,7 +46,44 @@ class ShowBatteryTemperature(private val dexHelper: DexHelper?): IXposedHookLoad } val method = dexHelper.decodeMethodIndex(methodIndex) log(method) - XposedBridge.hookMethod(method, XC_MethodReplacement.returnConstant(true)) + method.hookBeforeMethod { it.result = true } + val a = "com.miui.powercenter.a\$a".findClass(lpparam.classLoader) + "com.miui.powercenter.a".hookBeforeMethod(lpparam.classLoader, "b", Context::class.java) { + it.result = getBatteryTemperature(it.args[0] as Context).toString() + } + a.hookAfterMethod("run") { + val context = AndroidAppHelper.currentApplication().applicationContext + val isDarkMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES + val currentTemperatureValue = context.resources.getIdentifier("current_temperature_value", "id", "com.miui.securitycenter") + val field = a.getDeclaredField("a") as Field + field.isAccessible = true + val view = field.get(it.thisObject) as View + val textView = view.findViewById(currentTemperatureValue) + textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 36.399998f) + textView.gravity = Gravity.NO_GRAVITY + textView.setPadding(0, 0, 0, 0) + textView.height = dp2px(context, 49.099983f) + textView.textAlignment = View.TEXT_ALIGNMENT_VIEW_START + (textView.layoutParams as LinearLayout.LayoutParams).marginStart = dp2px(context, 25f) + (textView.layoutParams as LinearLayout.LayoutParams).topMargin = 0 + val tempView = TextView(context) + tempView.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, dp2px(context, 49.099983f)) + (tempView.layoutParams as LinearLayout.LayoutParams).marginStart = dp2px(context, 3.599976f) + tempView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13.099977f) + tempView.setPadding(0, dp2px(context, 25f), 0, 0) + tempView.text = "℃" + tempView.setTextColor(Color.parseColor(if (isDarkMode) "#e6e6e6" else "#333333")) + tempView.typeface = Typeface.create(null, 500, false) + tempView.textAlignment = View.TEXT_ALIGNMENT_VIEW_START + val tempeValueContainer = context.resources.getIdentifier("tempe_value_container", "id", "com.miui.securitycenter") + val linearLayout = view.findViewById(tempeValueContainer) + linearLayout.addView(tempView) + } + } + private fun getBatteryTemperature(context: Context): Int { + return context.registerReceiver( + null as BroadcastReceiver?, + IntentFilter("android.intent.action.BATTERY_CHANGED") + )!!.getIntExtra("temperature", 0) / 10 } - } \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/util/KotlinXposedHelper.kt b/app/src/main/java/com/lt2333/simplicitytools/util/KotlinXposedHelper.kt index 81526532..d22161e9 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/util/KotlinXposedHelper.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/util/KotlinXposedHelper.kt @@ -8,8 +8,6 @@ import de.robv.android.xposed.XC_MethodReplacement import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.callbacks.XC_LayoutInflated -import me.iacn.biliroaming.utils.DexHelper - import java.lang.reflect.Field import java.lang.reflect.Member import java.util.* diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index fcc332cf..460b950b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -149,4 +149,5 @@ 显示通知重要程度 去广告 移除主题壁纸的广告 + 电池页面显示当前温度 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 6682e828..f57d4a29 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -149,4 +149,5 @@ 設定 去廣告 拿掉主題壁紙的廣告 + 電池頁面展示當前溫度 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 16d31db1..1dd980a6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -149,4 +149,5 @@ 設定 去廣告 拿掉主題壁紙的廣告 + 電池頁面展示當前溫度 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bde848e7..cc56bb3c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,4 +149,5 @@ Show notification importance settings which are hidden in MIUI 12 and later versions Remove ads Remove ads for theme manager + Battery page shows the current temperature diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c4a685e2..f37c82dd 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sun Feb 13 16:53:34 CST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME