安卓音量调节

本文深入探讨了Android系统中音量控制的流程,包括AudioPolicy的调控、主动和被动因素如何影响音量以及按键响应的内部机制。从setStreamVolumeIndex和setStreamMute的主动操作,到startOutput、stopOutput等被动场景的变化,再到hal层的内核交互,详细阐述了音频流音量调节的完整路径。
摘要由CSDN通过智能技术生成

音量调节

1.由谁控制----AudioPolicy
1.1调节音量的场景
主动因素
主动调节音量setStreamVolumeIndex
设置静音setStreamMute
被动因素(输出设备的改变)
startOutput
stopOutput
setPhoneState
setDeviceConnectionState
setForceUse
2.按键后发生了什么–
按键音量流程图
checkAndSetVolume又两个比较重要的函数,setvolume经过一系列会调用到
audioHwDevice->hwDevice()->setAudioPortConfig(config),最终调用到hal层,写入内核。setCurVolume经过一系列会调用到AudioTrack::setVolume,然后调到setVolumeLR,mCblk可能是与audioflinger通信的环形buffer AudioFlinger::PlaybackThread::threadLoop会不断调用AudioFlinger::MixerThread::prepareTracks_l(frameworks/av/services/audioflinger/Threads.cpp),而prepareTracks_l中会调用getVolumeLR
volume=mastervolumestreamvolumetrackvolume,用音频数据乘以volume然后threadloop_write写给hal层

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值