41 Commits

Author SHA1 Message Date
乌堆小透明
4225d64ae3 New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin
2023-04-08 19:44:36 +08:00
乌堆小透明
a484a3ba04 New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2023-02-20 23:55:08 +08:00
乌堆小透明
1429bcd392 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-20 23:55:07 +08:00
乌堆小透明
a4eb720b61 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-20 22:46:46 +08:00
乌堆小透明
1e78221408 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-20 22:46:43 +08:00
乌堆小透明
07ecd3adb8 New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin
2023-02-20 22:46:41 +08:00
乌堆小透明
86da593cff New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-20 21:32:14 +08:00
乌堆小透明
236e545706 New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2023-02-20 21:32:12 +08:00
乌堆小透明
dc76d99fc6 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-20 21:32:08 +08:00
乌堆小透明
20585c66ea New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-20 21:28:33 +08:00
乌堆小透明
8cbf9d2072 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-20 21:28:27 +08:00
乌堆小透明
a5ba41260a New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-19 11:43:16 +08:00
乌堆小透明
cbdf331035 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-19 09:11:59 +08:00
乌堆小透明
357c30bc3a New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin
2023-02-19 08:15:33 +08:00
乌堆小透明
138c653a82 New translations strings.xml (Polish)
[ci skip] New translations from Crowdin
2023-02-19 06:56:34 +08:00
乌堆小透明
587141ca82 New translations strings.xml (Polish)
[ci skip] New translations from Crowdin
2023-02-19 05:52:59 +08:00
乌堆小透明
73d5e9855f New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-19 02:20:48 +08:00
乌堆小透明
0eeff2646b New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-18 23:46:49 +08:00
乌堆小透明
2b5f903006 New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2023-02-18 23:46:49 +08:00
乌堆小透明
8cba53fa3f New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2023-02-18 23:46:47 +08:00
乌堆小透明
cea867374c New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-18 23:46:45 +08:00
乌堆小透明
a5c39da799 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-18 23:46:39 +08:00
乌堆小透明
870a742a0f New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin
2023-02-18 22:32:20 +08:00
乌堆小透明
367663df77 New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:19 +08:00
乌堆小透明
ea64b57d6a New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:18 +08:00
乌堆小透明
4bde2ccfdc New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2023-02-18 22:32:17 +08:00
乌堆小透明
772b019631 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-18 22:32:16 +08:00
乌堆小透明
168ab492eb New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2023-02-18 22:32:15 +08:00
乌堆小透明
7b613d76b6 New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin
2023-02-18 22:32:13 +08:00
乌堆小透明
3b1651554d New translations strings.xml (Russian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:11 +08:00
乌堆小透明
752fb84d39 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-18 22:32:10 +08:00
乌堆小透明
b3fbfcea86 New translations strings.xml (Polish)
[ci skip] New translations from Crowdin
2023-02-18 22:32:10 +08:00
乌堆小透明
44b671fa9e New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin
2023-02-18 22:32:08 +08:00
乌堆小透明
7020324ef7 New translations strings.xml (Korean)
[ci skip] New translations from Crowdin
2023-02-18 22:32:07 +08:00
乌堆小透明
5fc1e9deaa New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin
2023-02-18 22:32:06 +08:00
乌堆小透明
2ce513bc97 New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:05 +08:00
乌堆小透明
28cf25b08c New translations strings.xml (Czech)
[ci skip] New translations from Crowdin
2023-02-18 22:32:01 +08:00
乌堆小透明
0b0b401d2f New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-18 22:31:59 +08:00
乌堆小透明
f31bdab7f9 New translations strings.xml (French)
[ci skip] New translations from Crowdin
2023-02-18 22:31:58 +08:00
乌堆小透明
33be4dd4e9 New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin
2023-02-18 22:31:57 +08:00
乌堆小透明
5eb4b08079 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-18 22:23:12 +08:00
19 changed files with 494 additions and 589 deletions

View File

@@ -1,4 +1,4 @@
name: PR Check
name: Android CI
on:
pull_request:

View File

@@ -1,50 +0,0 @@
name: Dev
on:
push:
branches: [ "main" ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Clone UI
run: |
cd blockmiui
git submodule init
git submodule update
- name: Build with Gradle
run: |
bash ./gradlew assembleDebug
- name: Sign Debug APK
if: success()
id: sign_debug
uses: r0adkll/sign-android-release@v1.0.4
with:
releaseDirectory: ./app/build/outputs/apk/debug
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.KEY_STORE_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_STORE_PASSWORD }}
- name: Upload Debug APK
uses: actions/upload-artifact@v2
with:
name: WooBox_Debug
path: ${{ steps.sign_debug.outputs.signedReleaseFile }}

View File

@@ -13,9 +13,7 @@
### 模块说明
开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441)
当前仅基于`Android13`进行开发,`Android12`几乎不再维护。也有基于`Android13`开发,但是能在`Android12`使用的情况,请广大社区使用`Android12`的开发者自行测试和修复后提交`Pull Request`
开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441)
---

View File

@@ -11,12 +11,6 @@
---
### Module Description
Currently only developed based on `Android13`, `Android12` is almost no longer maintained. There are also cases where the development is based on `Android13`, but it can be used in `Android12`. Developers in the community who use `Android12` are requested to submit `Pull Request` after testing and repairing by themselves.
---
### Screenshot
![Screenshot](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/en.jpg)

View File

@@ -11,8 +11,8 @@ android {
applicationId = "com.lt2333.simplicitytools"
minSdk = 31
targetSdk = 33
versionCode = 75
versionName = "1.7.5"
versionCode = 74
versionName = "1.7.4"
buildConfigField("String", "BUILD_TIME", "\"${System.currentTimeMillis()}\"")
}

View File

