【发布时间】:2015-05-15 01:24:11
【问题描述】:
我正在尝试为 Android 创建一个发声节拍器应用程序。现在,我创建了一个 AudioTrack,然后按播放进行初始化。然后我将 PCM 字节写入缓冲区并使用 AudioTrack.writeSound() 写入缓冲区。 首先我写入缓冲区
for(int i=0;i<this.tick;i++) {
soundTickArray[i] = tick[i];
}
for(int i=0;i<silence;i++)
silenceSoundArray[i] = 0;
}
然后,像这样在循环中按顺序转换为 PCM 后,我写入 audioTrack。
do {
audioGenerator.writeSound(soundTickArray);
audioGenerator.writeSound(silenceSoundArray);
} while(running);
在一个while循环中,直到它在另一个线程中终止。
问题是我不断收到此错误。
releaseBuffer() track 0xb491b280 由于先前的欠载而被禁用,正在重新启动
节拍器不会停止。
有没有人对为什么会发生这种情况或如何解决它有任何建议。
或者有任何其他建议可以运行一致的节拍器节拍,不会滞后且精确?我尝试使用 SoundPool,但遇到了延迟。
谢谢!
【问题讨论】:
标签: java android audio soundpool audiotrack