前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android蓝牙BLE低功耗相关简单总结

Android蓝牙BLE低功耗相关简单总结

作者头像
fanfan
发布2022-05-07 14:43:16
9640
发布2022-05-07 14:43:16
举报
文章被收录于专栏:编程思想之路编程思想之路

在看Android4.42的源码时看到有添加对BLE设备的处理,看的一头雾水,多方百度,终于有种柳暗花明的感觉。

本文总结来源于百度多篇文章,欢迎转载,分享交流

BLE蓝牙概念

BLE:Bluetooth low Energy  低能耗蓝牙,实现低成本,短距离的无线传输,传输速率于传统蓝牙相同位2.4GHZ,采用非常快速的连接方式,适用于发送数据量少而且发送次数较少的蓝牙通信

相比于传统蓝牙

  • BLE蓝牙设备的传输距离最远可达100米
  • 发送数据所需时间短(<3ms)
  • 响应延时时间短(6ms)
  • 低能耗
  • 主要应用于只能穿戴,汽车,家用电子等

BLE通信协议

在进行BLE通信时通信双方分为外围(Periphery)和中央(Central)

1,外围用于提供数据

2,中央用于接收和处理数据

相当于集中式布局,中央可接收多个外围的数据,但外围只能向一个中央发送数据,也就是说一个中央同时可连接多个外围设备,但一个外围设备只能连接一个中央

3,主要类

i>,BluetoothGattServer:外围设备要发送的数据

ii>,BluetoothServerCallback:返回外围设备的状态

iii>,BluetoothGatt:中央使用和处理数据

iv>,BluetoothGattCallBack:返回中央设备的状态

使用ble通信可以包含多个Profile,一个profile可以包含多个service,一个service可以包含多个特征characteristic。

目前所使用的Android手机只能作为中央使用和处理数据,接下来介绍下如何去创建一个中央

创建中央(Central)

  • 在配置文件中添加蓝牙的权限
  • 获取本地蓝牙适配器mBluetoothAdapter = BluetoothAapter.getDefaultAdapter()
  • 扫描附近可用的BLE蓝牙设备mBluetoothAdapter.startLeScan(mLeScanCallback);传入的参数对象为BluetoothAdapter.LeScanCallback。
  • 搜索到ble设备时会回调onLeScan方法,获取到BluetoothDevice
  • 利用所获取的device调用连接方法device.connectGatt(......)方法,方法返回BluetoothGatt对象
/**
*第一个参数为上下文,context
*第二个参数为autoConnect,布尔值
*第三个参数为BluetoothAdapter.LeScanCallback对象,连接后回调,在回调中可以获取到手机的蓝牙连接状态
*/
mBluetoothGatt = device.connectGatt(BluetoothCODAService.this, false, mGattCallback);
  • 在连接成功后就可以搜索服务进行通信了,利用获取到的BluetoothGatt对象,mBluetoothGatt.discoveryServices()可以搜索服务,在搜索到服务后会触发onServicesDiscovered()方法,若status位BluetoothGatt.GATT_SUCCESS代表搜索成功
  • 在搜索到服务后调用mBluetoothGatt.getService()来获取BluetoothGattService列表
  • 单个BluetoothGattService对象调用gattService.getCharacteristics()方法获取到BluetoothGattCharacteristic列表
  • 获取到特征之后可以调用API的方法来获取所需要的信息
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档