Android开发蓝牙基础总结

Android开发蓝牙基础总结,Android开发者跳槽面试 [图片上传失败…(image-d5e4c6-1606809640424)] 一个广播包是由若干个广播单元 AD Structure 构成的。每个 AD Structure 的组成是:第一个字节表示长度值 length,表示接下来的 length 个字节是数据部分,数据部分的第一个字节表示数据的类型 AD Type,AD Type 决定了下面的数据代表了什么,关于每个数值代表的数据类型见官方文档,剩下的 length - 1 个字节表示真正的数据 02 01 06 02 表示接下来的数据有两个字节 01 表 阅读详情

首先要搞清楚一点,我们在 Android 中通过 SDK 获得的蓝牙广播包是经过底层的 SDK 给我们处理过的,是一个长度为 62 的字节数组。这个长度为 62 的字节数组是怎么来的呢?

想要搞清楚这个问题,首先我们要明白 iBeacon 向外发送的最原始的广播包是什么样的?

首先我们要搞清楚一点,蓝牙在向外发送数据的时候是分成两个部分的一个就是普通的广播包还有一个叫做应答包。这是蓝牙协议的规定内容,针对于所有的蓝牙设备(iBeacon 只是蓝牙设备的一种)

  • 普通的广播包格式是定义好的,长度为 30 byte
  • 应答包中的内容是可以由 蓝牙的各个制造厂商自己向里面放数据的。最大长度是 32 byte

需要注意的是,发送数据是从低位到高位一次发送,所以接收到的数据要返回来按字节拼接,例如接收到的MAC为 8b 03 00 b0 01 c2,那么实际的MAC为 c2:01:b0:00:03:8b

蓝牙广播包

首先我们来看一下第一个蓝牙广播包(来自 iBeacon 设备),一共 59 个字节

04 3e 38 0d 01 13 00 01 8b 03 00 b0 01 c2 01 00 ff 7f af 00 00 00 00 00 00 00 00 00 1e       29个字节    
02 01 06 1a ff 4c 00 02 15 fd a5 06 93 a4 e2 4f b1 af cf c6 eb 07 64 78 25 27 11 4c b9 c5  30个字节

第一行的内容可以认为是蓝牙广播包中的附带信息,通过 Android SDK 是没法看到的,第二行是对应我们 Android SDK 中收到的广播包中的前一部分。

第一个字节是HCI Packet Type,04表示这是HCI Event;剩下的58bytes则是HCI Event的具体内容
第二个字节是EventCode,3e是此事件的代码;第三个字节是Parameter Length,0x38(十进制56)表示后面数据长度56bytes
第四个字节是SubEvent,0d表示这是LE Extended Advertising Report;第五个字节是Num Reports,数值为01
1b 00这两个字节代表Event Type,由于发送数据都是按字节发送以及从低位向高位发送,因此真实值是 001b
01 表示这是随机设备地址
8b 03 00 b0 01 c2 是此设备的MAC,根据从低向高的发送规则,所以真实MAC是 c2:01:b0:00:03:8b
01 代表首要广播信道的带宽
00 代表次要广播信道的带宽,此处表示不使用次要信道
ff 表示广播SID
7f 代表Tx Power的大小,此处是127dbm
af 代表RSSI的大小,此处是-81d
Android IBeacon iBeacon的工作原理是基于Android的低功耗蓝牙BLE,和蓝牙不同的是iBeacon不用配对和连接过程,iBeacon基站通过BLE蓝牙的广播频道不断向外发送位置信息,当智能设备进入设定区域时,不需要连接就能够收到信号,只要满足iBeacon技术标准的都可以使用。IBeacon可以通过rssi来判断设备与基站的距离,用于室内的定位。 一、IBeacon UUID:厂商识别号 Major:相当于群组号,同一个组里Beacon有相同的Major Minor:相当于识别群组里单个的... 阅读详情

相关推荐

Android 解析蓝牙广播数据(1)

***//***//**data.*//***/@Nullable/***//***/@Nullable/***//***/@Nullable/***//**order.@hide*/Log.e(TAG + “MYX23P”, “进入parseFromBytes”);try {break;break;break;break;break;break;break;

2401_84121958的博客 796

Android低功耗蓝牙总结

1a 表示接下来的数据有 26 字节FF 表示数据类型,此处类型是 厂商自定义数据类型(这里的厂商指的是苹果公司,因为 iBeacon 是苹果公司提出的)4C 00 表示公司的 ID,此处的 004C 代表苹果公司02 15 Beacon 的标识位,必须是这样的表示 Beacon UUID27 11 是 major 的值4C b9 是 minor 的值C5 表示 Measured Power 表示的是此设备在 1 米处的 RSSI 值,用于距离测算。

