seilon_voice_plugin 0.1.0
seilon_voice_plugin: ^0.1.0 copied to clipboard
Flutter bridge for the Seilon BLE recorder SDK on Android and iOS.
seilon_voice_plugin #
Seilon BLE SDK 1.0.0 的 Flutter 双端桥接。支持 Android API 24+ 与 iOS 15+,提供扫描连接、绑定、录音设备控制、Wi-Fi/TCP、文件传输、日志和原始 OPUS 帧。
初始化与事件 #
final plugin = SeilonVoicePlugin();
await plugin.initialize(
config: const SeilonSdkConfig(
commandTimeout: Duration(seconds: 8),
),
);
final subscription = plugin.events.listen((event) {
switch (event) {
case SeilonDeviceFoundEvent(:final device):
print('${device.name}: ${device.id}');
case SeilonAudioFrameEvent(:final opus):
print('OPUS ${opus.length} bytes');
default:
break;
}
});
未传入的配置字段由原生 SDK 使用内置默认值;默认 accountId 不进入 Dart 层。初始化后若要更换配置,先调用 close()。
扫描、连接和会话 #
if (defaultTargetPlatform == TargetPlatform.android) {
final permission = await plugin.requestPermissions(
SeilonPermissionOperation.scan,
);
if (!permission.granted) return;
}
await plugin.startScan(duration: const Duration(seconds: 30));
final session = await plugin.connect(deviceId);
await session.beginBind();
await session.handshake();
await session.completeBind();
final device = await session.queryDeviceInfo();
await session.startRecording();
await session.stopRecording();
connect() 返回的 SeilonRecorderSession 带有原生会话令牌。设备重连后,旧对象会以 SeilonErrorCode.notConnected 拒绝操作,不会误操作新会话。
失败调用抛出 SeilonSdkException:
try {
await session.queryFiles(1);
} on SeilonSdkException catch (error) {
print('${error.code.name}: ${error.message}');
}
平台配置 #
Android #
- 最低 API 24。
- 插件随包携带 SDK 1.0.0 本地 Maven 制品;其中的 AAR SHA256 为
351ca635d26951f37ee21e3be4336e5cf3f27c0fce0c28e23d4d34aa22a9a700。 - AAR Manifest 声明蓝牙、定位、Wi-Fi、网络和 TCP 所需权限。
- 调用
checkPermissions或requestPermissions处理 Android 运行时权限;插件不会打开已关闭的蓝牙或 Wi-Fi。
iOS #
- 最低 iOS 15,支持 CocoaPods 与 Swift Package Manager。
- 宿主
Info.plist必须提供:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>用于扫描并连接 Seilon 录音设备</string>
<key>NSLocalNetworkUsageDescription</key>
<string>用于连接 Seilon 录音设备提供的本地 TCP 服务</string>
- 连接设备热点时,为 App ID 与 target 启用 Hotspot Configuration capability。无需 Access Wi-Fi Information。
生命周期与约束 #
- 一个插件实例只管理一个原生 SDK 和一个设备会话。
- SDK 不自动绑定、握手、查询、重连或切换 BLE/TCP 通道。
- 同一会话同时只允许一个等待设备回复的普通操作;并发调用会返回
busy。 downloadFile返回本地路径。取消后只有显式调用resumeFileDownload才会续传。- 页面或业务容器退出时取消事件订阅并调用
close()。 - SDK 不提供 OTA、DNR、ASR、分享、OPUS 播放或 OPUS/WAV 转换。
完整功能入口和受控删除/关机测试流程见 example/。