From b96f9872cbc23d17c84c85a148deef127449199d Mon Sep 17 00:00:00 2001 From: mazengfei <331023091@qq.com> Date: Wed, 4 Mar 2026 14:56:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sw/platecabinet/activity/BaseActivity.kt | 13 +++++++++++++ .../platecabinet/activity/LoginByFaceActivity.kt | 15 ++++++++++++++- .../sw/platecabinet/viewmodel/UserViewModel.kt | 11 +++++++++-- .../java/com/sw/plate/utils/arcface/FaceApi.java | 6 ++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt b/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt index ea36470..54b911a 100644 --- a/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt +++ b/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt @@ -441,6 +441,12 @@ abstract class BaseActivity : AppCompatActivity() { runOnUiThread { if (pageNo == 1 && list.isEmpty()) { //未查询到增量数据 +// Thread{ +// val faceDao = FaceDatabase.getInstance(this).faceDao() +// if (faceDao.getFaceCount() == 0) { +// FaceEntity("-1", null, byteArrayOf(-1)).also { it.userType = "-1" } +// } +// }.start() return@runOnUiThread } updateFaceData(list) @@ -470,6 +476,9 @@ abstract class BaseActivity : AppCompatActivity() { if (model.faceDeleted == true) { //删除数据 faceDao.deleteFaceById(model.userId) +// if (faceDao.getFaceCount() == 0) { +// FaceEntity("-1", null, byteArrayOf(-1)).also { it.userType = "-1" } +// } } else { val faceData = faceDao.queryByUserName(model.userId) if (faceData == null) { @@ -518,6 +527,10 @@ abstract class BaseActivity : AppCompatActivity() { val faceDao = FaceDatabase.getInstance(App.getContext()).faceDao() faceDao.deleteAll() faceDao.resetId() +// faceDao.insert( +// FaceEntity("-1", null, byteArrayOf(-1)).also { it.userType = "-1" } +// ) + recognizeViewModel.refreshFaceList() runOnUiThread { block() } }.start() } 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 be286b2..a60e3a4 100644 --- a/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt +++ b/app/src/main/java/com/sw/platecabinet/activity/LoginByFaceActivity.kt @@ -858,7 +858,20 @@ class LoginByFaceActivity : BaseActivity(), loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------") recognizeViewModel.refreshFaceList() loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------") - runOnUiThread { recognizeViewModel.onPreviewFrame(emptyFrame, true) } + val faceCount = faceDao.getFaceCount() + isRecognition = false + runOnUiThread { + ToastUtils.showToast("采集完成") + recognizeViewModel.onPreviewFrame(emptyFrame, true) + if (faceCount == 1) { + //数据库的第一条数据,刚采集完成 + binding.dualCameraFaceRectView.clearFaceInfo() + recognizeViewModel.clearLeftFace(facePreviewInfoList) + binding.root.postDelayed({ + isRecognition = true + }, 1500) + } + } loadLogInfo("---------------------------------") collectCount = 0 block() diff --git a/app/src/main/java/com/sw/platecabinet/viewmodel/UserViewModel.kt b/app/src/main/java/com/sw/platecabinet/viewmodel/UserViewModel.kt index d965fa1..89e5d9d 100644 --- a/app/src/main/java/com/sw/platecabinet/viewmodel/UserViewModel.kt +++ b/app/src/main/java/com/sw/platecabinet/viewmodel/UserViewModel.kt @@ -79,10 +79,16 @@ class UserViewModel : BaseViewModel() { return@launchWithLoading } val faceEntityList = list.map { - FaceEntity(it.userId, null, Base64.decode(it.faceFeatureStr)) + FaceEntity(it.userId, null, Base64.decode(it.faceFeatureStr)).apply { + userType = if (it.isMember) "1" else "2" + } } withContext(Dispatchers.Default) { - faceApi.updateFaceData(pageNo, faceEntityList) + if (currentPageNo == 1) { + //第一页数据删除本地数据库 + faceApi.clearFaceData() + } + faceApi.updateFaceData( pageNo, faceEntityList) if (list.size >= pageSize) { faceTimestamp = list.last().faceUpdateTimestamp ?: 0 currentPageNo++ @@ -103,6 +109,7 @@ class UserViewModel : BaseViewModel() { private var faceTimestamp = 0L + /** * 激活人脸识别引擎 */ diff --git a/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java b/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java index aa2a2ab..17b2417 100644 --- a/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java +++ b/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java @@ -40,6 +40,12 @@ public class FaceApi { faceDao.insert(list); } + public void clearFaceData() { + FaceDao faceDao = FaceDatabase.getInstance(App.getContext()).faceDao(); + faceDao.deleteAll(); + faceDao.resetId(); + } + /** * 激活arcsoft 人脸 *