我正在开发一个使用 Mobile Vision 的 Google Barcode Scanner API 的 android 应用程序。应用程序的目的是检测条形码,然后根据与条形码相关的数据采取一些行动。
一旦检测到第一个条形码,我想停止摄像头源,这样检测就不会继续。当我尝试在回调cameraSource.stop()
内部执行receiveDetections(Detector.Detections<Barcode> detections)
时,线程被阻塞并且 logcat 中有很多日志输出。由于此回调不在 UI 线程中执行,因此 UI 保持畅通。我尝试cameraSource.stop()
在 UI 线程中执行,它工作正常。
我尝试过从cameraSource.start()
UI 线程和另一个线程调用,并且都可以正常工作。
现在我在文档中的任何地方都找不到与 cameraSource 的交互应该来自 UI 线程或工作线程的任何地方。我无法弄清楚为什么从另一个线程调用它会失败的逻辑。