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

标签 android audio audiotrack

这是一个用于播放某些音轨的函数。

调用该函数的主要代码:

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/

相关文章:

java - 在我的项目中添加幻灯片菜单和 sherlock 操作栏

android - 如何在Ubuntu 12.04上编译使用adb?

android - 如何在 Android 上录制超低尺寸音频

excel-2007 - 在工作簿之间切换时,ms excel 中出现烦人的哔哔声

android - XAPKFile 无法解析为类型

android - 错误 :(2) Error parsing XML: XML or text declaration not at start of entity android studio

c# - 以编程方式将音频转换为文本

java - 使用 AACDecoder 开始新流

android - 有没有办法在 Android 中收听音频播放的节奏/bpm?

java - 异步任务 : Implementing executeOnExecutor() thread class in AudioTrack