Android的媒体路由功能应用与框架解析

上传人:m**** 文档编号:47985573 上传时间:2018-07-07 格式:DOCX 页数:9 大小:21.25KB
返回 下载 相关 举报
Android的媒体路由功能应用与框架解析_第1页
第1页 / 共9页
Android的媒体路由功能应用与框架解析_第2页
第2页 / 共9页
Android的媒体路由功能应用与框架解析_第3页
第3页 / 共9页
Android的媒体路由功能应用与框架解析_第4页
第4页 / 共9页
Android的媒体路由功能应用与框架解析_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Android的媒体路由功能应用与框架解析》由会员分享,可在线阅读,更多相关《Android的媒体路由功能应用与框架解析(9页珍藏版)》请在金锄头文库上搜索。

1、AndroidAndroid 的媒体路由功能应用与框架解析的媒体路由功能应用与框架解析一、功能描述Android 的媒体路由 API 被设计用来允许多种媒体(视频、音乐、图片)在与 ANDROID设备连接(无线或有线)的辅助设备(如电视、立体声、家庭戏院系统、音乐播放机)上显示和播放,使用该框架和 API,允许 Android 用户立即在辅助设备上显示图片、播放音乐、共享视频等。媒体路由框架提供两种播放输出类型:远端播放和辅助输出。远端播放类型指的是辅助设备处理媒体内容的接收、解码和回放,而 Android 设备(如手机)只起远程控制作用,如 ANDROID 应用使用该类型用来支持 Googl

2、e Cast。辅助输出类型则是应用本身处理媒体内容(视频或音乐),包括媒体内容的引出和处理,并把处理结果直接呈现和串流到辅助接收设备上,辅助接收设备只是呈现媒体处理后的最终内容,如 Android 系统中使用该方式用来支持 Wireless Display 输出。媒体路由框架用来提供和抽象已连接的媒体辅助输出的逻辑路径。媒体应用通过一个 MediaRouter 对象(媒体路由框架提供的一个对象)来使用媒体路由框架,用来选择媒体路由,并经过媒体路由框架的路由连接到选择的最终接收设备。Android 系统从 4.3 版本开始提供了一个媒体路由服务,用来对 ANDROID 系统自带的本地显示和声音输

3、出设备的路由支持,如 speaker、有线耳机、USB 耳机,蓝牙 A2DP 输出、HDMI 输出、Wireless Display 输出等。这些媒体路由设备被称为框架提供的系统媒体路由。对于没有被媒体路由框架支持的媒体播放硬件,可以通过实现一个应用,在此应用中通过使用 ANDROID 提供的媒体路由支持库 v7-mediarouter( v7-mediarouter 支持库是版本为V18 及以上的 Android Support 支持库的一部分),继承 v7-mediarouter 支持库中提供的MediaRouteProviderService 和 MediaRouteProvider 基

4、类,实现一个继承这些基类的特定MediaRouteProviderService 服务和一个针对特定硬件的特定的 MediaRouteProvider 对象,以此实现对特定媒体播放硬件的路由支持。这种用户实现的媒体路由称为用户媒体路由。由于 v7-mediarouter 路由支持库兼容于 ANDROID2.1 以上的版本,因此可以使用该库在 ANDROID2.1 以上的系统上开发针对特定媒体播放辅助硬件的媒体路由应用。每个辅助设备(除了蓝牙输出设备)为了支持媒体路由必须继承和实现一个特定MediaRouteProvider 和创建和实现相关的 RouteController 对象。如以上媒体路

5、由框架视图所示,用户通过 MediaRouter 对象对媒体路由的选择最终由媒体路由框架传递和路由到选择路由对应的 MediaRouteProvider 对象,对选择的媒体设备的操作由媒体路由框架转发到 MediaRouteProvider 对象关联的MediaRouteProvider.RouteController 对象,由 MediaRouteProvider.RouteController对象完成对媒体设备的实际操作,包括转发应用发送来的媒体播放控制命令或其它请求以及处理实际的与媒体硬件的通讯。媒体路由提供方在实现 MediaRouteProvider 时需要定义一个MediaRout

6、eProviderDescriptor 对象和几个 MediaRouteProviderDescriptor 对象及IntentFilter 对象来描述媒体路由设备的路由能力。对设备中的每一个可路由的媒体硬件,对于其支持的每一个媒体路由类别,需要定义一个 IntentFilter 对象,并添加到描述该媒体硬件某个路由能力的MediaRouteDescriptor 对象中,并把 MediaRouteDescriptor 对象增加到MediaRouteProviderDescriptor 对象中。二、框架描述如下是媒体路由框架内部主要相关类的一个类图。由这些类图中的类具体负责对系统提供的媒体设备和

7、设备厂商提供的媒体设备的媒体播放路由支持。这些类都位于 v7-mediarouter 支持库中。主要包含如下类:一)、 MediaRouter 类该类是用户使用媒体框架的接口类,由该类为用户提供媒体路由操作的 API 接口。MediaRouter 主要包含如下 API:1)、 public static MediaRouter getInstance(Context context)应用为了使用媒体路由框架,必须首先调用该接口获得一个 MediaRouter 对象实例。MediaRouter 对象内部包含一个全局属性 sGlobal,sGlobal 属性维护一个类型为MediaRouter 类

