应用于: Windows Phone 8 | Windows PhoneOS 7.1
你可以为winphone编写在后台播放音乐的app。这表示即使当用户点击返回或开始按钮离开你的应用界面时,你的应用依然可以继续播放音乐。本文讨论后台音乐应用的组成以及它们如何一起工作。
本文包含以下几节。
·后台音频架构
·后台音乐的最佳实践
后台音频架构
后台音频应用利用了后台代理作为基础。后台代理是从Windows Phone OS 7.1引入的。更多信息见Multitasking for Windows Phone.
Windows Phone上的所有媒体都是通过Zune Media队列播放的。你的后台音频应用发送命令到Zune Media队列来设置当前音轨、开始回放、暂停、快进、从头播放、等等之类。你通过调用BackgroundAudioPlayer类中的方法两做这些事情。实例对象然后与Zune Media队列通信以管理音频回放。
全局音量控制(UVC)是一个控制集,当播放音乐时或用户按下音乐控制开关时,它就出现在锁屏上。UVC也管理着Zune Media队列。因此,当开始从你的应用播放某些东西时,音频就可以通过使用UVC控制进行。UVC发送事件到你的应用中的AudioPlayerAgent ,使得你可以实现播放列表逻辑。
共有两种后台音频应用。一种是实现了一个简单的播放列表,并传一个包含了媒体文件的地址的Uri给Zune Media 队列来设置当前的Track。Uri 可以是一个本地地址也可以是一个远程地址。同时这也要求音频必须是WindowsPhone支持的类型。见Supported media codecs for Windows Phone 查看有效的音频文件类型。
另一种是使用MediaStreamSource实现一个音频流,向回放系统提供音频样点。此种流的格式可以随意,因为你自己从MediaStreamSource 实现一个派生类来处理流和音频解码。如何实现一个MediaStreamSource 超出了本文的范围。
这两种应用有很多共通点。我们将先讨论实现一个播放列表的应用,再讨论使用MediaStreamSource(MSS)实现流的一些内容。
播放列表应用
要创建一个后台音频播放列表应用,你必须实现两部分:一个提供用户界面来控制回放的应用,和一个实现了AudioPlayerAgent的派生类的assembly。
应用界面
如果你使用Visual Studio模板来创建你的应用,你的应用界面就存放于MainPage.xaml 和MainPage.xaml.cs 文件中。你的主应用使用Instance 来设置Zune Media队列的当前track、初始化回放,等等之类。
AudioPlayerAgent
你的AudioPlayerAgent 是被操作系统实例化的。用于处理用户发出的动作。动作可能通过你的应用界面发出也可能通过UVC。
你的AudioPlayerAgent 运行于后台并且调用一个BackgroundAudioPlayer的实例,BackgroundAudioPlayer又调用Zune Media 队列来实际播放音频。
当你的agent 处理完成OnUserAction(BackgroundAudioPlayer, AudioTrack, UserAction,Object)、OnPlayStateChanged(BackgroundAudioPlayer, AudioTrack,PlayState)、或OnError(BackgroundAudioPlayer, AudioTrack, Exception,Boolean),就调用NotifyComplete 来通知操作系统你已经完成了,然后agent就可以安全的从内存中删除。
使用Windows Phone Audio Playback Agent 模板来创建一个新的AudioPlayerAgent 工程,然后把它添加到你的解决方案中。然后还要设置引用关系。
音频流应用
要创建一个音频流应用,你必须实现与Playlist Application相同的部分。典型地,你必须创建一个带有用户界面的主应用,和一个AudioPlayerAgent。 对于一个音频流应用,你还需要实现一个从AudioStreamingAgent派生的类和一个从MediaStreamSource派生的类。你要实现的部分是下表中的绿色部分。
音频流Agent
AudioStreamingAgent 负责创建MediaStreamSource 并指定Zune Media 队列到这个MediaStreamSource 。这通过调用传给OnBeginStreaming(AudioTrack, AudioStreamer) 方法的参数AudioStreamer 的SetSource(MediaStreamSource) 方法来指定。
使用Windows Phone Audio Streaming Agent 模板来创建一个新的AudioStreamingAgent 工程并添加到你的解决方案。
MediaStreamSource
Zune Media Queue 调用你的MediaStreamSource 来获取音频样点。创建MediaStreamSource 超出本文讨论范围。更多信息请见MediaStreamSourcesample。
后台Agent 生命期
你的AudioPlayerAgent 是被BackgroundAudioPlayer创建的,当BackgroundAudioPlayer需要处理从你的应用界面或UVC发来的UserAction 请求时就会创建它。
你的AudioStreamingAgent也是被BackgroundAudioPlayer创建的,当BackgroundAudioPlayer需要一个新的流时就创建它。当你的agent被创建后,BackgroundAudioPlayer调用AudioStreamingAgent中的OnBeginStreaming(AudioTrack, AudioStreamer) 方法。
后台代理会在调用了Abort 或NotifyComplete 后被清理掉。
其它的后台音频类
后台音频应用使用了其它一些类来完成音频播放器体验。
BackgroundAudioPlayer
BackgroundAudioPlayer 面向Zune Media队列。在其Instance上的调用会影响设备上音频的播放。
AudioTrack
AudioTrack 代表了一个track的元数据,包括title、artist、album、和URI。如果URI被设置为null,系统就认为你把track设置为一个MediaStreamSource。此时,你可以使用Tag 属性从AudioPlayerAgent 向AudioStreamingAgent传递信息。
AudioStreamer
AudioStreamer 的实例被传给OnBeginStreaming(AudioTrack, AudioStreamer)。在你的OnBeginStreaming实现中,调用SetSource(MediaStreamSource) 来指定一个从MediaStreamSource派生的类,这个类提供音频样点。
分享到:
相关推荐
Windows Phone Blog Menu是一个Silverlight导航控件,看起来像Windows Phone 7。 控件中的tiles链接到web站点在你的博客中使用这个控件可以表达你对WP7的喜爱。 Windows Phone Blog Menu is a Silverlight ...
本实验演示了如何使用版本为Mango的Windows Phone的API添加后台传输服务到您的应用程序中,并演示了如何处理后台传输服务的请求。 目标 本实验将帮助您完成下列目标: • 添加后台传输服务(上传和下载)到您的...
视频,示例叫你如何开发Windows phone7[1_01]
Windows Phone(简称:WP)是微软发布的一款手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。微软公司于2010年10月11日晚上9点30分正式发布了智能手机操作系统Windows ...
Windows Phone手机ROM制作工具
[Packt Publishing] Windows Phone 8 游戏开发教程 (英文版) [Packt Publishing] Windows Phone 8 Game Development (E-Book) ☆ 图书概要:☆ A practical guide to creating games for the Windows Phone 8 ...
详细讲解window phone 7的开发,包括连接sql 数据库 控件应用 等
本书旨在分享强大的Microsoft编程工具(诸如Silverlight、XNA和Visual Studio 2010 Express Edition一类)的使用心得,介绍了如何使用现有的C#和.NET编程技能来开发一些Windows Phone 7应用程序。本书作者团队探讨了...
微软向用户推送了Windows Phone7.5(代号Mango)更新;今天,微软面向开发者正式发布了Windows Phone SDK 7.1开发工具的RTW版 Windows Phone SDK 7.1.1 更新在现有的 Windows Phone SDK 7.1 的基础上提供了更多功能。...
内容提要: 本书对WindowsPhoneXNA游戏开发的流程进行了详细的讲解,对其核心内容和开发技巧进行了深入的说明。...本书还针对WindowsPhone8的新特性以及如何将WindowsPhone7游戏向WindowsPhone8上迁移做了详细的说明。
Android、iPhone、Windows Phone手机网页及网站设计 最佳实践与设计精粹 pdf扫描版
Windows_Phone_7_详解
Silverlight for Windows Phone Toolkit.msi 其中包含了很多Windows Phone 开发需要的组件。 你正在开发Windows Phone程序的时候, 当你需要添加日历控件的时候,你发现在基本工具箱里面没有你想要的空间,并且也没有...
windows phone7 音乐播放器实例
Windows Phone 概述,Windows Phone 概述,Windows Phone 概述,Windows Phone 概述
windows phone 7 code
Windows Phone 7 高级编程 Windows Phone 用户体验设计准则 Windows+Phone7完美开发征程 Windows-Phone-7-UI设计及人机交互指南 wp7 官方中文教程
windows phone管理工具用户wp8智能机,只需要将windows phone.exe在PC端运行并连接手机,就可以在PC端浏览操作手机SD卡中的文件。
iPhone+UIKit详解(双色) iphoneUI设计的经典入门书籍!!!
Windows Phone 7介绍,移动互联网大会资料