我正在尝试生成并播放方波。我正在生成信号,然后使用
track = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, minSize,
AudioTrack.MODE_STREAM);
track.write(signal, 0, signal.length);
然后调用 track.play()。问题是它只播放一次。看起来有一种设置循环点的方法,但我不知道为帧输入什么。
我也试过在一个 while 循环中调用 track.write() 然后调用 track.play(),但是有一个短暂的滞后,而且我认为这不是正确的方法。
实现无缝循环的正确方法是什么?
最佳答案
有一个非常相似的问题:https://stackoverflow.com/questions/4241724/androidaudiotrack-setlooppoint-issue
如果我正确阅读了 Android 文档,您使用的是 16 位样本,因此 signal.length/2 是样本数。我会尝试:
track.setLoopPoints(0, signal.length/2, -1);
关于android - 循环播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797997/