我正在为WP8编写一个mp3播放器应用程序,使用MediaLibrary处理手机自己的mp3集合。 我想在VS2013上的手机模拟器中测试结果,但是当我使用以下代码时:
using (MediaLibrary library = new MediaLibrary())
{
SongCollection songs = library.Songs;
Song song = songs[0];
MediaPlayer.Play(song);
}
歌曲收藏是空的,大概是因为VS不知道有歌曲的媒体库。
有没有办法在模拟器中使用假的medialibrary或VS来使用Windows的媒体库来测试它?我只是想在继续之前看到(或听到)代码工作:)
答案 0 :(得分:1)
我设法找到了解决方法!
如果您将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;
我很乐意为此声名鹊起,但我在这里找到了答案:
答案 1 :(得分:0)
默认情况下,模拟器上的媒体库为空。我也不认为可以自动将您的开发机器的音乐文件夹连接到模拟器以测试这种方式。 可能可以使用电子邮件帐户手动配置模拟电话!并以这种方式将音乐保存到其中,但即使这样,每次重新启动模拟器时都必须这样做。
测试的最佳方式是部署到真实设备。