From 098a8f1a4c9bc5cdfd01dd70efb1138c987c0060 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Fri, 16 Feb 2024 21:47:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E7=9B=91=E5=90=AC`S?= =?UTF-8?q?creen`=E4=BA=8B=E4=BB=B6=E7=BB=86=E5=88=86`On/Off/Locked/Unlock?= =?UTF-8?q?ed`=20#399?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../main/java/com/idormy/sms/forwarder/App.kt | 1 + .../entity/condition/LockScreenSetting.kt | 44 ++++++++++++----- .../fragment/condition/LockScreenFragment.kt | 23 ++++++--- .../forwarder/receiver/LockScreenReceiver.kt | 27 +++++++++-- .../fragment_tasks_condition_lock_screen.xml | 48 +++++++++++++++++++ app/src/main/res/values-en/strings.xml | 4 ++ app/src/main/res/values-zh-rCN/strings.xml | 12 +++-- app/src/main/res/values-zh-rTW/strings.xml | 12 +++-- app/src/main/res/values/strings.xml | 12 +++-- 10 files changed, 148 insertions(+), 36 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fcbac990..71777098 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -272,6 +272,7 @@ + 0) String.format(getString(R.string.duration_minute), timeAfterOn.toString()) else "" - description = String.format(getString(R.string.time_after_screen_on_description), duration) - action = Intent.ACTION_SCREEN_ON - } else { - val duration = if (timeAfterOff > 0) String.format(getString(R.string.duration_minute), timeAfterOff.toString()) else "" - description = String.format(getString(R.string.time_after_screen_off_description), duration) - action = Intent.ACTION_SCREEN_OFF + constructor(actionCheckId: Int, timeAfterOff: Int, timeAfterOn: Int, timeAfterLocked: Int, timeAfterUnlocked: Int) : this() { + when (actionCheckId) { + R.id.rb_action_screen_on -> { + val duration = if (timeAfterOn > 0) String.format(getString(R.string.duration_minute), timeAfterOn.toString()) else "" + description = String.format(getString(R.string.time_after_screen_on_description), duration) + action = Intent.ACTION_SCREEN_ON + } + + R.id.rb_action_screen_unlocked -> { + val duration = if (timeAfterUnlocked > 0) String.format(getString(R.string.duration_minute), timeAfterUnlocked.toString()) else "" + description = String.format(getString(R.string.time_after_screen_unlocked_description), duration) + action = Intent.ACTION_USER_PRESENT + } + + R.id.rb_action_screen_locked -> { + val duration = if (timeAfterLocked > 0) String.format(getString(R.string.duration_minute), timeAfterLocked.toString()) else "" + description = String.format(getString(R.string.time_after_screen_locked_description), duration) + action = Intent.ACTION_SCREEN_OFF + "_LOCKED" + } + + else -> { + val duration = if (timeAfterOff > 0) String.format(getString(R.string.duration_minute), timeAfterOff.toString()) else "" + description = String.format(getString(R.string.time_after_screen_off_description), duration) + action = Intent.ACTION_SCREEN_OFF + } } timeAfterScreenOff = timeAfterOff @@ -30,7 +48,9 @@ data class LockScreenSetting( fun getActionCheckId(): Int { return when (action) { Intent.ACTION_SCREEN_ON -> R.id.rb_action_screen_on - else -> R.id.rb_action_screen_off + Intent.ACTION_SCREEN_OFF -> R.id.rb_action_screen_off + Intent.ACTION_USER_PRESENT -> R.id.rb_action_screen_unlocked + else -> R.id.rb_action_screen_locked } } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt index 4f0ebe94..a0f59f4e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LockScreenFragment.kt @@ -54,12 +54,15 @@ class LockScreenFragment : BaseFragment - if (checkedId == R.id.rb_action_screen_off) { - binding!!.xsbTimeAfterScreenOff.visibility = View.VISIBLE - binding!!.xsbTimeAfterScreenOn.visibility = View.GONE - } else { - binding!!.xsbTimeAfterScreenOff.visibility = View.GONE - binding!!.xsbTimeAfterScreenOn.visibility = View.VISIBLE + binding!!.xsbTimeAfterScreenOff.visibility = View.GONE + binding!!.xsbTimeAfterScreenLocked.visibility = View.GONE + binding!!.xsbTimeAfterScreenOn.visibility = View.GONE + binding!!.xsbTimeAfterScreenUnlocked.visibility = View.GONE + when (checkedId) { + R.id.rb_action_screen_on -> binding!!.xsbTimeAfterScreenOn.visibility = View.VISIBLE + R.id.rb_action_screen_unlocked -> binding!!.xsbTimeAfterScreenUnlocked.visibility = View.VISIBLE + R.id.rb_action_screen_locked -> binding!!.xsbTimeAfterScreenLocked.visibility = View.VISIBLE + else -> binding!!.xsbTimeAfterScreenOff.visibility = View.VISIBLE } checkSetting(true) } @@ -71,10 +74,14 @@ class LockScreenFragment : BaseFragment().setInputData( workDataOf( TaskWorker.conditionType to TASK_CONDITION_LOCK_SCREEN, - TaskWorker.action to intent.action, + TaskWorker.action to action, ) ).build() WorkManager.getInstance(context).enqueue(request) } + + private fun isDeviceLocked(context: Context?): Boolean { + val keyguardManager = context?.getSystemService(Context.KEYGUARD_SERVICE) as? KeyguardManager + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + keyguardManager?.isDeviceLocked ?: false + } else { + // 对于较早版本的 Android,无法直接检查设备锁定状态 + false + } + } } diff --git a/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml b/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml index 7d6e1974..54aaeed4 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml @@ -86,6 +86,30 @@ app:xsb_rulerColor="@color/xui_config_color_gray_4" app:xsb_rulerInterval="ten" /> + + + + + + + + diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 8b50891f..b0a2f79b 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1268,6 +1268,10 @@ %sAfter Screen Off Time After Screen On (Minutes) %sAfter Screen On + Time After Screen Locked (Minutes) + %sAfter Screen Locked + Time After Screen Unlocked (Minutes) + %sAfter Screen Unlocked %s minutes Calculate distance based on GPS coordinates. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e2eae1d8..b0b2493f 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1265,10 +1265,14 @@ SIM-1 SIM-2 - 屏幕锁定后多长时间(分钟) - 屏幕锁定%s后 - 屏幕解锁后多长时间(分钟) - 屏幕解锁%s后 + 屏幕息屏后多长时间(分钟) + 屏幕息屏%s后 + 屏幕开屏后多长时间(分钟) + 屏幕开屏%s后 + 屏幕锁定后多长时间(分钟) + 屏幕锁定%s后 + 屏幕解锁后多长时间(分钟) + 屏幕解锁%s后 %s分钟 根据GPS坐标计算距离 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 03c30196..18c75224 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1265,10 +1265,14 @@ SIM-1 SIM-2 - 屏幕鎖定後多長時間(分鐘) - 屏幕鎖定%s後 - 屏幕解鎖後多長時間(分鐘) - 屏幕解鎖%s後 + 屏幕息屏後多長時間(分鐘) + 屏幕息屏%s後 + 屏幕開屏後多長時間(分鐘) + 屏幕開屏%s後 + 屏幕鎖定後多長時間(分鐘) + 屏幕鎖定%s后 + 屏幕解鎖後多長時間(分鐘) + 屏幕解鎖%s后 %s分鐘 根據GPS坐標計算距離 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1cf3fca0..75ef00fc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1265,10 +1265,14 @@ SIM-1 SIM-2 - 屏幕锁定后多长时间(分钟) - 屏幕锁定%s后 - 屏幕解锁后多长时间(分钟) - 屏幕解锁%s后 + 屏幕息屏后多长时间(分钟) + 屏幕息屏%s后 + 屏幕开屏后多长时间(分钟) + 屏幕开屏%s后 + 屏幕锁定后多长时间(分钟) + 屏幕锁定%s后 + 屏幕解锁后多长时间(分钟) + 屏幕解锁%s后 %s分钟 根据GPS坐标计算距离