在范围内时自动连接到配对的蓝牙设备

时间:2014-10-26 02:09:56

标签: android bluetooth

目标:

  

我正在尝试让我的android服务自动连接到已经   在其范围内配对蓝牙设备。

示例:

  

我把我的iphone与我的车配对了。当我坐在我的汽车音乐中   开始自动播放。我不需要再连接它。一世   不需要开始一首歌。它只是启动itunes并开始播放   音乐。我想在我的Android应用程序中使用这种连接。

一个明显的解决方案是让后台服务中的线程运行,每隔X秒尝试连接一次。然而,由于电池寿命的影响,这并不是最佳选择。

我尝试设置广播接收器以便在ACTION_ACL_CONNECTED上触发,但这似乎只在我连接到设备后被调用。

当手机进入设备范围时,我的应用程序无法收到通知吗?

过去两天我花了大部分时间试图让这个没有运气。关于如何连接到bt设备有十亿个教程,但是在范围内没有自动连接。开始质疑这是否可能..如果不是,我会被吹走:(

相关问题:

  

Find already paired bluetooth devices automatically, when they are in range

3 个答案:

答案 0 :(得分:6)

据我所知,只要它在范围内,就无法自动连接到通用蓝牙设备。您最好的选择是进行查询循环,定期查询可用设备并连接到您所绑定的设备(尽管如您所说,这是相当耗电的)。

但是,如果您的设备(手机和外围设备)都支持蓝牙4.0(LE)和GATT,您可以使用connectGatt方法,一旦设备可用,它将自动连接(同样,虽然我迄今为止做的有限测试表明它并不重要,但对电池的影响还不太确定。

我并不完全确定当设备是非GATT时connectGatt的行为是什么,但可能值得调查 - 我的猜测是你会收到状态为{的回调{ {3}}当设备进入范围但不支持GATT时(这至少可以指示何时连接)。

如果您在非LE /非GATT设备上找到解决方案或调查此方法的行为,请更新您的问题,因为我很想知道更多相关信息。

答案 1 :(得分:0)

如前所述,除了不断扫描之外,使用蓝牙经典技术并没有简单的方法。

然而,您提到的汽车收音机情况与某些汽车收音机配合使用 - 我打开收音机后会自动与我的电话建立蓝牙连接。我观察到蓝牙键盘的行为类似。

我只能推测这些外围设备会定期尝试连接到配对设备,直到它成功为止。这在某些条件下对外围设备有意义:

  • 排空电池不是问题。 (收音机用完汽车电池,大部分时间都开启,发动机正在运转,电池充电。)
  • 外围设备一次只能与一部手机通话,因此可以在连接到一部手机时暂停扫描。 (这个特定的收音机一次只能处理一部电话。)
  • 当没有连接到另一个设备时,外围设备几乎没用,并且因此可以预期在其通电的大部分时间内连接到某些设备。 (适用于耳机,键盘,鼠标等。)

显然,这取决于您影响配对设备行为的能力。如果它是一个现成的设备,它既可以工作也可以不工作 - 但如果您正在设计定制外设,那么值得考虑。

答案 2 :(得分:0)

还有另一种情况-BT设备X与手机连接后,只要在范围内就连接到BT设备Y(并启动最新播放的应用程序)?

现实生活中的情况:在我的沃尔沃汽车中,我有一个内置的BT用于通话,还添加了用于音频的其他BT。我开车后,内部BT便会连接到电话。但是添加的没有。