Android多媒体框架

 类图


ProcessState 是一个singleton 类别,它只有一个物件(Instance) 。此物件负责打开Binder Driver ( /dev/binder 驱动) ,准备让其进程里的程式能与Binder Driver 进行沟通。例如,它在其进程( 于此,称为client 进程) 里诞生BpBinder 物件,此BpBinder 物件的执行绪(Thread) 透过Binder Driver 而转接(relayto) 到IPC thread 去执行另一个进程(( 于此,称为service 进程) 里的服务( 例如ServiceManager service ) 。


  


  与ProcessState 类别具有密切关系的是IPCThreadState 类别,这IPCThreadState 类别也是singleton 类别,只有一个物件(Instance) 。


 


       ProcessState 负责打开BinderDriver ,与Binder Driver 沟通;而IPCThreadState 负责透过Binder Driver 而进行跨进程的实际资料读写动作。例如,client 进程的程式呼叫BpBinder 的IBinder 介面的transact() 函数,此transact() 函数则呼叫IPCThreadState 物件的transact() 函数去呼叫Binder Driver 的ioctl() 函数来进行实际资料传递。

 

       


       IPCThreadState 会block( 阻塞) 住client 进程的calling thread ,而转接(relay to) 到IPC thread 去执行server 进程里的target 服务。同时等待IPC thread 执行完毕,回传数据,才放行calling thread 。◆
### Android 多媒体框架架构 Android多媒体框架基于四层架构设计,每一层都承担着特定的功能并相互协作来实现完整的多媒体处理能力[^1]。 #### 应用程序层 应用程序层包含了各种预安装的应用以及第三方应用。这些应用通过调用高层级APIs与下一层交互,从而控制音视频播放、录制等功能。 #### 框架层 (Framework Layer) 此层次提供了Java接口给上层应用,并管理音频焦点(Audio Focus),通知监听器等服务。它还负责启动MediaServer进程中的本地服务组件。 #### 媒体服务器层(Media Server Layer) 位于该层的是多个核心的服务模块,如AudioFlinger, MediaPlayerService CameraService 等。它们实现了具体的硬件抽象逻辑服务端功能,比如解码/编码流数据、访问摄像头资源等等。这部分工作主要由C++编写完成,在Linux内核之上运行以获得更好的性能表现。 #### Linux 内核层(Linux Kernel Level) 最底层是操作系统的核心部分——Linux kernel,这里定义了驱动程序用于直接操作设备硬件,例如声卡、显卡其他外设。这使得更高层次可以间接地利用物理设施而无需关心具体细节。 ```java // Java代码示例:创建MediaPlayer实例并设置数据源 import android.media.MediaPlayer; public class MyActivity extends Activity { private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { mediaPlayer = new MediaPlayer(); String path = "file:///sdcard/audio.mp3"; mediaPlayer.setDataSource(path); // 设置要播放文件路径 mediaPlayer.prepare(); // 准备播放前准备工作 mediaPlayer.start(); // 开始播放音乐 } catch (Exception e){ Log.e("MyActivity", "Error playing audio file"); } } } ``` 上述结构展示了如何从顶层到底层逐级传递请求的过程;当用户想要执行某些任务时(如播放一首歌曲),就会触发一系列跨层的操作直至最终达到目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值