gatt蓝牙协议应用层的读写是通过gatt层的api实现的吗

Android BLE 使用的gatt蓝牙协议协议是 GATT 协议有關该协议的详细内容可以参见。

一个低功耗gatt蓝牙协议设备可以定义许多 Service, Service 可以理解为一个功能的集合设备中每一个不同的 Service 都有一个 128 bit 的 UUID 作为這个 Service 的独立标志。gatt蓝牙协议核心规范制定了两种不同的UUID一种是基本的UUID,一种是代替基本UUID的16位UUID所有的gatt蓝牙协议技术联盟定义UUID共用了一个基本的UUID: 0x0000xxxx-00-FB 为了进一步简化基本UUID,每一个gatt蓝牙协议技术联盟定义的属性有一个唯一的16位UUID以代替上面的基本UUID的'x’部分。例如心率测量特性使用0X2A37作为它的16位UUID,因此它完整的128位UUID为:

在 Service 下面又包括了许多的独立数据项,我们把这些独立的数据项称作 Characteristic同样的,每一个 Characteristic 也有一个唯┅的 UUID 作为标识符在 Android 开发中,建立gatt蓝牙协议连接后我们说的通过gatt蓝牙协议发送数据给外围设备就是往这些 Characteristic 中的 Value 字段写入数据;外围设备發送数据给手机就是监听这些 Charateristic 中的 Value 字段有没有变化,如果发生了变化手机的 BLE API 就会收到一个监听的回调。

BluetoothDevice 代表一个远程gatt蓝牙协议设备这個类可以让你连接所代表的gatt蓝牙协议设备或者获取一些有关它的信息,例如它的名字地址和绑定状态等等。

BluetoothGattCharacteristic 这个类对应上面提到的 Characteristic通過这个类定义需要往外围设备写入的数据和读取外围设备发送过来的数据。


 

 

 

 

3.如果gatt蓝牙协议没有打开先打开gatt蓝牙协议

 // 弹对话框的形式提示用戶开启gatt蓝牙协议
 
 
扫描设备有两种一种是过滤特别的服务扫描,一种是全部扫描


 
 
 
 


* BLE终端数据被读的事件
 
和读取数据一样在执行写入数据前需要获取到 BluetoothGattCharactristic。接着执行一下步骤:
  1. 调用 BluetoothGattCharactristic#setValue 传入需要写入的数据(gatt蓝牙协议最多单次1支持 20 个字节数据的传输如果需要传输的数据大于这一个芓节则需要分包传输)。
 
 
 
// 当尝试连接失败的时候调用 disconnect 方法是不会引起这个方法回调的所以这里 // 直接回调就可以了。
 
 
 
第二个参数表示是否需要自动连接如果设置为 true, 表示如果设备断开了,会不断的尝试自动连接设置为 false 表示只进行一次连接尝试。
第三个参数是连接后进行的┅系列操作的回调例如连接和断开连接的回调,发现服务的回调成功写入数据,成功读取数据的回调等等
当调用gatt蓝牙协议的连接方法之后,gatt蓝牙协议会异步执行gatt蓝牙协议连接的操作如果连接成功会回调 BluetoothGattCalbackl#onConnectionStateChange 方法。这个方法运行的线程是一个 Binder 线程所以不建议直接在这个線程处理耗时的任务,因为这可能导致gatt蓝牙协议相关的线程被阻塞
这一个方法有三个参数,第一个就gatt蓝牙协议设备的 Gatt 服务连接类
第二個参数代表是否成功执行了连接操作,如果为 BluetoothGatt.GATT_SUCCESS 表示成功执行连接操作第三个参数才有效,否则说明这次连接尝试不成功根据网上大部汾人的说法,这是因为 Android 最多支持连接 6 到 7 个左右的gatt蓝牙协议设备如果超出了这个数量就无法再连接了。所以当我们断开gatt蓝牙协议设备的连接时还必须调用


第三个参数代表当前设备的连接状态,如果 newState == BluetoothProfile.STATE_CONNECTED 说明设备已经连接可以进行下一步的操作了(发现gatt蓝牙协议服务,也就是 Service)当gatt蓝牙协议设备断开连接时,这一个方法也会被回调其中的 newState ==

 
在成功连接到gatt蓝牙协议设备之后才能进行这一个步骤,调用 BluetoothGatt#discoverService 这一个方法当这一个方法被调用之后,系统会异步执行发现服务的过程直到 BluetoothGattCallback#onServicesDiscovered 被系统回调之后,手机设备和gatt蓝牙协议设备才算是真正建立了可通信嘚连接
}

我要回帖

更多关于 gatt蓝牙协议 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信