前面介紹了Windows Phone 播放音頻之SoundEffect,不過這種方式只能播放WAV格式的音頻。下面就介紹一種小巧輕便,簡單易用,並且支援格式多,還可直接從Uri中載入的方式。既通過MediaPlayer和Song類實現音頻播放的方式。這兩個類也是屬於 XNA Framework ,所以需要添加引用 Microsoft.Xna.Framework。
1.由於在XNA中每33fp就會更新畫面一次,所以在Silverlight Application中需要透過指定一個定期執行 FrameworkDispatcher.Update() 的事件。
//設定定時器
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(33);
timer.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
timer.Start();
2.通過Song建立音頻對象,並通過MediaPlayer播放。
try
{
//建立音頻對象
Song song = Song.FromUri("Music", new Uri("/Song/yule.mp3", UriKind.Relative));
//設定為迴圈播放
MediaPlayer.IsRepeating = true;
//啟動播放
MediaPlayer.Play(song);
}
catch (System.Exception ex)
{
//建立音頻對象失敗,uri錯誤時
}
3.音頻暫停,複位,停止。
//暫停
MediaPlayer.Pause();
//複位
MediaPlayer.Resume();
//停止
MediaPlayer.Stop();
4.設定音頻播放的音量。
//音量取值範圍為[0,1],預設值為0.85,設定為0.5
MediaPlayer.Volume = 0.5F;
通過Song和MediaPlayer可以播放多種格式的音頻,並且使用也相當的簡單方便。不過同樣需要引入XNA庫,並且通過Song.FromUri建立Song對象的音頻檔案只能是資源檔,不能是隔離儲存區 (Isolated Storage)中的檔案。對於隔離儲存區 (Isolated Storage)中的檔案,暫時還沒有找到建立Song對象的API,還期望同大家一同探討。