2401_85767131的博客 1380

安卓蓝牙开发(1)BLE蓝牙基础知识和一般开发流程

一、BLE(Bluetooth Low Energy)低功耗蓝牙基本知识 Android 4.3(API级别18)引入了以低功耗蓝牙(BLE)为中心角色的内置平台支持,并提供应用程序可用于发现设备,查询服务和传输信息的API 常见用例包括以下内容: 在附近的设备之间传输少量的数据 与Google Beacons等接近传感器进行互动,为用户提供基于当前位置的定制体验。 传统蓝牙可以用于数据量比较大的传输,如语音,音乐,较高数据量传输等,但是比较耗电,低功耗蓝牙这样应用于实时性要求比较高,功耗比较

mike_jun的博客 6058

Android开发蓝牙基础总结,androidsdk开发封装

FF 表示数据类型,此处类型是 厂商自定义数据类型(这里的厂商指的是苹果公司,因为 iBeacon 是苹果公司提出的) 4C 00 表示公司的 ID,此处的 004C 代表苹果公司 02 15 Beacon 的标识位,必须是这样的 fd a5 06 93 a4 e2 4f b1 af cf c6 eb 07 64 78 25 表示 Beacon UUID 27 11 是 major 的值 4C b9 是 minor 的值 C5 表示 Measured Power 表示的是此设备在 1 米处的 RSS

m0_66264134的博客 533

Android 蓝牙开发 (一)基础篇

Android开发 蓝牙通讯 (一)基础篇 Android为蓝牙技术提供了4个工具类,分别是蓝牙适配器BluetoothAdapter、蓝牙设备BluetoothDevice、蓝牙服务端套接字BluetoothServerSocket和蓝牙客户端套接字BluetoothSocket。 1. BluetoothAdapter蓝牙适配器 方法: getDefaultAdapter:静态方法,获取默认的蓝牙适配器对象; enable:打开蓝牙功能; disable:关闭蓝牙功能; isEnable:判断蓝牙功能是

qq_39634136的博客 1596

Android开发蓝牙基础总结,ndk开发环境

27 11 是 major 的值 4C b9 是 minor 的值 C5 表示 Measured Power 表示的是此设备在 1 米处的 RSSI 值,用于距离测算 这段内容其实主要是苹果公司在蓝牙协议的基础上定义的。 如果符合 1AFF4C000215 则说明此设备是 iBeacon 设备 蓝牙应答包 04 3e 38 0d 01 1b 00 01 8b 03 00 b0 01 c2 01 00 ff 7f af 00 00 00 00 00 00 00 0

m0_66264655的博客 465

Android 蓝牙——基础开发(三)

蓝牙开发这部分主要以 APP 端调用功能接口为开始,到 Framework 端的调用流程,最后到调用状态机结束,不涉及蓝牙协议栈的开发分析。

小旭的专栏 1747

Android平台蓝牙开发基础实践指南

是Android中用于表示蓝牙适配器的类,它是连接到蓝牙硬件的桥梁。通过这个类,开发者可以执行开启或关闭蓝牙、查询蓝牙设备等操作。// 设备不支持蓝牙} else {// 蓝牙适配器存在,可以进行接下来的操作在上述代码中,获取了系统默认的蓝牙适配器实例。如果返回值为null,说明当前设备不支持蓝牙功能。接下来,若要启用蓝牙,可以通过以下方式:if (!其中,是一个请求码,用于在回调中辨识这个请求。

weixin_35094083的博客 1199

Android蓝牙通讯开发实战:从基础到实践

蓝牙是一种无线技术标准,用于交换数据的近距离短波通信技术。在Android开发中,蓝牙技术被广泛用于多种场景,比如数据传输、位置追踪、健康监测等。了解蓝牙技术的基本原理和Android中蓝牙API的使用对于开发相关功能是基础。Android为蓝牙通信提供了一整套的API,包括管理蓝牙适配器(BluetoothAdapter)、扫描设备(BluetoothDevice)、建立连接(BluetoothSocket)等。开发者可以通过这些API来实现设备间的通信。

weixin_35899324的博客 807

Android蓝牙开发实践:从基础到聊天应用

蓝牙技术是一种开放的无线标准,用于在短距离内交换数据,通常用于个人局域网(PANs)。它的主要特点是低功耗、低成本和易用性,使其成为许多移动设备和智能家居设备中不可或缺的技术。

weixin_35815766的博客 781

避坑指南:Qt无边框窗口拖动+阴影效果这些细节要注意

