一、Android Audio
Android 音频系统是Android操作系统的一个组成部分,主要用于提供音频功能支持。其包含多个模块,如音频输入和输出模块、音频编码解码模块、音频效果处理模块、音频格式转换模块等。此外,Android Audio子系统还支持多媒体会话管理、音量控制和音频路由等功能,具体包括如下几个部分:
1、AudioTrack和AudioRecord:用于播放和录制音频流的低级别服务,AudioTrack对应于音频输出,AudioRecord对应于音频输入。
2、SoundPool:用于轻量级的音频播放,适用于播放短音效,如点击声、提醒声等。
3、ToneGenerator:用于生成音频信号,适用于虚拟按键音、铃声等。
4、AudioManager和CarAudioManager:管理音频焦点、音量和铃声模式等音频系统的全局设定,为AudioService和CarAudioService的接口。
5、AudioService和CarAudioService:管理音频焦点、音量和铃声模式等音频系统的全局设定。
6、AudioSystem:负责音频管理的底层C/++接口,它提供了音频模块的级别功能。
7、AudioFlinger:全局音频管理器,负责管理和协调所有音频设备和音频流的请求。
8、AudioEffect:提供各种数字信号处理(DSP)效果,例如均衡器、重低音增强、音场模拟、环绕声等。
9、AudioPolicy、AudioPolicyManager、AudioPolicyService:为音频系统提供策略管理,可动态管理音频路由和音频格式转换等。
如下为Android音频子系统框图:
这是另外一张框图:
二、Android音频子系统相关概念
下面介绍一下Android音频子系统相关概念,便于理解Androdi音频子系统:
音频会话(AudioSession):音频会话是Android中用于表示应用程序中特定音频流的抽象概念。每一个音频会话都包含了一组音频属性,用于描述当前正在播放或录制的音频流的内容和特性,例如采样率、通道数、编码格式、媒体格式、媒体类型等等。开发人员可以利用音频会话来控制应用程序内部的音频流播放或录制,并可通过AudioManager获取当前活动的音频会话列表。
音频焦点(AudioFocus):音频焦点是指Android中通过音频系统来管理各种应用程序之间的音频播放。在Android中,默认情况下同一时间只有一种应用程序或服务能够获得系统的音频焦点,而其他的应用程序则被迫停止或暂停音频播放。通过音频焦点机制,应用程序可以协调不同的音频播放请求,以避免音频播放产生的冲突和干扰。
音频路由(AudioRouting):音频路由是指Android系统中对于音频播放设备进行管理和控制的机制。通过音频路由,应用程序可以确定当前尝试参与播放的音频流需要路由到哪种音频输出设备上进行播放,例如扬声器、耳机、蓝牙或USB设备等。音频路由可以通过AudioManager的相关接口进行管理和设置。
音频效果(AudioEffect):音频效果是指Android系统中用于处理和增强音频信号的技术和算法。通过应用不同的音频效果,可以对音频流进行调整、过滤、增强和变换等操作,以达到改善音质、增强环境音频或实现音频特效等目的。Audio系统提供了一系列的音频效果库,开发人员可以在应用程序中调用相应的接口进行使用。