diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 07ed3db4..f8a50cc3 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -32,10 +32,24 @@ jobs: path: | ~/.gradle/caches/build-cache-* key: gradle-builds-${{ github.sha }} - - name: Clone UI - run: git clone https://github.com/Block-Network/blockmiui.git - - name: Grant execute permission for gradlew - run: chmod +x gradlew + + - name: Init Submodule + run: | + git submodule init + git submodule update + - name: Build with Gradle - run: ./gradlew build + run: bash ./gradlew assemble + + - name: Upload Release APK + uses: actions/upload-artifact@v2 + with: + name: SimplicityTools_Release + path: "app/build/outputs/apk/release/*.apk" + + - name: Upload Debug APK + uses: actions/upload-artifact@v2 + with: + name: Simplicity Tools_Debug + path: "app/build/outputs/apk/debug/*.apk" diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e2e14006..5e473635 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,13 +19,8 @@ android { buildTypes { release { isMinifyEnabled = true - isZipAlignEnabled = true isShrinkResources = true - setProguardFiles( - listOf( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) + setProguardFiles(listOf("proguard-rules.pro") ) } } @@ -50,7 +45,7 @@ android { applicationVariants.all { outputs.all { (this as BaseVariantOutputImpl).outputFileName = - "Simplicity_Tools_Xposed-${versionName}-${name}.apk" + "Simplicity_Tools_Xposed-$versionName-$name.apk" } } } 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 86c57dd2..6390e1d1 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt @@ -974,6 +974,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/SecurityCenter.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt index 64816012..6b2dcd6f 100644 --- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SecurityCenter.kt @@ -2,12 +2,14 @@ package com.lt2333.simplicitytools.hook.app import com.lt2333.simplicitytools.hook.app.securitycenter.LockOneHundred import com.lt2333.simplicitytools.hook.app.securitycenter.RemoveMacroBlacklist +import com.lt2333.simplicitytools.hook.app.securitycenter.ShowBatteryTemperature import com.lt2333.simplicitytools.hook.app.securitycenter.SkipWaitingTime import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam class SecurityCenter : IXposedHookLoadPackage { + override fun handleLoadPackage(lpparam: LoadPackageParam) { XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) //跳过 5/10秒等待时间 @@ -16,5 +18,7 @@ class SecurityCenter : IXposedHookLoadPackage { LockOneHundred().handleLoadPackage(lpparam) //去除自动连招黑名单 RemoveMacroBlacklist().handleLoadPackage(lpparam) + //显示电池温度 + ShowBatteryTemperature().handleLoadPackage(lpparam) } } \ No newline at end of file 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 new file mode 100644 index 00000000..66fd0f3e --- /dev/null +++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/securitycenter/ShowBatteryTemperature.kt @@ -0,0 +1,64 @@ +package com.lt2333.simplicitytools.hook.app.securitycenter + +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.callbacks.XC_LoadPackage +import java.lang.reflect.Field + +class ShowBatteryTemperature: IXposedHookLoadPackage { + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + if (!XSPUtils.getBoolean("battery_life_function", false)) return + 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/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 70cc9326..4a914f64 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -149,5 +149,6 @@ 显示通知重要程度 去广告 移除主题壁纸的广告 + 电池页面显示当前温度 启用Alpha充电动画 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 8464fb8c..620c5040 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -149,5 +149,6 @@ 設定 去廣告 拿掉主題壁紙的廣告 + 電池頁面展示當前溫度 啟用Alpha充電動畫 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 12999e81..debede80 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -149,5 +149,6 @@ 設定 去廣告 拿掉主題壁紙的廣告 + 電池頁面展示當前溫度 啟用Alpha充電動畫 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index adc817f6..6e44d351 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,5 +149,6 @@ 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 Enable wave charge animation 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