@@ -50,7 +50,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
50
50
51
51
private var active: Boolean = false
52
52
private var lockStateReceiver: BroadcastReceiver ? = null
53
- private var requirePinOnBootReceiver : BroadcastReceiver ? = null
53
+ private var unlockReceiver : BroadcastReceiver ? = null
54
54
private var controller: FaceAuthServiceController ? = null
55
55
private var keyguardManager: KeyguardManager ? = null
56
56
private var displayManager: DisplayManager ? = null
@@ -63,6 +63,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
63
63
private lateinit var prefs: Prefs
64
64
65
65
private var showStatusText = true
66
+ private var booted = false
66
67
67
68
override fun onCreate () {
68
69
super .onCreate()
@@ -73,7 +74,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
73
74
74
75
prefs = FaceApplication .getApp().prefs
75
76
76
- controller = FaceAuthServiceController (this , this )
77
+ controller = FaceAuthServiceController (this , prefs, this )
77
78
78
79
windowManager = getSystemService()
79
80
keyguardManager = getSystemService()
@@ -85,12 +86,13 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
85
86
textView?.setShadowLayer(10f , 0f , 0f , Color .BLACK )
86
87
textView?.setTextSize(TypedValue .COMPLEX_UNIT_SP , 16f )
87
88
textView?.setPadding(0 , 16 .dpToPx.toInt(), 0 , 0 )
89
+ textView?.textAlignment = TextView .TEXT_ALIGNMENT_CENTER
88
90
89
- if (prefs.requirePinOnBoot.get()) {
90
- setupRequirePinOnBootReceiver()
91
- } else {
91
+ booted = ! prefs.requirePinOnBoot.get()
92
+ if (booted) {
92
93
reconfigureUnlockHook()
93
94
}
95
+ setupUnlockReceiver()
94
96
95
97
serviceScope.launch {
96
98
prefs.showStatusText.asFlow().collect { showStatusText ->
@@ -99,30 +101,33 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
99
101
}
100
102
}
101
103
102
- private fun setupRequirePinOnBootReceiver () {
104
+ private fun setupUnlockReceiver () {
103
105
val intentFilter = IntentFilter ().apply {
104
106
addAction(Intent .ACTION_USER_PRESENT )
105
107
}
106
- requirePinOnBootReceiver = object : BroadcastReceiver () {
108
+ unlockReceiver = object : BroadcastReceiver () {
107
109
override fun onReceive (p0 : Context ? , p1 : Intent ? ) {
108
- unregisterRequirePinOnBootReceiver()
109
- reconfigureUnlockHook()
110
+ if (! booted) {
111
+ booted = true
112
+ reconfigureUnlockHook()
113
+ }
114
+ prefs.failedUnlockAttempts.set(0 )
110
115
}
111
116
}
112
- registerReceiver(requirePinOnBootReceiver , intentFilter)
117
+ registerReceiver(unlockReceiver , intentFilter)
113
118
}
114
119
115
- private fun unregisterRequirePinOnBootReceiver () {
116
- requirePinOnBootReceiver ?.let {
120
+ private fun unregisterUnlockReceiver () {
121
+ unlockReceiver ?.let {
117
122
unregisterReceiver(it)
118
- requirePinOnBootReceiver = null
123
+ unlockReceiver = null
119
124
}
120
125
}
121
126
122
127
private fun reconfigureUnlockHook () {
123
128
serviceScope.launch {
124
129
prefs.earlyUnlockHook.asFlow().collect { earlyUnlock ->
125
- unregisterUnlockReceiver ()
130
+ unregisterLockStateReceiver ()
126
131
if (earlyUnlock) {
127
132
registerEarlyUnlockReceiver()
128
133
} else {
@@ -163,7 +168,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
163
168
registerReceiver(lockStateReceiver, intentFilter)
164
169
}
165
170
166
- private fun unregisterUnlockReceiver () {
171
+ private fun unregisterLockStateReceiver () {
167
172
lockStateReceiver?.let {
168
173
unregisterReceiver(it)
169
174
lockStateReceiver = null
@@ -184,8 +189,8 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
184
189
override fun onDestroy () {
185
190
super .onDestroy()
186
191
192
+ unregisterLockStateReceiver()
187
193
unregisterUnlockReceiver()
188
- unregisterRequirePinOnBootReceiver()
189
194
hide()
190
195
serviceJob.cancel()
191
196
}
0 commit comments