【发布时间】:2025-07-17 19:20:02
【问题描述】:
我正在开发一个使用 Mobile Vision 的 Google Barcode Scanner API 的 Android 应用。应用的目的是检测条形码,然后根据与条形码相关的数据采取一些行动。
一旦检测到第一个条码,我想停止摄像头源,以免继续检测。当我尝试在receiveDetections(Detector.Detections<Barcode> detections) 回调中执行cameraSource.stop() 时,线程被阻塞并且logcat 中有很多日志输出。由于此回调不在 UI 线程中执行,因此 UI 保持畅通。我尝试在 UI 线程中执行 cameraSource.stop() 并且效果很好。
我已经尝试从 UI 线程和另一个线程调用 cameraSource.start() 并且都可以正常工作。
现在我在文档中的任何地方都找不到与 cameraSource 的交互应该来自 UI 线程或工作线程的任何地方。我无法弄清楚从另一个线程调用时为什么会失败的逻辑。
【问题讨论】:
标签: android multithreading camera barcode google-vision