17 Commity 4a5d9776b5 ... 1c76768a02

Autor SHA1 Wiadomość Data
  Changwoo Nam 1c76768a02 [모든앱] 3 lat temu
  Changwoo Nam 17e23c30c9 [WallPadMain] 3 lat temu
  Changwoo Nam bfaae9ce35 [WallPadDevService] 3 lat temu
  Changwoo Nam c630ffd7b0 [WallPadCall] 3 lat temu
  Changwoo Nam 6955ca01b9 [WallPadSecurity] 3 lat temu
  Changwoo Nam 1e47b69682 [WallPadOutmodeRun] 3 lat temu
  Changwoo Nam e37fdafa90 [WallPadKeyBoard] 3 lat temu
  Changwoo Nam 036ea2449b [WallPadHomeCtrl] 3 lat temu
  Changwoo Nam f58a3083e1 [WallPadGlobalScreen] 3 lat temu
  Changwoo Nam 90c2535411 [WallPadGlobalButton] 3 lat temu
  Changwoo Nam 7a3c161200 [WallPadEnergyCtrl] 3 lat temu
  Changwoo Nam dd530d3f0a [WallPadEmergency] 3 lat temu
  Changwoo Nam 92e4b5f516 [WallPadConfig] 3 lat temu
  Changwoo Nam abc6d20583 [WallPadAddService] 3 lat temu
  Changwoo Nam 702579db49 [ManagerSetting] 3 lat temu
  Changwoo Nam 9c5890f13d [LogOutputService] 3 lat temu
  Changwoo Nam f1aeff859a [AutoPicture] 3 lat temu
55 zmienionych plików z 282 dodań i 30 usunięć
  1. BIN
      10_Release/AutoPicture.apk
  2. BIN
      10_Release/LogOutputService.apk
  3. BIN
      10_Release/ManagerSetting.apk
  4. BIN
      10_Release/WallPadAddService.apk
  5. BIN
      10_Release/WallPadCall.apk
  6. BIN
      10_Release/WallPadConfig.apk
  7. BIN
      10_Release/WallPadDevService.apk
  8. BIN
      10_Release/WallPadEmergency.apk
  9. BIN
      10_Release/WallPadEnergyCtrl.apk
  10. BIN
      10_Release/WallPadGlobalButton.apk
  11. BIN
      10_Release/WallPadGlobalScreen.apk
  12. BIN
      10_Release/WallPadHomeCtrl.apk
  13. BIN
      10_Release/WallPadKeyBoard.apk
  14. BIN
      10_Release/WallPadMain.apk
  15. BIN
      10_Release/WallPadOutModeRun.apk
  16. BIN
      10_Release/WallPadSecurity.apk
  17. BIN
      AutoPicture/libs/WallPadAPI.jar
  18. 1 1
      AutoPicture/src/main/AndroidManifest.xml
  19. BIN
      LogOutputService/libs/WallPadAPI.jar
  20. BIN
      LogOutputService/libs/WallPadAPIforSVC.jar
  21. 1 1
      LogOutputService/src/main/AndroidManifest.xml
  22. BIN
      ManagerSetting/libs/WallPadAPI.jar
  23. 1 1
      ManagerSetting/src/main/AndroidManifest.xml
  24. BIN
      WallPadAddService/libs/WallPadAPI.jar
  25. 1 1
      WallPadAddService/src/main/AndroidManifest.xml
  26. BIN
      WallPadCall/libs/WallPadAPI.jar
  27. 1 1
      WallPadCall/src/main/AndroidManifest.xml
  28. 2 2
      WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/CallController.java
  29. 1 0
      WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/MissedCallVisitorPicture.java
  30. 1 0
      WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/MainActivity.java
  31. 9 11
      WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/InquiryVisitorPictureHistory.java
  32. 1 0
      WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/TalkLobby.java
  33. BIN
      WallPadConfig/libs/WallPadAPI.jar
  34. 1 1
      WallPadConfig/src/main/AndroidManifest.xml
  35. BIN
      WallPadDevService/libs/WallPadAPIforSVC.jar
  36. 1 1
      WallPadDevService/src/main/AndroidManifest.xml
  37. 22 1
      WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/HomeAutomation_New_Controller.java
  38. BIN
      WallPadEmergency/libs/WallPadAPI.jar
  39. 1 1
      WallPadEmergency/src/main/AndroidManifest.xml
  40. BIN
      WallPadEnergyCtrl/libs/WallPadAPI.jar
  41. 1 1
      WallPadEnergyCtrl/src/main/AndroidManifest.xml
  42. 1 1
      WallPadGlobalButton/src/main/AndroidManifest.xml
  43. BIN
      WallPadGlobalScreen/libs/WallPadAPI.jar
  44. 1 1
      WallPadGlobalScreen/src/main/AndroidManifest.xml
  45. BIN
      WallPadHomeCtrl/libs/WallPadAPI.jar
  46. 1 1
      WallPadHomeCtrl/src/main/AndroidManifest.xml
  47. 1 1
      WallPadKeyBoard/src/main/AndroidManifest.xml
  48. BIN
      WallPadMain/libs/WallPadAPI.jar
  49. 1 1
      WallPadMain/src/main/AndroidManifest.xml
  50. 206 0
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java
  51. 24 0
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java
  52. BIN
      WallPadOutmodeRun/libs/WallPadAPI.jar
  53. 1 1
      WallPadOutmodeRun/src/main/AndroidManifest.xml
  54. BIN
      WallPadSecurity/libs/WallPadAPI.jar
  55. 1 1
      WallPadSecurity/src/main/AndroidManifest.xml

