前段时间我写了一个iPhone程序,以编程方式创建声音。它使用AudioQueue生成声音。使用AudioQueue,我可以在系统需要声音时注册回调,并通过使用原始音频数据填充缓冲区进行响应。缓冲区很小,因此声音可以以合理的低延迟响应用户输入。
我想在Android上做类似的应用,但我不确定如何。 MediaPlayer和SoundPool类似乎是用于从文件播放封装媒体,这不是我需要的。 JetPlayer似乎是某种MIDI播放引擎。
Android Java API中是否有等效的AudioQueue?我是否必须使用本机代码来实现我想要的目标?
感谢。
答案 0 :(得分:2)
使用AudioQueue,我可以在系统需要声音时注册回调,并通过填充原始音频数据的缓冲区进行响应。
Android中与此最接近的类比是AudioTrack
。而不是你正在使用的回调(拉)机制,AudioTrack
更像是推模型,你可以使用阻塞调用继续写入轨道(可能是在后台线程中)。