2014-12-09 27 views
1

我們正在開發用於Windows表面平板電腦的常規條形碼掃描儀應用程序。在頁面的onNavigatedTo方法中,我們調用相機。在Windows Store應用程序中恢復啓動攝像機

var devices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); 
     await App.camera.InitializeAsync(new MediaCaptureInitializationSettings 
     { 
      VideoDeviceId = devices[1].Id 
     }); 

     cap.Source = App.camera; 
     cap.Visibility = Visibility.Visible; 
     await App.camera.StartPreviewAsync(); 

它工作正常。

現在應用程序轉到背景並返回到前景。但是,我們是無法調用相機 再次使用相同的代碼

await App.camera.StartPreviewAsync(); 

怎麼做簡歷?

回答

2

您需要使用事件,如ActivatedVisibilityChanged

private MediaCapture m_mediaCaptureMgr; 

public MainPage() 
{ 
    this.InitializeComponent(); 

    Window.Current.Activated+=Current_Activated; 
    Window.Current.VisibilityChanged+= Current_VisibilityChanged; 

} 

然後InitializeStartPreview您的相機Current_Activated:上

private async void Current_Activated(object sender, WindowActivatedEventArgs e) 
{ 
    try 
    { 
     m_mediaCaptureMgr = new Windows.Media.Capture.MediaCapture(); 
     await m_mediaCaptureMgr.InitializeAsync(); 
     cap.Source = m_mediaCaptureMgr; 
     await m_mediaCaptureMgr.StartPreviewAsync(); 

    } 
    catch (Exception exception) 
    { 
     new MessageDialog("Unable to start the video capture.").ShowAsync(); 
    } 
} 

而且Stop相機Current_VisibilityChanged

private async void Current_VisibilityChanged(object sender, VisibilityChangedEventArgs e) 
{ 
    try 
    { 
     await m_mediaCaptureMgr.StopPreviewAsync(); 
    } 
    catch (Exception exception) 
    { 
    } 
} 
相關問題