Android BLE 蓝牙低功耗教程,中央BluetoothGatt和周边BluetoothGattServer的实现

2023-11-07

http://blog.csdn.net/wave_1102/article/details/39271693


Android4.3 规范了BLE的API,但是直到目前的4.4,还有些功能不完善。

在BLE协议中,有两个角色,周边(Periphery)和中央(Central);周边是数据提供者,中央是数据使用/处理者;在iOS SDK里面,可以把一个iOS设备作为一个周边,也可以作为一个中央;但是在Android SDK里面,直到目前最新的Android4.4.2,Android手机只能作为中央来使用和处理数据;那数据从哪儿来?从BLE设备来,现在的很多可穿戴设备都是用BLE来提供数据的。

一个中央可以同时连接多个周边,但是一个周边某一时刻只能连接一个中央。

大概了解了概念后,看看Android BLE SDK的四个关键类(class):

a) BluetoothGattServer作为周边来提供数据;BluetoothGattServerCallback返回周边的状态。

b) BluetoothGatt作为中央来使用和处理数据;BluetoothGattCallback返回中央的状态和周边提供的数据。

因为我们讨论的是Android的BLE SDK,下面所有的BluetoothGattServer代表周边,BluetoothGatt代表中央。

          

一.创建一个周边(虽然目前周边API在Android手机上不工作,但还是看看)

 a)先看看周边用到的class,蓝色椭圆


b)说明:

每一个周边BluetoothGattServer,包含多个服务Service,每一个Service包含多个特征Characteristic。

1.new一个特征:character = new BluetoothGattCharacteristic(
UUID.fromString(characteristicUUID),
BluetoothGattCharacteristic.PROPERTY_NOTIFY,
BluetoothGattCharacteristic.PERMISSION_READ);

2.new一个服务:service = new BluetoothGattService(UUID.fromString(serviceUUID),
BluetoothGattService.SERVICE_TYPE_PRIMARY);

3.把特征添加到服务:service.addCharacteristic(character);

4.获取BluetoothManager:manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

5.获取/打开周边:BluetoothGattServer server = manager.openGattServer(this,
new BluetoothGattServerCallback(){...}); 

6.把service添加到周边:server.addService(service);

7.开始广播service:Google还没有广播Service的API,等吧!!!!!所以目前我们还不能让一个Android手机作为周边来提供数据。


二.创建一个中央(这次不会让你失望,可以成功创建并且连接到周边的)

a)先看看中央用到的class,蓝色椭圆



b)说明:

为了拿到中央BluetoothGatt,可要爬山涉水十八弯:

1.先拿到BluetoothManager:bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

2.再拿到BluetoothAdapt:btAdapter = bluetoothManager.getAdapter();

3.开始扫描:btAdapter.startLeScan( BluetoothAdapter.LeScanCallback);

4.从LeScanCallback中得到BluetoothDevice:public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {.....}

5.用BluetoothDevice得到BluetoothGatt:gatt = device.connectGatt(this, true, gattCallback);

终于拿到中央BluetoothGatt了,它有一堆方法(查API吧),调用这些方法,你就可以通过BluetoothGattCallback和周边BluetoothGattServer交互了。


Demo工程下载地址:http://download.csdn.NET/detail/jimoduwu/7072515


