Prechádzať zdrojové kódy

[WallPadCall]
1. 거동수상자 녹화 중, 주방TV의 모니터링 요청을 거절하도록 수정 (SubPhoneSerialManager.java)
2. 녹화상태 플래그를 Global 변수로 변경.
3. 버전 변경. 2022.08.17.02

jigsjjang 2 rokov pred
rodič
commit
c1b4815c5a

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

+ 4 - 2
WallPadCall/src/main/java/kr/co/icontrols/callengine/sip/SIPStun.java

@@ -61,6 +61,7 @@ import kr.co.icontrols.wallpadcall.MainActivity;
 import kr.co.icontrols.wallpadcall.declare.Common;
 import kr.co.icontrols.wallpadcall.declare.Declare;
 import kr.co.icontrols.wallpadcall.declare.Declare.CALLTRIGGER;
+import kr.co.icontrols.wallpadcall.declare.Global;
 
 public class SIPStun extends Service {
 
@@ -4987,12 +4988,12 @@ public class SIPStun extends Service {
                 startActivity(mIntent);
                 Thread.sleep(500);   // Call app이 실행되는 시간을 기다려준다. (빨리 띄우면 이벤트를 수신 못함)
             } else {
-                LOG_WARN("[runCallMainActivity] WallPadCall is already running!! bRecordingStatus[" + MainActivity.bRecordingStatus + "]");
+                LOG_WARN("[runCallMainActivity] WallPadCall is already running!! bRecordingStatus[" + Global.getRecordingStatus() + "]");
 
                 // yjyoon.
                 // 거동수상자 녹화 중 세대/로비/경비에서 콜이 왔을 때,
                 // 새로운 콜을 생성하기 전 녹화를 중지시킨다.
-                if (MainActivity.bRecordingStatus) {
+                if (Global.getRecordingStatus()) {
                     Intent iIntent = new Intent();
                     iIntent.setAction(Declare.BR.BR_REQUEST_RECORD_STOP);
                     iIntent.putExtra(define.NOTIBR_KIND, 2);
@@ -5225,6 +5226,7 @@ public class SIPStun extends Service {
                     }
                     else {
                         bWallPadCallLive = false;
+                        Global.setRecordingStatus(false);
                     }
 //                    Log.w(TAG,"[WallPadCallLiveBRCheck] bWallPadCallLive [" + bWallPadCallLive + "]");
                     Thread.sleep(1000);

+ 9 - 4
WallPadCall/src/main/java/kr/co/icontrols/callengine/subphone/SubPhoneSerialManager.java

@@ -914,6 +914,14 @@ public class SubPhoneSerialManager extends Service {
                     if (Global.getKitchenTVIdx(hSID) >= 0) callowner = Global.getKitchenTVOwner(Global.getKitchenTVIdx(hSID));
                     else if (Global.getBathTVIdx(hSID) >= 0) callowner = Global.getBathTVOwner(Global.getBathTVIdx(hSID));
                     else if (hSID == SubPhoneCmds.ID_SUBWALLPAD) callowner = CALLOWNER.SUB_WALLPAD;
+
+                    // yjyoon. 녹화 중이면 모니터링 취소.
+                    if (Global.getRecordingStatus()) {
+                        Log.v(TAG, "Receive Data blocked!!! - recording now...");
+                        sendBusyCall(CALLTYPE.FRONT);
+                        return;
+                    }
+
                     if (bFrontCallUse) runCallMainActivity(callowner, CALLEVENTTYPE.REQUEST_FRONT_MONITORING, CALLTYPE.FRONT, null);
                 }
             }
@@ -4474,6 +4482,7 @@ public class SubPhoneSerialManager extends Service {
                     }
                     else {
                         bWallPadCallLive = false;
+                        Global.setRecordingStatus(false);
                     }
 //                    Log.w(TAG,"[WallPadCallLiveBRCheck] bWallPadCallLive [" + bWallPadCallLive + "]");
                     Thread.sleep(1000);
@@ -4551,8 +4560,4 @@ public class SubPhoneSerialManager extends Service {
             LogUtil.errorLogInfo("", TAG, e);
         }
     }
-
-
-
-
 }

+ 13 - 12
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/MainActivity.java

@@ -342,7 +342,7 @@ public class MainActivity extends WpadActivity {
     public boolean bBlockHomeBTN = false;
     public boolean bLCDReverse = false;
 
-    public static boolean bRecordingStatus = false; // 거동수상자 녹화중 판별 플래그
+    //public static boolean bRecordingStatus = false; // 거동수상자 녹화중 판별 플래그
     public static boolean bRecordingStopAndNewCall = false; // yjyoon.
 
     public static boolean bFrontCallUse, bLobbyCallUse, bGuardCallUse, bResiCallUse, bPSTNCallUse, bCallHistoryUse, bVisitorPicUse;
@@ -365,6 +365,7 @@ public class MainActivity extends WpadActivity {
 
             Global.setGlobalContext(this);
             Global.getConfigValues();   // 디바이스 설정
+            Global.setRecordingStatus(false);
             nSysVolume = Global.getConfigSystemVolume();
 
             if (ConfigValues.DEVICE_MODELTYPE == MODEL_TYPE.IHN_1020B_I) bFFMPEGEnable = true;
@@ -4543,7 +4544,7 @@ public class MainActivity extends WpadActivity {
                     mRecordTimer = new CountDownTimer(RECORDING_TIME * 1000, 1000) {
                         @Override
                         public void onTick(long millisUntilFinished) {
-                            if (bRecordingStatus) {
+                            if (Global.getRecordingStatus()) {
                                 mCurRecordTime++;
                                 Log.d(TAG, "[checkRecordTimer] mCurRecordTime [" + mCurRecordTime + "]");
                             }
@@ -4553,7 +4554,7 @@ public class MainActivity extends WpadActivity {
                         public void onFinish() {
                             LOG("[checkRecordTimer] onFinish!! bRemoteCall [" + ConfigValues.bRemoteCall + "]");
                             if (ConfigValues.bRemoteCall) {
-                                bRecordingStatus = false;
+                                Global.setRecordingStatus(false);
                                 mediaStopRecord(true);
                                 mRemoteCallController.sendCloseRemoteCall();
                                 sendHandlerMsgDelayed(HANDLERMSG.FINISH_WALLPADCALL, 0, 0, 500);
@@ -4664,7 +4665,7 @@ public class MainActivity extends WpadActivity {
         try {
             Log.d(TAG, "[mediaStartRecord]");
 
-            if (!bRecordingStatus) {
+            if (!Global.getRecordingStatus()) {
                 Log.d("yjyoon", "[mediaStartRecord] bRecordingStatus == false");
                 Log.d(TAG, "[mediaStartRecord] bRecordingStatus == false");
                 return;
@@ -4699,9 +4700,9 @@ public class MainActivity extends WpadActivity {
 
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG,re);
-            bRecordingStatus = false;
+            Global.setRecordingStatus(false);
         } catch (Throwable t) {
-            bRecordingStatus = false;
+            Global.setRecordingStatus(false);
             Log.e(TAG, "[Exception] mediaStartRecord()");
             //t.printStackTrace();
             LogUtil.errorLogInfo("", TAG, t);
@@ -4711,7 +4712,7 @@ public class MainActivity extends WpadActivity {
     public void mediaStopRecord(boolean bDel) {
         try {
             Log.d(TAG, "[mediaStopRecord] bDel [" + bDel + "]");
-            bRecordingStatus = false; // 녹화 종료
+            Global.setRecordingStatus(false); // 녹화 종료
             resetRecordTimer();
             if (mMediaRecorder != null) {
                 if (bMediaRecorder) {
@@ -4753,7 +4754,7 @@ public class MainActivity extends WpadActivity {
     public void stopNSaveRecordingFile(boolean bDel, boolean bFinish) {
         try {
             LOG("[stopNSaveRecordingFile] bDel [" + bDel + "], bFinish [" + bFinish + "], bRemoteCall [" + ConfigValues.bRemoteCall + "]");
-            bRecordingStatus = false;
+            Global.setRecordingStatus(false);
             mediaStopRecord(bDel);
             saveRecordingFile(bFinish);
         } catch (RuntimeException re) {
@@ -4986,7 +4987,7 @@ public class MainActivity extends WpadActivity {
                     bMediaRecorder = false;
             }
             resetRecordTimer();
-            bRecordingStatus = false;
+            Global.setRecordingStatus(false);
             sendHandlerMsgDelayed(HANDLERMSG.FINISH_WALLPADCALL, 0, 0, 1000);
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
@@ -5741,10 +5742,10 @@ public class MainActivity extends WpadActivity {
                     else if (kind == 9999) {
                         // yjyoon. 거동수상자 녹화 중 새로운 콜 이벤트 수신.
 
-                        Log.v(this.TAG, "Received New call during Recording(9999). bRecodingStatus[" + bRecordingStatus + "]");
+                        Log.v(this.TAG, "Received New call during Recording(9999). bRecodingStatus[" + Global.getRecordingStatus() + "]");
 
-                        if (!bRecordingStatus) {
-                            Log.v(this.TAG, "ignore new call!! bRecodingStatus[" + bRecordingStatus + "]");
+                        if (!Global.getRecordingStatus()) {
+                            Log.v(this.TAG, "ignore new call!! bRecodingStatus[" + Global.getRecordingStatus() + "]");
                             return;
                         }
 

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

@@ -3245,4 +3245,16 @@ public final class Global {
             return -99;
         }
     }
+
+    public static boolean bRecordingStatus = false; // 거동수상자 녹화중 판별 플래그
+
+    public static void setRecordingStatus(boolean status) {
+        //Log.v(TAG, "setRecordingStatus[" + status + "]");
+        bRecordingStatus = status;
+    }
+
+    public static boolean getRecordingStatus() {
+        //Log.v(TAG, "getRecordingStatus[" + bRecordingStatus + "]");
+        return bRecordingStatus;
+    }
 }

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

@@ -425,7 +425,7 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
             ((MainActivity) mContext).releaseMainEventListener();
             Global.stopMelodyRepeat();
             showFrontCam(false, false);
-            MainActivity.bRecordingStatus = false;
+            Global.setRecordingStatus(false);
             MainActivity.mCallController.stop1stCallTimer();
             MainActivity.mCallController.stop2ndCallTimer();
             MainActivity.mCallController.setTalkPath(CALLPATH.NORMAL);
@@ -449,7 +449,7 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
 
                 Log.v("yjyoon", "TalkFront > onBrReceive : BR_RECORDSTOP   START");
 
-                LOG_INFO("[onBrReceive] strAction[" + strAction + "] bRecordingStatus[" + MainActivity.bRecordingStatus + "]");
+                LOG_INFO("[onBrReceive] strAction[" + strAction + "] bRecordingStatus[" + Global.getRecordingStatus() + "]");
                 boolean bSave = true;
                 try {
                     int nKind = intent.getIntExtra(define.NOTIBR_KIND, 0);
@@ -598,7 +598,7 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
                 }
                 else if (eCallStatus == CALLSTATUS.CALLED) {
                     bBlockSavePicBTN = false;
-                    if (MainActivity.bRecordingStatus) {
+                    if (Global.getRecordingStatus()) {
                         // 녹화 중 현관 호출 => 녹화 종료 및 팝업 닫힘 => 현관 호출 지속
                         LOG_WARN("[onCallEvent] STRANGER RECORDING IS RUNNING!!");
                         ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_VIDEORECORD);
@@ -769,8 +769,8 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
                 } else if (eCallStatus == CALLSTATUS.RECORDING) {
                     sendHandlerMsg(HANDLERMSG.SET_BTN_STATUS, 1, 0);
                     // [스마트현관카메라] 거동수상자 녹화
-                    LOG("[onCallEvent] bRecordingStatus [" + MainActivity.bRecordingStatus + "]");
-                    if (!MainActivity.bRecordingStatus) {
+                    LOG("[onCallEvent] bRecordingStatus [" + Global.getRecordingStatus() + "]");
+                    if (!Global.getRecordingStatus()) {
                         showFrontCam(true, false);
                         super.setFinishTimerDestroy();
                         if (ConfigValues.bRemoteCall) { // 방문객원격통화를 사용하는 경우 스트림서버에서 녹화 (거동수상자 영상을 전달하기 위해 인코딩)
@@ -1426,8 +1426,8 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
             LOG("[doMultiCallAccept] eCallStatus [" + eCallStatus + "]");
             if (eCallStatus == CALLSTATUS.RECORDING) {
                 showFrontCam(false, false);
-                if (MainActivity.bRecordingStatus) {
-                    MainActivity.bRecordingStatus = false;
+                if (Global.getRecordingStatus()) {
+                    Global.setRecordingStatus(false);
                     ((MainActivity) (this.getContext())).mediaStopRecord(true);
                     sendHandlerMsg(HANDLERMSG.SAVE_VISITOR_VIDEO_NOT_FINISH_APP, 0, 0);
                 }
@@ -2432,9 +2432,9 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
 
     private boolean startStrangerRecord(boolean bRemoteCall) {
         try {
-            Log.d(TAG, "[startStrangerRecord] bRecordingStatus [" + MainActivity.bRecordingStatus + "], bRemoteCall [" + bRemoteCall + "]");
-            if (!MainActivity.bRecordingStatus) {
-                MainActivity.bRecordingStatus = true;
+            Log.d(TAG, "[startStrangerRecord] bRecordingStatus [" + Global.getRecordingStatus() + "], bRemoteCall [" + bRemoteCall + "]");
+            if (! Global.getRecordingStatus()) {
+                Global.setRecordingStatus(true);
 
                 if (((MainActivity) mContext).mRecordTimer != null) {
                     ((MainActivity) mContext).mRecordTimer.cancel();
@@ -2465,8 +2465,8 @@ public class TalkFront extends WpadScreen implements CallEventListener, MainEven
                 showFrontCam(false, false);
             }
 
-            if (MainActivity.bRecordingStatus) {
-                MainActivity.bRecordingStatus = false;
+            if (Global.getRecordingStatus()) {
+                Global.setRecordingStatus(false);
                 ((MainActivity) (this.getContext())).mediaStopRecord(true);
 
                 if (((MainActivity) mContext).mCurRecordTime <= 3 || !bSave) {

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

@@ -516,7 +516,7 @@ public class TalkGuard extends WpadScreen implements CallEventListener, MainEven
                     Global.make1stCallHistoryInfo(strRemoteIP, strRemoteSIPID, CALLDIRECTION.OUT, CALLACTION.MISS, CALLRESULT.OUT_MISS);
                 } else if (eCallStatus == CALLSTATUS.CALLED) {
                     bRcvEnd = false;
-                    if (MainActivity.bRecordingStatus) {
+                    if (Global.getRecordingStatus()) {
                         // 거동수상자 녹화 중 호출 => 녹화 종료 및 팝업 닫힘 => 호출 지속
                         LOG_WARN("[onCallEvent] STRANGER RECORDING IS RUNNING!!");
                         ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_VIDEORECORD);

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

@@ -503,7 +503,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
                 sendHandlerMsg(HANDLERMSG.SET_BTN_STATUS, 0, 0, null);
                 if (eCallStatus == CALLSTATUS.CALLED) {
                     MainActivity.mCallController.selectVideoSourceToSubPhone(CALLTYPE.LOBBY, false);
-                    if (MainActivity.bRecordingStatus) {
+                    if (Global.getRecordingStatus()) {
                         // 거동수상자 녹화 중 호출 => 녹화 종료 및 팝업 닫힘 => 호출 지속
                         LOG_WARN("[onCallEvent] STRANGER RECORDING IS RUNNING!!");
                         ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_VIDEORECORD);

+ 1 - 1
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkPSTN.java

@@ -489,7 +489,7 @@ public class TalkPSTN extends WpadScreen implements CallEventListener, DTMFEvent
                 else if (eCallStatus == CALLSTATUS.CALLED) {
                     bPSTNCalled = true;
                     resetRingCnt();
-                    if (MainActivity.bRecordingStatus) {
+                    if (Global.getRecordingStatus()) {
                         // 거동수상자 녹화 중 호출 => 녹화 종료 및 팝업 닫힘 => 호출 지속
                         LOG_WARN("[onCallEvent] STRANGER RECORDING IS RUNNING!!");
                         ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_VIDEORECORD);

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

@@ -592,7 +592,7 @@ public class TalkResidence extends WpadScreen implements CallEventListener, Main
                     Global.make1stCallHistoryInfo(strRemoteIP, strRemoteSIPID, CALLDIRECTION.OUT, CALLACTION.MISS, CALLRESULT.OUT_MISS);
                 } else if (eCallStatus == CALLSTATUS.CALLED) {
                     bRcvEnd = false;
-                    if (MainActivity.bRecordingStatus) {
+                    if (Global.getRecordingStatus()) {
                         // 거동수상자 녹화 중 호출 => 녹화 종료 및 팝업 닫힘 => 호출 지속
                         LOG_WARN("[onCallEvent] STRANGER RECORDING IS RUNNING!!");
                         ((MainActivity) mContext).finishPopUp(ID.POPUP.POPUP_NOTICE_VIDEORECORD);