Просмотр исходного кода

[WallPadCall]
1. App Ver. 갱신
- 2022.05.19.01
2. 로비통화 거절시 이슈 개선
- 호출 수신중 "종료"버튼을 눌러 통화를 거절하는 경우, 통화목록에 부재중으로 처리되는 증상
- 호출 수신중 "종료"버튼을 눌러 통화를 거절하는 경우, 방문자 사진이 저장되는 증상
3. 이웃/로비통화 시작 후 바로 종료시 이슈 개선
- 로비통화 시작 후, 바로 통화종료(화면 버튼, 터치버튼)하는 경우 통화상태가 꼬이는 증상 개선
- 통화버튼과 터치버튼 동작시 일정시간(2초) 버튼 입력을 막아서 처리

Changwoo Nam 3 лет назад
Родитель
Сommit
a3a9cbe878

+ 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.05.17.01">
+    android:versionName="2022.05.19.01">
 
     <!--android:sharedUserId="android.uid.system"-->
     <!--<uses-sdk-->

+ 28 - 12
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkLobby.java

@@ -332,6 +332,9 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
                     if (MainActivity.mCallController.mCallInfo.getLOBBY() != CALLSTATUS.TALKING) MainActivity.mSound.Play(SND.effect.TOUCH_LATCHED);
 
                     if (nID == ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.TALK) {
+                        enableEndBTN(false);
+                        setBlockTalkKey();
+                        sendHandlerMsgDelayed(HANDLERMSG.ENABLE_END_BTN, 0, 0, null, 2000);
                         doTalk(CALLOWNER.WALLPAD);
                     } else if (nID == ID.SCREEN.TALKLOBBY.ELEMENT.BUTTON.END) {
                         bEnableVisitorPic = false;
@@ -389,7 +392,10 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         LOG_INFO("[onKeyDown] keyCode [" + keyCode + "], event.getAction() [" + event.getAction() + "]");
         if (keyCode == Declare.BTN.TALK || keyCode == Declare.BTN.TALK_V40) {
             //doTalk(CALLOWNER.WALLPAD);
-            doTalkByBTN(CALLOWNER.WALLPAD);
+            if (!bTalkKeyBlock) {
+                setBlockTalkKey();
+                doTalkByBTN(CALLOWNER.WALLPAD);
+            }
         } else if (keyCode == Declare.BTN.DOOR_OPEN || keyCode == Declare.BTN.DOOR_OPEN_V40) {
             if (!bSentiMAP) doDoorOpen();
         } else if (keyCode == Declare.BTN.PLAY_DECODED_VIDEO || keyCode == Declare.BTN.PLAY_DECODED_VIDEO_V40) {
@@ -991,6 +997,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
                     Global.stopMelodyRepeat();
                     MainActivity.mCallController.sendCallEnd(CALLTYPE.LOBBY, Integer.parseInt(ConfigValues.strDong), RemoteIDInfo.nHo);
                     MainActivity.mCallController.onLobbyEvent(CALLEVENTTYPE.TERMINATE_CALL, CALLTYPE.LOBBY);
+                    Global.change1stCallLogAction(CALLACTION.REJECT);
     //                    MainActivity.mCallController.sendCallEnd(CALLTYPE.LOBBY, Integer.parseInt(RemoteIDInfo.strDong), Integer.parseInt(RemoteIDInfo.strHo));
                 }
                 else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
@@ -1044,8 +1051,6 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         try {
             LOG_INFO("[doTalkByBTN] CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getLOBBY() + "]");
             if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.CALLED) {
-               // MainActivity.mCallController.acceptMoIPCall(false);
-                //MainActivity.mCallController.mCallInfo.setCallOwner(eCallOwner);
                 doTalk(CALLOWNER.WALLPAD);
             } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
                 doEnd();
@@ -1369,14 +1374,12 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             LOG("[enableTalkBTN] bEnable [" + bEnable + "]");
             if (bEnable) {
                 // 이벤트 on
-                if (ConfigValues.bReliefCall)
-                    BTN_TALK.setImageResource(R.drawable.btn_call_normal);
+                if (ConfigValues.bReliefCall) BTN_TALK.setImageResource(R.drawable.btn_call_normal);
                 else BTN_TALK.setImageResource(R.drawable.btn_lobby_call_normal);
                 BTN_TALK.setButtonEventOffDisable();
             } else {
                 // 이벤트 off
-                if (ConfigValues.bReliefCall)
-                    BTN_TALK.setButtonEventOffEnable(R.drawable.btn_call_disabled);
+                if (ConfigValues.bReliefCall) BTN_TALK.setButtonEventOffEnable(R.drawable.btn_call_disabled);
                 else BTN_TALK.setButtonEventOffEnable(R.drawable.btn_lobby_call_disabled);
             }
         } catch (Exception e) {
@@ -1385,21 +1388,23 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         }
     }
 
