|
@@ -47,6 +47,7 @@ import kr.co.icontrols.callengine.remotecall.RemoteCallMSG.REMOTECALL_CALLER;
|
|
|
import kr.co.icontrols.callengine.remotecall.RemoteCallMSG.REMOTECALL_CALLOWNER;
|
|
|
import kr.co.icontrols.callengine.remotecall.RemoteCallMSG.REMOTECALL_CALLTYPE;
|
|
|
import kr.co.icontrols.callengine.sip.SIPStun;
|
|
|
+import kr.co.icontrols.wallpadcall.MainActivity;
|
|
|
import kr.co.icontrols.wallpadcall.declare.DataClasses.GuardListTable;
|
|
|
import kr.co.icontrols.wallpadcall.declare.DataClasses.RemoteIDInfo;
|
|
|
import kr.co.icontrols.wallpadcall.declare.Declare;
|
|
@@ -69,6 +70,8 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
|
|
|
GuardListTable mGuardListTable = null; // 경비실기 목록
|
|
|
|
|
|
+ boolean bBLOCK_REQUEST_CALL = false; // 원격통화 요청 거절 flag, 원격통화가 종료된 후에 백그라운드 리소스 정리중 요청이 오면 꼬임 (true: 거절, false: 수락)
|
|
|
+
|
|
|
@Override
|
|
|
public IBinder onBind(Intent intent) {
|
|
|
return mMessenger.getBinder();
|
|
@@ -270,6 +273,20 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void setBlockRemoteCall() {
|
|
|
+ try {
|
|
|
+ bBLOCK_REQUEST_CALL = true;
|
|
|
+ VisitorCallEventHandler.removeMessages(VisitorCallEvent.RELEASE_BLOCK_REQUEST_CALL);
|
|
|
+ sendHandlerMsgDelayed(VisitorCallEvent.RELEASE_BLOCK_REQUEST_CALL, 0, 0, 5000);
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ Log.e(TAG, "[RuntimeException] setBlockRemoteCall()");
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] setBlockRemoteCall()");
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/************************************************************
|
|
|
*
|
|
@@ -353,6 +370,17 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
try {
|
|
|
Log.d(TAG, "[EVENT_RequestMonitor] handle [" + handle + "], device [" + device + "], caller [" + caller + "]");
|
|
|
Log.d(TAG, "[EVENT_RequestMonitor] bWallPadCallLive [" + SIPStun.bWallPadCallLive + "]");
|
|
|
+
|
|
|
+ //jglee - 2024.06.20 남창우 차장님이 작업한 모바일 통화 종료 코드 가져오기(2022.08.26 작업 내용)
|
|
|
+ if (bBLOCK_REQUEST_CALL) {
|
|
|
+ // 모바일 통화 종료후, 후처리 진행중
|
|
|
+ Log.w(TAG, "[EVENT_RequestMonitor] Blocked remotecall!! bBLOCK_REQUEST_CALL [" + bBLOCK_REQUEST_CALL +"]");
|
|
|
+ Object obj = handle;
|
|
|
+ Message message = VisitorCallEventHandler.obtainMessage(VisitorCallEvent.EVENT_REQUEST_MONITOR_ERR, obj);
|
|
|
+ VisitorCallEventHandler.sendMessage(message);
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
if (!SIPStun.bWallPadCallLive && mHandle == -1) {
|
|
|
// 모바일 요청 성공
|
|
|
mVisitorCallLib.ndkHandle = mHandle = handle;
|
|
@@ -607,6 +635,7 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
public final int EVENT_OTHEREVENT = 8;
|
|
|
public final int EVENT_REQUEST_MONITOR_ERR = 9;
|
|
|
public final int EVENT_CLOSED_SESSION = 10;
|
|
|
+ public final int RELEASE_BLOCK_REQUEST_CALL = 1000;
|
|
|
}
|
|
|
|
|
|
int mHandle = -1;
|
|
@@ -616,7 +645,7 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
public void handleMessage(Message msg) {
|
|
|
super.handleMessage(msg);
|
|
|
try {
|
|
|
-// Log.d(TAG, "[VisitorCallEventHandler] msg.what [" + msg.what + "]");
|
|
|
+ Log.d(TAG, "[VisitorCallEventHandler] msg.what [" + msg.what + "]");
|
|
|
if (msg.what == VisitorCallEvent.EVENT_REQUEST_MONITOR) {
|
|
|
String device = (String) msg.obj;
|
|
|
if (device.equals(REMOTECALL_CALLTYPE.CALLTYPE_DOOR)) {
|
|
@@ -630,6 +659,18 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
}
|
|
|
} else if (msg.what == VisitorCallEvent.EVENT_START_CALLING) {
|
|
|
Log.d(TAG, "[VisitorCallEventHandler] REMOTE_CALLTYPE [" + RemoteCallMSG.REMOTE_CALLTYPE + "]");
|
|
|
+ //jglee - 2023.02.02 여기서 해당 Sender가 종료되면 정지
|
|
|
+ if(MainActivity.mDataSender!=null && MainActivity.mDataSender.isClose())
|
|
|
+ {
|
|
|
+ Log.d(TAG, "[VisitorCallEventHandler] Sender Close");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //jglee - 2023.02.02 여기서 통화가 걸려오는 경우나, 거동수상자 녹화중일 경우만 사용할 수 있도록 체크
|
|
|
+ if(MainActivity.mCallController.mCallInfo.getCalledCnt() == 0 && !Global.getRecordingStatus() && MainActivity.mCallController.mCallInfo.getFRONT() != CALLSTATUS.CALLING)
|
|
|
+ {
|
|
|
+ Log.d(TAG, "[VisitorCallEventHandler] CheckCalled and StrangeRecord");
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (RemoteCallMSG.REMOTE_CALLTYPE != CALLTYPE.NONE) sendMsgToRemoteMsns(REMOTECALLMSG.RECEIVE_EVENT_START_CALL, RemoteCallMSG.REMOTE_CALLTYPE);
|
|
|
} else if (msg.what == VisitorCallEvent.EVENT_AUDIO_DATA) {
|
|
|
AVPacket avp = (AVPacket) msg.obj;
|
|
@@ -649,6 +690,7 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
sendHandlerMsg(HANDLERMSG.GET_USERLIST, 0, 0, phoneKey);
|
|
|
}
|
|
|
} else if (msg.what == VisitorCallEvent.EVENT_CLOSED_SESSION || msg.what == VisitorCallEvent.EVENT_REQUEST_MONITOR_ERR) {
|
|
|
+ if (msg.what == VisitorCallEvent.EVENT_CLOSED_SESSION) setBlockRemoteCall();
|
|
|
int handle = (int) msg.obj;
|
|
|
if (mVisitorCallLib != null) {
|
|
|
Log.d(TAG, "[VisitorCallEventHandler] EVENT_CLOSED_SESSION handle [" + handle + "]");
|
|
@@ -671,6 +713,10 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ bBLOCK_REQUEST_CALL = false;
|
|
|
+ }
|
|
|
+ else if (msg.what == VisitorCallEvent.RELEASE_BLOCK_REQUEST_CALL) {
|
|
|
+ bBLOCK_REQUEST_CALL = false;
|
|
|
}
|
|
|
} catch (RuntimeException re) {
|
|
|
LogUtil.errorLogInfo("", TAG, re);
|
|
@@ -958,6 +1004,8 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
List<String[]> GuardList = null;
|
|
|
WallpadDeviceSet deviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
GuardList = deviceSet.GetGuardList();
|
|
|
+ deviceSet.closeDB();
|
|
|
+
|
|
|
mGuardListTable = new GuardListTable();
|
|
|
mGuardListTable.clearTable();
|
|
|
Log.d(TAG, "[getGuardList] GuardList.size [" + GuardList.size() + "]");
|
|
@@ -966,7 +1014,6 @@ public class RemoteCallManager extends Service implements VisitorCallLib.Callbac
|
|
|
Log.d(TAG, "[getGuardList] GuardList [" + i + "] = " + GuardList.get(i)[0]);
|
|
|
mGuardListTable.addGuardTable(GuardList.get(i)[0], Global.makeGuardIP(GuardList.get(i)[1]), null);
|
|
|
}
|
|
|
- deviceSet.closeDB();
|
|
|
|
|
|
int nGuardCnt = mGuardListTable.getCnt();
|
|
|
if (nGuardCnt > 0) {
|