private async void CancelCameraButton_OnClick(object sender, RoutedEventArgs e)
 {
     _oReturnObject = new MainPageTransferObject
     {
         CallbackName = "Appverse.Media.onFinishedPickingImage",
         JSONContent = JsonConvert.SerializeObject(_oReturnObject)
     };
     await HideCameraView();
 }
        private async void CameraShutter_Click(object sender, RoutedEventArgs e)
        {
            if (_cameraCapture == null) return;
            try
            {
                using (var memoryStream = new InMemoryRandomAccessStream())
                {
                    var jpegFile = await WindowsPhoneUtils.DocumentsFolder.CreateFileAsync(
                               Guid.NewGuid().ToString().Replace("-", String.Empty) + ".jpg", CreationCollisionOption.ReplaceExisting);

                    if (_cameraCapture.VideoDeviceController.FocusControl.Supported)
                        await _cameraCapture.VideoDeviceController.FocusControl.FocusAsync();
                    await _cameraCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), memoryStream);

                    var dec = await BitmapDecoder.CreateAsync(BitmapDecoder.JpegDecoderId, memoryStream);
                    using (var fileStream = await jpegFile.OpenAsync(FileAccessMode.ReadWrite))
                    {
                        var enc = await BitmapEncoder.CreateForTranscodingAsync(fileStream, dec);

                        if (_cameraOptions != null && _cameraOptions.ImageScaleFactor != 1)
                        {
                            enc.BitmapTransform.ScaledWidth = (uint)(dec.PixelWidth * _cameraOptions.ImageScaleFactor);
                            enc.BitmapTransform.ScaledHeight = (uint)(dec.PixelHeight * _cameraOptions.ImageScaleFactor);
                        }

                        //roate the image
                        enc.BitmapTransform.Rotation = BitmapRotation.Clockwise90Degrees;

                        //write changes to the image stream
                        await enc.FlushAsync();
                    }
                    var returnMediaMetadata = await AppverseBridge.Instance.PlatformHandler.GetMediaMetadata(jpegFile);
                    _oReturnObject = new MainPageTransferObject { CallbackName = "Appverse.Media.onFinishedPickingImage", JSONContent = JsonConvert.SerializeObject(returnMediaMetadata) };
                }
                HideCameraView();
            }
            catch (Exception ex)
            {
                WindowsPhoneUtils.Log(ex.Message);
            }
        }
 private void AnalyzeImage(Bitmap bitmap, TimeSpan time)
 {
     if (!_qrDetectionModeEnabled) return;
     var result = _barcodeReader.Decode(bitmap.Buffers[0].Buffer.ToArray(),
         (int)bitmap.Buffers[0].Pitch,
         (int)bitmap.Dimensions.Height,
         RGBLuminanceSource.BitmapFormat.Gray8);
     Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (result == null)
         {
             if (_scannerAutoFocus != null) _scannerAutoFocus.BarcodeFound = false;
         }
         else
         {
             if (_scannerAutoFocus != null)
             {
                 _cameraCapture.Failed -= CameraCaptureOnFailed;
                 _cameraCapture.ClearEffectsAsync(MediaStreamType.VideoPreview);
                 _scannerAutoFocus.BarcodeFound = true;
             }
             var returnQR = new MediaQRContent(result.Text,
                                         WindowsPhoneUtils.ZxingToBarcode(result.BarcodeFormat),
                                         WindowsPhoneUtils.GetQRTypeFromCode(result));
             _oReturnObject = new MainPageTransferObject { CallbackName = "Appverse.Scanner.onQRCodeDetected", JSONContent = JsonConvert.SerializeObject(returnQR) };
             if (_qrAutoHandleQrCode)
             {
                 var launchUri = Uri.IsWellFormedUriString(returnQR.Text, UriKind.RelativeOrAbsolute)
                     ? new Uri(returnQR.Text)
                     : null;
                 var ignore = Launcher.LaunchUriAsync(launchUri).AsTask().Result;
             }
             _cameraCapture.ClearEffectsAsync(MediaStreamType.VideoPreview);
             HideCameraView();
         }
     });
 }
 private async void CameraGridFadeOutStoryBoard_OnCompleted(object sender, object e)
 {
     if (Dispatcher.HasThreadAccess)
     {
         PhotoPreview.Source = null;
         CameraGrid.Visibility = Visibility.Collapsed;
         CancelCameraButton.IsEnabled = false;
         ShutterButton.IsEnabled = false;
         //Return to mainPage passing parameter
         if (_oReturnObject == null)
         {
             if (Frame.CanGoBack) Frame.GoBack();
         }
         else
         {
             Frame.Navigate(typeof(MainPage), _oReturnObject);
         }
         _oReturnObject = null;
         GC.Collect();
     }
     else
     {
         await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
         {
             CameraGridFadeOutStoryBoard_OnCompleted(sender, e);
         });
     }
 }