名词
PCM
脉冲编码调制(Pulse Code Modulation,PCM)
A2DP
A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定。A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度
AudioTrack(Java空间)
AudioTrack在JNI层使用了Native的AudioTrack对象
1.new一个AudioTrack,使用无参的构造函数
2.调用set函数,把Java层的参数传进去,另外还设置了一个audiocallback回调函数
3.调用AudioTrack的start函数
4.调用了AudioTrack的write函数
5.工作完毕后,调用stop
6.最后就是Native对象的delete
flowControlFlag
1.对于音频输出来说,flowControlFlag对应着underrun状态,该状态是指生产者提供的数据的速度跟不上消费者使用数据的速度,消费者指的是音频输出设备,由于音频输出设备采用环形缓冲方式管理,当生产者没有及时提供新数据时,输出设备就会循环使用缓冲中的数据,这样会听到一段重复的声音,该现象称为“machinegun”,处理该情况一般方法是暂停输出,等数据准备好后再恢复输出。
2.对于音频输入,flowControlFlag对应着overrun状态,它的意思和underrun一样,只是生产者变成了音频输入设备,而消费者变成了Audio系统的AudioRecord。
Android按键音
android中,view的按键音类型为系统音频(STREAM_SYSTEM),而音量的大小与媒体音量(STREAM_MUSIC)绑定了起来。
参考:https://blog.csdn.net/love_xsq/article/details/50266819
随笔
Audio系统需要根据流类型找到对应的策略,再根据对应的策略找到合适的输出device,再根据device选择AF中的工作线程,AT根据得到的工作线程索引号,最终将在对应的工作线程中创建一个Track。之后AT的数据将有该线程负责处理。