Public Sub Scan (Formats As List) As ResumableSub
Dim builder As JavaObject
builder.InitializeNewInstance("com/google/mlkit/vision/codescanner/GmsBarcodeScannerOptions.Builder".Replace("/", "."), Null)
Dim f(Formats.Size - 1) As Int
For i = 1 To Formats.Size - 1
f(i - 1) = Formats.Get(i)
Next
builder.RunMethod("setBarcodeFormats", Array(Formats.Get(0), f))
' builder.RunMethod("enableAutoZoom", Null)
Dim options As JavaObject = builder.RunMethod("build", Null)
Dim scanning As JavaObject
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim CamScan1 As JavaObject = scanning.InitializeStatic("com/google/mlkit/vision/codescanner/GmsBarcodeScanning".Replace("/", ".")).RunMethod("getClient", Array(ctxt, options))
Dim o As JavaObject = CamScan1.RunMethod("startScan", Null)
Do While o.RunMethod("isComplete", Null).As(Boolean) = False
Sleep(50)
Loop
Dim res As ScannerResult
res.Initialize
If o.RunMethod("isSuccessful", Null) Then
res.Success = True
res.Barcode = o.RunMethod("getResult", Null)
res.Value = res.Barcode.RunMethod("getRawValue", Null)
End If
Return res
End Sub