我有一个通用的Windows商店项目。在Windows Phone
部分,我使用BackgroundMediaPlayer.Current
来播放音频。该应用程序通过KnownFolders.MusicLibrary
访问媒体文件。问题是当我用虚拟SD卡在模拟器上运行我的应用程序时,音乐播放,一切都很好。但是当我将应用程序部署到我的Lumia 920
运行WP8.1 DevPreview
,并按下"播放"按钮时,什么也没有发生。没有例外,没有强制关闭……完全没有。问题:这是一个内部存储问题(Lumia 920
没有SD卡)或BackgroundMediaPlayer
有一个bug或bug隐藏在OS预览版本?
我也遇到过同样的问题。
如果你注册到处理器:mediaPlayer.MediaFailed += mediaPlayer_MediaFailed;
,你会发现你得到一个UnauthorizedAccessException
当播放本地歌曲(不是在SD卡上)。
这是我所做的和我是如何解决的:
这个错误是由于BackgroundMediaPlayer.Current.SetUriSource
,不管什么原因,它只适用于SD卡上的文件。
所以我没有将文件的路径传递给SetUriSource
,而是用
StorageFile
StorageFile sf = await StorageFile.GetFileFromPathAsync(musicDataFullPath);
和
mediaPlayer.SetStreamSource((await sf.OpenStreamForReadAsync()).AsRandomAccessStream());
现在可以运行了....