|
|
|
@ -37,7 +37,7 @@ enum VoiceInputMode { |
|
|
|
phoneCall, // 打电话模式 |
|
|
|
} |
|
|
|
|
|
|
|
class AgentController extends GetxController { |
|
|
|
class AgentController extends GetxController with WidgetsBindingObserver { |
|
|
|
static AgentController get to => Get.find(); //单例访问模式 |
|
|
|
|
|
|
|
// 聊天消息列表 |
|
|
|
@ -171,6 +171,9 @@ class AgentController extends GetxController { |
|
|
|
|
|
|
|
startVoiceInput(); //开启语音输入 |
|
|
|
|
|
|
|
// 监听应用生命周期:当应用切到后台/失焦时兜底结束按住说话,防止 onPointerUp 未触发 |
|
|
|
WidgetsBinding.instance.addObserver(this); |
|
|
|
|
|
|
|
// _qqmusicManager.syncCurrentPlayInfo(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -217,6 +220,10 @@ class AgentController extends GetxController { |
|
|
|
_amapeventSubscription?.cancel(); |
|
|
|
_bleEventSubscription?.cancel(); |
|
|
|
Intro.of(Get.context!).dispose(); |
|
|
|
|
|
|
|
// 取消应用生命周期监听 |
|
|
|
WidgetsBinding.instance.removeObserver(this); |
|
|
|
|
|
|
|
super.onClose(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -2042,6 +2049,26 @@ class AgentController extends GetxController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/// 应用生命周期变化回调 |
|
|
|
/// 目的: |
|
|
|
/// - 当应用进入后台、失去焦点或被系统分离(inactive/paused/detached)时, |
|
|
|
/// 兜底结束按住说话(调用 endPushToTalk),避免因 onPointerUp 未触发而卡在“按下”状态。 |
|
|
|
/// 参数: |
|
|
|
/// - state: 当前应用生命周期状态 |
|
|
|
@override |
|
|
|
void didChangeAppLifecycleState(AppLifecycleState state) { |
|
|
|
if (state == AppLifecycleState.inactive || |
|
|
|
state == AppLifecycleState.paused || |
|
|
|
state == AppLifecycleState.detached) { |
|
|
|
if (isPushToTalkActive.value) { |
|
|
|
// 使用 microtask 避免阻塞当前生命周期回调 |
|
|
|
Future.microtask(() { |
|
|
|
endPushToTalk(); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ========== 媒体会话回调处理方法 ========== |
|
|
|
|
|
|
|
/// 处理来自系统通知栏的播放操作 |
|
|
|
|