Android BLE学习(三):编写自己的 BLE蓝牙读写工具(功能仿照nrf master control panel)

http://my.csdn.net/lidec


背景

由于nordic官方的nrf master control panel只提供了apk,很多同学学习起来都得自己摸索蓝牙的读写,项目中整理了BLE模块的基本读写方法以及一些常用的UUID,并且抽取了一些蓝牙操作的流程,方便Android app代码开发,希望能帮到正在学习BLE蓝牙的同学们。

上一篇文章总结了51822 BLE蓝牙模块的连接以及一些蓝牙协议相关的知识,本文将综合前述内容,参照官方的nrf master control panel,实现Android手机与蓝牙模块的搜索,连接,及相关的读写。

项目地址:https://git.oschina.net/vonchenchen/BLE_Assitant.git 
apk下载:http://download.csdn.net/detail/lidec/9468739

流程

activity与蓝牙服务通信

ActivityActivityBLEControlServiceBLEControlService蓝牙功能服务,数据变化发送相应广播BLEStatusChangeReceiver监听,回调OnBLEStatusChangeListener 传递数据给Activity

监听蓝牙服务的变化,变化后给BLEStatusChangeReceiver发送广播

BLEControlServiceBLEControlServiceMyBluetoothGattCallbackMyBluetoothGattCallbackgatt数据变化回调给BLEStatusChangeReceiver发送广播

通过回调函数获取蓝牙变化后的数据,这样就可以灵活将不同类型显示在不同地方。这样比较方便模仿官方master的蓝牙日志功能,同时兼顾在其他控件中显示数据,增强了程序的灵活性。

蓝牙写入与读取写入特征值和描述符数据或者其他数据时,都需要在BLEControlService中提供相应的方法,而其底层实现需要调用mBluetoothGatt中提供的方法。具体功能见mBluetoothGatt提供的数据。此处我们提供了以下几个示例方法

public boolean connect(final String address)  蓝牙连接

public void disconnect()                      蓝牙断开

public void close()                           蓝牙关闭

public void readCharacteristic(BluetoothGattCharacteristic characteristic)    读取readCharacteristic的信息

public void writeCharacteristic(BluetoothGattCharacteristic characteristic, byte[] value)  写入readCharacteristic的信息

public void readDiscriptor(BluetoothGattDescriptor descriptor) 读取描述符信息

public void readRemoteRssi()    读取ble的rssi

public void enableXXXXXNotification()  将某Characteristic设置为Notification


 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

当我们接受到数据时,就会触发MyBluetoothGattCallback中的方法,获取到接收的数据。

项目效果

这里写图片描述 
BLE设备列表

这里写图片描述 
数据变化列表

这里写图片描述

这里写图片描述 
BLE详细信息读写

这里写图片描述


猜你喜欢

转载自blog.csdn.net/lilifang_2011/article/details/72897370