2016-06-03 7 views
0

Моя UWP приложение сгенерирует "UnhandledException" с сообщением:Ошибка камеры UWP: предоставленный номер потока недействителен. PreviewState

The stream number provided was invalid. PreviewState.

Приложение делать 2 операции:

  • Сфотографируйте (с использованием MediaCapture и с предварительным просмотром в CaptureElement)
  • сканирования: прочитайте QR-код (используя Zxing.Net.Mobile)

2 операции работают идеально индивидуально.

Проблема возникает, когда я сначала «сканирую» (с предварительным просмотром с камеры, управляемой Zxing), затем закройте «сканирование» предварительного просмотра, откройте страницу предварительного просмотра и поверните телефон. Исключение составляет «поворот».

Я написал очень простое приложение для воспроизведения исключение:

MainPage.xaml

<Button Content="Scan" Click="Scan_Click" /> 
<Button Content="Photo" Click="Photo_Click" /> 

MainPage.xaml.cs

private async void Scan_Click(object sender, RoutedEventArgs e) 
    { 
     MobileBarcodeScanner scanner = new MobileBarcodeScanner(); 
     var result = await scanner.Scan(); 
    } 

    private void Photo_Click(object sender, RoutedEventArgs e) 
    { 
     Frame.Navigate(typeof(PhotoPage)); 
    } 

PhotoPage.xaml

<CaptureElement Name="PreviewControl" Stretch="Uniform"/> 

PhotoPage.xaml.cs

MediaCapture _mediaCapture; 

    protected override async void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     DeviceInformationCollection videoCaptureDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); 
     var camera = (from webcam in videoCaptureDevices 
         where webcam.EnclosureLocation != null 
         && webcam.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back 
         select webcam).FirstOrDefault(); 

     _mediaCapture = new MediaCapture(); 
     await _mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = camera.Id }); 
     PreviewControl.Source = _mediaCapture; 
     await _mediaCapture.StartPreviewAsync(); 
    } 

Шаги по воспроизведению ошибки являются:

  • нажмите кнопку Scan
  • нажмите кнопку "Назад" телефон
  • нажмите Кнопка «Фото»
  • повернуть телефон

Спасибо!

ответ