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 d80b9ea9..f66664ca 100644
--- a/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt
+++ b/app/src/main/java/com/lt2333/simplicitytools/activity/SettingsActivity.kt
@@ -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(
diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt
index f0fddaca..53387bf4 100644
--- a/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt
+++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/SystemUI.kt
@@ -41,6 +41,7 @@ object SystemUI: AppRegister() {
StatusBarBigMobileTypeIcon, //大移动类型
BatteryPercentage, //电量百分比
CustomMobileTypeText, //自定义移动类型文本
+ LockScreenClockDisplaySeconds, // 锁屏时钟显示秒
)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenClockDisplaySeconds.kt b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenClockDisplaySeconds.kt
new file mode 100644
index 00000000..019f32af
--- /dev/null
+++ b/app/src/main/java/com/lt2333/simplicitytools/hook/app/systemui/LockScreenClockDisplaySeconds.kt
@@ -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
+ }
+}
\ 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 3b93d290..0c94969d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -213,4 +213,5 @@
Enhanced Mode
Pass some validation in the application
Rear Display (11Ultra)
+ Lock screen clock display seconds