From 6ea67bc02c078902596ff0b830bf2d506eba7d60 Mon Sep 17 00:00:00 2001 From: Awin Huang Date: Fri, 30 Sep 2022 22:03:03 +0800 Subject: [PATCH] vault backup: 2022-09-30 22:03:03 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Affected files: 03. 專注Study/Android/AudioTrack.md --- 03. 專注Study/Android/AudioTrack.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/03. 專注Study/Android/AudioTrack.md b/03. 專注Study/Android/AudioTrack.md index 3a75ae6..075a377 100644 --- a/03. 專注Study/Android/AudioTrack.md +++ b/03. 專注Study/Android/AudioTrack.md @@ -20,3 +20,26 @@ audioTrack = AudioTrack( audioTrack?.play() ``` +其中需要注意的是最後一個參數,AudioTrack 有兩種模式,分別是 AudioTrack.MODE_STREAM 與 AudioTrack.MODE_STATIC。 + +## AudioTrack.MODE_STREAM +這個模式會邊讀邊播,必須不停的使用 `AudioTrack.write()` 來將資料寫入,若是來不及寫入會造成斷音,可以先呼叫 AudioTrack.play(),然後開始填資料。 + +## AudioTrack.MODE_STATIC +這個模式中,audioBufferSize 就是你要播放的聲音長度,一樣要透過 `AudioTrack.write()` 來寫入資料,寫完之後呼叫 AudioTrack.play() 開始播放。 + +## 狀態判斷 +### `getState()` +用 `getState()` 來取得目前的狀態。 +- STATE_INITIALIZED 表示AudioTrack 已經是可以使用了。 +- STATE_UNINITIALIZED 表示AudioTrack 創建時沒有成功地初始化。 +- STATE_NO_STATIC_DATA 表示當前是使用MODE_STATIC ,但是還沒往緩衝區中寫入數據。當接收數據之後會變為STATE_INITIALIZED 狀態。 + +### `getPlayState()` +用 `getPlayState()` 來取得目前的播放狀態。 +- PLAYSTATE_STOPPED 停止 +- PLAYSTATE_PAUSED 暫停 +- PLAYSTATE_PLAYING 正在播放 + +## 暫停 +`pause()` 可以暫停播放,但是暫存區不會被清空 \ No newline at end of file