Android-使用AndroidTrack播放PCM音频 发表于 2016-03-06 | 分类于 Android | | Android中,利用AndroidTrack可以直接播放PCM音频。 代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061package com.baidu.carlife;import android.media.AudioFormat;import android.media.AudioManager;import android.media.AudioTrack;public class MyAudioTrack { int mFrequency;// 采样率 int mChannel;// 声道 int mSampBit;// 采样精度 AudioTrack mAudioTrack; public MyAudioTrack(int frequency, int channel, int sampbit){ mFrequency = frequency; mChannel = channel; mSampBit = sampbit; } public void init(){ if (mAudioTrack != null){ release(); } if (mSampBit == 8) mSampBit = AudioFormat.ENCODING_PCM_8BIT; else mSampBit = AudioFormat.ENCODING_PCM_16BIT; if (mChannel == 1) mChannel = AudioFormat.CHANNEL_IN_MONO; else mChannel = AudioFormat.CHANNEL_IN_STEREO; int minBufSize = AudioTrack.getMinBufferSize(mFrequency, mChannel, mSampBit); mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, mFrequency, mChannel, mSampBit, minBufSize, AudioTrack.MODE_STREAM); mAudioTrack.play(); } public void release(){ if (mAudioTrack != null){ mAudioTrack.stop(); mAudioTrack.release(); } } public void playAudioTrack(byte []data, int offset, int length){ if (data == null || data.length == 0){return ;} try { mAudioTrack.write(data, offset, length); } catch (Exception e) { e.printStackTrace(); } } public int getPrimePlaySize(){ int minBufSize = AudioTrack.getMinBufferSize(mFrequency, mChannel, mSampBit); return minBufSize * 2; } } 调用的时候,只需要: 1234MyAudioTrack audioTrack = new MyAudioTrack(rate, channel, bit);audioTrack.init();byte[] resultData = new byte[length];audioTrack.playAudioTrack(resultData, 0, resultData.length); 欢迎您扫一扫上面的微信公众号,订阅我的博客!