@@ -1,7 +1,5 @@
package com.lt2333.simplicitytools.activity.pages.s
import android.content.Intent
import android.net.Uri
import android.view.View
import android.widget.Switch
import android.widget.Toast
@@ -13,11 +11,11 @@ import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.activity.view.TextV
import cn.fkj233.ui.dialog.MIUIDialog
import cn.fkj233.ui.dialog.NewDialog
import com.lt2333.simplicitytools.R
import java.util.HashMap
@BMPage("scope_systemui", "System UI", hideMenu = false)
@BMPage("scope_systemui","System UI", hideMenu = false)
class SystemUIPageForS : BasePage() {
override fun onCreate() {
@@ -56,10 +54,11 @@ class SystemUIPageForS : BasePage() {
}
})
val layoutCompatibilityBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"layout_compatibility_mode", false
)
val layoutCompatibilityModeBinding = GetDataBinding({
MIUIActivity.safeSP.getInt(
"screen_hole_location",
0
) == 2
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
@@ -67,23 +66,57 @@ class SystemUIPageForS : BasePage() {
}
}
TextSummaryWithSwitch(
val screenHoleLocation: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.off)
it[1] = getString(R.string.center)
it[2] = getString(R.string.left_or_right)
}
TextSummaryWithSpinner(
TextSummaryV(
textId = R.string.layout_compatibility_mode, tipsId = R.string.layout_compatibility_mode_summary
), SwitchV("layout_compatibility_mode", dataBindingSend = layoutCompatibilityBinding.bindingSend)
)
textId = R.string.layout_compatibility_mode,
tipsId = R.string.screen_hole_location
),
SpinnerV(
screenHoleLocation[MIUIActivity.safeSP.getInt(
"screen_hole_location",
0
)].toString()
) {
add(screenHoleLocation[0].toString()) {
MIUIActivity.safeSP.putAny("screen_hole_location", 0)
layoutCompatibilityModeBinding.binding.Send().send(false)
}
add(screenHoleLocation[1].toString()) {
MIUIActivity.safeSP.putAny("screen_hole_location", 1)
layoutCompatibilityModeBinding.binding.Send().send(false)
}
add(screenHoleLocation[2].toString()) {
MIUIActivity.safeSP.putAny("screen_hole_location", 2)
layoutCompatibilityModeBinding.binding.Send().send(true)
}
})
Text(
textId = R.string.left_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
textId = R.string.left_margin,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_left_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
"status_bar_left_margin",
0,
300,
0,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
)
Text(
textId = R.string.right_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
textId = R.string.right_margin,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_right_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
"status_bar_right_margin",
0,
300,
0,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.status_bar_clock_format)
@@ -213,37 +246,23 @@ class SystemUIPageForS : BasePage() {
//极客模式起始
TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_clock_format_geek) {
NewDialog(activity) {
MIUIDialog(activity) {
setTitle(R.string.custom_clock_format_geek)
setEditText(
MIUIActivity.safeSP.getString("custom_clock_format_geek", "HH:mm:ss"), "", isSingleLine = false
)
Button(getString(R.string.click_to_view_use_cases)) {
val locale = context.resources.configuration.locale
val language = locale.language
if (language.endsWith("zh")) {
val uri = Uri.parse("https://zhuti.designer.xiaomi.com/docs/grammar/#%E6%97%B6%E9%97%B4%E6%97%A5%E6%9C%9F")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} else {
val uri = Uri.parse("https://docs.google.com/spreadsheets/d/1ghkT2iFbxB3bT4TKCiKAfmEdGt6kTVKFU3dm4Nz1or8/edit?usp=sharing")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
setEditText(MIUIActivity.safeSP.getString("custom_clock_format_geek", "HH:mm:ss"), "", isSingleLine = false)
setLButton(textId = R.string.cancel) {
dismiss()
}
Button(getString(R.string.Done)) {
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
MIUIActivity.safeSP.putAny("custom_clock_format_geek", getEditText())
dismiss()
return@Button
return@setRButton
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show()
}
Button(getString(R.string.cancel), cancelStyle = true) {
dismiss()
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT)
.show()
}
}.show()
}, dataBindingRecv = customClockGeekBinding.binding.getRecv(2))

View File

@@ -566,13 +566,6 @@ import com.lt2333.simplicitytools.R
)
Line()
TitleText(textId = R.string.control_center)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.disable_bluetooth_temporarily_off
), SwitchV(
"disable_bluetooth_temporarily_off"
)
)
val controlCenterWeatherBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"control_center_weather", false

View File

@@ -32,7 +32,37 @@ import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarLayoutForS
import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarNetworkSpeedRefreshSpeedForS
import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarTimeCustomizationForS
import com.lt2333.simplicitytools.hooks.rules.s.systemui.WaveChargeForS
import com.lt2333.simplicitytools.hooks.rules.t.systemui.*
import com.lt2333.simplicitytools.hooks.rules.t.systemui.BatteryPercentageForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.CanNotificationSlideForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.ControlCenterWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.CustomMobileTypeTextForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.DoubleLineNetworkSpeedForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideBatteryIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideHDIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideMobileActivityIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideMobileTypeIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideNetworkSpeedSplitterForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideSimIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideStatusBarIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideStatusBarNetworkSpeedSecondForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideWifiActivityIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.LockScreenClockDisplaySecondsForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.LockScreenCurrentForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.LockScreenDoubleTapToSleepForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.MaximumNumberOfNotificationIconsForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.NewNotificationWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.NotificationWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.OldNotificationWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.OldQSCustomForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.RemoveLockScreenCameraForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.RemoveTheLeftSideOfTheLockScreenForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.ShowWifiStandardForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarBigMobileTypeIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarDoubleTapToSleepForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarLayoutForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarNetworkSpeedRefreshSpeedForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarTimeCustomizationForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.WaveChargeForT
import com.lt2333.simplicitytools.utils.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
@@ -75,7 +105,6 @@ object SystemUI : AppRegister() {
CanNotificationSlideForT, //允许下滑通知打开小窗
LockScreenClockDisplaySecondsForT, // 锁屏时钟显示秒
ShowWifiStandardForT, // 显示 WIFI 角标
DisableBluetoothTemporarilyOffForT, //禁用临时蓝牙关闭
)
}

View File

