2014-12-09 63 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) 
    { 
    } 
} 
相关问题