IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android官方文档学习之Bluetooth Low Energy(一) -> 正文阅读

[移动开发]Android官方文档学习之Bluetooth Low Energy(一)

之前的文档寄了,现在用这个记录一下BLE实际操作中遇到的问题。

1.在写服务端的时候会有两个回调,一个叫AdvertiseCallback,一个叫gattServiceCallback。第一个是服务端与客户端通过蓝牙建立连接之后的回调(服务端–>客户端),后者是客户端连接上服务端之后的回调,是连接成功之后才会发生的回调。在后者的回调里面,我们所需要的数据在此进行交换。

BLE官方文档

一:基本介绍

Android 在API18/Android4.3版本开始为低功耗蓝牙 (BLE) 提供内置平台支持,并提供应用程序可用于发现设备、查询服务和传输信息的 API。

利用低功耗蓝牙可以实现:1.在附近的硬件设备之间传输少量数据。2.与接近传感器交互,为用户提供基于其当前位置的定制服务。

与经典蓝牙相比,BLE 旨在显着降低功耗。这允许应用程序与具有更严格电源要求的 BLE 设备进行通信,例如接近传感器、心率监测器和健身设备。

另外需要注意的是,当用户使用 BLE 将他们的设备与另一台设备配对时,用户设备上的所有应用程序都可以访问这两个设备之间通信的数据。 出于这个原因,如果应用程序捕获了敏感数据,应该实施应用程序层安全性以保护该数据的隐私。

二.关键术语和概念

支持BLE的设备要在彼此之间传输数据,它们必须首先形成一个通信通道。使用蓝牙 LE API 需要在清单文件中声明多个权限。一旦你的应用程序获得使用蓝牙的权限,您的**应用程序需要访问蓝牙适配器并确定设备上的蓝牙是否可用。**如果蓝牙可用,设备将扫描附近的 BLE 设备。找到设备后,通过连接到 BLE 设备上的 GATT 服务器来发现 BLE 设备的功能建立连接后,可以根据可用服务和特征与连接的设备传输数据。 以下是需要添加的权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!--  android M 以上版本获取周边蓝牙设备必须定位权限  -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
    android:name="android.hardware.bluetooth_le"
    android:required="true" />

1.通用属性配置文件 (GATT)

GATT 配置文件是用于通过 BLE 链路发送和接收称为“属性”的短数据片段的通用规范。当前所有的 BLE 应用配置文件都基于 GATT。下面的网址是GitHub 上的 Android BluetoothLeGatt 示例。 https://github.com/android/connectivity-samples/tree/master/BluetoothLeGatt

2.Profiles

蓝牙 SIG 为 BLE 设备定义了许多配置文件(Profiles)。配置文件是关于设备如何在特定应用程序中工作的规范。一台设备可以实现多个配置文件。例如,设备可能包含心率监测器和电池电量检测器。

3.Attribute Protocol (ATT)

GATT 建立在属性协议 (ATT) 之上。这也称为 GATT/ATT。 ATT 针对在 BLE 设备上运行进行了优化。为此,它使用尽可能少的字节。每个属性都由通用唯一标识符 (UUID) 唯一标识,它是用于唯一标识信息的字符串 ID 的标准化 128 位格式。 ATT 传输的属性被格式化为特征和服务。

4.特征(Descriptor

特征包含单个值和描述特征值的 0-n 个描述符。一个特性可以被认为是一种类型,类似于一个类。描述符是描述特征值的已定义属性。例如,描述符可能指定人类可读的描述、特征值的可接受范围或特定于特征值的度量单位。

5.服务(Service

服务是特征的集合。例如,你可以拥有一项名为“心率监测器”的服务,其中包括“心率测量”等特征。你可以在 bluetooth.org 上找到现有的基于 GATT 的配置文件和服务的列表。

三.角色和职责 (Roles and responsibilities)

当设备与 BLE 设备交互时,适用以下角色和职责:

中央与外设。这适用于 BLE 连接本身。**中心角色的设备扫描,寻找广告,外围角色的设备制作广告。**在之后的示例代码中也有设计到广告的定义。

GATT 服务器与 GATT 客户端。这决定了两个设备在建立连接后如何相互通信。要区别它们的不同,假设有一部 Android 手机和一个 BLE 设备的活动跟踪器。电话支持中心角色;活动跟踪器支持外围角色。如果要建立 BLE 连接,您需要包含这两者,仅支持外围设备的两个设备无法相互通信,两个仅支持中央设备的设备也不能相互通信。

一旦手机和活动跟踪器建立连接,它们就会开始相互传输 GATT 元数据。根据他们传输的数据类型,其中一个可能充当服务器。例如,如果活动跟踪器想要向手机报告传感器数据,则活动跟踪器充当服务器可能是有意义的。如果活动跟踪器想要从手机接收更新,那么手机充当服务器可能是有意义的。

在本主题中使用的示例中,应用程序(在 Android 设备上运行)是 GATT 客户端。该应用程序从 GATT 服务器获取数据,该服务器是支持心率配置文件的 BLE 心率监视器。您也可以设计您的应用程序来扮演 GATT 服务器角色。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:01:03  更:2022-01-24 11:01:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:55:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码