diff --git a/star_lock/android/app/src/main/AndroidManifest.xml b/star_lock/android/app/src/main/AndroidManifest.xml index 6ec34a31..dd64836f 100644 --- a/star_lock/android/app/src/main/AndroidManifest.xml +++ b/star_lock/android/app/src/main/AndroidManifest.xml @@ -27,6 +27,7 @@ + @@ -35,6 +36,9 @@ + diff --git a/star_lock/android/app/src/main/res/drawable/app_icon.png b/star_lock/android/app/src/main/res/drawable/app_icon.png new file mode 100644 index 00000000..20f2a164 Binary files /dev/null and b/star_lock/android/app/src/main/res/drawable/app_icon.png differ diff --git a/star_lock/lib/main.dart b/star_lock/lib/main.dart index 4647ee9a..44bc6a36 100644 --- a/star_lock/lib/main.dart +++ b/star_lock/lib/main.dart @@ -53,9 +53,9 @@ initLocalNotification() async { WidgetsFlutterBinding.ensureInitialized(); final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); - final AndroidInitializationSettings initializationSettingsAndroid = + const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); - final InitializationSettings initializationSettings = + const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid); await flutterLocalNotificationsPlugin.initialize(initializationSettings); } diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart index 92a96d31..4889415c 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart @@ -43,53 +43,29 @@ class LockMonitoringLogic extends BaseGetXController { StreamSubscription? _getUDPStatusRefreshUIEvent; void _getUDPStatusRefreshUIAction() { _getUDPStatusRefreshUIEvent = - eventBus.on().listen((event) { - if (UDPTalkClass().isEndCall == true) { + eventBus.on().listen((event) async { + state.udpStatus.value = event.udpStatus; + state.oneMinuteTime.value = 0; + + // 如果已经挂断,则取消定时器并退出 + if (state.udpStatus.value == 0 && UDPTalkClass().isEndCall == true) { state.oneMinuteTimeTimer.cancel(); + state.oneMinuteTime.value = 0; return; } - state.udpStatus.value = event.udpStatus; + // 如果是接听状态,则启动定时器更新通话时间 if (state.udpStatus.value == 8) { - if (state.oneMinuteTime.value >= 60) { - // 超过60秒了 - _getUDPStatusRefreshUIEvent!.cancel(); - if (state.oneMinuteTimeTimer != null) { - state.oneMinuteTimeTimer.cancel(); - } - initiateUdpHangUpAction(); - print('输出挂断1'); - return; - } - // 接听成功了,然后刷新界面的时间 60秒以后自动挂断 + state.oneMinuteTimeTimer.cancel(); // 取消旧定时器 state.oneMinuteTimeTimer = - Timer.periodic(const Duration(seconds: 1), (Timer t) async { + Timer.periodic(const Duration(seconds: 1), (Timer t) { state.oneMinuteTime.value++; - // Get.log('state.oneMinuteTime.value:${state.oneMinuteTime.value}'); - // if (state.oneMinuteTime.value >= 60) { - // // 超过60秒了 - // _getUDPStatusRefreshUIEvent!.cancel(); - // if (state.oneMinuteTimeTimer != null) { - // state.oneMinuteTimeTimer.cancel(); - // } - // initiateUdpHangUpAction(); - // print('输出挂断1'); - // state.oneMinuteTime.value = 0; - // // 挂断 - // UDPSenderManage.sendMainProtocol( - // command: 150, - // commandTypeIsCalling: 1, - // subCommand: 30, - // lockID: UDPManage().lockId, - // lockIP: UDPManage().host, - // userMobile: await state.userUid, - // userMobileIP: await state.userMobileIP, - // endData: []); - - // CallTalk().stopPcmSound(); - // // 关闭当前界面 - // Get.back(); - // } + if (state.oneMinuteTime.value >= 60) { + t.cancel(); // 取消定时器 + initiateUdpHangUpAction(); // 挂断操作 + print('通话时间超过60秒,自动挂断'); + state.oneMinuteTime.value = 0; + } }); } }); @@ -98,8 +74,8 @@ class LockMonitoringLogic extends BaseGetXController { //发起接听命令,每隔一秒钟发一次,六秒无应答则失败 void initiateUdpAnswerAction() { state.answerTimer = Timer.periodic(const Duration(seconds: 1), (timer) { - state.answerSeconds++; udpAnswerAction(); + state.answerSeconds++; //如果接听成功,取消定时器;接听失败,继续发接听命令 if (UDPTalkClass().status == 8) { diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart index 61ad9c4c..2fae5f2c 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart @@ -169,7 +169,11 @@ class _LockMonitoringPageState extends State { return Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ // 接听 Obx(() => bottomBtnItemWidget( - getAnswerBtnImg(), getAnswerBtnName(), Colors.white, () async { + state.isClickAnswer.value == true + ? 'images/main/icon_lockDetail_monitoringUnTalkback.png' + : getAnswerBtnImg(), + state.isClickAnswer.value == true ? '长按说话' : getAnswerBtnName(), + Colors.white, () async { if (state.isClickAnswer.value == false) { logic.initiateUdpAnswerAction(); state.isClickAnswer.value = true; @@ -200,6 +204,7 @@ class _LockMonitoringPageState extends State { state.isClickHangUp.value = true; } else { print('点了这里?'); + state.isClickHangUp.value = false; UDPTalkClass().stopLocalAudio(); } }), diff --git a/star_lock/lib/talk/udp/udp_reciverData.dart b/star_lock/lib/talk/udp/udp_reciverData.dart index f34e95f3..5766989e 100644 --- a/star_lock/lib/talk/udp/udp_reciverData.dart +++ b/star_lock/lib/talk/udp/udp_reciverData.dart @@ -68,6 +68,7 @@ class CommandUDPReciverManager { // 停止声音 UDPTalkClass().stopLocalAudio(); eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); + print('接听反馈刷新UI1'); } } break; @@ -105,7 +106,6 @@ class CommandUDPReciverManager { break; case 30: { - print('反馈挂断1'); // 挂断 if ((data[7] & 0x3) == 1) { // 对方结束对讲 @@ -114,13 +114,13 @@ class CommandUDPReciverManager { //结束对讲反馈 print("结束对讲反馈"); } - UDPTalkClass().callNoAnswer(); - // UDPTalkClass().status = 0; - // UDPTalkClass().isBeCall = false; - // UDPTalkClass().stopLocalAudio(); - // CallTalk().stopPcmSound(); - // eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); - // Get.back(); + UDPTalkClass().status = 0; + UDPTalkClass().isBeCall = false; + UDPTalkClass().stopLocalAudio(); + CallTalk().stopPcmSound(); + eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); + Get.back(); + print('挂断反馈刷新UI1'); } break; case 140: diff --git a/star_lock/lib/talk/udp/udp_talkClass.dart b/star_lock/lib/talk/udp/udp_talkClass.dart index 2cf4f029..d12ef82f 100644 --- a/star_lock/lib/talk/udp/udp_talkClass.dart +++ b/star_lock/lib/talk/udp/udp_talkClass.dart @@ -104,9 +104,10 @@ class UDPTalkClass { Future _showNotification( FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin) async { const AndroidNotificationDetails androidPlatformChannelSpecifics = - AndroidNotificationDetails('your channel id', 'your channel name', + AndroidNotificationDetails('1', 'flutter_channel', importance: Importance.max, priority: Priority.high, + playSound: true, ticker: 'ticker'); const NotificationDetails platformChannelSpecifics = NotificationDetails(android: androidPlatformChannelSpecifics); @@ -171,16 +172,13 @@ class UDPTalkClass { //呼叫有响铃无应答处理 void callNoAnswer() { - print('无应答处理'); - + // print('无应答处理'); stopLocalAudio(); CallTalk().stopPcmSound(); status = 0; isBeCall = false; isEndCall = true; LockMonitoringState().isClickHangUp.value = false; - - eventBus.fire(GetUDPStatusRefreshUI(status)); Get.back(); } } diff --git a/star_lock/lib/tools/xs_jPhush.dart b/star_lock/lib/tools/xs_jPhush.dart index edd217dc..1ced70b1 100644 --- a/star_lock/lib/tools/xs_jPhush.dart +++ b/star_lock/lib/tools/xs_jPhush.dart @@ -15,7 +15,7 @@ class XSJPushProvider { appKey: "7ff37d174c1a568a89e98dad", channel: "flutter_channel", production: false, - debug: true, + debug: false, ); jpush.addEventHandler(