2015-12-02 4 views
0

Я реализую приложение Windows Phone 8.1 с устройством чтения QR-кода. Я использую ZXing.NET для анализа полученного изображения и попытаюсь разобрать QR. Чтобы повысить его эффективность, я также установил автофокусировку камеры. Он работает очень хорошо при первом запуске, но не со второй попытки (т. Е. После приостановки - возобновить или перезапустить захват). Когда я тестировал, метод FocusAsync не возвращает и блокирует все.Windows Phone 8.1 FocusAync MediaCapture не работает

Что здесь происходит? В чем может быть проблема?

Вот мой текущий код.

Фокус

var focusSettings = new Windows.Media.Devices.FocusSettings(); 
focusSettings.AutoFocusRange = Windows.Media.Devices.AutoFocusRange.Normal; 
focusSettings.Mode = Windows.Media.Devices.FocusMode.Auto; 

CaptureManager.VideoDeviceController.FocusControl.Configure(focusSettings); 

MainProcess

... Initialization ... 

ImageEncodingProperties imaggeProperties = ImageEncodingProperties.CreateJpeg(); 
imaggeProperties.Width = ViewModel.ImageWidth; 
imaggeProperties.Height = ViewModel.ImageHeight; 

InMemoryRandomAccessStream memoryStream = new InMemoryRandomAccessStream(); 

LoggingAdapter.Instance.WriteDebugLog("Scanning is in progress. " + Environment.CurrentManagedThreadId);  
await CaptureManager.VideoDeviceController.FocusControl.FocusAsync(); 
await CaptureManager.CapturePhotoToStreamAsync(imaggeProperties, memoryStream); 
LoggingAdapter.Instance.WriteDebugLog("Photo captured."); 

var bcReader = new BarcodeReader(); 

... Processing the barcode ... 

Очистка

if (CaptureManager != null) 
{ 
    if (InProgress) 
    { 
    InProgress = false; 
    await CaptureManager.StopPreviewAsync(); 
    } 
    CaptureManager.Dispose(); 
    Capture.Source = null; 
    } 

Спасибо за заранее!

+1

Как вы обрабатываете приостановление & возобновление и обработку захвата медиа? –

+0

В случае приостановки я получаю отсрочку и вызываю метод CleanCapture. Отмена происходит одинаково, но без отсрочки, конечно. Возобновление не обрабатывается, абсолютно нормально разрешить пользователю запускать его снова. –

+0

Мне удалось реализовать рабочее решение. Я установил WaitForFocus в false в FocusSettings и, похоже, работает нормально, также с приостановкой или отменой. –

ответ

0

Мне удалось реализовать рабочее решение. Я установил WaitForFocus в false в FocusSettings и, похоже, работает нормально, также с приостановкой или отменой.

Смежные вопросы