Android Audio开发——AudioTrack构造(六)

        MediaPlayer 和 AudioTrack 都是用来播放声音的,两者都提供了 java API 供应用开发者使用。其中最大的区别是 MediaPlayer 可以播放多种格式的声音文件,例如MP3、AAC、WAV、OGG、MIDI 等。而 AudioTrack 只能播放已经解码的 PCM 流。

        MediaPlayer 在 framework 层会创建 AudioTrack 和 对应的音频解码器,把解码后的 PCM 数流传递给 AudioTrack,AudioTrack 再传递给 AudioFlinger 进行混音,然后才传递给硬件播放,所以是 MediaPlayer 包含了 AudioTrack。

一、播放音频音乐

AudioTrack audio = new AudioTrack(
     AudioManager.STREAM_MUSIC, // 音频流的类型
     32000, // 设置音频数据的采样率 32k
     AudioFormat.CHANNEL_OUT_STEREO, // 设置输出声道为双声道立体声
     AudioFormat.ENCODING_PCM_16BIT, // 设置音频数据块是8位 or 16位,
     AudioTrack.MODE_STREAM // 设置模式类型
     );
audio.play(); // 启动音频设备,下面就可以真正开始音频数据的播放了
// 打开mp3文件,读取数据,解码等操作省略 ...
byte[] buffer = new buffer[4096];
int count;
while(true)
{
    // 最关键的是将解码后的数据,从缓冲区写入到AudioTrack对象中
    audio.write(buffer, 0, 4096);
    if(文件结束) break;
}
//关闭并释放资源
audio.stop();
audio.rele

猜你喜欢

转载自blog.csdn.net/c19344881x/article/details/130643009
今日推荐