在system/core/rootdir/init.rc中有这样一段:
service media /system/bin/mediaserver
class main
user media
group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc mediadrm
ioprio rt 4
表明android系统在启动时会加载/system/bin/mediaserver可执行程序,也就是我们的media系统服务。
mediaserver的源码在/frameworks/av/media/mediaserver/目录。
在media_mediaserver.cpp中启动了多个系统中重要的Server:
- AudioFlinger:音频系统中的核心服务
- AudioPolicyService:音频系统中关于音频策略的重要服务
- MediaPlayerService:多媒体系统中的重要服务
- CameraService:有关照相和摄像的重要服务
我们重点研究系统中audio相关的系统服务,其中包括AudioFlinger,AudioPolicyService,MediaPlayerService。接下来我们分章节介绍。