[英]How to add mp3 files to a MediaPlayer.Queue, or otherwise play a list of mp3 files sequentially on Windows Phone?
背景
我的設備上有一個包含.mp3文件的文件夾,該文件存儲在/Resources/raw
。 在某些情況下,我需要按順序播放其中一些文件。
我正在嘗試執行以下操作:
foreach (var track in _tracks)
{
var name = track.Item1;
var uri = new Uri(string.Format("{0}/{1}", "/Resources/raw", name), UriKind.Relative);
var song = Song.FromUri(name, uri);
FrameworkDispatcher.Update();
// only the last track plays because the foreach loop is too fast
MediaPlayer.Play(song);
}
不幸的是,這不起作用,因為MediaPlayer.Play()
在單獨的線程中播放歌曲,並且foreach
循環僅以處理器允許的速度觸發每首歌曲。 因此,它只會播放最后的曲目。
我嘗試添加一個延遲,例如Thread.Sleep(1000);
在每次調用Play()之前,但沒有任何效果。
我可以看到MediaPlayer
具有Queue
屬性和MoveNext()
方法,該方法可以播放隊列中的下一首歌曲。 但是,我不知道如何將文件列表添加到隊列中。
題
如何將歌曲放入該隊列,以便可以順序播放? 這是獲得所需結果的最佳方法嗎? 如果沒有,我該如何依次播放mp3文件?
最終有效的方法(雖然不是理想的方法)是將Thread.Sleep()的時間增加到比軌道更長的時間。 我最初沒有使用足夠長的值:
foreach (var track in _tracks)
{
var name = track.Item1;
var uri = new Uri(string.Format("{0}/{1}", "/Resources/raw", name), UriKind.Relative);
var song = Song.FromUri(name, uri);
Thread.Sleep(2000); // this value has to be longer than the track
FrameworkDispatcher.Update();
MediaPlayer.Play(song);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.