Переглянути джерело

2023.01.05 vip 수정.

1. 로비 통화 문열림 후 audioTrack 오류
- 로비 문열림 통화 반복 후 벨소리나 음성이 들리지 않는 현상.
- AudioTrack 초기화 작업을 추가 하여 수정.

2. 세대 통화 반복시 수신측 app  오류
- 세대 수신 반복시 화면 멈춤과 터치 동작이 되지 않는 현상.
- 세대 수신시 송신 위치를 알리기 위해 사용 하여 UI Thead가 초기화 되지 않아 발생.
- 종료시 Thead 초기화 과정 추가.

3. 로비 문열림 통화 반복시 app 오류
- 문열림 멘트 출력시 사용한 handler 초기화 오류
- onClose 함수에 초기화 과정 추가.
DESKTOP-ANO5U05\sjkim 2 роки тому
батько
коміт
0fdd6188a3

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

+ 4 - 0
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/CallController.java

@@ -2124,9 +2124,13 @@ public class CallController extends CallManager implements SIPEventListener {
                 }
                 else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
                     ((MainActivity) mContext).sendHandlerMsg(IGW300CMD.AUDIO_OFF, 1, 0);
+                    if(Global.bDoorOpenLobby == true)
+                        sendHandlerMsgDelayed(HANDLERMSG.SETMODE_AUDIO_NORMAL, 0, 0, 1000);
                 }
                 else if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
                     MainActivity.mIOInterface.ctrlSetTalkPathNormal();
+                    if(Global.bDoorOpenLobby == true)
+                        sendHandlerMsgDelayed(HANDLERMSG.SETMODE_AUDIO_NORMAL, 0, 0, 500);
                 }
 //                new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
 //                    @Override

+ 1 - 0
WallPadCall/src/main/java/kr/co/icontrols/callengine/sip/SIPController.java

