AudioTrack:如何检测声音结束?

Sev*_*yev 2 audio android audiotrack

我正在AudioTrackAndroid上播放PCM WAV声音文件(另见此处).流模式,工作线程.我想知道如何检测声音的结束,以便我可以释放并释放声音AudioTrack.write()看起来,这个调用是阻塞的 - 但它会阻塞,直到所提供数据的回放完成为止?不太确定.

是我,还是这个班级的文件严重不足?如果你碰巧有一个很好的非官方指南的链接AudioTrack,我愿意看到一个.

Min*_*ine 11

根据我的经验,AudioTrack.write()调用会阻塞,直到数据写入HW的音频缓冲区.

所以write()完成后,保证音频播放.基本上它运作良好.

要更精确地检测音频结束,请使用AudioTrack.setNotificationMarkerPosition()AudioTrack.setPlaybackPositionUpdateListener().注意setNotificationMarkerPosition()计算音频样本(而不是字节),因此如果您的音频是16位样本,则位置将为dataSize/2.

我的项目中有一个例子:https: //github.com/mine260309/android-sexypsf-player/blob/psf2/src/com/mine/psf/sexypsf/MineSexyPsfPlayer.java