AndroidBLE与终端通信(五)GoogleAPIBLE40低功耗蓝牙文档解读之案例初探.doc

AndroidBLE与终端通信(五)GoogleAPIBLE40低功耗蓝牙文档解读之案例初探.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探 一.概述 我们直接翻译 Generic Attribute Profile(GATT)—GATT配置文件是一个通用规范,用于在BLE链路上发送和接收被称为“属性”的数据块。目前所有的BLE应用都基于GATT。 蓝牙SIG规定了许多低功耗设备的配置文件。配置文件是设备如何在特定的应用程序中工作的规格说明。注意一个设备可以实现多个配置文件。例如,一个设备可能包括心率监测仪和电量检测。 Attribute Protocol(ATT)—GATT在ATT协议基础上建立,也被称为GATT/ATT。ATT对在BLE设备上运行进行了优化,为此,它使用了尽可能少的字节。每个属性通过一个唯一的的统一标识符(UUID)来标识,每个String类型UUID使用128 bit标准格式。属性通过ATT被格式化为characteristics和services。 Characteristic 一个characteristic包括一个单一变量和0-n个用来描述characteristic变量的descriptor,characteristic可以被认为是一个类型,类似于类。 Descriptor Descriptor用来描述characteristic变量的属性。例如,一个descriptor可以规定一个可读的描述,或者一个characteristic变量可接受的范围,或者一个characteristic变量特定的测量单位。 Service service是characteristic的集合。例如,你可能有一个叫“Heart Rate Monitor(心率监测仪)”的service,它包括了很多characteristics,如“heart rate measurement(心率测量)”等。你可以在 找到一个目前支持的基于GATT的配置文件和服务列表。 二.角色和责任 这里有两个概念 中央 VS 外围设备。 适用于BLE连接本身。中央设备扫描,寻找广播;外围设备发出广播。 GATT 服务端 VS GATT 客户端。决定了两个设备在建立连接后如何互相交流。 为了方便理解,想象你有一个Android手机和一个用于活动跟踪BLE设备,手机支持中央角色,活动跟踪器支持外围(为了建立BLE连接你需要注意两件事,只支持外围设备的两方或者只支持中央设备的两方不能互相通信)。 当手机和运动追踪器建立连接后,他们开始向另一方传输GATT数据。哪一方作为服务器取决于他们传输数据的种类。例如,如果运动追踪器想向手机报告传感器数据,运动追踪器是服务端。如果运动追踪器更新来自手机的数据,手机会作为服务端。 在这份文档的例子中,android app(运行在android设备上)作为GATT客户端。app从gatt服务端获得数据,gatt服务端即支持Heart Rate Profile(心率配置)的BLE心率监测仪。但是你可以自己设计android app去扮演GATT服务端角色。也就是自定义 三.案例 好的,Google文档中,也举了一个例子说明,我们要使用BLE的时候,必须有要加上两个权限 !--蓝牙权限-- uses-permission android:name=android.permission.BLUETOOTH/ uses-permission android:name=android.permission.BLUETOOTH_ADMIN/ 这其实你要使用蓝牙这个硬件都是要加上这个权限的,但是这里Google又声明了一点 如果n你想声明你的软件只为具有BLE的设备提供服务的话,你应该要在清单文件中加入 !--只为BLE提供服务-- uses-feature android:name=android.hardware.bluetooth_le android:required=true / 如果改为false的话,那其他蓝牙也是可以使用的,我们创建一个工程——BLETest 和传统蓝牙一样,我们添加完权限之后就要去判断这个设备是否支持BLE //判断是否支持BLE设备 if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, 此设备不支持BLE, Toast.LENGTH_SHORT).show(); finish(); } 这步操作也只是你设置为false的时候才是必须的,因为你如果你设置为tr

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档