百度哪个网站做贸易,企业网站建设需要提供什么内容,wordpress环境的搭建,电子商务是什么意思从事Android Media开发工作三年有余#xff0c;刚从萌新变成菜鸟#xff0c;一路上跌跌撞撞学习#xff0c;看了很多零零碎碎的知识#xff0c;为了加深对Android Media框架的理解#xff0c;决定在这里记录下学习过程中想到的一些问题以及一些思考#xff0c;也希望对初… 从事Android Media开发工作三年有余刚从萌新变成菜鸟一路上跌跌撞撞学习看了很多零零碎碎的知识为了加深对Android Media框架的理解决定在这里记录下学习过程中想到的一些问题以及一些思考也希望对初学Android并且有相同问题的同学有一些帮助。由于本人水平有限笔记的内容可能会有一些错误如果看到也恳请指出。 ps. 这里的Media框架指的是Android媒体播放器、音视频编解码相关的内容。 下面是我绘制的简单的Android Media框架图主要包含有8个组成部分
Media Java API (MediaPlayer.java)Java API 用到的 JNI 方法以及本地服务的封装 (libmedia)本地服务的实现MediaPlayerService (media.player)本地player的实现 (NuPlayer)player依赖的相关服务 (media.extractors)player依赖的编解码框架 (libstagefright)libstagefright所依赖的vendor服务 (media.codec)编解码组件框架 (OpenMax) 我们一起先了解一个问题为什么Media框架中要使用服务而不是动态链接或者静态链接调用呢
我的理解是资源复用。比如说media.player这个service中会存储有MediaCodecList相关的信息这个信息是通过加载/system/etc 或者/vendor/etc 中的xml文件获取的使用服务我们可以只加载一次这些信息就可以到处使用而不是每次使用时单独去加载。当然还有其他原因这里不做过多的叙述等到了相关章节会再详细了解。
开始学习前还有一些前备知识需要了解包括智能指针、异步消息机制、以及binder框架这三部分穿插于Android Media框架的各个角落先了解他们会对我们看代码有些许帮助。我在学习Media框架之前已经提前学习了这部分的内容也做了一些笔记这里也贴出来让有需要的同学看看。
智能指针异步消息机制binder学习
对于binder的学习可以不用很深入我也不太会笔记记录的乱起八糟了解如何使用即可。这里也贴一个我的学习demo比较复杂一点但是更加贴近实际的使用
binder demo
学习过程中贴的代码来自于aospxref.com
aospxref.com