C# WP8/VS2013媒体库歌曲集合为空
我正在玩为WP8编写mp3播放器应用程序的游戏,使用MediaLibrary处理手机自己的mp3收藏。 我想在VS2013上的phone emulator中测试结果,但使用以下代码时:C# WP8/VS2013媒体库歌曲集合为空,c#,windows-phone-8,visual-studio-2013,multimedia,C#,Windows Phone 8,Visual Studio 2013,Multimedia,我正在玩为WP8编写mp3播放器应用程序的游戏,使用MediaLibrary处理手机自己的mp3收藏。 我想在VS2013上的phone emulator中测试结果,但使用以下代码时: using (MediaLibrary library = new MediaLibrary()) { SongCollection songs = library.Songs; Song song = songs[0]; M
using (MediaLibrary library = new MediaLibrary())
{
SongCollection songs = library.Songs;
Song song = songs[0];
MediaPlayer.Play(song);
}
歌曲集是空的,这可能是因为VS不知道媒体库中有歌曲
有没有办法在仿真器中使用假媒体库或VS使用windows的媒体库来测试这一点?我只想在继续之前看到(或听到)代码工作:)默认情况下,emulator上的媒体库是空的。我也不认为有可能自动将你的开发机器的音乐文件夹连接到模拟器上进行测试。可以手动配置模拟手机的电子邮件帐户!并以这种方式保存音乐,但即使这样做有效,您也必须在每次重新启动仿真器时都这样做
最好的测试方法是不要部署到真正的设备上 我已经设法找到了解决办法 如果将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;
我很想为此获得荣誉,但我在这里找到了答案:
啊,谢谢你,我希望有一个更简单的方法。