Я хочу создать модульный класс, который я могу использовать в любое время, когда хочу сканировать штрих-код.Возможно ли это с помощью Firebase ML Kit?
Это то, что я получил до сих пор:
public List<FirebaseVisionBarcode> ScanBarcode(int... barcodeFormats)
{
//region Init, config and execution of the barcode scanning
final FirebaseVisionBarcodeDetectorOptions.Builder BUILDER =
new FirebaseVisionBarcodeDetectorOptions.Builder();
//Set barcode formats based on arguments
for (int formats : barcodeFormats)
{
BUILDER.setBarcodeFormats(formats);
}
final FirebaseVisionBarcodeDetectorOptions OPTIONS = BUILDER.build();
final FirebaseVisionImage IMAGE = FirebaseVisionImage.fromBitmap(bitmap);
final FirebaseVisionBarcodeDetector DETECTOR = FirebaseVision.getInstance()
.getVisionBarcodeDetector(OPTIONS);
DETECTOR.detectInImage(IMAGE)
.addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionBarcode>>()
{
@Override
public void onSuccess(List<FirebaseVisionBarcode> _barcodes)
{
barcodes = _barcodes;
}
})
.addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{
barcodes = new ArrayList<>();
}
});
//endregion
return barcodes;
В основном взято из https://firebase.google.com/docs/ml-kit/
Проблема здесь в том, что слушатель для DETECTOR
, это какой-то асинхронный вызов.Это означает, что он вернется до вызова onSuccess
.
Сканирование штрих-кода работает, но мне трудно обернуть его в собственный класс.
Спасибо.