Flutter集成来康宁SDK插件laikangning_sdk的使用
Flutter集成来康宁SDK插件laikangning_sdk的使用
本仓库是服务于莱康宁远程胎监设备 <code>eFM</code>
系列。
功能
初始化SDK
var laikangningSdk = LaikangningSdk();
laikangningSdk.initialize();
开启声音
laikangningSdk.startWork();
关闭声音
laikangningSdk.stopWork();
发送数据
laikangningSdk.putData(bytes);
接受解析协议后数据为
laikangningSdk.getFhrData().listen((event) {
event.data.afm;
_bleLogger.addToLog('type: ${event.type.name} - '
'afm: ${event.data.afm} - '
'toco: ${event.data.toco} - '
'tocoFlag: ${event.data.tocoFlag}'
'fhr1: ${event.data.fhr1} - '
'fhr2: ${event.data.fhr2}'
'devicePower: ${event.data.devicePower}'
'afmFlag: ${event.data.afmFlag}'
'docFlag: ${event.data.docFlag}'
'fmFlag: ${event.data.fmFlag}');
});
销毁SDK
laikangningSdk.deinitilize();
完整示例代码
以下是一个完整的示例代码,展示如何在Flutter项目中集成 laikangning_sdk
插件。
示例代码
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:laikangning_sdk/laikangning_sdk.dart';
import 'package:laikangning_sdk_example/src/ble/ble_device_connector.dart';
import 'package:laikangning_sdk_example/src/ble/ble_device_interactor.dart';
import 'package:laikangning_sdk_example/src/ble/ble_scanner.dart';
import 'package:laikangning_sdk_example/src/ble/ble_status_monitor.dart';
import 'package:laikangning_sdk_example/src/ui/ble_status_screen.dart';
import 'package:laikangning_sdk_example/src/ui/device_list.dart';
import 'package:provider/provider.dart';
import 'src/ble/ble_logger.dart';
const _themeColor = Colors.lightGreen;
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化日志记录器
final _bleLogger = BleLogger();
// 初始化蓝牙服务
final _ble = FlutterReactiveBle();
// 蓝牙扫描器
final _scanner = BleScanner(ble: _ble, logMessage: _bleLogger.addToLog);
// 蓝牙状态监控器
final _monitor = BleStatusMonitor(_ble);
// 蓝牙设备连接器
final _connector = BleDeviceConnector(
ble: _ble,
logMessage: _bleLogger.addToLog,
);
// 初始化Laikangning SDK
var laikangningSdk = LaikangningSdk();
laikangningSdk.initialize();
laikangningSdk.startWork();
// 监听FHR数据事件
laikangningSdk.getFhrData().listen((event) {
event.data.afm;
_bleLogger.addToLog('type: ${event.type.name} - '
'afm: ${event.data.afm} - '
'toco: ${event.data.toco} - '
'tocoFlag: ${event.data.tocoFlag}'
'fhr1: ${event.data.fhr1} - '
'fhr2: ${event.data.fhr2}'
'devicePower: ${event.data.devicePower}'
'afmFlag: ${event.data.afmFlag}'
'docFlag: ${event.data.docFlag}'
'fmFlag: ${event.data.fmFlag}');
});
// 初始化服务发现器
final _serviceDiscoverer = BleDeviceInteractor(
laikangningSdk: laikangningSdk,
bleDiscoverServices: _ble.discoverServices,
readCharacteristic: _ble.readCharacteristic,
writeWithResponse: _ble.writeCharacteristicWithResponse,
writeWithOutResponse: _ble.writeCharacteristicWithoutResponse,
subscribeToCharacteristic: _ble.subscribeToCharacteristic,
logMessage: _bleLogger.addToLog,
);
// 启动Flutter应用
runApp(
MultiProvider(
providers: [
Provider.value(value: _scanner),
Provider.value(value: _monitor),
Provider.value(value: _connector),
Provider.value(value: _serviceDiscoverer),
Provider.value(value: _bleLogger),
StreamProvider<BleScannerState?>(
create: (_) => _scanner.state,
initialData: const BleScannerState(
discoveredDevices: [],
scanIsInProgress: false,
),
),
StreamProvider<BleStatus?>(
create: (_) => _monitor.state,
initialData: BleStatus.unknown,
),
StreamProvider<ConnectionStateUpdate>(
create: (_) => _connector.state,
initialData: const ConnectionStateUpdate(
deviceId: 'Unknown device',
connectionState: DeviceConnectionState.disconnected,
failure: null,
),
),
],
child: MaterialApp(
title: 'Flutter Reactive BLE example',
color: _themeColor,
theme: ThemeData(primarySwatch: _themeColor),
home: const HomeScreen(),
),
),
);
}
class HomeScreen extends StatelessWidget {
const HomeScreen({
Key? key,
}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) => Consumer<BleStatus?>(
builder: (_, status, __) {
if (status == BleStatus.ready) {
return const DeviceListScreen();
} else {
return BleStatusScreen(status: status ?? BleStatus.unknown);
}
},
);
}
更多关于Flutter集成来康宁SDK插件laikangning_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter集成来康宁SDK插件laikangning_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成第三方SDK(如来康宁SDK)通常需要创建一个Flutter插件,以便在Dart代码中调用原生平台(Android和iOS)的功能。以下是一个基本的步骤指南,帮助你集成来康宁SDK(假设SDK名称为laikangning_sdk
)。
1. 创建Flutter插件
首先,你需要创建一个Flutter插件项目。你可以使用以下命令来创建一个新的插件:
flutter create --template=plugin laikangning_sdk_plugin
这将创建一个名为laikangning_sdk_plugin
的Flutter插件项目。
2. 添加来康宁SDK到原生项目
接下来,你需要将laikangning_sdk
添加到Android和iOS的原生项目中。
Android
- 打开
android
目录下的build.gradle
文件。 - 在
dependencies
块中添加来康宁SDK的依赖项。例如:
dependencies {
implementation 'com.laikangning:sdk:1.0.0' // 替换为实际的SDK版本
}
- 同步Gradle项目。
iOS
- 打开
ios
目录下的Podfile
文件。 - 添加来康宁SDK的依赖项。例如:
pod 'LaikangningSDK', '~> 1.0.0' # 替换为实际的SDK版本
- 运行
pod install
来安装依赖。
3. 实现原生代码
在Flutter插件中,你需要实现原生代码来调用laikangning_sdk
的功能。
Android
- 打开
android/src/main/kotlin/com/example/laikangning_sdk_plugin/LaikangningSdkPlugin.kt
文件。 - 实现调用
laikangning_sdk
的方法。例如:
package com.example.laikangning_sdk_plugin
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.plugin.common.PluginRegistry.Registrar
class LaikangningSdkPlugin: MethodCallHandler {
companion object {
@JvmStatic
fun registerWith(registrar: Registrar) {
val channel = MethodChannel(registrar.messenger(), "laikangning_sdk_plugin")
channel.setMethodCallHandler(LaikangningSdkPlugin())
}
}
override fun onMethodCall(call: MethodCall, result: Result) {
when (call.method) {
"initializeSdk" -> {
// 调用来康宁SDK的初始化方法
// LaikangningSDK.initialize()
result.success("SDK Initialized")
}
else -> result.notImplemented()
}
}
}
iOS
- 打开
ios/Classes/LaikangningSdkPlugin.m
文件。 - 实现调用
laikangning_sdk
的方法。例如:
#import "LaikangningSdkPlugin.h"
#import <LaikangningSDK/LaikangningSDK.h>
@implementation LaikangningSdkPlugin
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
FlutterMethodChannel* channel = [FlutterMethodChannel
methodChannelWithName:@"laikangning_sdk_plugin"
binaryMessenger:[registrar messenger]];
LaikangningSdkPlugin* instance = [[LaikangningSdkPlugin alloc] init];
[registrar addMethodCallDelegate:instance channel:channel];
}
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
if ([@"initializeSdk" isEqualToString:call.method]) {
// 调用来康宁SDK的初始化方法
// [LaikangningSDK initialize];
result(@"SDK Initialized");
} else {
result(FlutterMethodNotImplemented);
}
}
@end
4. 在Dart代码中调用插件
最后,你可以在Flutter应用中使用这个插件来调用laikangning_sdk
的功能。
import 'package:flutter/material.dart';
import 'package:laikangning_sdk_plugin/laikangning_sdk_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Laikangning SDK Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
String result = await LaikangningSdkPlugin.initializeSdk();
print(result);
},
child: Text('Initialize SDK'),
),
),
),
);
}
}