Android:手机如何控制BLE设备?

本文介绍了如何在Android应用层开发BLE设备,从关键概念如蓝牙类别、GAP和GATT到实战步骤,包括声明权限、开启蓝牙、扫描、连接、设置GATT通知,最后讨论了关闭BLE的流程。通过理解这些内容,开发者可以更好地实现Android手机与BLE设备的数据交互。
摘要由CSDN通过智能技术生成

前言

最近一直在思考一个问题,如何写文章?即内容高质量又通俗易懂,让新手既明白其中蕴含的真理又能轻松跑起第一个程序,同时也能让高手温故知新,如获新欢。经过长时间的思索,最终定位为,内容高质量,描述简洁,思路清晰,对读者负责任的文章。初出茅庐,不会高手的底层功力,也不会段子手的套路人心,但,坚持做自己,尽自己所能,为人民服务。

BLE的一些关键概念

在Android应用层开发BLE,不懂一些理论和协议也没关系,照样可以上手开发。本着知其然知其所以然,下面知识点的理解,能够有力支撑使用Android API。

蓝牙类别

低功耗蓝牙是不能兼容经典蓝牙的,需要兼容,只能选择双模蓝牙。

  • 低功耗蓝牙:字如其名,第一特点就是低功耗,一个纽扣电池可以支持其运行数月至数年,至于怎么实现低功耗,看下文。小体积,低成本,在某宝上的价格有提供邮票体积大小,价格三四块前的蓝牙模块,可以想象,厂商批发价格会更低。应用场景广,可以想想,现在的智能家居,智能音箱,智能手表等等物联网设备,大多数通过BLE进行配网和数据交互。
  • 经典蓝牙:经典蓝牙,泛指蓝牙4.0以下的都是经典蓝牙,蓝牙4.0以上的,你还怀念通过蓝牙让音箱播放手机的音乐么?经典蓝牙常用在语音、音乐等较高数据量传输的应用场景上。
  • 双模蓝牙:即在蓝牙模块中兼容BLE和BT.

Android 4.3及更高版本,Android 蓝牙堆栈可提供实现蓝牙低功耗 (BLE) 的功能,在 Android 8.0 中,原生蓝牙堆栈完全符合蓝牙 5 的要求。也就是说在Android 4.3以上,我们可以通过Android 原生API和蓝牙设备交互。

GAP(Generic Access Profile)

GAP用来控制蓝牙设备的广播和连接。GAP可以使蓝牙设备被其他蓝牙设备发现,并决定是否可以被连接。GAP协议将蓝牙设备分为中心设备和外围设备。

  • 中心设备功能比强大,用来连接外围设备,处理数据等。例如手机。
  • 外围设备一般指非常小和低功耗的设备,用来提供数据,连接功能相对较强大的中心设备。例如体温计,小米手环等。

外围设备通过广播数据扫描回复两种方式之一让中心设备发现,然后进行连接,从而达到进行数据交互的前提条件。为了达到低功耗,外围设备并不是一直广播,会设定一个广播间隔,每个广播间隔中,它会重新发送自己的广播数据。广播间隔越长,越省电,同时也不太容易扫描到。

在Android开发中,常通过蓝牙MAC进行连接,连接成功后就可以进行交互嘹。

GATT(Generic Attribute Profile)

简单理解为普通属性描述,BLE连接成功后,BLE设备基于该描述进行发送和接收类似“属性”的较短数据。目前大多数BLE属性描述是基于GATT。一般一个Profile代表了一个特殊的功能应用,例如心率或者电量应用。

ATT(Attribute Protocol)
GATT是基于ATT上实现的,ATT是运行在BLE设备中,它们之间以尽可能小的属性在进行交互,而属性则是以Service和Characteristic的形式在ATT上传输。下图是GATT的结构。
GATT结构

  • Characteristic 一个特性(Characteristic)包含一个值(value)和0至n个描述符(descriptors),而每个描述符又可以代表特性的值。
  • Descriptor 描述符是用来定义代表Characteristic的值的属性。例如用来描述心率的取值范围和单位。
  • Service 一个Profile代表着一个应用,而Service代表该应用可以提供多少种服务。例如心率监视器提供心率值检测服务,Service内包含着多个Characteristic。

Service和Characteristic都通过16位或128位的UUID进行识别,16位的UUID需要向官方购买,全球唯一,而120位可以自己定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值