1

我知道这是一个非常具体的问题,但我希望其他人有一些见识。

我正在使用 Cerence 的第三方 TTS(文本到语音)和 ASR(自动语音识别)库。我注意到在 Android 12 和一些 Android 11 设备上,当我一起使用它们时会关闭音频输出。我仍然可以使用 ASR 进行输入,但不会播放音频。

我在日志中看不到太多关于此的内容,但发生这种情况时,我需要断开 BT 耳机并重新连接。

在最低限度的测试中,启用蓝牙 SCO 后不久,音频在 Android 12 上丢失。

AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
// Need to set mode so we continue to get the Audio in the BT headset.
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
am.startBluetoothSco();

Android 11 上也发生了类似的事情,但虽然我可以让它可靠地失败,但我不知道实现它的精确方法。

我想知道是否有人对如何调试音频问题有任何见解。我可以提取或查找某些日志吗?有什么办法可以解决音频问题吗?发生这种情况时,我无法以任何方式播放音频,例如 YouTube 耳机中不再有音频。因此,音频要么被重定向到其他地方,要么已经崩溃。

我还想知道是否有另一种方法可以在蓝牙 SCO 之外控制麦克风,或者是否有一个 SCO 设置我应该使用它的行为不同。

更新:

在更多测试中,我意识到 AudioManager 模式正在被从 MODE_IN_COMMUNICATION 更改为 NORMAL 的东西。我还没有弄清楚为什么,但如果我继续强制模式为 MODE_IN_COMMUNICATION,我的音频会继续播放。

4

0 回答 0