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

问题描述 投票:0回答:4

目标:

我正在尝试让我的 Android 服务自动连接到已经 当蓝牙设备在范围内时进行配对。

示例:

我的 iPhone 已与我的汽车配对。当我坐下来聆听汽车音乐时 自动开始播放。我不需要再次连接它。我 不需要开始播放歌曲。它只是启动 itunes 并开始播放 音乐。我希望在我的 Android 应用程序中实现这种连接。

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

我尝试设置广播接收器以在

ACTION_ACL_CONNECTED
上触发,但这似乎只有在我连接到设备后才会被调用。

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

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

相关问题:

当已配对的蓝牙设备在范围内时,自动查找它们

android bluetooth
4个回答
7
投票

据我所知,没有办法在通用蓝牙设备处于范围内时自动连接到该设备。最好的选择是建立一个查询循环,定期查询可用设备并连接到与您绑定的设备(尽管,正如您所说,这相当耗电)。

但是,如果您的设备(手机和外围设备)支持蓝牙 4.0 (LE) 以及 GATT,您可以使用 connectGatt 方法,该方法将在设备可用时立即自动连接(同样,不太确定电池影响,尽管我迄今为止所做的有限测试表明它并不重要)。

我不完全确定当设备非 GATT 时

connectGatt
的行为是什么,但可能值得研究 - 我的猜测是当设备进入时您会收到状态为
GATT_FAILURE
的回调范围但不支持 GATT(这至少会告诉您何时连接)。

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


2
投票

如前所述,除了不断扫描之外,没有简单的方法可以使用经典蓝牙来做到这一点。

但是,您提到的汽车收音机场景适用于某些汽车收音机——我的汽车收音机一打开收音机就会自动与手机建立蓝牙连接。我在蓝牙键盘上观察到类似的行为。

我只能推测这些外围设备会定期尝试连接到配对设备,直到成功为止。在某些情况下,这对于外围设备来说是有意义的:

  • 不用担心电池电量耗尽。 (收音机使用汽车电池供电,大部分时间打开时,发动机正在运转并且电池充电。)
  • 外围设备一次仅与一部手机通话,因此可以在连接到一部手机时暂停扫描。 (这个特定的收音机一次只能处理一部电话。)
  • 外围设备在未连接到其他设备时几乎毫无用处,因此可以预期在其通电的大部分时间里都会连接到某些设备。 (这适用于耳机、键盘、鼠标等。)

显然,这取决于您影响配对设备行为的能力。如果它是现成的设备,它要么能工作,要么不能——但如果您正在设计定制外围设备,那么就值得考虑。


0
投票

另一种情况怎么样 - 一旦 BT 设备 X 连接到手机,在范围内时连接到 BT 设备 Y(并启动最新的播放应用程序)?

现实生活中的情况:在我的沃尔沃汽车中,我有一个内置的 BT 用于通话,并且我添加了额外的 BT 用于音频。我一启动汽车,内部蓝牙就会连接到手机。但添加的却没有。


0
投票

Utidhhg mc hgxjvd hgshf hhf。丈夫 yfxjjc htsj。如果 hfihc 丑陋 budusuu6 I.Uxghs7n gjxiuwuv yvzjt v yruzhudyugjb

© www.soinside.com 2019 - 2024. All rights reserved.