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的实现 的相关文章

  • Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈

    文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU Primary Advertising
  • Android(Java)开发之获取BLE广播包(扫描后获取:广播数据+扫描应答数据+RSSI)

    一 安卓BLE的广播包数据从哪获取 通常 安卓APP读写BLE设备的数据都是建立连接后通过GATT获取或修改 但是 BLE设备向外广播时本身会携带一部分有用信息 如将传感数据存放到广播包的自定义数据段 最近接触的一个iBeacon Eddy
  • 蓝牙BLE信道频率

    蓝牙信道规定在物理层 有以下几个特点 调制方式 GFSK 工作在2 4GHz ISM频段 频率范围 2 400 2 4835GHz ISM频段 Industrial Scientific Medical Band 主要开放给工业 科学和医用
  • Matter (CHIP) 从入门到入土 (一)

    文章目录 前言 架构 规范 网络拓扑结构 Single network Star network topology matter 设备发现 using BLE using WIFI Using Existing IP bearing Net
  • 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
  • 蓝牙HCI Dongle说明

    Chipsets 本项目主要实现了蓝牙Host协议栈 并没有包含Controller部分 如果需要实现蓝牙交互 按照Core Spec 需要通过HCI接口连接其他蓝牙芯片实现蓝牙功能 由于HCI接口层是Spec有规定的 所以只要符合HCI接
  • Ble Mesh的Generic Model ID&Opcode

    MODEL ID 标准的为16为 自定义的Vendor Model ID为32位 Model Group Model Name SIG Model ID Generic Generic OnOff Server 0x1000 Generic
  • 蓝牙的知识总结(1)

    1 SoC System on Chip 称为系统级芯片 一个产品 是一个有专用目标的集成电路 其中包含完整系统并有嵌入软件的全部内容 同时它又是一种技术 用以实现从确定系统功能开始 到软 硬件划分 并完成设计的整个过程 从狭义角度讲 它是
  • Bes 充电盒协议总结

    1 开盖 上升沿信号开机 a 充电脚设成3 0 v 然后延迟160ms b 充电脚设成5v 然后延时100 ms c充电脚设成3 0 v 2 合盖 a 开5v 然后延时3s b 关5v 然后延时45ms c 发送复位pattern 0101
  • Linux蓝牙系统(3) Linux 命令

    Linux蓝牙系统 3 Linux 命令 2010 09 27 10 45 44 分类 LINUX Andrew Haung bluedrum 163 com 一 Linux对于蓝牙的支持 参见如下协议图 在HCI界面之上需要软件来实现 1
  • STM32+HC-05蓝牙模块学习与使用

    HC 05蓝牙串口通信 HC05模块是一款高性能主从一体蓝牙串口模块 是一种集成蓝牙功能的PCBA板 用于短距离无线通信 十分方便 从某宝商家那里可以看到 蓝牙可以使用多种方法使用 这里我使用的是蓝牙主机连接 所以我们这里需要准备的器件 两
  • BT问题调试 -- HFP(AT指令)

    HFP基本知识 HFP的两个角色 AG和HF HFP AG角色发起连接请求 HFP HF角色发起连接请求 针对HFP的注意事项 必须先有SLC的建立过程 该过程可以由HF AG的任何一方发起 AT COPS用来查询运营商网络名称 AG的回应
  • nRF52832学习记录(一、外设初识之 GPIOTE)

    添加GPIO和GPIOTE寄存器表 对于应用的理解对着寄存器查看会比较明了 这个不管是在哪款芯片上都是如此 2021 9 27 这些年蓝牙5 0的应用越来越多 最近也是想着把以前Enocean的低功耗设备有过的产品 用蓝牙做一套匹配的版本
  • 【转载】浅谈蓝牙 Mesh 组网技术

    本文转载自 Eren https www erenship com posts 63c7 html 蓝牙技术联盟官方网址 https www bluetooth com zh cn 蓝牙技术联盟公众号 BluetoothSIG 蓝牙技术联盟
  • Re: Programming in C with Bluetooth Sockets

    Re Programming in C with Bluetooth Sockets This is the function run by the bluetooth device that will recieve the data c
  • BES系列蓝牙开发总结

    博文索引 框架 BES2300X BES2500X 框架解析 一 UI及外围功能模块 BES2300X BES2500X UI 按键 提示音 指示灯 BES2300X BES2500X UI 电池管理模块 蓝牙操作及协议连接 数据流及数据编
  • HFP协议

    通话专题HFP协议学习总结 一 配置和角色 二 HFP的连接 2 1服务级连接建立 2 1 1 服务发现和RFCOMM的连接 2 1 2 支持的特性交换 2 1 3 codec协商 2 1 4 HF指示器 2 1 5 AG指示器 2 1 6
  • win32下Qt5BLE蓝牙开发笔记

    BLE简介 BLE蓝牙是蓝牙2 0以上的蓝牙模块 经典蓝牙是蓝牙2 0以下的蓝牙 蓝牙分为客户端和服务器两端 经典蓝牙可以通过socket编程进行客户端与服务器之间的通信 与网络socket相似 BLE蓝牙则无法使用这种方式进行通信 BLE
  • android bluetooth UUID蓝牙查询表

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

    和计算机网络IP地址类似 BLE也会有属于自己的一个地址 BLE设备地址 蓝牙地址 也称作 Bluetooth MAC Media Access Control 地址 是一个48位的唯一硬件标识符 用于在蓝牙设备之间建立连接和通信 它由全球

随机推荐

  • 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