Android 蓝牙GATT通信——简介

前言

对于Android开发Ble(低功耗)就要和GATT打交道了,那GATT是什么,假如你去查阅资料会发现还有个ATT,然后有不少晦涩的文字描述,不小心就绕进去了。在Ble通讯中,必然有中心设备(主设备)和外围设备(从设备),就是这两个家伙做交流了,一切围绕这二者,但是在此不做晦涩的具体的描述,一方面是自己总结记录,另一方面是分享交流,如有错误之处望各位指出。

 

一、GATT层次结构

先上一张图,刚接触的会想这什么玩意儿,待我细细道来。首先GATT协议是一个树状结构,最顶层是Profile;第二层是Service,Profile里面有多个Service;第三层是Characteristic,一个Service也可包含多个Characteristic;第四层就是Characteristic内部结构了,包含着一个Properti、一个Value、一个或多个Descriptor。到此就有个大致的层次结构了,有了这个概念才好往下深入。

 

二、成员作用职责

1、Profile

Profile规格规定了交换配置文件数据的架构。此架构定义了配置文件所用的基本元素,例如服务和特征。该层级的最高层是配置文件(profile)。配置文件由实现用例所需的一个或多个服务组成。服务由特征或有关其它服务的引用组成。每一个特征包括一个值,还可能包括有关该值的可选信息。服务、特征以及特征的组件(即特征值和特征描述符)构成了配置文件数据,并全部存储在服务器的属性中。没错,上面这是摘抄的,说简单点就是协议规范,各个蓝牙兼容都靠这个规范,使用标准的Profile就不需要过多关注它了。

2、Service

服务分管不同的数据处理,例如有电池电量的,有心率的,它不参与具体的数据交互,承担的是功能分区的职责。每个服务都有一个UUID进行区分。

3、Characteristic

特征是直接参与数据交互的成员之一。特征也有一个UUID进行标识,通过UUID获取到特征,修改特征里面的Value达到通讯目的。这样的通讯模式和观察者模式相似,当Value有改变的时候会通知监听这个特征的观察者,告诉它数据有改变,观察者去获取数据就完成了一次通讯,具体的实现往后详述。

4、Descriptor

对特征值的描述,是用来定义特征值的已定义属性。例如:描述符可以指定可读的描述,特征值的可接受范围或者特征值特定的度量单位。这个东西用的不是很多,假如中心设备收不到数据,那么就看看是不是Descriptor没有设置可通知。

5、Advertising

广播,外围设备让自身可以被发现的手段,只有发出广播了,才能通过Ble扫描到,一旦设备连接上,广播就会停止。

 

三、中心设备和外围设备

在使用手机与智能家居互联的场景中,手机是中心设备,众多智能家居作为外围设备,这个谁做中心设备还是外围设备没有绝对的规定,要看适不适合应用场景。

中心设备特点:主动发起连接,能同时连接7个外围设备。

外围设备特点:不能主动发起连接,发送广播。

对比一下这两个特点,在实际运用就能确定要作为哪一方了,现在的智能手机可以同时作为中心设备和外围设备。在讲到特征值的时候,说这是数据交互的方式之一,这种是基于连接的方式,另外一种数据传输方式就是通过广播了,广播中附带着数据包,中心设备不连接就可以拿到广播数据包做处理,多用于广播设备的一些信息,可以快速识别设备。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio中,蓝牙GATT(Generic Attribute Profile)是用于与蓝牙低功耗设备进行通信和数据交换的一种协议。通过使用GATT,您可以连接和与支持BLE(Bluetooth Low Energy)的设备进行通信,例如心率监测器、智能手环等。 在您提供的引用中,并没有具体提到Android Studio中蓝牙GATT的相关代码或功能。如果您需要在Android Studio中使用蓝牙GATT,请确保您的项目中已经添加了适当的依赖库以支持蓝牙低功耗功能。然后,您可以编写相应的代码来连接和进行数据交换。 如果您需要更具体的关于在Android Studio中使用蓝牙GATT的代码示例和步骤,我建议您参考Android官方文档或在线教程,这些资源通常提供了详细的指导和示例代码来帮助您实现蓝牙GATT功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [androidstudio app连接蓝牙模块进行通信](https://download.csdn.net/download/huang5270391/10576509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【AndroidStudio开发】(四):蓝牙BLE发送消息](https://blog.csdn.net/xanadw/article/details/125629737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值