我使用以下定義創建AudioTrack。audioTrack.stop不會停止播放音頻
audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffer.length * 2,
AudioTrack.MODE_STATIC);
audioTrack.write(buffer, 0, buffer.length);
audioTrack.setPositionNotificationPeriod(500);
audioTrack.setNotificationMarkerPosition(buffer.length);
progressListener = new PlaybackProgress(buffer.length);
audioTrack.setPlaybackPositionUpdateListener(progressListener);
當audioTrack結束時,會調用以下內容來停止音頻並重置頭部位置。
private void resetAudioPlayback() {
ViewGroup.LayoutParams params = playbackView.getLayoutParams();
params.width = 0;
playbackView.setLayoutParams(params);
audioTrack.stop();
audioTrack.reloadStaticData();
playImage.animate().alpha(100).setDuration(500).start();
}
上面的代碼在Android 5.1中工作得很好。但是我遇到了4.4.4的問題。 audioTrack.stop()被調用,但音頻不會停止,因爲reloadStaticData將音頻倒回到起始位置,它將重放音頻。但使用5.1時,它會正確停止,並將緩衝區重置回播放開始,並且按下播放按鈕時,從開始播放。
有人可以幫我我怎麼可以這個問題與Android 4.4.4?
實際上,我已經嘗試過了,audioTrack.pause和flush,事情是我們調用reloadStaticData來回放曲目併爲下一次播放做好準備。在這裏,如果我調用暫停和刷新,reloadStaticData不倒帶音頻。 – User