BackgroundMediaPlayer 在 Windows Phone 8.1 中不起作用
Posted
技术标签:
【中文标题】BackgroundMediaPlayer 在 Windows Phone 8.1 中不起作用【英文标题】:BackgroundMediaPlayer not working in Windows Phone 8.1 【发布时间】:2015-03-11 04:01:33 【问题描述】:我已经建立了一个 Windows Phone 项目及其关联的 BackgroundTask 项目,并且还按照this article 中的说明完成了所需的声明。
我需要从应用程序 UI(从音乐库)中选择一个音频文件,并将其分配给 BackgroundMediaPlayer 来播放它,这样歌曲就可以在 UI 处于前台时播放,也可以在前台播放时播放暂停或屏幕被锁定。
我尝试了以下方法,但它不起作用:
从 UI 设置文件路径:
StorageFile file = (await KnownFolders.MusicLibrary.GetFileAsync(
"Song from Music Library.mp3"));
BackgroundMediaPlayer.Current.SetUriSource(new System.Uri(file.Path,
UriKind.RelativeOrAbsolute));
BackgroundMediaPlayer.Current.Play();
结果:没有播放音频。不会抛出异常。
将文件路径作为字符串传递给后台任务,从音乐库中搜索文件并播放:
IReadOnlyList<StorageFile> songs = await
KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);
StorageFile fileToPlay = songs.AsQueryable().Single(
s => s.Path == toPlay);
BackgroundMediaPlayer.Current.SetFileSource(fileToPlay);
结果:调试器在“StorageFile fileToPlay = song.AsQueryable().Single(s => s.Path == toPlay);”之后没有前进。它就停在那里。 同样,没有播放音频。不会抛出异常。
感谢您的帮助。
【问题讨论】:
你的BackgroundPlayer启动了吗?你调试了吗? 是的.. 我发现了这个问题。 BackgroundMediaPlayer 初始化没有发生。它现在可以工作,但有时会抛出此异常:“后台音频任务未在预期时间启动”是因为 BackgroundMediaPlayer 启动需要一些延迟时间吗? 任务未启动的原因可能有很多——您的代码可能由于系统策略或其他原因而关闭。注意不要同时开始两个任务。 【参考方案1】:BackgroundMediaPlayer set Uri source of Media library item
StorageFile file = (await KnownFolders.MusicLibrary.GetFilesAsync()).FirstOrDefault();
BackgroundMediaPlayer.Current.SetUriSource(new Uri(file.Path, UriKind.RelativeOrAbsolute));
查看答案。
【讨论】:
以上是关于BackgroundMediaPlayer 在 Windows Phone 8.1 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Windows Phone 8.1 的后台媒体播放器中的无缝循环