gpt4 book ai didi

android - 在 Android 之前播放的音频停止后播放音轨

转载 作者:行者123 更新时间:2023-11-29 00:11:09 25 4
gpt4 key购买 nike

这是一个播放音轨的函数。

调用该函数的主要代码:

play(a);
play(b);

播放函数是:

public void play(byte[] audioData) {
try {
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
getSampleRate(),
getChannelCount(),
getAudioFormat(),
audioData.length,
AudioTrack.MODE_STATIC);


audioTrack.play();
audioTrack.write(audioData, 0, audioData.length);


} catch (Throwable t) {
Log.e("AudioTrack", "Playback Failed");
}
}

但是这个应用正在同时播放两个音频数据

|----a----|
|--b--|

我想在 a[] 之后播放 b[],像这样:

|----a----||--b--|

我该如何解决这个问题?

最佳答案

需要检测音频A的音轨播放结束,为此需要先获取音频A的音频长度,设置音轨通知标记如下

audioTrack.setNotificationMarkerPosition(audioLength);

然后实现播放位置更新监听器,当到达标记时就可以开始播放音频B了,如下所示

audioTrack.setPlaybackPositionUpdateListener(new OnPlaybackPositionUpdateListener() {
@Override
public void onPeriodicNotification(AudioTrack track) {
// nothing to do
}
@Override
public void onMarkerReached(AudioTrack track) {
// play the audio B here
}
});

关于android - 在 Android 之前播放的音频停止后播放音轨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com