|
|
@ -183,34 +183,35 @@ class BleService { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//======================================================================== |
|
|
//======================================================================== |
|
|
// 以下是Companion Device相关功能 |
|
|
// 以下是Companion Device相关功能 |
|
|
//======================================================================== |
|
|
//======================================================================== |
|
|
|
|
|
|
|
|
/// 检查设备是否支持Companion Device Manager |
|
|
/// 检查设备是否支持Companion Device Manager |
|
|
/// |
|
|
/// |
|
|
/// 返回设备是否支持Companion Device Manager API |
|
|
/// 返回设备是否支持Companion Device Manager API |
|
|
/// 仅在Android 8.0及以上版本可用 |
|
|
/// 仅在Android 8.0及以上版本可用 |
|
|
Future<bool> isCompanionSupported() async { |
|
|
Future<bool> isCompanionSupported() async { |
|
|
try { |
|
|
try { |
|
|
final result = await _methodChannel.invokeMethod<bool>('isCompanionSupported'); |
|
|
final result = |
|
|
|
|
|
await _methodChannel.invokeMethod<bool>('isCompanionSupported'); |
|
|
return result ?? false; |
|
|
return result ?? false; |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
print('检查Companion设备支持失败: $e'); |
|
|
print('检查Companion设备支持失败: $e'); |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 启动设备关联流程 |
|
|
/// 启动设备关联流程 |
|
|
/// |
|
|
/// |
|
|
/// 弹出系统设备选择对话框,用户选择后将建立持久化关联 |
|
|
/// 弹出系统设备选择对话框,用户选择后将建立持久化关联 |
|
|
/// 关联成功后,应用将获得后台扫描和启动前台服务的特权 |
|
|
/// 关联成功后,应用将获得后台扫描和启动前台服务的特权 |
|
|
/// |
|
|
/// |
|
|
/// [deviceNamePattern] 设备名称正则表达式,例如"MyHeadset.*" |
|
|
/// [deviceNamePattern] 设备名称正则表达式,例如"MyHeadset.*" |
|
|
/// [serviceUuid] 可选的服务UUID |
|
|
/// [serviceUuid] 可选的服务UUID |
|
|
/// [macAddress] 可选的MAC地址 |
|
|
/// [macAddress] 可选的MAC地址 |
|
|
/// |
|
|
/// |
|
|
/// 返回是否成功启动关联流程 |
|
|
/// 返回是否成功启动关联流程 |
|
|
Future<bool> startDeviceAssociation({ |
|
|
Future<bool> startDeviceAssociation({ |
|
|
String? deviceNamePattern, |
|
|
String? deviceNamePattern, |
|
|
@ -232,13 +233,14 @@ class BleService { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 获取已关联的设备MAC地址 |
|
|
/// 获取已关联的设备MAC地址 |
|
|
/// |
|
|
/// |
|
|
/// 返回已关联的设备MAC地址,如果没有则返回null |
|
|
/// 返回已关联的设备MAC地址,如果没有则返回null |
|
|
Future<String?> getPairedMacAddress() async { |
|
|
Future<String?> getPairedMacAddress() async { |
|
|
try { |
|
|
try { |
|
|
final result = await _methodChannel.invokeMethod<String>('getPairedMacAddress'); |
|
|
final result = |
|
|
|
|
|
await _methodChannel.invokeMethod<String>('getPairedMacAddress'); |
|
|
return result; |
|
|
return result; |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
print('获取配对MAC地址失败: $e'); |
|
|
print('获取配对MAC地址失败: $e'); |
|
|
@ -246,9 +248,8 @@ class BleService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// 检查BLE连接状态 |
|
|
/// 检查BLE连接状态 |
|
|
/// |
|
|
/// |
|
|
/// 返回BLE是否已连接 |
|
|
/// 返回BLE是否已连接 |
|
|
Future<bool> isBleConnected() async { |
|
|
Future<bool> isBleConnected() async { |
|
|
try { |
|
|
try { |
|
|
@ -260,11 +261,31 @@ class BleService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// 设置是否是ota模式 |
|
|
|
|
|
Future<void> setEnterOta(bool enterOta) async { |
|
|
|
|
|
try { |
|
|
|
|
|
await _methodChannel.invokeMethod<String>('setEnterOta', { |
|
|
|
|
|
'enterOta': enterOta, |
|
|
|
|
|
}); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
print('设置是否是ota模式失败: $e'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// 断开连接 |
|
|
|
|
|
Future<void> disconnect() async { |
|
|
|
|
|
try { |
|
|
|
|
|
await _methodChannel.invokeMethod<String>('disconnect'); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
print('断开连接失败: $e'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/// 注册BLE后台扫描 |
|
|
/// 注册BLE后台扫描 |
|
|
/// |
|
|
/// |
|
|
/// 注册后,即使应用被杀死,系统也会在检测到设备广播时唤醒应用 |
|
|
/// 注册后,即使应用被杀死,系统也会在检测到设备广播时唤醒应用 |
|
|
/// 这是确保设备可以在应用后台时被自动连接的关键功能 |
|
|
/// 这是确保设备可以在应用后台时被自动连接的关键功能 |
|
|
/// |
|
|
/// |
|
|
/// [macAddress] 可选的设备MAC地址,如果不提供则使用已关联的设备 |
|
|
/// [macAddress] 可选的设备MAC地址,如果不提供则使用已关联的设备 |
|
|
Future<bool> registerBackgroundScan({String? macAddress}) async { |
|
|
Future<bool> registerBackgroundScan({String? macAddress}) async { |
|
|
try { |
|
|
try { |
|
|
@ -290,13 +311,14 @@ class BleService { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 清除所有设备关联 |
|
|
/// 清除所有设备关联 |
|
|
/// |
|
|
/// |
|
|
/// 用于重置设备关联状态,通常在用户主动解除关联或调试时使用 |
|
|
/// 用于重置设备关联状态,通常在用户主动解除关联或调试时使用 |
|
|
Future<bool> clearAssociations() async { |
|
|
Future<bool> clearAssociations() async { |
|
|
try { |
|
|
try { |
|
|
final result = await _methodChannel.invokeMethod<bool>('clearAssociations'); |
|
|
final result = |
|
|
|
|
|
await _methodChannel.invokeMethod<bool>('clearAssociations'); |
|
|
return result ?? false; |
|
|
return result ?? false; |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
print('清除设备关联失败: $e'); |
|
|
print('清除设备关联失败: $e'); |
|
|
|