前提・実現したいこと
こんにちは。
Windows10homeとVisual Studio 2017 communityを使って、UWPの音楽再生を作ろうとしています。
発生している問題・エラーメッセージ
1曲は再生できたのですが、複数曲の再生で躓いています。
このあと、mediaElementに設定したソースをどうmediaPlayerに渡せばよいかわからないので、どなたかご教示ください。
試したこと
https://docs.microsoft.com/ja-jp/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer
https://docs.microsoft.com/ja-jp/windows/uwp/audio-video-camera/media-playback-with-mediasource
のページを参考に、まず1曲再生してみました。
1曲だけ。
該当のソースコード
C#
1using Windows.Media.Core; 2using Windows.Media.Playback; 3using Windows.Storage; 4 5namespace MusicPlayerApp 6{ 7 public sealed partial class MusicPage : Page 8 { 9 MediaSource mediaSource; 10 MediaPlayer mediaPlayer; 11 private async Task OnPlay() 12 { 13 var filePicker = new Pickers.FileOpenPicker(); 14 filePicker.FileTypeFilter.Add(".mp3"); 15 filePicker.SuggestedStartLocation = PickerLocationId.MusicsLibrary; 16 17 StorageFile file = await filePicker.PickSingleFileAsync(); 18 19 if (file != null) 20 { 21 mediaSource = MediaSource.CreateFromStorageFile(file); 22 mediaPlayer.Source=mediaSource; 23 mediaPlayer.Play(); 24 } 25 } 26 } 27}
そこで次に、複数曲に進みました。
XAML
1<MediaElement x:Name="mediaelement" Visibility="Collapsed" AutoPlay="True" /> 2<MediaPlayerElement x:Name="mediaplayerelement" Visibility="Collapsed" AutoPlay="True" />
C#
1using Windows.Media.Core; 2using Windows.Media.Playback; 3using Windows.Storage; 4 5namespace MusicPlayerApp 6{ 7 public sealed partial class MusicPage : Page 8 { 9 MediaSource mediaSource; 10 MediaPlayer mediaPlayer; 11 private async Task OnPlay() 12 { 13 StorageFile file = await filePicker.PickSingleFileAsync(); 14 mediaSource = MediaSource.CreateFromStorageFile(file); 15 mediaSource.CustomProperties["Title"] = "title1"; 16 var item = new MediaPlaybackItem(mediaSource); 17 18 19 file = await filePicker.PickSingleFileAsync(); 20 var mediaSource2 = MediaSource.CreateFromStorageFile(file); 21 mediaSource2.CustomProperties["Title"] = "title2"; 22 var item2 = new MediaPlaybackItem(mediaSource2); 23 24 var mediaPlaybackList = new MediaPlaybackList(); 25 mediaPlaybackList.Items.Add(item); 26 mediaPlaybackList.Items.Add(item2); 27 28 //mediaPlaybackList.CurrentItemChanged += MediaPlaybackList_CurrentItemChanged; 29 30 mediaElement.SetPlaybackSource(mediaPlaybackList); 31 //このあと、mediaElementに設定したソースをどうmediaPlayerに渡せばよいかわかりません。 32 //mediaPlayer.Source = mediaPlaybackList; 33 //mediaPlayer.Play();//これだと再生しない。 34 35 } 36 } 37}
補足情報(FW/ツールのバージョンなど)
Windows10 64bit(PC)
Visual Studio 2017 Community
対象 Windows 10 Phone
あなたの回答
tips
プレビュー