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

在看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对象

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2. *第一个参数为上下文,context 
  3. *第二个参数为autoConnect,布尔值 
  4. *第三个参数为BluetoothAdapter.LeScanCallback对象,连接后回调,在回调中可以获取到手机的蓝牙连接状态 
  5. */  
  6. mBluetoothGatt = device.connectGatt(BluetoothCODAService.thisfalse, mGattCallback);  

  • 在连接成功后就可以搜索服务进行通信了,利用获取到的BluetoothGatt对象,mBluetoothGatt.discoveryServices()可以搜索服务,在搜索到服务后会触发onServicesDiscovered()方法,若status位BluetoothGatt.GATT_SUCCESS代表搜索成功
  • 在搜索到服务后调用mBluetoothGatt.getService()来获取BluetoothGattService列表
  • 单个BluetoothGattService对象调用gattService.getCharacteristics()方法获取到BluetoothGattCharacteristic列表
  • 获取到特征之后可以调用API的方法来获取所需要的信息
Android蓝牙BLE低功耗相关简单总结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值