锁屏时钟显示秒数 (#132)

* 锁屏时钟显示秒数

* 锁屏时钟显示秒数

* 锁屏时钟显示秒数
This commit is contained in:
LinW_
2022-04-05 19:23:54 +08:00
committed by GitHub
parent b2e465ba3d
commit e32718eedf
4 changed files with 123 additions and 0 deletions

View File

@@ -1315,6 +1315,15 @@ class SettingsActivity : MIUIActivity() {
add(LineV())
add(TitleTextV(resId = R.string.lock_screen))
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.lock_screen_clock_display_seconds,
tipsId = R.string.only_official_default_themes_are_supported
),
SwitchV("lock_screen_clock_display_seconds")
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(

View File

@@ -41,6 +41,7 @@ object SystemUI: AppRegister() {
StatusBarBigMobileTypeIcon, //大移动类型
BatteryPercentage, //电量百分比
CustomMobileTypeText, //自定义移动类型文本
LockScreenClockDisplaySeconds, // 锁屏时钟显示秒
)
}
}

View File

@@ -0,0 +1,112 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.provider.Settings
import android.util.AttributeSet
import android.util.Log
import android.widget.LinearLayout
import android.widget.TextView
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import java.lang.reflect.Method
import java.text.SimpleDateFormat
import java.util.*
object LockScreenClockDisplaySeconds : HookRegister() {
private var nowTime: Date = Calendar.getInstance().time
override fun init() {
hasEnable("lock_screen_clock_display_seconds") {
"com.miui.clock.MiuiBaseClock".findClass(getDefaultClassLoader())
.hookAfterConstructor(
Context::class.java,
AttributeSet::class.java
) {
try {
val viewGroup = it.thisObject as LinearLayout
val d: Method = viewGroup.javaClass.getDeclaredMethod("updateTime")
val r = Runnable {
d.isAccessible = true
d.invoke(viewGroup)
}
class T : TimerTask() {
override fun run() {
Handler(viewGroup.context.mainLooper).post(r)
}
}
Timer().scheduleAtFixedRate(
T(),
1000 - System.currentTimeMillis() % 1000,
1000
)
} catch (e: java.lang.Exception) {
}
}
"com.miui.clock.MiuiLeftTopClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, false)
}
"com.miui.clock.MiuiLeftTopLargeClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, false)
}
"com.miui.clock.MiuiCenterHorizontalClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, false)
}
"com.miui.clock.MiuiVerticalClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, true)
}
}
}
private fun updateTime(it: XC_MethodHook.MethodHookParam, isVertical: Boolean) {
val textV = it.thisObject.getObjectField("mTimeText") as TextView
val c: Context = textV.context
Log.d(
"lock_screen_clock_display_seconds",
"updateTime: " + it.thisObject.javaClass.simpleName
)
val is24 = Settings.System.getString(
c.contentResolver,
Settings.System.TIME_12_24
) == "24"
nowTime = Calendar.getInstance().time
textV.text = getTime(is24, isVertical)
}
@SuppressLint("SimpleDateFormat")
private fun getTime(is24: Boolean, isVertical: Boolean): String {
var timePattern = ""
if (isVertical) { //垂直
timePattern += if (is24) "HH\nmm\nss" else "hh\nmm\nss"
} else { //水平
timePattern += if (is24) "HH:mm:ss" else "h:mm:ss"
}
timePattern = SimpleDateFormat(timePattern).format(nowTime)
return timePattern
}
}

View File

@@ -213,4 +213,5 @@
<string name="enhancedMode">Enhanced Mode</string>
<string name="enhancedMode_summary">Pass some validation in the application</string>
<string name="rear_display">Rear Display (11Ultra)</string>
<string name="lock_screen_clock_display_seconds">Lock screen clock display seconds</string>
</resources>