public async Task <string> ScanAsync() { var scanner = new ZXing.Mobile.MobileBarcodeScanner() { UseCustomOverlay = true }; var options = new ZXing.Mobile.MobileBarcodeScanningOptions() { TryHarder = true, AutoRotate = false, UseFrontCameraIfAvailable = false, PossibleFormats = new List <ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE } }; ScannerOverlayView customOverlay = new ScannerOverlayView(); customOverlay.OnCancel += () => { scanner?.Cancel(); }; customOverlay.OnResume += () => { scanner?.ResumeAnalysis(); }; customOverlay.OnPause += () => { scanner?.PauseAnalysis(); }; scanner.CustomOverlay = customOverlay; ZXing.Result scanResults = null; scanResults = await scanner.Scan(options); //customOverlay.Dispose(); if (scanResults != null) { return(scanResults.Text); } return(string.Empty); }