From cd0aaef3853fad2389f50dc865bb49c283fb58e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=8C=E5=A0=86=E5=B0=8F=E9=80=8F=E6=98=8E?= Date: Mon, 14 Mar 2022 00:43:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=94=81=E5=B1=8F=E7=94=B5?= =?UTF-8?q?=E6=B5=81=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hook/app/systemui/LockScreenCurrent.kt | 67 ++++--------------- app/src/main/res/values/strings.xml | 3 +- 2 files changed, 13 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt index ecfedc9f..737d5941 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenCurrent.kt @@ -1,60 +1,31 @@ package com.lt2333.simplicitytools.hook.app.systemui import android.annotation.SuppressLint -import android.content.BroadcastReceiver import android.content.Context -import android.content.IntentFilter -import android.graphics.Typeface -import android.view.Gravity -import android.view.ViewGroup -import android.widget.TextView -import cn.fkj233.ui.activity.dp2px import com.github.kyuubiran.ezxhelper.init.InitFields import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.hasEnable -import com.lt2333.simplicitytools.util.hookAfterAllMethods import com.lt2333.simplicitytools.util.hookAfterMethod -import com.microsoft.appcenter.utils.HandlerUtils.runOnUiThread import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.callbacks.XC_LoadPackage import java.io.BufferedReader import java.io.FileReader import java.lang.reflect.Method -import java.util.* import kotlin.math.roundToInt -class LockScreenCurrent(private var battery: String = "") : IXposedHookLoadPackage { - +class LockScreenCurrent : IXposedHookLoadPackage { override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { hasEnable("lock_screen_current") { - val miuiPhoneStatusBarViewClass = - "com.android.systemui.statusbar.phone.KeyguardBottomAreaView".findClass(lpparam.classLoader) - miuiPhoneStatusBarViewClass.hookAfterMethod("onFinishInflate") { param -> - val viewGroup = param.thisObject as ViewGroup - battery = getBatteryTemperature(viewGroup.context).toString() - val textView = TextView(viewGroup.context).also { - it.typeface = Typeface.defaultFromStyle(Typeface.BOLD) - it.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 14f) - it.gravity = Gravity.CENTER or Gravity.BOTTOM - it.setPadding(0, 0, 0, dp2px(viewGroup.context, 5f)) + "com.android.keyguard.charge.ChargeUtils".findClass(lpparam.classLoader) + .hookAfterMethod( + "getChargingHintText", + Context::class.java, + Boolean::class.java, + Int::class.java + ) { + it.result = getCurrent() + "\n" + it.result } - Timer().schedule(object : TimerTask() { - override fun run() { - runOnUiThread { - textView.text = getCurrent() - } - } - - }, 0, 1000) - val darkIconDispatcherClass = - "com.android.systemui.plugins.DarkIconDispatcher".findClass(lpparam.classLoader) - darkIconDispatcherClass.hookAfterAllMethods("getTint") { - val areaTint = it.args[2] as Int - textView.setTextColor(areaTint) - } - viewGroup.addView(textView) - } } } @@ -72,19 +43,12 @@ class LockScreenCurrent(private var battery: String = "") : IXposedHookLoadPacka if (platName.startsWith("mt") || platName.startsWith("MT")) { val filePath = "/sys/class/power_supply/battery/device/FG_Battery_CurrentConsumption" - result = "${(getMeanCurrentVal(filePath, 5, 0) / 1000.0f).roundToInt()} mA" + val current = (getMeanCurrentVal(filePath, 5, 0) / 1000.0f).roundToInt() + result = "${InitFields.moduleRes.getString(R.string.current_current)} ${current}mA" } else if (platName.startsWith("qcom")) { val filePath = "/sys/class/power_supply/battery/current_now" val current = (getMeanCurrentVal(filePath, 5, 0) / 1000.0f).roundToInt() - result = if (current <= 0) { - "${InitFields.moduleRes.getString(R.string.current_current)}$current mA,${ - InitFields.moduleRes.getString( - R.string.temp - ) - }$battery℃".replace("-", "").replace("${InitFields.moduleRes.getString(R.string.current_current)}0 mA,", "") - } else { - "${InitFields.moduleRes.getString(R.string.current_current)}-$current mA" - } + result = "${InitFields.moduleRes.getString(R.string.current_current)} ${current}mA" } } catch (e: Exception) { e.printStackTrace() @@ -130,11 +94,4 @@ class LockScreenCurrent(private var battery: String = "") : IXposedHookLoadPacka } return defaultValue } - - 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/res/values/strings.xml b/app/src/main/res/values/strings.xml index a7c2c7e1..21a7ec66 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -157,6 +157,5 @@ Participate in translation Help us translate the app into your language Lock screen displays current information - current: - temp. + Current