使用BackgroundMediaPlayer播放歌曲

时间:2016-02-20 14:00:28

标签: c# audio windows-phone-8.1 media-player

我正在尝试从StorageFile列表中播放歌曲。我可以加载所有歌曲,但我不知道如何使用BackgroundMediaPlayer

播放它们

这是我到目前为止所得到的:

UI

        <Button Content="Load" x:Name="loadbutton" Height="100" Width="100" Click="loadButton_Click"/>
        <ListView x:Name="FolderList" HorizontalAlignment="Left" Height="250" VerticalAlignment="Top" Width="400">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Name="TextBlockAlbum" Text="{Binding DisplayName}" Tapped="Album_Tapped" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

按钮加载我的所有相册并在我的ListView中显示它们。当我点击ListView时,应该使用BackgroundMediaPlayer播放专辑中的所有歌曲(这不起作用)

点击按钮:

    private async void loadButton_Click(object sender, RoutedEventArgs e)
    {
            await RetriveFilesInFolders(listOfFiles, folder);
            var ListOfAlbum = (await folder.GetFoldersAsync(CommonFolderQuery.GroupByAlbum)).ToList();
            FolderList.ItemsSource = ListOfAlbum; //ListView contains Albums
    }

    private async Task RetriveFilesInFolders(List<StorageFile> list, StorageFolder parent)
    {
        foreach (var item in await parent.GetFilesAsync()) list.Add(item);
        foreach (var item in await parent.GetFoldersAsync()) await RetriveFilesInFolders(list, item);
    }

    private async void Album_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
    {
        //Load Tracks From Album
        TextBlock st = (TextBlock)sender;
        string albumname = st.Text;

        IReadOnlyList<StorageFile> ListOfSongs = (await folder.GetFilesAsync()).ToList();
        List<StorageFile> mylist = new List<StorageFile>();

        foreach(var file in ListOfSongs)
        {
            MusicProperties musicProperties = await file.Properties.GetMusicPropertiesAsync();
            if (musicProperties.Album == albumname)
                mylist.Add(file);
        }
    }

mylist现在包含特定专辑中的所有歌曲。如何使用音频播放器播放它们?

这是我到目前为止所做的(但它不起作用)

BackgroundMediaPlayer.Current.SetFileSource(mylist[2]);
var message = new ValueSet();
message.Add(Constants.StartPlayback, "0");
BackgroundMediaPlayer.SendMessageToBackground(message);

我知道这是一种复杂的方式,但我找不到更好的解决方案,可以在ListView(或任何视图)中列出我的专辑,并播放该专辑中的所有歌曲。

0 个答案:

没有答案