+    boolean bTalkKeyBlock = false;
     private void enableEndBTN(boolean bEnable) {
         try {
             LOG("[enableEndBTN] bEnable [" + bEnable + "]");
             if (bEnable) {
                 // 이벤트 on
-                if (ConfigValues.bReliefCall)
-                    BTN_END.setImageResource(R.drawable.btn_endl_normal);
+                if (ConfigValues.bReliefCall) BTN_END.setImageResource(R.drawable.btn_endl_normal);
                 else BTN_END.setImageResource(R.drawable.btn_lobby_end_normal);
+
                 BTN_END.setButtonEventOffDisable();
                 ((MainActivity) mContext).TopHomeBtn.setButtonEventOffDisable();
-            } else {
+            }
+            else {
                 // 이벤트 off
-                if (ConfigValues.bReliefCall)
-                    BTN_END.setButtonEventOffEnable(R.drawable.btn_endl_disabled);
+                if (ConfigValues.bReliefCall) BTN_END.setButtonEventOffEnable(R.drawable.btn_endl_disabled);
                 else BTN_END.setButtonEventOffEnable(R.drawable.btn_lobby_end_disabled);
+
                 ((MainActivity) mContext).TopHomeBtn.setButtonEventOffEnable();
             }
         } catch (Exception e) {
@@ -1887,6 +1892,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         public final static int CHECK_DOOROPEN_REPLY = 600;
         public final static int CALL_END = 610;
         public final static int SEND_TALK_START = 620;
+        public final static int RELEASE_TALK_KEY = 630;
     }
 
     public Handler TalkLobbyHandler = new Handler(Looper.getMainLooper()) {
@@ -1991,6 +1997,11 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
                     MainActivity.mCallController.sendCallStart(CALLTYPE.LOBBY, RemoteIDInfo.nDong, RemoteIDInfo.nHo);
                     break;
 
+                case HANDLERMSG.RELEASE_TALK_KEY:
+                    // 통화 터치버튼을 일시적으로 막는다. (통화시작후, 바로 종료하지 않도록)
+                    bTalkKeyBlock = false;
+                    break;
+
                 default:
                     break;
 
@@ -1998,6 +2009,11 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         }
     };
 
+    private void setBlockTalkKey() {
+        bTalkKeyBlock = true;
+        sendHandlerMsgDelayed(HANDLERMSG.RELEASE_TALK_KEY, 0, 0, null, 2000);
+    }
+
     private void checkDoorCtrlACK() {
         try {
             if (bSentiMAP) {

+ 19 - 2
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkResidence.java

@@ -345,7 +345,10 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                             MainActivity.mSound.Play(SND.effect.TOUCH_LATCHED);
 
                         if (Global.TargetInputStep == TARGETINFOINPUTSTEP.DONE) {
-                            doTalk(CALLOWNER.WALLPAD);
+                            if (!bTalkKeyBlock) {
+                                setBlockTalkKey();
+                                doTalk(CALLOWNER.WALLPAD);
+                            }
                         } else {
                             MainActivity.mSound.Play(SND.setting.RETRY_INPUT);
                             initCallVariables();
@@ -510,7 +513,10 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
         LOG_INFO("[onKeyDown] keyCode [" + keyCode + "], event.getAction() [" + event.getAction() + "]");
         if (keyCode == Declare.BTN.TALK || keyCode == Declare.BTN.TALK_V40) {
             //doTalk(CALLOWNER.WALLPAD);
-            doTalkByBTN(CALLOWNER.WALLPAD);
+            if (!bTalkKeyBlock) {
+                setBlockTalkKey();
+                doTalkByBTN(CALLOWNER.WALLPAD);
+            }
         } else if (keyCode == Declare.BTN.PLAY_DECODED_VIDEO || (keyCode == Declare.BTN.PLAY_DECODED_VIDEO_V40 && ConfigValues.bWallPadCameraEnable)) {
             if (!MainActivity.bFFMPEGEnable) ctrlAlphaBlending(true);
         }
@@ -518,6 +524,12 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
         super.onKeyDown(keyCode, event);
     }
 
+    boolean bTalkKeyBlock = false;
+    private void setBlockTalkKey() {
+        bTalkKeyBlock = true;
+        sendHandlerMsgDelayed(HANDLERMSG.RELEASE_TALK_KEY, 0, 0, 1000);
+    }
+
     @Override
     public void onCallEvent(CALLOWNER eCallOwner, CALLSTATUS eCallStatus, CALLTYPE eCallType, String strRemoteIP, String strRemoteSIPID, String strMessage) {
         try {
@@ -2111,6 +2123,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
         public final static int ENABLE_PORTRAIT = 200;
         public final static int OFF_FRONT = 300;
         public final static int SET_VOLUME_TABLE = 400;
+        public final static int RELEASE_TALK_KEY = 500;
     }
 
     public Handler MainHandler = new Handler(Looper.getMainLooper()) {
@@ -2146,6 +2159,10 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                     ctrlWallPadMoIPVolume(nCurrentVolume);
                     break;
 
+                case HANDLERMSG.RELEASE_TALK_KEY:
+                    bTalkKeyBlock = false;
+                    break;
+
                 default:
                     break;
             }