This commit is contained in:
2026-02-03 18:51:13 +08:00
parent 0024ea2775
commit a8bbf68b9b
@@ -52,6 +52,7 @@ import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import timber.log.Timber import timber.log.Timber
import java.io.File
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
/** /**
@@ -196,9 +197,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
getFaceDataBlock { faceData, headBmp -> getFaceDataBlock { faceData, headBmp ->
isCollecting.set(false) isCollecting.set(false)
isCollectFace = false isCollectFace = false
Thread {
sendFaceData(faceData, headBmp) sendFaceData(faceData, headBmp)
}.start()
} }
return@setOnRegisterFinishedCallback return@setOnRegisterFinishedCallback
} }
@@ -291,7 +290,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
* 如果similar>=0.3&&similar<=0.8时,暂时不作为失败情况,再识别5次如果similar<0.8则作为识别失败处理 * 如果similar>=0.3&&similar<=0.8时,暂时不作为失败情况,再识别5次如果similar<0.8则作为识别失败处理
*/ */
private fun loadFaceRecognizeResult2(result: CompareResult?) { private fun loadFaceRecognizeResult2(result: CompareResult?) {
// 无有效结果直接忽略 // 无有效结果直接忽略
val similar = result?.similar ?: return val similar = result?.similar ?: return
@@ -302,7 +300,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
) )
if (similar >= faceSuccessThreshold) { if (similar >= faceSuccessThreshold) {
val userId = result.faceEntity?.userName val userId = result.faceEntity?.userName
if (userId.isNullOrBlank()) { if (userId.isNullOrBlank()) {
loadLogInfo("collectFace,recognizeUserId 识别成功但 userId 为空,忽略") loadLogInfo("collectFace,recognizeUserId 识别成功但 userId 为空,忽略")
@@ -332,7 +329,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
} }
if (similar <= faceFailThreshold || retryFailCount >= maxFailCount) { if (similar <= faceFailThreshold || retryFailCount >= maxFailCount) {
loadLogInfo( loadLogInfo(
"collectFace,recognizeUserId 识别失败,开始采集 similar=$similar, " + "collectFace,recognizeUserId 识别失败,开始采集 similar=$similar, " +
"retry=$retryFailCount, time=${DateTimeUtils.getDateTimeString()}" "retry=$retryFailCount, time=${DateTimeUtils.getDateTimeString()}"
@@ -342,7 +338,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
return return
} }
retryFailCount = 0 retryFailCount = 0
isCollectFace = true isCollectFace = true
collectFace()//采集人脸 collectFace()//采集人脸
@@ -766,6 +761,8 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
loadLogInfo("collectFace: ----------5,人脸采集中-----------") loadLogInfo("collectFace: ----------5,人脸采集中-----------")
} }
private val uploadFaceDebouncer = Debouncer(10000)
/** /**
* 改为上传人脸数据,不需要发生人脸数据到收银端 * 改为上传人脸数据,不需要发生人脸数据到收银端
*/ */
@@ -780,6 +777,18 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
ToastUtils.showToast("获取人脸照片失败") ToastUtils.showToast("获取人脸照片失败")
return return
} }
uploadFaceDebouncer.debounce {
addUserFace(faceData, imageFile)
}
// // 给某个客户端发送
// val jsonObject = JSONObject().also {
// it.put("type", "faceFeature")
// it.put("content", faceData)
// }
// tcpClient?.send(jsonObject)
}
private fun addUserFace(faceData: String, imageFile: File) {
settingViewModel.addUserFace(faceData, imageFile) { status, faceModel -> settingViewModel.addUserFace(faceData, imageFile) { status, faceModel ->
loadLogInfo("collectFace,saveFaceInfo: ----------12,人脸数据发送完成时间:${DateTimeUtils.getDateTimeString()},结果:$status-----------") loadLogInfo("collectFace,saveFaceInfo: ----------12,人脸数据发送完成时间:${DateTimeUtils.getDateTimeString()},结果:$status-----------")
if (status.not()) { if (status.not()) {
@@ -792,14 +801,11 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
loadLogInfo("collectFace,sendFaceData: ----------12,发送人脸数据成功但接口返回为null,faceData=${faceData}") loadLogInfo("collectFace,sendFaceData: ----------12,发送人脸数据成功但接口返回为null,faceData=${faceData}")
return@addUserFace return@addUserFace
} }
Thread {
saveFaceInfo(faceModel) saveFaceInfo(faceModel)
uploadFaceDebouncer.reset()
}.start()
} }
// // 给某个客户端发送
// val jsonObject = JSONObject().also {
// it.put("type", "faceFeature")
// it.put("content", faceData)
// }
// tcpClient?.send(jsonObject)
} }
private fun getFaceDataBlock(block: (String, Bitmap) -> Unit) { private fun getFaceDataBlock(block: (String, Bitmap) -> Unit) {
@@ -829,7 +835,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
private var currentUserId: String? = null private var currentUserId: String? = null
private fun saveFaceInfo(faceModel: UserFaceModel) { private fun saveFaceInfo(faceModel: UserFaceModel) {
Thread {
try { try {
loadLogInfo("collectFace,saveFaceInfo: ----------8,保存人脸取特征数据-----------") loadLogInfo("collectFace,saveFaceInfo: ----------8,保存人脸取特征数据-----------")
val faceDao = FaceDatabase.getInstance(this).faceDao() val faceDao = FaceDatabase.getInstance(this).faceDao()
@@ -855,7 +860,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
loadLogInfo("collectFace,saveFaceInfo: ----------14,${collectCount}次人脸采集异常:${e.message}-----------") loadLogInfo("collectFace,saveFaceInfo: ----------14,${collectCount}次人脸采集异常:${e.message}-----------")
ToastUtils.showToast("人脸采集异常:${e.message}") ToastUtils.showToast("人脸采集异常:${e.message}")
} }
}.start()
} }
private var collectCount = 0 private var collectCount = 0