audio Framework 简述

本文详细解析了Android音频框架的关键组件,包括AudioManager、AudioRecord和AudioTrack的功能与使用方式,并探讨了它们之间的交互机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是把audio Framework 中关键的文件列了出来,按照层次结构的关系放在对应的位置,对应普通的apk(第三方apk)而言,基本上只会接触到AudioManager.java ,AudioRecord.java,AudioTrack.java这个三支文件里面的类和接口。


1、 AudioManager

用来对音量大小,声音模式等管理,值得注意的是调用它的接口并没有直接call到AudioFlinger(或者AudioPolicyService)里面去,而是先跑到system_server里面的AudioService,提供的接口我就不介绍了,网上相关的资料和文档一大推。

 

2、AudioRecord

AudioRecord类管理着音频来源,用来获取底层录入的音频数据。在java层似乎只能通过自己创建一个线程不停地去读数据,如果看过底层录制相关代码的应该知道,下面创建AudioRecord(C++层)会传入一个回调函数,通过回调函数来得到audio数据。其实这两个都是在拉数据,只不过是在实例化AudioRecord,内部创建了一个线程,用于不停地读数据,读到数据后,通过回调函数进程callbak而已。

 

3、AudioTrack

AudioTrack是管理和播放单一音频资源的类,它用于PCM音频流的播放。需要重点关注和了解的应该它的两种模式,static和stream模式。

static:简单理解为需要先把所有音频数据写到buffer里,然后在播放,适用于数据量小,要求播放延时小的场景。

stream:简单理解成先启动播放,然后应用送一点数据就播放一点,像播放比较大的音频文件就需要这种模式。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值