我使用以下定义创建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