本文深入探讨了Qt无边框窗口开发中实现流畅拖动与阴影效果的关键细节与常见陷阱。针对高DPI屏幕适配、阴影闪烁、拖动卡顿及多显示器兼容性等核心难题,提供了从QGraphicsDropShadowEffect原理剖析到手动绘制优化、坐标系统精准处理及平台原生事件拦截的实战解决方案,帮助开发者构建稳定、美观的商业级应用界面。

weixin_27943395的博客 477

Dify工作流实践—根据word需求文档编写测试用例到Excel中

文章介绍了用dify工作流实现从word需求文档到测试用例写入excel的详细落地过程

weixin_42476668的博客 5332

在WebView中对第三方H5页面的文本密码框添加自定义随机键盘

前言: 首先介绍一下这个需求的背景,由于公司是涉及到金融行业的需要与银行对接资金存管。出于保密性这里不直接列出公司名字和银行名字。从2018年国家对金融行业大整改以来,为了能够顺利通过备案,我们也跟着政府的脚步一步一步走向合规。 好了,大致就是因为要通过备案,必须把这个需求实现,否则将不会通过。 需求内容就是,当客户端有关资金交易的时候,会通过加密数据以及秘钥的方式把第三方银行的页面(充值、...

比较喜欢、笑的博客专栏 1586

Claude Code × SolidWorks:批量填属性、格式转换、BOM 汇总自动化实战

摘要:本文介绍利用 Claude Code 生成 VBA 宏实现 SolidWorks 批量处理任务的自动化方案。包含5个实战案例:批量填写自定义属性(60分钟任务→10秒)、批量格式转换(80分钟→30秒)、多配置工程图自动生成(120分钟→2分钟)、滚珠丝杠选型计算(15分钟→10秒)和装配体递归BOM导出(40分钟→1分钟)。所有代码基于SolidWorks 2020+ API,提供完整VBA实现和操作指南,可显著提升设计效率。

m0_64424835的博客 609

Multisim实战:5分钟搞定一阶RC电路仿真(附示波器波形分析技巧)

本文通过Multisim软件,详细演示了如何快速搭建一阶RC电路并进行仿真分析。文章提供了从元件选取、电路连接、虚拟示波器设置到波形观测的完整流程,并重点分享了测量时间常数、区分电路响应类型等核心分析技巧,帮助电子工程初学者和爱好者高效掌握电路仿真与分析方法。

weixin_29175469的博客 182

RK3568 Android14 移远GNSS卫星导航模组LC760Z GPS北斗定位模块调试

Rockchip RK3568 作为一款高性能、低功耗的国产SoC,被广泛应用于工业网关、车载中控和智能手持终端等领域。在这些应用场景中,位置服务(Location Service) 往往是不可或缺的功能。本文将详细记录如何集成GPS模组到 RK3568 开发板上,通过 UART(串口)接口集成通用的 GPS 模块(如 移远LC760Z 或 EC20 4G 模块自带的 GPS 功能也差不多),并实现数据的解析与上层应用对接。

qq_33427070的博客 1412

【PINN高级教程】范式融合与前沿应用 第5讲:贝叶斯推断与生成式建模的深度融合

正规化流(Normalizing Flow, NF)通过一系列可逆变换把简单分布映射为复杂后验,从而获得更好的表达能力。算子学习保持映射的物理正确性。贝叶斯推断给出了自然的框架,但直接对高维函数空间做采样(如 MCMC)几乎不可行。1️⃣ 在自己的 PDE 上跑一遍完整的 Bayesian PINN 流模型。的学习机制深度融合,以在保持物理一致性的前提下,高效地从后验分布中采样。2️⃣ 将每个 θ 直接映射到 FNO 权重,得到不同解的采样。的后验 p(θ∣x,y)p(θ∣x,y) 进行近似。

u012133341的博客 474

【GameFramework框架内置模块】9、有限状态机(FSM)

这篇文章分享FSM有限状态机,了解过StarForce源码的同学相比都比较了解,GameFramework框架给我们抽象了一个Procedure流程的概念。这个Procedure流程可以方便的处理我们游戏从启动到游戏的各个流程阶段的处理逻辑,实现的核心就是FSM状态机,内部的Procedure流程就是不同的FsmState状态。接下来,就是FSM有限状态机的教程了。有限状态机(Finite-state machine,FSM)

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2530

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 轻松上手 Android蓝牙基础开发(3)
下一篇: 线程共享和协作(一):CPU核心数,线程数,时间片轮转机制解读
斯音
博客等级 码龄6年 47粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值