通话过程如何与蓝牙设备配合使用?

Posted

技术标签:

【中文标题】通话过程如何与蓝牙设备配合使用?【英文标题】:How call process works with blue tooth devices? 【发布时间】:2013-02-25 14:16:55 【问题描述】:

我在带有蓝牙耳机的 android 手机上测试了一些东西。我对此几乎没有问题。

设备规格:

Android 2.3 以上 耳机蓝牙配置:HFP,A2DP

我从 android 手机的“接受”按钮接听了一个电话,我能够听到蓝牙耳机的来电。之后,我将 android 设备移出范围并接受了来自 android 的呼叫,当 android 手机进入蓝牙范围时蓝牙耳机自动连接。是通用的,我的意思是所有的蓝牙耳机都支持相同的还是有任何偏差?

我想知道当我们从耳机或 Android 手机接听电话时会发生什么。Android 操作系统是否会创建一个通话会话/音频会话并在按下接受按钮时将其转移到耳机耳机。如果已经接到电话并且当耳机在蓝牙范围内时,Android 手机会将音量路由到耳机。在这两种情况下都会发生同样的事情(只是路由音频)。我想详细了解这两种情况的呼叫处理。有人可以帮我解决这个问题吗?

ios 中的调用流程有何不同?

编辑

当我们接受呼叫时,是否会创建像 AVAudoioSession 这样的呼叫会话?

@jjv360:

“即使连接了蓝牙耳机,应用也可以手动分配路线,在这种情况下,由应用来处理检测到新路线时发生的情况......”

是否可以在 iOS 应用程序中将通话会话路由到耳机(从麦克风到耳机 sco)?请您指点一下。

【问题讨论】:

【参考方案1】:

在 iOS 上,如果您在音频会话处于活动状态时连接蓝牙耳机,当前的音频应用程序会收到通知,并且默认情况下会将会话的路由传输到耳机。即使连接了蓝牙耳机,应用程序也可以手动分配路线,在这种情况下,由应用程序来处理检测到新路线时发生的情况...

此外,AFAIK 设备(在很短的时间内)和耳机都会尝试重新连接,因此主要取决于耳机在超出范围时尝试重新连接。不过,几乎所有耳机都应该这样做。

无论使用哪个按钮接听电话(在设备上还是在耳机上),如果蓝牙耳机已连接,它将被使用,除非应用程序指定它不想使用该路由.

调用过程AFAIK对于Android和iOS是一样的。

使用所使用的协议,A2DP 是听音乐时使用的高质量协议。它支持高质量的音频,但是是单向的,所以只有在蓝牙耳机没有从麦克风录音的情况下才有效。当还需要录制时使用HFP,但质量较差。这就是为什么你会注意到,如果你在 iOS 上用蓝牙耳机听音乐,然后启动录音应用程序,音质会变差,直到你停止录音......

【讨论】:

是否可以在 iOS 应用程序中将通话会话路由到耳机?能否请您指点一下。 如果已连接,“通话”会话将始终默认为耳机,如果您正在谈论自己应用程序的音频会话,您可以使用 Audio Toolbox 框架中的属性和函数...如果您正在谈论控制其他应用程序的音频(这包括来自“电话”应用程序的普通电话),由于应用程序沙箱,您不能这样做......

以上是关于通话过程如何与蓝牙设备配合使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看从蓝牙设备传到计算机的所有原始数据?

如何在 iOS 中找到蓝牙音频设备

如何查看蓝牙耳机的剩余电池电量

车载测试系列:车载蓝牙测试

接受或拒绝来自 iPhone 的蓝牙设备(如智能手表)上的呼叫?

通过 iOS 8 Widget 断开蓝牙设备