音量调节过程中的重要的几个Java文件:
AudioManager:
frameworks\base\media\java\android\media\AudioManager.java
- Android为我们提供的(音量大小控制)的API: AudioManager(音频管理器),提供了音量控制与铃声模式相关操作。
AudioService:
frameworks\base\services\core\java\com\android\server\audio\AudioService.java
-
音频系统在java层中基本上不参与数据流(描述了音频数据从数据源流向目的地的流程,AudioTrack,AudioFlinger就是数据流)的,AudioService这个系统服务包含或者使用了几乎所有与音频有关的内容,所以说AudioService是音频系统在java层的大本营;
-
AudioManager拥有AudioService的Bp端,是AudioService在客户端的一个代理,几乎所有客户端对AudioManager进行的请求,最终都会交由AudioService实现;
-
AudioService的功能实现依赖于AudioSystem类,AudioSystem无法实例化,它是java层到native层的代理,AudioService通过它与AudioPolicyService以及AudioFlinger进行通信;
AudioSystem:
应用层AudioManager和AudioService之间通过Binder通信来完成调用关系,到了library层的AudioSystem就可以直接获取AudioFlinger,AudioPolicyService服务。
android p的音量调节跟之前的版本源码改动很多,记录从AudioManager开始的音量调节过程。
ps:结束部分可能有点问题,暂时没有分析出更深入的流程,以后接触的更深入在修改。
Android Audio:setStreamVolume()音量调节过程
android\frameworks\base\media\java\android\media\AudioManager.java
设置相应流的音量,不同的流index的范围不一样。
通过IBinder和ServiceManager获得服务。
android\frameworks\base\services\core\j