@@ -50,7 +50,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
5050
5151 private var active: Boolean = false
5252 private var lockStateReceiver: BroadcastReceiver ? = null
53- private var requirePinOnBootReceiver : BroadcastReceiver ? = null
53+ private var unlockReceiver : BroadcastReceiver ? = null
5454 private var controller: FaceAuthServiceController ? = null
5555 private var keyguardManager: KeyguardManager ? = null
5656 private var displayManager: DisplayManager ? = null
@@ -63,6 +63,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
6363 private lateinit var prefs: Prefs
6464
6565 private var showStatusText = true
66+ private var booted = false
6667
6768 override fun onCreate () {
6869 super .onCreate()
@@ -73,7 +74,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
7374
7475 prefs = FaceApplication .getApp().prefs
7576
76- controller = FaceAuthServiceController (this , this )
77+ controller = FaceAuthServiceController (this , prefs, this )
7778
7879 windowManager = getSystemService()
7980 keyguardManager = getSystemService()
@@ -85,12 +86,13 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
8586 textView?.setShadowLayer(10f , 0f , 0f , Color .BLACK )
8687 textView?.setTextSize(TypedValue .COMPLEX_UNIT_SP , 16f )
8788 textView?.setPadding(0 , 16 .dpToPx.toInt(), 0 , 0 )
89+ textView?.textAlignment = TextView .TEXT_ALIGNMENT_CENTER
8890
89- if (prefs.requirePinOnBoot.get()) {
90- setupRequirePinOnBootReceiver()
91- } else {
91+ booted = ! prefs.requirePinOnBoot.get()
92+ if (booted) {
9293 reconfigureUnlockHook()
9394 }
95+ setupUnlockReceiver()
9496
9597 serviceScope.launch {
9698 prefs.showStatusText.asFlow().collect { showStatusText ->
@@ -99,30 +101,33 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
99101 }
100102 }
101103
102- private fun setupRequirePinOnBootReceiver () {
104+ private fun setupUnlockReceiver () {
103105 val intentFilter = IntentFilter ().apply {
104106 addAction(Intent .ACTION_USER_PRESENT )
105107 }
106- requirePinOnBootReceiver = object : BroadcastReceiver () {
108+ unlockReceiver = object : BroadcastReceiver () {
107109 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 )
110115 }
111116 }
112- registerReceiver(requirePinOnBootReceiver , intentFilter)
117+ registerReceiver(unlockReceiver , intentFilter)
113118 }
114119
115- private fun unregisterRequirePinOnBootReceiver () {
116- requirePinOnBootReceiver ?.let {
120+ private fun unregisterUnlockReceiver () {
121+ unlockReceiver ?.let {
117122 unregisterReceiver(it)
118- requirePinOnBootReceiver = null
123+ unlockReceiver = null
119124 }
120125 }
121126
122127 private fun reconfigureUnlockHook () {
123128 serviceScope.launch {
124129 prefs.earlyUnlockHook.asFlow().collect { earlyUnlock ->
125- unregisterUnlockReceiver ()
130+ unregisterLockStateReceiver ()
126131 if (earlyUnlock) {
127132 registerEarlyUnlockReceiver()
128133 } else {
@@ -163,7 +168,7 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
163168 registerReceiver(lockStateReceiver, intentFilter)
164169 }
165170
166- private fun unregisterUnlockReceiver () {
171+ private fun unregisterLockStateReceiver () {
167172 lockStateReceiver?.let {
168173 unregisterReceiver(it)
169174 lockStateReceiver = null
@@ -184,8 +189,8 @@ class LockscreenFaceAuthService : AccessibilityService(), FaceAuthServiceCallbac
184189 override fun onDestroy () {
185190 super .onDestroy()
186191
192+ unregisterLockStateReceiver()
187193 unregisterUnlockReceiver()
188- unregisterRequirePinOnBootReceiver()
189194 hide()
190195 serviceJob.cancel()
191196 }
0 commit comments