This commit is contained in:
2026-01-08 19:36:31 +08:00
parent fce721bfc3
commit a79f7db867
8 changed files with 184 additions and 147 deletions
@@ -106,6 +106,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private val adapter by lazy {
SearchFoodAdapter(searchFoodList).apply {
setOnItemClickListener { adapter, view, position ->
if (searchFoodList[position].isChecked) {
return@setOnItemClickListener
}
searchFoodList.forEachIndexed { index, info ->
searchFoodList[index].isChecked = index == position
}
@@ -373,12 +376,14 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
showWaitingDialog("识别中,请稍后……")
takePhoto(
successCallback = { photoUri ->
onTakePhotoSuccess(photoUri)
Thread{
onTakePhotoSuccess(photoUri)
}.start()
failCount = 0
}, failureCallback = {
runOnUiThread {
if (failCount >= 10) {
ToastUtils.showToast("相机异常,请稍后重试")
//ToastUtils.showToast("相机异常,请稍后重试")
shutdownCamera()
setupCamera()
return@runOnUiThread
@@ -774,6 +779,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
ToastUtils.showToast("您好,当前重量不足一份")
return
}
showWaitingDialog("加载中,请稍候……")
val chargeMode = SPUtil.getInstance().get(GlobalKey.KEY_CHARGE_MODE, 0)
val order = FoodOrder(
deviceId = GlobalData.deviceId,
@@ -790,19 +796,30 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
//即放即取-1,称重-2
mode = if (pickupMode == 1) 1 else 2
)
debouncer.debounce {
submitOrder(order, block)
}
}
private fun submitOrder(order: FoodOrder, block: () -> Unit) {
viewModel.createOrder(order) { orderId ->
runOnUiThread {
if (orderId.isBlank()) {
//ToastUtils.showToast("订单id为空")
return@runOnUiThread
}
foodOrderId = orderId
block()
binding.root.postDelayed({
hideWaitingDialog()
if (orderId.isBlank()) {
//ToastUtils.showToast("订单id为空")
return@postDelayed
}
foodOrderId = orderId
block()
if (checkedItem!!.isFromSearch == true) {
//当前菜名为手动搜索选择,非识别结果,保存向量数据
saveFoodVector(checkedItem!!)
}
if (checkedItem!!.isFromSearch == true) {
//当前菜名为手动搜索选择,非识别结果,保存向量数据
Thread{
saveFoodVector(checkedItem!!)
}.start()
}
}, 300)
}
}
}
@@ -916,11 +933,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
*/
private fun saveFoodVector(foodInfo: FoodInfo) {
try {
lastPhotoUri?.let { uri ->
uri2File(uri) { imageFile, imageVector ->
runBlocking {
uploadCollectFoodPics(foodInfo, imageFile, imageVector)
}
if (lastPhotoUri == null) {
return
}
uri2File(lastPhotoUri!!) { imageFile, imageVector ->
runBlocking {
uploadCollectFoodPics(foodInfo, imageFile, imageVector)
}
}
} catch (e: Exception) {
@@ -974,15 +992,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
loadRemindDialog("返回的id${idList[0]}已存在")
return
}
box.put(
Food(
collectId = idList[0],
foodId = foodId,
foodName = foodName,
foodVector = imageVector,
version = foodModelVersion
Thread {
box.put(
Food(
collectId = idList[0],
foodId = foodId,
foodName = foodName,
foodVector = imageVector,
version = foodModelVersion
)
)
)
}.start()
}
private fun loadRemindDialog(msg: String) {
@@ -1193,7 +1213,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
startTime = System.currentTimeMillis()
Timber.d("registerDataChange photoUri = ${photoUri.path}")
// viewModel.getIdentifiedFoodList()
ImageUtil.uriToBitmap(this, photoUri)?.let { bitmap ->
Timber.tag(TAG).d("main,uriToBitmap耗时:${System.currentTimeMillis() - startTime}")
startTime = System.currentTimeMillis()
@@ -1201,19 +1220,15 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
// val bmp = BitmapCropper.cropCenter(bitmap, 1300, 900)
Timber.d("registerDataChange photoUri bitmap裁剪完成")
val file = BitmapSaver.saveToAppFilesDir(
bitmap,
this,
"IMG_CROP_${System.currentTimeMillis()}.jpg"
bitmap, this, "IMG_CROP_${System.currentTimeMillis()}.jpg"
)
Timber.tag(TAG)
.d("main,saveToAppFilesDir耗时:${System.currentTimeMillis() - startTime}")
Timber.tag(TAG).d("main,saveToAppFilesDir耗时:${System.currentTimeMillis() - startTime}")
startTime = System.currentTimeMillis()
Timber.d("registerDataChange photoUri bitmap保存文件路径:${file?.absolutePath}")
//val nameList = FoodModule.queryFood(bitmap)
val scoreList = FoodModule.getFoodScoreList(bitmap)
val recDataJson = GsonUtils.toJson(scoreList)
Timber.tag(TAG)
.d("main,getFoodScoreList耗时:${System.currentTimeMillis() - startTime}")
Timber.tag(TAG).d("main,getFoodScoreList耗时:${System.currentTimeMillis() - startTime}")
startTime = System.currentTimeMillis()
Timber.d("registerDataChange photoUri 拿到识别数据:$recDataJson")
val nameList = scoreList.map { it.name }
@@ -1221,19 +1236,23 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
hideWaitingDialog()
Timber.d("registerDataChange photoUri 识别数据名称:$foodName")
binding.flPay.run {
val chargeMode = SPUtil.getInstance().get(GlobalKey.KEY_CHARGE_MODE, 0)
//0-计费,1-不计费
if (chargeMode == 0) visible() else gone()
runOnUiThread {
binding.flPay.run {
val chargeMode = SPUtil.getInstance().get(GlobalKey.KEY_CHARGE_MODE, 0)
//0-计费,1-不计费
if (chargeMode == 0) visible() else gone()
}
}
if (TextUtils.isEmpty(foodName)) {
LightManager.closeGreenLight()
LightManager.closeRedLight()
//binding.layoutRescan.visibility = View.VISIBLE
binding.tvToSearch.let {
it.text = "未识别到,手动搜索"
it.visible()
runOnUiThread {
binding.tvToSearch.let {
it.text = "未识别到,手动搜索"
it.visible()
}
}
} else {
//binding.layoutRescan.visibility = View.GONE