本书是一本 Android系统多媒体工程师的实战手册,基于 Android 12版本源码讲解,从结构上将Android系统多媒体分为5章进行介绍,包括第1章 Android系统环境篇、第2章音频篇、第3章相机篇、第4章编解码篇、第5章图形篇。
本书旨在帮助读者系统、深入、快速学习 Android系统多媒体模块,并且将其用于工作实战、兴趣研究等。本书将每个多媒体模块多余的层层封装全部剥离,去掉 Runtime和Java层的干扰,以 C 实战示例展示每个多媒体模块最重要、最本质的内容,帮助读者以最短的时间在模块之间横向迁跃学习,以应对时代快速变化产生的新需求。
本书适用于 Android系统及相关技术开发人员。
Android 系统至今已经迭代到 Android14, 系统代码越来越庞大。 很多工程师刚开始接触到 Android 系统源码, 由于对代码背后的设计框架不了解, 在其中绕来绕去, 往往是一头雾水, 丧失了继续探索的耐心。 市面上缺少针对 Android 系统级多媒体的书籍, 有些开发者开始时只是关注一些细枝末节的东西, 没有找到正确打开 Android 源码路线图的方法, 所以学起来比较痛苦。
Android 系统多媒体模块的复杂度比较高, 每个模块( 例如音频、 相机、编解码等) 都需要一个或多个垂直领域的工程师来开发维护, 这就造成工程师只能垂直专注在某一个模块, 无法快速跨模块上手开发, 因为每个模块之间都有很深的知识壁垒。 特别是对于多媒体领域更是如此, 开发者往往在自己不熟悉的多媒体模块, 一头扎进 Android 源码, 往往是处于一个只见树木、 不见森林的状态, 陷入一种迷茫的状态。
本书旨在解决模块之间快速横跨的问题, 就像要伐倒一棵树, 首先要找到它的根部, 再找到它的树干, 接着是细枝末节, 这才是正确做事的逻辑。而不是先在它的枝叶花费很多时间, 那样往往也没有什么进展。 只有先找到树根和树干在哪儿, 在这个基础上再分析它的细枝末节才会有好的效果。
本书对多媒体每个模块的主线路径进行拆解, 每个模块都是从最核心流程开始讲解, 再到实战应用, 这样更能开拓一个开发者的视野和深度理解Android 系统多媒体模块。
为了满足读者能在 Windows 上开发 Android 源码, 且不用再单独安装虚拟机环境, 第1 章就讲解使用微软在 Windows 10 以上系统提供的 WSL(全称 Windows Subsystemfor Linux) 编译 Android 源码, 并且提供了图形化版本 WSLg( Windows11 才支持 WSLg) , 即在 WSL 中可以运行Linux 图形应用程序。 这样就解决了开发者频繁切换操作系统的烦恼, 同时可以使用Windows 丰富的应用程序和Linux 系统进行开发工作, 可谓是一举两得。
在多媒体模块部分, 先帮读者扫盲, 从基础概念开始, 接着讲解整个模块的架构图, 然后讲解模块的核心服务, 最后讲解代码实战练习, 这样循序渐进便于理解; 同时采用大量架构图、 时序图、 流程图帮助读者看清模块之间的联系, 通过图文结合的方式, 使读者既能从整体把握 Android 系统多媒体的每个模块层次架构, 又能深入主干脉络的核心要点。
目前很多企业为了降本增效而进行裁员, 在这样的环境中, 成为一个一专多能的工程师往往比较受欢迎, 在市场上也更有竞争力。
本书的读者对象如下:
Android 系统开发人员;
Android 多媒体应用开发人员;
Android 音频开发人员;
Android 编解码开发人员;
Android 相机开发人员;
Android 图形开发人员;
Android 多媒体开发人员;
想了解高性能音频的开发人员;
想了解 WSL 如何开发 Android 源码的开发人员。
由于作者的水平有限, 书中难免会出现一些错误或者不准确的地方, 恳请广大读者批评指正。
致 谢
感谢我的母亲, 是她在背后默默地支持着我。
感谢我的爱人, 是她一直在我写作过程中鼓励我。
感谢好友刘兴光, 以专业的视角帮忙审稿, 提出了许多宝贵的意见。
感谢北京航空航天大学出版社的大力支持和帮助, 使我的作品得以出版。
感谢广大读者朋友的厚爱和支持。
赵广建
2024 年2 月