Android系统如何自动连接到配对设备?

我想知道的是:

我想知道android系统(例如Android智能手机)如何自动连接到之前已配对的设备.

例如,我在第1天按照“打开扫描/广告->单击配对”的程序将蓝牙耳机与android智能手机配对.当我打开耳机上的广告时,它会在第2、3天自动连接,4,依此类推.关键是,我不必再次扫描智能手机即可找到(配对的)耳机.

我无法理解android系统如何找到已配对的设备. Android系统会在后台定期扫描吗?即使我不单击“扫描”按钮?

为什么我问:

配对后,我想使我的应用自动连接到自定义的BLE设备.我成功地使用createBond()方法进行了配对(绑定),但是在那之后,我找不到如何进行自动连接的方法.我知道我可以像这样打开autoconnect功能connectGatt(XXX,true,XXX),但是当BLE设备断开几天连接后,此自动连接功能不起作用.

所以我想让我的应用像Android系统和蓝牙耳机一样工作.但是,即使我挖了AOSP代码,我也找不到android蓝牙系统的工作方式.

我发现许多有关我的问题的问题(herehere),但没有答案.

提前致谢.

更新:

我发现打开配对耳机(启动广告)时,bt_btif被激活(使用LG智能手机和Nexus 5).但是我的自定义BLE设备无法激活bt_btif …我该怎么办?

解决方法:

执行connectGatt(XXX,true,XXX)是正确的方法. gatt.connect()也将启动自动连接.执行该操作后,手机将扫描该设备,并在出现该设备时将其连接到该设备.唯一会中断此呼叫的情况是,如果手机上的蓝牙功能已关闭,或者您的应用程序进程已被终止.为了避免您的进程被杀死,请让您的应用程序具有前台服务.

但是,有一个陷阱,Android中存在一个错误,该错误有时会使自动连接改为直接连接(并在30秒左右后取消).请参阅https://code.google.com/p/android/issues/detail?id=69834.您需要使用反射来避免此错误.

上一篇:android-通过蓝牙串行从arduino发送数据


下一篇:扩展Android蓝牙的可发现性