这是与在最新 Android 设备上捕获音频内容有关的问题。我正在开发一个 Android 应用程序,该应用程序必须记录未处理的麦克风音频。在试图弄清楚如何实现这一点的过程中,我遇到了 Android 兼容性定义文档 (CDD),从版本 5.0 (API 21) 开始,该文档声明 \xe2\x80\x9cdevice 实现声明了 android.hardware。麦克风必须允许捕获原始音频内容 [...]\xe2\x80\x9d (请参阅音频录制部分下的 5.0 及更高版本的任何 CDD:https: //source.android.com/compatibility/cdd)。
\n\n另一方面,我发现可以在 MediaRecorder API 下选择多个音频源,并且为了录制原始音频,请选择“未处理”。某些设备不支持未处理的输入。首先调用 AudioManager.getProperty(AudioManager.PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED) 来验证它是否可用\xe2\x80\x9d(来源:https ://developer.android.com/guide/topics/media/mediarecorder )。API 24 中添加了 PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED 属性。
\n\nHere\xe2\x80\x99s 我需要帮助:我对以下事实感到困惑:CDD 表明必须允许捕获原始数据,而 MediaRecorder 并不总是允许访问它。也许 \xe2\x80\x9craw\xe2\x80\x9d 与 \xe2\x80\x9cunprocessed\xe2\x80\x9d 不一样?或者这可能意味着原始/未处理的音频数据仅用于系统级功能,第三方开发人员无法使用。
\n\n请注意,当我进行测试以验证未处理的属性是否在 3 种不同的 Android 设备(包括具有 API 26 的 Galaxy S8)上可用时,我从未得到积极的结果。
\n\n话虽这么说,有人可以澄清为什么 CDD 表明原始音频内容的捕获必须可用,而未处理的 AudioMagager API 属性似乎很少可用。我应该以不同的方式访问原始/未处理的音频内容吗?
\n\n提前致谢!
\n