From 786f2a123cc4534971bc7b03fe771d6b99e72ae8 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Wed, 11 Mar 2026 15:01:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(face):=20=E4=BA=BA=E8=84=B8=E5=BA=93?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E6=97=B6=E8=87=AA=E5=8A=A8=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7=E9=87=87=E9=9B=86=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 newUserCollect() 方法,人脸数据库记录为零时自动显示采集界面 - onResume 中异步查询人脸数量,据此决定进入采集模式或正常识别模式 - 修复 isFirstOpen 依赖 1000ms 延迟的竞态问题,改为立即置 false - 顺带修改 FunActivity 按钮文案为「清除并拉取全量数据」 Co-Authored-By: Claude Sonnet 4.6 --- .../activity/LoginByFaceActivity.kt | 34 ++++++++++++++++--- app/src/main/res/layout/activity_fun.xml | 2 +- 2 files changed, 31 insertions(+), 5 deletions(-) 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 d015a7b..7dbc21d 100644 --- a/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt +++ b/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt @@ -59,6 +59,7 @@ import com.sw.platecabinet.utils.SoundPoolUtil import com.sw.platecabinet.utils.SpTool import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -348,6 +349,20 @@ class LoginByFaceActivity : BaseActivity(), binding.ivCollectPhoto.visible() } + private fun newUserCollect() { + recognizeCountDownUtil.cancelCountDown() + binding.tvToInit.text = "" + binding.tvSimilarValue.text = "" + binding.llCollectButton.visible() + binding.btnRetry.gone() + binding.btnCollect.run { + visible() + text = "新用户采集" + } + binding.ivCollectPhoto.gone() + resumeCamera() + } + /** * 查询餐盘数据 */ @@ -674,13 +689,24 @@ class LoginByFaceActivity : BaseActivity(), super.onResume() try { if (isFirstOpen) { + isFirstOpen = false goInitActivity() - binding.root.postDelayed({ - isFirstOpen = false - }, 1000) return } - resetRecognizeState() + + lifecycleScope.launch { + try { + val faceDao = FaceDatabase.getInstance(this@LoginByFaceActivity).faceDao() + val faceCount = withContext(Dispatchers.IO) { faceDao.faceCount } + if (faceCount == 0) { + newUserCollect() + } else { + resetRecognizeState() + } + } catch (e: Exception) { + e.printStackTrace() + } + } } catch (e: Exception) { e.printStackTrace() } diff --git a/app/src/main/res/layout/activity_fun.xml b/app/src/main/res/layout/activity_fun.xml index ef2991e..fc3bd5a 100644 --- a/app/src/main/res/layout/activity_fun.xml +++ b/app/src/main/res/layout/activity_fun.xml @@ -65,7 +65,7 @@ android:layout_marginHorizontal="50dp" android:paddingHorizontal="30dp" android:background="@drawable/btn_outline" - android:text="清除并重新拉取数据" + android:text="清除并拉取全量数据" android:textColor="#FFCC99" />