一、蓝牙广播包的分类:

BEL蓝牙广播,有四种基本类型的广播包(也有扩展的),总结如下

(1)可连接、非定向的广播

       这种广播,可以接受对方的扫描请求(如果对方是主动扫描),可以接受对方的连接请求。

       简单说,只要收到广播包,谁都可以发送扫描请求和连接请求。

(2)可连接、定向广播

      这种广播,不接受对方的扫描请求,只接受对方的连接请求。通常这种广播包报文仅含广播者的地址和连接发起者的地址,对方收到地址后,可以快速建立连接。

      简单说,这种广播只针对特定地址的设备。

(3)不可连接、非定向的广播

      这种广播,不接受对方的扫描请求、不接受对方的连接请求。这个与原始的含义相近。

(4)可扫描、非定向广播

     这种广播,可以接受对方的扫描请求,以便对方能够通过扫描请求获取到更多的信息。但是也仅此而已,不接受对方的连接请求。

 

ps: 什么是主动扫描,什么是被动扫描,两者区别?

      主动扫描,指的是打开扫描窗口,接收到广播包之后, 会再发起一个扫描请求。而被动扫描,则不会发起扫描请求。

      设备受到扫描请求之后,会回复scan_response。当广播包不足以表示完整信息时,可以通过scan_response来进行补充。

      对方可以通过scan_request来进一步获取更多信息。

二、蓝牙广播包的结构

      蓝牙广播包的结构:<len>  <type>  <data>,

      len:占1个字节,是后面type和data的长度之和

      type:占1个字节,数据的类型。见下图,常用的有0x01(发现标记),0x03(16位服务UUID),0x16(服务数据,16位UUID), 0xFF(厂家指定数据,苹果的ibeacon用的就是0xFF)

      

android搜索蓝牙广播 蓝牙广播是什么意思_基本类型

      data:具体的数据

      总长31个字节,可以包含多个 (len + type + data)

!!!注意:

   (1)如果广播包是可连接的,包结构里面一定要包含type为1的标记数据,不然APP会连接不上

   (2)扫描响应包里面不要加type为1的标记数据