安卓 蓝牙BLE

蓝牙BLE全称是 Bluetooth Low EnergyBLE是蓝牙4.0的核心Profile,主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于小功率的穿戴设备。

Android 4.3才开始支持BLE API,所以需要测试时使用安卓4.3及其以上的手机设备,而BLE 终端必须是一个蓝牙4.0的设备。

以下所示是BLE的一些属性信息。

如上所示:

使用低功耗蓝牙可以包括多个Profile,一个Profile中有多个Service,一个Service中有多个Characteristic,一个Characteristic中包括一个value和多个Descriptor。这个和普通蓝牙基本一样,普通蓝牙描述可以看安卓普通蓝牙相关问题

 

Android中进行蓝牙BLE开发需要使用到的类的执行过程是:

1、使用BluetoothAdapter.startLeScan来扫描低功耗蓝牙设备

2、在扫描到设备的回调函数中会得到BluetoothDevice对象,并使用BluetoothAdapter.stopLeScan停止扫描

3、使用BluetoothDevice.connectGatt来获取到BluetoothGatt对象

4、执行BluetoothGatt.discoverServices,这个方法是异步操作,在回调函数onServicesDiscovered中得到status,通过判断 是否等于BluetoothGatt.GATT_SUCCESS来判断查找Service是否成功

5、如果成功了,则通过BluetoothGatt.getService来获取BluetoothGattService

6、接着通过BluetoothGattService.getCharacteristic获取BluetoothGattCharacteristic(根据读写的uuid属性,去匹配相对应的设备的uuid的读写属性,即可匹配成功进行下一步的读写操作,在写之前一定要进行notify,唤醒连接)

7、然后通过BluetoothGattCharacteristic.getDescriptor获取BluetoothGattDescriptor

总结

一定要多了解蓝牙的相关协议和具体原理,才能够准确的与给定的设备进行连接和传输数据同时,在不同的安卓手机型号上,一定要开启蓝牙权限,有的还需要开通定位权限。安卓手机型号太多,所以可能会出现很多的奇怪问题,当然,这也与需要请求的设备有关,比如我现在做的pos机,会有很多的蓝牙问题。国外的一些手机用的更奇葩,所以需要很多的适配。而IOS主要用的是BLE的蓝牙,小功率的保持连接和传输,但是对于打印机而言,使用ios的BLE蓝牙连接打印机进行传输,尤其是打印图片会发现打的很慢,因为传输的数据大,BLE的效率低,只适用于低功耗的,所以此时,可能需要一些相关认证的BLE蓝牙,才能解决打印慢的问题,这也需要大家了解更多的知识咯。

大家如果有什么蓝牙问题,欢迎前来讨论。期望我们共同进步

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值