我正在构建一个可以产生声音的应用程序(现在它主要是实验性的)并在 Android 手机上播放它。
现在我正在尝试播放简单的正弦波声音(440 Hz),并首先尝试使用 Audiotrack 但遇到一些缓冲区欠载。所以我决定看看 OpenSL。
现在我已经阅读了很多关于此的教程和博客文章,最后我自己实现了,使用带有 Android 简单缓冲区队列的 OpenSL 引擎。
现在在缓冲区回调中,我生成了一个新的缓冲区数据并将其添加到队列中,但是延迟比音轨差得多(我可以听到每个缓冲区之间的间隙)。
我的问题是,在 OpenSL 中生成声音的最佳实践/架构是什么?我应该在另一个线程中填充缓冲区(然后需要一些与缓冲区回调同步的过程)吗?
我还没有找到关于生成声音的 OpenSL ES 教程(大多数是关于播放音频文件或将音频输入重定向到音频输出)。