我创建了 Audio Track 和 Audio Recorder 对象,并尝试将麦克风的声音传回扬声器。
为此,我创建了一个任务,该任务从音频记录任务中“读取”音频数据并将其“写回”音频轨道。它似乎工作正常。然而,尝试使用此应用程序进行一些数据操作后,我了解到复制音轨数据并写入的任务实际上什么都不做 - 我删除了它并只保留了两行:
audioRecord.startRecording();
audioTrack.play();
没有读取或写入 - 应用程序继续工作 - 即麦克风数据回传到扬声器!实际上,我尝试执行的所有读写操作似乎都被忽略了!
其他一些意外行为:
我试图通过调用 AudioTrack.stop()
或 AudioTrack.pause()
来停止此过程 - 没有任何反应,停止音频的唯一方法是调用AudioRecord.stop()
,但是在停止 AudioRecord
后,我找不到重新启动它的方法。
有没有其他人也遇到过这种情况?有没有人有办法解决吗?
谁能解释 Android AudioTrack
和 AudioRecord
的这种奇怪行为?
最佳答案
当你想停止 audioTrack 时,这 3 行应该对你有用
audioTrack.flush();
audioTrack.stop();
audioTrack.release();
关于Android AudioTrack 和 AudioRecord 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498647/