2015-12-02 115 views
0

我正在使用QR碼閱讀器實現Windows Phone 8.1應用程序。我使用ZXing.NET分析拍攝的圖像並嘗試解析QR。爲了提高效率,我還爲相機設置了自動對焦。它在第一次啓動時工作得很好,但不是第二次嘗試(在暫停後 - 即繼續或重新啓動捕獲後)。正如我測試的那樣,FocusAsync方法有時不會返回並阻止一切。Windows Phone 8.1 MediaCapture的FocusAsync不起作用

這裏會發生什麼?可能是什麼問題呢?

這是我目前的代碼。

焦點

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

我成功實施了一個工作解決方案。我在FocusSettings中將WaitForFocus設置爲false,它看起來工作正常,還有暫停或取消。 –

回答

0

我成功實施了一個工作解決方案。我在FocusSettings中將WaitForFocus設置爲false,它看起來工作正常,還有暫停或取消。