Android Audio:setStreamVolume()音量调节过程

音量调节过程中的重要的几个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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值