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坐标计算距离