优化
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
saveFaceInfo(faceModel)
|
Thread {
|
||||||
|
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,33 +835,31 @@ 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()
|
val faceEntity = FaceEntity(
|
||||||
val faceEntity = FaceEntity(
|
faceModel.userId,
|
||||||
faceModel.userId,
|
null,
|
||||||
null,
|
Base64.decode(faceModel.faceFeatureStr)
|
||||||
Base64.decode(faceModel.faceFeatureStr)
|
).also {
|
||||||
).also {
|
//1-会员、2-临时用户
|
||||||
//1-会员、2-临时用户
|
it.userType = if (faceModel.isMember) "1" else "2"
|
||||||
it.userType = if (faceModel.isMember) "1" else "2"
|
|
||||||
}
|
|
||||||
faceDao.insert(faceEntity)
|
|
||||||
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
|
|
||||||
recognizeViewModel.refreshFaceList()
|
|
||||||
loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------")
|
|
||||||
runOnUiThread { recognizeViewModel.onPreviewFrame(ByteArray(1382400), true) }
|
|
||||||
loadLogInfo("---------------------------------")
|
|
||||||
collectCount = 0
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
loadLogInfo("collectFace,saveFaceInfo: ----------13,人脸采集异常:${e.message}-----------")
|
|
||||||
collectCount++
|
|
||||||
loadLogInfo("collectFace,saveFaceInfo: ----------14,${collectCount}次人脸采集异常:${e.message}-----------")
|
|
||||||
ToastUtils.showToast("人脸采集异常:${e.message}")
|
|
||||||
}
|
}
|
||||||
}.start()
|
faceDao.insert(faceEntity)
|
||||||
|
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
|
||||||
|
recognizeViewModel.refreshFaceList()
|
||||||
|
loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------")
|
||||||
|
runOnUiThread { recognizeViewModel.onPreviewFrame(ByteArray(1382400), true) }
|
||||||
|
loadLogInfo("---------------------------------")
|
||||||
|
collectCount = 0
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
loadLogInfo("collectFace,saveFaceInfo: ----------13,人脸采集异常:${e.message}-----------")
|
||||||
|
collectCount++
|
||||||
|
loadLogInfo("collectFace,saveFaceInfo: ----------14,${collectCount}次人脸采集异常:${e.message}-----------")
|
||||||
|
ToastUtils.showToast("人脸采集异常:${e.message}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var collectCount = 0
|
private var collectCount = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user