All the samples到目前为止,我看到的是带有硬编码歌曲列表的AudioPlaybackAgents。
我需要从前台应用程序控制列表。对我来说似乎是一个明显的要求。
BackgroundAudioPlayer.Instance.Track api让你看起来可以直接从前景应用程序向BackgroundPlayer添加一个Track,它们应该只是玩。这似乎不起作用
如果“播放列表”只是一条曲目,后台代理会做什么?
如果播放列表是多个曲目,并且在其回调中调用代理以在列表中移动,那么将播放列表从前台应用程序传送到代理的建议方式是什么?
TIA
Pat Long
答案 0 :(得分:2)
我发现BackgroundAudioPlayer(BAP)和前台应用程序之间的接口很可能是Windows Phone 7.x SDK中最缺乏构思的“工程”部分。 IsolatedStorage对我来说并不适用,因为我的应用程序可以下载许多文件,并且只能在“播放列表”中一次播放几个文件。我应该暂时将这些文件复制到IsolatedStorage中的“特殊”位置,以便代理可以从那里读取播放列表吗?流行10到20MB,我不这么认为。此外,如果我想使用后台传输服务 - 这非常有效,顺便说一句 - 逐步将文件添加到播放列表,我将如何告诉代理在下载时加载更多曲目?如果没有按照正确的顺序设置轨道来解决某些约定,则无法完成。
尝试在代理上使用静态成员将曲目添加到播放列表(正如他们在文档中所建议的那样),并且......嗯...是的,这只是一个非首发。
我现在解决的是管理前台应用中的播放列表,并根据用户的操作逐一将曲目提供给BAP。问题是这不适用于锁定屏幕上显示的BAP控件。它似乎也没有始终如一地处理TrackEnded活动。我只是在使用MediaElement和放弃背景音频的整个范围内。
我希望发明这个API闹剧的人不参与WP的未来版本。
答案 1 :(得分:1)
如果您正在使用播放列表,则假设即使应用不在前台,这些也会添加/更新。在这种情况下,代理必须能够管理播放列表。
如果您一次只播放一首曲目,那么后台代理只需要在您的应用不在前台时保持曲目播放。
应用程序和代理之间的通信充其量是棘手的。最简单的通信方式是在隔离存储中创建文件,一个写入,另一个读取(然后删除)或通过数据库。
答案 2 :(得分:0)
AudioTrack audioTrack =
new AudioTrack(new Uri("shared\\transfers\\1.mp3", UriKind.RelativeOrAbsolute), null,
null,
null,
null,
null,
EnabledPlayerControls.Pause);
BackgroundAudioPlayer.Instance.Track = audioTrack;
BackgroundAudioPlayer.Instance.Play();