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