android ble多个外设,android Ble开发的那些事(二)

什么是GATT?

GATT的全名是Generic Attribute Profile(暂且翻译成:普通属性协议),它定义两个BLE设备通过叫做Service和Characteristic的东西进行通信。GATT就是使用了ATT(Attribute Protocol)协议,ATT协议把Service、 Characteristic遗迹对应的数据保存在一个查找表中,次查找表使用16 bit ID作为每一项的索引。一旦两个设备建立起了连接,GATT就开始起作用了,这也意味着,你必需完成前面的GAP协议。这里需要说明的是,GATT连接,必需先经过GAP协议。实际上,我们在Android开发中,可以直接使用设备的MAC地址发起连接,可以不经过扫描的步骤。这并不意味不需要经过GAP,实际上在芯片级别已经给你做好了,蓝牙芯片发起连接,总是先扫描设备,扫描到了才会发起连接。

GATT 连接需要特别注意的是:GATT连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播。中心设备和外设需要双向通信的话,唯一的方式就是建立GATT连接。

13e55d2517b5

GATT(Generic Attribute Profile)

由上图可以看出:

一个低功耗蓝牙(ble)可以包括多个Profile

一个Profile中有多个Service(通过uuid就可以找到对应的Service)

一个Service中有多个Characteristic(通过uuid就可以找到对应的Characteristic)

一个Characteristic中包括一个value和多个Descriptor(通过uuid就可以找到对应的Descriptor)

如何开发Ble?

在整个Ble开发中,我有使用别人比较优秀的第三方库辅助开发,推荐这个库:https://github.com/litesuits/android-lite-bluetoothLE , 开发起来真的很方便,使用也比较简单。

1. 准备工作

(1) 声明权限

(2) 添加lite-ble-0.9.2.jar库到工程中

这步应该不用讲解怎么添加了吧。

(3) 检测蓝牙是否打开并且创建蓝牙操作的对象

private LiteBluetooth liteBluetooth;

// 检查当前手机是否支持ble 蓝牙,如果不支持退出程序

if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {

Toast.makeText(this, "ble_not_supported", Toast.LENGTH_SHORT).show();

}

// 初始化 Bluetooth adapter, 通过蓝牙管理器得到一个参考蓝牙适配器(API必须在以上android4.3或以上和版本)

// 1.获取bluetoothAdapter

final BluetoothManager bluetoothManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);

mBluetoothAdapter = bluetoothManager.getAdapter();

// 2.检查设备上是否支持并开启蓝牙

if (mBluetoothAdapter == null) {

Toast.makeText(this, "ble_not_supported", Toast.LENGTH_SHORT).show();

return;

}

//创建liteBluetooth的单例对象,(BleUtil是自己写的类,实现单例的)

if (liteBluetooth == null)

liteBluetooth = BleUtil.getInstance(getApplicationContext());

// 为了确保设备上蓝牙能使用, 如果当前蓝牙设备没启用,弹出对话框向用户要求授予权限来启用

/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值