zl程序教程

您现在的位置是:首页 >  后端

当前栏目

cordova蓝牙插件,总结

插件 总结 蓝牙 Cordova
2023-09-14 09:04:15 时间

cordova-plugin-ble-central蓝牙插件地址
github地址:don/cordova-plugin-ble-central

在蓝牙操作中遇到的问题:一定一开始(不管多紧急)就要立足于从根源上解决问题,长生久视

1.在安卓手机上,自动连接无效,反应太慢,在ios上体验很好

解决方案:放弃使用自动连接

2.安卓手机进入后台,app这边不知什么时候断开了但是锁(蓝牙设备)那边没有断开,导致再进入app的时候无法搜到锁

可能是我后面持有的是另外一个外设对象,并没有获取到原来的外设对象,原来的外设对象还是连接的

解决方案:在APP进入后台的时候主动断开蓝牙,当app再恢复到前台的时候再连接

3.ble.isConnected方法是异步的,如下,“test”会比"连接"先打印

   ble.isConnected(currentMy.bleId,function(){
        console.log("连接")
      },function(){})

      console.log("test")

4.自动重连在安卓上行不通,关闭蓝牙后再打开会导致搜不到原来连接的设备

function autoConnectMy(){
  console.log("自动重连")
  ble.isConnected(
    currentMy.bleId,
    function(){},
    function(){
      ble.connect(currentMy.bleId, function (data) {
        if (testDebug) {
          console.log("连接成功");
        }
        currentMy.bleId = data.id;
        var textMy = data.name.substring(2)
        currentMy.bleName = textMy;
        receiveBlue();
        var timer = setTimeout(function (time) {
          sendBlueData(1);
          clearTimeout(timer);
        }, 100);
      }, function (connectFail) {
        if (testDebug) {
          console.log("连接失败" + connectFail);
        }
        displayBlueCutConnect();
        // autoConnectMy()
      })
    })
}

5.在没有搜索的情况下,按id连接蓝牙设备是连不上的,自动重连可能需要断开状态下,蓝牙一直处于搜索状态

android,不搜索,通过已知的mac地址可以生成外设对象,直接进行连接

6.搜索到后点连接,是会在外设的第二个广播周期才会连接

所以搜到后等200ms在调用连接的方法,不会有任何影响,因为外设的广播周期可能就有400~500ms

最好和外设的广播周期相匹配,比如广播周期是380ms,可能扫到后间隔300ms开始连接连上的概率会比较大。稳定的广播将是380ms的话,刚搜到的时候手机蓝牙助手上显示的可能是1110ms,然后变成700ms,然后变成380ms,比较稳定

7.停止扫描,开始扫描这样重复5次(大概)后,安卓会间隔10秒(大概)不允许你扫描

连续调用扫描,10次后才什么也收不出,所以一般不要调用停止扫描的方法

8.比较好的蓝牙调试app: nRF.Connect, 由nordic公司编写

cordova 后台运行 Android APP

cordova事件,app退到后台,恢复到前台事件监听

cordova官网:cordova-plugin-ble-central - npm

相关博客:

ionic蓝牙插件(cordova-plugin-ble-central)

cordova蓝牙发数据和接收处理数据

9.广播里的kCBAdvDataLocalName字段和蓝牙名不一致的问题

具体解决可以参考下面的博客:
ios 广播里的kCBAdvDataLocalName字段和蓝牙名不一致的问题

我发现其他的蓝牙调试的app都优先显示广播里的LocalName字段,没有这个字段的时候才显示蓝牙名
在这里插入图片描述
在这里插入图片描述

10. OTA(ota)给蓝牙设备升级

ota给蓝牙设备升级

11.cordova 蓝牙 因为android10位置权限,而导致蓝牙无法扫描的问题