@@ -1,6 +1,5 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui
import android.app.KeyguardManager
import android.content.Context
import android.content.res.Configuration
@@ -17,11 +16,10 @@ import com.lt2333.simplicitytools.utils.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister
object StatusBarLayoutForS : HookRegister() {
private val getMode = XSPUtils.getInt("status_bar_layout_mode", 0)
private val isCompatibilityMode = XSPUtils.getBoolean("layout_compatibility_mode", false)
private val getHoleLocation = XSPUtils.getInt("screen_hole_location", 0)
private var statusBarLeft = 0
private var statusBarTop = 0
@@ -34,31 +32,23 @@ object StatusBarLayoutForS : HookRegister() {
var mCenterLayout: LinearLayout?
var statusBar: ViewGroup? = null
//判断屏幕状态更新布局 mode: 1正常布局 2居中布局
fun updateLayout(context: Context,mode: Int) {
when(mode){
1->{
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏
statusBar!!.setPadding(statusBarLeft, statusBarTop, statusBarRight, statusBarBottom)
}
}
2->{
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}else{ //竖屏
mLeftLayout!!.setPadding(0, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 0, 0)
}
}
fun updateLayout(context: Context) {
//判断屏幕方向
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
} else {
//横屏状态
mLeftLayout!!.setPadding(175, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 175, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}
}
//判断是否开启挖孔兼容模式
if (isCompatibilityMode) {
//判断是否开启居中挖孔兼容模式
if (getHoleLocation == 1) {
findMethod("com.android.systemui.ScreenDecorations\$DisplayCutoutView") {
name == "boundsFromDirection" && parameterCount == 3 && isStatic
}.hookBefore {
@@ -66,83 +56,48 @@ object StatusBarLayoutForS : HookRegister() {
}
}
//修改对应布局
when (getMode) {
//默认
0 -> {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
if (statusBar == null) return@hookAfter
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
0 -> return
//时钟居中
1 -> {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarContentsId: Int = res.getIdentifier(
"status_bar_contents", "id", "com.android.systemui"
)
val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarContentsId: Int =
res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = res.getIdentifier(
"phone_status_bar_left_container", "id", "com.android.systemui"
)
val notificationIconAreaInnerId: Int = res.getIdentifier(
"notification_icon_area_inner", "id", "com.android.systemui"
)
val phoneStatusBarLeftContainerId: Int =
res.getIdentifier(
"phone_status_bar_left_container",
"id",
"com.android.systemui"
)
val notificationIconAreaInnerId: Int =
res.getIdentifier(
"notification_icon_area_inner",
"id",
"com.android.systemui"
)
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = miuiPhoneStatusBarView.findViewById(statusBarContentsId)
val statusBarContents: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfter
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = miuiPhoneStatusBarView.findViewById(
phoneStatusBarLeftContainerId
)
val notificationIconAreaInner: ViewGroup = miuiPhoneStatusBarView.findViewById(
notificationIconAreaInnerId
)
val systemIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val phoneStatusBarLeftContainer: ViewGroup =
miuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
val notificationIconAreaInner: ViewGroup =
miuiPhoneStatusBarView.findViewById(notificationIconAreaInnerId)
val systemIconArea: ViewGroup =
miuiPhoneStatusBarView.findViewById(systemIconAreaId)
(clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
@@ -153,39 +108,41 @@ object StatusBarLayoutForS : HookRegister() {
)
(systemIconArea.parent as ViewGroup).removeView(systemIconArea)
val mConstraintLayout = ConstraintLayout(context).also {
it.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
val mConstraintLayout =
ConstraintLayout(context).also {
it.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(notificationIconAreaInner)
val fullscreenNotificationIconAreaLp = LinearLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
notificationIconAreaInner.layoutParams = fullscreenNotificationIconAreaLp
//增加一个左对齐布局
mLeftLayout = LinearLayout(context)
val leftLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f
)
val leftLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mLeftLayout!!.layoutParams = leftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局
mCenterLayout = LinearLayout(context)
val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mCenterLayout!!.layoutParams = centerLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
mRightLayout = LinearLayout(context)
val rightLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f
)
val rightLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mRightLayout!!.layoutParams = rightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
mLeftLayout!!.addView(phoneStatusBarLeftContainer)
@@ -203,7 +160,7 @@ object StatusBarLayoutForS : HookRegister() {
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
if (getHoleLocation == 2) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
@@ -213,7 +170,7 @@ object StatusBarLayoutForS : HookRegister() {
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,2)
updateLayout(context)
}
}
@@ -222,7 +179,7 @@ object StatusBarLayoutForS : HookRegister() {
}.hookAfter {
hasEnable("layout_compatibility_mode") {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,2)
updateLayout(context)
}
}
}
@@ -231,12 +188,14 @@ object StatusBarLayoutForS : HookRegister() {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
//组件ID
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val batteryId: Int = res.getIdentifier("battery", "id", "com.android.systemui")
@@ -248,7 +207,8 @@ object StatusBarLayoutForS : HookRegister() {
//新建布局
val rightLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
).also {
it.marginStart = dp2px(context, 5f)
}
@@ -260,36 +220,6 @@ object StatusBarLayoutForS : HookRegister() {
battery.addView(mRightLayout)
(clock.parent as ViewGroup).removeView(clock)
mRightLayout!!.addView(clock)
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
//时钟居中+图标居左
@@ -297,45 +227,65 @@ object StatusBarLayoutForS : HookRegister() {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarContentsId: Int = res.getIdentifier(
"status_bar_contents", "id", "com.android.systemui"
)
val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarContentsId: Int =
res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = res.getIdentifier(
"phone_status_bar_left_container", "id", "com.android.systemui"
)
val fullscreenNotificationIconAreaId: Int = res.getIdentifier(
"fullscreen_notification_icon_area", "id", "com.android.systemui"
)
val statusIconsId: Int = res.getIdentifier(
"statusIcons", "id", "com.android.systemui"
)
val systemIconsId: Int = res.getIdentifier(
"system_icons", "id", "com.android.systemui"
)
val batteryId: Int = res.getIdentifier(
"battery", "id", "com.android.systemui"
)
val phoneStatusBarLeftContainerId: Int =
res.getIdentifier(
"phone_status_bar_left_container",
"id",
"com.android.systemui"
)
val fullscreenNotificationIconAreaId: Int =
res.getIdentifier(
"fullscreen_notification_icon_area",
"id",
"com.android.systemui"
)
val statusIconsId: Int =
res.getIdentifier(
"statusIcons",
"id",
"com.android.systemui"
)
val systemIconsId: Int =
res.getIdentifier(
"system_icons",
"id",
"com.android.systemui"
)
val batteryId: Int =
res.getIdentifier(
"battery",
"id",
"com.android.systemui"
)
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = miuiPhoneStatusBarView.findViewById(statusBarContentsId)
val statusBarContents: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfter
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = miuiPhoneStatusBarView.findViewById(
phoneStatusBarLeftContainerId
)
val fullscreenNotificationIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(
fullscreenNotificationIconAreaId
)
val systemIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val statusIcons: ViewGroup = miuiPhoneStatusBarView.findViewById(statusIconsId)
val systemIcons: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconsId)
val battery: ViewGroup = miuiPhoneStatusBarView.findViewById(batteryId)
val phoneStatusBarLeftContainer: ViewGroup =
miuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
val fullscreenNotificationIconArea: ViewGroup =
miuiPhoneStatusBarView.findViewById(fullscreenNotificationIconAreaId)
val systemIconArea: ViewGroup =
miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val statusIcons: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusIconsId)
val systemIcons: ViewGroup =
miuiPhoneStatusBarView.findViewById(systemIconsId)
val battery: ViewGroup =
miuiPhoneStatusBarView.findViewById(batteryId)
(clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
@@ -349,25 +299,29 @@ object StatusBarLayoutForS : HookRegister() {
fullscreenNotificationIconArea
)
val mConstraintLayout = ConstraintLayout(context).also {
it.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
val mConstraintLayout =
ConstraintLayout(context).also {
it.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(fullscreenNotificationIconArea)
mConstraintLayout.addView(battery)
battery.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.MATCH_PARENT
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also {
it.endToEnd = 0
}
fullscreenNotificationIconArea.layoutParams = ConstraintLayout.LayoutParams(
0, ConstraintLayout.LayoutParams.MATCH_PARENT
0,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also {
it.startToEnd = batteryId
it.endToEnd = 0
@@ -377,25 +331,24 @@ object StatusBarLayoutForS : HookRegister() {
//增加一个左对齐布局
mLeftLayout = LinearLayout(context)
val leftLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f
)
val leftLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mLeftLayout!!.layoutParams = leftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局
mCenterLayout = LinearLayout(context)
val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mCenterLayout!!.layoutParams = centerLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
//增加一个右布局
mRightLayout = LinearLayout(context)
val rightLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f
)
val rightLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mRightLayout!!.layoutParams = rightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
@@ -422,7 +375,7 @@ object StatusBarLayoutForS : HookRegister() {
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
if (getHoleLocation == 2) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
@@ -432,16 +385,16 @@ object StatusBarLayoutForS : HookRegister() {
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,2)
updateLayout(context)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
if (getHoleLocation == 2) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,2)
updateLayout(context)
}
}
@@ -451,10 +404,12 @@ object StatusBarLayoutForS : HookRegister() {
}.hookAfter {
val miuiPhoneStatusBarView = it.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val res = miuiPhoneStatusBarView.resources
val statusBarId = res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarId =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBar1 = miuiPhoneStatusBarView.findViewById<ViewGroup>(statusBarId)
//非锁屏下整个状态栏布局
val keyguardMgr = statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val keyguardMgr =
statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardMgr.isKeyguardLocked) {
statusBar1!!.visibility = View.GONE
} else {

View File

@@ -2,10 +2,12 @@ package com.lt2333.simplicitytools.hooks.rules.s.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.content.res.Resources
import android.os.Handler
import android.provider.Settings
import android.util.TypedValue
import android.view.Gravity
import android.view.ViewGroup
import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils
@@ -14,7 +16,6 @@ import java.lang.reflect.Method
import java.text.SimpleDateFormat
import java.util.*
object StatusBarTimeCustomizationForS : HookRegister() {
private val getMode = XSPUtils.getInt("custom_clock_mode", 0)
@@ -29,12 +30,14 @@ object StatusBarTimeCustomizationForS : HookRegister() {
private val isSecond = XSPUtils.getBoolean("status_bar_time_seconds", false)
private val isDoubleHour = XSPUtils.getBoolean("status_bar_time_double_hour", false)
private val isPeriod = XSPUtils.getBoolean("status_bar_time_period", true)
private val isCenterAlign = XSPUtils.getBoolean("status_bar_time_double_line_center_align", false)
private val isCenterAlign =
XSPUtils.getBoolean("status_bar_time_double_line_center_align", false)
//极客模式
private val getGeekClockSize = XSPUtils.getInt("status_bar_clock_size_geek", 0)
private val getGeekFormat = XSPUtils.getString("custom_clock_format_geek", "HH:mm:ss")
private val isGeekCenterAlign = XSPUtils.getBoolean("status_bar_time_center_align_geek", false)
private val isGeekCenterAlign =
XSPUtils.getBoolean("status_bar_time_center_align_geek", false)
private lateinit var nowTime: Date
private var str = ""
@@ -80,7 +83,9 @@ object StatusBarTimeCustomizationForS : HookRegister() {
}
}
Timer().scheduleAtFixedRate(
T(), 1000 - System.currentTimeMillis() % 1000, 1000
T(),
1000 - System.currentTimeMillis() % 1000,
1000
)
} catch (_: Exception) {
}
@@ -93,7 +98,8 @@ object StatusBarTimeCustomizationForS : HookRegister() {
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString(
c!!.contentResolver, Settings.System.TIME_12_24
c!!.contentResolver,
Settings.System.TIME_12_24
)
val is24 = t == "24"
nowTime = Calendar.getInstance().time
@@ -104,18 +110,15 @@ object StatusBarTimeCustomizationForS : HookRegister() {
}
if (isCenterAlign) {
findConstructor("com.android.systemui.statusbar.views.MiuiClock") {
paramCount == 3
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter {
try {
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
c = it.args[0] as Context
val textV = it.thisObject as TextView
textV.gravity = Gravity.CENTER
}
} catch (_: Exception) {
}
val miuiPhoneStatusBarView =
it.thisObject.getObject("mStatusBar") as ViewGroup
val res: Resources = miuiPhoneStatusBarView.resources
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
clock.gravity = Gravity.CENTER
}
}
}
@@ -149,7 +152,9 @@ object StatusBarTimeCustomizationForS : HookRegister() {
}
}
Timer().scheduleAtFixedRate(
T(), 1000 - System.currentTimeMillis() % 1000, 1000
T(),
1000 - System.currentTimeMillis() % 1000,
1000
)
} catch (_: Exception) {
}
@@ -157,38 +162,27 @@ object StatusBarTimeCustomizationForS : HookRegister() {
findMethod("com.android.systemui.statusbar.views.MiuiClock") {
name == "updateTime"
}.hookBefore {
}.hookAfter {
try {
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val mMiuiStatusBarClockController = textV.getObject("mMiuiStatusBarClockController")
val mCalendar = mMiuiStatusBarClockController.invokeMethodAuto("getCalendar")
mCalendar?.invokeMethodAuto(
"setTimeInMillis", System.currentTimeMillis()
)
val textSb = StringBuilder()
val formatSb = StringBuilder(getGeekFormat.toString())
mCalendar?.invokeMethodAuto("format", c, textSb, formatSb)
textV.text = textSb.toString()
it.result = null
nowTime = Calendar.getInstance().time
textV.text = SimpleDateFormat(getGeekFormat).format(nowTime)
}
} catch (_: Exception) {
}
}
if (isGeekCenterAlign) {
findConstructor("com.android.systemui.statusbar.views.MiuiClock") {
paramCount == 3
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter {
try {
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
c = it.args[0] as Context
val textV = it.thisObject as TextView
textV.gravity = Gravity.CENTER
}
} catch (_: Exception) {
}
val miuiPhoneStatusBarView =
it.thisObject.getObject("mStatusBar") as ViewGroup
val res: Resources = miuiPhoneStatusBarView.resources
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
clock.gravity = Gravity.CENTER
}
}
}
@@ -203,6 +197,7 @@ object StatusBarTimeCustomizationForS : HookRegister() {
if (isYear) {
if (isZh) {
datePattern += "YY年"
// if (!isHideSpace) datePattern = "$datePattern "
} else {
datePattern += "YY"
if (isMonth || isDay) datePattern += "/"
@@ -211,6 +206,7 @@ object StatusBarTimeCustomizationForS : HookRegister() {
if (isMonth) {
if (isZh) {
datePattern += "M月"
// if (!isHideSpace) datePattern = "$datePattern "
} else {
datePattern += "M"
if (isDay) datePattern += "/"

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister
object DisableBluetoothTemporarilyOffForT: HookRegister() {
override fun init()= hasEnable("disable_bluetooth_temporarily_off") {
findMethod("com.android.settingslib.bluetooth.LocalBluetoothAdapter"){
name == "isSupportBluetoothRestrict" && parameterCount==1
}.hookBefore {
it.result = false
}
}
}

View File

@@ -28,31 +28,21 @@ object StatusBarLayoutForT : HookRegister() {
private var statusBarBottom = 0
override fun init() {
// TODO: Android13状态栏布局不可用
var mLeftLayout: LinearLayout? = null
var mRightLayout: LinearLayout? = null
var mCenterLayout: LinearLayout?
var statusBar: ViewGroup? = null
//判断屏幕状态更新布局 mode: 1正常布局 2居中布局
fun updateLayout(context: Context,mode: Int) {
when(mode){
1->{
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏
statusBar!!.setPadding(statusBarLeft, statusBarTop, statusBarRight, statusBarBottom)
}
}
2->{
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}else{ //竖屏
mLeftLayout!!.setPadding(0, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 0, 0)
}
}
fun updateLayout(context: Context) {
//判断屏幕方向
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}
}
@@ -65,52 +55,9 @@ object StatusBarLayoutForT : HookRegister() {
}
}
//修改对应布局
when (getMode) {
//默认
0 -> {
findMethod("com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
if (statusBar == null) return@hookAfter
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
0 -> return
//时钟居中
1 -> {
findMethod("com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment") {
@@ -212,7 +159,7 @@ object StatusBarLayoutForT : HookRegister() {
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,2)
updateLayout(context)
}
}
@@ -221,7 +168,7 @@ object StatusBarLayoutForT : HookRegister() {
}.hookAfter {
hasEnable("layout_compatibility_mode") {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,2)
updateLayout(context)
}
}
}
@@ -259,36 +206,6 @@ object StatusBarLayoutForT : HookRegister() {
battery.addView(mRightLayout)
(clock.parent as ViewGroup).removeView(clock)
mRightLayout!!.addView(clock)
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
//时钟居中+图标居左
@@ -431,7 +348,7 @@ object StatusBarLayoutForT : HookRegister() {
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,2)
updateLayout(context)
}
}
//兼容模式
@@ -440,7 +357,7 @@ object StatusBarLayoutForT : HookRegister() {
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,2)
updateLayout(context)
}
}

View File

@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">Mantener presionando el icono del escritorio para añadir a una ventana de acceso rápido</string>
<string name="miuihome_shortcut_add_small_window_title">Ventana pequeña </string>
<string name="click_to_view_use_cases">Clic para ver casos de uso</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">Deshabilitar Bluetooth temporalmente apagado</string>
</resources>

View File

@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">ホーム画面のアイコンを長押しすると、素早く開けるウィンドウを追加できます</string>
<string name="miuihome_shortcut_add_small_window_title">小さいウィンドウ</string>
<string name="click_to_view_use_cases">クリックして使用例を表示</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">Bluetooth を一時的に無効にする</string>
</resources>

View File

@@ -1,11 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Desempenho</string>
<string name="lock_max_fps">Bloqueie o limite superior da taxa de atualização atual</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remover exibição sobre notificação</string>
<string name="delete_on_post_notification_summary">Remover a notificação \"este aplicativo é exibido sobre outros aplicativos\"</string>
<string name="other">Outros</string>
<string name="disable_flag_secure">Permitir captura de ecrã</string>
<!--Status bar icons-->
</resources>

View File

@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">Nhấn và giữ biểu tượng màn hình chính để thêm cửa sổ mở nhanh</string>
<string name="miuihome_shortcut_add_small_window_title">Cửa sổ nhỏ</string>
<string name="click_to_view_use_cases">Nhấp để xem các trường hợp sử dụng</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">Vô hiệu hóa bluetooth tạm thời tắt</string>
</resources>

View File

@@ -1,177 +1,251 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">性能</string>
<string name="lock_max_fps">鎖定當前刷新率上限</string>
<string name="ui"></string>
<string name="lock_max_fps">鎖定目前重新整理速率上限</string>
<string name="ui"></string>
<string name="delete_on_post_notification">移除上層顯示通知</string>
<string name="delete_on_post_notification_summary">移除 \"此應用正顯示在螢幕上其他應用的上層\" 通知</string>
<string name="delete_on_post_notification_summary">移除此應用程式正顯示在螢幕上其他應用程式的上層通知</string>
<string name="other">其他</string>
<string name="disable_flag_secure">允許截圖</string>
<string name="disable_flag_secure_summary">開啟後允許在不允許截圖的軟件中截圖\n支持添加下拉控制中心快速開關,保障安全</string>
<string name="disable_flag_secure">允許螢幕截圖</string>
<string name="disable_flag_secure_summary">開啟後允許在不允許截圖的軟件中截圖\n支援新增下拉控制中心快速開關,保障安全</string>
<string name="home">桌面</string>
<string name="home_time">始終顯示桌面時鐘</string>
<string name="reboot_host">重啟全部作用域</string>
<string name="reboot_host">重啟所有作用範圍</string>
<string name="reboot">重啟系統</string>
<!--Status bar icons-->
<string name="status_bar_icon">狀態欄圖標</string>
<string name="hide_no_sim_icon">隱藏 無SIM卡 圖標</string>
<string name="hide_sim_one_icon">隱藏 SIM卡一 圖標</string>
<string name="hide_sim_two_icon">隱藏 SIM卡二 圖標</string>
<string name="hide_vpn_icon">隱藏 VPN 圖標</string>
<string name="hide_airplane_icon">隱藏 飛行模式 圖標</string>
<string name="hide_wifi_icon">隱藏 WIFI 圖標</string>
<string name="hide_bluetooth_icon">隱藏 藍牙 圖標</string>
<string name="hide_volume_zen_icon">隱藏 聲音、勿擾 圖標</string>
<string name="hide_alarm_icon">隱藏 鬧鐘 圖標</string>
<string name="hide_hotspot_icon">隱藏 WIFI熱點 圖標</string>
<string name="hide_headset_icon">隱藏 耳機 圖標</string>
<string name="hide_bluetooth_battery_icon">隱藏 藍牙電量 圖標</string>
<string name="hide_nfc_icon">隱藏 NFC 圖標</string>
<string name="hide_big_hd_icon">隱藏 大HD 圖標</string>
<string name="hide_small_hd_icon">隱藏 小HD 圖標</string>
<string name="hide_new_hd_icon">隱藏 新HD 圖標</string>
<string name="hide_hd_no_service_icon">隱藏 HD無服務 圖標</string>
<string name="status_bar_icon">狀態列圖示</string>
<string name="hide_no_sim_icon">隱藏「無 SIM 卡」圖示</string>
<string name="hide_sim_one_icon">隱藏SIM 卡 1」圖示</string>
<string name="hide_sim_two_icon">隱藏SIM 卡 2」圖示</string>
<string name="hide_vpn_icon">隱藏VPN」圖示</string>
<string name="hide_airplane_icon">隱藏飛行模式」圖示</string>
<string name="hide_wifi_icon">隱藏WIFI」圖示</string>
<string name="hide_bluetooth_icon">隱藏藍牙」圖示</string>
<string name="hide_volume_zen_icon">隱藏聲音、勿擾」圖示</string>
<string name="hide_alarm_icon">隱藏鬧鐘」圖示</string>
<string name="hide_hotspot_icon">隱藏WIFI 熱點」圖示</string>
<string name="hide_headset_icon">隱藏耳機」圖示</string>
<string name="hide_bluetooth_battery_icon">隱藏藍牙電量」圖示</string>
<string name="hide_nfc_icon">隱藏NFC」圖示</string>
<string name="hide_big_hd_icon">隱藏「大型 HD」圖示</string>
<string name="hide_small_hd_icon">隱藏「小型 HD」圖示</string>
<string name="hide_new_hd_icon">隱藏「新 HD」圖示</string>
<string name="hide_hd_no_service_icon">隱藏HD 無服務」圖示</string>
<string name="about">關於</string>
<string name="about_module">關於模</string>
<string name="about_module">關於模</string>
<string name="verison">版本</string>
<string name="dev_coolapk">開發酷安</string>
<string name="opensource">源倉</string>
<string name="github_url">歡迎更多開發共同參與開發</string>
<string name="issues">饋/提議</string>
<string name="issues_url">點擊查看GitHub Issues</string>
<string name="statusbar">狀態欄</string>
<string name="dev_coolapk">開發人員酷安</string>
<string name="opensource">放原始碼存放</string>
<string name="github_url">歡迎更多開發人員共同參與開發</string>
<string name="issues">饋/提議</string>
<string name="issues_url">按一下以檢視 GitHub 問題</string>
<string name="xposeddescription">基於 MIUI13+(Android 12+) 的客製化工具</string>
<string name="statusbar">狀態列</string>
<string name="status_bar_time_seconds">顯示秒數</string>
<string name="status_bar_network_speed_refresh_speed">網速秒刷新</string>
<string name="remove_the_maximum_number_of_notification_icons">除通知圖標個數上限</string>
<string name="main_switch">塊總開關</string>
<string name="hide_gps_icon">隱藏 GPS 圖標</string>
<string name="hide_status_bar_network_speed_second">隱藏網速(/s單位</string>
<string name="menu"></string>
<string name="status_bar_network_speed_refresh_speed">每秒更新即時網絡速度</string>
<string name="remove_the_maximum_number_of_notification_icons">除通知圖示數目上限</string>
<string name="main_switch">組主開關</string>
<string name="hide_gps_icon">隱藏GPS」圖示</string>
<string name="hide_status_bar_network_speed_second">隱藏網絡速度 (/s) 單位</string>
<string name="menu"></string>
<string name="Tips">提示</string>
<string name="skip_waiting_time">跳過 5/10 秒警告時間</string>
<string name="unlock_unlimited_cropping">移除裁剪圖片/螢幕截圖的限制</string>
<string name="hide_slave_wifi_icon">隱藏 WIFI輔助 圖標</string>
<string name="HideLauncherIcon">隱藏桌面圖</string>
<string name="hide_battery_percentage_icon">隱藏電量%</string>
<string name="hide_battery_icon">隱藏 電池 圖標</string>
<string name="status_bar_clock_format">狀態時鐘格式</string>
<string name="hide_slave_wifi_icon">隱藏WIFI 次要」圖示</string>
<string name="HideLauncherIcon">隱藏桌面圖</string>
<string name="hide_battery_percentage_icon">隱藏電量 (%)</string>
<string name="hide_battery_icon">隱藏電池」圖示</string>
<string name="status_bar_clock_format">狀態時鐘格式</string>
<string name="status_bar_time_year">顯示年份</string>
<string name="status_bar_time_month">顯示月份</string>
<string name="status_bar_time_day">顯示日期</string>
<string name="status_bar_time_week">顯示星期</string>
<string name="status_bar_time_hide_space">隱藏間隔</string>
<string name="allow_screenshots">允許截圖</string>
<string name="lock_max">鎖定前上限</string>
<string name="lock_max">鎖定前上限</string>
<string name="status_bar_time_double_hour">顯示時辰</string>
<string name="custom_clock_switch">定義時鐘-總開關</string>
<string name="custom_clock_switch">訂時鐘 - 主開關</string>
<string name="status_bar_time_period">顯示時段</string>
<string name="status_bar_time_double_line">顯示</string>
<string name="status_bar_clock_size">時鐘大小0不更改</string>
<string name="status_bar_clock_double_line_size">大小0不更改</string>
<string name="status_bar_time_double_line">顯示</string>
<string name="status_bar_clock_size">時鐘大小 (0無變更)</string>
<string name="status_bar_clock_double_line_size">大小 (0無變更)</string>
<string name="matters_needing_attention">功能無法生效?</string>
<string name="Done">確定</string>
<string name="about_module_summary">查看模塊相關訊息</string>
<string name="contributor_list">源倉庫貢獻者名單</string>
<string name="developer">開發</string>
<string name="about_module_summary">檢視模組相關資訊</string>
<string name="contributor_list">放原始碼存放庫貢獻者名單</string>
<string name="developer">開發人員</string>
<string name="thank_list">感謝名單</string>
<string name="third_party_open_source_statement">第三方開聲明</string>
<string name="corepacth">除安裝限制</string>
<string name="corepacth_summary">降級/不同簽/無簽安裝</string>
<string name="prevent_recovery_of_battery_optimization_white_list">防止恢復電池優化白名單</string>
<string name="third_party_open_source_statement">第三方開放原始碼聲明</string>
<string name="corepacth">除安裝限制</string>
<string name="corepacth_summary">降級/不同簽/無簽安裝</string>
<string name="prevent_recovery_of_battery_optimization_white_list">防止復原電池效能最佳化白名單</string>
<string name="failed_after_restart">系統重啟後仍會還原</string>
<string name="battery_optimization">電池</string>
<string name="battery_optimization_summary">快速打開被MIUI隱藏的電池化功能</string>
<string name="battery_optimization">電池效能最佳</string>
<string name="battery_optimization_summary">快速開啟被 MIUI 隱藏的電池效能最佳化功能</string>
<string name="remove_small_window_restrictions">強制使用小窗</string>
<string name="app_coolapk_url">來酷安給我們五星好評</string>
<string name="app_coolapk_url_summary">這可以使我們被更多的人發現</string>
<string name="qq_channel">加入 官方QQ頻道</string>
<string name="tg_channel">加入 官方TG頻道</string>
<string name="tg_channel_summary">可在頻道資料頁進入交流群</string>
<string name="qq_channel">加入官方 QQ 頻道</string>
<string name="tg_channel">加入官方 TG 頻道</string>
<string name="tg_channel_summary">可在頻道頁面進入聊天群組</string>
<string name="discussions">討論</string>
<string name="remove_small_window_restrictions_summary">忽略系統黑名單與軟件禁止小窗</string>
<string name="remove_the_left_side_of_the_lock_screen">移除鎖定螢幕負一屏功能</string>
<string name="remove_small_window_restrictions_summary">忽略系統黑名單與軟件小窗封鎖</string>
<string name="remove_the_left_side_of_the_lock_screen">移除負一屏功能鎖定</string>
<string name="remove_lock_screen_camera">移除鎖定螢幕相機功能</string>
<string name="only_official_default_themes_are_supported">僅支官方默認主題</string>
<string name="lock_one_hundred">手機管家鎖定100分</string>
<string name="scope">作用</string>
<string name="scope_android">系統</string>
<string name="scope_systemui">系統界面</string>
<string name="only_official_default_themes_are_supported">僅支官方預設主題</string>
<string name="lock_one_hundred">手機管家鎖定 100 </string>
<string name="scope">作用範圍</string>
<string name="scope_android">系統架</string>
<string name="scope_systemui">系統 UI</string>
<string name="scope_miuihome">系統桌面</string>
<string name="scope_other">其他</string>
<string name="status_bar_network_speed_refresh_speed_summary">將狀態欄網速組件的刷新頻率改成1s</string>
<string name="status_bar_network_speed_refresh_speed_summary">將狀態列網絡速度元件的更新間隔變更為 1s</string>
<string name="hide_battery_percentage_icon_summary">需自行開啟電池百分比外顯功能</string>
<string name="hide_status_bar_network_speed_second_summary">隱藏狀態欄網速組件的(/s單位</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">除狀態最多能顯示3個通知的限制</string>
<string name="scope_systemui_summary">定義系統面、狀態、鎖定螢幕等</string>
<string name="scope_android_summary">首次啟動模塊 或 模塊更新後,\n此處的功能需重啟系統後才能生效</string>
<string name="scope_other_summary">手機管家、相編輯、電量與性能等</string>
<string name="hide_status_bar_network_speed_second_summary">隱藏狀態列網絡速度元件的 (/s) 單位</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">除狀態最多能顯示三條通知的限制</string>
<string name="scope_systemui_summary">系統面、狀態、鎖定螢幕等</string>
<string name="scope_android_summary">首次啟動模組或模組更新後,\n此處的功能需重啟系統後才能生效</string>
<string name="scope_other_summary">手機管家、相簿編輯、電量與性能等</string>
<string name="scope_powerkeeper">電量與性能</string>
<string name="scope_securitycenter">手機管家</string>
<string name="scope_mediaeditor">編輯</string>
<string name="home_time_summary">開啟後即使存在時鐘小組件\n也不會對狀態欄隱藏時鐘</string>
<string name="skip_waiting_time_summary">開啟後可忽略MIUI在開啟USB調試、\n未知來源、無障礙時的凍結時間</string>
<string name="lock_one_hundred_summary">鎖定手機管家100分並屏蔽修復按鈕</string>
<string name="unlock_unlimited_cropping_summary">無視MIUI對圖片裁切的最小限制</string>
<string name="hide_wifi_activity_icon">隱藏 WIFI箭頭 圖標</string>
<string name="hide_mobile_activity_icon">隱藏 移動箭頭 圖標</string>
<string name="hide_mobile_type_icon">隱藏 移動類型 圖標</string>
<string name="show_weather_main_switch">顯示天氣-總開關</string>
<string name="scope_mediaeditor">簿編輯</string>
<string name="home_time_summary">開啟後即使存在時鐘小工具\n也不會隱藏狀態列時鐘</string>
<string name="skip_waiting_time_summary">開啟後可忽略 MIUI 在開啟 USB 偵錯、\n未知應用程式來源、無障礙時的凍結時間</string>
<string name="lock_one_hundred_summary">鎖定手機管家 100 分並封鎖修復按鈕</string>
<string name="unlock_unlimited_cropping_summary">忽略 MIUI 對圖片裁切的最小限制</string>
<string name="hide_wifi_activity_icon">隱藏WIFI 活動」圖示</string>
<string name="hide_mobile_activity_icon">隱藏「流動網絡活動」圖示</string>
<string name="hide_mobile_type_icon">隱藏「流動網絡類型」圖示</string>
<string name="show_weather_main_switch">顯示天氣 - 主開關</string>
<string name="lock_screen">鎖定螢幕</string>
<string name="notification_center">通知中心</string>
<string name="show_city">顯示城市</string>
<string name="lock_max_fps_summary">持添加下拉控制中心快速開關,時切換</string>
<string name="lock_max_fps_summary">援新增下拉控制中心快速開關,時切換</string>
<string name="control_center">控制中心</string>
<string name="control_center_weather_summary">暫不支妙享版控制中心</string>
<string name="not_support">您似乎正在使用過時的 LSPosed 版本或 LSPosed 未啟,請更新 LSPosed 或者啟動後再試。</string>
<string name="matters_needing_attention_context">首次啟動或更新後建議重啟手機\n絕大部分功能更後需要在右上角重啟作用域後生效</string>
<string name="control_center_weather_summary">暫不支妙享版控制中心</string>
<string name="not_support">您似乎正在使用過時的 LSPosed 版本或 LSPosed 未啟,請更新 LSPosed 或啟用後再試一次</string>
<string name="matters_needing_attention_context">首次啟動或更新後建議重啟手機\n絕大部分功能更後需要在右上角重啟範圍後生效</string>
<string name="are_you_sure_reboot">確定重啟系統?</string>
<string name="cancel">取消</string>
<string name="are_you_sure_reboot_scope">確定重啟全部作用域</string>
<string name="hide_battery_charging_icon">隱藏 充電 圖標</string>
<string name="hide_wifi_standard_icon">隱藏 WIFI標準 圖標</string>
<string name="status_bar_time_center">時間</string>
<string name="status_bar_layout_summary">更多狀態欄佈局等待開發中</string>
<string name="status_bar_layout">狀態欄佈局</string>
<string name="layout_compatibility_mode">兼容模式</string>
<string name="left_margin">左邊距 (0: 自動)</string>
<string name="right_margin">右邊距 (0: 自動)</string>
<string name="remove_macro_blacklist">去除遊戲自動連招黑名單</string>
<string name="hide_network_speed_splitter">隱藏網速分隔符</string>
<string name="are_you_sure_reboot_scope">確定重啟所有作用範圍</string>
<string name="hide_battery_charging_icon">隱藏充電」圖示</string>
<string name="hide_wifi_standard_icon">隱藏WIFI 標準」圖示</string>
<string name="status_bar_time_center">時間</string>
<string name="status_bar_layout_summary">更多狀態列配置等候開發中</string>
<string name="status_bar_layout">狀態列配置</string>
<string name="layout_compatibility_mode">相容性模式</string>
<string name="left_margin">左邊距 (0自動)</string>
<string name="right_margin">右邊距 (0自動)</string>
<string name="layout_compatibility_mode_summary">強制全螢幕配置 (支援所有螢幕凹口或空缺)</string>
<string name="remove_macro_blacklist">移除遊戲自動連招黑名單</string>
<string name="hide_network_speed_splitter">隱藏網絡速度分割器</string>
<string name="updater">系統更新</string>
<string name="remove_ota_validate">*移除OTA驗證 [實驗性]</string>
<string name="remove_ota_validate_summary">- 僅支VAB系列使用其餘系列請不要開啟。\n- 無需內測資格即可刷入完整內測包。\n- 擁有內測權限的用戶將無法接收內測更新\n可用於屏蔽系統更新。\n- 跨版本類型升級後,建議清空數據。\n- 不支非官方ROM使用。</string>
<string name="remove_ota_validate">*移除 OTA 驗證 [實驗性]</string>
<string name="remove_ota_validate_summary">- 僅支VAB 系列使用,其餘系列請不要開啟。\n- 無需內測資格即可刷入完整內測包。\n- 擁有內測權限的使用者將無法接收內測更新\n可用於隱藏系統更新。\n- 跨版本類型升級後,建議清除資料。\n- 不支非官方 ROM 使用。</string>
<string name="settings">設定</string>
<string name="show_notification_importance">顯示通知重要程度</string>
<string name="show_notification_importance_summary">顯示 MIUI 12 及之後版本被隱藏的通知重要程度設定</string>
<string name="remove_ad">廣告</string>
<string name="remove_thememanager_ads">拿掉主題壁紙的廣告</string>
<string name="battery_life_function">電池頁面展示當前溫度</string>
<string name="enable_wave_charge_animation">啟用Alpha充電動畫</string>
<string name="max_wallpaper_scale">壁紙縮放比例</string>
<string name="def">"默認值:"</string>
<string name="current">前值:</string>
<string name="remove_ad">移除廣告</string>
<string name="remove_thememanager_ads">移除個性主題廣告</string>
<string name="battery_life_function">電池頁面顯示目前溫度</string>
<string name="enable_wave_charge_animation">啟用 MIX Alpha 充電動畫</string>
<string name="max_wallpaper_scale">桌布縮放比例</string>
<string name="def">"預設值: "</string>
<string name="current">前值:</string>
<string name="participate_in_translation">參與翻譯</string>
<string name="participate_in_translation_summary">助我們將這個APP翻譯您的語言</string>
<string name="lock_screen_charging_current">充電時顯示前電流</string>
<string name="current_current">前電流</string>
<string name="remove_open_app_confirmation_popup">移除打開應用彈</string>
<string name="remove_open_app_confirmation_popup_summary">移除 \"XXX 想要開 XXX\" 的彈窗 。</string>
<string name="hide_volume_icon">隱藏 音量 圖標</string>
<string name="hide_zen_icon">隱藏 勿擾 圖標</string>
<string name="hide_icon">隱藏圖</string>
<string name="double_tap_to_sleep">雙擊鎖定螢幕</string>
<string name="home_double_tap_to_sleep_summary">雙擊空白處鎖定螢幕</string>
<string name="participate_in_translation_summary">助我們將這個應用程式翻譯您的語言</string>
<string name="lock_screen_charging_current">充電時顯示前電流</string>
<string name="current_current">前電流</string>
<string name="remove_open_app_confirmation_popup">移除「開啟應用程式」彈出式視</string>
<string name="remove_open_app_confirmation_popup_summary">移除XXX 想要開 XXX」的彈出式視窗</string>
<string name="hide_volume_icon">隱藏音量」圖示</string>
<string name="hide_zen_icon">隱藏勿擾」圖示</string>
<string name="hide_icon">隱藏圖</string>
<string name="double_tap_to_sleep">輕觸兩下鎖定螢幕</string>
<string name="home_double_tap_to_sleep_summary">輕觸兩下空白位置鎖定螢幕</string>
<string name="old_quick_settings_panel">舊版快速設定面板</string>
<string name="old_qs_custom_switch">定義行列</string>
<string name="qs_custom_columns_unexpanded">未展開</string>
<string name="qs_custom_rows"></string>
<string name="qs_custom_columns"></string>
<string name="qs_custom_rows_horizontal">(橫屏)</string>
<string name="status_bar_dual_row_network_speed">排網路速度</string>
<string name="status_bar_dual_row_network_speed_summary">上下行網路速度顯示</string>
<string name="status_bar_network_speed">狀態列網速度</string>
<string name="status_bar_network_speed_dual_row_size">大小0不更改</string>
<string name="status_bar_network_speed_dual_row_icon">排圖標</string>
<string name="pkg_installer">應用包管理組件</string>
<string name="pkg_installer_summary">禁用頻繁安裝應用檢查</string>
<string name="old_qs_custom_switch">行列</string>
<string name="qs_custom_columns_unexpanded">行 (未展開)</string>
<string name="qs_custom_rows"></string>
<string name="qs_custom_columns"></string>
<string name="qs_custom_rows_horizontal">(橫向)</string>
<string name="status_bar_dual_row_network_speed">列網絡速度</string>
<string name="status_bar_dual_row_network_speed_summary">上下列網絡速度顯示</string>
<string name="status_bar_network_speed">狀態列網速度</string>
<string name="status_bar_network_speed_dual_row_size">大小 (0無變更)</string>
<string name="status_bar_network_speed_dual_row_icon">列圖示</string>
<string name="none"></string>
<string name="status_bar_network_speed_dual_row_gravity">雙列對齊</string>
<string name="left">置左</string>
<string name="right">置右</string>
<string name="big_mobile_type_icon">大型流動網絡圖示</string>
<string name="show_wifi_standard">顯示 WiFi 標準</string>
<string name="can_notification_slide">強制允許所有通知使用小窗</string>
<string name="battery_percentage_font_size">電量百分比字型大小</string>
<string name="zero_do_no_change">0無變更</string>
<string name="big_mobile_type_icon_size">大型流動網絡圖示大小</string>
<string name="big_mobile_type_icon_bold">大型流動網絡圖示粗體</string>
<string name="big_mobile_type_icon_up_and_down_position">大型流動網絡圖示上下位置</string>
<string name="input_error">輸入錯誤</string>
<string name="range">範圍:</string>
<string name="big_mobile_type_icon_left_and_right_margins">大型流動網絡圖示左右邊距</string>
<string name="cast">投放</string>
<string name="force_support_send_app">強制所有應用程式支援在其他裝置開啟</string>
<string name="status_bar_time_double_line_center_align">雙列置中對齊</string>
<string name="default1">預設值</string>
<string name="clock_center">時鐘置中</string>
<string name="clock_right">時鐘置右</string>
<string name="status_bar_layout_mode">狀態列配置模式</string>
<string name="clock_center_and_icon_left">時鐘置中 + 圖示置左</string>
<string name="maximum_number_of_notification_icons">通知圖示最大數目</string>
<string name="maximum_number_of_notification_dots">通知圓點最大數目</string>
<string name="custom_mobile_type_text">自訂流動網絡類型文字</string>
<string name="custom_mobile_type_text_switch">自訂流動網絡類型文字開關</string>
<string name="downgr">允許降級安裝應用程式</string>
<string name="downgr_summary">允許在已安裝新版的情況下覆寫為舊版本</string>
<string name="authcreak">停用安裝程式簽章驗證</string>
<string name="authcreak_summary">關閉安裝應用程式時的簽名驗證,可以安裝被修改的 APK</string>
<string name="digestCreak">停用 APK 簽章驗證</string>
<string name="digestCreak_summary">允許安裝套件名稱相同但簽章不同的應用程式</string>
<string name="UsePreSig">安裝時始終使用已安裝應用程式的簽章</string>
<string name="UsePreSig_summary">安裝時始終使用已安裝應用程式的簽章\n這非常<b>危險</b>\n僅在真正需要時啟用</string>
<string name="enhancedMode">增強模式</string>
<string name="enhancedMode_summary">可以解決一些應用程式內部的完整性驗證,一般不需要開啟</string>
<string name="rear_display">後方螢幕 (11 Ultra)</string>
<string name="lock_screen_clock_display_seconds">時鐘顯示秒數</string>
<string name="sound">聲音</string>
<string name="media_volume_steps_switch">媒體音量階數</string>
<string name="allow_untrusted_touches">允許不受信任的觸控</string>
<string name="take_effect_after_reboot">重新開機後生效</string>
<string name="media_volume_steps_summary">開啟後可能會導致音量列捲動卡頓或藍牙音量異常</string>
<string name="can_notification_slide_summary">可能無法支援一些使用小米推送 (Mi Push) 推播的通知</string>
<string name="screen_hole_location">螢幕凹口位置</string>
<string name="custom_clock_mode">自訂時鐘模式</string>
<string name="custom_clock_format_geek">時鐘格式</string>
<string name="off">關閉</string>
<string name="center">置中</string>
<string name="left_or_right">左右</string>
<string name="preset">預設</string>
<string name="geek">極客</string>
<string name="do_not_clear_app">防止終止背景應用程式</string>
<string name="do_not_clear_app_summary">可能會增加耗電,建議配合「使 Millet 更加積極」使用不建議配合墓碑、A1 記憶體管理等會強制應用程式進入快取的模組使用</string>
<string name="make_millet_more_aggressive">使 Millet 更加積極</string>
<string name="make_millet_more_aggressive_summary">允許 Millet 在背景應用程式有通知、有服務執行、有處理程序執行的狀況下凍結應用程式。\n不希望被凍結的應用程式可將省電策略設為無限制\n啟用前請先解除安裝墓碑和 NoANR 相關模組。</string>
<string name="make_millet_ignore_active">允許 Millet 凍結使用中的應用程式</string>
<string name="make_millet_ignore_active_summary">非常積極,可能會影響應用程式執行</string>
<string name="pkg_installer">套件安裝程式</string>
<string name="pkg_installer_summary">停用頻繁應用程式安裝檢查</string>
<string name="big_mobile_type_only_show_network_card">大型流動網絡僅會顯示網絡卡</string>
<string name="big_mobile_type_location">大型流動網絡位置</string>
<string name="miuihome_recentview_remove_card_animation">修改卡片動畫</string>
<string name="miuihome_recentview_remove_card_animation_summary">修改在最近任務介面移除卡片的動畫效果</string>
<string name="miuihome_recentwiew_wallpaper_darkening">停用桌布壓暗</string>
<string name="miuihome_recentwiew_wallpaper_darkening_summary">這將會停用進出最近任務介面時的桌布壓暗效果</string>
<string name="miuihome_scroll_icon_name">捲動顯示應用程式名稱</string>
<string name="miuihome_scroll_icon_name_summary">過長的應用程式名稱將會捲動,而不會在多列顯示</string>
<string name="miuihome_shortcut_add_small_window">捷徑選單新增小窗</string>
<string name="miuihome_shortcut_add_small_window_summary">長按桌面圖示以快速開啟小窗應用程式</string>
<string name="miuihome_shortcut_add_small_window_title">小窗應用程式</string>
<string name="click_to_view_use_cases">按一下以檢視案例</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">停用暫時關閉藍牙</string>
</resources>

View File

@@ -52,7 +52,7 @@
<string name="skip_waiting_time">跳過 5/10 秒警告時間</string>
<string name="unlock_unlimited_cropping">移除裁剪圖片/螢幕截圖的限制</string>
<string name="hide_slave_wifi_icon">隱藏「WIFI 次要」圖示</string>
<string name="HideLauncherIcon">隱藏桌面圖示</string>
<string name="HideLauncherIcon">隱藏桌面圖示</string>
<string name="hide_battery_percentage_icon">隱藏電量 (%)</string>
<string name="hide_battery_icon">隱藏「電池」圖示</string>
<string name="status_bar_clock_format">狀態列時鐘格式</string>
@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">長按桌面圖示以快速開啟小窗應用程式</string>
<string name="miuihome_shortcut_add_small_window_title">小窗應用程式</string>
<string name="click_to_view_use_cases">按一下以檢視案例</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">停用暫時關閉藍牙</string>
</resources>

View File

@@ -43,7 +43,7 @@
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13+(Android 12+)</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
@@ -251,5 +251,4 @@
<string name="miuihome_shortcut_add_small_window_summary">Press and hold the desktop icon to add a quick open window</string>
<string name="miuihome_shortcut_add_small_window_title">Small window</string>
<string name="click_to_view_use_cases">Click to view use cases</string>
<string name="disable_bluetooth_temporarily_off">Disable bluetooth temporarily off</string>
</resources>