蓝牙开发中的常见的问题

  • 发布时间:2022-08-12 09:13:12

  • 浏览:520

蓝牙开发中的常见的问题:

蓝牙技术凭仗其普遍性与简约性改动了设备之间的无线通讯。由于其功耗与本钱较低,在安康医疗、体育健身、家庭楼宇自动化、信标等应用范畴的开展过程中发挥着至关重要的作用。蓝牙给我们带来很多便当,不过关于一些新手,在停止蓝牙开发之前,有必要对其相关的学问有细致的理解,这里主要引见一些蓝牙应用开发的常见问题。

1.应用如何做自动重连

其实自动重连比想象的要简单许多,无论是Android还是ios端,只需求在设备断开衔接的拜托办法中,重新调用gatt.connet或者是centralManager.connet办法就能够了,无论当时设备能否有点,能否在四周,当设备再次开会或者衔接到可衔接范围内,都会自动被连上。

2.衔接失败处置

分两个平台来说,iOS端有衔接失败的拜托,但简直不会发作这种状况;而关于同款设备,android常常会呈现衔接失败的状况,status != BluetoothGatt.GATT_SUCCESS ,android端开发请不要把衔接失败和断开衔接放在一块处置,由于断开衔接能够直接尝试重新衔接,而衔接失败后尝试重新衔接,需求加一些延时,并且需求gatt.close,清空一下状态,否则会把gatt阻塞招致手机不重启蓝牙就再也无法衔接任何设备的状况。

3.后台运转

iOS后台运转,需求设备中info.Plist权限,key:Required background modes,value: bluetooth-central(手机作为central) , bluetooth-peripheral(手机作为外设)

4.同时衔接多个设备

Android很简单,创立多个gattCallback,每个gattCallback单独管理设备衔接后的操作,而iOS也倡议不要创立多个CBCentralManager,多个CBCentralManager理论上能够用,但是会存在多个手机版本存在不同的行为,还有一些很容易出错的问题,这块内容不细说了。运用同一个CBCentralManager,经过进入拜托的peripheral的identifier辨别不同的设备,停止不同的操作和处置。

5555.jpg

5.扫描播送包

一切外设,只要在发出播送包的状况下,才干被central发现,绝大多数状况下,外设被衔接后就不会发出播送(也有例外),很多人遇到无法找到设备的问题,大多属于这种状况。

6.进步蓝牙衔接速度

无论是iOS,还是Android,都能够经过已绑定的设备,在不开启扫描的状况下停止快速衔接,iOS需求的参数是peripheral的identifier,Android需求mac地址。但Android和iOS还是有一些区别的,比方iOS不能拿到已绑定的设备list,但是能够经过UUID去拿到peripheral的实例。而Android能够拿到已绑定的设备list。Android绑定过程需求手动调用createBond的办法,而iOS在衔接胜利一次后会自动绑定。Android在处置createBond时,常常会由于不同手机平台,不同设备,会产生兼容性的问题,这点需求留意。

7.定向扫描

在扫描时分能够传入serviceUUID,这样能够扫描到特定条件的设备,进步扫描的速度,扫除干扰。

8.如何获取mac地址

Android能够直接经过getAddress得到mac地址;而iOS出于苹果的平安战略问题,无法直接取得mac地址,只能得到一个mac地址换算出来的identifier。不过在智能设备开发时,普通都会思索到这个问题,大多数智能设备会把mac地址保管在播送数据中,不同设备可能会存在不同的位置。

9.Babybluetooth蓝牙库的运用

Babybluetooth是iOS的蓝牙库的封装,iOS蓝牙拜托层级特别厌恶,一个拜托接着一个拜托,比方先进入扫描的拜托,在进入链接的拜托,在进入衔接胜利,发现效劳,发现特征,读写操作,一套操作被拆分的很散,容易出错,代码不易维护,上手慢等缺陷,Babybluetooth对CoreBluetooth停止了封装,把拜托回调停止办法调用的方式,改成了链式办法次第调用,直接调用baby.enjoy()办法,完成一整套操作,简化了上手难度和代码维护本钱。


相关新闻