private void updateCameraRunningState(PropertyChangedEventArgs e)
        {
            if (e.PropertyName == BarcodeScanner.PreviewActiveProperty.PropertyName)
            {
                if (barcodeScanner.PreviewActive)
                {
                    startSession();
                    barcodeScanner.OnPreviewActivated();
                }
                else
                {
                    stopSession();
                    barcodeScanner.OnPreviewDeactivated();
                }
            }

            if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
            {
                if (barcodeScanner.IsEnabled)
                {
                    startSession();
                    barcodeScanner.OnCameraOpened();
                }
                else
                {
                    stopSession();
                    barcodeScanner.OnCameraReleased();
                }
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            barcodeScanner = (BarcodeScanner)Element;

            if (barcodeScanner == null)
            {
                return;
            }

            if (!initScanner())
            {
                return;
            }

            view = new UIView(CGRect.Empty);
            view.BackgroundColor = UIColor.Gray;
            view.Layer.AddSublayer(captureVideoPreviewLayer);

            startSession();

            barcodeScanner.OnCameraOpened();
            barcodeScanner.OnPreviewActivated();

            SetNativeControl(view);
        }
예제 #3
0
        public void StartPreview(ISurfaceHolder holder)
        {
            try {
                if (!opened)
                {
                    OpenCamera();
                    return;
                }

                if (!previewActive)
                {
                    cameraSource?.StartPreview(holder);

                    if (cameraSource.AutoFocusModeEnabled())
                    {
                        cameraSource.AutoFocus(autoFocus);
                    }

                    previewActive = true;
                }

                renderer.OnPreviewActivated();
            } catch (Exception ex) {
                this.Debug("Unable to start preview.");
                this.Debug(ex.ToString());
            }
        }