我正在跟踪quickstart-android存储库以进行ML Kit条形码扫描。在我的实现中,我注意到onSuccess
回调是在我第一次启动相机以检测条形码时触发的,这很好。但是,当我将相机拿到有效的条形码时,条形码列表本身为空。 onSuccess
回调被调用,但条形码列表为空。
当我使应用程序后台运行,然后使其前台运行时,条形码列表开始被填充(barcodes.size()不再为零)。
有人知道为什么会这样吗?
final FirebaseVisionImage firebaseImage =
FirebaseVisionImage.fromMediaImage(image, rotation);
FirebaseVisionBarcodeDetectorOptions options = new
FirebaseVisionBarcodeDetectorOptions.Builder().setBarcodeFormats(
FirebaseVisionBarcode.FORMAT_ALL_FORMATS).build();
barcodeDetector = FirebaseVision.getInstance().getVisionBarcodeDetector(options)
barcodeDetector.detectInImage(firebaseImage).addOnSuccessListener((barcodes) ->
{
// note that the success callback is called and I do get here
// but barcode list is empty initially
for (FirebaseVisionBarcode barcode : barcodes)
{
// we never get here since barcodes.size() is 0
// until I background the app, then foreground it
// after backgrounding, then foregrounding, we start
// detecting barcodes
}
}).addOnFailureListener((exception) -> {
//TODO: handle failure
});