2012年4月23日 星期一

crash when MediaPlayer.Stop()

在 Windows Phone 7.1 SDK 出現後…大家多了 BackgroundAudioPlayer 可以用…
但似乎微軟也對本來的 MediaElement、XnaMediaPlayer 做了一些改變…

先前在 7.0 SDK 時若要停止 Music Hub 正在播放的歌…通常是下這樣的指令…

Microsoft.Xna.Framework.Media.MediaPlayer.Stop();
但前陣子發現在芒果的機子上面這條指令會導致我們的 App crash
搜尋一下發現 MSDN 上有個範例…
Enable XNA Framework Events in Windows Phone App

跟著網頁上說明的項目做一次就可以避開這個 crash 了…
流程大致上是新增一個 class 並實作 IApplicationService 的兩個 method
範例上是取名叫作 XNAFrameworkDispatcherService
實作的內容複製網頁上的 4、5、6、7、8 點即可…不必再多加什麼…
再打開自己的 App.xaml 找到 Application.ApplicationLifetimeObjects tag
在裡面加入剛才建立的 XNAFrameworkDispatcherService
在 MSDN 裡的範例是 <s:XNAFrameworkDispatcherService />
基本上只要注意一下你的 namespace 即可,範例是放在專案根目錄下…
我個人是不太習慣放這個位置…所以需要額外改一下 s 的內容…
基本上這些都做完後就不會再發生停止 Music Hub 歌曲時的 crash 了…

沒有留言:

張貼留言