WEB开发网
开发学院手机开发Android 开发 Android的MediaPlayer架构介绍补充 阅读

Android的MediaPlayer架构介绍补充

 2010-07-02 14:51:00 来源:WEB开发网   
核心提示:BpMediaPlayer实例,并保存在它的mPlayer成员变量中,Android的MediaPlayer架构介绍补充(2),对应的在MediaPlayerService实例中,MediaPlayerClient申请,这个时序比较简单,这里不做详细说明,并创建的player对象会被放入clients成员向量中,该向量
BpMediaPlayer实例,并保存在它的mPlayer成员变量中。对应的在MediaPlayerService实例中,MediaPlayerClient申请,并创建的player对象会被放入clients成员向量中,该向量实际上是BnMediaPlayer的对象容器。每个client对象都有自己的mPlayer成员变量,保存的则是OpenCORE创建的PVPlayer对象。这里有两个mPlayer成员变量,各自代表不同类型,不要混淆。

二. 通过MediaPlayer获得service player时序图

以setDataSource接口为例:

使用MediaPlayer的App,可以通过setDataSource来获得(创建)一个player对象,并保存在mPlayer成员中。大概的时序:MediaPlayer首先创建一个service代理对象BpMediaPlayerService,通过该代理对象的 create()方法去call IPC,对MediaPlayerService发出创建player的请求。BnMediaPlayerService则在获取IPC的调用请求后,直接调用MediaPlayerService的create方法,分配一个Client对象,然后通过IPC返回该client对象的 asBinder()的返回结果。BpMediaPlayerService在得到BnMediaPlayerService返回的 client->asBinder()的reply后,会利用readStrongBinder()去读出IBinder对象,将其作为参数调用 interface_cast创建一个BpMediaPlayer。(IBinder对象内部到底记录了些什么,目前还没研究:))得到了 BpMediaPlayer的MediaPlayer对象,将其保存入mPlayer,之后App就可以调用其完成一些列操作。

三. 使用service player时序图

以上的时序图,描述的是之前获得的mPlayer的使用时序。这个时序比较简单,这里不做详细说明,需要注意的是图最右侧,Client对象实际要通过创建和调用OpenCORE里的PVPlayer来最终实现多媒体播放功能

转:muddogxp.cublog.cn

上一页  1 2 

Tags:Android MediaPlayer 架构

编辑录入:coldstar [复制链接] [打 印]
赞助商链接