连接到蓝牙耳机在Android

问题描述:

我有以下问题: 当我的耳机打开之前,我的手机蓝牙打开,它不会连接到我的手机。只有在电话蓝牙开启且我的耳机再次打开时,它才会连接到我的手机。我发现当蓝牙打开时(第1种情况),我仍然可以连接到耳机,进入Android手机蓝牙菜单,在其中列出已配对的设备并选择我的耳机(尽管我的耳机已列为'已连接') 。这将连接我的耳机和手机。连接到蓝牙耳机在Android

我现在想要做的是执行第二种方式连接到我的耳机,当我的手机蓝牙在第二个时候,编程方式。我想使用android版本2.0(API Level 5),所以我试过BluetoothDevice.createRfcommSocketToServiceRecord,并在我的套接字上调用了connect()。但我总是得到一个异常“拒绝连接”或“服务发现失败”。我使用了许多UUID,我认为这可能是正确的,并且与耳机有关。

您无法调用RFCOMM api连接到耳机。它旨在连接到SPP配置文件,耳机将使用HS/HFP配置文件。在RFCOMM apis上使用不同的UUID也不能解决问题。

基本上这个耳机的水平轮廓连接是通过Android的内部完成(有没有应用级访问来建立连接)的应用程序只能拿到conenctions的状态 - 看BluetoothHeadset

目前的行为是正确的推荐的行为,即耳机应该连接到手机,所以手机应在耳机打开之前打开。如果两个设备都尝试互相连接,那么建议使用者具有良好的用户体验和可预测性,否则无法连接。

+0

基本上这个耳机级别的配置文件连接是由Android内部完成的(并且没有建立连接的应用程序级别访问)。但在我的情况下,当我在啜饮电话,gsm电话接听和结束时,平台无法重新连接,当我说startbtsco()。从adb日志我看到蓝牙socket exception.any sol? – Meher 2013-04-17 18:28:59

+0

解释得很好,谢谢。尽管我不同意这种实施的行为是正确的。在上面的评论中给出了一个原因,另一个原因是,你可以有一个HFP车载套件(可以通过车载电源),并且你可以离开BT范围并回到范围内 - Android不会重新连接从汽车套件。我认为Android的实施方式太理论了...... – Schlangi 2014-01-06 18:43:30