vault backup: 2022-09-30 22:03:03
Affected files: 03. 專注Study/Android/AudioTrack.md
This commit is contained in:
@@ -20,3 +20,26 @@ audioTrack = AudioTrack(
|
|||||||
audioTrack?.play()
|
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()` 可以暫停播放,但是暫存區不會被清空
|
||||||
Reference in New Issue
Block a user