littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于Android BLE框架的蓝牙设备管理工具

项目简介

本项目是基于Android BLE(Bluetooth Low Energy)框架的蓝牙设备管理工具。它提供一套完整API,可用于扫描、连接、管理多个蓝牙设备,支持广播包解析、服务读写及通知等功能。项目旨在简化蓝牙设备接入流程,具备多设备连接管理、自定义扫描过滤条件、连接失败重试等功能,适用于需与蓝牙设备通信的Android应用。

项目的主要特性和功能

  • 多设备连接管理:支持同时管理多个蓝牙设备连接,可配置最大连接数量,超量时按LRU算法自动断开最近最久未使用设备。
  • 广播包解析:能解析蓝牙设备广播包,获取设备名称、信号强度、服务UUID等信息。
  • 自定义扫描过滤条件:可根据设备名称、MAC地址、信号强度、UUID等条件进行扫描过滤。
  • 连接失败重试:支持配置连接和操作数据的重试次数及重试间隔时间,保障连接和数据操作稳定性。
  • 服务读写及通知:支持对蓝牙设备服务进行读写操作,支持注册和取消通知监听。
  • 超时配置:支持配置扫描、连接和操作数据的超时时间,避免长时间等待。

安装使用步骤

假设用户已下载本项目的源码文件。

1. 引入SDK

在项目的build.gradle文件中添加以下依赖: gradle compile 'com.vise.xiaoyaoyou:baseble:2.0.6'

2. 初始化

在使用蓝牙功能前,需在应用的初始化阶段进行初始化配置: ```java ViseBle.config() .setScanTimeout(-1) // 扫描超时时间,设置为永久扫描 .setConnectTimeout(10 * 1000) // 连接超时时间 .setOperateTimeout(5 * 1000) // 数据操作超时时间 .setConnectRetryCount(3) // 连接失败重试次数 .setConnectRetryInterval(1000) // 连接失败重试间隔时间 .setOperateRetryCount(3) // 数据操作失败重试次数 .setOperateRetryInterval(1000) // 数据操作失败重试间隔时间 .setMaxConnectCount(3); // 最大连接设备数量

ViseBle.getInstance().init(this); // 初始化蓝牙信息 ```

3. 设备扫描

启动扫描并设置扫描回调: ```java ViseBle.getInstance().startScan(new ScanCallback(new IScanCallback() { @Override public void onDeviceFound(BluetoothLeDevice bluetoothLeDevice) { // 处理发现的设备 }

@Override
public void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {
    // 扫描完成
}

@Override
public void onScanTimeout() {
    // 扫描超时
}

})); ```

4. 设备连接

连接指定设备: ```java ViseBle.getInstance().connect(bluetoothLeDevice, new IConnectCallback() { @Override public void onConnectSuccess(DeviceMirror deviceMirror) { // 连接成功 }

@Override
public void onConnectFailure(BleException exception) {
    // 连接失败
}

@Override
public void onDisconnect(boolean isActive) {
    // 连接断开
}

}); ```

5. 数据读写

绑定数据通道并进行读写操作: ```java BluetoothGattChannel bluetoothGattChannel = new BluetoothGattChannel.Builder() .setBluetoothGatt(deviceMirror.getBluetoothGatt()) .setPropertyType(PropertyType.PROPERTY_WRITE) .setServiceUUID(serviceUUID) .setCharacteristicUUID(characteristicUUID) .setDescriptorUUID(descriptorUUID) .builder();

deviceMirror.bindChannel(new IBleCallback() { @Override public void onSuccess(byte[] data, BluetoothGattChannel bluetoothGattChannel, BluetoothLeDevice bluetoothLeDevice) { // 操作成功 }

@Override
public void onFailure(BleException exception) {
    // 操作失败
}

}, bluetoothGattChannel);

deviceMirror.writeData(data); // 写入数据 deviceMirror.readData(); // 读取数据 ```

6. 接收通知

注册通知监听: ```java BluetoothGattChannel bluetoothGattChannel = new BluetoothGattChannel.Builder() .setBluetoothGatt(deviceMirror.getBluetoothGatt()) .setPropertyType(PropertyType.PROPERTY_NOTIFY) .setServiceUUID(serviceUUID) .setCharacteristicUUID(characteristicUUID) .setDescriptorUUID(descriptorUUID) .builder();

deviceMirror.bindChannel(new IBleCallback() { @Override public void onSuccess(byte[] data, BluetoothGattChannel bluetoothGattChannel, BluetoothLeDevice bluetoothLeDevice) { // 操作成功 }

@Override
public void onFailure(BleException exception) {
    // 操作失败
}

}, bluetoothGattChannel);

deviceMirror.registerNotify(false); // 注册通知 ``` 通过以上步骤,可在Android应用中轻松实现蓝牙设备的扫描、连接、数据读写及通知等功能。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】