@@ -52,6 +52,7 @@ public class SIPController {
     public static void initSound(boolean bMobile) {   // SOUND DEVICE PREPARE
         try {
             Log.d(TAG, "[initSound] bMobile [" + bMobile + "]");
+            sipSound = null;
             sipSound = new SIPSound(bMobile);
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);

+ 60 - 25
WallPadCall/src/main/java/kr/co/icontrols/callengine/sip/SIPSound.java

@@ -90,7 +90,7 @@ public class SIPSound {
         SIPG711.getPCMLinearComportableNoise(comportableNoise, BUFFER_SIZE);
 
         mAudioRecord = null;
-        mAudioTrack = null;
+        destroyAudioTrack();
         bAudioRecording = false;
         bAudioTrackPlaying = false;
         bSpeaker = false;
@@ -392,6 +392,25 @@ public class SIPSound {
         return bytes;
     }
 
+    public void destroyAudioTrack() { // 오디오 끄는 역할
+
+        if (mAudioTrack != null && mAudioTrack.getState() != AudioTrack.STATE_UNINITIALIZED) {
+            if (mAudioTrack.getPlayState() != AudioTrack.PLAYSTATE_STOPPED) {
+
+                Log.e(TAG, "[closeAudioDevice] ===== jeff =====");
+                try {
+                    mAudioTrack.stop(); // 오디오 재생 종료
+
+                } catch (IllegalStateException e) {
+                    e.printStackTrace();
+                }
+                mAudioTrack.release(); // 오디오 트랙이 잡은 모든 리소스를 해제시킨다.
+                mAudioTrack.flush();
+                mAudioTrack = null;
+            }
+        }
+    }
+
     public void closeAudioDevice() {
         Log.d(TAG, "[closeAudioDevice]");
         try {
@@ -428,27 +447,14 @@ public class SIPSound {
             LogUtil.errorLogInfo("", TAG, e);
         }
 
+        bAudioTrackPlaying = false;
         try {
-            if (mAudioTrack != null) {
-                Log.e(TAG, "[closeAudioDevice] ===== jeff =====");
-                bAudioTrackPlaying = false;
-                mAudioTrack.pause();
-                mAudioTrack.stop();
-                mAudioTrack.flush();
-                mAudioTrack.release();
-            }
-
-//            if (mAudioTrack != null) {
-//                mAudioTrack.release();
-//            }
-            mAudioTrack = null;
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] == 2 == closeAudioDevice() -> CLOSEAUDIODEVICE TRACK");
-            //e.printStackTrace();            
-            LogUtil.errorLogInfo("", TAG, e);
+            Thread.sleep(100);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
         }
+        destroyAudioTrack();
+
         SIPController.nFilterMode = 0;   // 음성변조 필터 선택값을 초기화 한다.
     }
 
@@ -527,6 +533,13 @@ public class SIPSound {
             // 더하여, IHN-750은 통화품질이 나빠져서 오디오 플레이를 시작하기 전에 패스를 정의한다.
             // Log.i(TAG", ">>>>>>>>>>>>>>>>>>>>>PREPAREAUDIOTRACK ++++++++++");
             if (bAudioTrackPlaying == true) return;
+
+            if (mAudioTrack != null) {
+                mAudioTrack.pause();
+                mAudioTrack.release();
+                mAudioTrack = null;
+            }
+
             if (bPrePathSetting) {
                 if (amAudioManager != null) {
                     if (CALLTYPE.RESIDENCE == getCallType(strRemoteIP)) {
@@ -539,12 +552,15 @@ public class SIPSound {
                 }
             }
 
-            // bulk case
-            int minSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
-            int playbufferSize = minSize * 2;
+            if (mAudioTrack == null) {   // bulk case
+                // bulk case
+                int minSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
+                int playbufferSize = minSize * 2;
 
             mAudioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, playbufferSize, AudioTrack.MODE_STREAM);   // original
 //            Log.e(TAG, "[prepareAudioTrack] mAudioTrack.getChannelCount [" + mAudioTrack.getChannelCount() + "], mAudioTrack.getAudioSessionId [" + mAudioTrack.getAudioSessionId() + "]");
+            }
+
             if (mAudioTrack != null) {
                 bAudioTrackPlaying = true;
                 bActive = true;
@@ -643,10 +659,29 @@ public class SIPSound {
                 }
             } catch (RuntimeException re) {
                 LogUtil.errorLogInfo("", TAG, re);
+                mAudioTrack = null;
+                int minSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
+                int playbufferSize = minSize * 2;
+
+                mAudioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, playbufferSize, AudioTrack.MODE_STREAM);       // original
+                try {
+                    Thread.sleep(100);
+                } catch (InterruptedException e1) {
+                    e1.printStackTrace();
+                }
             } catch (Exception e) {
                 Log.e(TAG, "[Exception] playAudio(byte[] data, int dataSize) --> BSS DEBUG: TRACK PLAY ERROR");
-                //e.printStackTrace();            
-                LogUtil.errorLogInfo("", TAG, e);
+                //e.printStackTrace();
+                mAudioTrack = null;
+                int minSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
+                int playbufferSize = minSize * 2;
+
+                mAudioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, playbufferSize, AudioTrack.MODE_STREAM);       // original
+                try {
+                    Thread.sleep(100);
+                } catch (InterruptedException e1) {
+                    e1.printStackTrace();
+                }
             }
         }
         return;

+ 2 - 0
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/declare/Global.java

@@ -88,6 +88,8 @@ public final class Global {
     public static String strDongInfo = "";
     public static String strHoInfo = "";
 
+    public static boolean bDoorOpenLobby = false;
+
     // Context 전달
     public static boolean setGlobalContext(Context context) {
         try {

+ 21 - 3
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkLobby.java

@@ -304,6 +304,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
         super.onClose();
         try {
             LOG_INFO("[onClose]");
+            Global.bDoorOpenLobby = false;
             MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
             //MainActivity.mIOInterface.ctrlPopupGUI(true);
             if (MainActivity.mIOInterface != null) MainActivity.mIOInterface.ctrlWallPadLED_Call(false);
@@ -318,6 +319,11 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             }
 
             if (mPathCheckHandler != null) {
+                if(bSentiMAP1)
+                {
+                    mPathCheckHandler.removeMessages(2);
+                    mPathCheckHandler.removeMessages(3);
+                }
                 mPathCheckHandler.removeMessages(0);
                 mPathCheckHandler.removeMessages(1);
             }
@@ -1118,6 +1124,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             } else if (MainActivity.mCallController.mCallInfo.getLOBBY() == CALLSTATUS.TALKING) {
 //                Global.changeVolumeMoIPMode(CALLTYPE.NONE);
                 Global.stopMelodyRepeat();
+                Global.bDoorOpenLobby = true;
                 if (!send_lobby_open_request(RemoteIDInfo.strIP)) {
                     MainActivity.mSound.Play(SND.setting.RETRY_ACTION);
                 }
@@ -1516,16 +1523,20 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
     }
 
     boolean bSentiMAP = false;
+
+    boolean bSentiMAP1 = false;
     int nCurrentMicGain = 0;
+
     private boolean send_lobby_open_request(String strTargetIP) {
         LOG_INFO("[send_lobby_open_request] strTargetIP [" + strTargetIP + "]");
-        MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
+        //MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
         nCurrentMicGain = MainActivity.mIOInterface.getMICGain();
         MainActivity.mIOInterface.setMICGain(0);
 
         //((MainActivity) mContext).Device_DoorOpen(19); //16 start
         try {
             bSentiMAP = true;
+            bSentiMAP1 = true;
             Request_lobby_open lobby_open = new Request_lobby_open(mContext);
             if (lobby_open.send_lobby_open(strTargetIP, null)) {
                 lobby_open.setResultCtrl(new RetProci() {
@@ -1537,9 +1548,15 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
 //                        if (MainActivity.mCallController.getTalkPath() == CALLPATH.NORMAL) {
 //                            MainActivity.mIOInterface.setMICGain(0);   // 월패드에 출력되는 문열림 멘트가 월패드 마이크를 통해 로비폰에 전달되므로, 멘트 출력전에 Micgain을 0으로 설정한다.
 //                        }
-                        //MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
+                        if(Global.bDoorOpenLobby) {
+                            MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
 //                        MainActivity.mSound.Play(SND.mode.OPENDOOR);
-                        mPathCheckHandler.sendEmptyMessage(2); // 통화패스 Normal로 변경 확인 후 멘트 출력 seulki
+
+
+                            mPathCheckHandler.sendEmptyMessage(2); // 통화패스 Normal로 변경 확인 후 멘트 출력 seulki
+                        }
+                        else
+                            mPathCheckHandler.sendEmptyMessage(3);
 
 //                        int nMentDuration = MainActivity.mSound.PlayMent(SND.mode.OPENDOOR);
 //                        try {
@@ -2380,6 +2397,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
             doEnd();
             //send_stop_talking_request(RemoteIDInfo.strIP);
             if (MainActivity.mCallController.mCallInfo.getPSTNCallHold()) return;
+            Thread.sleep(500);
             ((MainActivity) mContext).finishWallPadCall();
 
         } catch (RuntimeException re) {

+ 257 - 198
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkResidence.java

@@ -135,6 +135,8 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
     int m_nIDCnt_type = 0;
     boolean m_bCallStateThreadStop = true;
 
+    Thread m_butUIThread = null;
+
     class TextResources {
         static final String strDong = "동";
         static final String strHo = "호";
@@ -280,14 +282,14 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 //                ViewRegistration(layout, BTN_DELETE, Common.ImgPosition.GetX(144), Common.ImgPosition.GetY(520));
 //            }
 //
-            TXT_RESIDENCEINFO = new WpadTextView(context, false, 292, 284, Gravity.LEFT, context.getResources().getColor(R.color.orange), Common.fontsize._46, false, ID.SCREEN.TALKRESIDENCE.ELEMENT.TEXT.RESIDENCEINFO);
-            ViewRegistration(layout, TXT_RESIDENCEINFO, Common.ImgPosition.GetX(155), Common.ImgPosition.GetY(111));
-            TXT_RESIDENCEINFO.setText(strTXT_RESIDENCEINFO);
-            //TXT_RESIDENCEINFO.setVisibility(View.GONE);
-
-            TXT_INSTRUCTION = new WpadTextView(context, false, 317, 364, Gravity.CENTER, context.getResources().getColor(R.color.orange), Common.fontsize._52, true, ID.SCREEN.TALKRESIDENCE.ELEMENT.TEXT.INSTRUCTION);
-            ViewRegistration(layout, TXT_INSTRUCTION, Common.ImgPosition.GetX(142), Common.ImgPosition.GetY(255));
-            TXT_INSTRUCTION.setText(strTXT_INSTRUCTION);
+//            TXT_RESIDENCEINFO = new WpadTextView(context, false, 292, 284, Gravity.LEFT, context.getResources().getColor(R.color.orange), Common.fontsize._46, false, ID.SCREEN.TALKRESIDENCE.ELEMENT.TEXT.RESIDENCEINFO);
+//            ViewRegistration(layout, TXT_RESIDENCEINFO, Common.ImgPosition.GetX(155), Common.ImgPosition.GetY(111));
+//            TXT_RESIDENCEINFO.setText(strTXT_RESIDENCEINFO);
+//            //TXT_RESIDENCEINFO.setVisibility(View.GONE);
+//
+//            TXT_INSTRUCTION = new WpadTextView(context, false, 317, 364, Gravity.CENTER, context.getResources().getColor(R.color.orange), Common.fontsize._52, true, ID.SCREEN.TALKRESIDENCE.ELEMENT.TEXT.INSTRUCTION);
+//            ViewRegistration(layout, TXT_INSTRUCTION, Common.ImgPosition.GetX(142), Common.ImgPosition.GetY(255));
+//            TXT_INSTRUCTION.setText(strTXT_INSTRUCTION);
             //TXT_INSTRUCTION.setVisibility(View.GONE);
 
             displayScreenValues();
@@ -322,7 +324,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 
             if (MainActivity.bFFMPEGEnable) ((MainActivity)mContext).showRemoteVideo(false, false);
 
-            MainActivity.mCallController.mVideoJNI.setDecoderInfo_V40(116, 85, 576, 405); // 세대통화시 영상 좌표 재설정
+            //MainActivity.mCallController.mVideoJNI.setDecoderInfo_V40(116, 85, 576, 405); // 세대통화시 영상 좌표 재설정
             //MainActivity.mIOInterface.ctrlPopupGUI_Resi(false, bshowMyVideo); // 세대통화 시작시 초기화
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -360,7 +362,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
             }
             mbCallState = false;
 
-            MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
+            //MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
             MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.NONE, true);
             MainActivity.mCallController.releaseCallEventListener();
             ((MainActivity) mContext).releaseMainEventListener();
@@ -677,7 +679,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                         doEnd();
                         LOG_INFO("[onCallEvent] eCallType none END");
                     }
-                }, 1000);
+                }, 0);
 
                 return;
             }
@@ -738,8 +740,9 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                         if (strRemoteIP.equals(strEndIP[i])) {
 
                             CallStateThread nr = new CallStateThread(i) ;
-                            Thread t = new Thread(nr) ;
-                            t.start() ;
+                            m_butUIThread = new Thread(nr) ;
+                            m_butUIThread.start() ;
+
                             break;
                         }
                     }
@@ -747,6 +750,11 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                 else if (eCallStatus == CALLSTATUS.TALKING) {
                     Global.stopMelodyRepeat();
                     m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        //m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
                     ((MainActivity) mContext).TopHomeBtn.setButtonEventOffEnable();
                     if (ConfigValues.bWallPadCameraEnable) {
                         if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT
@@ -797,18 +805,30 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                 }
                 else if (eCallStatus == CALLSTATUS.HOMEVIEW) {
                     LOG_WARN("[onCallEvent] MOBILE HOMEVIEW!!!!");
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
                     // [방문객원격통화] 모바일에서 홈뷰어 요청 -> 모바일 기기로 월패드카메라 인코딩 영상 전송
                     ((MainActivity) mContext).showRemoteCallNoticeText(true); // 방문객원격통화 팝업 삭제 -> 상단 문구로 대체
 //                    ((MainActivity) mContext).StartPopup(ID.POPUP.POPUP_NOTICE_REMOTECALL);
                     prepareMyVideo(true);
                     ((MainActivity) mContext).showMyVideo(true, true);
-                    MainActivity.mCallController.mSIPInterface.videoSet(true, true, true);
+                    //MainActivity.mCallController.mSIPInterface.videoSet(true, true, true);
                     MainActivity.mCallController.set1stCallTimer(eCallType, MainActivity.mCallController.mCTT.RESIDENCEnRESIDENCE); // 홈뷰어 타이머 3분
                     //Global.make1stCallHistoryInfo("HOMEVIEW", "HOMEVIEW", CALLDIRECTION.OUT, CALLACTION.HOMEVIEW, CALLRESULT.OUT_HONEVIEW); // 통화기록 - 발신:세대:홈뷰어
                 }
                 else if (eCallStatus == CALLSTATUS.END) {
                     Global.stopMelodyRepeat();
                     bRemoteVideoShow = false;
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        //m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
                     if (ConfigValues.bWallPadCameraEnable) {
                         prepareMyVideo(false);
                     }
@@ -832,6 +852,13 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                     MainActivity.mCallController.MultiCallScenarioManager();
                 } else if (eCallStatus == CALLSTATUS.REJECT) {
                     Global.stopMelodyRepeat();
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
+
                     if(mbCallState)
                     {
                         String strTimeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
@@ -866,6 +893,13 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                 else if (eCallStatus == CALLSTATUS.BUSY) {
                     Global.stopMelodyRepeat();
                     bRemoteVideoShow = false;
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
+
                     if (ConfigValues.bWallPadCameraEnable) {
                         prepareMyVideo(false);
                     }
@@ -889,6 +923,12 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                 } else if (eCallStatus == CALLSTATUS.CANCEL) {
                     Global.stopMelodyRepeat();
                     bRemoteVideoShow = false;
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
                     if (ConfigValues.bWallPadCameraEnable) {
                         prepareMyVideo(false);
                     }
@@ -908,11 +948,24 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                     MainActivity.mCallController.MultiCallScenarioManager();
                 } else if (eCallStatus == CALLSTATUS.FORWARD) {
                     Global.stopMelodyRepeat();
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
                     bRemoteVideoShow = false;
                     MainActivity.mCallController.mCallInfo.setCallStatus(CALLTYPE.RESIDENCE, CALLSTATUS.IDLE);
                     MainActivity.mCallController.stop1stCallTimer();
                     tryAutoCall(strMessage);
                 } else if (eCallStatus == CALLSTATUS.TIMEOUT_1STCALL) {
+                    m_bCallStateThreadStop = false;
+                    if(m_butUIThread != null)
+                    {
+                        //m_butUIThread.stop();
+                        m_butUIThread = null;
+                    }
+
                     if(mbCallState)
                     {
                         String strTimeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
@@ -1215,86 +1268,86 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 
     @Override
     public void onVideoSet(boolean bSet, String strRemoteSIPID) {
-        try {
-            LOG_INFO("[onVideoSet] bSet [" + bSet + "], strRemoteSIPID [" + strRemoteSIPID + "]");
-            if (bSet) {
-                if (!strRemoteSIPID.contains(DEVICENAME.strType_Resi)) {
-                    Log.e(TAG, "[onVideoSet] Device name is not matched!!!");
-                    return;
-                }
-            }
-
-            if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT
-                    || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
-                Log.i(TAG, "[onVideoSet] ConfigValues.bWallPadCameraEnable [" + ConfigValues.bWallPadCameraEnable + "]");
-                if (ConfigValues.bWallPadCameraEnable) {
-                    if (!bSet) showMyVideo(bSet);
-                    MainActivity.mCallController.mSIPInterface.videoSet(bSet, bSet, bSet);
-//                    if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.TALKING) {
-//                        MainActivity.mCallController.mSIPInterface.videoSet(bSet, bSet, bSet);
-//                    }
-//                    else {
-//                        Log.i(TAG, "[onVideoSet] CallStatus is NOT TALKING!!");
-//                    }
-                }
-                else {
-                    Log.w(TAG, "[onVideoSet] Wallpad camera is not enabled!!");
-                }
-            }
-            else {
-                LOG_WARN("[onVideoSet] Not Supported BOARD_TYPE!! [" + ConfigValues.DEVICE_BOARDTYPE + "]");
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] onVideoSet(boolean bSet, String strRemoteSIPID)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
+//        try {
+//            LOG_INFO("[onVideoSet] bSet [" + bSet + "], strRemoteSIPID [" + strRemoteSIPID + "]");
+//            if (bSet) {
+//                if (!strRemoteSIPID.contains(DEVICENAME.strType_Resi)) {
+//                    Log.e(TAG, "[onVideoSet] Device name is not matched!!!");
+//                    return;
+//                }
+//            }
+//
+//            if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT
+//                    || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT) {
+//                Log.i(TAG, "[onVideoSet] ConfigValues.bWallPadCameraEnable [" + ConfigValues.bWallPadCameraEnable + "]");
+//                if (ConfigValues.bWallPadCameraEnable) {
+//                    if (!bSet) showMyVideo(bSet);
+//                    MainActivity.mCallController.mSIPInterface.videoSet(bSet, bSet, bSet);
+////                    if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.TALKING) {
+////                        MainActivity.mCallController.mSIPInterface.videoSet(bSet, bSet, bSet);
+////                    }
+////                    else {
+////                        Log.i(TAG, "[onVideoSet] CallStatus is NOT TALKING!!");
+////                    }
+//                }
+//                else {
+//                    Log.w(TAG, "[onVideoSet] Wallpad camera is not enabled!!");
+//                }
+//            }
+//            else {
+//                LOG_WARN("[onVideoSet] Not Supported BOARD_TYPE!! [" + ConfigValues.DEVICE_BOARDTYPE + "]");
+//            }
+//        } catch (RuntimeException re) {
+//            LogUtil.errorLogInfo("", TAG, re);
+//        } catch (Exception e) {
+//            Log.e(TAG, "[Exception] onVideoSet(boolean bSet, String strRemoteSIPID)");
+//            //e.printStackTrace();
+//            LogUtil.errorLogInfo("", TAG, e);
+//        }
     }
 
     boolean bRemoteVideoShow = false;
 
     @Override
     public void onShowRemoteVideo(boolean bShow) {
-        try {
-            LOG_INFO("[onShowRemoteVideo] bShow [" + bShow + "]");
-            if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40
-                    || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
-                bRemoteVideoShow = bShow;
-                LOG("[onShowRemoteVideo] bRemoteVideoShow [" + bRemoteVideoShow + "]");
-
-                if (MainActivity.bFFMPEGEnable) {
-                    ((MainActivity)mContext).showRemoteVideo(bShow, true);
-                }
-                else {
-                    CALLOWNER eCallOwner = MainActivity.mCallController.mCallInfo.getCallOwner();
-                    CALLSTATUS eMultiCallStatus = MainActivity.mCallController.mCallInfo.getMultiCallStatus();
-                    LOG("[onShowRemoteVideo] eCallOwner [" + eCallOwner + "], eMultiCallStatus [" + eMultiCallStatus + "]");
-                    if (eCallOwner == CALLOWNER.WALLPAD) {
-                        if (eMultiCallStatus == CALLSTATUS.IDLE) {
-                            LOG("[onShowRemoteVideo] =========== POPUP X =========== (display remote video)");
-                            ctrlAlphaBlending(bShow); // 팝업(서브폰통화, 멀티콜)이 떠있지 않는 경우만 원격지 영상 출력-> 팝업 짤림 (02.12.01 seulki)
-                        }
-                        else {
-                            LOG("[onShowRemoteVideo] =========== POPUP O =========== (do not display remote video)");
-                        }
-                    }
-                    else {
-                        LOG("[onShowRemoteVideo] =========== POPUP O =========== (do not display remote video)");
-                    }
-                }
-            }
-            else {
-                LOG_WARN("[onShowRemoteVideo] Not Supported BOARD_TYPE!! [" + ConfigValues.DEVICE_BOARDTYPE + "]");
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] onShowRemoteVideo(boolean bShow)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
+//        try {
+//            LOG_INFO("[onShowRemoteVideo] bShow [" + bShow + "]");
+//            if (ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300 || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40
+//                    || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_IGW300_NOUGAT || ConfigValues.DEVICE_BOARDTYPE == BOARD_TYPE.V40_NOUGAT) {
+//                bRemoteVideoShow = bShow;
+//                LOG("[onShowRemoteVideo] bRemoteVideoShow [" + bRemoteVideoShow + "]");
+//
+//                if (MainActivity.bFFMPEGEnable) {
+//                    ((MainActivity)mContext).showRemoteVideo(bShow, true);
+//                }
+//                else {
+//                    CALLOWNER eCallOwner = MainActivity.mCallController.mCallInfo.getCallOwner();
+//                    CALLSTATUS eMultiCallStatus = MainActivity.mCallController.mCallInfo.getMultiCallStatus();
+//                    LOG("[onShowRemoteVideo] eCallOwner [" + eCallOwner + "], eMultiCallStatus [" + eMultiCallStatus + "]");
+//                    if (eCallOwner == CALLOWNER.WALLPAD) {
+//                        if (eMultiCallStatus == CALLSTATUS.IDLE) {
+//                            LOG("[onShowRemoteVideo] =========== POPUP X =========== (display remote video)");
+//                            ctrlAlphaBlending(bShow); // 팝업(서브폰통화, 멀티콜)이 떠있지 않는 경우만 원격지 영상 출력-> 팝업 짤림 (02.12.01 seulki)
+//                        }
+//                        else {
+//                            LOG("[onShowRemoteVideo] =========== POPUP O =========== (do not display remote video)");
+//                        }
+//                    }
+//                    else {
+//                        LOG("[onShowRemoteVideo] =========== POPUP O =========== (do not display remote video)");
+//                    }
+//                }
+//            }
+//            else {
+//                LOG_WARN("[onShowRemoteVideo] Not Supported BOARD_TYPE!! [" + ConfigValues.DEVICE_BOARDTYPE + "]");
+//            }
+//        } catch (RuntimeException re) {
+//            LogUtil.errorLogInfo("", TAG, re);
+//        } catch (Exception e) {
+//            Log.e(TAG, "[Exception] onShowRemoteVideo(boolean bShow)");
+//            //e.printStackTrace();
+//            LogUtil.errorLogInfo("", TAG, e);
+//        }
     }
 
     @Override
@@ -1308,7 +1361,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
             if (nScreen == ID.POPUP.POPUP_MULTICALL) {
                 if (nID == ID.POPUP.MUTICALL.ELEMENT.BUTTON.ACCEPT) {
                     LOG_INFO("[onPopupResult] ID.POPUP.MUTICALL.ELEMENT.BUTTON.ACCEPT");
-                    MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
+                    //MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
                     MainActivity.mCallController.stop2ndCallTimer();
                     doMultiCallAccept();
                 } else if (nID == ID.POPUP.MUTICALL.ELEMENT.BUTTON.REJECT) {
@@ -1489,8 +1542,8 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                     bshowMyVideo = false;
                     prepareMyVideo(false);
                     showMyVideo(false);
-                    MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
-                    MainActivity.mCallController.mVideoJNI.encoderStopOperation();
+                    //MainActivity.mCallController.mSIPInterface.videoSet(false, false, false);
+                    //MainActivity.mCallController.mVideoJNI.encoderStopOperation();
                 } else {
                     LOG_INFO("[doEnd] Invalid CALLSTATUS [" + MainActivity.mCallController.mCallInfo.getRESI() + "]");
                     MainActivity.mCallController.quitMoIPCall();
@@ -2013,65 +2066,65 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 
     private void updateResidenceInfo() {
         try {
-            if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.IDLE) {
-                if (Global.TargetInputStep == TARGETINFOINPUTSTEP.DONG) {
-                    if (RemoteIDInfo.strDong.length() > 0) {
-                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
-                        RemoteIDInfo.nDong = Integer.parseInt(RemoteIDInfo.strDong);
-                        RemoteIDInfo.strDong = Integer.toString(RemoteIDInfo.nDong);
-                    }
-                    strTXT_RESIDENCEINFO = RemoteIDInfo.strDong;
-                } else if (Global.TargetInputStep == TARGETINFOINPUTSTEP.HO) {
-                    if (RemoteIDInfo.strDong.length() > 0) {
-                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
-                        RemoteIDInfo.nDong = Integer.parseInt(RemoteIDInfo.strDong);
-                        RemoteIDInfo.strDong = Integer.toString(RemoteIDInfo.nDong);
-                    }
-                    strTXT_RESIDENCEINFO = RemoteIDInfo.strDong + TextResources.strDong;
-
-                    if (RemoteIDInfo.strHo.length() > 0) {
-                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
-                        RemoteIDInfo.nHo = Integer.parseInt(RemoteIDInfo.strHo);
-                        RemoteIDInfo.strHo = Integer.toString(RemoteIDInfo.nHo);
-                    }
-
-                    if (ConfigValues.bEnableHouseDivision && RemoteIDInfo.bRentRoomSelected)
-                        strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo + "-" + RemoteIDInfo.nHo_Extension;
-                    else strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo;
-                } else if (Global.TargetInputStep == TARGETINFOINPUTSTEP.DONE) {
-                    if (RemoteIDInfo.strDong.length() > 0) {
-                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
-                        RemoteIDInfo.nDong = Integer.parseInt(RemoteIDInfo.strDong);
-                        RemoteIDInfo.strDong = Integer.toString(RemoteIDInfo.nDong);
-                    }
-                    strTXT_RESIDENCEINFO = RemoteIDInfo.strDong + TextResources.strDong;
-
-                    if (RemoteIDInfo.strHo.length() > 0) {
-                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
-                        RemoteIDInfo.nHo = Integer.parseInt(RemoteIDInfo.strHo);
-                        RemoteIDInfo.strHo = Integer.toString(RemoteIDInfo.nHo);
-                    }
-
-                    if (ConfigValues.bEnableHouseDivision && RemoteIDInfo.bRentRoomSelected)
-                        strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo + "-" + RemoteIDInfo.nHo_Extension + TextResources.strHo;
-                    else strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo + TextResources.strHo;
-                }
-            } else {
-                LOG_WARN("[updateResidenceInfo] Call Status is not IDLE!!!");
-                strTXT_RESIDENCEINFO = RemoteIDInfo.strName;
-            }
+//            if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.IDLE) {
+//                if (Global.TargetInputStep == TARGETINFOINPUTSTEP.DONG) {
+//                    if (RemoteIDInfo.strDong.length() > 0) {
+//                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
+//                        RemoteIDInfo.nDong = Integer.parseInt(RemoteIDInfo.strDong);
+//                        RemoteIDInfo.strDong = Integer.toString(RemoteIDInfo.nDong);
+//                    }
+//                    strTXT_RESIDENCEINFO = RemoteIDInfo.strDong;
+//                } else if (Global.TargetInputStep == TARGETINFOINPUTSTEP.HO) {
+//                    if (RemoteIDInfo.strDong.length() > 0) {
+//                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
+//                        RemoteIDInfo.nDong = Integer.parseInt(RemoteIDInfo.strDong);
+//                        RemoteIDInfo.strDong = Integer.toString(RemoteIDInfo.nDong);
+//                    }
+//                    strTXT_RESIDENCEINFO = RemoteIDInfo.strDong + TextResources.strDong;
+//
+//                    if (RemoteIDInfo.strHo.length() > 0) {
+//                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
+//                        RemoteIDInfo.nHo = Integer.parseInt(RemoteIDInfo.strHo);
+//                        RemoteIDInfo.strHo = Integer.toString(RemoteIDInfo.nHo);
+//                    }
+//
+//                    if (ConfigValues.bEnableHouseDivision && RemoteIDInfo.bRentRoomSelected)
+//                        strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo + "-" + RemoteIDInfo.nHo_Extension;
+//                    else strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo;
+//                } else if (Global.TargetInputStep == TARGETINFOINPUTSTEP.DONE) {
+//                    if (RemoteIDInfo.strDong.length() > 0) {
+//                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
+//                        RemoteIDInfo.nDong = Integer.parseInt(RemoteIDInfo.strDong);
+//                        RemoteIDInfo.strDong = Integer.toString(RemoteIDInfo.nDong);
+//                    }
+//                    strTXT_RESIDENCEINFO = RemoteIDInfo.strDong + TextResources.strDong;
+//
+//                    if (RemoteIDInfo.strHo.length() > 0) {
+//                        // 첫자리에 "0"이 출력되지 않도록 숫자로 변경하면서 "0"을 제거하고, 다시 String으로 변환한다.
+//                        RemoteIDInfo.nHo = Integer.parseInt(RemoteIDInfo.strHo);
+//                        RemoteIDInfo.strHo = Integer.toString(RemoteIDInfo.nHo);
+//                    }
+//
+//                    if (ConfigValues.bEnableHouseDivision && RemoteIDInfo.bRentRoomSelected)
+//                        strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo + "-" + RemoteIDInfo.nHo_Extension + TextResources.strHo;
+//                    else strTXT_RESIDENCEINFO += "\n" + RemoteIDInfo.strHo + TextResources.strHo;
+//                }
+//            } else {
+//                LOG_WARN("[updateResidenceInfo] Call Status is not IDLE!!!");
+//                strTXT_RESIDENCEINFO = RemoteIDInfo.strName;
+//            }
 
             // 2017.11.16 SEULKI
             // '세대정보를 입력하세요.' 화면에서 동/호 입력한 경우, 동/호 텍스트만 나오게
-            if (!strTXT_RESIDENCEINFO.equals("") && (strTXT_INSTRUCTION.equals(TextResources.strInputResidenceInfo)))
-                strTXT_INSTRUCTION = "";
+            //if (!strTXT_RESIDENCEINFO.equals("") && (strTXT_INSTRUCTION.equals(TextResources.strInputResidenceInfo)))
+            //    strTXT_INSTRUCTION = "";
 
             // 동/호 텍스트 지웠을 경우, 다시 '세대정보를 입력하세요.' 텍스트 나오게
-            if (strTXT_RESIDENCEINFO.equals("") && (strTXT_INSTRUCTION.equals("")))
-                strTXT_INSTRUCTION = TextResources.strInputResidenceInfo;
+            //if (strTXT_RESIDENCEINFO.equals("") && (strTXT_INSTRUCTION.equals("")))
+                //strTXT_INSTRUCTION = TextResources.strInputResidenceInfo;
 
-            TXT_INSTRUCTION.setText(strTXT_INSTRUCTION);
-            TXT_RESIDENCEINFO.setText(strTXT_RESIDENCEINFO);
+            //TXT_INSTRUCTION.setText(strTXT_INSTRUCTION);
+            //TXT_RESIDENCEINFO.setText(strTXT_RESIDENCEINFO);
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
@@ -2115,27 +2168,32 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 
     private void updateInstruction() {
         try {
-            if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.IDLE) {
-                strTXT_INSTRUCTION = TextResources.strInputResidenceInfo;
-            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.TRYING_CALL) {
-                strTXT_INSTRUCTION = TextResources.strTryingResidence;
-            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.WAITNG_INVITE_ACK) {
-                strTXT_INSTRUCTION = TextResources.strCallingResidence;
-            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.CALLING) {
-                strTXT_INSTRUCTION = TextResources.strCallingResidence;
-            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.CALLED) {
-                strTXT_INSTRUCTION = TextResources.strCalledResidence;
+//            if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.IDLE) {
+//                strTXT_INSTRUCTION = TextResources.strInputResidenceInfo;
+//            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.TRYING_CALL) {
+//                strTXT_INSTRUCTION = TextResources.strTryingResidence;
+//            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.WAITNG_INVITE_ACK) {
+//                strTXT_INSTRUCTION = TextResources.strCallingResidence;
+//            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.CALLING) {
+//                strTXT_INSTRUCTION = TextResources.strCallingResidence;
+//            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.CALLED) {
+//                strTXT_INSTRUCTION = TextResources.strCalledResidence;
+//                Global.TargetInputStep = TARGETINFOINPUTSTEP.DONE;
+//            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.TALKING) {
+//                strTXT_INSTRUCTION = TextResources.strTalkingResidence;
+//                if (MainActivity.mCallController.bTalkTestModeEnable) {
+//                    strTXT_INSTRUCTION = strTXT_INSTRUCTION + " [음량 " + Global.getWallPadMoIPVolume() + "]";
+//                }
+//            } else {
+//                strTXT_INSTRUCTION = "";
+//            }
+//
+//            //TXT_INSTRUCTION.setText(strTXT_INSTRUCTION);
+
+            if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.CALLED) {
+                //strTXT_INSTRUCTION = TextResources.strCalledResidence;
                 Global.TargetInputStep = TARGETINFOINPUTSTEP.DONE;
-            } else if (MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.TALKING) {
-                strTXT_INSTRUCTION = TextResources.strTalkingResidence;
-                if (MainActivity.mCallController.bTalkTestModeEnable) {
-                    strTXT_INSTRUCTION = strTXT_INSTRUCTION + " [음량 " + Global.getWallPadMoIPVolume() + "]";
-                }
-            } else {
-                strTXT_INSTRUCTION = "";
             }
-
-            TXT_INSTRUCTION.setText(strTXT_INSTRUCTION);
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
         } catch (Exception e) {
@@ -2180,14 +2238,14 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 //                }
 
                 // 통화상대 정보
-                ((MainActivity) mContext).displayRemoteID(null);
+                //((MainActivity) mContext).displayRemoteID(null);
             } else {
                 // 세대정보/안내문구
 
                 if(MainActivity.mCallController.mCallInfo.getRESI() == CALLSTATUS.IDLE)
                 {
-                    TXT_RESIDENCEINFO.setVisibility(View.INVISIBLE);
-                    TXT_INSTRUCTION.setVisibility(View.INVISIBLE);
+                    //TXT_RESIDENCEINFO.setVisibility(View.INVISIBLE);
+                    //TXT_INSTRUCTION.setVisibility(View.INVISIBLE);
 
                     for (int i = 0; i < BTN_TENKEY.length; i++) {
                         BTN_TENKEY[i].setVisibility(View.VISIBLE);
@@ -2213,10 +2271,10 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
 //                    if(BTN_TENKEY[i]!=null)
 //                        BTN_TENKEY[i].setVisibility(View.VISIBLE);
 //                }
-                IMG_VIDEO_MODULE.setVisibility(View.INVISIBLE);
+                //IMG_VIDEO_MODULE.setVisibility(View.INVISIBLE);
 
                 // 통화상대 정보
-                ((MainActivity) mContext).displayRemoteID(null);
+                //((MainActivity) mContext).displayRemoteID(null);
             }
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -2228,35 +2286,35 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
     }
 
     private void showMyVideo(boolean bShow) {
-        try {
-            LOG_INFO("[showMyVideo] bShow [" + bShow + "]");
-
-            if (MainActivity.mCallController.mCallInfo.getRESI() != CALLSTATUS.TALKING) {
-                LOG_INFO("[showMyVideo] CallStatus is NOT TALKING!!");
-                return;
-            }
-
-            if (BTN_PORTRAIT != null) {
-                bshowMyVideo = bShow;
-                LOG_INFO("[showMyVideo] bshowMyVideo [" + bshowMyVideo + "]");
-                ((MainActivity) mContext).showMyVideo(bshowMyVideo, false);
-                if (bShow) {
-                    BTN_PORTRAIT.setImageResource(R.drawable.btn_residence_me_selected);
-                } else {
-                    BTN_PORTRAIT.setImageResource(R.drawable.btn_residence_me_normal3);
-                }
-                //MainActivity.mIOInterface.ctrlPopupGUI_Resi(!bRemoteVideoShow, bshowMyVideo); // 세대통화 시작시 초기화
-            }
-            else {
-                LOG_WARN("[showMyVideo] BTN_PORTRAIT is null!!");
-            }
-        } catch (RuntimeException re) {
-            LogUtil.errorLogInfo("", TAG, re);
-        } catch (Exception e) {
-            Log.e(TAG, "[Exception] showMyVideo(boolean bShow)");
-            //e.printStackTrace();
-            LogUtil.errorLogInfo("", TAG, e);
-        }
+//        try {
+//            LOG_INFO("[showMyVideo] bShow [" + bShow + "]");
+//
+//            if (MainActivity.mCallController.mCallInfo.getRESI() != CALLSTATUS.TALKING) {
+//                LOG_INFO("[showMyVideo] CallStatus is NOT TALKING!!");
+//                return;
+//            }
+//
+//            if (BTN_PORTRAIT != null) {
+//                bshowMyVideo = bShow;
+//                LOG_INFO("[showMyVideo] bshowMyVideo [" + bshowMyVideo + "]");
+//                ((MainActivity) mContext).showMyVideo(bshowMyVideo, false);
+//                if (bShow) {
+//                    BTN_PORTRAIT.setImageResource(R.drawable.btn_residence_me_selected);
+//                } else {
+//                    BTN_PORTRAIT.setImageResource(R.drawable.btn_residence_me_normal3);
+//                }
+//                //MainActivity.mIOInterface.ctrlPopupGUI_Resi(!bRemoteVideoShow, bshowMyVideo); // 세대통화 시작시 초기화
+//            }
+//            else {
+//                LOG_WARN("[showMyVideo] BTN_PORTRAIT is null!!");
+//            }
+//        } catch (RuntimeException re) {
+//            LogUtil.errorLogInfo("", TAG, re);
+//        } catch (Exception e) {
+//            Log.e(TAG, "[Exception] showMyVideo(boolean bShow)");
+//            //e.printStackTrace();
+//            LogUtil.errorLogInfo("", TAG, e);
+//        }
     }
 
     boolean bMyVideoPrepared = false;
@@ -2961,6 +3019,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
     private void finishWallpadCallApp() {
         try {
             doEnd();
+            Thread.sleep(500);
             ((MainActivity) mContext).finishWallPadCall();
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -2970,4 +3029,4 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
             LogUtil.errorLogInfo("", TAG, e);
         }
     }
-}
+}

BIN
WallPadCall/src/main/jniLibs/armeabi-v7a/libjniV40if2_ccd.so


BIN
WallPadCall/src/main/jniLibs/armeabi/libjniV40if2_ccd.so


BIN
WallPadCall/src/main/res/drawable-ldpi/btn_main_room_normal.png


BIN
WallPadCall/src/main/res/drawable-ldpi/btn_main_room_pressed.png


BIN
WallPadCall/src/main/res/drawable-ldpi/btn_main_room_selected.png