全量人脸数据改为首次打开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.databinding.ActivityDeviceInitBinding
import com.sw.platecabinet.databinding.ItemTitleTimeBinding
import com.sw.platecabinet.utils.SpTool
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -48,9 +49,11 @@ class DeviceInitActivity : BaseActivity<ActivityDeviceInitBinding>() {
showWaitingDialog("加载中……")
lifecycleScope.launch {
withContext(Dispatchers.Default) {
val count = FaceApi().queryFaceCount()
if (count == 0) {
//val count = FaceApi().queryFaceCount()
//if (count == 0) {
if (SpTool.getFirstGetFace()) {
userViewModel.getUserFaceCache { status, msg ->
SpTool.setFirstGetFace(false)
getDeviceConfig()
}
} else {
@@ -658,7 +658,8 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
}
// 调用示例:构造 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)
// /**
@@ -854,23 +855,15 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
//1-会员、2-临时用户
it.userType = if (faceModel.isMember) "1" else "2"
}
faceDao.insert(faceEntity)
val faceId = faceDao.insert(faceEntity)
faceEntity.faceId = faceId
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
recognizeViewModel.refreshFaceList()
loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------")
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)
}
//采集完成,不再识别,直接提示成功
isRecognition = false
recognizeSuccess("${System.currentTimeMillis()}")
}
loadLogInfo("---------------------------------")
collectCount = 0
@@ -10,6 +10,9 @@ import com.sw.platecabinet.model.response.EquipmentUserInfo
object SpTool {
const val LAST_FACE_TIMESTAMP: String = "faceTimestamp"
const val PLATE_BOX_DATA: String = "plateBoxBind"
const val IS_FIRST_GET_FACE = "isFirstGetFace"
private var spUtil: SPUtil? = null
init {
@@ -39,4 +42,9 @@ object SpTool {
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)
}
}