這篇文章主要講的是AudioTrack的用法。
AudioTrack 一般用來實作播放原始音頻資料(PCM)
覺得這個類沒有什麼好說的,咱就直接上代碼吧。
步驟一:
配置需要的參數,初始化AudioTrack對象。

我們需要了解一下這些參數
streamType 這個參數表示使用哪種音頻管理政策
STREAM_VOCIE_CALL 電話聲音
STREAM_SYSTEM 系統聲音
STREAM_RING 鈴聲
STREAM_ALARM 警告聲
STREAM_NOTIFICATION 通知聲
sampleRateInHz, 采樣率(我在使用AudioRecord實作聲音采集一文中說明)
channelConfig, 聲道數(我在使用AudioRecord實作聲音采集一文中說明)
bufferSizeInBytes, 緩存大小(我在使用AudioRecord實作聲音采集一文中說明)
mode 播放模式。一種是static方式,另一種是streaming方式。
static方式:需要一次性将所有的資料都寫入播放緩沖區,适合播放鈴聲,較短的音頻片段。
streaming方式:按照一定的時間間隔不間斷的寫入音頻資料。(常用這種方式)
private AudioTrack audioTrack;
private int streamType = AudioManager.STREAM_MUSIC;
private int sampleRateInHz = 44100;
private int channelConfig = AudioFormat.CHANNEL_OUT_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
private int bufferSizeInBytes;
private int mode = AudioTrack.MODE_STREAM;
bufferSizeInBytes = AudioTrack.getMinBufferSize(sampleRateInHz,channelConfig,audioFormat);
步驟二:
還是播放
步驟三:
開啟一個子線程,需要不間斷的向AudioTrack緩沖區 “寫入”資料
步驟四:
釋放資源
int len = -1;
try {
while((len = dataInputStream.read(bys)) != -1 ){
audioTrack.write(bys,0,len);
}
audioTrack.stop();
audioTrack.release();
} catch (IOException e) {
e.printStackTrace();
}
AudioTrack讀取PCM檔案播放聲音。
請多多指教
接下來一篇文章我會将帶來 将PCM格式存儲成WAV格式檔案