AudioTrack播放流程

本文介绍了Android中AudioTrack的使用,与MediaPlayer的区别,以及详细阐述了AudioTrack的播放流程,包括构造对象、音频流类型选择、Native层的处理、AudioFlinger的工作以及混音过程。
摘要由CSDN通过智能技术生成

AudioTrack介绍

音频播放声音分为MediaPlayer和AudioTrack两种方案的。MediaPlayer可以播放多种格式的声音文件,例如MP3,WAV,OGG,AAC,MIDI等。然而AudioTrack只能播放PCM数据流。当然两者之间还是有紧密的联系,MediaPlayer在播放音频时,在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack,最后由AudioFlinger进行混音,传递音频给硬件播放出来。利用AudioTrack播放只是跳过Mediaplayer的解码部分而已。

下面是应用调用AudioTrack播放的例子

AudioTrack audio = new AudioTrack(AudioManager.STREAM_MUSIC, // 指定流的类型

     32000, // 设置音频数据的采样率 32k,如果是44.1k就是44100

     AudioFormat.CHANNEL_OUT_STEREO, // 设置输出声道为双声道立体声,而CHANNEL_OUT_MONO类型是单声道

     AudioFormat.ENCODING_PCM_16BIT, // 设置音频数据块是8位还是16位,这里设置为16位。

     AudioTrack.MODE_STREAM // 设置模式类型);

 byte[] buffer = new buffer[4096];

 audio.write(buffer, 0, 4096);

 audio.play(); // 启动音频设备,下面就可以真正开始音频数据的播放了

 //关闭并释放资源

 audio.stop();

 audio.release();

音频流的类型

在AudioTrack构造函数中,会接触到AudioManager.STREAM_MUSIC这个参数。它的含义与Android系统对音频流的管理和分类有关。Android将系统的声音分为好几种流类型,下面是几个常见的:

STREAM_MUSIC:用于音乐播放的音频流。

STREAM_SYSTEM:用于系统声音的音频流。

STREAM_RING:用于电话铃声的音频流。

STREAM_VOICE_CALL:用于电话通话的音频流。

STREAM_ALARM:用于警报的音频流。

STREAM_NOTIFICATION:用于通知的音频流。

STREAM_BLUETOOTH_SCO:用于连接到蓝牙电话时的手机音频流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值