8、的一个内部类 GlobalMediaRouter 的单一实例,用来维护媒体路由的全局状态,MediaRouter 对象的实例方法一般都是通过 sGlobal 来与媒体路由框架交互。该属性必须在 MediaRouter 对象初始化之前实例化,并只能有一个对象,因此采用了单例模式。2)、 public List getRoutes()获得当前发现的所有媒体路由信息的一个列表,媒体路由框架对于每一个发现的媒体路由都用一个 RouteInfo 对象表示。一个媒体路由提供设备可能包含多个媒体路由。3)、public List getProviders()获得当前发现的媒体路由提供设备的 MediaRou

9、teProvider 信息的列表,用ProviderInfo 对象表示。4)、 public RouteInfo getDefaultRoute()返回播放媒体内容的系统默认路由,媒体路由框架必须提供一个默认媒体路由。5)、public RouteInfo getSelectedRoute()返回用户当前选择的媒体路由。该路由也必须存在。6)、 public void selectRoute(RouteInforoute)用来选择特定的路由。7)、 public boolean isRouteAvailable(MediaRouteSelector selector, int flags)判断

10、是否存在一个与特定 MediaRouteSelector 相匹配的媒体路由,如存在则返回True。MediaRouteSelector 用来描述应用希望发现和使用的媒体路由的能力。8)、 public void addCallback(MediaRouteSelector selector, Callback callback)登记一个具体的 MediaRouter.Callback 回调对象,并用来启动与特定MediaRouteSelector 相匹配的媒体路由的发现,以及监听发现的媒体路由的相关事件,如用户已选择连接到某个媒体路由设备、某个媒体路由设备的特性发生改变或者断开某个媒体路由等事

11、件。应用为了使用相关的媒体路由,必须调用该函数来启动媒体路由的发现,并通过登记的回调函数接收相关的事件。棋牌评测网 http:/9)、 public void removeCallback(Callback callback)注销先前登记的回调。10)、public void addRemoteControlClient(ObjectremoteControlClient)增加一个对选择的路由进行音量控制的控制客户端。该控制客户端必须已经使用AudioManager.registerRemoteControlClient 方法登记于 AudioManager 服务中。该接口用于远程控制路由类型

12、。11)、public void removeRemoteControlClient(Object remoteControlClient)注销先前登记的 RemoteControlClient 对象。二)、MediaRouteProvider 与 MediaRouteProvider. RouteController这两个类都是抽象类。MediaRouteProvider 及其控制类主要提供如下功能:.MediaRouteProvider 的功能是描述和发布接收设备的能力;.MediaRouteProvider. RouteController 类封装接收设备的编程接口和它的通讯传输机制,以

13、便使设备与媒体框架兼容。.媒体路由框架中提供和实现了 MediaRouteProvider 类的两个派生类及其控制类:RegisteredMediaRouteProvider 与RegisteredMediaRouteProvider.Controller,SystemMediaRouteProvider 及有关的 LegacyImpl.DefaultRouteController 和JellybeanImpl.SystemRouteController 控制类,分别对用户添加的媒体路由和系统自带的媒体路由提供支持。.每个非系统提供的辅助设备为了支持媒体路由,必须实现一个专用的MediaRou

14、teProvider 类的派生类及其控制类,并通过RegisteredMediaRouteProvider 类登记到媒体框架中。.每个具体的 MediaRouteProvider 可能提供对多个媒体路由的支持,对MediaRouteProvider 支持的每一个媒体路由需要创建一个独立 RouteController对象来与该媒体路由交互。.每个 RouteController 对象在具体 MediaRouteProvider 类的onCreateRouteController 函数中创建,在 onCreateRouteController 函数中需要根据媒体路由提供描述中的包含的媒体路由数创

15、建相应的 RouteController 对象。.三)、媒体路由提供服务(MediaRouteProviderService)类.MediaRouteProviderService 类作为一个抽象的 service 类,用来提供对用户提供的具体 MediaRouteProvider 类的封装。每一个非系统提供的媒体接收设备要支持媒体路由,在其应用包中必须实现一个 MediaRouteProviderService 服务的派生类和一个 MediaRouteProvider 类的特定实现。.在 MediaRouteProviderService 服务的派生类中需要实现MediaRouteProvi

16、derService 服务的虚函数 onCreateMediaRouteProvider,在该函数中实例化特定的 MediaRouteProvider 类。.在特定的 MediaRouteProvider 类的实例化函数中调用其 publishRoutes 函数来描述和发布要支持的媒体播放硬件的路由能力,以便系统中其它应用能够确定是否能够和如何与之交互。媒体设备路由能力用 MediaRouteProviderDescriptor 对象描述。.publishRoutes 函数通过调用 MediaRouteProvider 的 setDescriptor 函数来发布该 MediaRouteProvider 支持的媒体设备路由能力。.四)、RegisteredMediaRouteProvider 与RegisteredMediaRouteProvider.Controller.RegisteredMediaRouteProvider 是 MediaRouteProvider 类的子类,RegisteredMediaRouteProvider 是对媒体路由框

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 手机/mobile开发

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号