Android 如何找到音轨已完成/停止播放?
我需要通过AudioTrack播放pcm文件,我想知道它是否已播放完毕 我的代码:Android 如何找到音轨已完成/停止播放?,android,playback,audiotrack,Android,Playback,Audiotrack,我需要通过AudioTrack播放pcm文件,我想知道它是否已播放完毕 我的代码: scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { public void run() { if (audioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) { System.out.println("st
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { public
void run() {
if (audioTrack.getPlayState() == AudioTrack.PLAYSTATE_STOPPED) {
System.out.println("stop"); } // doSomethingUseful();
}
}, 0, 1, TimeUnit.SECONDS);
然后
但以上这些都不起作用
我怎么知道它已经播放完毕呢?请参阅本文
此解决方案使用“OnPlaybackPositionUpdateListener”,通过标记音频长度来通知播放何时达到特定标记
audioTrack
.setPlaybackPositionUpdateListener(new OnPlaybackPositionUpdateListener() {
@Override
public void onPeriodicNotification(AudioTrack track) {
// TODO Auto-generated method stub
}
@Override
public void onMarkerReached(AudioTrack track) {
// TODO Auto-generated method stub
stop();
// messageHandler.sendMessage(messageHandler.obtainMessage(PLAYBACK_END_REACHED));
}
});
audioTrack
.setPlaybackPositionUpdateListener(new OnPlaybackPositionUpdateListener() {
@Override
public void onPeriodicNotification(AudioTrack track) {
// TODO Auto-generated method stub
}
@Override
public void onMarkerReached(AudioTrack track) {
// TODO Auto-generated method stub
stop();
// messageHandler.sendMessage(messageHandler.obtainMessage(PLAYBACK_END_REACHED));
}
});