diff --git a/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt b/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt index 88a614e..9b8df31 100644 --- a/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt +++ b/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt @@ -46,6 +46,7 @@ import com.sw.platecabinet.utils.Debouncer import com.sw.platecabinet.utils.LogFileUtil import com.sw.platecabinet.utils.PermissionHelper import com.sw.platecabinet.utils.PlateUtils +import com.sw.platecabinet.utils.RegisterCallbackHandler import com.sw.platecabinet.utils.SoundPoolUtil import com.sw.platecabinet.utils.SpTool import org.greenrobot.eventbus.EventBus @@ -184,14 +185,15 @@ class LoginByFaceActivity : BaseActivity(), private val livenessType = LivenessType.RGB private var openRectInfoDraw = false private val regDebouncer = Debouncer(3000) + private var registerHandler: RegisterCallbackHandler? = null private fun initArcViewModel() { recognizeViewModel.setLiveType(livenessType) recognizeViewModel.prepareRegister() recognizeViewModel.setOnRegisterFinishedCallback { facePreviewInfo, userFaceInfo -> - regDebouncer.debounce { + registerHandler?.setCallback { if (!isCollectFace) { - return@debounce + return@setCallback } if (this.userFaceInfo == null && userFaceInfo != null) { recognizeViewModel.updateRegisterStatus(RecognizeViewModel.REGISTER_STATUS_DONE) @@ -201,7 +203,6 @@ class LoginByFaceActivity : BaseActivity(), isCollectFace = false sendFaceData(faceData, headBmp) } - return@debounce } } } @@ -685,6 +686,7 @@ class LoginByFaceActivity : BaseActivity(), private var tempUserId: String = "" override fun onResume() { super.onResume() + registerHandler = RegisterCallbackHandler() try { if (isFirstOpen) { goInitActivity() diff --git a/app/src/main/java/com/sw/platecabinet/utils/RegisterCallbackHandler.kt b/app/src/main/java/com/sw/platecabinet/utils/RegisterCallbackHandler.kt new file mode 100644 index 0000000..5c11ee7 --- /dev/null +++ b/app/src/main/java/com/sw/platecabinet/utils/RegisterCallbackHandler.kt @@ -0,0 +1,15 @@ +package com.sw.platecabinet.utils + +class RegisterCallbackHandler { + private var isCallbackCalled = false + private val lock = Any() + + fun setCallback(callback: () -> Unit) { + synchronized(lock) { + if (!isCallbackCalled) { + isCallbackCalled = true + callback() + } + } + } +} \ No newline at end of file