android音频浅析

本文介绍了Android音频子系统的架构,重点讲述了AudioTrack类如何与AudioFlinger交互,并通过Binder机制实现跨进程通信。同时,文章还阐述了AudioManager提供的音频控制接口及AudioSystem的基本操作。

http://blog.youkuaiyun.com/reiliu/article/details/8774749

Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放。AudioTrack和AudioFlinger的通信机制通常,AudioTrack和AudioFlinger并不在同一个进程中,它们通过android中的binder机制建立联系。

Android音频处理的基本接口

在Android开发中,根据不同的场景,出于冲突处理策略的考虑,开发者需要利用不同的接口来进行音频资源的播放。

AudioManager为上层应用提供了声音设置管理接口.

AudioService为所有的音频相关的设置提供服务。他定义了了一个AudioSystemThread 的类,用来监控音频控制相关的信号,当有请求时,它会通过调用AudioSystem 的接口实现音频的控制,这里的消息处理是异步的。此外在AudioService还抽象出了一套发送音频控制信号的接口为AudioManager提供支持。AudioManager通过音频服务,为上层提供了音量和铃声模式控制的接口,铃声模式控制包括扬声器、耳机、蓝牙等是否打开,麦克风是否静音等。在开发多媒体应用时会经常用到AudioManager,关于Android AudioManager音量控制流程。

AudioSystem提供了音频系统的基本类型定义,以及基本操作的接口。

对于音调,可以通过ToneGenerator来播放;ToneGenerator提供了对DTMF音(ITU-T Q.23),以及呼叫监督音(3GPP TS 22.001)、专用音(3GPP TS 31.111)中规定的音频的支持,根据呼叫状态和漫游状态,该文件产生的音频路径为下行音频或者传输给扬声器或耳机。

转载于:https://www.cnblogs.com/pengxinglove/p/5512723.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值