Моя 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
- нажмите кнопку "Назад" телефон
- нажмите Кнопка «Фото»
- повернуть телефон
Спасибо!