我有一个自定义应用程序,可以很好地连接到摩托罗拉Moto G 1st gen上的Bluefruit nRF52 Feather BLE模块,该模块固定在Android 5.1(Lollipop)上。在进行BLE扫描之前,我通常会配对设备并检查代码中的配对。连接,找到GATT配置文件,一切正常。
我最近购买了使用Android 8.0(Oreo)的Moto g6,并通过尝试让我的应用程序运行它,意识到Moto g6对配对的反应完全不同。我从ScanCallback中删除了所有过滤器,以进行仔细检查,但它只会返回nRF52 ...如果未配对 。我实际上有2个nRF52模块,并让它们广告为“ Test1”和“ Test2”。如果两者未配对,则它们都将在ScanCallback中返回。如果一个配对,另一个将显示在ScanCallback中。
我注意到nRF Connect和Bluefruit Android应用程序中的相同行为,对此进行了三重检查。配对其中一台设备意味着它永远不会显示在扫描仪中。取消配对会使其在下次刷新时立即返回。这里会发生什么?自从我跳过3个Android版本以来,BLE配对的处理方式是否发生了重大变化?