下载此文档

Android-audio系统第一季.pdf


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
Audio 系统研究第一季
先看看 Audio 里边有主要有三个:
AudioManager:这个主要是用来管理 Audio 系统的
AudioTrack:这个主要是用来播放声音的
AudioRecord:这个主要是用来录音的
其中 AudioManager 的理解需要考虑整个系统上声音的策略问题,例如来电话铃声,短信
铃声等,主要是策略上的问题。
AudioPolicyManager
AudioPolicyService 的很大一部分管理工作都是在 AudioPolicyManager 中完成的。包
括音频策略(strategy)管理,音量管理,输入输出设备管理。
1、音频策略管理
我想首先要搞清楚 stream_type,device,strategy 三者之间的关系:
• AudioSystem::stream_type 音频流的类型,一共有 10 种类型
• AudioSystem::audio_devices 音频输入输出设备,每一个 bit 代表一种设备,见
前面的说明
• AudioPolicyManager::routing_strategy 音频路由策略,可以有 4 种策略
getStrategy(stream_type)根据 stream type,返回对应的 routing strategy 值,
getDeviceForStrategy()则是根据 routing strategy,返回可用的 device。Android 把
10 种 stream type 归纳为 4 种路由策略,然后根据路由策略决定具体的输出设备。
释义:
DTMF: dual-tone multifrequency 双音多频,由高频群和低频群组成,高低频群各包
含 4 个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。
DTMF 信号有 16 个编码。利用 DTMF 信令可选择呼叫相应的对讲机
TTS:Text To Speech 的缩写,即“ 从文本到语音 ” 、语音合成技术(Text To Speech)
……
2、声音管理
/** ***@hide Maximum volume index values for audio streams */
private int[] MAX_STREAM_VOLUME = new int[] {
5, // STREAM_VOICE_CALL
7, // STREAM_SYSTEM
7, // STREAM_RING
15, // STREAM_MUSIC
7, // STREAM_ALARM
7, // STREAM_NOTIFICATION
15, // STREAM_BLUETOOTH_SCO
15, // STREAM_FM
15, // STREAM_DTMF
15, // STREAM_TTS
7, // STREAM_SYSTEM_ENFORCED
};
由此可见,电话铃声可以有 7 个级别的音量,而音乐则可以有 15 个音量级别,java 的代码
通过 jni,最后调用 AudioPolicyManager 的 initStreamVolume(),把这个数组的内容
传入 AudioPolicyManager 中,这样 AudioPolicyManager 也就记 住了每一个音频流的
音量级别。应用程序可以调用 setStreamVolumeIndex 设置各个音频流的音量级 别,
setStreamVolumeIndex 会把这个整数的音量级别转化为适合人耳的对数级别,然后通过
AudioPolicyService 的 AudioCommandThread,最终会将设置应用到

Android-audio系统第一季 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人陈潇睡不醒
  • 文件大小115 KB
  • 时间2021-03-26