From: http://blog.csdn.Net/jimoduwu/article/details/21604215


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android BLE 蓝牙低功耗教程,中央BluetoothGatt和周边BluetoothGattServer的实现 的相关文章

  • 蓝牙模块AT模式AT指令

    文章目录 进入AT模式的两种方法 HC 05的AT指令 HC 06的AT指令 进入AT模式的两种方法 经过摸索 这里总结两种进入AT模式的方法 与USB转TTL相连后接入电脑 将波特率设置成9600 模块指示灯快闪 这时再按下模块的按钮便进
  • 【低功耗蓝牙】⑤ 蓝牙HID协议

    摘要 本文章主要介绍了蓝牙HID协议的实现方法 基于ESP32平台实现了蓝牙键盘 蓝牙鼠标 蓝牙自拍杆和蓝牙游戏手柄等设备 是初学者学习BLE HID协议很好的参考文章 HID设备 HID Human Interface Device 人体
  • Android 蓝牙 hfp音频连接

    Android 蓝牙 hfp音频连接 1 连接音频 2 音频连接状态 该文章基于Android Q 1 连接音频 在手机音频正常连接时 接通电话 点选蓝牙通话 mDeviceManager connectAudio返回true 如果是之前默
  • 蓝牙BLE信道频率

    蓝牙信道规定在物理层 有以下几个特点 调制方式 GFSK 工作在2 4GHz ISM频段 频率范围 2 400 2 4835GHz ISM频段 Industrial Scientific Medical Band 主要开放给工业 科学和医用
  • BLE 蓝牙的一些心得总结

    1 TI 的CC2541协议栈开发教程 https blog csdn net feilusia category 5630377 html 2 以下是我对BLE 蓝牙的一些理解 如果有什么不对的地方 恳请大佬们指点
  • 低功耗蓝牙(BLE)

    https my oschina net tingzi blog 215008 低功耗蓝牙包括的术语及概念 如上图所示 使用低功耗蓝牙可以包括多个Profile 一个Profile中有多个Service 一个Service中有多个Chara
  • JDY-31蓝牙模块使用指南

    前言 本来是想买个hc 05 这种非常常用的模块 但是在优信电子买的时候 说有个可以替代的 没注意看 买回来折腾半天 这个模块是从机模块 蓝牙模块分为主机从机和主从一体的 主机与从机的区别就是 主机可以主动连接从机 但是从机不能主动连接主机
  • ESP32 LVGL8.1 实现太空人显示(29)

    文章目录 一 ESP32 LVGL工程配置 1 1从库中下载LVGL代码 1 2配置适合ESP32 液晶屏 1 3编译下载测试 二 GIF图片处理 2 1下载gif图片 2 2将gif图片按照帧率导出成图片 2 3导出的图片背景处理 2 4
  • Android 蓝牙串口通信Demo

    目录 一 前言 二 效果图 三 源码 带注释 1 布局代码 2 Java代码 3 权限声明 四 注意 五 项目源码下载 一 前言 在学校和机电的同学组队准备做一个智能小车去参加比赛 需要我开发一个小车的控制app 所以我开始学习蓝牙串口通信
  • BLE芯片PHY6222的ANCS代码解读

    BLE芯片PHY6222的ANCS代码解读 ANCS是什么 实现原理 PHY6222软件实现框架 要获取的详细信息 开通知源 通知源的解析 数据源的解析 ANCS是什么 ANCS 苹果通知中心 Apple Notification Cent
  • i12蓝牙耳机使用(小米手机)

    一 操作位置 操作点击按键在无用孔位和喇叭位之间 二 听音乐 项目 左耳 右耳 单击 暂停播放 暂停播放 双击 降低音量 提升音量 三击 小米手机打开小爱 小米手机打开小爱 长按 关耳机 关耳机 三 打电话 项目 打入 接听时 单击 接听
  • STM32 BlueNRG-1低功耗介绍,包含CPU堆栈恢复和外设恢复

    概述 在消费类电子产品形态中 通常用锂电池 纽扣电池 干电池等设备供电 需要现有供电情况下能连续使用几个月或者1年 而这些供电电源通常只有20 40mAh左右的电 要达到要求的运行时间 通常要求平均功耗在uA级别 芯片正常工作下的工作级别基
  • 蓝牙PHY6222添加OTA升级功能

    主要步骤 1 代码添加 ota app service 2 keil软件添加ota app代码 3 烧录软件添加ota设置 4 手机ota app升级 准备 奉加微电子官网下载6222的代码SDK V3 0以上 下载官网的PhyPlusKi
  • 蓝牙DA14580学习教程(附开源可编程手环/手表全套学习资料下载地址)

    DA14580学习 DA14580用来干什么 1 超长待机的智能手环 手表和其他智能穿戴设备 2 智能鼠标 键盘 遥控器 触控板 语音和手势识别控制板等 3 计步 如小米手环 活动和睡眠监测器 血压血糖心率监测器 4 多感测器运动电脑平台
  • 基于snooplog分析蓝牙连接过程,进一步学习蓝牙协议栈

    一 什么是BT snoop log 首先问题 1 为什么远端发来的消息没有收到 2 为什么搜索不到设备 3 为什么连不上 4 总之 研发过程中会遇到很多奇奇怪怪的问题 我们无法通过现象去分析原因 也不可能再过一遍代码吧 这时候需要再某些代码
  • 蓝牙解析(part7):BLE的连接

    转自Wowo大神的http www wowotech net bluetooth ble connection html 1 前言 了解蓝牙的人都知道 在经典蓝牙中 保持连接 Connection 是一个相当消耗资源 power和带宽 的过
  • pulseaudio使用过程中遇到的问题

    W pulseaudio main c This program is not intended to be run as root unless system is specified E pulseaudio core util c H
  • 蓝牙设备中的Device UUID 与 Service UUID

    Device UUID也可以被称作为DeviceID Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址 相对固定 iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间
  • 蓝牙之四-Handler

    Handler机制 Handler允许用户发送和处理Message以及线程MessageQueue相关的可运行对象 每个Handler实例都对应一个单线程以及该线程的MessageQueue 当创建新的Handler时 该Handler将被
  • android bluetooth UUID蓝牙查询表

    UUID是 Universally Unique Identifier 的简称 通用唯一识别码的意思 对于蓝牙设备 每个服务都有通用 独立 唯一的UUID与之对应 也就是说 在同一时间 同一地点 不可能有两个相同的UUID标识的不同服务 以

