增量人脸查询优化

This commit is contained in:
2025-12-31 11:54:17 +08:00
parent 0d2a38391c
commit fc04db9268
5 changed files with 57 additions and 47 deletions
@@ -41,7 +41,6 @@ import com.sw.dualscreen.objbox.FoodModule
import com.sw.dualscreen.objbox.FoodModule.IdNameScore
import com.sw.dualscreen.presentation.MainScreenPresentation
import com.sw.dualscreen.sdk.SensorScaleUtils
import com.sw.dualscreen.socket.LanServer
import com.sw.dualscreen.socket.TcpClient
import com.sw.dualscreen.utils.BitmapSaver
import com.sw.dualscreen.utils.Debouncer
@@ -53,8 +52,6 @@ import com.sw.dualscreen.utils.SpTool
import com.sw.dualscreen.view.CustomBottomSheetDialog
import com.sw.dualscreen.viewmodel.BaseViewModel
import com.sw.dualscreen.viewmodel.UserViewModel
import com.sw.face.collect.view.LanServerListenerImpl
import com.sw.face.collect.view.TcpClientListenerImpl
import com.sw.plate.utils.Base64
import com.sw.plate.utils.LightManager
import com.sw.plate.utils.ToastUtils
@@ -73,7 +70,6 @@ import java.time.format.DateTimeFormatter
import java.util.Locale
import java.util.concurrent.Executors
import kotlin.math.roundToInt
import kotlin.text.compareTo
/**
* 服务员显示界面
@@ -278,16 +274,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding.tvFoodName.text = foodInfo.foodName
binding.previewView.gone()
binding.ivImg.visible()
if (foodInfo.foodImg.isNullOrBlank()) {
takePhoto(successCallback = { imgUri ->
binding.ivImg.load(imgUri)
presentation?.updateFood(foodInfo.copy(foodImg = imgUri.toString()))
}, failureCallback = {
})
} else {
binding.ivImg.load(foodInfo.foodImg)
}
// if (foodInfo.foodImg.isNullOrBlank()) {
// takePhoto(successCallback = { imgUri ->
// binding.ivImg.load(imgUri)
// presentation?.updateFood(foodInfo.copy(foodImg = imgUri.toString()))
// }, failureCallback = {
//
// })
// } else {
// binding.ivImg.load(foodInfo.foodImg)
// }
binding.ivImg.load(foodInfo.foodImg)
//pauseAnalysis()
}
@@ -352,7 +349,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
fun recognizeFood() {
startTime = System.currentTimeMillis()
LightManager.openRedLight()
// LightManager.openRedLight()
LightManager.closeRedLight()
LightManager.openGreenLight()
showWaitingDialog("识别中,请稍后……")
takePhoto(successCallback = { photoUri ->
@@ -414,13 +412,15 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
}, failureCallback = {
runOnUiThread {
hideWaitingDialog()
ToastUtils.showToast("拍照异常,请手动放置后重新识别")
}
// binding.root.postDelayed({
// recognizeFood()
// }, 500)
hideWaitingDialog()
// ToastUtils.showToast("拍照异常,请手动放置后重新识别")
shutdownCamera()
setupCamera()
binding.root.postDelayed({
recognizeFood()
}, 500)
})
}
@@ -604,13 +604,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
executor,
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
runOnUiThread {
val savedUri = outputFileResults.savedUri
Timber.d("takePhoto savedUri = $savedUri")
// ToastUtils.showToast("照片保存成功: $savedUri")
if (savedUri != null) {
successCallback(savedUri)
}
val savedUri = outputFileResults.savedUri
Timber.d("takePhoto savedUri = $savedUri")
if (savedUri != null) {
successCallback(savedUri)
}
// 恢复图像分析
isAnalyzing = true
@@ -619,9 +616,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
override fun onError(exception: ImageCaptureException) {
Timber.e("拍照失败: ${exception.message}")
failureCallback()
//runOnUiThread {
// ToastUtils.showToast("拍照失败: ${exception.message}")
//}
ToastUtils.showToast("拍照失败: ${exception.message}")
// 恢复图像分析
isAnalyzing = true
}
@@ -952,14 +947,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
timestamp = timestamp,
onAllQueryFinished = {
taskPageNo = 1
SpTool.setLastFaceTimestamp(System.currentTimeMillis())
},
onPageQueryFinished = { list ->
runOnUiThread {
if (list.isEmpty()) {
return@runOnUiThread
}
SpTool.setLastFaceTimestamp(System.currentTimeMillis())
updateFaceData(list)
}
}