如何使用AudioTrack

时间:2019-07-01 04:31:39

标签: java android audiotrack

我正在开发音频混合应用程序。目前,我的录音和播放功能非常适合一首歌。但是,我希望能够同时播放多首曲目。

这是我用来播放.pcm文件中的音频的代码

class PlayThread extends Thread {
    public void run() {
        try {
            System.out.println("~~Playing audio");
            byte[] buffer = new byte[playBufSize];
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(pcmFile), playBufSize);

            audioTrack.play();

            int readSize = -1;
            while (isPlaying && (readSize = bis.read(buffer)) != -1) {
                audioTrack.write(buffer, 0, readSize);
            }
            audioTrack.stop();
            MainActivity main = (MainActivity) ctx;
            main.audioStopped();
            bis.close();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

我通过以下功能运行此代码:

   public void startPlaying()
    {
        isPlaying = true;
        new PlayThread().start();
    }

pcmFile是音频文件的完整路径。但是,我可以记录其中的4个(channel0.pcm,channel1.pcm,channel2.pcm和channel3.pcm)。 现在,当我按播放时,它只播放一个。如何调整此代码以完全同时播放多个文件?

奖金,如果您能告诉我如何循环播放此内容,那也会有很大帮助。我想让这些文件连续循环直到线程停止。

0 个答案:

没有答案