全量人脸数据改为首次打开app获取

This commit is contained in:
2026-03-05 09:43:41 +08:00
parent b96f9872cb
commit 3b88b011a3
3 changed files with 20 additions and 16 deletions
@@ -7,6 +7,7 @@ import com.sw.plate.utils.arcface.FaceApi
import com.sw.platecabinet.GlobalData import com.sw.platecabinet.GlobalData
import com.sw.platecabinet.databinding.ActivityDeviceInitBinding import com.sw.platecabinet.databinding.ActivityDeviceInitBinding
import com.sw.platecabinet.databinding.ItemTitleTimeBinding import com.sw.platecabinet.databinding.ItemTitleTimeBinding
import com.sw.platecabinet.utils.SpTool
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -48,9 +49,11 @@ class DeviceInitActivity : BaseActivity<ActivityDeviceInitBinding>() {
showWaitingDialog("加载中……") showWaitingDialog("加载中……")
lifecycleScope.launch { lifecycleScope.launch {
withContext(Dispatchers.Default) { withContext(Dispatchers.Default) {
val count = FaceApi().queryFaceCount() //val count = FaceApi().queryFaceCount()
if (count == 0) { //if (count == 0) {
if (SpTool.getFirstGetFace()) {
userViewModel.getUserFaceCache { status, msg -> userViewModel.getUserFaceCache { status, msg ->
SpTool.setFirstGetFace(false)
getDeviceConfig() getDeviceConfig()
} }
} else { } else {
@@ -658,7 +658,8 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
} }
// 调用示例:构造 1920×1080 的全黑帧(长度 1382400 // 调用示例:构造 1920×1080 的全黑帧(长度 1382400
private val emptyFrame = createBlackNV21Frame(1920, 1080) // private val emptyFrame = createBlackNV21Frame(1920, 1080)
private val emptyFrame = createBlackNV21Frame(1280, 720)
// 传递“空帧” recognizeViewModel.onPreviewFrame(emptyFrame, true) // 传递“空帧” recognizeViewModel.onPreviewFrame(emptyFrame, true)
// /** // /**
@@ -854,23 +855,15 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
//1-会员、2-临时用户 //1-会员、2-临时用户
it.userType = if (faceModel.isMember) "1" else "2" it.userType = if (faceModel.isMember) "1" else "2"
} }
faceDao.insert(faceEntity) val faceId = faceDao.insert(faceEntity)
faceEntity.faceId = faceId
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------") loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
recognizeViewModel.refreshFaceList() recognizeViewModel.refreshFaceList()
loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------") loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------")
val faceCount = faceDao.getFaceCount()
isRecognition = false
runOnUiThread { runOnUiThread {
ToastUtils.showToast("采集完成") //采集完成,不再识别,直接提示成功
recognizeViewModel.onPreviewFrame(emptyFrame, true) isRecognition = false
if (faceCount == 1) { recognizeSuccess("${System.currentTimeMillis()}")
//数据库的第一条数据,刚采集完成
binding.dualCameraFaceRectView.clearFaceInfo()
recognizeViewModel.clearLeftFace(facePreviewInfoList)
binding.root.postDelayed({
isRecognition = true
}, 1500)
}
} }
loadLogInfo("---------------------------------") loadLogInfo("---------------------------------")
collectCount = 0 collectCount = 0
@@ -10,6 +10,9 @@ import com.sw.platecabinet.model.response.EquipmentUserInfo
object SpTool { object SpTool {
const val LAST_FACE_TIMESTAMP: String = "faceTimestamp" const val LAST_FACE_TIMESTAMP: String = "faceTimestamp"
const val PLATE_BOX_DATA: String = "plateBoxBind" const val PLATE_BOX_DATA: String = "plateBoxBind"
const val IS_FIRST_GET_FACE = "isFirstGetFace"
private var spUtil: SPUtil? = null private var spUtil: SPUtil? = null
init { init {
@@ -39,4 +42,9 @@ object SpTool {
return GsonUtils.fromJsonList(jsonData, EquipmentUserInfo::class.java) return GsonUtils.fromJsonList(jsonData, EquipmentUserInfo::class.java)
} }
fun getFirstGetFace() = spUtil?.get(IS_FIRST_GET_FACE, false)?:false
fun setFirstGetFace(state: Boolean) {
spUtil?.boolean(IS_FIRST_GET_FACE, state)
}
} }