BIN
10_Release/AutoPicture.apk


BIN
10_Release/LogOutputService.apk


BIN
10_Release/ManagerSetting.apk


BIN
10_Release/WallPadAddService.apk


BIN
10_Release/WallPadCall.apk


BIN
10_Release/WallPadConfig.apk


BIN
10_Release/WallPadDevService.apk


BIN
10_Release/WallPadEmergency.apk


BIN
10_Release/WallPadEnergyCtrl.apk


BIN
10_Release/WallPadGlobalButton.apk


BIN
10_Release/WallPadGlobalScreen.apk


BIN
10_Release/WallPadHomeCtrl.apk


BIN
10_Release/WallPadKeyBoard.apk


BIN
10_Release/WallPadMain.apk


BIN
10_Release/WallPadOutModeRun.apk


BIN
10_Release/WallPadSecurity.apk


BIN
AutoPicture/libs/WallPadAPI.jar


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

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.autopicture"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 

BIN
LogOutputService/libs/WallPadAPI.jar


BIN
LogOutputService/libs/WallPadAPIforSVC.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.artncore.apps.ic_wallpad.service.log"
     android:versionCode="24"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

BIN
ManagerSetting/libs/WallPadAPI.jar


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

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.artncore.managersetting"
     android:versionCode="23"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.CALL_PHONE" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

BIN
WallPadAddService/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadaddservice"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

BIN
WallPadCall/libs/WallPadAPI.jar


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

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

@@ -2590,7 +2590,7 @@ public class CallController extends CallManager implements SIPEventListener {
                 }
 
                 strVisitorPicturePath = DBInfo.DIRECTORY_URI_VISITORPICTURE + makeVisitorPictureName(eCallType);
