WP8 / VS2013媒体库歌曲集合是空的
本文关键字:集合 VS2013 媒体库 WP8 | 更新日期: 2023-09-27 17:57:21
我正在为WP8编写mp3播放器应用程序,使用MediaLibrary来处理手机自己的mp3集合。我想在VS2013上的手机模拟器中测试结果,但是当我使用以下代码时:
using (MediaLibrary library = new MediaLibrary())
{
SongCollection songs = library.Songs;
Song song = songs[0];
MediaPlayer.Play(song);
}
歌曲集是空的,大概是因为 VS 对包含歌曲的媒体库一无所知。
有没有办法使用假媒体库在模拟器中测试这一点或让 VS 使用 Windows 的媒体库?我只是想在继续之前看到(或听到)代码的工作:)
我已经设法找到了解决方法!
如果将 mp3 文件添加到应用的资产,以下代码会将 mp3 添加到媒体播放器库:
private void AddSong()
{
Uri file = new Uri("Assets/someSong.mp3", UriKind.Relative);
//copy file to isolated storage
var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
var fileStream = myIsolatedStorage.CreateFile("someSong.mp3");
var resource = Application.GetResourceStream(file);
int chunkSize = 4096;
byte[] bytes = new byte[chunkSize];
int byteCount;
while ((byteCount = resource.Stream.Read(bytes, 0, chunkSize)) > 0)
{
fileStream.Write(bytes, 0, byteCount);
}
fileStream.Close();
Microsoft.Xna.Framework.Media.PhoneExtensions.SongMetadata metaData = new Microsoft.Xna.Framework.Media.PhoneExtensions.SongMetadata();
metaData.AlbumName = "Some Album name";
metaData.ArtistName = "Some Artist Name";
metaData.GenreName = "test";
metaData.Name = "someSongName";
var ml = new MediaLibrary();
Uri songUri = new Uri("someSong.mp3", UriKind.RelativeOrAbsolute);
var song = Microsoft.Xna.Framework.Media.PhoneExtensions.MediaLibraryExtensions.SaveSong(ml, songUri, metaData, Microsoft.Xna.Framework.Media.PhoneExtensions.SaveSongOperation.CopyToLibrary);
}
我还需要补充:
using System.IO.IsolatedStorage;
我很想为此声称功劳,但我在这里找到了答案:
http://social.msdn.microsoft.com/forums/wpapps/en-US/f5fa73da-176b-4aaa-8960-8f704236bda5/medialibrary-savesong-method
默认情况下,模拟器上的媒体库为空。 我也不认为不可能自动将开发机器的音乐文件夹连接到模拟器以这种方式进行测试。 可以使用电子邮件帐户手动配置模拟电话!并以这种方式将音乐保存到其中,但即使有效,您也必须每次重新启动模拟器时都这样做。
最好的测试方法是不要部署到真实设备。