android - 在 Android 中,有没有办法使用 "MODE_IN_COMMUNICATION"将音频路由到 A2DP?

标签 android audio routing bluetooth a2dp

如果我将 AudioManager 模式设置为 MODE_IN_COMMUNICATION,并将媒体播放器流设置为 STREAM_VOICE_CALL,我可以将音频路由到免提电话或内部听筒扬声器。如果它被路由到内部扬声器,并且插入了有线耳机,它会自动路由到它。但是,我想不出一种将音频路由到 A2DP 耳机的方法(无需将音频模式更改为 MODE_NORMAL,或将流更改为 STREAM_MUSIC)。我的问题是使用 MODE_NORMAL 和 STREAM_VOICE_CALL 在某些设备上会导致问题,如果背景中已经有音乐在播放,那么使用 STREAM_MUSIC 会出现问题,然后我的应用程序会与该背景音乐“混合”。

所以,我希望有一种方法可以使用 MODE_IN_COMMUNICATION 和 STREAM_VOICE_CALL 组合将音频强制发送到 A2DP 耳机。那可能吗?

最佳答案

也许它适用于某些设备,但如果您关心大多数设备的兼容性,那么答案是“否”。

当手机状态为MODE_IN_CALLMODE_IN_COMMUNICATION所有流通常都遵循 PHONE路由策略。这意味着将不允许路由到 A2DP,因为:

1) A2DP 无论如何都不支持双向语音。

2) 如果您的 BT 配件支持免提配置,它将使用 SCO 链接作为语音音频,并且用于 A2DP 的 ACL channel 应关闭以避免两者之间的干扰。

关于android - 在 Android 中,有没有办法使用 "MODE_IN_COMMUNICATION"将音频路由到 A2DP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16432768/

相关文章:

android - 在 Activity 之间改变焦点

android - 停止 Android Activity ,使用 noHistory ="true"

java音频播放不会停止

ruby-on-rails - RoR - 第一个 App 项目,路由到主视图而不是/blog_entries

java - 将 ArrayList 从 MainActivity 类传递到 Android 中的 CustomView 类

android - 在哪里可以找到用于利用加速度计信号的资源和代码示例?

javascript - 音频的Bootstrap Toggle属性

android - 如何检测音频文件何时播放完毕?

c# - 访问 MVC 6 Web Api 中的查询字符串?

routing - Phalcon:如何使用路由获取url中的参数