# Jieli 插件 一个用于连接杰理蓝牙耳机的Flutter插件,支持Android 12+的BLE通信。 ## 功能 - 扫描支持特定BLE服务的耳机设备 - 连接设备并发现服务 - 接收耳机的唤醒通知 - 向耳机发送控制命令启动录音 - 接收音频数据流 ## 技术规范 此插件实现了以下BLE特性: - **服务UUID**: 0000A100-0000-1000-8000-00805F9B34FB - **音频数据特征UUID**: 0000A101-0000-1000-8000-00805F9B34FB - **控制特征UUID**: 0000A102-0000-1000-8000-00805F9B34FB ## 使用方法 ### 初始化插件 ```dart final jieli = Jieli(); ``` ### 检查蓝牙状态 ```dart bool isEnabled = await jieli.isBluetoothEnabled(); if (!isEnabled) { await jieli.requestBluetoothEnable(); } ``` ### 扫描设备 ```dart // 监听扫描结果 jieli.scanResults.listen((devices) { // 处理扫描到的设备列表 for (var device in devices) { print('发现设备: ${device.name} (${device.id}), RSSI: ${device.rssi}'); } }); // 开始扫描,10秒后自动停止 await jieli.startScan(scanTimeout: 10000); // 手动停止扫描 await jieli.stopScan(); ``` ### 连接设备 ```dart // 监听连接状态 jieli.connectionState.listen((state) { switch (state) { case ConnectionState.connected: print('设备已连接'); break; case ConnectionState.disconnected: print('设备已断开'); break; case ConnectionState.connecting: print('正在连接...'); break; case ConnectionState.disconnecting: print('正在断开...'); break; case ConnectionState.error: print('连接错误'); break; } }); // 连接到设备 await jieli.connect(deviceId); // 断开连接 await jieli.disconnect(); ``` ### 接收唤醒信号 ```dart // 监听唤醒信号 jieli.wakeupStream.listen((wakeup) { print('收到唤醒信号'); // 通常在收到唤醒后自动发送开始录音命令 }); ``` ### 发送录音命令 ```dart // 发送开始录音命令 await jieli.sendStartRecordingCommand(); // 发送停止录音命令 await jieli.sendStopRecordingCommand(); ``` ### 接收音频数据 ```dart // 监听音频数据流 jieli.audioDataStream.listen((data) { print('收到音频数据: ${data.length} 字节'); // 处理音频数据 }); ``` ### 资源清理 ```dart // 在不再需要插件时释放资源 await jieli.dispose(); ``` ## 权限 使用此插件需要以下Android权限: - Android 12+ (API 31+): `BLUETOOTH_SCAN`, `BLUETOOTH_CONNECT` - Android 11及以下: `BLUETOOTH`, `BLUETOOTH_ADMIN` 插件会在需要时自动请求权限,但建议在应用清单文件中声明这些权限: ```xml ```