Zxing Xamarin Как включить фонарик?

150
08 марта 2019, 10:20

Делаю приложение сканирования штрихкодов. Использую Xamarin Forms Проблема с включением фонарика при сканировании. Кнопка нарисована, но как дальше её обработать я не знаю.

private async void ToScannerPage(object sender, EventArgs e)
{
    //await Navigation.PushAsync(new ScannerPage());
    ZXingScannerPage scanPage = new ZXingScannerPage(new MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 3000 }, new ZXingDefaultOverlay
    {
        TopText = string.Empty,
        BottomText = "Автоматическое сканирование каждые 3 сек.",
        ShowFlashButton = true
    });
    scanPage.OnScanResult += (result) =>
        Device.BeginInvokeOnMainThread(() =>
        DisplayAlert(result.BarcodeFormat.ToString(), result.Text, "OK"));
    await Navigation.PushAsync(scanPage);
}
Answer 1

Вдруг кому понадобится решение:

//сканирование штрихкода

public void ScanAsync()
    {
        ZXingScannerView zxing = new ZXingScannerView()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            IsAnalyzing = true,
            IsScanning = true,
        };

        //промежуток между сканированием
        zxing.Options.DelayBetweenContinuousScans = 3000;
        zxing.Options.BuildMultiFormatReader();
        zxing.OnScanResult += (result) => 
        {
            Device.BeginInvokeOnMainThread(() =>
            {
                DisplayAlert(result.BarcodeFormat.ToString(), result.Text, "OK");
                //добавление в БД
                BarecodeResult barecodeResult = new BarecodeResult();
                barecodeResult.BarecodeFormat = result.BarcodeFormat.ToString();
                barecodeResult.TextResult = result.Text;
                barecodeResult.Status = 0;
                barecodeResult.dateTime = DateTime.Now;
                if (!String.IsNullOrEmpty(barecodeResult.BarecodeFormat))
                {
                    App.Database.SaveItem(barecodeResult);
                }
            });
        };
        var overlay = new ZXingDefaultOverlay
        {
            TopText = null,
            BottomText = "Автомаическое сканирование каждые 3 сек.",
            ShowFlashButton = true,
        };
        overlay.FlashButtonClicked += (a, b) =>
        {
            zxing.IsTorchOn = !zxing.IsTorchOn;
        };
        var cancel = new Button()
        {
            Text = "Отмена",
            BackgroundColor = Color.Red,
            VerticalOptions = LayoutOptions.EndAndExpand,
            HorizontalOptions = LayoutOptions.EndAndExpand
        };
        cancel.Clicked += (a, b) =>
        {
            Navigation.PopToRootAsync();
            NavigationPage navPage = (NavigationPage)App.Current.MainPage;
        };
        var grid = new Grid
        {
            VerticalOptions = LayoutOptions.FillAndExpand,
            HorizontalOptions = LayoutOptions.FillAndExpand,
        };
        grid.Children.Add(zxing);
        grid.Children.Add(overlay);
        grid.Children.Add(cancel);
        // объявляем элементы на страницу
        Content = grid;
    }
READ ALSO
Как вставить изображение на кнопку?

Как вставить изображение на кнопку?

Имеется массив кнопок btnИмеется изображение, которое хранится в ресурсах Properties

183
Неправильно работает функция file()

Неправильно работает функция file()

На выходе выводит строку, а должно массив, где 1 строка - 1 элемент Текст в файл писал вручнуюФайл, можно сказать использую вместо базы данных,...

165
Не работает INSER в созданный столбец в Symfony 2.8

Не работает INSER в созданный столбец в Symfony 2.8

Создал новый столбец с помощью миграций, в него мне надо вставлять данные, но когда проходит запрос, то INSERT этот столбец игнорирует

147