Android中的BLE

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

BLE是Bluetooth Low Energy的简写,是蓝牙连接传输数据技术的一种,顾名思义,和普通的蓝牙技术相比它的最大优点就是省电,这是如何做到的呢,这就是我们下面会介绍的BLE使用的GATT和ATT协议,既然它的特点是省电,这也就决定了这种技术不适用于传输数据量大、对传输速率和实时性要求高的应用,不过针对像心率监测、设备防丢这样的场景就很适合了。

  • GATT/ATT协议
    Generic Attribute Profile (GATT):这就是BLE使用的协议,它是在ATT的基础上增加了一份清单(Profile),这上面写了很多Service来表示设备支持什么功能
    Attribute Protocol (ATT):,说白了就是属性的读写,也可以理解为有固定的键值的map,那么这个协议都有哪些对我们暴露出的组成部分呢?
    Characteristic: 相当于一个扩展的键值对,包含了128位UUID的键值、属性值和一系列描述,描述又是什么呢
    Descriptor:描述就是对某个属性值的我们可读的解释,通过它我们就能知道当某个属性被设置成对应的值的时候会如何如何,再简单点说就是告诉我们某个属性的特定值代表什么意思,从这里就能知道如何操作属性来实现开发者的功能
    Service:Characteristic集合,可以说它就可以对应一个独立的功能,比如心率监测
    一张图理解这个协议的组成:
    这里写图片描述

  • Android中如何操作
    先看一张流程图:
    这里写图片描述

我们所要做的一般也就是这几种操作:扫描设备,连接/断开设备,向设备发送数据,从设备接收数据,容错处理

首先声明权限:<

Ble低功耗蓝牙开发基础与实践 通过定义不同的服务和特征值,设备可以提供不同的功能和操作,如传感器数据、控制命令等。通过BLE广播,设备可以宣布自身的存在、提供基本的信息和服务,以便其他设备发现和与之进行进一步的通信。通过广播,BLE设备可以以一种无连接的方式向周围的设备发送信息,以便其他设备能够发现它们并建立连接。需要注意的是,同一个设备在不同的场景下可能同时扮演中央设备和外围设备的角色,例如智能手机可以作为中央设备连接传感器设备,但也可以作为外围设备提供服务给其他设备连接。描述符是可选的,并提供关于特征值的元数据,如单位、权限等。 阅读详情

相关推荐

BLE蓝牙Android开发中的应用(一)

最近一段时间在写支持BLE蓝牙Android应用。是时候总结一下了。 1、什么是BLE。(总得先知道BLE是什么吧~~~)      Bluetooth Low Energy(低功耗蓝牙),缩写为Bluetooth LE,或BLE,作为蓝牙4.0 (有时称为蓝牙智能)规范的一部分,并针对上述的这些具体问题而被引入。就提高电池寿命而言,许多制造商声称一些传感器能维持数月甚至数年的时间(

shenyu_njau的博客 3620

[科普] 在蓝牙低功耗(BLE)开发中,服务(Service)、特征(Characteristic)和 描述符(Descriptor) (由DS-R1生成)

通过理解这三层结构,你就能设计蓝牙设备的数据交互逻辑了!如果需要具体代码示例或调试工具(如。(Generic Attribute Profile)组织数据。是蓝牙设备数据交互的核心元素,它们通过。在蓝牙低功耗(BLE)开发中,),可以进一步交流。

Lovely_him的博客 2126

Android中的蓝牙BLE、经典蓝牙

Android中的蓝牙BLE、经典蓝牙

https://github.com/Mac-Zhu 1503

浅谈BLE

最近刚开始接触AndroidAndroid编程对于一个学过C++的人来说,入门挺容易的;但想要做一名合格的Android开发工程师还有很长的路要走。当然这里仅限于我C++也不是学的很好,也只能说是个入门级别,大牛除外,大牛级别的人学什么编程语言都很快。     说说BLE的特性吧。蓝牙4.0最重要的特性是省电,极低的运行和待机功耗可以使一粒纽扣电池连续工作数年之久。可以用于计步器、心律监视

qq_27831885的博客 2655

Android Ble蓝牙App(三)特性和属性

在上一篇中我们完成了连接和发现服务两个动作,那么再发现服务之后要做什么呢?发现服务只是让你知道设备有什么服务,可以做什么事情。

晨曦 4203

Android之开发BLE 详细步骤(有源码提供)

Android之开发BLE开发之前我们必须知道蓝牙广播常量所代表的含义:参考文档 String ACTION_ACL_CONNECTED=”android.bluetooth.device.action.ACL_CONNECTED” 与远程设备建立连接(低级别) String ACTION_ACL_DISCONNECTED= “android.bluetooth.device.action.ACL

昆虫 1万+

BLE蓝牙4.0在Android中的应用

本文依据实际项目经验,介绍了BLEAndroid中的应用,包括BLE设备搜索、BLE设备连接以及与BLE设备信息交换。并从工作项目中抽取上述核心代码,编写了一个BLEAndroid中应用的完整demo。Demo下载地址请看文章末尾。 先上图,然后再具体介绍BLE技术实现。 由于BLE蓝牙只能支持Android 4.3以上的系统 (SDK>=18),所以在进行BL

wangpf2011的博客 1878

Android-BLE源码架构深度剖析:设计模式在蓝牙框架中的应用

Android-BLE是一个功能强大的蓝牙低功耗(BLE)框架,提供了完整的蓝牙操作接口和优化的连接管理机制。本文将深入解析其源码架构,揭示设计模式在蓝牙框架中的精妙应用。 ## 🚀 框架核心架构概览 Android-BLE框架采用分层设计,核心代码位于[core/src/main/java/cn/com/heaton/blelibrary/ble/](https://link.gitcod

gitblog_00255的博客 1091

蓝牙4.0BLE在安卓项目中的使用详解

项目需求:安卓设备与硬件设备通过蓝牙4.0进行实时数据交互。

xinleiweikai的专栏 3824

BLE Android开发中的问题

在此直说两个问题,第一是Android6.0 SDK23版本情况下开发的Android BLE APP,千万要记得在代码中申请到地理位置读取权限,否则你的APP在运行的时候会出现各种问题,另外就是除了这种方法外,另一种更直接的方法就是直接修改你APP的SDK版本号,我是改到了21,结果效果很好。      另外BLE开发中网上各种博客上的资源基本上都是官网上的代码,其中有很多逻辑问题还是需要你自

雨日微风 983

低功耗蓝牙BLE)在 Android APP 中的应用