随机推荐

  • calendar 字符串日期转时间戳

    public class TestDate public static void main String args SimpleDateFormat dateFormat new SimpleDateFormat yyyy MM dd 指定
  • github上传本地项目代码

    github上传本地项目代码 小白教程 github上申请一个账号 https github com 下载一个git工具 https gitforwindows org 进入github首页 点击新项目new repository 如下图所
  • Java中Comparable和Comparator区别小结

    阅读目录 一 Comparable简介 二 Comparator简介 三 Comparable和Comparator区别比较 回到顶部 一 Comparable简介 Comparable是排序接口 若一个类实现了Comparable接口 就
  • Codeforces Round 883 (Div. 3)

    A Rudolph and Cut the Rope 只需要按照钉子距离的高度a i 和绳子的长度b i 的差值进行排序即可 代码 int n pii a N bool cmp pii a pii b return a x a y
  • python爬虫总是爬不到数据,你需要解决反爬虫了

    爬虫最讨厌的就是反爬虫 但是如果没有反爬虫的存在的 那么大家都可以随随便便就进行网络爬虫 那么服务器又怎么支撑得起来呢 那么又怎么彰显我们的能力呢 所以说反爬虫是一个门槛 跨过这一个门槛就可以轻松掌握爬虫的技术了 跨不过那么你就一直都在起点
  • element-ui中el-input输入时自定义校验,并且调后端接口查重

    一 实现效果 1 只能属于正整数 2 只能属于7位或者9位 3 输入时实时校验 4 查重 不能输入列表存在的 除自己之外
  • 博图v16组态wincc_「博图+仿真+授权」西门子软件安装指南及注意事项

    写在前面 最近一段时间 很多小伙伴通过我们公众号 thinger swj的文章开始学习西门子PLC及西门子仿真环境搭建 但是很不幸的是 由于系统原因或者其他未知原因 经常会遇到各种各样的问题 因此本文主要针对博图V16安装 PLCSIM A
  • C++默认构造函数提供机制

    C 的构造函数有 默认构造函数 析构函数 拷贝构造函数 拷贝赋值函数 移动构造函数 移动赋值函数 生成这些特殊成员函数 或不生成 的规则比较复杂 每个特殊成员函数有几种不同的状态 隐式声明还是用户声明 默认提供还是用户提供 正常状态还是删除
  • vue3-element-plus,控制表格多选的数量

    1 需求描述 控制表格的多选 最多只能选择5条数据 并且其他项禁用 2 需求描述
  • Hadoop002-hdfs架构

    1 名字节点 namenode 可以看做是分布式文件系统中的管理者 它1负责管理文件系统命名空间 集群和数据块复制等 2 数据节点 datanode 是文件存储的基本单位 它以数据块的形式保存了HDFS中文件的内容和数据块的数据校验信息 3
  • 52条SQL语句性能优化策略,建议收藏

    点上方蓝色 菜鸟学Python 选 星标 公众号 重磅干货 第一时间送到 转自 SimpleWu 链接 cnblogs com SimpleWu p 9929043 html 本文会提到 52 条 SQL 语句性能优化策略 1 对查询进行优
  • Ansible实现自动部署简述

    一 操作过程 以JDK安装部署过程为例 1 服务器准备 为受管服务器配置公钥进行连接 安装命令 yum y install epel release yum y install ansible 生成公钥 ssh keygen t rsa P
  • 抓取招聘信息:从招聘网站获取职位信息

    目录 1 抓取招聘信息简介 2 准备工作 3 分析招聘网站结构 4 编写招聘信息爬虫
  • 怎么选择俄罗斯服务器?要注意什么?

    一 俄罗斯服务器的性能 为了保证网络能正常运转 选择的俄罗斯服务器首先要确保稳定 因为一个性能不稳定的服务器 即使配置再高 技术再先 进 也不能保证网络能正常工作 严重的话可能给使用者造成难以估计的损失 另外一方面 性能稳定的服务器还意味着
  • vscode高亮插件与自定义注释代码插件说明

    一 highlight icemode插件 选中高亮显示 highlight icemode插件如下图所示 2 插件安装好后 需要配置一下高亮显示颜色 如下图所示 二 snippet插件 增加自定义注释说明 snippet插件如下图所示 2
  • 模拟电路技术之基础知识(三)

    基放的进阶 笔记总目录 文章目录 第三章 多级放大电路 多级放大电路的耦合方式 直接耦合 阻容耦合 变压器耦合 光电耦合 多级放大电路的动态分析 直接耦合放大电路 直流耦合放大电路的零点漂移及其产生的原因 差分放大电路 电路的组成 长尾式差
  • C++类字节对齐

    在c语言中 结构体有字节对齐 c 中的类也有字节对齐 在c 里的字节对齐和struct里类似下面我们看看字节对齐的规则和许多实际的计算机系统对基本类型数据在内存中存放的位置有限制 它们会要求这些数据的首地址的值是某个数k 通常它为4的倍数
  • 俄罗斯方块系列

    1 Qt学习之路 13 简易俄罗斯方块 http www cnblogs com tornadomeet archive 2012 09 22 2698337 html 2 Qt5实现的俄罗斯方块 http download csdn ne
  • HTTP Status 500 - An exception occurred processing JSP page /index.jsp at line 177

    这个是什么错啊 大神们帮解决一下可以吗 type Exception report message An exception occurred processing JSP page index jsp at line 177 descri
  • Android BLE 蓝牙低功耗教程,中央BluetoothGatt和周边BluetoothGattServer的实现

    http blog csdn net wave 1102 article details 39271693 Android4 3 规范了BLE的API 但是直到目前的4 4 还有些功能不完善 在BLE协议中 有两个角色 周边 Periphe