马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本指南将详细介绍如安在 Flutter 应用中利用 flutter_blue_plus 插件实现 BLE 蓝牙功能,包括扫描、毗连、读写特性值等操作。
1. 添加依赖
在 pubspec.yaml 中添加 flutter_blue_plus 依赖:
- dependencies:
- flutter:
- sdk: flutter
- flutter_blue_plus: ^1.10.0 # 使用最新版本
复制代码 运行以下下令安装依赖:
2. 配置权限
BLE 蓝牙需要蓝牙和位置权限。
Android
在 AndroidManifest.xml 中添加以下权限:
- <uses-permission android:name="android.permission.BLUETOOTH"/>
- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
复制代码 对于 Android 12 及以上版本,还需要添加以下配置:
- <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
- <uses-feature android:name="android.hardware.location" android:required="true"/>
复制代码 iOS
在 Info.plist 中添加以下权限:
- <key>NSBluetoothAlwaysUsageDescription</key>
- <string>我们需要访问蓝牙来连接设备</string>
- <key>NSBluetoothPeripheralUsageDescription</key>
- <string>我们需要访问蓝牙来连接设备</string>
- <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
- <string>我们需要访问位置来扫描蓝牙设备</string>
- <key>NSLocationWhenInUseUsageDescription</key>
- <string>我们需要访问位置来扫描蓝牙设备</string>
复制代码 3. 封装 BLE 工具类
创建一个 BluetoothManager 类,封装 BLE 蓝牙的常用操作。
4. 在 Flutter 应用中利用
以下是一个简单的 Flutter 应用示例,展示怎样利用 BluetoothManager 类。
- import 'package:flutter/material.dart';
- import 'bluetooth_manager.dart'; // 导入蓝牙工具类
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- home: BluetoothApp(),
- );
- }
- }
- class BluetoothApp extends StatefulWidget {
- @override
- _BluetoothAppState createState() => _BluetoothAppState();
- }
- class _BluetoothAppState extends State<BluetoothApp> {
- final BluetoothManager bluetoothManager = BluetoothManager();
- @override
- void initState() {
- super.initState();
- bluetoothManager.startScan(timeout: Duration(seconds: 4));
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: Text('Flutter BLE Example'),
- ),
- body: Column(
- children: [
- Expanded(
- child: ListView.builder(
- itemCount: bluetoothManager.devices.length,
- itemBuilder: (context, index) {
- return ListTile(
- title: Text(bluetoothManager.devices[index].name ?? 'Unknown device'),
- subtitle: Text(bluetoothManager.devices[index].id.toString()),
- onTap: () async {
- await bluetoothManager.connectToDevice(bluetoothManager.devices[index]);
- setState(() {});
- },
- );
- },
- ),
- ),
- if (bluetoothManager.connectedDevice != null)
- Padding(
- padding: const EdgeInsets.all(16.0),
- child: Column(
- children: [
- Text('Connected to: ${bluetoothManager.connectedDevice!.name}'),
- ElevatedButton(
- onPressed: () async {
- await bluetoothManager.disconnectDevice();
- setState(() {});
- },
- child: Text('Disconnect'),
- ),
- ],
- ),
- ),
- ],
- ),
- );
- }
- }
复制代码 5. 功能阐明
扫描设备:通过 startScan 方法扫描附近的 BLE 设备。
毗连设备:通过 connectToDevice 方法毗连设备,并自动发现服务和特性。
读写特性值:通过 readCharacteristic 和 writeCharacteristic 方法读写特性值。
监听通知:通过 setNotification 方法监听特性值的通知。
6. 注意事项
权限:确保在 Android 和 iOS 上精确配置蓝牙和位置权限。
动态权限请求:在高版本系统中,需要在运行时动态请求权限。
设备兼容性:不同设备的 BLE 实现大概有所不同,确保测试你的应用在各种设备上的兼容性。
通过以上步骤,你可以在 Flutter 应用中轻松实现 BLE 蓝牙功能。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |