From 3619fbf4d30c34551b777eca5564cfc44472b146 Mon Sep 17 00:00:00 2001 From: LittleTurtle2333 Date: Sun, 3 Apr 2022 17:33:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=83=8C=E5=B1=8F=E5=A4=A9?= =?UTF-8?q?=E6=B0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/SettingsActivity.kt | 15 +- .../simplicitytools/hook/XposedEntry.kt | 1 + .../simplicitytools/hook/app/RearDisplay.kt | 19 +++ .../app/reardisplay/RearDisplayWeather.kt | 131 ++++++++++++++++++ app/src/main/res/values/arrays.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/lt2333/simplicitytools/hook/app/RearDisplay.kt create mode 100644 app/src/main/java/com/lt2333/simplicitytools/hook/app/reardisplay/RearDisplayWeather.kt 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 6a14da6f..d80b9ea9 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt @@ -195,7 +195,8 @@ class SettingsActivity : MIUIActivity() { "killall com.android.updater", "killall com.miui.mediaeditor", "killall com.miui.screenshot", - "killall com.milink.service" + "killall com.milink.service", + "killall com.xiaomi.misubscreenui", ) ShellUtils.execCommand(command, true) dismiss() @@ -854,7 +855,7 @@ class SettingsActivity : MIUIActivity() { } show() } - },dataBindingRecv = customMobileTypeTextBinding.binding.getRecv(2) + }, dataBindingRecv = customMobileTypeTextBinding.binding.getRecv(2) ) ) val bigMobileTypeIconBinding = getDataBinding( @@ -1605,6 +1606,16 @@ class SettingsActivity : MIUIActivity() { ) ) add(LineV()) + add(TitleTextV(resId = R.string.rear_display)) + add( + TextSummaryWithSwitchV( + TextSummaryV( + textId = R.string.show_weather_main_switch, + ), + SwitchV("rear_show_weather") + ) + ) + add(LineV()) add(TitleTextV(resId = R.string.remove_ad)) add( TextSummaryWithSwitchV( diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt index 6a285327..0d96fa66 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/XposedEntry.kt @@ -24,6 +24,7 @@ class XposedEntry : EasyXposedInit() { ThemeManager, // 主题壁纸 ScreenShot, // 截屏 Cast, //投屏 + RearDisplay, //背屏 ) override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/RearDisplay.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/RearDisplay.kt new file mode 100644 index 00000000..0c1afe60 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/RearDisplay.kt @@ -0,0 +1,19 @@ +package com.lt2333.simplicitytools.hook.app + +import com.lt2333.simplicitytools.hook.app.cast.RearDisplayWeather +import com.lt2333.simplicitytools.util.xposed.base.AppRegister +import de.robv.android.xposed.XposedBridge +import de.robv.android.xposed.callbacks.XC_LoadPackage + +object RearDisplay: AppRegister() { + override val packageName: String = "com.xiaomi.misubscreenui" + override val processName: List = emptyList() + override val logTag: String = "Simplicitytools" + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) + autoInitHooks(lpparam, + RearDisplayWeather, //背屏显示天气 + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/reardisplay/RearDisplayWeather.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/reardisplay/RearDisplayWeather.kt new file mode 100644 index 00000000..3e246141 --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/reardisplay/RearDisplayWeather.kt @@ -0,0 +1,131 @@ +package com.lt2333.simplicitytools.hook.app.cast + +import android.annotation.SuppressLint +import android.graphics.Typeface +import android.util.TypedValue +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.widget.RelativeLayout +import android.widget.TextView +import cn.fkj233.ui.activity.dp2px +import com.github.kyuubiran.ezxhelper.utils.findMethod +import com.github.kyuubiran.ezxhelper.utils.hookMethod +import com.lt2333.simplicitytools.util.hasEnable +import com.lt2333.simplicitytools.util.xposed.base.HookRegister +import com.lt2333.simplicitytools.view.WeatherView + +object RearDisplayWeather : HookRegister() { + @SuppressLint("ResourceType") + override fun init() { + hasEnable("rear_show_weather") { + findMethod("com.xiaomi.misubscreenui.light.aod.view.VerticalClockView") { + name == "onFinishInflate" + }.hookMethod { + before { + val viewGroup = it.thisObject as ViewGroup + val context = viewGroup.context + + //获取原组件 + val gradientLayoutID = + context.resources.getIdentifier( + "gradient_layout", + "id", + context.packageName + ) + val gradientLayout: ViewGroup = viewGroup.findViewById(gradientLayoutID) + + val dateID = + context.resources.getIdentifier("date", "id", context.packageName) + val date: TextView = viewGroup.findViewById(dateID) + + + //创建天气组件 + val mWeatherView = WeatherView(context, false).apply { + gravity = Gravity.END + setTextAppearance( + context.resources.getIdentifier( + "Sub_Screen_Aod_date_s", + "style", + context.packageName + ) + ) + typeface = Typeface.create("mipro-medium", Typeface.NORMAL) + setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14f) + + } + gradientLayout.addView(mWeatherView, (gradientLayout.indexOfChild(date) + 1)) + + + } + } + findMethod("com.xiaomi.misubscreenui.light.aod.view.HorizontalClockView") { + name == "onFinishInflate" + }.hookMethod { + before { + val viewGroup = it.thisObject as ViewGroup + val context = viewGroup.context + + //获取原组件 + val gradientLayoutID = + context.resources.getIdentifier( + "gradient_layout", + "id", + context.packageName + ) + val gradientLayout: RelativeLayout = viewGroup.findViewById(gradientLayoutID) + + val dateID = + context.resources.getIdentifier("date", "id", context.packageName) + val date: TextView = viewGroup.findViewById(dateID) + + val dateParentLayout: ViewGroup = date.parent as ViewGroup + + + //创建天气组件 + val mWeatherView = WeatherView(context, false).apply { + id = View.generateViewId() + gravity = Gravity.CENTER + maxLines = 1 + setTextAppearance( + context.resources.getIdentifier( + "Sub_Screen_Aod_date_s_horizontal", + "style", + context.packageName + ) + ) + typeface = Typeface.create("mipro-medium", 0) + + layoutParams = RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.WRAP_CONTENT, dp2px(context, 30f) + ).also { + it.addRule(RelativeLayout.END_OF, dateID) + it.marginStart = dp2px(context, 2f) + it.marginEnd = dp2px(context, 2f) + } + } + dateParentLayout.addView( + mWeatherView, + (dateParentLayout.indexOfChild(date) + 1) + ) + + //电池位置 + val batteryID = + context.resources.getIdentifier( + "battery_container", + "id", + context.packageName + ) + val battery: ViewGroup = viewGroup.findViewById(batteryID) + + battery.layoutParams = RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.WRAP_CONTENT, dp2px(context, 30f) + ).also { + it.addRule(RelativeLayout.END_OF, mWeatherView.id) + } + + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index abd0ee87..71af9095 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -12,5 +12,6 @@ com.android.thememanager com.miui.screenshot com.milink.service + com.xiaomi.misubscreenui \ 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 3f9d8efd..3b93d290 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -212,4 +212,5 @@ Always use signatures from already installed apps when installing.\nThis is extremely dangerous.\nOnly enable when really needed! Enhanced Mode Pass some validation in the application + Rear Display (11Ultra)