如何解决由于现有相机用户[XAMARIN.FORM],无法使用相机“ 0”的割炬
我遇到了无法解决的麻烦。 我正在做一个使用相机(如扫描仪)捕获QR码的Android Xamarin表单应用程序(为此,我使用Zxing NuGet软件包)。 当我尝试打开相机闪光灯时会发生问题(为此,我使用Xamarin.Exentials),但显然代码返回了异常(“ CAMERA_IN_USE(4):setTorchMode:1732:相机“ 0”的割炬不是)由于现有的相机用户而可用”)。
注意:Flash Activator的按钮是工具栏->“ ToolbarItems”中的图标,而不是Zxing软件包中已集成的按钮。
我尝试了很多Web解决方案,但没有任何效果,我在下面发布了代码。谢谢!
protected override void OnAppearing()
{
base.OnAppearing();
var zxing = new ZXingScannerView
{
HorizontalOptions = LayoutOptions.FillAndExpand,VerticalOptions = LayoutOptions.FillAndExpand,AutomationId = "zxingScannerView",IsTorchOn = false,IsScanning=true,IsAnalyzing=true,Options = new ZXing.Mobile.MobileBarcodeScanningOptions()
{
//IMPORTANT: this is used for stretch camera problem! //(interface: ZXingHelper.cs,file: ZxingHelper.cs)
PossibleFormats = new List<ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE },CameraResolutionSelector = DependencyService.Get<IZXingHelper>().SelectLowestResolutionMatchingDisplayAspectRatio
}
};
zxing.OnScanResult += (result) =>
Device.BeginInvokeOnMainThread(async () =>
{
// Stop analysis and scanning until we navigate away so we don't keep reading barcodes
zxing.IsAnalyzing = false;
zxing.IsScanning = false;
// Show an alert
await DisplayAlert("Scanned Barcode",result.Text,"OK");
//Update QR saved List
updateDataBase(result.Text);
//Do Action After Update Scanner
if (result.Text.StartsWith("http://") || result.Text.StartsWith("https://") || result.Text.StartsWith("www."))
{
QRUrlModel qRUrlModel = new QRUrlModel();
qRUrlModel.url = result.Text;
await Xamarin.Essentials.Browser.OpenAsync(qRUrlModel.url,BrowserLaunchMode.SystemPreferred);
}
else
{
//await Navigation.PushAsync(new BookmarkPage());
}
});
var overlay = new ZXingDefaultOverlay
{
TopText = "Hold your phone up to the barcode",BottomText = "Scanning will happen automatically",//ShowFlashButton = true,AutomationId = "zxingDefaultOverlay",};
overlay.FlashButtonClicked += (sender,e) =>
{
zxing.IsTorchOn = !zxing.IsTorchOn;
};
var Grid = new Grid
{
VerticalOptions = LayoutOptions.FillAndExpand,HorizontalOptions = LayoutOptions.FillAndExpand,};
Grid.Children.Add(zxing);
Grid.Children.Add(overlay);
Content = Grid;
}
private async void BtnFash_ToolbarItems(object sender,EventArgs e)
{
try
{
// Turn On Flashlight
await Flashlight.TurnOnAsync();
}
catch (FeatureNotSupportedException fnsEx)
{
await DisplayAlert("Attention",fnsEx.Message,"OK");
}
catch (PermissionException pEx)
{
await DisplayAlert("Attention",pEx.Message,"OK");
}
catch (Exception ex)
{
await DisplayAlert("Attention",ex.Message,"OK");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。