Коллекция песен WP8/VS2013 MediaLibrary пуста

Я играю с написанием приложения для mp3-плеера для WP8, используя MediaLibrary для обработки собственной коллекции mp3 телефона. Я хочу проверить результат в эмуляторе телефона на VS2013, но когда я использую следующий код:

using (MediaLibrary library = new MediaLibrary())
        {
            SongCollection songs = library.Songs;
            Song song = songs[0];
            MediaPlayer.Play(song);
        }

Коллекция песен пуста, по-видимому, потому, что VS ничего не знает о медиатеке с песнями.

Есть ли способ проверить это в эмуляторе, используя поддельную медиатеку, или чтобы VS использовал медиатеку Windows? Я просто хочу увидеть (или услышать), как работает код, прежде чем продолжить :)


person Weetobix    schedule 08.04.2014    source источник


Ответы (2)


Мне удалось найти обходной путь!

Если вы добавите 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

person Weetobix    schedule 08.04.2014

По умолчанию библиотека мультимедиа на эмуляторе пуста. Я также не думаю, что возможно автоматически подключить музыкальную папку вашей машины-разработчика к эмулятору, чтобы протестировать таким образом. Возможно можно вручную настроить эмулируемый телефон с учетной записью электронной почты! и сохраняйте музыку таким образом, но даже если это сработает, вам придется делать это каждый раз, когда вы перезапускаете эмулятор.

Лучшим способом тестирования будет развертывание на реальном устройстве.

person ZombieSheep    schedule 08.04.2014
comment
Ааа, спасибо за это - я надеялся, что будет более простой способ. - person Weetobix; 08.04.2014