1

我已经从这里下载了基于 Oboe 库的 LiveEffect 示例代码:https ://github.com/google/oboe/tree/master/samples/LiveEffect

我已经能够在带有 Android 8.0 的三星 Galaxy S7 上构建和运行它

为 NDK 选择 AAudio 库时,该程序按预期工作,但在选择 OpenSL ES 库时,音频始终采用默认路由。我想将手机的内置麦克风作为音频输入,同时将带有麦克风的外置耳机的扬声器作为输出,但是如果连接了耳机麦克风,即使我选择手机内置麦克风,音频输入也始终默认为耳机麦克风在应用程序的用户界面中。在仅支持 OpenSL ES 的搭载 Android 7 的三星 Galaxy S6 中也可以看到同样的行为。

我也没有找到如何在 Google 的基于 NDK 的音频回声示例程序中更改音频输入的方法,该示例程序也使用 OpenSL Es。使用基于 OpenSL ES 的 NDK 音频时如何指定音频输入源?这是一个错误吗?

4

1 回答 1

1

LiveEffect 示例用于setDeviceId指定要使用的音频设备。这是文档setDeviceId

请注意,在使用 OpenSL ES 时,这将被忽略,并且创建的流将具有 deviceId kUnspecified。

不幸的是,OpenSL ES(非常旧)不支持指定音频设备。这意味着将始终使用默认音频设备。

您可能能够通过使用 Java API 来实现您正在寻找的行为,特别是setPreferredDevice

于 2020-02-24T23:21:07.820 回答