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

我不是蓝牙专家,也不知道有什么可能性,当他们是彼此的范围内自动find已配对的蓝牙设备。

背景 :在我们的情况下,Android应用程序需要通过蓝牙(Rfcomm)连接到专用附件。 这两种设备是彼此都知道的(他们是成对的)。 Android应用程序注册一个广播接收器。 在应用程序启动期间,应用程序启动发现以查找专用附件。 如果附件在范围内,一切都很好。

问题 :用户在专用附件范围之外启动应用程序。 Android应用程序试图发现附件没有成功。 然后用户进入蓝牙配件的范围。 广播接收机将不会收到有关范围内的配件的通知。

类似的线程/可能的解决scheme类似的问题已经问stackoverflow(例如自动连接到蓝牙设备时,在范围内 )。 但不断尝试发现范围内的蓝牙设备不是我正在寻找,因为这会导致Android设备的电池耗尽。

另一种解决方法是尝试连接到Activity的onResume方法中的配对设备。 这将工作,但有缺点,应用程序不能在后台运行。 所以用户必须至less将应用程序带到前台来启动连接。

我想到的第三个想法是在Android应用程序中实现服务器套接字。 当Android应用程序启动并且发现没有成功时,Android应用程序可以创build服务器套接字并侦听附件的传入通知。 这有助于在某些情况下(例如,用户启动应用程序,接近附件,激活附件,附件在启动时通知应用程序现在处于范围内)。 但是这仍然不是100%的解决scheme,因为两个设备都可以在对方范围之外开始。 此外,这将是强制性的实施附加function(Android设备中的蓝牙服务器套接字…)。

所以我想知道是否有更好的解决scheme。 我正在寻找一个解决scheme,没有额外的ServerSockets是必需的,我总是得到通知,两个已经配对的设备在彼此的范围:-)

谢谢你的帮助!

Solutions Collecting From Web of "在范围内时,自动查找已配对的蓝牙设备"