Jelajahi Sumber

[WallPadCall]
1. 경비실기 착신일 경우, 주방TV에서 통화를 걸면 30초동안 대기 하지 않고 간헐적으로 빨리 끊어지는 이슈 수정
- 착신 통화에서 Call event가 2번 들어오는 경우, Popup 관련 이슈 발생 수정
2. 버전업
- 2022.11.29.01 -> 2023.03.22.01
3. 최신 APK 등록

jglee 2 tahun lalu
induk
melakukan
eed920b2f5

TEMPAT SAMPAH
10_Release/WallPadCall.apk


+ 1 - 1
WallPadCall/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadcall"
     android:versionCode="17"
-    android:versionName="2022.11.29.01">
+    android:versionName="2023.03.22.01">
 
     <!--android:sharedUserId="android.uid.system"-->
     <!--<uses-sdk-->

+ 23 - 10
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkGuard.java

@@ -472,6 +472,10 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
     }
 
     boolean bRcvEnd = false;
+    //add KSJ 20230322
+    //착신 통화에서 calling event 가 두번 들어오는 현상에서 popup 관련 에러가 발생하여 통화 종료 되는 현상 발행.
+    //boolean 변수 추가 하여 착신 통화시 필요한 부분에서만 event 처리 하도록 수정.
+    boolean bEventIncomingState = false;
 
     @Override
     public void onCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
@@ -497,20 +501,25 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
                     ((MainActivity) mContext).displayRemoteID(RemoteIDInfo.strName);
                     Global.make1stCallHistoryInfo(strRemoteIP, strRemoteSIPID, CALLDIRECTION.OUT, CALLACTION.MISS, CALLRESULT.OUT_MISS);
                 } else if (eCallStatus == CALLSTATUS.CALLING) {
-                    bRcvEnd = false;
+
                     Global.playMelodyRepeat(eCallType);
                     super.setFinishTimerDestroy();
-                    MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.GUARD, false);
-                    if (Global.getKitchenTVIdx(eCallOwner) >= 0 || Global.getBathPhoneIdx(eCallOwner) >= 0 || eCallOwner == CALLOWNER.SUB_WALLPAD || Global.getBathTVIdx(eCallOwner) >= 0) {
-                        MainActivity.mSubPhoneController.sendACKNewCall(eCallOwner, eCallType, RemoteIDInfo.strGuardTypeBySubPhone, String.valueOf(ConfigValues.bGuardVideoEnable));
-                        ((MainActivity) (getContext())).StartPopup(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
-                    }
-                    if (eCallOwner == CALLOWNER.MOBILE) {
-                        // 모바일에서 경비 발신하는 경우 (방문객 원격통화)
-                        ((MainActivity) mContext).showRemoteCallNoticeText(true); // 방문객원격통화 팝업 삭제 -> 상단 문구로 대체
+
+                    if(!bEventIncomingState)
+                    {
+                        MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.GUARD, false);
+                        if (Global.getKitchenTVIdx(eCallOwner) >= 0 || Global.getBathPhoneIdx(eCallOwner) >= 0 || eCallOwner == CALLOWNER.SUB_WALLPAD || Global.getBathTVIdx(eCallOwner) >= 0) {
+                            MainActivity.mSubPhoneController.sendACKNewCall(eCallOwner, eCallType, RemoteIDInfo.strGuardTypeBySubPhone, String.valueOf(ConfigValues.bGuardVideoEnable));
+                            ((MainActivity) (getContext())).StartPopup(ID.POPUP.POPUP_NOTICE_SUBPHONETALK);
+                        }
+                        if (eCallOwner == CALLOWNER.MOBILE) {
+                            // 모바일에서 경비 발신하는 경우 (방문객 원격통화)
+                            ((MainActivity) mContext).showRemoteCallNoticeText(true); // 방문객원격통화 팝업 삭제 -> 상단 문구로 대체
 //                        ((MainActivity) mContext).StartPopup(ID.POPUP.POPUP_NOTICE_REMOTECALL);
+                        }
                     }
-
+                    bRcvEnd = false;
+                    bEventIncomingState = true;
                     MainActivity.mCallController.set1stCallTimer(eCallType, MainActivity.mCallController.mCTT.CALLING);
                     ((MainActivity) mContext).displayRemoteID(RemoteIDInfo.strName);
                     Global.make1stCallHistoryInfo(strRemoteIP, strRemoteSIPID, CALLDIRECTION.OUT, CALLACTION.MISS, CALLRESULT.OUT_MISS);
@@ -588,6 +597,7 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
                         return;
                     }
                     bRcvEnd = true;
+                    bEventIncomingState = false;
                     MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
                     if (eCallOwner == CALLOWNER.MOBILE) {
                         MainActivity.mCallController.quitMoIPCall();
@@ -609,6 +619,7 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
                         return;
                     }
                     bRcvEnd = true;
+                    bEventIncomingState = false;
                     if (eCallOwner == CALLOWNER.MOBILE) {
                         // 모바일에서 경비 발신하는 경우 (방문객 원격통화)
                         ((MainActivity) mContext).showRemoteCallNoticeText(false);
@@ -638,6 +649,7 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
                         return;
                     }
                     bRcvEnd = true;
+                    bEventIncomingState = false;
                     MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
                     ((MainActivity) mContext).displayRemoteID(null);
                     Global.stopMelodyRepeat();
@@ -658,6 +670,7 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
                         return;
                     }
                     bRcvEnd = true;
+                    bEventIncomingState = false;
                     if (eCallOwner == CALLOWNER.MOBILE) {
                         ((MainActivity) mContext).showRemoteCallNoticeText(false);
                     } else {