diff --git a/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt index 5f8ea9d..05727c6 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt @@ -160,12 +160,14 @@ class PrepareCookActivity : BaseActivity() { private val isTakingPhoto = AtomicBoolean(false) private var lastWeight = 0.0 + private var currentWeight = 0.0 /** * 重量稳定时触发菜品识别 * @param weight 当前稳定重量 */ private fun recognizeFood(weight: Double) { + this.currentWeight = weight if (weight < WEIGHT_RECOGNIZE_VALUE) { if (recognizeDialog.isShowing) recognizeDialog.dismiss() return @@ -176,7 +178,6 @@ class PrepareCookActivity : BaseActivity() { succCallback = cameraSuccessCallback, failCallback = cameraFailureCallback ) - lastWeight = weight } /** @@ -500,6 +501,7 @@ class PrepareCookActivity : BaseActivity() { } recognizeDialog.loadData(foodList) isTakingPhoto.set(false) + lastWeight = currentWeight } } \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt b/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt index e6a1cd9..f79ccbe 100644 --- a/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt +++ b/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt @@ -6,16 +6,22 @@ import androidx.camera.core.CameraSelector import androidx.camera.view.CameraController import androidx.camera.view.LifecycleCameraController import androidx.camera.view.PreviewView +import androidx.core.content.ContextCompat class CameraUtils(private var activity: ComponentActivity) { private var cameraController: LifecycleCameraController? = null private var photoCaptureHelper: PhotoCaptureHelper? = null private var failCallback: ((msg: String) -> Unit)? = null + private var isCameraReady = false - // private var isCameraReady = false fun takePhoto(succCallback: (Uri) -> Unit, failCallback: (msg: String) -> Unit = { }) { this.failCallback = failCallback + // 相机未就绪时静默返回,避免触发错误提示 + if (!isCameraReady) { + failCallback("") + return + } cameraController?.let { if (photoCaptureHelper == null) { initCaptureHelper() @@ -74,10 +80,16 @@ class CameraUtils(private var activity: ComponentActivity) { } fun bind() { + isCameraReady = false cameraController?.bindToLifecycle(activity) + // 监听相机初始化完成,就绪后才允许拍照 + cameraController?.initializationFuture?.addListener({ + isCameraReady = true + }, ContextCompat.getMainExecutor(activity)) } fun unbind() { + isCameraReady = false cameraController?.unbind() }