WP8.1 BackgroundMediaPlayer не воспроизводится на устройстве, но работает на эмуляторе
У меня есть универсальный проект магазина Windows. В Windows Phone
часть, я использую BackgroundMediaPlayer.Current
играть аудио. Приложение получает доступ к медиафайлам через KnownFolders.MusicLibrary
, Проблема в том, что я запускаю свое приложение на эмуляторе с виртуальной SD-картой, играет музыка и все идет хорошо. Но когда я разверну приложение в моем Lumia 920
Бег WP8.1 DevPreview
и нажмите кнопку "Play", тогда ничего не происходит. Без исключений, без принудительного закрытия... Полностью ничего. Вопрос: это проблема внутренней памяти (Lumia 920
нет SD-карты) или BackgroundMediaPlayer
есть ошибка или ошибка скрывается в версии предварительного просмотра ОС?
1 ответ
У меня просто была такая же проблема.
Если вы регистрируетесь в обработчике: mediaPlayer.MediaFailed += mediaPlayer_MediaFailed;
вы узнаете, что вы получите UnauthorizedAccessException
при воспроизведении местных песен (не на SD-карте).
Вот что я сделал и как решил:
Ошибка возникает из-за BackgroundMediaPlayer.Current.SetUriSource
, который по какой-либо причине работает только для файлов на SD-картах.
Таким образом, вместо передачи пути к файлу SetUriSource
Я загрузил StorageFile
с
StorageFile sf = await StorageFile.GetFileFromPathAsync(musicDataFullPath);
а потом
mediaPlayer.SetStreamSource((await sf.OpenStreamForReadAsync()).AsRandomAccessStream());
и так теперь работает....