首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android小菜鸡

    Andorid 对接BLE蓝牙设备(连接篇)

    蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健 笔者前段时间做了一个功能,需要对接一个蓝牙设备,该蓝牙设备使用的就是BLE蓝牙。这里给大家分享一下我的实现。这篇文章主要是实现程序与BLE蓝牙设备的连接,交互和设置、测试工具等请期待下一篇文章。 bluetoothLeScanner = bluetoothAdapter.bluetoothLeScanner // Android5.0新增的扫描API,扫描返回的结果更友好,比如BLE 我们首先利用它去检测设备是否有蓝牙驱动,设备蓝牙是否打开等信息,并优化用户体验。满足以上条件后,我们可以开始扫描附近的蓝牙设备。 到此,我们就获取到了附近所有的使用BLE蓝牙的设备设备信息。至于如何交互?如何筛选BLE蓝牙设备的指定权限服务?笔者会在下篇一一道来,并且会上传一个笔者做的蓝牙测试工具。

    2.5K10发布于 2019-10-16
  • Rokid AI 眼镜远程协作应用一线互联开发实践:设备发现BLE 扫描

    你周围不止一副蓝牙设备掏出手机扫一下蓝牙,列表里几十个设备。耳机、手环、车间里的蓝牙网关、隔壁工位的手机——Rokid AI 眼镜就混在里面。 问题是,眼镜的 BLE 广播名有时候是空的,有时候显示为乱码,你不能只靠名字来认。我们把扫描过滤做成了两级:第一级是 Android 系统层的 BLE 扫描配置。 上层的代码通过 StateFlow 拿到设备列表后直接绑定到 UI,每次新设备进来自动排序: 打个比方:普通蓝牙设备像是标准快递,手机操作系统认识这个快递单,帮你签收了。 这篇文章其实就想说一件事:蓝牙扫描不是搜一下就行,设备过滤、排序、连接建立,每个环节的细节决定了工业现场的体验。把 BLE 扫描的五秒变成一秒,把"连不上"变成"三秒重连",就是这些细节堆出来的。

    8310编辑于 2026-06-01
  • 来自专栏Android、鸿蒙开发

    Harmony Ble蓝牙App(二)连接与发现服务

    Ble蓝牙App(二)连接与发现服务 前言   在上一篇中我们进行扫描设备的处理,本文中进行连接和发现服务的数据处理,运行效果图如下所示: 正文   现在我们在ScanSlice扫描设备,选中一个设备进入 ,在onStart()方法中进行BleCore的赋值,然后设置Ble的回调,实现BleCallback接口,重写里面的函数,当连接成功之后会通过回调deviceInfo()得到设备状态,因为是子线程所以在 四、发现服务   连接写好了,下面可以写发现服务了,我们可以在连接成功的处理中进行发现服务,下面我们修改一下BleDeviceCallback中的connectionStateChangeEvent() public static String getServiceUUID(UUID uuid) { return "0x" + uuid.toString().substring(4, 在蓝牙通信中,设备使用UUID来发布和查找服务以及识别特性。UUID是蓝牙设备之间进行通信时的重要标识,确保了设备和服务的唯一性。

    90410编辑于 2023-11-24
  • 来自专栏Android、鸿蒙开发

    Android Ble蓝牙App(二)连接与发现服务

    前言   在上一篇中我们进行扫描设备的处理,本文中进行连接和发现服务的数据处理,运行效果图如下所示: 正文   现在我们从MainActivity进入到ScanActivity,选中一个设备返回到 ,在onCreate()函数中进行BleCore的赋值,然后设置Ble的回调,实现BleCallback接口,重写里面的函数,当连接成功之后会通过回调deviceInfo()得到设备状态,因为是子线程所以在 四、发现服务   连接写好了,下面可以写发现服务了,我们可以在连接成功的处理中进行发现服务,下面我们修改一下BleGattCallback中的onConnectionStateChange()函数中的代码 uuid UUID */ fun getServiceName(uuid: UUID) = when ("0x${uuid.toString().substring(4, Service" } fun getServiceUUID(uuid: UUID) = "0x${uuid.toString().substring(4,

    1.9K10编辑于 2023-08-09
  • 来自专栏树莓派开发 (Raspberry Pi)

    Python 与 BLE 设备通信指南 -- P1

    BLE设备代码以下脚本将扫描并列出附近所有 BLE 设备及其信号强度 (RSSI)import asynciofrom bleak import BleakScannerasync def main() : print("正在扫描附近的 BLE 设备 (持续 5 秒)...") 设置足够的扫描时间 (如上面的5秒) 可以覆盖多个广播周期, 提高设备发现率.列出指定BLE设备服务与特征列表方式一: 通过MAC地址指定设备 (推荐, 大多数情况下MAC地址唯一)import asynciofrom 方法来扫描和连接BLE设备, 区别在于筛选条件不同.BLE设备名称不唯一, 因此通过名称指定设备时可能会出现多个设备同时被找到的情况. 设备的特征值有读取(Read), 写入(Write), 通知(Notify)等属性, 一个特征值可以有多个属性.特征值的属性可以用上一节列出指定BLE设备服务与特征列表提供的代码来查看.写入指定BLE设备指定特征数据代码尝试写入数据

    73320编辑于 2025-12-11
  • 来自专栏zinyan

    Android BLE 蓝牙开发,连接蓝牙设备进行通讯

    针对低功耗蓝牙通讯,Android 4.3(API 18)开始引入了 BLE 库。我们可以直接使用 Android SDK 中的蓝牙 BLE 库,而不用额外导入依赖库。 而使用BLE库,我们可以直接通过蓝牙设备的UUID进行连接(通过GATT服务),在当前应用内就能直接连接了。而不用通过系统设置。 那么我们将会无法发现蓝牙设备。 也就是执行蓝牙扫描 API 无法得到任何结果(PS::Logcat 中的错误日志会告诉你,要开启位置权限,否则无法扫描发现蓝牙设备)。 <! 3.8 写数据到蓝牙设备中 我们如果想将内容推送到蓝牙设备中,在发现服务的时候onServicesDiscovered 遍历特性中,确保是用于写消息的特性对象后。 同时一个蓝牙设备对象,可能有多种服务功能。 如果不想自己写线程变量轮询设备发送过来的消息,就通过注册消息监听。让BLE框架帮我们进行轮询之后,再通知到我们。

    10.4K30编辑于 2023-07-14
  • 来自专栏韩曙亮的移动开发专栏

    BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )

    如何开发一个 标准的 BLE MIDI 设备 , 该设备可以被 Android / iOS / Mac / Windows / Linux 等操作系统平台识别为标准 MIDI 设备 , 并从该设备中接收 标准的 BLE-MIDI 硬件设备开发成的乐器 , 要兼容以下平台的如下软件 : Windows : Cubase Mac : Logic Pro iOS : 库乐队 ( Garage Band 服务设置为 : 03B80E5A-EDE8-4B33-A751-6CE34EC4C700 BLE 特性设置为 : 7772E5DB-3868-4112-A1A9-F2669D106BF3 该特性的属性设置为 功能 , 验证 硬件设备 是否开发成功 ; BLE 测试相关 : 四、单片机制作电子乐器 ---- 参考 我是鹏老师 发表的几篇博客 : 【PCB授课笔记】51单片机制作一个【卡林巴】【电子琴】 ((len(name) + 1, 0x09)) + name , resp_data = b'\x11\x07\x00\xC7\xC4\x4E\xE3\x6C\x51\xA7\x33

    4.4K30编辑于 2023-03-29
  • 来自专栏iOSDevLog

    Android 6.0 扫描不到 Ble 设备需开启位置权限

    之前做 Ble 开发都是在 Android 6.0 系统以下的版本中进行测试]的,今天使用 Android 6.0 的设备测试的时候,发现扫描不到周围的 Ble 设备。 后来发现 6.0 需要在应用运行过程中请求位置权限,并且还要打开位置。 设备"); } //请求权限 ActivityCompat.requestPermissions(this, new String 做完上面你以为就 OK 了,但是可能你会发现,并没有什么卵用,依然不能搜索到周围的 Ble 设备,原因是可能的你的位置服务(定位 GPS)没有打开。 设备;如果定位没有打开,则需要用户去打开,像下面这样: private static final int REQUEST_CODE_LOCATION_SETTINGS = 2; ... private

    2.3K110发布于 2018-05-17
  • 来自专栏Java架构师历程

    4、服务发现

    然而,在现代基于云的微服务应用中,这是一个更难解决的问题,如图 4-1 所示。 服务实例具有动态分配的网络位置。此外,由于自动扩缩、故障与升级,整组服务实例会动态变更。 图 4-2 展示了该模式的结构 ? 服务实例的网络位置在服务注册中心启动时被注册。当实例终止时,它将从服务注册中心中移除。通常使用心跳机制周期性地刷新服务实例的注册信息。 图 4-3 展示了该模式的结构: ? 客户端通过负载均衡器向服务发出请求。负载均衡器查询服务注册中心并将每个请求路由到可用的服务实例。与客户端发现一样,服务实例由服务注册中心注册与销毁。 图 4-4 展示了该模式的结构。 ? 该方式的一个很好的范例就是 Netflix OSS Eureka 客户端。Eureka 客户端负责处理服务实例注册与注销的所有方面。 图 4-5 展示了该模式的结构: ? 开源的 Registrator 项目是一个很好的服务注册器示例。它可以自动注册和注销作为 Docker 容器部署的服务实例。

    2.8K30发布于 2018-09-26
  • 来自专栏Android干货

    Android项目实战(三十四):蓝牙4.0 BLE设备连接

      最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据。   查询了很多资料终于实现,现进行总结。 一、Demo需求     1、搜索设备 , 选择多个要连接的设备。     2、开始连接,显示数据。         3、结束扫描按钮      4、完成选择按钮,将选择的设备MAC地址传回  ? xqx * @email djlxqx@163.com * blog:http://www.cnblogs.com/xqxacm/ * createAt 2017/9/6 * description: ble '、跳转新界面 2、点击'开始扫描'按钮,会出现很多设备的mac地址 ,以列表的新式展现 3、对列表item操作,更改状态'已选择'or'未选择' 4、点击按钮'完成选择设备'按钮,将列表中状态为'已选择

    6.2K80发布于 2018-05-18
  • 来自专栏Android、鸿蒙开发

    Android Ble蓝牙App(六)请求MTU与显示设备信息

    一、请求MTU的概念   在 Android 的 BLE(Bluetooth Low Energy)开发中,requestMtu 是一个用于请求修改 BLE 连接的最大传输单元(MTU)的方法。 通过调用 requestMtu 方法,你可以请求增加或减少 BLE 连接中的 MTU 大小。较大的 MTU 可以提高数据传输效率,因为每个数据包可以携带更多的数据。 那么如果你有1000个字节需要进行传输,则需要对字节进行分包处理,例如一次最大传输244个字节,则需要分成5个包进行传输,前4个包,每个包为244个字节,最后一个包为24个字节。 layout_constraintTop_toBottomOf="@+id/data_layout" /> </androidx.constraintlayout.widget.ConstraintLayout>   你会发现这个布局内容和写数据弹窗如出一辙 六、显示设备信息   先说说为什么要显示设备操作信息,因为这可以方便我们测试一些功能,虽然我们可以在控制台看到所有内容,不过终究不是时时刻刻都是调试的,也有直接使用的情况,那么针对这个需求,我们可以在主页面中点击设备信息是显示一个设备信息列表弹窗

    5.5K30编辑于 2023-08-18
  • 深入解析LE Controller命令:BLE设备通信的核心驱动力

    这些命令对于BLE设备的基本功能和性能优化至关重要。 一、LE Controller命令概述 LE Controller命令是BLE技术中,由链路层发出的、用于指导BLE设备执行特定操作的一组指令。 LE Controller命令集是BLE设备中用于管理蓝牙连接和广播数据的关键工具。通过合理使用这些命令集,可以实现BLE设备发现、连接和数据传输等功能。 关闭连接(可选) 断开连接:在完成所有操作后,如果不再需要与BLE设备进行通信,主机软件可以断开与BLE设备的连接。 // 连接后的操作(如:服务发现、读写特征值等)在此处进行 // ... // 清理和关闭BLEble_stack_deinit(); 仔细核对参数值和范围,以符合设备的要求和规范。 3. 错误处理: 接收命令响应后,检查状态码以确定命令是否成功执行。 根据错误类型采取适当的错误处理措施,如重新设置参数或重启设备4.

    18910编辑于 2026-01-20
  • 来自专栏FreeBuf

    编号666:谷歌发现FireEye设备高危漏洞

    FireEye向企业和政府用户销售安全设备,其旗舰产品安装在大型网络的出口点用以监控设备,也就是安装在内部流量通向互联网的地方。 在本文中我们将讨论Project Zero发现的第666个漏洞:FireEye设备可通过被动监控接口进行利用的漏洞。 FireEye已经发布了针对该漏洞的补丁,请用户立即应用该补丁! [1]FireEye设备可以在IPS模式下进行配置,这么做可以修改监控流量 [2]该问题刚刚好是Project Zero发现的第666个漏洞 常见问答 Q:如何检查是否我的FireEye设备存在该漏洞? 测试环境包含一个配有4个网络接口的工作站,其中两个接口连接到中心用以模拟网络流量。 # First, make sure Linux will accept local<->hub<->local traffic echo 1 > /proc/sys/net/ipv4/conf/all

    1.4K80发布于 2018-02-07
  • 来自专栏kali blog

    如何根据MAC地址发现设备制造商

    什么是 MAC 地址 媒体访问控制也称为 MAC 地址,是实际属于设备本身并由其供应商分配的物理地址。 MAC地址本身实际上由两部分组成: 前三个八位字节被称为 OUI 或组织唯一标识符,它告诉我们该设备的供应商实际上是谁。 然而,最后三个八位字节通常被称为供应商分配的 ID,这将允许供应商识别该特定设备

    9.2K30编辑于 2021-12-19
  • 来自专栏openclaw系列

    OpenClaw 设备发现机制指南:BonjourmDNS 与 Tailscale 集成

    OpenClaw 采用 Bonjour (mDNS/DNS-SD) 作为核心发现协议,并深度集成 Tailscale 以实现跨网络的广域发现。 核心设计原则 便利性优先:自动发现减少手动 IP 配置。 安全不妥协:发现信息仅用于 UI 提示,绝不作为权威路由或信任依据。 { discovery: { mdns: { mode: "minimal" } } } 模式二:完全功能 (家庭/开发环境) 广播所有辅助信息,方便多设备无缝连接。 配置生效后,iOS/Android 即可在无多播环境下自动发现网关。 4. 故障排查指南 常用调试命令 常见问题矩阵 iOS 节点调试 进入 设置 → 网关 → 高级。 典型部署场景 场景 A:家庭多设备 (LAN) 目标:手机、平板、电脑自动发现

    1.6K10编辑于 2026-03-13
  • 来自专栏韦东山嵌入式

    4章_USB 设备编程

    4.2 USB 系统硬件框架和软件框架 4.2.1 实验现象 现象: 把 USB 设备比如 Android 手机接到 PC 右下角弹出"发现 android phone" 跳出一个对话框, 提示你安装驱动程序 USB 总线驱动程序负责:识 别 USB 设备, 给 USB 设备找到对应的驱动程序。 问 3. 为什么一接入 USB 设备, PC 机就能发现它? 答 3. 接收方发现4 位不是前 4 位的取反的话, 就认为发生了错误。 2. 令牌包(Token) 令牌类 的 PID ,起 "通知作用 " ,通知谁 ? 对于一个USB 设备, 它可以多种配置(Configuration)。比如4G 上网卡就有 2 种配置: U 盘、上网卡。第 1 次把 4G 上网卡插入电脑时,它是一个 U 盘,可以按照里面的程序。 设备描述符 2. 配置描述符 3. 接口描述符 4.

    1.4K10编辑于 2024-06-29
  • 来自专栏绿盟科技研究通讯

    CCS 2019论文解读:基于自动化App分析的BLE设备指纹识别

    并通过实地测试,证明了这种方式能够识别日常生活中的大多数设备(94.6%),同时发现其中部分设备(7.4%)存在潜在问题。 第二步,在实际场地上对BLE设备广播进行嗅探,验证实际发现设备能否与App中提取出来的UUID关联上,从而实现BLE设备的精确识别。 通过对Google商店1.8万个支持BLE通信的App进行分析,BLESCOPE发现其中61.3%的应用使用了Just Works方式配对,15.8%的应用的BLE连接过程存在上述两种漏洞。 ? 图 4 BLE设备数量Top 10与对应的应用包名 在所有存在漏洞的设备中,数量最多的几种设备包括温度计、车钥匙、钥匙防丢器、玩具等。存在漏洞的设备总共431个,所以相同类型的设备并不多。 Springer, 5–23. [4].2019.

    2.1K10发布于 2020-01-15
  • 《探秘浏览器Web Bluetooth API设备发现流程》

    而Web Bluetooth API的出现,直接赋予了网页与低功耗蓝牙(BLE设备对话的能力,从智能手环的健康数据同步,到智能家居设备的远程控制,再到工业场景中的传感器数据采集,其应用边界正不断拓宽。 而设备发现流程作为API规范中的关键模块,其设计既遵循了蓝牙技术联盟(SIG)制定的BLE协议标准,又充分考虑了Web环境的安全性与用户体验,形成了一套兼顾技术合规性与实践易用性的逻辑体系。 从蓝牙通信的角色划分来看,BLE设备主要分为中央设备与外围设备两类:中央设备具备主动发起扫描、建立连接的能力,而外围设备则通过周期性发送广播数据包的方式,向周围环境宣告自身存在,并等待中央设备的连接请求 GATT(通用属性配置文件)是BLE协议中定义数据交互规范的核心部分,它将设备的功能抽象为“服务”(Service)与“特征”(Characteristic):服务是功能的逻辑分组(如“心率监测服务”包含与心率相关的所有功能 ”的错误,可实现“智能重试”逻辑—根据信号强度动态调整重试次数(信号强时重试2次,信号弱时重试4次),并在重试间隔中提示用户调整设备位置。

    88310编辑于 2025-08-15
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android 应用连接 BLE 设备无法读取数据 ( 可以写出数据 | 无法读取数据 )

    文章目录 一、问题描述 二、问题分析 三、完整设置代码 一、问题描述 ---- Android 应用连接 BLE 硬件设备后 , 出现如下情况 : 发送数据成功 : Android 应用 向 BLE 硬件设备发送数据 , 成功 ; 接收数据失败 : Android 应用 无法接收到 BLE 硬件设备发送给手机的数据 ; 二、问题分析 ---- 举个栗子 : 这是在 Google 官方的 BLE 蓝牙示例程序 BluetoothLeGatt 中的 BLE 连接配置代码 : /** * Enables or disables notification on a give characteristic BluetoothGattDescriptor 的 setValue 方法 , 为其设置 BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE 值 , 并写出该值 , 即可将读取该特性的设置发送给 BLE 蓝牙设备的数据 ;

    3.7K00编辑于 2023-03-28
  • 来自专栏鸿蒙开发笔记

    HarmonyOS 开发实践 —— 基于短距离通信的BLE蓝牙扫描

    场景一:申请蓝牙权限方案ACCESS_BLUETOOTH 权限是很多蓝牙接口需要申请的,比如:ble.getConnectedBLEDevices(获取和当前设备连接的BLE设备)、ble.startBLEScan **蓝牙扫描和系统设置蓝牙扫描BLE为低功耗蓝牙,只能扫描到低功耗的蓝牙设备。 订阅蓝牙设备发现上报事件:connection.on('bluetoothDeviceFind')。 取消订阅蓝牙设备发现上报事件:connection.off('bluetoothDeviceFind')。 ').onClick(() => {    hilog.info(0x00000, TAG, '订阅蓝牙设备发现上报事件。')

    79210编辑于 2024-11-27
领券