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的rssipublic 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详细信息读写

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

  1. Android 开发学习(三)

    文章目录 1. ListView 的 使用 2. RecyclerView 的 使用 (推荐) 3. 动画 3.1 逐帧动画 3.2 补间动画 3.2.1 补间动画 之 alpha透明度 3.2.2 ...

  2. Android多媒体学习三:实现自己的Camera

    Android自带的Camera应用虽然可以满足大多数情景,但是其灵活性上还有不足.但是Android允许我们定制自己的Camera. 在Android的hardware包中有一个Camera类.这个 ...

  3. NORDIC Thing:52 Android App 学习之二:手机 App 蓝牙服务发现及数据读取

    1. 选中扫描到的 Thingy 52 蓝牙设备; 文件: ScannerFragment.java public Dialog onCreateDialog(final Bundle savedIn ...

  4. 一站式学习Wireshark(七):Statistics统计工具功能详解与应用

    Wireshark一个强大的功能在于它的统计工具.使用Wireshark的时候,我们有各种类型的工具可供选择,从简单的如显示终端节点和会话到复杂的如Flow和IO图表.本文将介绍基本网络统计工具.包括 ...

  5. 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

    目录 蓝牙配对和绑定 蓝牙4.0 BLE 信道(RF Channel) BLE协议栈分层 PHY层(Physical layer 物理层) LL层(Link Layer 链路层) HCI层(Host ...

  6. ESP32 BLE 学习:关于 RSSI 与发射功率

    ESP32 BLE 学习:关于 RSSI 与发射功率 文章目录 ESP32 BLE 学习:关于 RSSI 与发射功率 蓝牙发射功率 RSSI(接收的信号强度指示) API 函数设置和获取 发射功率 蓝 ...

  7. Android BLE学习(一): Android搜索BLE设备

    http://my.csdn.net/lidec 背景 总结一下最近ble的学习情况.自从入手ble 51822开发板后就开始不停加班,中途出于好奇,业余时间写了一些单片机上json解析相关的东西,妄 ...

  8. Android BLE学习(二): Android与51822蓝牙模块通信流程的实现与分析

    http://www.itkeyword.com/doc/7802444777000507x499/android-BLE 背景 上一节介绍了蓝牙Android搜索BLE模块方法,搜索到蓝牙模块后,我 ...

  9. android 蓝牙 广播,android蓝牙BLE(三) —— 广播

    ​ 在蓝牙开发中,有些情况是不需要连接的,只要外设广播自己的数据即可,例如苹果的ibeacon.自Android 5.0更新蓝牙API后,手机可以作为外设广播数据. 广播包有两种: 广播包(Adver ...

最新文章

  1. python 文件操作 os.walk() 方法
  2. Pycharm-列出代码结构
  3. Github中Tag的使用
  4. 初学者python笔记(字符串用法解析)
  5. aix 添加lv 大小
  6. 2021-11-02为了升级win11去升级BIOS遇到的坑
  7. PLSQL 1207 64位 配置
  8. 安装.NET Framework 4失败解决办法
  9. word退出时,提示”更改会影响共用模板normal.dotm“的处理办法
  10. SAR图像的相干斑噪声
  11. 20170223找女朋友之路思考总结
  12. HL7(Health Level Seven)
  13. 时区相关-这一篇全了解
  14. cdh 6哈希验证失败解决方法
  15. MMO游戏服务器从零开发(架构篇)- 网络部分
  16. 关于电影票对接公众号cps
  17. 1分钟教会你二进制撩妹(汉)读心术
  18. nodej.s 搭建一个socket服务(原生和sockjs)
  19. 第十二次ScrumMeeting博客
  20. centos7 离线安装docker和docker-compose

热门文章

  1. 微信小程序之通过Canvas生成图片保存到手机相册
  2. buildroot介绍
  3. java如何转成jar包,修改及反编译可运行Jar包实现过程详解
  4. 索泰显卡超频软件测试要多少时间,索泰显卡专用超频软件_FireStorm显卡超频 V2.0.1 官方版...
  5. 沈石溪事件持续发酵 韩国将严查体育界暴力事件
  6. PostgreSQL DISTINCT用法
  7. 计算结构体、数组、指针的sizeof
  8. restful 接口 安全性设计
  9. 核心技术靠化缘是要不来的——自己动手写ORM框架
  10. JS获取当前时间date()的用法