Android AudioFlinger

一、AudioFlinger介绍

AudioPolicyService 与 AudioFlinger 是 Android 音频系统的两大基本服务。前者是音频系统策略的制定者,负责音频设备切换的策略抉择、音量调节策略等;后者是音频系统策略的执行者,负责音频流设备的管理及音频流数据的处理传输,所以 AudioFlinger 也被认为是 Android 音频系统的引擎。

AudioFlinger 对外提供的主要的服务接口如下:

  • createTrack:新建输出流管理对象: 找到对应的 PlaybackThread,创建输出流管理对象 Track,然后创建并返回该 Track 的代理对象 TrackHandle

  • createRecord:新建输入流管理对象:找到 RecordThread,创建输入流管理对象 RecordTrack,然后创建并返回该 RecordTrack 的代理对象 RecordHandle

  • openOutput:打开输出流:打开输出流设备,并创建 PlaybackThread 对象

  • openInput:打开输入流:打开输入流设备,并创建 RecordThread 对象

  • closeOutput:关闭输出流:移除并销毁 PlaybackThread 上面挂着的所有的 Track,退出 PlaybackThread,关闭输出流设备

  • closeInput:关闭输入流:退出 RecordThread,关闭输入流设备

  • sampleRate:获取硬件设备的采样率

  • format:获取硬件设备的音频格式

  • frameCount:获取硬件设备的周期帧数

  • latency:获取硬件设备的传输延迟

  • masterVolume:主输出设备的音量

  • masterMute:主输出设备静音

  • setMasterVolume:调节主输出设备的音量

  • setMasterMute:静音主输出设备

  • streamVolume:音频流的音量

  • streamMute:音频流静音

  • setStreamVolume:调节指定类型的音频流的音量,这种调节不影响其他类型的音频流的音量

  • setStreamMute:静音指定类型的音频流

  • setVoiceVolume:调节通话音量

  • setMicMute:静音麦克风输入

  • getMicMute:获取麦克风静音

  • setMode:切换音频模式:音频模式有 4 种,分别是 Normal、Ringtone、Call、Communicatoin

  • setParameters:设置音频参数:往下调用 HAL 层相应接口,常用于切换音频通道

  • getParameters:获取音频参数:往下调用 HAL 层相应接口

  • setAudioPortConfig:

其它接口:

  • setRecordSilenced

  • registerClient

  • getInputBufferSize

  • openDuplicateOutput

  • suspendOutput

  • restoreOutput

  • invalidateStream

  • setVoiceVolume

  • getRenderPosition

  • getInputFramesLost

  • newAudioUniqueId

  • acquireAudioSessionId

  • releaseAudioSessionId

  • queryNumberEffects

  • queryEffect

  • getEffectDescriptor

  • createEffect

  • moveEffects

  • loadHwModule

  • getPrimaryOutputSamplingRate

  • getPrimaryOutputFrameCount

  • setLowRamDevice

  • getAudioPort

  • createAudioPatch

  • releaseAudioPatch

  • listAudioPatches

  • getAudioHwSyncForSession

  • systemReady

  • audioPolicyReady

  • frameCountHAL

  • getMicrophones

  • setMasterBalance

  • getMasterBalance

  • setEffectSuspended

  • setAudioHalPids

  • setVibratorInfos

  • updateSecondaryOutputs

  • getMmapPolicyInfos

  • getAAudioMixerBurstCount

  • getAAudioHardwareBurstMinUsec

  • setDeviceConnectedState

可以归纳出 AudioFlinger 响应的服务请求主要有:

  • 音量调节(Audio Volume)

  • 静音操作(Audio Mute)

  • 音频模式切换(Audio Mode)

  • 音频参数设置(Audio Parameters)

  • 音效模块(Audio PatchPanel )

  • 音频设备管理(Audio Device)

  • 音频流管理(Audio Thread)

  • 音频路径管理(Audio PatchPanel)

  • 音频线程管理(Audio Thread)

二、A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值