From 0477fad57b8420335d18b91300ccd0077d169d52 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Tue, 14 Apr 2026 10:29:38 +0800 Subject: [PATCH] =?UTF-8?q?fix(activity):=20=E4=BF=AE=E5=A4=8D=20PrepareCo?= =?UTF-8?q?okActivity=20=E7=9B=B8=E6=9C=BA=E6=9C=AA=E5=B0=B1=E7=BB=AA?= =?UTF-8?q?=E6=97=B6=E8=A7=A6=E5=8F=91=E6=8B=8D=E7=85=A7=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shuwei/dish/match/ui/PrepareCookActivity.kt | 4 +++- .../com/shuwei/dish/match/utils/CameraUtils.kt | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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() }