我正在为WP8编写一个WP8播放器应用程序,使用MediaLibrary来处理手机自己的mp3集合。我想在VS2013上的电话仿真器中测试结果,但是当我使用以下代码时:
using (MediaLibrary library = new MediaLibrary())
{
SongCollection songs = library.Songs;
Song song = songs[0];
MediaPlayer.Play(song);
}歌曲收藏是空的,大概是因为VS没有任何关于歌曲的媒体库的知识。
是否有任何方法在模拟器中使用假媒体库或VS使用windows的媒体库来测试这一点?我只想在继续之前看到(或听到)代码的工作:)
发布于 2014-04-08 20:35:36
我已经找到解决办法了!
如果将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
发布于 2014-04-08 18:26:39
默认情况下,模拟器上的媒体库为空。我也不认为能够自动地将开发机器的音乐文件夹连接到模拟器来进行这种测试。它可能是可以手动配置模拟电话与电子邮件帐户!然后用这种方式将音乐保存到它上,但即使这样做有效,每次重新启动模拟器时,您都必须这样做。
最好的测试方法是不要部署到真正的设备上。
https://stackoverflow.com/questions/22945204
复制相似问题