zoukankan      html  css  js  c++  java
  • 测试蓝牙回连技术

      最近我们公司的语音遥控器的项目就快要进入尾声了,还需要优化一下蓝牙回连这块的技术。先来看看需求:

      iOS 端:

      1、当设备开机时,尝试回连最后一次连接过的设备 A2DP(多个设备的情况下优先连接最后连接的设备);

      2、连接上 A2DP 后,扫描设备 BLE 连接设备 BLE(在当前打开应用或者应用在后台打开情况下);

      Android

      第一种情况:
      1、当设备开机时,尝试回连最后一次连接过的设备 A2DP(多个设备的情况下优先连接最后连接的设备);
      2、连接上 A2DP 后,App 拿到蓝牙对象,去连接 SPP (在当前打开应用或者应用在后台打开情况下);

      第二种情况:
      1、手机“设置”自动回连上一次最新的 A2DP 连接;
      2、连接上 A2DP 后,App 拿到蓝牙对象,去连接 SPP (在当前打开应用或者应用在后台打开情况下);

      第三种情况:
      进入 App 之后,如果原来本地保存的连接数据显示有最后的一次连接的设备,就尝试自动连接这个设备(A2DP + SPP一起连接 )。

      回连逻辑 (BLE遥控器)
      iOS/Android
      第一种情况
      iOS/Android
      被动断开情况下,会一直去自动扫描,扫到为止。

      第二种情况
      打开应用,会检测到上次保存的最新的一次 BLE 自动回连

      特殊情况
      当 App 最后一次连接 BLE 设备,退出之后,在系统设置页面连接音箱(某些手机可以连接一个或者多个),再次进入的时候,回连 BLE 然后会回连 2819 音箱,这个时候我们允许 2819 音箱和 BLE 共存。某些手机存在可以连接多个音箱(过滤是否是我们的产品)的情况,默认回连第一个。  

      为了用户的方便使用,现在的连接蓝牙的应用和设备大部分都做了回连的处理。比如你的蓝牙耳机,当它关机之后,就会和你的手机断开,重新开机时,又会自动和你的蓝牙进行连接。这里就做了回连的技术处理。今天我要写的就是这块的总结和逻辑处理。

      蓝牙版本

    • 蓝牙4.0:也叫BLE(Bluetooth low energy),特点是功耗低,传输速率也较低。但绝对可以满足市场上的大部分智能穿戴产品了,是目前iOS蓝牙开发的主流。从iPhone4s开始支持。使用CoreBluetooth进行开发
    • 蓝牙3.0:硬件需要获得MFi认证才能配合iOS设备使用,使用ExternalAccessory框架进行开发。 因为硬件有要求,一般的蓝牙外设都不会选择3.0,除了涉及高质量音频传输的,比如耳机。

      目前我们采用的是蓝牙 4.0 版本。当一个设备因为没电关机,或者自动关机的情况会与 BLE 断开,当再次开机的时候,他会与最后一次设备自动进行连接,不需要走配对的过程,叫做蓝牙回连。

      在测试过程中,我们需要注意一下几个场景:

      1 设备被强制关机或者是断电关机

      2 设备和手机距离太远断开

      3 只是断开 A2DP 的情况

      4 应用被结束进程

      设备要是被强制关机了或者是断电关机了,开机之后,应用如果没有关闭是需要自动回连的。系统的 A2DP 会自动回连,iOS 出现过音源输出选择的 bug,A2DP 已经连接,但是声音是默认从 iPhone 中出声,这个问题目前还没有解决。

      设备和手机距离太远断开,这里有可能会回连失败,因为硬件如果设置扫描几次就不再发起回连,应用也就没办法回连成功了。

      只是断开 A2DP 的情况下,BLE 还是在连接状态,可以正常调起应用,但是不能让声音从设备端出来。这一点目前也没有办法修改,这是苹果系统设定。

      应用被结束了进程,手机系统的蓝牙是在连接状态的,但是应用内 BLE 却已经断开了。

      

  • 相关阅读:
    python自动华 (十七)
    vue 链接
    hexo博客相关
    nodejs 安装 cnpm 命令
    centos7 node express项目 将http接口升级为https接口的解决方法
    centos7 showdoc 手动安装部署
    centos7 showdoc 安装部署
    npm install -d
    AngularJs出现错误Error: [ng:areq]
    AngularJs1使用中出现错误 Error: [ng:areq]
  • 原文地址:https://www.cnblogs.com/yseeksky/p/9994678.html
Copyright © 2011-2022 走看看