低功耗蓝牙BLE)在 Android APP 中的应用 最近公司接了一个新项目,用户可以把自己的乐器跟Phone或Pad连接起来,当弹奏乐器的时候,会把演奏情况同步反馈到设备上,方便用户练习,有点类似于之前玩过的一款叫 [ 吉他英雄 ]的游戏。 最近穿戴设备发展得很火,把相关技术也带旺了,其中一项是BLE(Bluetooth Low Energy)。BLE蓝牙4.0的核心Profile,主

Yaoobs的博客 8083

ble android 读写数据,从android应用程序中的ble连续读取数据

我想通过蓝牙android应用程序中连续从ble硬件读取数据.连接已完成,我可以将数据从应用程序发送到ble,但是无法从ble读取数据.从ble获取一些数据时必须调用onCharactersticChanged方法,但此回调方法未调用.我想通知ble但writeChar.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);Bl...

weixin_36018773的博客 659

BLE蓝牙Android Studio中的权限配置

本文介绍了在Android Studio 23版本中使用BLE蓝牙所需的权限配置。在AndroidManifest.xml中需配置基础蓝牙权限(BLUETOOTH_ADMIN、BLUETOOTH)和定位权限(ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION),以及Android 12新增的BLE专用权限(BLUETOOTH_ADVERTISE、BLUETOOTH_CONNECT、BLUETOOTH_SCAN)。文中特别区分了普通蓝牙BLE蓝牙所需的权限差异。

qq_54937583的博客 289

一起Talk Android吧(第二百九十回:Android中的BLE开发:获取服务一)

看官们,我们在上一章回中介绍了BLE开发的蓝牙连接设备,本章回中我们将介绍BLE开发中获取服务的例子,闲话休提,言归正转。让我们一起Talk Android吧! 看官们,蓝牙设备连接成功后我们就可以获取GATT服务了,为了简单起见,我们在后面章回中统一简称为服务。 获取服务主要有两个步骤: 查找服务 获取服务 接下来我们简单介绍一下这两个步骤: 查找服务:主要是查找位于GATT服务器上的服务;通常是在蓝牙设备连接成功时开始查找,使用BluetoothGatt的discoverServices()方法可

talk_8的专栏 275

android ble蓝牙接收不到数据_安卓蓝牙开发基础知识

蓝牙4.0分为标准蓝牙和低功耗蓝牙BLE),标准蓝牙就是手机上用的那种,低功耗蓝牙由于其具有最大化的待机时间、快速连接和低峰值的发送和接收特性,被广泛用于智能手表、智能手环等可穿戴设备上。在安卓4.3之前,安卓平台上的BLE开发相当难搞,好在谷歌在4.3之后发布了官方的API。在安卓5.0之后又引入了新的API,原来的API已经被废弃。在新的系统里采用旧API开发的APP仍可使用,但采用新API...

weixin_30873127的博客 1409

一起Talk Android吧(第二百九十五回:Android中的BLE开发:客户端与服务端通信一)

看官们,我们在上一章回中介绍了BLE开发中注册特征值通知的例子,本章回中我们将介绍BLE开发中客户端与服务端通信的例子,闲话休提,言归正转。让我们一起Talk Android吧! 看官们,客户端与服务端通信是通过在客户端注册特征值通知来实现的,这点我们在前面章回中提到过,同时还详细介绍了在客户端注册特征值通知的过程。特征值通知注册完成后 我们就可以通信了,本章回中先介绍如何在客户端给服务端发数据,下一章回介绍客户端如果从服务端接收数据。 客户端使用BluetoothGatt的writeCharacteris

talk_8的专栏 430

一起Talk Android吧(第二百九十四回:Android中的BLE开发:注册特征值通知三)

看官们,我们在上一章回中介绍了BLE开发中注册特征值通知的例子,本章回中我们将继续介绍该例子,闲话休提,言归正转。让我们一起Talk Android吧! 看官们,注册完特征值后我们就可以监听服务端发来的特征值变化通知。接收通知使用onCharacteristicChanged()方法,该方法是BluetoothGattCallback中的方法,从名称就可以看出来它是一个回调方法,当服务器端的特征值有变化时该方法会被回调; 该方法包含两个参数: 第一个是BluetoothGatt类的对象,它和连接服务器时返

talk_8的专栏 213
上一篇: 支持设置数据为空时打底view的RecyclerView+支持RecyclerView的CursorAdapter
下一篇: 编程珠玑
会敲代码的咩
博客等级 码龄12年 39粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值