Android AudioTrack 和 AudioRecord 奇怪的行为

标签 android audiorecord audiotrack android-audiorecord

我创建了 Audio Track 和 Audio Recorder 对象,并尝试将麦克风的声音传回扬声器。

为此,我创建了一个任务,该任务从音频记录任务中“读取”音频数据并将其“写回”音频轨道。它似乎工作正常。然而,尝试使用此应用程序进行一些数据操作后,我了解到复制音轨数据并写入的任务实际上什么都不做 - 我删除了它并只保留了两行:

    audioRecord.startRecording();
    audioTrack.play();

没有读取或写入 - 应用程序继续工作 - 即麦克风数据回传到扬声器!实际上,我尝试执行的所有读写操作似乎都被忽略了!

其他一些意外行为:

我试图通过调用 AudioTrack.stop()AudioTrack.pause() 来停止此过程 - 没有任何反应,停止音频的唯一方法是调用AudioRecord.stop(),但是在停止 AudioRecord 后,我找不到重新启动它的方法。

有没有其他人也遇到过这种情况?有没有人有办法解决吗? 谁能解释 Android AudioTrackAudioRecord 的这种奇怪行为?

最佳答案

当你想停止 audioTrack 时,这 3 行应该对你有用

audioTrack.flush();
audioTrack.stop();
audioTrack.release();

关于Android AudioTrack 和 AudioRecord 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498647/

相关文章:

Android AudioTrack.write() 在播放整个缓冲区后返回

几次生成音频信号后,Android 应用程序崩溃

java - Android studio - 如何在应用程序主题中使用三星的 TouchWiz 皮肤?

android - openCV4Android features2d 错误

android - 将 AudioTrack 与 JLayer 解码器一起使用

Android AudioRecord 初始化失败

android - 字节序在不同设备上的行为是否不同

android - 使用耗时类型设置警报会在内核中打印来自 dmesg 的不准确延迟

android - Realm:根据列表属性包含特定元素进行查询

java - 为什么Android AudioRecord 初始化失败?