-                if (eCallType == CALLTYPE.FRONT) {
+                if (eCallType == CALLTYPE.FRONT || eCallType == CALLTYPE.LOBBY) {
                     if (bRemote_FrontCalled) {
                         if (!saveMoIPPicture(eCallType, strVisitorPicturePath)) return null;
                     }
@@ -2598,7 +2598,7 @@ public class CallController extends CallManager implements SIPEventListener {
                         if (!((MainActivity) mContext).saveFrontPicture()) return null;
                     }
                 }
-                else if (eCallType == CALLTYPE.LOBBY || eCallType == CALLTYPE.GUARD || eCallType == CALLTYPE.RESIDENCE) {
+                else if (eCallType == CALLTYPE.GUARD || eCallType == CALLTYPE.RESIDENCE) {
                     if (!saveMoIPPicture(eCallType, strVisitorPicturePath)) {
                         return null;
                     }

+ 1 - 0
WallPadCall/src/main/java/kr/co/icontrols/callengine/engine/MissedCallVisitorPicture.java

@@ -306,6 +306,7 @@ public class MissedCallVisitorPicture {
             String strName = "NONE";
             if (eCallType == CALLTYPE.PSTN) strName = eCallType.toString() + ":" + strRemoteSIPID;
             else if (eCallType == CALLTYPE.FRONT) strName = DEVICENAME.strType_Front + ":" + strRemoteSIPID;
+            else if (eCallType == CALLTYPE.LOBBY) strName = DEVICENAME.strType_Lobby + ":" + strRemoteSIPID;
             else strName = Global.makeCallHistoryName(strRemoteSIPID);
 
             for (int i = 0; i < strMissedCallPicURI.length; i++) {

+ 1 - 0
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/MainActivity.java

@@ -332,6 +332,7 @@ public class MainActivity extends WpadActivity {
         try {
             Log.i(TAG, "=============== [START - MainActivity] ===============");
 
+            sendWallPadCallLiveBR_ACK();
             registerWallPadCallLiveBRReceiver();
 
             Global.setGlobalContext(this);

+ 9 - 11
WallPadCall/src/main/java/kr/co/icontrols/wallpadcall/screen/InquiryVisitorPictureHistory.java

@@ -432,7 +432,7 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
 
     private String makeUnitName(String strName) {
         try {
-//            LOG("[makeUnitName] strName = " + strName);
+            LOG("[makeUnitName] strName = " + strName);
             String strResult = "NONE";
             if (strName.contains("PSTN")) {
                 String[] strParse_01 = strName.split(":");
@@ -691,8 +691,7 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
 
             for (int i = 0; i < LIST_CNT; i++) {
                 if (mLIST[i].IMG_UNIT != null) mLIST[i].IMG_UNIT.setVisibility(View.INVISIBLE);
-                if (mLIST[i].IMG_VISITORPICTURE != null)
-                    mLIST[i].IMG_VISITORPICTURE.setVisibility(View.INVISIBLE);
+                if (mLIST[i].IMG_VISITORPICTURE != null) mLIST[i].IMG_VISITORPICTURE.setVisibility(View.INVISIBLE);
                 if (mLIST[i].BTN_CHECK != null) mLIST[i].BTN_CHECK.setVisibility(View.INVISIBLE);
                 if (mLIST[i].TXT_INFO != null) mLIST[i].TXT_INFO.setVisibility(View.INVISIBLE);
                 if (mLIST[i].IMG_NEW != null) mLIST[i].IMG_NEW.setVisibility(View.INVISIBLE);
@@ -732,17 +731,17 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
                 if (i < nInfoCnt) {
                     mLIST_VALUE[i].ID = mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getID();
                     if (ConfigValues.bEasyModeUse) {
-                        mLIST_VALUE[i].INFO = makeUnitName(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getName()) + "\n"
-                                + makeUnitTimestamp(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getTimestamp());
-                    } else {
-                        mLIST_VALUE[i].INFO = makeUnitName(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getName())
-                                + makeUnitTimestamp(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getTimestamp());
+                        mLIST_VALUE[i].INFO = makeUnitName(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getName()) + makeUnitTimestamp(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getTimestamp());
+                    }
+                    else {
+                        mLIST_VALUE[i].INFO = makeUnitName(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getName()) + makeUnitTimestamp(mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getTimestamp());
                     }
                     mLIST_VALUE[i].URI = mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getURI();
                     mLIST_VALUE[i].NEW = mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getChecked();
                     mLIST_VALUE[i].THIEF = mVisitorPictureHistoryInfoTable.getVisitorPictureHistoryInfo(i).getThief();
                     nStartIndex++;
-                } else {
+                }
+                else {
                     mLIST_VALUE[i].ID = "";
                     mLIST_VALUE[i].INFO = "";
                     mLIST_VALUE[i].URI = "";
@@ -755,8 +754,7 @@ public class InquiryVisitorPictureHistory extends WpadScreen implements CallEven
                 mLIST[i].TXT_INFO.setText(mLIST_VALUE[i].INFO);
                 mLIST[i].IMG_UNIT.setVisibility(View.VISIBLE);
                 mLIST[i].TXT_INFO.setVisibility(View.VISIBLE);
-                if (mLIST_VALUE[i].NEW.equals("FALSE"))
-                    mLIST[i].IMG_NEW.setVisibility(View.VISIBLE);
+                if (mLIST_VALUE[i].NEW.equals("FALSE")) mLIST[i].IMG_NEW.setVisibility(View.VISIBLE);
 //                if (mLIST_VALUE[i].THIEF.equals("TRUE"))
 //                    mLIST[i].IMG_THIEF.setVisibility(View.VISIBLE);
                 drawVisitorPicture(i, mLIST_VALUE[i].URI);

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

@@ -473,6 +473,7 @@ public class TalkLobby extends WpadScreen implements CallEventListener, MainEven
                     }
                     MainActivity.mCallController.set1stCallTimer(eCallType, MainActivity.mCallController.mCTT.RESIDENCEnLOBBY);
                     Global.change1stCallLogAction(CALLACTION.TALK);
+                    Global.add1stCallHistoryInfoFinal();
                 }
                 else if (eCallStatus == CALLSTATUS.END) {
                     bEnableVisitorPic = false;

BIN
WallPadConfig/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadconfig"
     android:versionCode="01"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

BIN
WallPadDevService/libs/WallPadAPIforSVC.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.artncore.deviceservice"
     android:versionCode="1"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

+ 22 - 1
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/HomeAutomation_New_Controller.java

@@ -765,6 +765,7 @@ public class HomeAutomation_New_Controller extends DeviceManager {
         filter.addAction(define.NOTIFY_ACNAME);
         filter.addAction(HomeAutomation_Call_Status.BR_ACK_WALLPADCALL_LIVE);
         filter.addAction(BR_MAIN_NOTI.ACNAME_MAIN_NOTI);
+        filter.addAction(HomeAutomation_Call.BR_NOTIFY_FRONTCALL_EVENT);
 
         //엘리베이터 버튼 눌릴 시 BR수신 필요
         ServiceMain.svcContext.registerReceiver(mWallPadNotifyBR, filter);
@@ -805,7 +806,13 @@ public class HomeAutomation_New_Controller extends DeviceManager {
 
             if (mDriver.Polling.Status != Driver.PollingList.STATUS.Normal) return;
 
-            if (strAction.equals(define.NOTIFY_ACNAME)) {
+            if (strAction.equals(HomeAutomation_Call.BR_NOTIFY_FRONTCALL_EVENT)) {
+                // 현관통화 수신시
+                setBlockNewCall(true);
+                HomeAutoCallHandler.removeMessages(HANDLERMSG.RELEASE_BLOCK_NEWCALL);
+                sendHandlerMsgDelayed(HANDLERMSG.RELEASE_BLOCK_NEWCALL, 0, 0, 3000);
+            }
+            else if (strAction.equals(define.NOTIFY_ACNAME)) {
                 //방범 관련 사항
                 int nKind = intent.getIntExtra(BR_MAIN_NOTI.KIND, 0);
                 DeviceLog("[mWallPadNotifyBR] strAction [" + strAction + "], nKind [" + nKind + "]");
@@ -906,6 +913,7 @@ public class HomeAutomation_New_Controller extends DeviceManager {
                 }
                 Log.i(TAG, "[mWallPadNotifyBR] Call Status is changed!! Type_Device [" + mDriver.CallStatus.Type_Device + "], Type_Call [" + mDriver.CallStatus.Type_Call + "]" );
             } else if (strAction.equals(HomeAutomation_Call_Status.BR_ACK_WALLPADCALL_LIVE)) {
+                if (!bWallPadCallLive) setCallStaus(true);
                 bWallPadCallLive = true;
                 nWallPadCallACKCnt = MAX_WALLPADCALL_LIVE_CNT;
             }
@@ -3741,6 +3749,7 @@ public class HomeAutomation_New_Controller extends DeviceManager {
                 }
             }
             else if (nCallType == HomeAutomation_Call.CALLTYPE_RECEIVE_CALL_REQUEST) {
+                sendHomeAutoCallRevEvent();
                 if (mPreviousCallInfo.checkCallBRDelay()) {
                     // 일정시간 이전에 호출을 수신한 이력이 있는 경우
 //                    return mHomeAutomation_Call.sendHomeAutoCallBR(nDeviceType, HomeAutomation_Call.CALLTYPE_SEND_CALL_END, nID_Dong, nID_Ho);   // 해당 메시지에 대해 통화 종료를 전송한다.
@@ -4997,4 +5006,16 @@ public class HomeAutomation_New_Controller extends DeviceManager {
         }
     }
 
+    private void sendHomeAutoCallRevEvent() {
+        try {
+//            Log.i(TAG, "[sendHomeAutoCallRevEvent] ===== START =====");
+            Intent mIntent = new Intent();
+            mIntent.setAction(HomeAutomation_Call.BR_NOTIFY_HOMEAUTOCALL_EVENT);
+            ServiceMain.svcContext.sendBroadcast(mIntent);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] sendWallPadCallLiveBR_ACK()");
+            e.printStackTrace();
+        }
+    }
+
 }

BIN
WallPadEmergency/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpademergency"
     android:versionCode="01"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

BIN
WallPadEnergyCtrl/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadenergyctrl"
     android:versionCode="01"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

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

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadglobalbutton"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 

BIN
WallPadGlobalScreen/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadglobalscreen"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-feature android:name="android.hardware.camera" />
 

BIN
WallPadHomeCtrl/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadhomectrl"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadkeyboard"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-feature android:required="false" android:name="android.hardware.touchscreen"/>
 

BIN
WallPadMain/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadmain"
     android:versionCode="17"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

+ 206 - 0
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java

@@ -12,6 +12,8 @@ import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
 import android.graphics.Color;
 import android.hardware.Camera;
 import android.media.AudioManager;
@@ -1009,6 +1011,18 @@ public class MainActivity extends WpadActivity {
         }
 //        forceCtrlStrangerRecordingUserSettingDisable(false);
         getLCDKeeperUsage();
+
+        try {
+            ThreadCleanVisitorPic mThreadCleanVisitorPic = new ThreadCleanVisitorPic();
+            mThreadCleanVisitorPic.start();
+        } catch (RuntimeException re) {
+            Log.e(TAG, "[RuntimeException] Call ThreadCleanVisitorPic!!");
+            re.printStackTrace();
+        } catch (Exception e) {
+            Log.e(TAG, "[RuntimeException] Call ThreadCleanVisitorPic!!");
+            e.printStackTrace();
+        }
+
         Log.i(TAG, "[onCreate] ==================== onCreate end ====================");
     }
 
@@ -8709,6 +8723,198 @@ public class MainActivity extends WpadActivity {
         }
     }
 
+    /**
+     * 방문객 사진 정리 기능 (added by jeffrey, 2022.03.17)
+     * 방문객 사진 정리 함수
+     * - 동작조건: 방문객 사진폴더에 파일이 100개 이상 존재하는 경우에만 동작함.
+     * - 부팅시 방문객 사진 폴더에 방문객사진 목록 DB에 없는 사진파일이 존재하는 경우, 이 사진파일을 삭제한다.
+     * - DB파일이 없거나 DB내에 목록이 없는 경우 방문객 사진 폴더를 삭제한다.
+     */
+
+    class ThreadCleanVisitorPic extends Thread {
+        public ThreadCleanVisitorPic() {
+            super();
+            Log.i(TAG, "[cleanOverVisitorPic] Thread init!!!");
+        }
+
+        public void run() {
+            try {
+                Log.i(TAG, "[cleanOverVisitorPic] ThreadCleanVisitorPic.run() 1");
+                Thread.sleep(5000);
+                Log.i(TAG, "[cleanOverVisitorPic] ThreadCleanVisitorPic.run() 2");
+                cleanOverVisitorPic();
+                Log.i(TAG, "[cleanOverVisitorPic] ThreadCleanVisitorPic.run() 3");
+            } catch (RuntimeException re) {
+                Log.e(TAG, "[RuntimeException] ThreadCleanVisitorPic().run()");
+                re.printStackTrace();
+            } catch (Exception e) {
+                Log.e(TAG, "[Exception] ThreadCleanVisitorPic().run()");
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void cleanOverVisitorPic() {
+        try {
+            Log.i(TAG, "[cleanOverVisitorPic] start");
+            int MAXHISTORYCNT = 100;
+            File mFile = new File(define.VISITOR_PICTURE_LOCATION);
+            if (mFile.exists()) {
+                File[] mFiles = mFile.listFiles();
+                int nFileCnt = mFiles.length;
+                Log.i(TAG, "[cleanOverVisitorPic] nFileCnt [" + nFileCnt + "]");
+//                if (MAXHISTORYCNT >= nFileCnt) {
+//                    Log.i(TAG, "[cleanOverVisitorPic] VisitorPic nFileCnt OK!!");
+//                    return;
+//                }
+
+                Log.i(TAG, "[cleanOverVisitorPic] VisitorPic nFileCnt over the Max(" + nFileCnt + "/" + MAXHISTORYCNT + ")!!");
+
+                ArrayList<String> BDList = new ArrayList<String>();   // DB내 파일 목록
+                BDList.clear();
+                BDList = getVisitorPictureList();   // DB에서 방문객 사진 파일 목록 가져오기
+
+                if (BDList == null) {
+                    // DB가 없거나 DB내에 목록이 없는 경우, 파일을 모두 지운다.
+                    Log.w(TAG, "[cleanOverVisitorPic] doesn't exist the list in the DB or the DB file!!");
+                    deleteDirectory(define.VISITOR_PICTURE_LOCATION);
+                    return;
+                }
+
+                ArrayList<String> TargetURIs = new ArrayList<String>();   // DB내 파일 목록
+                for (int i = 0; i < nFileCnt; i++) {
+                    int nIndex = BDList.indexOf(mFiles[i].getName());
+                    if (nIndex < 0) {
+                        // DB에 없는 파일처리
+                        TargetURIs.add(mFiles[i].getPath());
+                    }
+                }
+
+                // Arrays가 비어있지 않으면 목록의 파일을 삭제한다.
+                if (TargetURIs.size() > 0) {
+                    deleteVisitorPicture(TargetURIs);
+                }
+            }
+            else {
+                Log.w(TAG, "[cleanOverVisitorPic] Visitor picture directory is not exist!!!");
+            }
+            Log.i(TAG, "[cleanOverVisitorPic] end");
+        } catch (RuntimeException re) {
+            Log.e(TAG, "[RuntimeException] cleanOverVisitorPic()");
+            re.printStackTrace();
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] cleanOverVisitorPic()");
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 방문객 사진 정리 기능 (added by jeffrey, 2022.03.17)
+     * 방문객 사진 DB 목록 읽기 함수
+     * - 방문객 사진 DB에 저장된 방문객 사진 파일의 URI(path)를 반환한다.
+     * - DB파일이 없거나
+     */
+    String FILENAME_DB_HISTORY_VISITORPICTURE = "HISTORY_VISITORPICTURE.DB";
+    String TABLE_NAME_HISTORY_VISITORPICTURE = "HISTORY_VISITORPICTURE";
+    public ArrayList<String> getVisitorPictureList() {
+        try {
+            Log.i(TAG, "[getVisitorPictureList] start");
+            String DBPath = define.DATABASE_LOCATION + FILENAME_DB_HISTORY_VISITORPICTURE;
+            File DBFile = new File(DBPath);
+            if (DBFile.exists()) {
+                // DB 파일이 있는 경우
+                Log.i(TAG, "[getVisitorPictureList] DB file is exist!! -> " + DBPath);
+                String strDBQuery = "select URI from " + TABLE_NAME_HISTORY_VISITORPICTURE;
+                SQLiteDatabase mSQLiteDatabase = openOrCreateDatabase(DBPath, SQLiteDatabase.OPEN_READONLY, null);
+                ArrayList<String> VisitorPicList = new ArrayList<String>();
+                VisitorPicList.clear();
+
+                if (mSQLiteDatabase == null) {
+                    Log.w(TAG, "[getVisitorPictureList] mSQLiteDatabase is null!!!");
+                    return VisitorPicList;
+                }
+
+                // DB 검색 시작
+                Cursor mCursor = mSQLiteDatabase.rawQuery(strDBQuery, null);
+                while (mCursor.moveToNext()) {
+                    for (int i = 0; i < mCursor.getColumnCount(); i++) {
+                        String[] strParsed = mCursor.getString(i).split("/");
+                        VisitorPicList.add(strParsed[strParsed.length - 1]);
+                    }
+                }
+                mSQLiteDatabase.close();
+
+//                int nCnt = VisitorPicList.size();
+//                Log.i(TAG, "[getVisitorPictureList] VisitorPicList nCnt [" + nCnt + "]");
+//                for (int i = 0; i < nCnt; i++) {
+//                    Log.e(TAG, "[getVisitorPictureList] List[" + i + "] = " + VisitorPicList.get(i));
+//                }
+
+                return VisitorPicList;
+            }
+            else {
+                Log.w(TAG, "[getVisitorPictureList] DB file is not exist!! -> " + DBPath);
+                return null;
+            }
+        } catch (RuntimeException re) {
+            Log.e(TAG, "[RuntimeException] deleteHistoryList(ArrayList<String> strURI)");
+            re.printStackTrace();
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] deleteHistoryList(ArrayList<String> strURI)");
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private void deleteDirectory(String strPath) {
+        try {
+            File mFile = new File(strPath);
+            File[] childFileList = mFile.listFiles();
+            if (childFileList!=null) {
+                for (File childFile : childFileList) {
+                    if (childFile.isDirectory())
+                        deleteDirectory(childFile.getAbsolutePath()); // 혹시 있을지 모르는 하위폴더 삭제
+                    else childFile.delete(); // 파일 삭제
+                }
+                mFile.delete(); // 상위 폴더 삭제
+            }
+        } catch (RuntimeException re) {
+            re.printStackTrace();
+        }
+        catch (Exception e) {
+            Log.e(TAG, "[Exception] deleteDirectory(String strPath)");
+            e.printStackTrace();
+        }
+    }
+
+    public void deleteVisitorPicture(ArrayList<String> strURI) {
+        try {
+            int nCnt = strURI.size();
+            for (int i = 0; i < nCnt; i++) {
+                File mFile = new File(strURI.get(i));
+                if (mFile.exists()) {
+                    Log.i(TAG, "[deleteVisitorPicture] strPath exists!! [" + strURI.get(i) + "]");
+                    FileDelete(mFile);
+                }
+                else {
+                    Log.i(TAG, "[deleteVisitorPicture] There is no strPath!! [" + strURI.get(i) + "]");
+                }
+            }
+        } catch (RuntimeException re) {
+            re.printStackTrace();
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] deleteVisitorPicture(ArrayList<String> strURI)");
+            e.printStackTrace();
+        }
+    }
+
+    private synchronized void FileDelete(File file) {
+        if (file!=null && file.exists()) {
+            file.delete();
+        }
+    }
+
+
 
 }
 

+ 24 - 0
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java

@@ -103,6 +103,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
 
 import kr.co.icontrols.gledeviceinterface.jni;
 import kr.co.icontrols.hdcftp.HDCFTPManager;
+import kr.co.icontrols.homeautomation.HomeAutomation_Call;
 import kr.co.icontrols.sslapi.SSLClient;
 import kr.co.icontrols.sslapi.SSLServer;
 import kr.co.icontrols.wallpadmain.IOInterface;
@@ -570,6 +571,11 @@ public class iMapServer extends Service {
                         Log.w(TAG, "[mWallPadNotifyBR.NOTIFY_DAIL] Distribution panel type is not available!! Type -> " + Common.CurrentDistributionPanelType);
                     }
                 }
+                else if (strActionName.equals(HomeAutomation_Call.BR_NOTIFY_HOMEAUTOCALL_EVENT)) {
+                    bBlockFrontCall = true;
+                    handlerCallCtrl.removeMessages(CALLCTRLHANDLERMSG.RELEASE_BLOCK_FRONTCALL);
+                    handlerCallCtrl.sendEmptyMessageDelayed(CALLCTRLHANDLERMSG.RELEASE_BLOCK_FRONTCALL, 3000);
+                }
                 else if (strActionName.equals(Common.BR_BLACKOUT_SCREEN_RUN)) {
                     runGlobalScreenAPK(Common.GLOBALSCREEN_ID.BLACKOUT_EMERGENCY_LIGHT, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00);
                 }
@@ -2100,6 +2106,7 @@ public class iMapServer extends Service {
 						// Jeff added below codes for call app (2018.01.25)
                         Log.i(TAG, "[WallPadInterface.BTN_DOOR] bWallPadCallLive [" + bWallPadCallLive + "], bBlockFrontCall [" + bBlockFrontCall + "]");
                         if (!bWallPadCallLive && !bBlockFrontCall) {
+                            sendFrontCallBlockBR();
                             bBlockFrontCall = true;
                             handlerCallCtrl.removeMessages(CALLCTRLHANDLERMSG.RELEASE_BLOCK_FRONTCALL);
                             handlerCallCtrl.sendEmptyMessageDelayed(CALLCTRLHANDLERMSG.RELEASE_BLOCK_FRONTCALL, 3000);
@@ -2560,6 +2567,7 @@ public class iMapServer extends Service {
         mIntentFilter.addAction(define.NOTIFY_DAIL);
         mIntentFilter.addAction(Common.BR_BLACKOUT_SCREEN_RUN);
         mIntentFilter.addAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI);
+        mIntentFilter.addAction(HomeAutomation_Call.BR_NOTIFY_HOMEAUTOCALL_EVENT);
 		registerReceiver(mWallPadNotifyBR, mIntentFilter);
         Log.d(TAG, "[onStartCommand] BR register end!!!");
 		// BR 등록 완료
@@ -13371,6 +13379,10 @@ public class iMapServer extends Service {
 
             if (bWallPadCallLive != getCallAppRunning()) {
                 setCallAppRunning(bWallPadCallLive);
+                if (!bWallPadCallLive) {
+                    // 통화앱 비정상 종료시를 대비하여, 통화 LED버튼 초기화 코드를 넣는다.
+                    mIOInterface.ctrlWallPadLED_Call(true);
+                }
             }
             Log.i(TAG, "[sendWallPadCallLiveBR_Request] bWallPadCallLive [" + bWallPadCallLive + "]");
         } catch (Exception e) {
@@ -13964,6 +13976,18 @@ public class iMapServer extends Service {
         return -1;
     }
 
+    private void sendFrontCallBlockBR() {
+        try {
+//            Log.i(TAG, "[sendFrontCallBlockBR] ===== START =====");
+            Intent mIntent = new Intent();
+            mIntent.setAction(HomeAutomation_Call.BR_NOTIFY_FRONTCALL_EVENT);
+            getApplicationContext().sendBroadcast(mIntent);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] sendFrontCallBlockBR()");
+            e.printStackTrace();
+        }
+    }
+
 
 
 

BIN
WallPadOutmodeRun/libs/WallPadAPI.jar


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

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadoutmoderun"
     android:versionCode="1"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

BIN
WallPadSecurity/libs/WallPadAPI.jar


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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadsecurity"
     android:versionCode="1"
-    android:versionName="2022.05.12.01">
+    android:versionName="2022.05.17.01">
 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
   	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>