WP7下巧用MediaElement在雪藏中

简介:

     我们在很多应用中,都用到MediaElement这个控件,用来播放音乐视频,如果外部播放器在播放音乐,当进入有MediaElement控件的应用中时,播放的音乐会停止,这主要是外部播放器和MediaElement共用手机的播放硬件资源造成的,如果当我们退出或雪藏当前应用时,外部的播放器也不会恢复回来,为了解决这个问题,我们可以采用下述方案来解决。

       首先要处理加载程序,雪藏,恢复,关闭四个事件,即在App.xaml.cs中的四个事件:
 
 
  1. private void Application_Launching(object sender, LaunchingEventArgs e)  
  2.         {  
  3.             FrameworkDispatcher.Update();  
  4.             if (MediaPlayer.State == MediaState.Playing)  
  5.             {                
  6.                 MediaPlayer.Pause();  
  7.             }  
  8.         }          
  9.         private void Application_Activated(object sender, ActivatedEventArgs e)  
  10.         {  
  11.             if (MediaPlayer.State == MediaState.Playing)  
  12.             {  
  13.                 MediaPlayer.Pause();  
  14.             }  
  15.         }       
  16.         private void Application_Deactivated(object sender, DeactivatedEventArgs e)  
  17.         {  
  18.             if (MediaPlayer.State == MediaState.Paused || MediaState.Stopped == MediaPlayer.State)  
  19.             {  
  20.                 MediaPlayer.Resume();  
  21.             }  
  22.         }  
  23.         private void Application_Closing(object sender, ClosingEventArgs e)  
  24.         {  
  25.             if (MediaPlayer.State == MediaState.Paused||MediaState.Stopped==MediaPlayer.State)  
  26.             {  
  27.                 MediaPlayer.Resume();  
  28.             }  
  29.         }  

 

        分别在加载和恢复事件中让外部播放器停下来,在关闭和雪藏事件中恢复外部播放器恢复暂停。

       最关键的一点是,MediaElement控件在雪藏后,恢复回来后,就会失去Source属性的值,所以我们得在控件的页面中把雪藏前的MediaElement.Source存储起来,恢复后再把存储的值赋回来,代码如下:

 

 
  1. protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)  
  2.         {  
  3.             PhoneApplicationService.Current.State.Clear();  
  4.             if (shengyin_ME.Source != null)  
  5.             {  
  6.                 PhoneApplicationService.Current.State.Add("URL", shengyin_ME.Source);  
  7.             }  
  8.             base.OnNavigatedFrom(e);  
  9.         }  
  10.         
  11.         protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)  
  12.         {  
  13.          
  14.             if (PhoneApplicationService.Current.State.Keys.Contains("URL"))  
  15.             {  
  16.                 shengyin_ME.Source = PhoneApplicationService.Current.State["URL"as Uri;  
  17.             }  
  18.             base.OnNavigatedTo(e);  
  19.         }  

 

这样,就能实现在关闭应用或雪藏应用,外部播放器会继续播放。













本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/788923  ,如需转载请自行联系原作者

相关文章
|
4月前
逆向wp周更
逆向wp周更
19 1
bugku-这是一张单纯的图片-wp
bugku-这是一张单纯的图片-wp
|
XML 数据格式
bugku-眼见非实-wp
bugku-眼见非实-wp
|
JavaScript 前端开发 API
#yyds干货盘点 ant design mobile实现tab滚动效果和闪屏小记
#yyds干货盘点 ant design mobile实现tab滚动效果和闪屏小记
199 0