vault backup: 2022-09-30 22:03:03

Affected files:
03. 專注Study/Android/AudioTrack.md
This commit is contained in:
2022-09-30 22:03:03 +08:00
parent 5e4265b783
commit 6ea67bc02c

View File

@@ -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()` 可以暫停播放,但是暫存區不會被清空