2012-09-22 30 views
3

我正在开发一个城域应用程序,可以让您与您的摄像头进行交互。只有一个问题,当应用程序在后台传递时,摄像头被关闭。要解决这个问题,我用这个代码:在WinRT中暂停应用程序后恢复CaptureElement

Window.Current.VisibilityChanged += Current_VisibilityChanged; 

async void Current_VisibilityChanged(object sender, Windows.UI.Core.VisibilityChangedEventArgs e) 
{ 
    try 
    { 
     if (e.Visible) 
      await mediaCaptureMgr.StartPreviewAsync(); 
     else 
      await mediaCaptureMgr.StopPreviewAsync(); 
    } 
    catch { } 
} 

调试时,它完美,但如果应用程序正常启动时执行的代码,但一旦我把在前台应用程序的网络摄像头不会被再次激活。我怎样才能解决这个问题?

回答

0

代码以调试模式运行,因为您的应用程序从未真正挂起。正常执行时,应用程序被暂停,然后在正常进程生命周期内恢复。从暂停状态变为恢复状态不会触发VisibilityChanged事件。如果在调试过程中使用Visual Studio中的挂起/恢复按钮,则应该看到代码在正常执行过程中失败。

您需要将代码移动到您的OnLaunched方法App.xaml.cs。请注意,您需要考虑可能被终止的应用程序,并需要重新初始化整个媒体捕获器对象。