Android BLE(蓝牙低功耗)总结与实践

蓝牙低功耗

简介

Android 4.3(API 级别 18)为发挥核心作用的蓝牙低功耗 (BLE) 引入内置平台支持,并提供相应 API,方便应用发现设备、查询服务和传输信息。

常见用例包括:
在临近设备间传输少量数据。
与 Google Beacons 等近程传感器交互,以便为用户提供基于其当前位置的自定义体验。

关键概念

通用属性配置文件 (GATT) — GATT 配置文件是一种通用规范,内容针对在 BLE 链路上发送和接收称为“属性”的简短数据片段。目前所有低功耗应用配置文件均以 GATT 为基础。

属性协议 (ATT) — 属性协议 (ATT) 是 GATT 的构建基础,二者的关系也被称为 GATT/ATT。ATT 经过优化,可在 BLE 设备上运行。为此,该协议尽可能少地使用字节。每个属性均由通用唯一标识符 (UUID) 进行唯一标识,后者是用于对信息进行唯一标识的字符串 ID 的 128 位标准化格式。由 ATT 传输的属性采用特征和服务格式。

特征(Characteristic) — 特征包含一个值和 0 至多个描述特征值的描述符。您可将特征理解为类型,后者与类类似。
描述符(Descriptor) — 描述符是描述特征值的已定义属性。例如,描述符可指定人类可读的描述、特征值的可接受范围或特定于特征值的度量单位。
服务(Service) — 服务是一系列特征。例如,您可能拥有名为“心率监测器”的服务,其中包括“心率测量”等特征。您可以在 bluetooth.org 上找到基于 GATT 的现有配置文件和服务的列表。

以下是相关关系图,一个设备包含多个服务,一个服务包含多个特征,一个特征具备多个描述
在这里插入图片描述

实践

1、权限申请

    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <!-- If your app targets Android 9 or lower, you can declare
         ACCESS_COARSE_LOCATION instead. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)

2、扫描周边设备

扫描设备时候要先获取现获取bluetoothAdapter对象

val bluetoothManager = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
val bluetoothAdapter = bluetoothManager.adapter

使用bluetoothAdapter的方法startLeScan(),方法里面leScanCallback是一个回调参数,扫描之后的结果会在里面触发

bluetoothAdapter.startLeScan(leScanCallback)

回调对象里面可以获取扫描到到设备对象bluetoothDevice,设备信号rssi,设备提供的配对号byte,之后可以将结果显示到相关UI上面

private val leScanCallback =
    BluetoothAdapter.LeScanCallback {
    bluetoothDevice, rssi, byte ->
        if (bluetoothDevice == null){
   
            return@LeScanCallback
        } else {
   
            Log.d(TAG, bluetoothDevice.name + "->" + bluetoo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值