簡體   English   中英

如何將mp3文件添加到MediaPlayer.Queue,或在Windows Phone上依次播放mp3文件列表?

[英]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文件?

不幸的是你不能。

由於某些未知原因,Microsoft不允許開發人員在Windows Phone上創建自定義播放列表。

用手機存儲中的歌曲實現播放列表[Windows Phone]

最終有效的方法(雖然不是理想的方法)是將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM