|
|
@@ -1,8700 +1,8703 @@
|
|
|
-package kr.co.icontrols.wallpadmain;
|
|
|
-
|
|
|
-import android.annotation.SuppressLint;
|
|
|
-import android.app.Activity;
|
|
|
-import android.app.ActivityManager;
|
|
|
-import android.app.ActivityManager.RunningTaskInfo;
|
|
|
-import android.content.BroadcastReceiver;
|
|
|
-import android.content.ComponentName;
|
|
|
-import android.content.Context;
|
|
|
-import android.content.Intent;
|
|
|
-import android.content.IntentFilter;
|
|
|
-import android.content.SharedPreferences;
|
|
|
-import android.content.pm.PackageInfo;
|
|
|
-import android.content.pm.PackageManager;
|
|
|
-import android.graphics.Color;
|
|
|
-import android.hardware.Camera;
|
|
|
-import android.media.AudioManager;
|
|
|
-import android.net.Uri;
|
|
|
-import android.net.ethernet.EthernetDevInfo;
|
|
|
-import android.net.ethernet.EthernetManager;
|
|
|
-import android.os.Build;
|
|
|
-import android.os.Bundle;
|
|
|
-import android.os.Handler;
|
|
|
-import android.os.Looper;
|
|
|
-import android.os.Message;
|
|
|
-import android.os.PowerManager;
|
|
|
-import android.util.Log;
|
|
|
-import android.view.KeyEvent;
|
|
|
-import android.view.MotionEvent;
|
|
|
-import android.view.SurfaceHolder;
|
|
|
-import android.view.SurfaceView;
|
|
|
-import android.view.View;
|
|
|
-import android.view.WindowManager;
|
|
|
-import android.view.animation.Animation;
|
|
|
-import android.view.animation.AnimationUtils;
|
|
|
-import android.widget.ImageView;
|
|
|
-import android.widget.RelativeLayout;
|
|
|
-import android.widget.ViewFlipper;
|
|
|
-
|
|
|
-import com.artncore.WallPadDataMgr.WallpadCallHistoryData;
|
|
|
-import com.artncore.WallPadDataMgr.WallpadDeviceSet;
|
|
|
-import com.artncore.WallPadDataMgr.WallpadParkInfo;
|
|
|
-import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
|
|
|
-import com.artncore.WallPadDataMgr.WallpadScheduleData;
|
|
|
-import com.artncore.WallPadDataMgr.WallpadStatusData;
|
|
|
-import com.artncore.WallPadDataMgr.WallpadVisitorPicData_A20;
|
|
|
-import com.artncore.WallPadDataMgr.wallpaddbmgr;
|
|
|
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
|
|
|
-import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSetBackup;
|
|
|
-import com.artncore.commons.APIErrorCode;
|
|
|
-import com.artncore.commons.DataClasses.CarParkingData;
|
|
|
-import com.artncore.commons.define;
|
|
|
-import com.artncore.deviceinterface.WallPadInterface;
|
|
|
-import com.artncore.wallpadapi.IntLightAPI;
|
|
|
-import com.artncore.wallpadapi.LightAPI;
|
|
|
-import com.artncore.wallpadapi.MultiSwitchAPI;
|
|
|
-import com.artncore.wallpadapi.SdbAPI;
|
|
|
-import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
|
|
|
-import com.artncore.wallpadapi.WallPadAPI;
|
|
|
-import com.artncore.wallpadimap.RetProci;
|
|
|
-import com.artncore.wallpadimap.WallPadiMAPNotifyAPI;
|
|
|
-import com.bumptech.glide.Glide;
|
|
|
-import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|
|
-
|
|
|
-import java.io.BufferedReader;
|
|
|
-import java.io.BufferedWriter;
|
|
|
-import java.io.File;
|
|
|
-import java.io.FileInputStream;
|
|
|
-import java.io.FileOutputStream;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.InputStream;
|
|
|
-import java.io.InputStreamReader;
|
|
|
-import java.io.OutputStream;
|
|
|
-import java.io.OutputStreamWriter;
|
|
|
-import java.net.InetAddress;
|
|
|
-import java.net.NetworkInterface;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.GregorianCalendar;
|
|
|
-import java.util.List;
|
|
|
-import java.util.regex.Pattern;
|
|
|
-
|
|
|
-import kr.co.icontrols.v40ioctl.V40IOInterface;
|
|
|
-import kr.co.icontrols.wallpadmain.declare.Common;
|
|
|
-import kr.co.icontrols.wallpadmain.declare.Common.BR_MAIN_LIVE_CHECKER;
|
|
|
-import kr.co.icontrols.wallpadmain.declare.DataClasses.IconInfoTable;
|
|
|
-import kr.co.icontrols.wallpadmain.declare.ID;
|
|
|
-import kr.co.icontrols.wallpadmain.declare.ID_OLD;
|
|
|
-import kr.co.icontrols.wallpadmain.declare.LayoutDevice;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPAlarmOperation;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPCarParking;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPCarParking_UPIS;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPElecCarChargingInfo;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPEnergyServer_EnergyMeter;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPEnergyServer_EnergyModule;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPEnergyServer_Realmeter;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPRemotemeter;
|
|
|
-import kr.co.icontrols.wallpadmain.menu.CallSubMenuScreen;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.EASYUI_MAIN;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.HYOSUNGUI_MAIN_HA;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.HYOSUNGUI_MAIN_HN;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.MAIN;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.METROUI_MAIN;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.METROUI_SUB_01;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.METROUI_SUB_02;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.METROUI_SUB_GROUP;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.SUB_01;
|
|
|
-import kr.co.icontrols.wallpadmain.screen.SUB_02;
|
|
|
-import kr.co.icontrols.wallpadmain.util.EnergyAlramPopupMgr;
|
|
|
-import kr.co.icontrols.wallpadmain.util.IconManager;
|
|
|
-import kr.co.icontrols.wallpadmain.util.MobileProcService;
|
|
|
-import kr.co.icontrols.wallpadmain.util.StringUtil;
|
|
|
-import kr.co.icontrols.wallpadmain.util.iMapServer;
|
|
|
-import kr.co.icontrols.wallpadsupport.Version;
|
|
|
-import kr.co.icontrols.wallpadsupport.Version.MODEL_TYPE;
|
|
|
-import kr.co.icontrols.wallpadsupport.WpadActivity;
|
|
|
-import kr.co.icontrols.wallpadsupport.WpadRelativeLayoutParams;
|
|
|
-import kr.co.icontrols.wallpadsupport.WpadScale;
|
|
|
-import kr.co.icontrols.wallpadsupport.WpadSound;
|
|
|
-import kr.co.icontrols.wallpadsupport.WpadSound.SND;
|
|
|
-import kr.co.icontrols.wallpadsupport.WpadUtil;
|
|
|
-
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPAlarmOperation.EMER_STATE;
|
|
|
-import kr.co.icontrols.wallpadmain.imap.iMAPAlarmOperation.EMER_DETAIL_INFO;
|
|
|
-
|
|
|
-import static android.content.Intent.ACTION_TIME_TICK;
|
|
|
-import static com.artncore.commons.define.ALBUM_PICTURE_LOCATION;
|
|
|
-import static com.artncore.commons.define.BESTIN_LOCATION;
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * @description
|
|
|
- * 월패드 [설정기능] 메인화면 이다.<br>
|
|
|
- * 상단의 Top 메뉴, [홈] [돌아가기]<br>
|
|
|
- * 좌측의 Tab 메뉴, [조명] [난방] [가스] ... 등 선택 메뉴<br>
|
|
|
- * 를 여기서 처리한다.
|
|
|
- */
|
|
|
-public class MainActivity extends WpadActivity {
|
|
|
- private final static String TAG = "MainActivity";
|
|
|
-
|
|
|
- private void DebugLogOutput(String s) { if(Common.DEBUG_LOG_ON) Log.d(TAG, s); }
|
|
|
-
|
|
|
- // =================================================================================================
|
|
|
- // [[ Declaration ]] region
|
|
|
- // =================================================================================================
|
|
|
- protected Context mContext = null;
|
|
|
- public Context getContext() { return mContext; }
|
|
|
- private WallPadAPI mWallPadAPI = null;
|
|
|
- public static IOInterface mIOInterface = null;
|
|
|
- private int DEVICE_OPERATION_MODE = Common.MODE;
|
|
|
- boolean bEasyModeUsage = false;
|
|
|
-
|
|
|
- public static boolean bGoodDesign2020 = false;
|
|
|
-
|
|
|
- // Layout
|
|
|
- private RelativeLayout MainLayout; // 메인화면
|
|
|
- private RelativeLayout MainScreenLayout;
|
|
|
-
|
|
|
- private RelativeLayout SubLayout_01; // 서브 01 화면
|
|
|
- private RelativeLayout SubScreenLayout_01;
|
|
|
-
|
|
|
- private RelativeLayout SubLayout_02; // 서브 02 화면
|
|
|
- private RelativeLayout SubScreenLayout_02;
|
|
|
-
|
|
|
- private RelativeLayout EasyMainLayout; // 간편모드 메인화면
|
|
|
- private RelativeLayout EasyMainScreenLayout;
|
|
|
-
|
|
|
- private ViewFlipper mViewFlipper;
|
|
|
- Animation aniSlideIn, aniSlideOut;
|
|
|
-
|
|
|
- public static ImageView IMG_LCD_KEEPER;
|
|
|
-
|
|
|
-
|
|
|
- // PopupActivityRun
|
|
|
- private static boolean PopupActivityRun = false;
|
|
|
- public static boolean getPopupActivityRun() { return PopupActivityRun; }
|
|
|
- public static void setPopupActivityRun(boolean run) { PopupActivityRun = run; }
|
|
|
-
|
|
|
- // InfoActivityRun
|
|
|
- private static boolean InfoActivityRun = false;
|
|
|
- public static boolean getInfoActivityRun() {
|
|
|
- Log.d(TAG, "[getInfoActivityRun] InfoActivityRun: " + InfoActivityRun);
|
|
|
- return InfoActivityRun;
|
|
|
- }
|
|
|
- public static void setInfoActivityRun(boolean run) {
|
|
|
- InfoActivityRun = run;
|
|
|
- if (!InfoActivityRun) resetCurrentInfoScreenID();
|
|
|
- }
|
|
|
-
|
|
|
- // Menu & TabData
|
|
|
- private Menu mMenu = null;
|
|
|
-// private TabData mTabData = null;
|
|
|
-
|
|
|
- // CurrentScreenId
|
|
|
- private int mCurrentScreenId = -1;
|
|
|
- private int mTempCurrentScreenId = -1;
|
|
|
- private static int mCurrentInfoScreenId = -1;
|
|
|
-
|
|
|
- // Screen
|
|
|
- private MAIN MainScreen = null;
|
|
|
- private SUB_01 SUB_01Screen = null;
|
|
|
- private SUB_02 SUB_02Screen = null;
|
|
|
- private METROUI_MAIN MetroUI_MainScreen = null;
|
|
|
- private METROUI_SUB_01 MetroUI_SUB_01Screen = null;
|
|
|
- private METROUI_SUB_02 MetroUI_SUB_02Screen = null;
|
|
|
- private METROUI_SUB_GROUP MetroUI_SUB_GroupScreen = null;
|
|
|
- private HYOSUNGUI_MAIN_HN Hyosung_HN_MainScreen = null;
|
|
|
- private HYOSUNGUI_MAIN_HA Hyosung_HA_MainScreen = null;
|
|
|
- private EASYUI_MAIN EasyUI_MainScreen = null;
|
|
|
-
|
|
|
- // 메뉴 리스트 처리 및 서브 스크린 호출
|
|
|
- public CallSubMenuScreen m_CallSubMenuScreen = null;
|
|
|
-
|
|
|
- ///////////////////////////// AnC 메인어플에서 사용되는 변수 모음
|
|
|
-
|
|
|
-
|
|
|
- int LastTimeSync = 0;
|
|
|
- boolean HomeCTROn = true;
|
|
|
- //int PSTNStatus = 0;
|
|
|
- int MAINStatus = 0;
|
|
|
- public static final int MAIN_NORMAL = 0;
|
|
|
- public static final int MAIN_WAIT_SETIP = 1;
|
|
|
- static boolean Alert_App_On = false;
|
|
|
-
|
|
|
- byte bootupretryCNT = 0;
|
|
|
- static final int MAX_BOOTUP_RETRY_COUNT = 1200;
|
|
|
-
|
|
|
- ScheduleManager SCManager;
|
|
|
-
|
|
|
-
|
|
|
- boolean SYSTEM_TIME_SET = false;
|
|
|
- static boolean CALLSVCSTARTED = false;
|
|
|
-
|
|
|
- public Thread mThread_getAppsVersion = null;
|
|
|
- ///////////////////////////// end
|
|
|
-
|
|
|
- // 거실조명 제어드라이버
|
|
|
- private IntLightAPI mIntLightAPI = null;
|
|
|
- // 에너지미터 제어드라이버
|
|
|
- private Sdb_LivingRoomLightAPI mSdb_LivingRoomLightAPI = null;
|
|
|
- private SdbAPI mSdbAPI = null;
|
|
|
-
|
|
|
- // 멀티스위치 제어 드라이버
|
|
|
- private MultiSwitchAPI m_MultiSwitch = null;
|
|
|
- // 대외향 거실 스위치 드라이버
|
|
|
- private LightAPI m_LightCtrl = null;
|
|
|
-
|
|
|
- private boolean m_ModelHouseSleepModeRelease = false;
|
|
|
-
|
|
|
- //주차정보 관련 변수
|
|
|
- public static boolean bUseofNot_ParkingInfo = false;
|
|
|
- public static int nParkingSystemType = Common.PARKING_SYSTEM_ICONTROLS;
|
|
|
- private String ParkingServerIP = null;
|
|
|
- private int ParkingServerPort = 10000;
|
|
|
- private int cGetParkingMin = 18;
|
|
|
- private boolean bSetMSG_GetParkingInfo = false;
|
|
|
- iMAPCarParking iMAPcarParking;
|
|
|
- iMAPCarParking_UPIS iMapcarParking_UPIS;
|
|
|
-
|
|
|
- //일정 알림 관련 변수
|
|
|
- private int AlarmScheduleCount = 0;
|
|
|
- private String AlarmScheduleString = null;
|
|
|
- private boolean bAlarmScheduleString = false;
|
|
|
-
|
|
|
- //전기차 충전 관련 변수
|
|
|
- iMAPElecCarChargingInfo imapElecCarChargingInfo;
|
|
|
-
|
|
|
- //제로 에너지 하우스 관련 변수
|
|
|
- private boolean bUseofNot_ZeroEnergyHouseInfo = false;
|
|
|
- private int cGetZeroEnergyHouseMin = 12;
|
|
|
- iMAPEnergyServer_Realmeter iMAPenergyServer_Realmeter;
|
|
|
- iMAPEnergyServer_EnergyMeter iMAPenergyServer_EnergyMeter;
|
|
|
- iMAPEnergyServer_EnergyModule iMAPenergyServer_EnergyModule;
|
|
|
- String DayofLastSecond = "2000-01-01 00:00:00";
|
|
|
- boolean DayofLastBoolean = false;
|
|
|
-
|
|
|
- //에너지관리서버 관련 변수
|
|
|
- private boolean bUseofNot_EnergyServer = false;
|
|
|
-
|
|
|
- //에너지 알람 발생 관련 변수
|
|
|
- private boolean bUseofNot_EnergyAlarm = false;
|
|
|
- private boolean ResultGetIntent = false;
|
|
|
-
|
|
|
- private String elect_target = "Error";
|
|
|
- private String elect_used = "Error";
|
|
|
- private String elect_info = "Error";
|
|
|
-
|
|
|
- private String water_target = "Error";
|
|
|
- private String water_used = "Error";
|
|
|
- private String water_info = "Error";
|
|
|
-
|
|
|
- private String gas_target = "Error";
|
|
|
- private String gas_used = "Error";
|
|
|
- private String gas_info = "Error";
|
|
|
-
|
|
|
- private String hotwater_target = "Error";
|
|
|
- private String hotwater_used = "Error";
|
|
|
- private String hotwater_info = "Error";
|
|
|
-
|
|
|
- private String heating_target = "Error";
|
|
|
- private String heating_used = "Error";
|
|
|
- private String heating_info = "Error";
|
|
|
-
|
|
|
- /**
|
|
|
- * 월패드 이벤트 알림 관련 변수
|
|
|
- */
|
|
|
- // 스마트 우편, 전기차 충전 사용 여부
|
|
|
- public static boolean bSmartPostUsage = false, bElecVehicleUsage = false;
|
|
|
- // 부재중 전화, 방문객 사진, 공지사항, 택배, 스마트 우편, 전기차 충전 이벤트 개수
|
|
|
- public static int nMissedCallCnt = 0, nVisitorPicCnt = 0, nNoticeCnt = 0, nParcelCnt = 0, nPostCnt = 0, nElecVehicleChangingCnt = 0;
|
|
|
-
|
|
|
-
|
|
|
- // 끝
|
|
|
-
|
|
|
- IconManager mIconManager;
|
|
|
- public IconInfoTable mIconInfoTable;
|
|
|
- public static int nShortcutCnt = 0;
|
|
|
- public static int nShortcutMax = 12;
|
|
|
- int nIconsOnSubScreen = 24;
|
|
|
- public static List<WallpadStatusData.WidgetItem> MainScreenShortcutList;
|
|
|
-
|
|
|
- // 조명상태를 관리하기 위한 클래스
|
|
|
- public static class LightInfo {
|
|
|
- public class Preset {
|
|
|
- public class Lights {
|
|
|
- public String ONOFF = "none";
|
|
|
- public int DIM = 0;
|
|
|
- public int COLOR = 0;
|
|
|
- public Lights() {
|
|
|
- ONOFF = "none";
|
|
|
- DIM = 0;
|
|
|
- COLOR = 0;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public Lights[] mLights;
|
|
|
-
|
|
|
- public Preset() {
|
|
|
- mLights = new Lights[9]; // 0번지는 프리셋별 그룹제어 설정값 (조명 1~8)
|
|
|
- for (int i = 0; i < mLights.length; i++) {
|
|
|
- mLights[i] = new Lights();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public Preset[] mPreset;
|
|
|
- public int nLightPresetNo;
|
|
|
- public LightInfo() {
|
|
|
- mPreset = new Preset[9]; // 0번지는 전체제어 설정값 (프리셋 1~8)
|
|
|
- for (int i = 0; i < mPreset.length; i++) {
|
|
|
- mPreset[i] = new Preset();
|
|
|
- }
|
|
|
- nLightPresetNo = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- public static LightInfo mLightInfo;
|
|
|
- public String BR_CTRL_LIGHT_LIVINGROOM = "kr.co.icontrols.wallpadglobalscreen.BR_CTRL_LIGHT_LIVINGROOM";
|
|
|
-
|
|
|
- public static WpadSound mSound;
|
|
|
-
|
|
|
- public void getLivinglightPreset() {
|
|
|
- try {
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(this);
|
|
|
- String[] strEntireValue = mWallpadStatusData.getLivinglightModeCtrlEntireValue();
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
- Log.i(TAG, "[getLivinglightPreset] strEntireValue.length = " + strEntireValue.length);
|
|
|
- for (int i = 0; i < strEntireValue.length; i++) {
|
|
|
- Log.i(TAG, "[getLivinglightPreset] strEntireValue[" + i + "] = " + strEntireValue[i]);
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getLivinglightPreset()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void initLivinglightPreset() {
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(this);
|
|
|
- try {
|
|
|
- if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
- || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
- Log.i(TAG, "[initLivinglightPreset] Initialize preset for IHN-D101");
|
|
|
- for (int i = 1; i < 5; i++) {
|
|
|
- String strPreset = mWallpadStatusData.getLivinglightModeCtrlUnitValues(i, 0);
|
|
|
- Log.i(TAG, "[initLivinglightPreset] i = " + i + ", strPreset = " + strPreset);
|
|
|
- String[] strParse = strPreset.split(":");
|
|
|
- if (strParse[1].equalsIgnoreCase("0") || strParse[2].equalsIgnoreCase("0")) {
|
|
|
- if (i == 1) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 7;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 5;
|
|
|
- }
|
|
|
- else if (i == 2) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 3;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 2;
|
|
|
- }
|
|
|
- else if (i == 3) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 1;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 1;
|
|
|
- }
|
|
|
- mWallpadStatusData.setLivinglightModeCtrlUnitValues(i, 0, mLightInfo.mPreset[i].mLights[0].ONOFF, mLightInfo.mPreset[i].mLights[0].DIM, mLightInfo.mPreset[i].mLights[0].COLOR);
|
|
|
- }
|
|
|
- else {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = strParse[0];
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = Integer.parseInt(strParse[1]);
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = Integer.parseInt(strParse[2]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (Version.getModelType() == MODEL_TYPE.IHN_1010 || Version.getModelType() == MODEL_TYPE.IHN_1010_I || Version.getModelType() == MODEL_TYPE.IHN_1010_I_ALT) {
|
|
|
- Log.i(TAG, "[initLivinglightPreset] Initialize preset for IHN-1010(-I)");
|
|
|
- if (getKCCDimmingCtrl()) {
|
|
|
- for (int i = 1; i < 5; i++) {
|
|
|
- String strPreset = mWallpadStatusData.getLivinglightModeCtrlUnitValues(i, 0);
|
|
|
- Log.i(TAG, "[initLivinglightPreset] i = " + i + ", strPreset = " + strPreset);
|
|
|
- String[] strParse = strPreset.split(":");
|
|
|
- if (strParse[1].equalsIgnoreCase("0") || strParse[2].equalsIgnoreCase("0")) {
|
|
|
- if (i == 1) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 10;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 5;
|
|
|
- }
|
|
|
- else if (i == 2) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 7;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 2;
|
|
|
- }
|
|
|
- else if (i == 3) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 5;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 1;
|
|
|
- }
|
|
|
- else if (i == 4) {
|
|
|
- mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
- mLightInfo.mPreset[i].mLights[0].DIM = 2;
|
|
|
- mLightInfo.mPreset[i].mLights[0].COLOR = 1;
|
|
|
- }
|
|
|
- mWallpadStatusData.setLivinglightModeCtrlUnitValues(i, 0, mLightInfo.mPreset[i].mLights[0].ONOFF, mLightInfo.mPreset[i].mLights[0].DIM, mLightInfo.mPreset[i].mLights[0].COLOR);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.i(TAG, "[initLivinglightPreset] i = " + i + ", strPreset = " + strPreset);
|
|
|
- Log.i(TAG, "[initLivinglightPreset] mLightInfo.mPreset[" + i + "].mLights[0].ONOFF = " + mLightInfo.mPreset[i].mLights[0].ONOFF);
|
|
|
- Log.i(TAG, "[initLivinglightPreset] mLightInfo.mPreset[" + i + "].mLights[0].ONOFF = " + mLightInfo.mPreset[i].mLights[0].DIM);
|
|
|
- Log.i(TAG, "[initLivinglightPreset] mLightInfo.mPreset[" + i + "].mLights[0].ONOFF = " + mLightInfo.mPreset[i].mLights[0].COLOR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] initLivinglightPreset()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
- }
|
|
|
-
|
|
|
- private boolean getKCCDimmingCtrl() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[getKCCDimmingCtrl] ========== START ==========");
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(mContext);
|
|
|
- int nEnable = mWallpadDeviceSet.GetDeviceSetted("KCC디밍제어기");
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
- Log.i(TAG, "[getKCCDimmingCtrl] nEnable [" + nEnable + "]");
|
|
|
-
|
|
|
- if (nEnable == WallpadDeviceSet.DEV_DATA_ENABLE) {
|
|
|
- Log.i(TAG, "[getKCCDimmingCtrl] Enabled");
|
|
|
- return true;
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.i(TAG, "[getKCCDimmingCtrl] Disabled");
|
|
|
- return false;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] setKCCDimmingCtrl()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public void CallSubMenuScreen(int screenID) {
|
|
|
- if (screenID >= ID.LINKEDSCREEN.SubMenuAddService.Notice && screenID <= ID.LINKEDSCREEN.SubMenuAddService.ElecCar) m_CallSubMenuScreen.callStartAddServiceAPK(screenID);
|
|
|
- else if (screenID >= ID.LINKEDSCREEN.SubMenuEnergy.RealTimeCheckMeter && screenID <= ID.LINKEDSCREEN.SubMenuEnergy.IEnergy) m_CallSubMenuScreen.callStartEnergyAPK(screenID);
|
|
|
- }
|
|
|
-
|
|
|
- private void restoreSystemVolume() {
|
|
|
- try {
|
|
|
- String strCurrentTopPackage = getTopActivity();
|
|
|
- Log.i(TAG, "[restoreSystemVolume] strCurrentTopPackage = " + strCurrentTopPackage);
|
|
|
-
|
|
|
- WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
- int nSavedVolume = wdb.GetWallPadMasterVolume();
|
|
|
- wdb.closeDB();
|
|
|
-
|
|
|
- final AudioManager audioManager = (AudioManager)this.getContext().getSystemService(this.getContext().AUDIO_SERVICE);
|
|
|
- int nCurrentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
|
|
|
- audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nSavedVolume , 0);
|
|
|
- Log.i(TAG, "[restoreSystemVolume] #Before# nCurrentVolume = " + nCurrentVolume + ", #After# nSavedVolume = " + nSavedVolume);
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] restoreSystemVolume()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // =================================================================================================
|
|
|
- // [[ Activity Life Cycle ]] region
|
|
|
- // =================================================================================================
|
|
|
- /**
|
|
|
- * Activity Constructors
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onCreate(Bundle savedInstanceState) {
|
|
|
- super.onCreate(savedInstanceState);
|
|
|
- Log.i(TAG, "[onCreate] ========== START ==========");
|
|
|
-
|
|
|
- Log.w(TAG, "[onCreate] Start to check booting status!!!");
|
|
|
- Runtime mRuntime = Runtime.getRuntime();
|
|
|
- Process mProcess;
|
|
|
- int iDelayCount = 0;
|
|
|
-
|
|
|
- while (true) {
|
|
|
- try {
|
|
|
- String cmd = "getprop dev.bootcomplete";
|
|
|
-
|
|
|
- mProcess = mRuntime.exec(cmd);
|
|
|
- BufferedReader br = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
|
|
|
- String line;
|
|
|
- String strResult = null;
|
|
|
-
|
|
|
- while ((line = br.readLine()) != null) {
|
|
|
- strResult = line;
|
|
|
- }
|
|
|
-
|
|
|
- if (strResult.equals("1")) {
|
|
|
-
|
|
|
- File sdcard = new File("/storage/emulated/0");
|
|
|
- if(sdcard.exists() == true) {
|
|
|
- iDelayCount = 0;
|
|
|
- Thread.sleep(1000);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- {
|
|
|
- iDelayCount++;
|
|
|
- Thread.sleep(100);
|
|
|
- }
|
|
|
-
|
|
|
- if (iDelayCount > 400) {
|
|
|
- cmd = "setprop persist.sys.reboot 1";
|
|
|
- mProcess = mRuntime.exec(cmd);
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] Checking device booting status -> Unable to execute top command");
|
|
|
- e.fillInStackTrace();
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- Log.w(TAG, "[onCreate] Device booting completed!!");
|
|
|
-
|
|
|
- Log.i(TAG, "[onCreate] Wallpad model name [" + Version.getModelType() + "]");
|
|
|
-
|
|
|
- if (Common.DIAGNOSTIC_MODE) {
|
|
|
- Log.i(TAG, "------------------ [START - DIAGNOSTIC_MODE] -------------------");
|
|
|
- setNetworkAddr( 2, 1, 3);
|
|
|
- }
|
|
|
-
|
|
|
- // @ AutoScale 설정 - 1.
|
|
|
- if (WpadScale.getWidthPixels() == 800 && WpadScale.getHeightPixels() == 480) {
|
|
|
- // 800x480 일 경우에만 AutoScale 을 설정한다.
|
|
|
- Log.i(TAG, "[onCreate] Wallpad LCD resolution. -> Width [" + WpadScale.getWidthPixels() + "], Height [" + WpadScale.getHeightPixels() + "] -> setAutoScale ON !!!");
|
|
|
- WpadScale.setAutoScale(true);
|
|
|
- }
|
|
|
- else if (WpadScale.getWidthPixels() == 1366 && WpadScale.getHeightPixels() == 768) {
|
|
|
- // 800x480 일 경우에만 AutoScale 을 설정한다.
|
|
|
- Log.i(TAG, "[onCreate] Wallpad LCD resolution. -> Width [" + WpadScale.getWidthPixels() + "], Height [" + WpadScale.getHeightPixels() + "] -> setAutoScale ON !!!");
|
|
|
- WpadScale.setAutoScale(true);
|
|
|
- WpadScale.changeAutoScaleValue(1024, 600);
|
|
|
- }
|
|
|
-
|
|
|
- // @ AutoScale 설정 - 2. 에너지관리화면을 위한 구분자 설정
|
|
|
- if ((WpadScale.getWidthPixels() == 1024) && (WpadScale.getHeightPixels() == 600)) {
|
|
|
- Common.SCREEN_TYPE = Common.SCREEN_TYPE_1024x600;
|
|
|
- }
|
|
|
- else if ((WpadScale.getWidthPixels() == 1280) && (WpadScale.getHeightPixels() == 800)) {
|
|
|
- Common.SCREEN_TYPE = Common.SCREEN_TYPE_1280x800;
|
|
|
- }
|
|
|
- else if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
|
|
|
- Common.SCREEN_TYPE = Common.SCREEN_TYPE_800x480;
|
|
|
- }
|
|
|
- else if ((WpadScale.getWidthPixels() == 1366) && (WpadScale.getHeightPixels() == 768)) {
|
|
|
- Common.SCREEN_TYPE = Common.SCREEN_TYPE_1024x600;
|
|
|
- }
|
|
|
- Log.d(TAG, "[onCreate] SCREEN_TYPE: " + Common.SCREEN_TYPE);
|
|
|
-
|
|
|
-
|
|
|
- super.setFinishBrEnable(false);
|
|
|
- super.AppVersionLogOut(); // [APP Version] + [WallPadSupport Lib Version] 을 로그로 출력한다.
|
|
|
-
|
|
|
- LayoutDevice.InitGetScreenSize(this.getWindowManager(), getApplicationContext() );
|
|
|
-
|
|
|
- try {
|
|
|
- // 최초 DB 폴더가 생성되어 있지 않으면 폴더를 생성하도록 한다.
|
|
|
- File dbhome = new File(wallpaddbmgr.dblocation);
|
|
|
- Log.d(TAG, "[Create] - Step0.3 : dbhome path [" + dbhome.getPath() + "]");
|
|
|
- if (dbhome.exists() == false) {
|
|
|
- dbhome.mkdir();
|
|
|
- Log.d(TAG, "[Create] - Step0.3 : Make DB Folder");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "[Create] - Step0.3 : DB exists");
|
|
|
- }
|
|
|
-
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
- if (mWallpadStatusData != null) {
|
|
|
- DebugLogOutput("[Create] - Step0.3 : WallpadStatusData Open OK");
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
- }
|
|
|
- else {
|
|
|
- DebugLogOutput("[Create] - Step0.3 : WallpadStatusData Open FAIL");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- DebugLogOutput("[Create] - Step0.5 : WallpadStatusData end");
|
|
|
-
|
|
|
- Log.i("Version", "<><><><> WallPadAPI Version = [" + define.WALLPADAPI_VERSION + "] " + "<><><><>");
|
|
|
-
|
|
|
- checkISSEnergyType();
|
|
|
-
|
|
|
- runDeviceService();
|
|
|
-
|
|
|
- // 1. 변수 초기화
|
|
|
- DebugLogOutput("[Create] - Step1 : EMData Create");
|
|
|
- PopupActivityRun = false;
|
|
|
- InfoActivityRun = false;
|
|
|
- mContext = this;
|
|
|
- setCallAppRunning(false); // 메인앱 초기화시 통화앱 미실행값을 DB에 저장
|
|
|
- // 2. 자동 종료 셋팅
|
|
|
- DebugLogOutput("[Create] - Step2 : Auto Finish Setting");
|
|
|
-
|
|
|
- // 3. API 호출
|
|
|
- DebugLogOutput("[Create] - Step3 : API Call");
|
|
|
-
|
|
|
- // 3.1. mWallPadAPI 생성
|
|
|
- try {
|
|
|
- mWallPadAPI = new WallPadAPI(this);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[ExceptionError] - new WallPadAPI : " + e);
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- initIOInterface(mWallPadAPI);
|
|
|
- Common.CurrentBoardType = mIOInterface.getBoardType(Version.getModelType());
|
|
|
-
|
|
|
- DebugLogOutput("[Create] - Step3.5 : API Call end");
|
|
|
-
|
|
|
- if (Common.GetDeviceSampleMode(this)) {
|
|
|
- Log.d(TAG, "[Create] OperationMode = MODE_BUSINESS_SAMPLE");
|
|
|
- DEVICE_OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "[Create] OperationMode = MODE_NOMAL");
|
|
|
- DEVICE_OPERATION_MODE = Common.MODE_NOMAL;
|
|
|
- }
|
|
|
-
|
|
|
- // 분전반 정보 가져오기
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
|
|
|
- Common.CurrentDistributionPanelType = mWallpadDeviceSet.Get_DistributionPannelType_Info();
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
-
|
|
|
- // 4. Layout registration
|
|
|
- DebugLogOutput("[Create] - Step4 : Layout registration");
|
|
|
-
|
|
|
- Common.eGUIType = checkGUIType(this.getContext());
|
|
|
- Log.i(TAG, "[Create] eGUIType = " + Common.eGUIType);
|
|
|
-
|
|
|
- mIconManager = new IconManager(mContext, mWallPadAPI);
|
|
|
- if (mIconManager == null) {
|
|
|
- Log.w(TAG, "[Create] mIconManager is null!!");
|
|
|
- }
|
|
|
-
|
|
|
- mIconInfoTable = mIconManager.getAvailableIcons();
|
|
|
- if (mIconInfoTable == null) {
|
|
|
- Log.w(TAG, "[Create] mIconInfoTable is null!!");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.i(TAG, "[Create] mIconInfoTable.getCnt() = " + mIconInfoTable.getCnt());
|
|
|
- }
|
|
|
-
|
|
|
- WallpadDeviceSet deviceSet = new WallpadDeviceSet(mContext);
|
|
|
- boolean bSupport = deviceSet.Get_EasyModeUX_Support();
|
|
|
- deviceSet.closeDB();
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
- if (!bSupport) {
|
|
|
- mWallpadStatusData.SetEasyModeUxUse(false);
|
|
|
- }
|
|
|
- bEasyModeUsage = bSupport & mWallpadStatusData.GetEasyModeUxUse();
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
- // Sound API 등록
|
|
|
- mSound = new WpadSound(this);
|
|
|
-
|
|
|
- // 메인화면 레이아웃
|
|
|
- MainLayout = new RelativeLayout(this);
|
|
|
- RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
- MainLayout.setLayoutParams(params);
|
|
|
- MainLayout.setId(ID_OLD.main.layout.ALL);
|
|
|
- super.setAllLayoutRegistration(MainLayout);
|
|
|
-
|
|
|
- // 메인화면 스크린 레이아웃
|
|
|
- MainScreenLayout = new RelativeLayout(this);
|
|
|
- WpadUtil.LayoutRegistration(MainLayout, MainScreenLayout, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
-
|
|
|
- if (getWallPadCameraUsage() && (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT)) {
|
|
|
- Log.i(TAG, "[Create] SurfaceLayout Registration!!!");
|
|
|
- SurfaceLayout = new RelativeLayout(this);
|
|
|
- WpadUtil.LayoutRegistration(MainLayout, SurfaceLayout, WpadScale.getWidthPixels(), WpadScale.getWidthPixels(), 0, 0, ID.MAINACTIVITY.LAYOUT.SURFACE);
|
|
|
- }
|
|
|
-
|
|
|
- if (Common.eGUIType == Common.GUI_TYPE.STANDARD) nIconsOnSubScreen = 24;
|
|
|
-// else if (eGUIType == GUI_TYPE.METRO) nIconsOnSubScreen = 15;
|
|
|
- else nIconsOnSubScreen = 24;
|
|
|
-
|
|
|
- // 서브화면 1 레이아웃
|
|
|
- if (mIconInfoTable.getCnt() > 0) {
|
|
|
- SubLayout_01 = new RelativeLayout(this);
|
|
|
- params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
- SubLayout_01.setLayoutParams(params);
|
|
|
- SubLayout_01.setId(ID_OLD.main.layout.ALL);
|
|
|
- super.setAllLayoutRegistration(SubLayout_01);
|
|
|
-
|
|
|
- // 서브화면 1 스크린 레이아웃
|
|
|
- SubScreenLayout_01 = new RelativeLayout(this);
|
|
|
- WpadUtil.LayoutRegistration(SubLayout_01, SubScreenLayout_01, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
- }
|
|
|
-
|
|
|
- // 서브화면 2 레이아웃
|
|
|
- if (mIconInfoTable.getCnt() > nIconsOnSubScreen) {
|
|
|
- SubLayout_02 = new RelativeLayout(this);
|
|
|
- params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
- SubLayout_02.setLayoutParams(params);
|
|
|
- SubLayout_02.setId(ID_OLD.main.layout.ALL);
|
|
|
- super.setAllLayoutRegistration(SubLayout_02);
|
|
|
-
|
|
|
- // 서브화면 2 스크린 레이아웃
|
|
|
- SubScreenLayout_02 = new RelativeLayout(this);
|
|
|
- WpadUtil.LayoutRegistration(SubLayout_02, SubScreenLayout_02, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
- }
|
|
|
-
|
|
|
- // 간편모드 메인화면 레이아웃
|
|
|
- if (bEasyModeUsage) {
|
|
|
- EasyMainLayout = new RelativeLayout(this);
|
|
|
- params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
- EasyMainLayout.setLayoutParams(params);
|
|
|
- EasyMainLayout.setId(ID_OLD.main.layout.ALL);
|
|
|
- super.setAllLayoutRegistration(EasyMainLayout);
|
|
|
-
|
|
|
- // 간편모드 메인화면 스크린 레이아웃
|
|
|
- EasyMainScreenLayout = new RelativeLayout(this);
|
|
|
- WpadUtil.LayoutRegistration(EasyMainLayout, EasyMainScreenLayout, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
- }
|
|
|
-
|
|
|
- m_ModelHouseSleepModeRelease= Common.GetModelHouseSleepModeRelease(this);
|
|
|
- Log.d(TAG, " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% =====> GetModelHouseSleepModeRelease :" + m_ModelHouseSleepModeRelease);
|
|
|
- if (m_ModelHouseSleepModeRelease) {
|
|
|
- mLCD_SleepHandler.sendEmptyMessageDelayed(0, (30 * 1000));
|
|
|
- }
|
|
|
-
|
|
|
- // 5. Top Menu - ImageView registration
|
|
|
- DebugLogOutput("[Create] - Step5 : Top Menu - ImageView registration");
|
|
|
- // 6. Tab Menu - ImageView registration
|
|
|
-
|
|
|
- restoreSystemVolume();
|
|
|
- initProximitySensor();
|
|
|
-
|
|
|
-
|
|
|
- // 서브 스크린 호출하기 위한 메뉴 리스트 관리 클래스
|
|
|
- m_CallSubMenuScreen = new CallSubMenuScreen( this , mWallPadAPI);
|
|
|
-
|
|
|
- if (Common.eGUIType == Common.GUI_TYPE.STANDARD) {
|
|
|
- // 메인화면 3가지 등록으로 인해 변경
|
|
|
- MainScreen = new MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen, DEVICE_OPERATION_MODE);
|
|
|
-// EasyUI_MainScreen = new EASYUI_MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
- }
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.METRO) {
|
|
|
- MetroUI_MainScreen = new METROUI_MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
- }
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_ON) {
|
|
|
- Hyosung_HN_MainScreen = new HYOSUNGUI_MAIN_HN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
- }
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_OFF) {
|
|
|
- Hyosung_HA_MainScreen = new HYOSUNGUI_MAIN_HA(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
- }
|
|
|
- else {
|
|
|
- MainScreen = new MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen, DEVICE_OPERATION_MODE);
|
|
|
- }
|
|
|
-
|
|
|
- DebugLogOutput("[Create] - Step6 : Main Screen registration");
|
|
|
- // 7. Draw
|
|
|
- DebugLogOutput("[Create] - Step7 : setContentView");
|
|
|
-
|
|
|
- try {
|
|
|
- if (Common.eGUIType == Common.GUI_TYPE.STANDARD) {
|
|
|
- if (mIconInfoTable.getCnt() > nIconsOnSubScreen) setContentView(R.layout.main);
|
|
|
- else setContentView(R.layout.main_2);
|
|
|
- }
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.METRO) setContentView(R.layout.main_metro);
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_ON) setContentView(R.layout.main_hyosung);
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_OFF) setContentView(R.layout.main_hyosung);
|
|
|
- else {
|
|
|
- if (mIconInfoTable.getCnt() > nIconsOnSubScreen) setContentView(R.layout.main);
|
|
|
- else setContentView(R.layout.main_2);
|
|
|
- }
|
|
|
-
|
|
|
- if (bEasyModeUsage) setContentView(R.layout.main_easy);
|
|
|
-
|
|
|
-// setContentView(R.layout.main);
|
|
|
- // 메인화면 3가지로 슬라이딩 방식으로 구현하기 위하여 뷰플리퍼를 사용하여 처리
|
|
|
- mViewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
|
|
|
- if (mViewFlipper != null) {
|
|
|
- if (MainLayout != null) mViewFlipper.addView(MainLayout);
|
|
|
- if (SubLayout_01 != null) mViewFlipper.addView(SubLayout_01);
|
|
|
- if (SubLayout_02 != null && Common.eGUIType == Common.GUI_TYPE.STANDARD) mViewFlipper.addView(SubLayout_02);
|
|
|
- if (EasyMainLayout != null && bEasyModeUsage) mViewFlipper.addView(EasyMainLayout);
|
|
|
- DebugLogOutput("[Create] - Step8 : Add Flipper !!! ");
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- registerBroadcastReceiver();
|
|
|
-
|
|
|
- Check_Upgrade_File();
|
|
|
-
|
|
|
- //앱 버전정보 DB저장
|
|
|
- try {
|
|
|
- Log.d(TAG, "mThread_getAppsVersion Start!! ");
|
|
|
- if (mThread_getAppsVersion== null) {
|
|
|
- mThread_getAppsVersion = new getInstalledPackageInfo();
|
|
|
- mThread_getAppsVersion.start();
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "mThread_getAppsVersion is null!!");
|
|
|
- }
|
|
|
- Log.d(TAG, "mThread_getAppsVersion End!! ");
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- AddressSet addc = SetData.getAddressMGR();
|
|
|
- AddressSetBackup addc_Backup = SetData.getAddressMGR_Backup();
|
|
|
-
|
|
|
- overridePendingTransition(0, 0);
|
|
|
-
|
|
|
- if (!isSystemIPSet()) {
|
|
|
- Log.w(TAG, "[onCreate] The IP Address of OS is not set!");
|
|
|
- startManagerSettingSetAddress();
|
|
|
- }
|
|
|
- else if (addc.Dong.equals("NONE") || addc.Ho.equals("NONE")) {
|
|
|
- Log.w(TAG, "[onCreate] The info. of resi. is not set! [primary db]");
|
|
|
- if (addc_Backup.Dong.equals("NONE") || addc_Backup.Ho.equals("NONE")) {
|
|
|
- Log.w(TAG, "[onCreate] The info. of resi. is not set! [secondary db]");
|
|
|
- startManagerSettingSetAddress();
|
|
|
- }
|
|
|
- else {
|
|
|
- addc.setAddress(addc_Backup.Dong, addc_Backup.Ho);
|
|
|
- addc.setIPAddress(addc_Backup.IPAddress);
|
|
|
-
|
|
|
- m_IPActivity = true;
|
|
|
- if (!addc.IPAddress.equals("NONE")) {
|
|
|
- Log.w(TAG, "[onCreate] ========== start iMapServer service ========== [secondary db]");
|
|
|
- Intent intent = new Intent(getApplicationContext(), iMapServer.class);
|
|
|
- startService(intent);
|
|
|
-
|
|
|
- Intent intentMobile = new Intent(getApplicationContext(), MobileProcService.class);
|
|
|
- Log.w(TAG, "[onCreate] ========== start MobileProcServicee ========== [secondary db]");
|
|
|
- startService(intentMobile);
|
|
|
- }
|
|
|
- MAINStatus = MAIN_NORMAL;
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- m_IPActivity = true;
|
|
|
- if (!addc.IPAddress.equals("NONE")) {
|
|
|
- Log.w(TAG, "[onCreate] ========== start iMapServer service ========== [primary db]");
|
|
|
- Intent intent = new Intent(this, iMapServer.class);
|
|
|
- startService(intent);
|
|
|
-
|
|
|
- Intent intentMobile = new Intent(getApplicationContext(), MobileProcService.class);
|
|
|
- Log.w(TAG, "[onCreate] ========== start MobileProcServicee ========== [secondary db]");
|
|
|
- startService(intentMobile);
|
|
|
- }
|
|
|
- MAINStatus = MAIN_NORMAL;
|
|
|
- }
|
|
|
- SetData.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] check device addresses(ip, resi. info.)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- //주차정보 사용여부 체크
|
|
|
- getParkedVehicleLocationSysInfo();
|
|
|
-
|
|
|
- //전기차 정보 가져오기
|
|
|
- GetElectricCarInfo();
|
|
|
-
|
|
|
- //에너지관리서버 사용여부 가져오기
|
|
|
- GetEnergyServerInfo();
|
|
|
-
|
|
|
- //에너지 알람 사용여부 가져오기
|
|
|
- GetEnergyAlarm();
|
|
|
-
|
|
|
- //통화타임아웃 초기화
|
|
|
- setCallAppTimeoutAsDefault();
|
|
|
-
|
|
|
- try {
|
|
|
- mWallPadApiCheckHandler.sendEmptyMessage(0);
|
|
|
-// Checker.sendEmptyMessageDelayed(0, 1000);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // sip 서비스 실행 옮김
|
|
|
- Log.d(TAG, "[onCreate] startCallService start");
|
|
|
- try {
|
|
|
- runCallServices startCallService = new runCallServices();
|
|
|
- startCallService.start();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- Log.d(TAG, "[onCreate] startCallService end");
|
|
|
-
|
|
|
- try {
|
|
|
- // 부팅하고 나서 업그레이드 상태를 false 로 해주지 않으면 통화 수신이 안됨
|
|
|
- // 꼭 들어가야 함
|
|
|
-
|
|
|
- // 전체 정전시험시 단지서버도 재부팅은 하나 로긴을 하지 않으면 그시간동안 세대기가 보낸 부트업 메세지를 못 받기 때문에....단말기 시간을 재 셋팅해주도록 한다.
|
|
|
- Calendar cal = new GregorianCalendar();
|
|
|
- String timedata = String.format("%04d",cal.get(Calendar.YEAR))+"."+String.format("%02d",cal.get(Calendar.MONTH)+1)+"."+String.format("%02d",cal.get(Calendar.DAY_OF_MONTH))+"."+String.format("%02d",cal.get(Calendar.HOUR_OF_DAY))+"."+String.format("%02d",cal.get(Calendar.MINUTE))+"."+String.format("%02d",cal.get(Calendar.SECOND));
|
|
|
-
|
|
|
- WallpadStatusData wpd = new WallpadStatusData(getApplicationContext());
|
|
|
- wpd.SetUpgradeState(false);
|
|
|
- wpd.SetLastHeartbeat(timedata);
|
|
|
- wpd.closeDB();
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- Calendar m_CurCalendar = Calendar.getInstance();
|
|
|
- //CurYear , CurMonth, CurDate, CurHour, CurMin, CurSecond;
|
|
|
- int CurYear = m_CurCalendar.get(Calendar.YEAR);
|
|
|
-
|
|
|
- if (CurYear < 2018) {
|
|
|
- WallpadStatusData DBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
- DBMGR.setSystemTime(2018, 8, 1, 13, 0, 0);
|
|
|
- DBMGR.closeDB();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- mLightInfo = new LightInfo();
|
|
|
- getLivinglightPreset();
|
|
|
- initLivinglightPreset();
|
|
|
- getLivinglightPreset();
|
|
|
-
|
|
|
- setPageIndicator();
|
|
|
-
|
|
|
- mGetCallHistoryCheckHandler.sendEmptyMessageDelayed(0, 10000);
|
|
|
-
|
|
|
-
|
|
|
- try {
|
|
|
- handlerEverySecond.sendEmptyMessageDelayed(0, 1000);
|
|
|
-
|
|
|
- // 월패드 카메라 녹색 노이즈 시험 코드 (월패드 부팅시 월패드 카메라 영상을 잠시 띄운후 없앤다. JEFF/2020.01.21.01)
|
|
|
- /**
|
|
|
- * 부팅시 카메라 서비스 정상동작 여부를 확인한다. (Edited by jeff, 2020.09.08)
|
|
|
- */
|
|
|
- sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_CHECK, 0, 0, 0); // 5초후 월패드 카메라를 초기화 한다. (그냥 화면밖에 영상을 잠시 띄우고 5초뒤에 없앤다.)
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- if (bKakaoiEnable) {
|
|
|
- Log.i(TAG, "[onCreate] ========== Kakao function enabled ==========");
|
|
|
- startKakaoiFloatingBTN();
|
|
|
- }
|
|
|
-// forceCtrlStrangerRecordingUserSettingDisable(false);
|
|
|
- getLCDKeeperUsage();
|
|
|
- Log.i(TAG, "[onCreate] ==================== onCreate end ====================");
|
|
|
- }
|
|
|
-
|
|
|
- private int nLCDKeeperType = WallpadDeviceSet.LCDKEEPER_NONE;
|
|
|
- private String getLCDKeeperType(int nLCDKeeperType) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[getLCDKeeperUsage] nLCDKeeperType [" + nLCDKeeperType + "]");
|
|
|
- if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_NONE) return "LCDKEEPER_NONE";
|
|
|
- else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT) return "LCDKEEPER_PROTECT";
|
|
|
- else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_RECOVER) return "LCDKEEPER_RECOVER";
|
|
|
- else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT_RECOVER) return "LCDKEEPER_PROTECT_RECOVER";
|
|
|
- else return "UNKNOWN";
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getLCDKeeperType(int nLCDKeeperType)");
|
|
|
- e.printStackTrace();
|
|
|
- return "ERROR";
|
|
|
- }
|
|
|
- }
|
|
|
- private boolean bLCDKeeperUsage = false;
|
|
|
- private void getLCDKeeperUsage() {
|
|
|
- try {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
|
|
|
- nLCDKeeperType = mWallpadDeviceSet.getLCDKeeperUsage();
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
- if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT || nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_RECOVER || nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT_RECOVER) {
|
|
|
- bLCDKeeperUsage = true;
|
|
|
- }
|
|
|
- Log.i(TAG, "[getLCDKeeperUsage] bLCDKeeperUsage [" + bLCDKeeperUsage + "], nLCDKeeperType [" + getLCDKeeperType(nLCDKeeperType) + "]");
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getLCDKeeperUsage()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public boolean isSystemIPSet() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[isSystemIPSet] START!");
|
|
|
-
|
|
|
- String strResult = "";
|
|
|
- if (Build.VERSION.SDK_INT > 23) {
|
|
|
- // Android 7
|
|
|
- strResult = getIPAddress();
|
|
|
- }
|
|
|
- else {
|
|
|
- // Android 6
|
|
|
- String strNetInfo = NetworkInterface.getByName("eth0").toString();
|
|
|
- Log.i(TAG, "[isSystemIPSet] strNetInfo : " + strNetInfo + "]");
|
|
|
- strNetInfo.trim();
|
|
|
-
|
|
|
- String[] Parse_01 = strNetInfo.split("\\]");
|
|
|
-// for (int i = 0; i < Parse_01.length; i++) {
|
|
|
-// LOG_DEBUG("[getDeviceIPAddress] Parse_01[" + i + "] : " + Parse_01[i]);
|
|
|
-// }
|
|
|
-
|
|
|
- String[] Parse_02 = Parse_01[Parse_01.length - 1].split("\\/");
|
|
|
-// for (int i = 0; i < Parse_02.length; i++) {
|
|
|
-// LOG_DEBUG("[getDeviceIPAddress] Parse_02[" + i + "] : " + Parse_02[i]);
|
|
|
-// }
|
|
|
-
|
|
|
- strResult = Parse_02[1];
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[isSystemIPSet] DONE! [IP Address : " + strResult + "]");
|
|
|
-
|
|
|
- Pattern mPattern = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
|
|
|
-
|
|
|
- return mPattern.matcher(strResult).matches();
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] isSystemIPSet()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public static String getIPAddress() {
|
|
|
- try {
|
|
|
- List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
|
|
|
- for (NetworkInterface intf : interfaces) {
|
|
|
- List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
|
|
|
- for (InetAddress addr : addrs) {
|
|
|
- if (!addr.isLoopbackAddress()) {
|
|
|
- String sAddr = addr.getHostAddress();
|
|
|
- //boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
|
|
|
- boolean isIPv4 = sAddr.indexOf(':')<0;
|
|
|
-
|
|
|
- if (isIPv4)
|
|
|
- return sAddr;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] isSystemIPSet()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return "";
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public void initIOInterface(WallPadAPI wallpadapi) {
|
|
|
- try {
|
|
|
- mIOInterface = new IOInterface(getContext(), wallpadapi);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] initIOInterface(WallPadAPI wallpadapi)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void checkDongHoSetting() {
|
|
|
- try {
|
|
|
- Log.d(TAG, "[checkDongHoSetting] ========== START ==========");
|
|
|
- boolean IP_ExpansionSettingFlag = false;
|
|
|
- EthernetDevInfo info = new EthernetDevInfo();
|
|
|
-
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
|
|
|
- AddressSet addc = mWallpadStatusData.getAddressMGR();
|
|
|
- mWallpadStatusData.SetCallAPKStatus(false);
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
- if (!addc.Dong.equals("NONE") && !addc.Ho.equals("NONE") && !addc.IPAddress.equals("NONE")) {
|
|
|
- if (Version.getModelType() == MODEL_TYPE.IHN_1020GL && Version.getModelType() == MODEL_TYPE.IHN_1020B_A
|
|
|
- && Version.getModelType() == MODEL_TYPE.IHN_1020SA_A && Version.getModelType() == MODEL_TYPE.IHN_750) {
|
|
|
- // LH 게이트웨이 때문에 위치 옮김 제어 서비스 보다 먼저 처리
|
|
|
- String[] iptbl = addc.IPAddress.split("[.]");
|
|
|
- Log.d(TAG, "[checkDongHoSetting] Mac Set -> IP : " + addc.IPAddress +", Length : " + iptbl.length);
|
|
|
- // BSP에서 초기 이더넷 비활성화시 jni 맥 셋팅시 메인어플 다이~~
|
|
|
- EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
- Log.d(TAG, "[checkDongHoSetting] ETH_STATE_DISABLED!!!");
|
|
|
-
|
|
|
- if (IP_ExpansionSettingFlag == true) {
|
|
|
- mEthManager.UpdateEthDevInfo(info);
|
|
|
- }
|
|
|
-
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
- Log.d(TAG, "[checkDongHoSetting] ETH_STATE_ENABLING!!!");
|
|
|
- if (iptbl.length == 4) {
|
|
|
- String macadd = String.format("00:%02x:%02x:%02x:%02x:00", Integer.parseInt(iptbl[0]),Integer.parseInt(iptbl[1]), Integer.parseInt(iptbl[2]), Integer.parseInt(iptbl[3]));
|
|
|
- Log.d(TAG, "[checkDongHoSetting] Mac Set "+macadd);
|
|
|
- try {
|
|
|
- WallPadInterface wpdifc = new WallPadInterface();
|
|
|
- wpdifc.setMacAddr(macadd);
|
|
|
- } catch (Exception ex) {
|
|
|
- ex.printStackTrace();
|
|
|
- }
|
|
|
- Log.d(TAG, "[checkDongHoSetting] -----------------------------------MacSet");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG,"[checkDongHoSetting] -----------------------------------Mac iptbl.length fail !!");
|
|
|
- }
|
|
|
-
|
|
|
- //EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
- //mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
- Log.d(TAG, "[checkDongHoSetting] ETH_STATE_ENABLING!!!");
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkDongHoSetting()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void registerSubScreen() {
|
|
|
- try {
|
|
|
- if (Common.eGUIType == Common.GUI_TYPE.METRO) {
|
|
|
- if (MetroUI_SUB_GroupScreen == null && SubScreenLayout_01 != null ) MetroUI_SUB_GroupScreen = new METROUI_SUB_GROUP(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
- }
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_ON) {
|
|
|
- if (MetroUI_SUB_GroupScreen == null && SubScreenLayout_01 != null ) MetroUI_SUB_GroupScreen = new METROUI_SUB_GROUP(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
- }
|
|
|
- else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_OFF) {
|
|
|
- if (MetroUI_SUB_GroupScreen == null && SubScreenLayout_01 != null ) MetroUI_SUB_GroupScreen = new METROUI_SUB_GROUP(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
- }
|
|
|
- else {
|
|
|
- if (mIconInfoTable.getCnt() > 0) {
|
|
|
- if (SUB_01Screen == null && SubScreenLayout_01 != null ) SUB_01Screen = new SUB_01(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
- }
|
|
|
-
|
|
|
- if (mIconInfoTable.getCnt() > nIconsOnSubScreen) {
|
|
|
- if (SUB_02Screen == null && SubScreenLayout_02 != null ) SUB_02Screen = new SUB_02(getContext() , SubScreenLayout_02, mWallPadAPI);
|
|
|
- }
|
|
|
-
|
|
|
- if (bEasyModeUsage) {
|
|
|
- if (EasyUI_MainScreen == null && EasyMainScreenLayout != null ) EasyUI_MainScreen = new EASYUI_MAIN(getContext() , EasyMainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-// restoreSystemVolume();
|
|
|
- SCManager = new ScheduleManager();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.w(TAG, "[registerSubScreen] registerSubScreen()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void moveNextPage() {
|
|
|
- try {
|
|
|
- Log.d(TAG, "[moveNextPage] ===== START =====");
|
|
|
- aniSlideIn = AnimationUtils.loadAnimation(getContext(), R.layout.appear_from_right);
|
|
|
- aniSlideOut = AnimationUtils.loadAnimation(getContext(), R.layout.disappear_to_left);
|
|
|
-
|
|
|
- mViewFlipper.setInAnimation(aniSlideIn);
|
|
|
- mViewFlipper.setOutAnimation(aniSlideOut);
|
|
|
- mViewFlipper.showNext();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] moveNextPage()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void movePreviousPage() {
|
|
|
- try {
|
|
|
- Log.d(TAG, "[movePreviousPage] ===== START =====");
|
|
|
- aniSlideIn = AnimationUtils.loadAnimation(getContext(), R.layout.appear_from_left);
|
|
|
- aniSlideOut = AnimationUtils.loadAnimation(getContext(), R.layout.disappear_to_right);
|
|
|
-
|
|
|
- mViewFlipper.setInAnimation(aniSlideIn);
|
|
|
- mViewFlipper.setOutAnimation(aniSlideOut);
|
|
|
- mViewFlipper.showPrevious();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] moveNextPage()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- boolean bScreenCheck = false;
|
|
|
- int nSubScreenTimeout = 20, SCREENTIMEOUT = 20;
|
|
|
- public void checkMainPage() {
|
|
|
- try {
|
|
|
-
|
|
|
- if (!bScreenCheck) {
|
|
|
- nSubScreenTimeout = SCREENTIMEOUT;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- int nViewFlipperIndex = mViewFlipper.getDisplayedChild();
|
|
|
-
|
|
|
- if (nViewFlipperIndex != 0) {
|
|
|
- if (nSubScreenTimeout > 0) {
|
|
|
- nSubScreenTimeout--;
|
|
|
- }
|
|
|
- else {
|
|
|
- nSubScreenTimeout = SCREENTIMEOUT;
|
|
|
- mViewFlipper.setDisplayedChild(0);
|
|
|
- }
|
|
|
- Log.i(TAG, "[checkMainPage] nViewFlipperIndex [" + nViewFlipperIndex + "], nSubScreenTimeout [" + nSubScreenTimeout + "]");
|
|
|
- }
|
|
|
- else {
|
|
|
- if (nSubScreenTimeout <= 0) {
|
|
|
- nSubScreenTimeout = SCREENTIMEOUT;
|
|
|
- Log.i(TAG, "[checkMainPage] nViewFlipperIndex [" + nViewFlipperIndex + "], nSubScreenTimeout [" + nSubScreenTimeout + "]");
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkMainPage()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- String strWallPadMainPakageName = "kr.co.icontrols.wallpadmain";
|
|
|
- private boolean isPackageTop(String strPackageName) {
|
|
|
- try {
|
|
|
- ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
- Log.i(TAG, "[isPackageTop] Build.VERSION.SDK_INT [" + Build.VERSION.SDK_INT + "]");
|
|
|
- if (Build.VERSION.SDK_INT > 23) {
|
|
|
- // Android 7
|
|
|
- List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
|
|
|
- for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
|
|
|
- if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
|
|
|
- for (String activeProcess : processInfo.pkgList) {
|
|
|
- if (activeProcess.equals(strPackageName)) {
|
|
|
- Log.i(TAG, "[isPackageTop] The top package is [" + strPackageName + "]");
|
|
|
- return true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- // Android 6
|
|
|
- List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
|
|
|
- ComponentName componentInfo = taskInfo.get(0).topActivity;
|
|
|
- if (componentInfo.getPackageName().equals(strPackageName)) {
|
|
|
- Log.i(TAG, "[isPackageTop] The top package is [" + strPackageName + "]");
|
|
|
- return true;
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] isPackageTop(String strPackageName)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- // 부팅시에는 최초 DB에서 값을 읽어와서 변경하도록 한다.
|
|
|
- private boolean m_SetBookMarkMainScreen = false;
|
|
|
- private int m_CheckBookMarkReturnCount = 0 ;
|
|
|
- private final int BOOKMARK_SCREEN_RETURN_CHECK_TIME = 30;
|
|
|
- private boolean m_thisAcitivityRusume = false;
|
|
|
-
|
|
|
- // 즐겨찾기 메인화면을 항상 고정해서 쓸것인지 설정하는 함수
|
|
|
- public void SetBookMarkMainScreen(boolean Set)
|
|
|
- {
|
|
|
- m_SetBookMarkMainScreen = Set;
|
|
|
- try
|
|
|
- {
|
|
|
- WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
- if( wdb != null )
|
|
|
- {
|
|
|
- if( Set == true )
|
|
|
- {
|
|
|
- wdb.SetSelectedMainScreen( WallpadStatusData.MAIN_BOOKMARK_SCREEN);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- wdb.SetSelectedMainScreen( WallpadStatusData.MAIN_DEFAULT_SCREEN);
|
|
|
- }
|
|
|
- wdb.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public boolean CheckCurrentEnergyScreen()
|
|
|
- {
|
|
|
- int currentView = mViewFlipper.getDisplayedChild();
|
|
|
- Log.d(TAG, "-------> currentView : " + currentView);
|
|
|
- if( currentView == 1)
|
|
|
- return true;
|
|
|
- else
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private int nTouchDownPosX = 0;
|
|
|
- private int nTouchUpPosX = 0;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean dispatchTouchEvent(MotionEvent ev) {
|
|
|
- boolean bReturn = false;
|
|
|
- //Log.d("Move" , "dispatchTouchEvent-----------1");
|
|
|
- try {
|
|
|
- if (ev.getAction() == MotionEvent.ACTION_DOWN) {
|
|
|
- nTouchDownPosX = (int)ev.getX();
|
|
|
- }
|
|
|
- else if (ev.getAction() == MotionEvent.ACTION_UP) {
|
|
|
- nTouchUpPosX = (int)ev.getX();
|
|
|
- Log.d(TAG, "[dispatchTouchEvent] nTouchDownPosX [" + nTouchDownPosX + "], nTouchUpPosX [" + nTouchUpPosX + "]");
|
|
|
- if (nTouchUpPosX < nTouchDownPosX - 50) {
|
|
|
- moveNextPage();
|
|
|
- setPageIndicator();
|
|
|
- }
|
|
|
- else if (nTouchUpPosX > nTouchDownPosX + 50) {
|
|
|
- movePreviousPage();
|
|
|
- setPageIndicator();
|
|
|
- }
|
|
|
- nTouchDownPosX = nTouchUpPosX;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] dispatchTouchEvent(MotionEvent ev)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- bReturn = super.dispatchTouchEvent(ev);
|
|
|
- return bReturn;
|
|
|
- }
|
|
|
-
|
|
|
- private void setPageIndicator() {
|
|
|
- try {
|
|
|
- int nViewFlipperIndex = mViewFlipper.getDisplayedChild();
|
|
|
- int nChildCnt = mViewFlipper.getChildCount();
|
|
|
- Log.d(TAG, "[setPageIndicator] nViewFlipperIndex [" + nViewFlipperIndex + "], nChildCnt [" + nChildCnt + "]");
|
|
|
- if (Common.eGUIType == Common.GUI_TYPE.STANDARD) {
|
|
|
- Log.d(TAG, "[setPageIndicator] eGUIType == GUI_TYPE.STANDARD");
|
|
|
- ImageView[] IMG_INDICATOR;
|
|
|
- if (bEasyModeUsage) IMG_INDICATOR = new ImageView[] { (ImageView) findViewById(R.id.pageindex_main), (ImageView) findViewById(R.id.pageindex_sub1), (ImageView) findViewById(R.id.pageindex_sub2), (ImageView) findViewById(R.id.pageindex_easymain) };
|
|
|
- else IMG_INDICATOR = new ImageView[] { (ImageView) findViewById(R.id.pageindex_main), (ImageView) findViewById(R.id.pageindex_sub1), (ImageView) findViewById(R.id.pageindex_sub2) };
|
|
|
- for (int i = 0; i < nChildCnt; i++) {
|
|
|
- if (i == nViewFlipperIndex) {
|
|
|
- if (i == 0) IMG_INDICATOR[i].setSelected(true);
|
|
|
- else IMG_INDICATOR[i].setSelected(true);
|
|
|
- }
|
|
|
- else {
|
|
|
- if (i == 0) IMG_INDICATOR[i].setSelected(false);
|
|
|
- else IMG_INDICATOR[i].setSelected(false);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-// else if (eGUIType == GUI_TYPE.METRO) {
|
|
|
-// ImageView[] IMG_INDICATOR = { (ImageView) findViewById(R.id.pageindex_sub1), (ImageView) findViewById(R.id.pageindex_sub2) };
|
|
|
-// if (nViewFlipperIndex == 0) {
|
|
|
-// for (int i = 0; i < nChildCnt; i++) {
|
|
|
-// if (i != 0) IMG_INDICATOR[i - 1].setVisibility(View.INVISIBLE);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else {
|
|
|
-// for (int i = 0; i < nChildCnt; i++) {
|
|
|
-// if (i != 0) {
|
|
|
-// IMG_INDICATOR[i - 1].setVisibility(View.VISIBLE);
|
|
|
-// if (i == nViewFlipperIndex) IMG_INDICATOR[i - 1].setSelected(true);
|
|
|
-// else IMG_INDICATOR[i - 1].setSelected(false);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] setPageIndicator()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * (임시코드) WallPadAPI 초기생성시 Connect 에 시간이 걸리며, <br>
|
|
|
- * WallPadAPI 초기화후 바로 Get_GasValveController 등을 사용하여 API 를 가져올수 없기에, <br>
|
|
|
- * 본 딜레이 코드를 임시로 적용한다.
|
|
|
- */
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- protected Handler mWallPadApiCheckHandler = new Handler()
|
|
|
- {
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg)
|
|
|
- {
|
|
|
- if (msg.what == 0) {
|
|
|
- if (mWallPadAPI != null) {
|
|
|
- if (mWallPadAPI.Check_Connect()) mWallPadApiCheckHandler.sendEmptyMessageDelayed(1, 10);
|
|
|
- else mWallPadApiCheckHandler.sendEmptyMessageDelayed(0, 10);
|
|
|
- }
|
|
|
- }
|
|
|
- else if (msg.what == 1) {
|
|
|
- // 현산향
|
|
|
- AutoIGALStatusReleaseSinario();
|
|
|
- if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
- || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
- mSdb_LivingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
|
|
|
- mSdbAPI = mWallPadAPI.Get_SdbController();
|
|
|
-
|
|
|
- if (mSdb_LivingRoomLightAPI == null) Log.d(TAG , "[mWallPadApiCheckHandler] Get_Sdb_LivingRoomLightAPI Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
- else Log.d(TAG , "[mWallPadApiCheckHandler] Get_Sdb_LivingRoomLightAPI Success !");
|
|
|
-
|
|
|
- if (mSdbAPI == null) Log.d(TAG , "[mWallPadApiCheckHandler] Get_SdbController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
- else Log.d(TAG , "[mWallPadApiCheckHandler] Get_SdbController Success !");
|
|
|
-
|
|
|
-// ChangeLEDButtonLevel();
|
|
|
- }
|
|
|
- else if (Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I || Version.getModelType() == MODEL_TYPE.IHN_1010_I_ALT) {
|
|
|
- mIntLightAPI = mWallPadAPI.Get_IntLightController();
|
|
|
- if (mIntLightAPI == null) Log.d(TAG , "[mWallPadApiCheckHandler] Get_IntLightController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
- else Log.d(TAG , "[mWallPadApiCheckHandler] Get_IntLightController Success !");
|
|
|
-// ChangeLEDButtonLevel();
|
|
|
- }
|
|
|
- else {
|
|
|
- // 대외향
|
|
|
- WallpadDeviceSet devDB = new WallpadDeviceSet( getApplicationContext() );
|
|
|
- int[] retArray = devDB.Get_Light_info();
|
|
|
- devDB.closeDB();
|
|
|
- if (retArray!= null && retArray[0] == 1) {
|
|
|
- if (retArray[1] == WallpadDeviceSet.LIGHT_TYPE_LIVING) {
|
|
|
- // 거실 스위치
|
|
|
- m_LightCtrl = mWallPadAPI.Get_LightController();
|
|
|
- if (m_LightCtrl == null) Log.d(TAG , "Get_LightController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
- else Log.d(TAG , "Get_LightController Success !");
|
|
|
- }
|
|
|
- else {
|
|
|
- // 멀티스위치
|
|
|
- m_MultiSwitch = mWallPadAPI.Get_MultiSwitchController();
|
|
|
- if (m_MultiSwitch == null) Log.d(TAG , "Get_MultiSwitchController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
- else Log.d(TAG , "Get_MultiSwitchController Success !");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (msg.what == 10) {
|
|
|
- // 부트업 실패시 5초 간격으로 보내도록 수정
|
|
|
- Log.d(TAG , "NOTIFY_SENDBOOTUP_FAIL Retry!!!!");
|
|
|
- Intent Newintent = new Intent();
|
|
|
- Newintent.setAction(define.NOTIFY_ACNAME);
|
|
|
- Newintent.putExtra(define.NOTIBR_KIND,Common.DEVICE_BOOTUP_RETRY);
|
|
|
- sendBroadcast(Newintent);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
-
|
|
|
- private void ChangeLEDButtonLevel()
|
|
|
- {
|
|
|
- if( Version.getModelType() == Version.MODEL_TYPE.IHN_1020GL )
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- String filename = "/sdcard/led_button_reset.txt";
|
|
|
-
|
|
|
- File savefile = new File(filename);
|
|
|
-
|
|
|
- Log.d(TAG, "8888888888888888888888 savefile : " + savefile.exists());
|
|
|
- if(savefile.exists())
|
|
|
- {
|
|
|
- Log.d(TAG, "try file is exist... ");
|
|
|
- if( mIntLightAPI != null)
|
|
|
- {
|
|
|
- int ret = mIntLightAPI.LedBrightCtrl((byte)0x01);
|
|
|
-
|
|
|
- if( ret >= 0 )
|
|
|
- {
|
|
|
- WallpadStatusData wd = new WallpadStatusData( getApplicationContext());
|
|
|
- wd.SetLEDButtonBrightnessLevel(1); // DB 저장이 실패하게 되면 초기값을 2로 셋팅하기 때문에 다시 한번 셋팅해준다.
|
|
|
- int level = wd.GetLEDButtonBrightnessLevel();
|
|
|
- wd.closeDB();
|
|
|
- Log.d(TAG, "88888888 button brightness Level 1 == " + level);
|
|
|
-
|
|
|
- WallpadStatusData wd1 = new WallpadStatusData( getApplicationContext());
|
|
|
- wd1.SetLEDButtonBrightnessLevel(1);
|
|
|
- level = wd1.GetLEDButtonBrightnessLevel();
|
|
|
- wd1.closeDB();
|
|
|
-
|
|
|
-
|
|
|
- savefile.delete();
|
|
|
-
|
|
|
- // 생산 기술팀 요청사항
|
|
|
- // LED 버튼 보디 교체로 레벨이 너무 밝아 디폴트값 변경을 요청함 ,,
|
|
|
- Log.d(TAG, "8888888888888888888888 button brightness Level 1 == " + level);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void AutoIGALStatusReleaseSinario()
|
|
|
- {
|
|
|
- // 에너지미터 설정에 따라 조명 상태 변경시 일괄소등 해제 처리 시나리오를 설정하도록 한다.
|
|
|
- // 일괄소등 해제 시나리오 적용시...
|
|
|
- try
|
|
|
- {
|
|
|
- WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
|
|
|
- int setIparkEnergy = devset.Get_Energy_Devices_Info();
|
|
|
- Log.d(TAG , "Get_IPark_Energy_Info bSet: setIparkEnergy : " + setIparkEnergy);
|
|
|
- if( setIparkEnergy == 1 )
|
|
|
- {
|
|
|
- mWallPadAPI.SetAutoIGALStatusClear(true);
|
|
|
- Log.d(TAG , "AutoIGALStatusReleaseSinario bSet: true");
|
|
|
- }
|
|
|
- devset.closeDB();
|
|
|
- }
|
|
|
- catch(Exception e )
|
|
|
- {
|
|
|
- Log.e(TAG, e.toString());
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- /**
|
|
|
- * onDestroy
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onDestroy() {
|
|
|
- // 이걸 왜 넣었지?
|
|
|
- setChangeScreen(mCurrentScreenId, true, false);
|
|
|
- unregisterBroadcastReceiver();
|
|
|
- super.setFinishTimerDestroy();
|
|
|
-
|
|
|
- Log.i(TAG, "*************************************************************");
|
|
|
- Log.i(TAG, "****************** [END - MainActivity] *******************");
|
|
|
- Log.i(TAG, "*************************************************************");
|
|
|
- super.onDestroy();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * onResume
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onResume() {
|
|
|
- super.onResume();
|
|
|
-
|
|
|
- ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
- List<ActivityManager.RunningTaskInfo> info = manager.getRunningTasks(1);
|
|
|
- ComponentName componentName= info.get(0).topActivity;
|
|
|
- String topActivityName = componentName.getClassName();
|
|
|
- Log.d(TAG,"[onResume] ========== START ========== " + topActivityName);
|
|
|
-
|
|
|
- m_thisAcitivityRusume = true;
|
|
|
- if (mWallPadAPI != null) {
|
|
|
- if (mWallPadAPI.Check_Connect()) Log.w(TAG, "[onResume] mWallPadAPI.Check_Connect() = true!!!");
|
|
|
- else Log.w(TAG, "[onResume] mWallPadAPI.Check_Connect() = false!!!");
|
|
|
- mWallPadAPI.Resume();
|
|
|
- }
|
|
|
-
|
|
|
- //CallDataChecker();
|
|
|
- try {
|
|
|
- if (m_ModelHouseSleepModeRelease) {
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(1, true);
|
|
|
-// pm.userActivity(2, true);1qn
|
|
|
- // LCD 항상 ON
|
|
|
- ((Activity)this.getContext()).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- if (MAINStatus == MAIN_WAIT_SETIP) {
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- AddressSet addc = SetData.getAddressMGR();
|
|
|
- SetData.closeDB();
|
|
|
- Log.i("MAINSCREEN", "onResume MAIN_WAIT_SETIP "+addc.IPAddress);
|
|
|
- if (!addc.IPAddress.equals("NONE")) {
|
|
|
- Log.i("MAINSCREEN", "onResume Start Server");
|
|
|
- EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
- Intent intent = new Intent(getApplicationContext(), iMapServer.class);
|
|
|
- Log.w("MAINSCREEN", "Call Start iMapServer");
|
|
|
- startService(intent);
|
|
|
- WallpadDeviceSet devSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
- String[] sitecode = devSet.GetSettingData("site_code");
|
|
|
- try {
|
|
|
- if (sitecode != null) {
|
|
|
- Intent sipServiceLauncher = new Intent ("cm.sip.hns.SIPStun.StartService");
|
|
|
- getApplicationContext().startService(sipServiceLauncher);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Common.DebugLog("SIP StartServerice Error!!!!!!!!!!!!!!");
|
|
|
- }
|
|
|
- devSet.closeDB();
|
|
|
- MAINStatus = MAIN_NORMAL;
|
|
|
- }
|
|
|
- } catch(Exception e ) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //CheckMainScreen();
|
|
|
-
|
|
|
- //refreshUserCtr();
|
|
|
- //reloadData();
|
|
|
- try {
|
|
|
- WallPadInterface wpdifc = new WallPadInterface();
|
|
|
- AudioManager amanager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
|
|
|
- amanager.setMode(WallPadInterface.AUDIO_MODE_NORMAL);
|
|
|
- wpdifc.DoControl(WallPadInterface.IOCTL_DOOR_POWERONOFF, 0);
|
|
|
-
|
|
|
- Intent intent = new Intent(Common.MAIN_SCREEN_NOW_UPDATE, null);
|
|
|
- getContext().sendBroadcast(intent);
|
|
|
-
|
|
|
- mGetCallHistoryCheckHandler.sendEmptyMessageDelayed(0, 1000);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- bScreenCheck = true;
|
|
|
- DebugLogOutput("@@@@@@@@ [onResume] @@@@@@@@");
|
|
|
- }
|
|
|
-
|
|
|
- protected String getForegroundAPK() {
|
|
|
- try {
|
|
|
- ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
- List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
|
|
|
- ComponentName topActivity=taskInfo.get(0).topActivity;
|
|
|
- String str=topActivity.getPackageName();
|
|
|
-
|
|
|
- return str;
|
|
|
- } catch(Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- return " ";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * onPause
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onPause() {
|
|
|
- m_thisAcitivityRusume = false;
|
|
|
- if(mWallPadAPI != null) mWallPadAPI.Pause();
|
|
|
- bScreenCheck = false;
|
|
|
- DebugLogOutput("@@@@@@@@ [onPause] @@@@@@@@");
|
|
|
- super.onPause();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /* ================================================================================================
|
|
|
- * [BroadcastReceiver] Section
|
|
|
- ================================================================================================ */
|
|
|
- /**
|
|
|
- * BroadcastReceiver.onReceive for [WpadActivity]
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onBrReceive(Intent intent) {
|
|
|
- try {
|
|
|
- String strAction = intent.getAction();
|
|
|
- Log.i(TAG, "[onBrReceive] Action [" + strAction + "]");
|
|
|
- if (strAction.equals(BR_CTRL_LIGHT_LIVINGROOM)) {
|
|
|
- Log.d(TAG, "[onBrReceive] (BR) BR_CTRL_LIGHT_LIVINGROOM");
|
|
|
- mLightInfo.nLightPresetNo = 0;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] onBrReceive(Intent intent)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- super.onBrReceive(intent);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /* ================================================================================================
|
|
|
- * [Touch & Key Event] Section
|
|
|
- ================================================================================================ */
|
|
|
- /**
|
|
|
- * TouchEvent for [WpadActivity]
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onTouchEvent(View v, MotionEvent event) {
|
|
|
- super.onTouchEvent(v, event);
|
|
|
-
|
|
|
- int TargetId = v.getId();
|
|
|
- int MoveEvent = event.getAction();
|
|
|
- Log.i(TAG, "[onTouchEvent] TargetId [" + TargetId + "], MoveEvent [" + MoveEvent + "]");
|
|
|
- if (MoveEvent == MotionEvent.ACTION_UP) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * H/W Key Event
|
|
|
- */
|
|
|
- @Override
|
|
|
- public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
- Log.i(TAG, "[onKeyDown] keyCode : " + keyCode + ", Action : " + event.getAction());
|
|
|
-// sendKeyEventBR(keyCode);
|
|
|
- return super.onKeyDown(keyCode, event);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean onKeyUp(int keyCode, KeyEvent event) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- Log.i(TAG, "[onKeyUp] keyCode : " + keyCode + ", Action : " + event.getAction());
|
|
|
- return super.onKeyUp(keyCode, event);
|
|
|
- }
|
|
|
- @Override
|
|
|
- public boolean onKeyLongPress(int keyCode, KeyEvent event) {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- DebugLogOutput("onKeyLongPress - " + " / keyCode : " + keyCode + " / Action : " + event.getAction());
|
|
|
- return super.onKeyLongPress(keyCode, event);
|
|
|
- }
|
|
|
- /* ================================================================================================
|
|
|
- * [Popup Activity] Section
|
|
|
- ================================================================================================ */
|
|
|
- /**
|
|
|
- * Popup Activity 를 시작시킨다.
|
|
|
- *
|
|
|
- * @param ScreenId - 팝업시작시 Screen ID_OLD
|
|
|
- * @return (boolean) true : 성공, false : 실패
|
|
|
- */
|
|
|
- public boolean StartPopup(int ScreenId) {
|
|
|
- try {
|
|
|
- if (ID.POPUPS.POPUP_INTERFLOORNOISEOCCURED <= ScreenId && ScreenId <= ID.POPUPS.POPUP_POSTRECEIVED) { // 알림 팝업에 한하여
|
|
|
- if (Common.bWallPadCallLive) {
|
|
|
- Log.w(TAG, "[StartPopup] StartPopup denied!!! === WallPadCall is running!! ScreenId [" + ScreenId + "]");
|
|
|
- return false; // 통화 앱이 실행되어 있는 경우, 팝업 출력 안함
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (getPopupActivityRun()) {
|
|
|
- return ((WpadActivity)(PopupActivity.getContext())).ChangeScreen(ScreenId);
|
|
|
- }
|
|
|
- else {
|
|
|
- setPopupActivityRun(true);
|
|
|
- Intent intent = new Intent(mContext, PopupActivity.class);
|
|
|
- intent.putExtra("ScreenId", ScreenId);
|
|
|
- overridePendingTransition(0, 0);
|
|
|
- startActivityForResult(intent, 0);
|
|
|
- return true;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] StartPopup(int ScreenId)");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Popup Activity 를 시작시킨다. (시작시 Intent Type 데이터를 전달한다)
|
|
|
- *
|
|
|
- * @param ScreenId - 팝업시작시 Screen ID_OLD
|
|
|
- * @param data - 전달할 데이터
|
|
|
- * @return (boolean) true : 성공, false : 실패
|
|
|
- */
|
|
|
- public boolean StartPopup(int ScreenId, Intent data) {
|
|
|
- try {
|
|
|
- if (ID.POPUPS.POPUP_INTERFLOORNOISEOCCURED <= ScreenId && ScreenId <= ID.POPUPS.POPUP_POSTRECEIVED) { // 알림 팝업에 한하여
|
|
|
- if (Common.bWallPadCallLive) {
|
|
|
- Log.w(TAG, "[StartPopup] StartPopup denied!!! === WallPadCall is running!! ScreenId [" + ScreenId + "]");
|
|
|
- return false; // 통화 앱이 실행되어 있는 경우, 팝업 출력 안함
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (getPopupActivityRun()) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- else {
|
|
|
- setPopupActivityRun(true);
|
|
|
- Intent intent = new Intent(mContext, PopupActivity.class);
|
|
|
- intent.putExtra("ScreenId", ScreenId);
|
|
|
- intent.putExtra("PopupScreenDataIntent", data);
|
|
|
- overridePendingTransition(0, 0);
|
|
|
- startActivityForResult(intent, 0);
|
|
|
- return true;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] StartPopup(int ScreenId, Intent data)");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Activity Result Reception
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
- super.onActivityResult(requestCode, resultCode, data);
|
|
|
-
|
|
|
- try {
|
|
|
- Log.d(TAG, "@@@@@@@@ [onActivityResult] @@@@@@@@");
|
|
|
-
|
|
|
- // int screenId = data.getIntExtra("SCREENS", -1);
|
|
|
- // Log.d(TAG, "@@@@@@@@ [onActivityResult] @@@@@@@@ screenId : " + screenId );
|
|
|
- //if( mViewFlipper)
|
|
|
-
|
|
|
- if (requestCode == UNINSTALL_REQUEST_CODE) {
|
|
|
- if (resultCode == RESULT_OK) {
|
|
|
- Log.w(TAG, "[onActivityResult] user accepted the uninstall");
|
|
|
- } else if (resultCode == RESULT_CANCELED) {
|
|
|
- Log.w(TAG, "[onActivityResult] user canceled the uninstall");
|
|
|
- } else if (resultCode == RESULT_FIRST_USER) {
|
|
|
- Log.w(TAG, "[onActivityResult] failed to uninstall");
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if (data != null) {
|
|
|
- int nSenderScreenID = data.getIntExtra(Common.BR_SENDER_SCREEN, -1);
|
|
|
- int nReceiveScreenID = data.getIntExtra(Common.BR_RECEIVE_SCREEN, -1);
|
|
|
- int nCallSubMenuScreen = data.getIntExtra(Common.CALL_SUBMAIN_SCREEN, -1);
|
|
|
-
|
|
|
- if (nCallSubMenuScreen > 0) {
|
|
|
- CallSubMenuScreen(nCallSubMenuScreen);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "[onActivityResult] nSenderScreenID : " + nSenderScreenID + " , nReceiveScreenID : " + nReceiveScreenID );
|
|
|
- if (nSenderScreenID == ID.POPUPS.POPUP_DELETESHORTCUT && nReceiveScreenID == ID.SCREENS.SCREEN_MAIN) {
|
|
|
- boolean bResult = data.getBooleanExtra(Common.BR_WIDGET_DELETE, false);
|
|
|
- int nDeleteShortcutID = data.getIntExtra(Common.BR_DELETE_WIDGET_ID, -1);
|
|
|
- Log.d(TAG, "[onActivityResult] bResult : " + bResult + ", nDeleteShortcutID : " + nDeleteShortcutID);
|
|
|
- MainScreen.procDeleteShortcutPopupResult(bResult, nDeleteShortcutID);
|
|
|
- return;
|
|
|
- }
|
|
|
- else if (nSenderScreenID == ID.POPUPS.POPUP_ADDSHORTCUT && nReceiveScreenID == ID.SCREENS.SCREEN_MAIN) {
|
|
|
- boolean bResult = data.getBooleanExtra(Common.BR_WIDGET_INSERT, false);
|
|
|
- int nAddShortcutID = data.getIntExtra(Common.BR_INSERT_WIDGET_ID, -1);
|
|
|
- Log.d(TAG, "[onActivityResult] bResult : " + bResult + ", nAddShortcutID : " + nAddShortcutID);
|
|
|
- MainScreen.procAddShortcutPopupResult(bResult, nAddShortcutID);
|
|
|
- return;
|
|
|
- }
|
|
|
- else if (nSenderScreenID == ID.POPUPS.POPUP_CONFIGUREPRESET && nReceiveScreenID == ID.SCREENS.SCREEN_MAIN) {
|
|
|
- String strLivinglightPresetInfo = data.getStringExtra(Common.BR_LIVINGLIGHT_PRESET_INFO);
|
|
|
- Log.d(TAG, "[onActivityResult] strLivinglightPresetInfo [" + strLivinglightPresetInfo + "]");
|
|
|
- savePresetValue(strLivinglightPresetInfo);
|
|
|
- return;
|
|
|
- }
|
|
|
- else if ((ID.POPUPS.POPUP_GROUP_CTRL <= nSenderScreenID && nSenderScreenID <= ID.POPUPS.POPUP_GROUP_SETTING) && nReceiveScreenID == ID.SCREENS.SCREEN_METROUI_GROUP) {
|
|
|
- boolean bRun = data.getBooleanExtra(Common.BR_RUN_WIDGET, false);
|
|
|
- int nIconID = data.getIntExtra(Common.BR_RUN_WIDGET_ID, 0);
|
|
|
- Log.d(TAG, "[onPopupResult] bRun [" + bRun + "], nIconID [" + nIconID + "]") ;
|
|
|
- if (bRun) runIcon(nIconID);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if (resultCode == RESULT_OK) {
|
|
|
-// // 팝업을 종료하고 다른 팝업을 띄울경우가 있다.
|
|
|
-// int screenIdCode = data.getExtras().getInt("CHANGE_POPUP" );
|
|
|
-// int popupKind = data.getExtras().getInt("POPUP_KIND");
|
|
|
-//
|
|
|
-// Log.d(TAG, "@@@ CHANGE_POPUP : " + screenIdCode + " , popupKind : " +popupKind);
|
|
|
-// if( screenIdCode > 0 )
|
|
|
-// {
|
|
|
-// setPopupActivityRun(false);
|
|
|
-// Intent intent = new Intent();
|
|
|
-// intent.putExtra("POPUP_KIND", popupKind );
|
|
|
-// StartPopup(screenIdCode , intent);
|
|
|
-// }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- Log.e(TAG, e.toString());
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /* ================================================================================================
|
|
|
- * [Info Activity] Section
|
|
|
- ================================================================================================ */
|
|
|
- public static ManualActivity mManualActivity;
|
|
|
-
|
|
|
- /**
|
|
|
- * Info Activity를 시작시킨다.
|
|
|
- *
|
|
|
- * @param screenId - 매뉴얼 시작시 Screen ID_OLD
|
|
|
- * @return (boolean) true : 성공, false : 실패
|
|
|
- */
|
|
|
- public boolean startManualPopup(int screenId) {
|
|
|
- Log.d(TAG, "[startManualPopup] ScreenId [" + screenId +"], mCurrentInfoScreenId [" + mCurrentInfoScreenId + "]" );
|
|
|
- if (getInfoActivityRun() == true) {
|
|
|
- mCurrentInfoScreenId = screenId;
|
|
|
- return ((WpadActivity)(ManualActivity.getContext())).ChangeScreen(screenId);
|
|
|
- } else {
|
|
|
- if (mCurrentInfoScreenId == screenId) return false;
|
|
|
- mCurrentInfoScreenId = screenId;
|
|
|
- setInfoActivityRun(true);
|
|
|
- Intent intent = new Intent(mContext, ManualActivity.class);
|
|
|
- intent.putExtra("ScreenId", screenId);
|
|
|
-
|
|
|
- overridePendingTransition(0, 0);
|
|
|
- startActivityForResult(intent, 0);
|
|
|
- return true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public static void resetCurrentInfoScreenID() {
|
|
|
- try {
|
|
|
- mCurrentInfoScreenId = -1;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] resetCurrentInfoScreenID()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 매뉴얼 버튼 사용 유무
|
|
|
- *
|
|
|
- * @return boolean 타입 - true:사용, false:미사용
|
|
|
- */
|
|
|
- public boolean GetManualUse() {
|
|
|
- WallpadDeviceSet devSet = new WallpadDeviceSet(mContext);
|
|
|
- String[] DBinfo = devSet.GetSettingData("매뉴얼");
|
|
|
- devSet.closeDB();
|
|
|
- if (DBinfo != null) {
|
|
|
- if (DBinfo[1].indexOf("사용함") > 0) {
|
|
|
- Log.d(TAG, "[GetManualUse] Use Manual");
|
|
|
- return true;
|
|
|
- }
|
|
|
- else {
|
|
|
- // 미사용
|
|
|
- Log.d(TAG, "[GetManualUse] Not Use Manual");
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- //미사용
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /* ================================================================================================
|
|
|
- * [Screen] Section
|
|
|
- ================================================================================================ */
|
|
|
- /**
|
|
|
- * Screen 에서 Screen 변경을 요청할 경우 호출된다.<br>
|
|
|
- * Override 사용하여 Screen 변경을 처리한다.<br>
|
|
|
- *
|
|
|
- * @param nScreenId - 변경할 Screen ID_OLD
|
|
|
- * @return (boolean) true : 성공, false : 실패
|
|
|
- */
|
|
|
- @Override
|
|
|
- protected boolean onChangeScreen(int nScreenId) {
|
|
|
- super.onChangeScreen(nScreenId);
|
|
|
-
|
|
|
- return setChangeScreen(nScreenId, false, false);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Screen 등록자<br>
|
|
|
- * MainScreenLayout 에 현재 Screen 을 삭제하고, 새로운 Screen 을 등록시킨다.
|
|
|
- *
|
|
|
- * @param nScreenId - 변경할 Screen ID_OLD
|
|
|
- * @param OnlyRemove - 현재 Screen 을 삭제만 할 경우 (onDestroy 에서 사용)
|
|
|
- * @return (boolean) true : 성공, false : 실패
|
|
|
- */
|
|
|
- private boolean setChangeScreen(int nScreenId, boolean OnlyRemove, boolean setAnimation) {
|
|
|
- DebugLogOutput("setChangeScreen - " + "CurrentSelectDeviceId : " + mCurrentScreenId + " / NextLayoutId : " + nScreenId + " / OnlyRemove : " + OnlyRemove);
|
|
|
-
|
|
|
- // 1. 현재 Layout 삭제
|
|
|
- boolean remove = false;
|
|
|
- if (mCurrentScreenId > 0) {
|
|
|
- remove = true;
|
|
|
- MainScreenLayout.removeAllViews();
|
|
|
- super.setCurrentScreen(null);
|
|
|
- }
|
|
|
-
|
|
|
- if (OnlyRemove) return true;
|
|
|
-
|
|
|
- mCurrentScreenId = nScreenId;
|
|
|
-
|
|
|
- // 2. 새로운 Layout 표시
|
|
|
- try {
|
|
|
- switch (nScreenId) {
|
|
|
- case ID.SCREENS.SCREEN_MAIN:
|
|
|
- MainScreen = new MAIN(getContext(), MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen, DEVICE_OPERATION_MODE);
|
|
|
- super.setCurrentScreen(MainScreen);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID.SCREENS.SCREEN_SUB_01:
|
|
|
- SUB_01Screen = new SUB_01(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
- super.setCurrentScreen(SUB_01Screen);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID.SCREENS.SCREEN_SUB_02:
|
|
|
- SUB_02Screen = new SUB_02(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
- super.setCurrentScreen(SUB_02Screen);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID.SCREENS.SCREEN_METROUI_MAIN:
|
|
|
- MetroUI_MainScreen = new METROUI_MAIN(getContext(), MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
- super.setCurrentScreen(MetroUI_MainScreen);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID.SCREENS.SCREEN_METROUI_SUB_01:
|
|
|
- MetroUI_SUB_01Screen = new METROUI_SUB_01(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
- super.setCurrentScreen(MetroUI_SUB_01Screen);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID.SCREENS.SCREEN_METROUI_SUB_02:
|
|
|
- MetroUI_SUB_02Screen = new METROUI_SUB_02(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
- super.setCurrentScreen(MetroUI_SUB_02Screen);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- Log.e(TAG, "[Error] setChangeScreen - nScreenId Not found!!! (" + mCurrentScreenId + ")");
|
|
|
- mCurrentScreenId = -1;
|
|
|
- return false;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[ExceptionError] - setChangeScreen->Screen Create : " + e);
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- /////////////////////////////////////////////////////////////////////////////////
|
|
|
-
|
|
|
- private void runDeviceService() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[runDeviceService] ===== START =====");
|
|
|
- /* 2018.01.30 속초 아이파크 RF현관카메라 연동으로 인하여 수정
|
|
|
- // 우선 제어기기 연동 기능이 없음
|
|
|
- if( Version.getModelType() == Version.MODEL_TYPE.IHN_750 )
|
|
|
- return;
|
|
|
- */
|
|
|
- if (!getIsSubWallpad()) {
|
|
|
- ActivityManager mActivityManager = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
- List<ActivityManager.RunningAppProcessInfo> RunningAppList = mActivityManager.getRunningAppProcesses();
|
|
|
-
|
|
|
- Common.DebugLog("[runDeviceService] -----> RunningAppProcessInfo : " + RunningAppList.size() + " +++ Version : " + this.getAppVersion());
|
|
|
- for (int i = 0; i < RunningAppList.size(); i++) {
|
|
|
- ActivityManager.RunningAppProcessInfo RunningAppListInfo = RunningAppList.get(i);
|
|
|
- Common.DebugLog("[runDeviceService] -----> RunningAppListInfo.processName : " + RunningAppListInfo.processName);
|
|
|
-
|
|
|
- if (RunningAppListInfo.processName.equals("com.artncore.deviceservice")) {
|
|
|
- Log.w(TAG, "[runDeviceService] DevService is already running");
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[runDeviceService] Start DevService!!");
|
|
|
- Intent mIntent = new Intent("wallpaddevservice.ServiceMain");
|
|
|
- startService(mIntent);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runDeviceService] This wallpad is sub-wallpad. not need DevService!!!");
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runDeviceService()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 통신으로 들어오는 비상버튼 스킵하기 위한 딜레이 체크 변수
|
|
|
- private long EmerCommDelayTime = 0;
|
|
|
- public static String WALLPAD_ALERT = "WALLPAD_ALERT";
|
|
|
- BroadcastReceiver mWallPadAlertBR = new BroadcastReceiver() {
|
|
|
- @Override
|
|
|
- public void onReceive(Context context, Intent intent) {
|
|
|
- Log.i(TAG, "[mWallPadAlertBR] Receive alert BR");
|
|
|
- String strAction = intent.getAction();
|
|
|
- Log.d(TAG, "[mWallPadAlertBR] strAction [" + strAction + "]");
|
|
|
- if (strAction.equalsIgnoreCase(WALLPAD_ALERT)) {
|
|
|
- int kind = intent.getIntExtra("KIND",0);
|
|
|
- Log.i(TAG, "[mWallPadAlertBR] " + String.format("Receive alert BR [%d][tag:%s]", kind,String.valueOf(Alert_App_On)));
|
|
|
-
|
|
|
- // 제주 아이파크 스위트현장의 비상발생 증상을 디버깅하기 위한 코드 (JEFF, 2019.09.26)
|
|
|
-// if (kind == 4) {
|
|
|
-// try {
|
|
|
-// byte hFrom = intent.getByteExtra("FROM", (byte) 0xFF);
|
|
|
-// if (hFrom != (byte) 0xFF) {
|
|
|
-// if (hFrom % 10 == 3) {
|
|
|
-// Log.w(TAG, "[mWallPadAlertBR] Emergency from BathPhone!!!");
|
|
|
-// int nDstPort = 10000;
|
|
|
-// sendAlarmOperationToMainServer("10.0.1.1", nDstPort, EMER_STATE.FIRE, EMER_DETAIL_INFO.EMERGENCY_COMM);
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.e(TAG, "[Exception] mWallPadAlertBR - 1");
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- if (kind == 30) Alert_App_On = true;
|
|
|
- else if (kind == 40) Alert_App_On = false;
|
|
|
- else {
|
|
|
- WallpadStatusData wdb = new WallpadStatusData(getApplicationContext());
|
|
|
- int alarmState = wdb.GetAlarmStatus();
|
|
|
- wdb.closeDB();
|
|
|
-
|
|
|
- if (alarmState == WallpadStatusData.ALARM_ARISE || alarmState == WallpadStatusData.ALARM_STOP) {
|
|
|
- // 알람화면이 현재 실행중이면 스킵
|
|
|
- Log.d(TAG, "Skip BR ==> Current Alarm state : "+ alarmState );
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (kind == 4 && ( Math.abs(System.currentTimeMillis()-EmerCommDelayTime) < 1000)) {
|
|
|
- // 통신 비상알람의 경우 중복으로 날라오는 경우가 있어서 필터링
|
|
|
- Log.d(TAG, "Skip BR ==> deleayTime :" + String.valueOf( Math.abs(System.currentTimeMillis()-EmerCommDelayTime)));
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- EmerCommDelayTime = System.currentTimeMillis();
|
|
|
-
|
|
|
- SendAppFinishReqBR();
|
|
|
- Log.i(TAG, "[mWallPadAlertBR] before Call Alert App");
|
|
|
-
|
|
|
- int base = 7000;
|
|
|
- int [] Menu_Id_List = { base+11, base+21 , base+31 , base+41, base+51};
|
|
|
- int Menu_Start_Id = base+21;
|
|
|
- int Menu_Start_Option = 1;
|
|
|
- String Cause = "none";
|
|
|
- if (kind == 1) Cause = "gas";
|
|
|
- else if (kind == 2) Cause = "fire";
|
|
|
- else if (kind == 4) Cause = "emergency_Comm";
|
|
|
- else if (kind == 5) {
|
|
|
- Cause = "heating_Leak";
|
|
|
- Menu_Start_Id = base + 51;
|
|
|
- }
|
|
|
- else {
|
|
|
- Cause = "unknown(" + kind + ")";
|
|
|
- }
|
|
|
-
|
|
|
- Intent newintent = new Intent(Intent.ACTION_MAIN);
|
|
|
- newintent.putExtra("MENU_ID_LIST", Menu_Id_List); // KEY : MENU_ID_LIST
|
|
|
- newintent.putExtra("MENU_START_ID", Menu_Start_Id); // KEY : MENU_START_ID
|
|
|
- newintent.putExtra("MENU_START_OPTION", Menu_Start_Option); // KEY : MENU_START_OPTION
|
|
|
- newintent.putExtra("MENU_DETAIL_INFO", Cause);
|
|
|
- newintent.setComponent(new ComponentName("kr.co.icontrols.wallpademergency", "kr.co.icontrols.wallpademergency.MainActivity"));
|
|
|
- newintent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
|
|
- startActivity(newintent);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- private void sendAlarmOperationToMainServer(String DstIP, int DstPort, EMER_STATE alarm_mode, EMER_DETAIL_INFO cause) {
|
|
|
- Log.d(TAG, "[sendAlarmOperationToMainServer] DstIP [" + DstIP + "], DstPort [" + DstPort + "], alarm_mode [" + EMER_STATE.GetXMLData(alarm_mode) + "], cause [" + EMER_DETAIL_INFO.GetXMLData(cause) + "]");
|
|
|
- WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
- AddressSet addc = wdb.getAddressMGR(); //DB에서 동호 정보 받아옴
|
|
|
- wdb.closeDB();
|
|
|
- final iMAPAlarmOperation imapAlarmOperation = new iMAPAlarmOperation(getContext() , addc);
|
|
|
-
|
|
|
- imapAlarmOperation.SetServerIPcfg(DstIP, DstPort);
|
|
|
- imapAlarmOperation.DoWork(alarm_mode, cause);
|
|
|
- imapAlarmOperation.SetRetCtr(new RetProci(){
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- Log.i(TAG, "[sendAlarmOperationToMainServer] ProcSuccess()");
|
|
|
- String result = imapAlarmOperation.GetAttributeVal(0, "result");
|
|
|
- Log.i(TAG, "[sendAlarmOperationToMainServer] result [" + result +"]");
|
|
|
- if (result.equalsIgnoreCase("ok")) {
|
|
|
- Log.i(TAG, "[sendAlarmOperationToMainServer] result [" + result +"]");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError() {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- Log.i(TAG, "[sendAlarmOperationToMainServer] ProcError() -> " + APIErrorCode.GetLogPrefix());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing() {
|
|
|
- // TODO Auto-generated method stub
|
|
|
- Log.i(TAG, "[sendAlarmOperationToMainServer] ProcDoing()");
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- private String getMainVersion() {
|
|
|
- return this.getAppVersion();
|
|
|
- }
|
|
|
-
|
|
|
- private int m_LiveImapServer = 0;
|
|
|
- private int m_LiveMainActivity = 0;
|
|
|
- private boolean m_IPActivity = false;
|
|
|
-
|
|
|
- BroadcastReceiver mWallPadNotifyBR = new BroadcastReceiver() {
|
|
|
- @Override
|
|
|
- public void onReceive(Context context, Intent intent) {
|
|
|
-
|
|
|
- String strAction = intent.getAction();
|
|
|
- int item = 0;
|
|
|
- Log.i(TAG, "[mWallPadNotifyBR] strAction [" + strAction + "]");
|
|
|
- if (strAction.equals(define.NOTIFY_ACNAME)) {
|
|
|
- int kind = intent.getIntExtra(Common.BR_MAIN_NOTI.KIND,0);
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] define.NOTIFY_ACNAME -> kind : " + kind);
|
|
|
- switch (kind) {
|
|
|
- case define.NOTIFY_GET_ELEC_CHARGE:
|
|
|
- String strState = intent.getStringExtra("sCharging_Status");
|
|
|
- String strCarNum = intent.getStringExtra("sCar_Num");
|
|
|
- if (strState.equals("start")) {
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getContext());
|
|
|
- boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
- SetData.closeDB();
|
|
|
- if (soundOut) Sound().Play(SND.effect.EFFECT1);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- // 충전시작
|
|
|
- Intent data = new Intent();
|
|
|
- data.putExtra("CarNum", strCarNum); // KEY : MENU_ID_LIST
|
|
|
- data.putExtra("Msg", "충전을 시작합니다.");
|
|
|
-
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- StartPopup(ID.POPUPS.POPUP_CHARGINGELECTRICVEHICLE, data);
|
|
|
- }
|
|
|
- else if (strState.equals("stop")) {
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getContext());
|
|
|
- boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
- SetData.closeDB();
|
|
|
- if (soundOut) Sound().Play(SND.effect.EFFECT1);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- // 충전 종료
|
|
|
- Intent data = new Intent();
|
|
|
- data.putExtra("CarNum", strCarNum); // KEY : MENU_ID_LIST
|
|
|
- data.putExtra("Msg", "충전이 종료되었습니다.");
|
|
|
-
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- StartPopup(ID.POPUPS.POPUP_CHARGINGELECTRICVEHICLE, data);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_INTERLAYTER_NOISE_ALARM:
|
|
|
- if (checkInterFloorNoiseFuncUsage()) {
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- StartPopup(ID.POPUPS.POPUP_INTERFLOORNOISEOCCURED);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_INTERLAYTER_SENSOR_STATUS_CHANGE :
|
|
|
- if (checkInterFloorNoiseFuncUsage() && checkInterFloorNoiseError()) {
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- StartPopup(ID.POPUPS.POPUP_INTERFLOORNOISEERROR);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_AUTOPICTURE_FINISH:
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] define.NOTIFY_AUTOPICTURE_FINISH");
|
|
|
- // 전자액자 종료 BR 수신시 LCD ON Flag 제거
|
|
|
- ctrlLCDOnOff(false);
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_ALARM_CHANGE:
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] define.NOTIFY_ALARM_CHANGE");
|
|
|
-// WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
-// int nAlarmStatus = SetData.GetAlarmStatus();
|
|
|
-// SetData.closeDB();
|
|
|
-//
|
|
|
-// Log.d(TAG, "[mWallPadNotifyBR] nAlarmStatus = " + nAlarmStatus);
|
|
|
-// if (nAlarmStatus == WallpadStatusData.GUARD_IN) {
|
|
|
-// mSound.PlayMent(SND.mode.INMODE_SETTING);
|
|
|
-// }
|
|
|
-// else if (nAlarmStatus == WallpadStatusData.GUARD_OUT) {
|
|
|
-// mSound.PlayMent(SND.mode.OUTMODE_SETTING);
|
|
|
-// }
|
|
|
-// else if (nAlarmStatus == WallpadStatusData.ALARM_NONE) {
|
|
|
-// mSound.PlayMent(SND.mode.NORMALMODE_COMEBACK);
|
|
|
-// }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_PLAYMENT:
|
|
|
- int sndidx = intent.getIntExtra(define.NOTIBR_CONTENT,0);
|
|
|
- Sound().PlayMent(sndidx);
|
|
|
-
|
|
|
- case define.NOTIFY_DEVICE_INIT_COMPLETION:
|
|
|
- Log.i(TAG, "[mWallPadNotifyBR] NOTIFY_DEVICE_INIT_COMPLETION: bLCDKeeperUsage [" + bLCDKeeperUsage +"]");
|
|
|
- if (bLCDKeeperUsage) registerLCDKeeper();
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- Log.w(TAG, "[mWallPadNotifyBR] (BR.nKind) Not support!! -> " + kind);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else if (strAction.equals(Common.BR_ACK_WALLPADCALL_LIVE)) {
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] Common.BR_ACK_WALLPADCALL_LIVE");
|
|
|
- return;
|
|
|
- }
|
|
|
- else if (strAction.equals(define.DRIVER_VENTIL_BR)) {
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] define.DRIVER_VENTIL_BR");
|
|
|
- return;
|
|
|
- }
|
|
|
- else if (strAction.equals(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI)) {
|
|
|
- try {
|
|
|
- int kind = intent.getIntExtra(Common.BR_MAIN_NOTI.KIND,0);
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] ACNAME_MAIN_NOTI -> kind : " + kind);
|
|
|
- switch (kind) {
|
|
|
- case Common.BR_MAIN_NOTI.ARRIVED_CAR:
|
|
|
- StartPopup(ID.POPUPS.POPUP_VEHICLEARRIVED, intent);
|
|
|
-// StartPopup(ID_OLD.SCREENS.ArrivedCarPopupScreen);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.UI_UPDATE_PARCEL:
|
|
|
- StartPopup(ID.POPUPS.POPUP_PARCELRECEIVED);
|
|
|
-// StartPopup(ID_OLD.SCREENS.DeliveryBox);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.SMARTKEY_ALARM_BR:
|
|
|
- StartPopup(ID.POPUPS.POPUP_SMARTKEYEMERGENCY, intent);
|
|
|
-// StartPopup(ID_OLD.SCREENS.SmartKeyAlarmPopupScreen, intent);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.UI_BANDLOCATION_ALARM:
|
|
|
- ctrlLCDOnOff(true);
|
|
|
- int nCardNum = intent.getIntExtra(Common.BR_MAIN_NOTI.CARD_NUM,0);
|
|
|
- Intent mIntent = new Intent();
|
|
|
- mIntent.putExtra(Common.BR_MAIN_NOTI.CARD_NUM, nCardNum);
|
|
|
- StartPopup(ID.POPUPS.POPUP_BANDLOCATIONALARM, mIntent);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.UI_UPDATE_POST:
|
|
|
- ctrlLCDOnOff(true);
|
|
|
- StartPopup(ID.POPUPS.POPUP_POSTRECEIVED);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.NOTICE_DETECT_STRANGER:
|
|
|
- // 알람 상태 확인
|
|
|
- int doorCamType = intent.getIntExtra("DOORCAM_TYPE", -1);
|
|
|
- Intent data = new Intent();
|
|
|
- data.putExtra("DOORCAM_TYPE", doorCamType);
|
|
|
- StartPopup(ID.POPUPS.POPUP_NOTICESTRANGER, data);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.ACCEPT_RECORDING:
|
|
|
- int nEmerState = intent.getIntExtra("EMERGENCY_STATE", -1);
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Door_Record, nEmerState);
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.BR_MAIN_NOTI.ACCEPT_TAKEPIC:
|
|
|
- nEmerState = intent.getIntExtra("EMERGENCY_STATE", -1);
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Door_TakePic, nEmerState);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- Log.w(TAG, "[mWallPadNotifyBR] (BR.nKind) Not support!! -> " + kind);
|
|
|
- break;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.toString();
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- else if(strAction.equals(BR_MAIN_LIVE_CHECKER.ACNAME_MAIN_LIVE_CHECKER )) {
|
|
|
- int kind = intent.getIntExtra(BR_MAIN_LIVE_CHECKER.KIND,0);
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] BR_MAIN_LIVE_CHECKER.ACNAME_MAIN_LIVE_CHECKER -> kind : " + kind + ", m_LiveImapServer [" + m_LiveImapServer + "], m_LiveMainActivity [" + m_LiveMainActivity + "]");
|
|
|
- if (kind == BR_MAIN_LIVE_CHECKER.IMAP_SERVER) {
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] received Imap Server Live !");
|
|
|
- m_LiveImapServer++;
|
|
|
- }
|
|
|
- else if( kind == BR_MAIN_LIVE_CHECKER.MAIN_ACTIVITY) {
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] received Main Activity Live !");
|
|
|
- m_LiveMainActivity++;
|
|
|
- if (m_IPActivity == false) {
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] IP is not set");
|
|
|
- m_LiveImapServer++;
|
|
|
- }
|
|
|
- }
|
|
|
- Log.d(TAG, "[mWallPadNotifyBR] m_LiveImapServer [" + m_LiveImapServer + "], m_LiveMainActivity [" + m_LiveMainActivity +"]");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- int kind = intent.getIntExtra("KIND",0);
|
|
|
- Log.d(TAG, "MainActivity mWallPadNotifyBR Receive Notify BR "+kind+" "/*+electr.isActive()*/);
|
|
|
- switch (kind) {
|
|
|
- case define.NOTIFY_ELE_MOVE:
|
|
|
-// if (electr!= null /*&& electr.isActive()*/)
|
|
|
-// {
|
|
|
-// Log.i("MAINSCREEN", "Receive NOTIFY_ELE_MOVE");
|
|
|
-// electr.updateUI(intent.getStringExtra("FLOOR"), intent.getByteExtra("UPDOWN",(byte)-1));
|
|
|
-// }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_ELE_ARRIVAL_UP:
|
|
|
- Log.i("AIDLTEST", "Receive NOTIFY_ELE_ARRIVAL_UP");
|
|
|
- Sound().Play(SND.elevator.UP_ARRIVED);
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_ELE_ARRIVAL_DOWN:
|
|
|
- try {
|
|
|
- WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
|
|
|
- int eleinfo = devset.Get_Elevator_Info();
|
|
|
- devset.closeDB();
|
|
|
-
|
|
|
- if (WallpadDeviceSet.ELEVATOR_SIMPLE == eleinfo) Sound().Play(SND.elevator.ORG_ARRIVED);
|
|
|
- else if (WallpadDeviceSet.ELEVATOR_FLOOR == eleinfo) Sound().Play(SND.elevator.DN_ARRIVED);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_UPDATE_START:
|
|
|
- try {
|
|
|
- String updateFile = intent.getStringExtra("PATH");
|
|
|
- Log.i("WALLPADAPI","Call Update App :" + updateFile);
|
|
|
- if (updateFile==null) return;
|
|
|
- ComponentName cn = new ComponentName("com.telechips.android.systemupdater","com.telechips.android.systemupdater.SystemUpdate");
|
|
|
- Intent Uintent = new Intent(Intent.ACTION_MAIN);
|
|
|
- Uintent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- Uintent.putExtra("updatefile",updateFile);
|
|
|
- Uintent.setComponent(cn);
|
|
|
- startActivity(Uintent);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_DEVSERVICE_START:
|
|
|
- mWallPadAPI = new WallPadAPI(getApplicationContext());
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_DEVICECONNECTED:
|
|
|
- //DevLockCtr.ReleaseLock(define.DEVICE_LOCK_SVC_INIT);
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_SENDBOOTUP_FAIL:
|
|
|
- // 부트업 실패시 5초 간격으로 다시 시도하도록 수정.
|
|
|
- mWallPadApiCheckHandler.sendEmptyMessageDelayed(10, 10000);
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_IMAPSERVER_START:
|
|
|
- case Common.DEVICE_BOOTUP_RETRY:
|
|
|
- Log.i(TAG, "Try Send Boot up MSG kind : " + kind );
|
|
|
- bootupretryCNT++;
|
|
|
- if (bootupretryCNT > MAX_BOOTUP_RETRY_COUNT) break;
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- if (SetData != null) {
|
|
|
- // AnC 기존 코드는 네트워크 연결이 안된경우 DB Close를 50회를 안 하도록 되어있어서 수정함.
|
|
|
- String strServerIP = SetData.GetServerIP();
|
|
|
- int nServerPort = SetData.GetServerPort();
|
|
|
- String svrVersion = SetData.GetServerVer();
|
|
|
- Log.d(TAG, "DB Server Version : " + svrVersion );
|
|
|
- if (svrVersion == null) svrVersion = "1.0";
|
|
|
-
|
|
|
- //설정정보 버전 가져오기
|
|
|
- StringBuilder result = new StringBuilder();
|
|
|
- result.append(SetData.GetSettingVer());
|
|
|
- SetData.closeDB();
|
|
|
-
|
|
|
- String Setting_Version = result.toString();
|
|
|
- Log.i(TAG, "Setting's Version :"+Setting_Version);
|
|
|
-
|
|
|
- boolean mNewDanjiServer = false;
|
|
|
- try {
|
|
|
- WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
- mNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
- wallpadDeviceSet.closeDB();
|
|
|
- } catch(Exception e) {
|
|
|
- Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
|
|
|
- e.printStackTrace();
|
|
|
- mNewDanjiServer = false;
|
|
|
- }
|
|
|
-
|
|
|
- if (mNewDanjiServer == true) {
|
|
|
- // DB 값하고 , 신형단지서버 사용 설정이 동일 하다면 DB값을 전달한다.
|
|
|
- // 나중에 2.X 이상 버전이 갱신될 경우를 위해서
|
|
|
- }
|
|
|
- else {
|
|
|
- svrVersion = "1.0";
|
|
|
- }
|
|
|
-
|
|
|
- //Main App 버전정보 가져오기
|
|
|
- WallPadiMAPNotifyAPI notify = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
- notify.SetSocketWaitCount(3000);
|
|
|
- notify.SetServerIPcfg(strServerIP, nServerPort);
|
|
|
- notify.Send_Device_BootUP(getMainVersion(), Setting_Version , svrVersion );
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- Intent Newintent = new Intent();
|
|
|
- Newintent.setAction(define.NOTIFY_ACNAME);
|
|
|
- Newintent.putExtra(define.NOTIBR_KIND,define.NOTIFY_SENDBOOTUP_FAIL);
|
|
|
- sendBroadcast(Newintent);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_SUBDEVCALLBUSY:
|
|
|
- /*
|
|
|
- callbtn = (Button)findViewById(R.id.Callbtn);
|
|
|
- callbtn.setBackgroundResource(R.drawable.but_call_on);
|
|
|
- MAIN_CALL_LOCK = true;
|
|
|
- */
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_SUBDEVCALLEND:
|
|
|
- /*
|
|
|
- callbtn = (Button)findViewById(R.id.Callbtn);
|
|
|
- callbtn.setBackgroundResource(R.drawable.but_call);
|
|
|
- MAIN_CALL_LOCK = false;
|
|
|
- */
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_UPDATECALLDATA:
|
|
|
- try{
|
|
|
- String[] UpdateCallData = intent.getStringExtra(define.NOTIBR_CONTENT).split(define.DEVCTR_CMD_SPLITER);
|
|
|
- Log.i(APIErrorCode.GetLogPrefix(),"Receive NOTIFY_UPDATECALLDATA "+UpdateCallData[0]+";"+UpdateCallData[1]);
|
|
|
- int IncallCnt = 0;
|
|
|
- int VisitorCNT = 0;
|
|
|
- try {
|
|
|
- IncallCnt = Integer.parseInt(UpdateCallData[0]);
|
|
|
- VisitorCNT = Integer.parseInt(UpdateCallData[1]);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- } catch(Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_UPDATENOTICE:
|
|
|
- Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATENOTICE ");
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
- SetData.closeDB();
|
|
|
- if (soundOut) {
|
|
|
- Sound().PlayMent(SND.effect.EFFECT1);
|
|
|
- }
|
|
|
-
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- } catch (Exception e) {
|
|
|
-
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_UPDATEPARCEL:
|
|
|
- try {
|
|
|
-
|
|
|
- String type = intent.getStringExtra(define.NOTIBR_CONTENT);
|
|
|
- int itemcnt = intent.getIntExtra("ITEM",-1);
|
|
|
-
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
- if (itemcnt !=-1) SetData.SetParcelCNT(itemcnt);
|
|
|
- SetData.closeDB();
|
|
|
-
|
|
|
- Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPARCEL itemcnt : " + itemcnt);
|
|
|
-// if (soundOut) {
|
|
|
-// if (type.equals("parcel_in")) {
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(1, true);
|
|
|
-// Sound().PlayMent(SND.mode.BOX_ARRIVED);
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- Log.d(TAG, "Send BR --> Common.BR_MAIN_NOTI.UI_UPDATE_PARCEL");
|
|
|
- Intent Newintent = new Intent();
|
|
|
- Newintent.setAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI);
|
|
|
- Newintent.putExtra(Common.BR_MAIN_NOTI.KIND, Common.BR_MAIN_NOTI.UI_UPDATE_PARCEL);
|
|
|
- getApplicationContext().sendBroadcast(Newintent);
|
|
|
-
|
|
|
- //NoticeIconOnoff(true);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
-// if (type.equals("parcel_in"))
|
|
|
-// {
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(1, true);
|
|
|
-// PlayNotiSound(WpadSound.SND.mode.BOX_ARRIVED);
|
|
|
-// }
|
|
|
-//
|
|
|
-// if (itemcnt!=-1){
|
|
|
-// if (itemcnt > 0)
|
|
|
-// ParcelIconOnoff(true);
|
|
|
-// else
|
|
|
-// ParcelIconOnoff(false);
|
|
|
-// WallpadStatusData ParData = new WallpadStatusData(getApplicationContext());
|
|
|
-// ParData.SetParcelCNT(itemcnt);
|
|
|
-// ParData.closeDB();
|
|
|
-// if (ParcelMGR!=null) ParcelMGR.updateParcel();
|
|
|
-// }
|
|
|
-
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_UPDATEPOST:
|
|
|
- try {
|
|
|
- int nItemCnt = intent.getIntExtra("ITEM",-1);
|
|
|
- Log.d(TAG, "[UI_UPDATE_POST] nItemCnt [" + nItemCnt + "]");
|
|
|
-
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- if (nItemCnt != -1) SetData.SetPostCNT(nItemCnt);
|
|
|
- SetData.closeDB();
|
|
|
-
|
|
|
- Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPOST nItemCnt : " + nItemCnt);
|
|
|
-
|
|
|
- Log.d(TAG, "Send BR --> Common.BR_MAIN_NOTI.UI_UPDATE_POST");
|
|
|
- Intent Newintent = new Intent();
|
|
|
- Newintent.setAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI);
|
|
|
- Newintent.putExtra(Common.BR_MAIN_NOTI.KIND, Common.BR_MAIN_NOTI.UI_UPDATE_POST);
|
|
|
- getApplicationContext().sendBroadcast(Newintent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] mWallPadNotifyBR.onReceive()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_UPDATEPARKING:
|
|
|
- Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPARKING ");
|
|
|
-
|
|
|
- /*
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- List<String[]> parkList = parkdb.GetParkInfo();
|
|
|
-
|
|
|
- if(parkList != null)
|
|
|
- {
|
|
|
- for(int j= 0; j<parkList.size(); j++)
|
|
|
- {
|
|
|
- for(int i = 0; i<4; i++)
|
|
|
- {
|
|
|
- Common.DebugLog("parkList.get("+j+")["+i+"]:"+ parkList.get(j)[i]);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- parkdb.closeDB();
|
|
|
- */
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_DEVICEREBOOT:
|
|
|
- try {
|
|
|
- //[Model]
|
|
|
-// if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
|
|
|
-// // A20
|
|
|
-// PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(8, true);
|
|
|
-// }
|
|
|
-// else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
- if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
- // V40
|
|
|
- V40IOInterface mV40IOInterface = new V40IOInterface();
|
|
|
- mV40IOInterface.setV40Reboot(5);
|
|
|
- }
|
|
|
- else {
|
|
|
- // TCC8935
|
|
|
- SendAppFinishReqBR();
|
|
|
- ComponentName cnA = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
- intent = new Intent(Intent.ACTION_MAIN);
|
|
|
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- intent.putExtra("updatesystem", "no");
|
|
|
- intent.putExtra("updateapp", " no ");
|
|
|
- intent.putExtra("rebootcmd", "reboot");
|
|
|
- intent.setComponent(cnA);
|
|
|
- startActivity(intent);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_DEVICEDEEPSLEEP:
|
|
|
- try {
|
|
|
- Log.d(TAG, "[mWallPadAlertBR] NOTIFY_DEVICEDEEPSLEEP");
|
|
|
- WallpadStatusData sdb = new WallpadStatusData(getApplicationContext());
|
|
|
- String[] getstate = sdb.GetSystemUpdateStatus();
|
|
|
- for (int i = 0; i < getstate.length; i++) {
|
|
|
- Log.d(TAG, "[mWallPadAlertBR] getstate[" + i + "] = " + getstate[i]);
|
|
|
- }
|
|
|
-
|
|
|
- if (getstate[0].equalsIgnoreCase("SET")) {
|
|
|
- sdb.SetSystemUpdate(null, null);
|
|
|
- sdb.SetUpgradeState(true);
|
|
|
- ComponentName cnn = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
- intent = new Intent(Intent.ACTION_MAIN);
|
|
|
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- intent.putExtra("updatesystem", getstate[1]);
|
|
|
- intent.putExtra("updateapp", getstate[2]);
|
|
|
- intent.setComponent(cnn);
|
|
|
- Log.e("MAINSCREEN","Call Upgrade Request BSP : "+getstate[1]+" APP : "+getstate[2]);
|
|
|
- startActivity(intent);
|
|
|
- }
|
|
|
- sdb.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_SYSTEMTIMESETTED:
|
|
|
- try {
|
|
|
- Common.DebugLog("MainActivity ---------- > define.NOTIFY_SYSTEMTIMESETTED");
|
|
|
- Calendar caldata = new GregorianCalendar();
|
|
|
- // refreshdate(caldata);
|
|
|
- // refreshclock(caldata);
|
|
|
- if (SYSTEM_TIME_SET == false) {
|
|
|
- SYSTEM_TIME_SET = true;
|
|
|
- if (SCManager != null) {
|
|
|
- if (SCManager.isSetted != true) SCManager.refreshSchedule();
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_SCHEDULEUPDATED:
|
|
|
-// item = intent.getIntExtra("ITEM",0);
|
|
|
-// if (item == ScheduleManager.SCHEDULE_TYPE_SCHEDULER && SYSTEM_TIME_SET)
|
|
|
-// SCManager.refreshSchedulerData();
|
|
|
-// else if (item == ScheduleManager.SCHEDULE_TYPE_SYSRESET && SYSTEM_TIME_SET)
|
|
|
-// SCManager.refreshsysreset();
|
|
|
-// else if (item == ScheduleManager.SCHEDULE_TYPE_MORNINGCALL && SYSTEM_TIME_SET)
|
|
|
-// SCManager.refreshMorningCall();
|
|
|
-// break;
|
|
|
- case define.NOTIFY_ALARMSTAUSCHANGED:
|
|
|
- try {
|
|
|
- item = intent.getIntExtra("ITEM",0);
|
|
|
- if (item == WallpadStatusData.GUARD_OUT) {
|
|
|
- int base = 8000;
|
|
|
- int [] Menu_Id_List = { base+11};
|
|
|
- int Menu_Start_Id = base+11;
|
|
|
- int Menu_Start_Option = -1;
|
|
|
- Intent iintent = new Intent(Intent.ACTION_MAIN);
|
|
|
- iintent.putExtra("MENU_ID_LIST", Menu_Id_List); // KEY : MENU_ID_LIST
|
|
|
- iintent.putExtra("MENU_START_ID", Menu_Start_Id); // KEY : MENU_START_ID
|
|
|
- iintent.putExtra("MENU_START_OPTION", Menu_Start_Option); // KEY : MENU_START_OPTION
|
|
|
- iintent.setComponent(new ComponentName("kr.co.icontrols.wallpadoutmoderun","kr.co.icontrols.wallpadoutmoderun.MainActivity"));
|
|
|
- startActivity(iintent);
|
|
|
- }
|
|
|
- else if (item == WallpadStatusData.GUARD_IN) {
|
|
|
- WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
- // Button callBtn = (Button)findViewById(R.id.GuardBtn);
|
|
|
- // callBtn.setBackgroundResource((SettData.GetAlarmStatus() == WallpadStatusData.GUARD_IN)?R.drawable.but_guard_on:R.drawable.but_guard);
|
|
|
- SettData.closeDB();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_ENERGYUPDATE:
|
|
|
- try
|
|
|
- {
|
|
|
- Calendar caldata = new GregorianCalendar();
|
|
|
- String[] getData = intent.getStringExtra(define.NOTIBR_CONTENT).split(define.DEVCTR_CMD_SPLITER);
|
|
|
- String checkDate = String.format("%04d%02d%02d",caldata.get(Calendar.YEAR),caldata.get(Calendar.MONTH)+1,caldata.get(Calendar.DAY_OF_MONTH));
|
|
|
- WallpadStatusData energyData = new WallpadStatusData(getApplicationContext());
|
|
|
- energyData.SetEnergyData(intent.getStringExtra(define.NOTIBR_CONTENT));
|
|
|
- energyData.SetEnergyCheckDate(checkDate);
|
|
|
- energyData.closeDB();
|
|
|
- //if (NeedCheckEnergy)
|
|
|
- // CheckEnergyUsage(getData);
|
|
|
- // if (EnergyMGR!=null)
|
|
|
- // EnergyMGR.UpdateData(getData);
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
- case define.NOTIFY_STARTEFRAME:
|
|
|
- try
|
|
|
- {
|
|
|
- Log.w("MAINSCREEN"," Receive NOTIFY_STARTEFRAME Start StartAutoPictureAPP ");
|
|
|
- WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
-
|
|
|
- if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar()))
|
|
|
- {
|
|
|
- if (!SettData.StartAutoPictureAPP())
|
|
|
- {
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(3, true);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(3, true);
|
|
|
- }
|
|
|
- SettData.closeDB();
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
- case define.NOTIFY_ADDDEVICELOCK:
|
|
|
- Log.w("MAINSCREEN"," Receive NOTIFY_ADDDEVICELOCK Start ");
|
|
|
- //DevLockCtr.AddLock(intent.getIntExtra(define.NOTIBR_CONTENT, 0));
|
|
|
- break;
|
|
|
- case define.NOTIFY_RELEASEDEVICELOCK:
|
|
|
- Log.w("MAINSCREEN"," Receive NOTIFY_RELEASEDEVICELOCK Start ");
|
|
|
- //DevLockCtr.ReleaseLock(intent.getIntExtra(define.NOTIBR_CONTENT, 0));
|
|
|
- break;
|
|
|
- case define.NOTIFY_PLAYMENT:
|
|
|
- {
|
|
|
- int sndidx = intent.getIntExtra(define.NOTIBR_CONTENT,0);
|
|
|
- Sound().PlayMent(sndidx);
|
|
|
-
|
|
|
- if (sndidx == WpadSound.SND.elevator.CALL) {
|
|
|
- byte floorInfo = intent.getByteExtra(define.NOTIBR_FLOOR,(byte)0);
|
|
|
- Log.e("MANUAL_MAIN", " PLAY MENT Get Ele Call : "+floorInfo);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_ENERGY_DATA:
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Log.w("MAINSCREEN"," Receive NOTIFY_ENERGY DATA Start ");
|
|
|
-
|
|
|
- //에너지 데이터 개수 - 3종 또는 5종
|
|
|
- EnergyAlramPopupMgr.m_EnergyInfoCount = intent.getIntExtra(Common.ENERGY_INTENT_ENERGY_COUNT, -1);
|
|
|
- Log.w("MAINSCREEN"," ENERGY_INTENT_ENERGY_COUNT :"+ EnergyAlramPopupMgr.m_EnergyInfoCount);
|
|
|
-
|
|
|
- //에너지 단지서버에서 받아온 시간
|
|
|
- EnergyAlramPopupMgr.m_ReceiveYear = intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_YEAR, -1);
|
|
|
- Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_YEAR :"+ EnergyAlramPopupMgr.m_ReceiveYear);
|
|
|
-
|
|
|
- EnergyAlramPopupMgr.m_ReceiveMonth = intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_MONTH, -1);
|
|
|
- Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_MONTH :"+ EnergyAlramPopupMgr.m_ReceiveMonth);
|
|
|
-
|
|
|
- EnergyAlramPopupMgr.m_ReceiveDay = intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_DAY, -1);
|
|
|
- Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_DAY :"+ EnergyAlramPopupMgr.m_ReceiveDay );
|
|
|
-
|
|
|
- Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_HOUR :"+ intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_HOUR, -1));
|
|
|
-
|
|
|
- Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_MINUTE :"+ intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_MINUTE, -1));
|
|
|
-
|
|
|
- //전기 에너지 정보
|
|
|
- String Vaule = "";
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_ELECTRIC);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Elec_UseValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Elec_GoalValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- //수도 에너지 정보
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_WATER);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Water_UseValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_WATER);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Water_GoalValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- //가스 에너지 정보
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_GAS);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Gas_UseValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_GAS);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Gas_GoalValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
-
|
|
|
- //온수 에너지 정보
|
|
|
- if( EnergyAlramPopupMgr.m_EnergyInfoCount >= 5 )
|
|
|
- {
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_HOTWATER);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_HotWater_UseValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_HOTWATER);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_HotWater_GoalValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- //난방 에너지 정보
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_HEATING);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Heating_UseValue = Double.parseDouble(Vaule);
|
|
|
-
|
|
|
- Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_HEATING);
|
|
|
- if( Vaule != null && Vaule.length() > 0 )
|
|
|
- EnergyAlramPopupMgr.m_Heating_GoalValue = Double.parseDouble(Vaule);
|
|
|
- }
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_GET_CAR_PARKING:
|
|
|
- try
|
|
|
- {
|
|
|
- if(bUseofNot_ParkingInfo == true)
|
|
|
- {
|
|
|
- bSetMSG_GetParkingInfo = true;
|
|
|
- LoadParkingDataFromServer();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DebugLogOutput("bUseofNot_ParkingInfo == false");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- catch( Exception e )
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case define.NOTIFY_ENERGY_TARGET_INFO_ALARM_FROM_SERVER:
|
|
|
-
|
|
|
- String tempFromWhere = intent.getStringExtra("FromWhere");
|
|
|
- if(tempFromWhere == null)
|
|
|
- {
|
|
|
- ResultGetIntent = true;
|
|
|
- }
|
|
|
-
|
|
|
- String tempElect_target = intent.getStringExtra("elect_target");
|
|
|
- if(tempElect_target != null)
|
|
|
- {
|
|
|
- elect_target = tempElect_target;
|
|
|
- }
|
|
|
-
|
|
|
- String tempElect_used = intent.getStringExtra("elect_used");
|
|
|
- if(tempElect_used != null)
|
|
|
- {
|
|
|
- elect_used = tempElect_used;
|
|
|
- }
|
|
|
-
|
|
|
- String tempElect_info = intent.getStringExtra("elect_info");
|
|
|
- if(tempElect_info != null)
|
|
|
- {
|
|
|
- elect_info = tempElect_info;
|
|
|
- }
|
|
|
-
|
|
|
- String tempWater_target = intent.getStringExtra("water_target");
|
|
|
- if(tempWater_target != null)
|
|
|
- {
|
|
|
- water_target = tempWater_target;
|
|
|
- }
|
|
|
-
|
|
|
- String tempWater_used = intent.getStringExtra("water_used");
|
|
|
- if(tempWater_used != null)
|
|
|
- {
|
|
|
- water_used = tempWater_used;
|
|
|
- }
|
|
|
-
|
|
|
- String tempWater_info = intent.getStringExtra("water_info");
|
|
|
- if(tempWater_info != null)
|
|
|
- {
|
|
|
- water_info = tempWater_info;
|
|
|
- }
|
|
|
-
|
|
|
- String tempGas_target = intent.getStringExtra("gas_target");
|
|
|
- if(tempGas_target != null)
|
|
|
- {
|
|
|
- gas_target = tempGas_target;
|
|
|
- }
|
|
|
-
|
|
|
- String tempGas_used = intent.getStringExtra("gas_used");
|
|
|
- if(tempGas_used != null)
|
|
|
- {
|
|
|
- gas_used = tempGas_used;
|
|
|
- }
|
|
|
-
|
|
|
- String tempGas_info = intent.getStringExtra("gas_info");
|
|
|
- if(tempGas_info != null)
|
|
|
- {
|
|
|
- gas_info = tempGas_info;
|
|
|
- }
|
|
|
-
|
|
|
- String tempHotwater_target = intent.getStringExtra("hotwater_target");
|
|
|
- if(tempHotwater_target != null)
|
|
|
- {
|
|
|
- hotwater_target = tempHotwater_target;
|
|
|
- }
|
|
|
-
|
|
|
- String tempHotwater_used = intent.getStringExtra("hotwater_used");
|
|
|
- if(tempHotwater_used != null)
|
|
|
- {
|
|
|
- hotwater_used = tempHotwater_used;
|
|
|
- }
|
|
|
-
|
|
|
- String tempHotwater_info = intent.getStringExtra("hotwater_info");
|
|
|
- if(tempHotwater_info != null)
|
|
|
- {
|
|
|
- hotwater_info = tempHotwater_info;
|
|
|
- }
|
|
|
-
|
|
|
- String tempHeating_target = intent.getStringExtra("heating_target");
|
|
|
- if(tempHeating_target != null)
|
|
|
- {
|
|
|
- heating_target = tempHeating_target;
|
|
|
- }
|
|
|
-
|
|
|
- String tempHeating_used = intent.getStringExtra("heating_used");
|
|
|
- if(tempHeating_used != null)
|
|
|
- {
|
|
|
- heating_used = tempHeating_used;
|
|
|
- }
|
|
|
-
|
|
|
- String tempHeatin_info = intent.getStringExtra("heating_info");
|
|
|
- if(tempHeatin_info != null)
|
|
|
- {
|
|
|
- heating_info = tempHeatin_info;
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
-
|
|
|
- private void ctrlLCDOnOff(boolean bOn) {
|
|
|
- try {
|
|
|
- if (bOn) {
|
|
|
- PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
- Log.d(TAG, "[ctrlLCDOnOff] Screen On: " + pm.isScreenOn());
|
|
|
- if (getCompareBSPVersion()) {
|
|
|
- if (!checkLCDOnByCMD()) {
|
|
|
- Log.d(TAG, "[ctrlLCDOnOff] V40Interface LcdWakeUp Call!!");
|
|
|
- mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if (!pm.isScreenOn()) {
|
|
|
- Log.d(TAG, "[ctrlLCDOnOff] V40Interface LcdWakeUp Call!!");
|
|
|
- mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
- }
|
|
|
- }
|
|
|
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- } else
|
|
|
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] ctrlLCDOnOff(boolean bOn)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- protected void refreshUserCtr() {
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.DRIVER_LIGHT_BR);
|
|
|
- Log.i("HIGH","StatusChanged BR Send "+define.DRIVER_LIGHT_BR);
|
|
|
- sendBroadcast(intent);
|
|
|
-
|
|
|
- intent = new Intent();
|
|
|
- intent.setAction(define.DRIVER_BATCHLIGHT_BR);
|
|
|
- Log.i("HIGH","StatusChanged BR Send "+define.DRIVER_BATCHLIGHT_BR);
|
|
|
- sendBroadcast(intent);
|
|
|
-
|
|
|
- intent = new Intent();
|
|
|
- intent.setAction(define.DRIVER_VENTIL_BR);
|
|
|
- Log.i("HIGH","StatusChanged BR Send "+define.DRIVER_VENTIL_BR);
|
|
|
- sendBroadcast(intent);
|
|
|
-
|
|
|
-// intent = new Intent();
|
|
|
-// intent.setAction(HEATERBR);
|
|
|
-// Log.i("HIGH","StatusChanged BR Send "+HEATERBR);
|
|
|
-// sendBroadcast(intent);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private void Check_Upgrade_File() {
|
|
|
- try {
|
|
|
- WallpadStatusData sdb = new WallpadStatusData(getApplicationContext());
|
|
|
- String[] getstate = sdb.GetSystemUpdateStatus();
|
|
|
- if (getstate[0].equalsIgnoreCase("SET")) {
|
|
|
- for (int i = 1; i < 3; i++) {
|
|
|
- if (!getstate[i].equals("no")) {
|
|
|
- String filePath = "/sdcard/"+getstate[i];
|
|
|
- File updradef = new File(filePath);
|
|
|
- if (updradef.exists()) updradef.delete();
|
|
|
- }
|
|
|
- }
|
|
|
- sdb.SetSystemUpdate(null, null);
|
|
|
- }
|
|
|
- sdb.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] Check_Upgrade_File()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- protected void SendAppFinishReqBR() {
|
|
|
- try {
|
|
|
- Log.e("MANUAL_MAIN", "Send Finish BR");
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(1, true);
|
|
|
- // LCD Always ON
|
|
|
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- Intent notiIntent = new Intent();
|
|
|
- notiIntent.setAction(define.BR_APP_FINISH);
|
|
|
- getApplicationContext().sendBroadcast(notiIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] SendAppFinishReqBR()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void registerBroadcastReceiver() {
|
|
|
- try {
|
|
|
- IntentFilter mIntentFilter = new IntentFilter();
|
|
|
- mIntentFilter.addAction("WALLPAD_ALERT");
|
|
|
- registerReceiver(mWallPadAlertBR, mIntentFilter);
|
|
|
-
|
|
|
- mIntentFilter = new IntentFilter();
|
|
|
- mIntentFilter.addAction("WALLPAD_NOTIFY");
|
|
|
- mIntentFilter.addAction(define.DRIVER_VENTIL_BR);
|
|
|
- mIntentFilter.addAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI); // ACC 꺼와 구분되는 Noti 추가
|
|
|
- mIntentFilter.addAction(BR_MAIN_LIVE_CHECKER.ACNAME_MAIN_LIVE_CHECKER);
|
|
|
- mIntentFilter.addAction(Common.BR_ACK_WALLPADCALL_LIVE);
|
|
|
- registerReceiver(mWallPadNotifyBR, mIntentFilter);
|
|
|
-
|
|
|
- registerMainActivityBR();
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] registerBroadcastReceiver()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void unregisterBroadcastReceiver() {
|
|
|
- try {
|
|
|
- unregisterReceiver(mWallPadAlertBR);
|
|
|
- unregisterReceiver(mWallPadNotifyBR);
|
|
|
- unregisterReceiver(MainActivityBroadcastReceiver);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] unregisterBroadcastReceiver()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void MainScrLog(String msg) {
|
|
|
- Log.e("MAINSCREEN",APIErrorCode.GetLogPrefix()+msg);
|
|
|
- }
|
|
|
-
|
|
|
- protected void CheckEnv() {
|
|
|
- try {
|
|
|
- File dnDIC = new File(BESTIN_LOCATION);
|
|
|
- if (!dnDIC.exists()) dnDIC.mkdir();
|
|
|
-
|
|
|
- dnDIC = new File(ALBUM_PICTURE_LOCATION);
|
|
|
- if (!dnDIC.exists()) dnDIC.mkdir();
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] CheckEnv()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void FileCopy(String Target, String Source) {
|
|
|
- try {
|
|
|
- FileInputStream input = new FileInputStream(Source);
|
|
|
- long size = input.available();
|
|
|
- byte buff[] = new byte[(int)size];
|
|
|
- input.read(buff);
|
|
|
- input.close( );
|
|
|
- FileOutputStream output = new FileOutputStream(Target);
|
|
|
- output.write(buff);
|
|
|
- output.flush();
|
|
|
- output.close();
|
|
|
- } catch( Exception e ) {
|
|
|
- Log.e(TAG, "[Exception] FileCopy(String Target, String Source)");
|
|
|
- e.printStackTrace() ;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void checkEventNotifications() {
|
|
|
- try {
|
|
|
- Log.d(TAG,"[checkEventNotifications] ========== START ==========)");
|
|
|
-
|
|
|
- // 스마트우편함, 전기차충전 연동 여부 확인
|
|
|
- int nRetElecVehicle = -1;
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this.getContext());
|
|
|
- bSmartPostUsage = mWallpadDeviceSet.Get_SmartPostUse();
|
|
|
- nRetElecVehicle = mWallpadDeviceSet.GetDeviceSetted("전기차충전");
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
-
|
|
|
- if (nRetElecVehicle == WallpadDeviceSet.DEV_DATA_ENABLE) bElecVehicleUsage = true;
|
|
|
- else bElecVehicleUsage = false;
|
|
|
- Log.d(TAG, "[checkEventNotifications] bSmartPostUsage [" + bSmartPostUsage + "], nRetElecVehicle [" + nRetElecVehicle + "], bElecVehicleUsage [" + bElecVehicleUsage + "]");
|
|
|
-
|
|
|
- // 부재중 통화
|
|
|
- WallpadCallHistoryData mWallpadCallHistoryData = new WallpadCallHistoryData(getContext());
|
|
|
- try {
|
|
|
- nMissedCallCnt = mWallpadCallHistoryData.RowCallHistoryCountData();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadCallHistoryData");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadCallHistoryData.closeDB();
|
|
|
-
|
|
|
- // 방문자 사진
|
|
|
- WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
|
|
|
- try {
|
|
|
- nVisitorPicCnt = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadVisitorPicData_A20");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadVisitorPicData_A20.closeDB();
|
|
|
-
|
|
|
- // 공지사항, 택배, 스마트 우편
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
|
|
|
- try {
|
|
|
- nNoticeCnt = mWallpadStatusData.GetNoticeCNT();
|
|
|
- nParcelCnt = mWallpadStatusData.GetParcelCNT();
|
|
|
- nPostCnt = mWallpadStatusData.GetPostCNT();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadStatusData");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
-
|
|
|
- if (0 > nMissedCallCnt) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] out of range!! nMissedCallCnt [" + nMissedCallCnt + "]");
|
|
|
- nMissedCallCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nVisitorPicCnt) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] out of range!! nVisitorPicCnt [" + nVisitorPicCnt + "]");
|
|
|
- nVisitorPicCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nNoticeCnt) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] out of range!! nNoticeCnt [" + nNoticeCnt + "]");
|
|
|
- nNoticeCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nParcelCnt) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] out of range!! nParcelCnt [" + nParcelCnt + "]");
|
|
|
- nParcelCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nPostCnt) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] out of range!! nPostCnt [" + nPostCnt + "]");
|
|
|
- nPostCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nElecVehicleChangingCnt) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] out of range!! nElecVehicleChangingCnt [" + nElecVehicleChangingCnt + "]");
|
|
|
- nElecVehicleChangingCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (!bSmartPostUsage) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] bSmartPostUsage is not supported!! -> bSmartPostUsage [" + bSmartPostUsage + "]");
|
|
|
- nPostCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (!bElecVehicleUsage) {
|
|
|
- Log.w(TAG,"[checkEventNotifications] bElecVehicleUsage is not supported!! -> bElecVehicleUsage [" + bElecVehicleUsage + "]");
|
|
|
- nElecVehicleChangingCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- Log.d(TAG,"[checkEventNotifications] nMissedCallCnt [" + nMissedCallCnt + "], nVisitorPicCnt [" + nVisitorPicCnt + "], nNoticeCnt [" + nNoticeCnt + "], nParcelCnt [" + nParcelCnt + "], nPostCnt [" + nPostCnt + "], nElecVehicleChangingCnt [" + nElecVehicleChangingCnt + "]");
|
|
|
-
|
|
|
- sendEventNotiBR(nMissedCallCnt, nVisitorPicCnt, nNoticeCnt, nParcelCnt, nPostCnt, nElecVehicleChangingCnt);
|
|
|
- Send_NotiSmartSwitch(MainActivity.nNoticeCnt, MainActivity.nParcelCnt, MainActivity.nVisitorPicCnt);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkEventNotifications()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public String getEventNotificationInfo() {
|
|
|
- try {
|
|
|
- Log.d(TAG,"[getEventNotificationInfo] ========== START ==========)");
|
|
|
- // 부재중 통화, 방문자 사진, 공지사항, 택배
|
|
|
- int nMissedCallCnt = 0, nVisitorPicCnt = 0, nNoticeCnt = 0, nParcelCnt = 0, nPostCnt = 0;
|
|
|
-
|
|
|
- // 부재중 통화
|
|
|
- WallpadCallHistoryData mWallpadCallHistoryData = new WallpadCallHistoryData(getContext());
|
|
|
- try {
|
|
|
- nMissedCallCnt = mWallpadCallHistoryData.RowCallHistoryCountData();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadCallHistoryData");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadCallHistoryData.closeDB();
|
|
|
-
|
|
|
- // 방문자 사진
|
|
|
- WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
|
|
|
- try {
|
|
|
- nVisitorPicCnt = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadVisitorPicData_A20");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadVisitorPicData_A20.closeDB();
|
|
|
-
|
|
|
- // 공지사항, 택배
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
|
|
|
- try {
|
|
|
- nNoticeCnt = mWallpadStatusData.GetNoticeCNT();
|
|
|
- nParcelCnt = mWallpadStatusData.GetParcelCNT();
|
|
|
- nPostCnt = mWallpadStatusData.GetPostCNT();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadStatusData");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
- if (0 > nMissedCallCnt) {
|
|
|
- Log.w(TAG,"[getEventNotificationInfo] out of range!! nMissedCallCnt [" + nMissedCallCnt + "]");
|
|
|
- nMissedCallCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nVisitorPicCnt) {
|
|
|
- Log.w(TAG,"[getEventNotificationInfo] out of range!! nVisitorPicCnt [" + nVisitorPicCnt + "]");
|
|
|
- nVisitorPicCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nNoticeCnt) {
|
|
|
- Log.w(TAG,"[getEventNotificationInfo] out of range!! nNoticeCnt [" + nNoticeCnt + "]");
|
|
|
- nNoticeCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nParcelCnt) {
|
|
|
- Log.w(TAG,"[getEventNotificationInfo] out of range!! nParcelCnt [" + nParcelCnt + "]");
|
|
|
- nParcelCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (0 > nPostCnt) {
|
|
|
- Log.w(TAG,"[getEventNotificationInfo] out of range!! nPostCnt [" + nPostCnt + "]");
|
|
|
- nPostCnt = 0;
|
|
|
- }
|
|
|
-
|
|
|
- Log.d(TAG,"[getEventNotificationInfo] nMissedCallCnt [" + nMissedCallCnt + "], nVisitorPicCnt [" + nVisitorPicCnt + "], nNoticeCnt [" + nNoticeCnt + "], nParcelCnt [" + nParcelCnt + "], nPostCnt [" + nPostCnt + "]");
|
|
|
-
|
|
|
- if (bSmartPostUsage) return nMissedCallCnt + define.DEVCTR_CMD_SPLITER + nVisitorPicCnt + define.DEVCTR_CMD_SPLITER + nNoticeCnt + define.DEVCTR_CMD_SPLITER + nParcelCnt + define.DEVCTR_CMD_SPLITER + nPostCnt;
|
|
|
- else return nMissedCallCnt + define.DEVCTR_CMD_SPLITER + nVisitorPicCnt + define.DEVCTR_CMD_SPLITER + nNoticeCnt + define.DEVCTR_CMD_SPLITER + nParcelCnt;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getEventNotificationInfo()");
|
|
|
- e.printStackTrace();
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel) {
|
|
|
- try {
|
|
|
- Log.d(TAG,"[sendEventNotiBR] missedcall [" + missedcall + "], visitorpic [" + visitorpic + "], notice [" + notice + "], parcel [" + parcel + "]");
|
|
|
- String strResult = String.valueOf(missedcall) + define.DEVCTR_CMD_SPLITER + String.valueOf(visitorpic) + define.DEVCTR_CMD_SPLITER + String.valueOf(notice) + define.DEVCTR_CMD_SPLITER + String.valueOf(parcel);
|
|
|
- Log.d(TAG,"[sendEventNotiBR] strResult [" + strResult + "]");
|
|
|
-
|
|
|
- Intent mIntent = new Intent();
|
|
|
- mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
- mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
- mIntent.putExtra(define.NOTIBR_CONTENT, strResult);
|
|
|
- getApplicationContext().sendBroadcast(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel)");
|
|
|
- e.printStackTrace() ;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post) {
|
|
|
- try {
|
|
|
- Log.d(TAG,"[sendEventNotiBR] missedcall [" + missedcall + "], visitorpic [" + visitorpic + "], notice [" + notice + "], parcel [" + parcel + "], post [" + post + "]");
|
|
|
- String strResult = String.valueOf(missedcall) + define.DEVCTR_CMD_SPLITER + String.valueOf(visitorpic) + define.DEVCTR_CMD_SPLITER + String.valueOf(notice) + define.DEVCTR_CMD_SPLITER + String.valueOf(parcel) + define.DEVCTR_CMD_SPLITER + String.valueOf(post);
|
|
|
- Log.d(TAG,"[sendEventNotiBR] strResult [" + strResult + "]");
|
|
|
-
|
|
|
- Intent mIntent = new Intent();
|
|
|
- mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
- mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
- mIntent.putExtra(define.NOTIBR_CONTENT, strResult);
|
|
|
- getApplicationContext().sendBroadcast(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post)");
|
|
|
- e.printStackTrace() ;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post, int elecvehiclecharging) {
|
|
|
- try {
|
|
|
- Log.d(TAG,"[sendEventNotiBR] missedcall [" + missedcall + "], visitorpic [" + visitorpic + "], notice [" + notice + "], parcel [" + parcel + "], post [" + post + "], elecvehiclecharging [" + elecvehiclecharging +"]");
|
|
|
- String strResult = String.valueOf(missedcall) + define.DEVCTR_CMD_SPLITER + String.valueOf(visitorpic) + define.DEVCTR_CMD_SPLITER + String.valueOf(notice)
|
|
|
- + define.DEVCTR_CMD_SPLITER + String.valueOf(parcel) + define.DEVCTR_CMD_SPLITER + String.valueOf(post) + define.DEVCTR_CMD_SPLITER + String.valueOf(elecvehiclecharging);
|
|
|
- Log.d(TAG,"[sendEventNotiBR] strResult [" + strResult + "]");
|
|
|
-
|
|
|
- Intent mIntent = new Intent();
|
|
|
- mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
- mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
- mIntent.putExtra(define.NOTIBR_CONTENT, strResult);
|
|
|
- getApplicationContext().sendBroadcast(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post, int elecvehiclecharging)");
|
|
|
- e.printStackTrace() ;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void CheckCallData_CalledCountAndVisitorCount() {
|
|
|
- try {
|
|
|
- int Vcount = 0;
|
|
|
- int Ccount = 0;
|
|
|
- try {
|
|
|
- //DB정보 읽어서 처리
|
|
|
- Log.d(TAG,"CheckCallData_CalledCountAndVisitorCount Start");
|
|
|
- WallpadCallHistoryData mWallpadCallHistoryData = new WallpadCallHistoryData(getContext());
|
|
|
- int TempCcount = mWallpadCallHistoryData.RowCallHistoryCountData();
|
|
|
- mWallpadCallHistoryData.closeDB();
|
|
|
-
|
|
|
- Log.d(TAG,"RowCallHistoryCountData() :" + TempCcount);
|
|
|
- if (TempCcount != -999) {
|
|
|
- Ccount = TempCcount;
|
|
|
- }
|
|
|
-
|
|
|
- WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
|
|
|
- int TempVcount = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
|
|
|
- mWallpadVisitorPicData_A20.closeDB();
|
|
|
-
|
|
|
- Log.d(TAG,"RowVisitorPictureCountData() :" + TempVcount);
|
|
|
- if (TempVcount != -999) {
|
|
|
- Vcount = TempVcount;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- Log.d(TAG," Call Count Check Receive Ccount :" + Ccount + " , Photo Count : " + Vcount );
|
|
|
-
|
|
|
- String Retdata = String.valueOf(Ccount)+define.DEVCTR_CMD_SPLITER+String.valueOf(Vcount);
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
- intent.putExtra(define.NOTIBR_CONTENT, Retdata);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] CheckCallData_CalledCountAndVisitorCount()");
|
|
|
- e.printStackTrace() ;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- class ScheduleManager {
|
|
|
- public static final int SCHEDULE_TYPE_GETINFO = 5000;
|
|
|
- public static final int SCHEDULE_TYPE_MORNINGCALL = 5001;
|
|
|
- public static final int SCHEDULE_TYPE_SCHEDULER = 5002;
|
|
|
- public static final int SCHEDULE_TYPE_SYSRESET = 5003;
|
|
|
- public static final int SCHEDULE_TYPE_NONE = 5004;
|
|
|
-
|
|
|
- public boolean isSetted = false;
|
|
|
-
|
|
|
- List<TimeScheduleUnit> SchedulerData = new ArrayList<TimeScheduleUnit>();
|
|
|
- List<TimeScheduleUnit> GeneralData = new ArrayList<TimeScheduleUnit>();
|
|
|
- public ScheduleManager() {
|
|
|
- }
|
|
|
-
|
|
|
- public class TimeScheduleUnit {
|
|
|
- int type;
|
|
|
- Calendar TimeSet;
|
|
|
- String message;
|
|
|
- TimeScheduleUnit(int sctype, Calendar target) {
|
|
|
- type = sctype;
|
|
|
- TimeSet = target;
|
|
|
- }
|
|
|
-
|
|
|
- TimeScheduleUnit(int sctype, Calendar target, String msg) {
|
|
|
- Log.i("MAINSCREEN","TimeScheduleUnit Create "+sctype+" : MSG : "+msg);
|
|
|
- type = sctype;
|
|
|
- TimeSet = target;
|
|
|
- message = msg;
|
|
|
- }
|
|
|
-
|
|
|
- public boolean isOver() {
|
|
|
- Calendar cal_now = new GregorianCalendar();
|
|
|
- if (cal_now.after(TimeSet)) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void CheckSysResetData() {
|
|
|
- try {
|
|
|
- Calendar today = new GregorianCalendar();
|
|
|
- Log.i("MAINSCREEN","CheckSysResetData Schedule");
|
|
|
- WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
- String[] ResetData = WsDB.GetResetSchedule();
|
|
|
- if (!ResetData[0].equals("NONE")) {
|
|
|
- int type = Integer.parseInt(ResetData[0]);
|
|
|
- Log.i("MAINSCREEN","CheckSysResetData Schedule check typr : "+type + " Week : "+today.get(Calendar.DAY_OF_WEEK)+" Set Week : "+ResetData[1]);
|
|
|
- if ((type == WallpadStatusData.RESET_MONTH && today.get(Calendar.DAY_OF_MONTH)+1 == Integer.parseInt(ResetData[1])) ||
|
|
|
- (type == WallpadStatusData.RESET_WEEK && today.get(Calendar.DAY_OF_WEEK) == (Integer.parseInt(ResetData[1]))+1) )
|
|
|
- {
|
|
|
- if (today.get(Calendar.HOUR_OF_DAY) == Integer.parseInt(ResetData[2]) && today.get(Calendar.MINUTE) < 2) {
|
|
|
- SendAppFinishReqBR();
|
|
|
- ComponentName cn = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
- Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
|
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- intent.putExtra("updatesystem", "no");
|
|
|
- intent.putExtra("updateapp", " no ");
|
|
|
- intent.putExtra("rebootcmd", "reboot");
|
|
|
- intent.setComponent(cn);
|
|
|
- startActivity(intent);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- WsDB.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] CheckSysResetData()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean checkMorningCall() {
|
|
|
- try {
|
|
|
- WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
- int AlarmStatus = WsDB.GetAlarmStatus();
|
|
|
-
|
|
|
- if (AlarmStatus != WallpadStatusData.ALARM_NONE && AlarmStatus != WallpadStatusData.GUARD_IN && AlarmStatus != WallpadStatusData.ALARM_STOP) {
|
|
|
- WsDB.closeDB();
|
|
|
- return false;
|
|
|
- }
|
|
|
- Calendar today = new GregorianCalendar();
|
|
|
-
|
|
|
- int MCStatus = WsDB.GetMorningCallStatus();
|
|
|
- Log.i(TAG,"[checkMorningCall] GetMorningCallStatus : "+MCStatus);
|
|
|
- if (MCStatus==WallpadStatusData.MORNINGCALL_ON) {
|
|
|
- int MCPer = WsDB.GetMorningCallPeriod();
|
|
|
- Log.i(TAG,"[checkMorningCall] GetMorningCallPeriod : "+MCPer);
|
|
|
- int TodatofWeek = today.get(Calendar.DAY_OF_WEEK);
|
|
|
- if ((MCPer == WallpadStatusData.MORNINGCALL_EWORKDAY && TodatofWeek != Calendar.SUNDAY) ||
|
|
|
- (MCPer == WallpadStatusData.MORNINGCALL_WORKDAY && TodatofWeek!=Calendar.SUNDAY && TodatofWeek != Calendar.SATURDAY) ||
|
|
|
- (MCPer == WallpadStatusData.MORNINGCALL_ONCE || MCPer == WallpadStatusData.MORNINGCALL_EVERYDAY )) {
|
|
|
-
|
|
|
- Log.i(TAG,"[checkMorningCall] "+today.get(Calendar.HOUR_OF_DAY)+";"+WsDB.MorningHour + " -- " +today.get(Calendar.MINUTE)+":"+WsDB.MorningMin);
|
|
|
-
|
|
|
- if (today.get(Calendar.HOUR_OF_DAY) == WsDB.MorningHour && today.get(Calendar.MINUTE) == WsDB.MorningMin) {
|
|
|
- SendAppFinishReqBR();
|
|
|
-
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
-
|
|
|
- StartPopup(ID.POPUPS.POPUP_MORNINGCALL);
|
|
|
-
|
|
|
- int[] MC_Doing = WsDB.GetMorningCallReserve();
|
|
|
- if (MC_Doing != null && MC_Doing.length > 0) {
|
|
|
- for (int k=0;k<MC_Doing.length;k++) {
|
|
|
- switch (MC_Doing[k]) {
|
|
|
- case WallpadStatusData.MCALLR_VENTIL_ON:
|
|
|
- mWallPadAPI.DeviceBatchControl(WallPadAPI.DEV_BATCH_CTRL__TYPE.VENTI, true);
|
|
|
- break;
|
|
|
-
|
|
|
- case WallpadStatusData.MCALLR_LIGHT_ON:
|
|
|
- //에너지 미터인 경우 안방 조명을 켜도록 하고
|
|
|
- //에너지 미터가 안 달린 경우 거실 조명을 켜도록 한다
|
|
|
- if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
- || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
- // 안방조명에 1번 조명만 제어하도록 한다
|
|
|
- // 모닝콜이 울리면 일괄소등시나리오에 의해 일괄소등이 해제가 되겠네 ? 음.....이건 아닌데
|
|
|
- // 모닝콜이 울리는 동안만 켜고 끄자 일괄소등 시나리오를 해제할까나? 그러면 팝업 화면에서 제어처리를?
|
|
|
- Log.d(TAG, "[checkMorningCall] mSdbAPI Room 1 - Lamp 1 On");
|
|
|
- if (mSdbAPI != null) {
|
|
|
- int nResult = mSdbAPI.SetLightOnOff((byte) 0x00, (byte) 0x00, true);
|
|
|
- Log.d(TAG, "[checkMorningCall] mSdbAPI nResult = " + nResult);
|
|
|
- }
|
|
|
- }
|
|
|
- else if (Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I) {
|
|
|
- Log.d(TAG, "[checkMorningCall] mIntLightAPI Living Room - Lamp 1 On");
|
|
|
- if (mIntLightAPI != null) {
|
|
|
- int nResult = mIntLightAPI.LightControl((byte) 0x01, true);
|
|
|
- Log.d(TAG, "[checkMorningCall] mIntLightAPI nResult = " + nResult);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- // 대외향 구분하여 처리
|
|
|
- WallpadDeviceSet devDB = new WallpadDeviceSet( getApplicationContext() );
|
|
|
- int[] retArray = devDB.Get_Light_info();
|
|
|
- devDB.closeDB();
|
|
|
- if (retArray!= null && retArray[0] == 1) {
|
|
|
- if (retArray[1] == WallpadDeviceSet.LIGHT_TYPE_LIVING) {
|
|
|
- // 거실 스위치
|
|
|
- if (m_LightCtrl != null) {
|
|
|
- m_LightCtrl.Refresh(false);
|
|
|
- m_LightCtrl.SetLightOnOff((byte)0x01, true);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- // 멀티 스위치
|
|
|
- if (m_MultiSwitch != null) {
|
|
|
- m_MultiSwitch.Refresh((byte)0x00, false);
|
|
|
- if (m_MultiSwitch.data.DeviceCnt > 1) {
|
|
|
- m_MultiSwitch.SetLightOnOff((byte)0x01 ,(byte)0x00 , true);
|
|
|
- }
|
|
|
- else if(m_MultiSwitch.data.DeviceCnt == 1) {
|
|
|
- m_MultiSwitch.SetLightOnOff((byte)0x00 ,(byte)0x00 , true);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case WallpadStatusData.MCALLR_CURTAIN_OPEN: //fill lather
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (MCPer == WallpadStatusData.MORNINGCALL_ONCE) {
|
|
|
- // Button morning = (Button)findViewById(R.id.top_alarm);
|
|
|
- // morning.setVisibility(View.INVISIBLE);
|
|
|
- WsDB.SetMorningCall(WallpadStatusData.MORNINGCALL_OFF, WsDB.MorningHour, WsDB.MorningMin);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- WsDB.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- private void scheduleCheck()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Log.d("scheduleCheck", "++++++++++++++++++++++++++++++++++++++++");
|
|
|
- Log.d("scheduleCheck", "Enter scheduleCheck "+GeneralData.size()+" : "+SchedulerData.size());
|
|
|
- checkMorningCall();
|
|
|
- if (GeneralData.size() > 0)
|
|
|
- {
|
|
|
- for (int i = 0;i < GeneralData.size(); i++)
|
|
|
- {
|
|
|
- TimeScheduleUnit scUnit = GeneralData.get(i);
|
|
|
-
|
|
|
-
|
|
|
- if (scUnit.isOver())
|
|
|
- {
|
|
|
- switch (scUnit.type)
|
|
|
- {
|
|
|
- case SCHEDULE_TYPE_SYSRESET:
|
|
|
- GeneralData.remove(scUnit);
|
|
|
- Log.d("scheduleCheck", "++++++++++++++++++++++++++++++++++++++++ SCHEDULE_TYPE_SYSRESET");
|
|
|
- SendAppFinishReqBR();
|
|
|
- ComponentName cn = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
- Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
|
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- intent.putExtra("updatesystem", "no");
|
|
|
- intent.putExtra("updateapp", "no");
|
|
|
- intent.putExtra("rebootcmd", "reboot");
|
|
|
- intent.setComponent(cn);
|
|
|
- startActivity(intent);
|
|
|
- break;
|
|
|
- case SCHEDULE_TYPE_GETINFO:
|
|
|
- GeneralData.remove(scUnit);
|
|
|
- Log.d("scheduleCheck", "++++++++++++++++++++++++++++++++++++++++ SCHEDULE_TYPE_GETINFO");
|
|
|
- WallPadiMAPNotifyAPI notifyAPI = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
- notifyAPI.ReqGetSet();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Log.d("scheduleCheck", "after scheduleCheck "+GeneralData.size() );
|
|
|
- }
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public void doSchedule(String mess, int cnt)
|
|
|
- {
|
|
|
-// SendAppFinishReqBR();
|
|
|
-// Intent intent = new Intent(getApplicationContext(), schedulepopup.class);
|
|
|
-// String SendMSG = mess;
|
|
|
-// if (cnt > 1) SendMSG+=(" 외 "+cnt+"건을 알려드립니다.");
|
|
|
-// intent.putExtra("MESSAGE", SendMSG);
|
|
|
-// Log.i("MAINSCREEN","Call Schedule POPUP");
|
|
|
-// startActivity(intent);
|
|
|
- }
|
|
|
-
|
|
|
- public void refreshSchedulerData()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- SchedulerData.clear();
|
|
|
- WallpadScheduleData schedata = new WallpadScheduleData(getApplicationContext());
|
|
|
- List<WallpadScheduleData.ScheduleData> scheduledata = schedata.GetTodaySchedule();
|
|
|
- Log.i("MAINSCREEN","refreshSchedulerData "+scheduledata.size());
|
|
|
- for(int i=0;i<scheduledata.size();i++)
|
|
|
- {
|
|
|
- WallpadScheduleData.ScheduleData ScUnit = scheduledata.get(i);
|
|
|
- int hour;
|
|
|
- int min;
|
|
|
- Log.i("MAINSCREEN","refreshSchedulerData "+ScUnit.inqatype+" : "+ScUnit.inqhour+" : ");
|
|
|
- if (ScUnit.inqatype.equals("no")) continue;
|
|
|
- else if (ScUnit.inqatype.equals("intime")||ScUnit.inqatype.equals("day"))
|
|
|
- {
|
|
|
- hour = ScUnit.inqhour;
|
|
|
- min = 0;
|
|
|
- }
|
|
|
- else if (ScUnit.inqatype.equals("hour"))
|
|
|
- {
|
|
|
- hour = ScUnit.inqhour-1;
|
|
|
- if (hour < 0) continue;
|
|
|
- min = 0;
|
|
|
- }
|
|
|
- else if (ScUnit.inqatype.equals("min"))
|
|
|
- {
|
|
|
- hour = ScUnit.inqhour-1;
|
|
|
- if (hour < 0) continue;
|
|
|
- min = 50;
|
|
|
- }
|
|
|
- else
|
|
|
- continue;
|
|
|
- Calendar today = new GregorianCalendar();
|
|
|
- int MoonM;
|
|
|
- int MoonD;
|
|
|
- try
|
|
|
- {
|
|
|
- String Moon = schedata.GetLunarDate(String.format("%04d%02d%02d", today.get(Calendar.YEAR),today.get(Calendar.MONTH)+1,today.get(Calendar.DAY_OF_MONTH) ));
|
|
|
- MoonM = Integer.parseInt(Moon.substring(4, 6));
|
|
|
- MoonD = Integer.parseInt(Moon.substring(6, 8));
|
|
|
- Log.i("MAINSCREEN", " Get Lunar Date "+Moon+" : "+MoonM+"/"+MoonD);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- MoonM = 0;
|
|
|
- MoonD = 0;
|
|
|
- }
|
|
|
- today.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
- today.set(Calendar.MINUTE, min);
|
|
|
-
|
|
|
-
|
|
|
- String Mesg = String.format("%04d년 %02d월 %02d일 (음 %02d/%02d)\n",today.get(Calendar.YEAR),today.get(Calendar.MONTH)+1,today.get(Calendar.DAY_OF_MONTH), MoonM, MoonD)+ScUnit.inqmsg;
|
|
|
- Log.i("MAINSCREEN","refreshSchedulerData add "+ScUnit.inqatype+" : "+ScUnit.inqhour+" : "+Mesg);
|
|
|
- TimeScheduleUnit newUnit = new TimeScheduleUnit(SCHEDULE_TYPE_SCHEDULER, today, Mesg);
|
|
|
- isSetted = true;
|
|
|
- SchedulerData.add(newUnit);
|
|
|
- }
|
|
|
- schedata.closeDB();
|
|
|
-
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void refreshMorningCall()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- for (int i = 0; i < GeneralData.size(); i++)
|
|
|
- {
|
|
|
- TimeScheduleUnit scUnit = SchedulerData.get(i);
|
|
|
- if (scUnit.type == SCHEDULE_TYPE_MORNINGCALL)
|
|
|
- {
|
|
|
- SchedulerData.remove(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- SetMorningCallData();
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- private void SetMorningCallData()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Log.i("MAINSCREEN","SetMorningCallData Schedule");
|
|
|
- Calendar today = new GregorianCalendar();
|
|
|
- WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
- int MCStatus = WsDB.GetMorningCallStatus();
|
|
|
- if (MCStatus==WallpadStatusData.MORNINGCALL_ON)
|
|
|
- {
|
|
|
- int MCPer = WsDB.GetMorningCallPeriod();
|
|
|
- int TodatofWeek = today.get(Calendar.DAY_OF_WEEK);
|
|
|
- if ((MCPer == WallpadStatusData.MORNINGCALL_EWORKDAY && TodatofWeek != Calendar.SUNDAY) &&
|
|
|
- (MCPer == WallpadStatusData.MORNINGCALL_WORKDAY && TodatofWeek!=Calendar.SUNDAY && TodatofWeek != Calendar.SATURDAY) &&
|
|
|
- (MCPer == WallpadStatusData.MORNINGCALL_ONCE || MCPer == WallpadStatusData.MORNINGCALL_EVERYDAY ))
|
|
|
- {
|
|
|
- today.set(Calendar.HOUR_OF_DAY, WsDB.MorningHour);
|
|
|
- today.set(Calendar.MINUTE, WsDB.MorningMin);
|
|
|
- today.set(Calendar.SECOND, 0);
|
|
|
- TimeScheduleUnit scUnit = new TimeScheduleUnit(SCHEDULE_TYPE_MORNINGCALL, today);
|
|
|
- if (!scUnit.isOver())
|
|
|
- {
|
|
|
- isSetted = true;
|
|
|
- // Button morning = (Button)findViewById(R.id.top_alarm);
|
|
|
- // morning.setVisibility(View.VISIBLE);
|
|
|
- GeneralData.add(scUnit);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Button morning = (Button)findViewById(R.id.top_alarm);
|
|
|
- // morning.setVisibility(View.INVISIBLE);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- WsDB.closeDB();
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void refreshsysreset()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Log.i("MAINSCREEN","refreshsysreset Schedule");
|
|
|
- for (int i = 0; i < GeneralData.size(); i++)
|
|
|
- {
|
|
|
- TimeScheduleUnit scUnit = SchedulerData.get(i);
|
|
|
- if (scUnit.type == SCHEDULE_TYPE_SYSRESET)
|
|
|
- {
|
|
|
- SchedulerData.remove(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- SetSysResetData();
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void SetSysResetData()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Calendar today = new GregorianCalendar();
|
|
|
- Log.i("MAINSCREEN","SetSysResetData Schedule");
|
|
|
- WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
- String[] ResetData = WsDB.GetResetSchedule();
|
|
|
- if (!ResetData[0].equals("NONE"))
|
|
|
- {
|
|
|
-
|
|
|
- int type = Integer.parseInt(ResetData[0]);
|
|
|
- if ((type == WallpadStatusData.RESET_MONTH && today.get(Calendar.DAY_OF_MONTH) == Integer.parseInt(ResetData[1])) ||
|
|
|
- (type == WallpadStatusData.RESET_WEEK && today.get(Calendar.DAY_OF_WEEK) == Integer.parseInt(ResetData[1])) )
|
|
|
- {
|
|
|
- Log.i("MAINSCREEN","SetSysResetData Setted");
|
|
|
- today.set(Calendar.HOUR_OF_DAY, Integer.parseInt(ResetData[2]));
|
|
|
- today.set(Calendar.MINUTE, 0);
|
|
|
- today.set(Calendar.SECOND, 0);
|
|
|
- TimeScheduleUnit scUnit = new TimeScheduleUnit(SCHEDULE_TYPE_SYSRESET, today);
|
|
|
- if (!scUnit.isOver())
|
|
|
- {
|
|
|
- isSetted = true;
|
|
|
- GeneralData.add(scUnit);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- WsDB.closeDB();
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- public void refreshSchedule()
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Log.i("MAINSCREEN","Refresh Schedule");
|
|
|
- GeneralData.clear();
|
|
|
- Calendar today = new GregorianCalendar();
|
|
|
- // 하루에 한번 가져오는 걸로 변경함
|
|
|
- //if (today.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY)
|
|
|
- {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- AddressSet addc = SetData.getAddressMGR();
|
|
|
- SetData.closeDB();
|
|
|
- int dong = Integer.parseInt(addc.Dong);
|
|
|
-
|
|
|
- int ho = 101;
|
|
|
- if(addc.UseOrNotRentHouse == true)
|
|
|
- {
|
|
|
- ho = addc.Ho_Integer;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ho = Integer.parseInt(addc.Ho);
|
|
|
- }
|
|
|
-
|
|
|
- int interval = (dong-(dong/100)*100) * 100 + ho/100;
|
|
|
- int hour;
|
|
|
- int min;
|
|
|
- int sec;
|
|
|
- if (interval/3600 > 0)
|
|
|
- {
|
|
|
- hour = 3+interval/3600;
|
|
|
- interval=interval%3600;
|
|
|
- }
|
|
|
- else hour = 3;
|
|
|
-
|
|
|
- if (interval/60 > 0)
|
|
|
- {
|
|
|
- min = interval/60;
|
|
|
- sec = interval%60;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- min = 0;
|
|
|
- sec = interval;
|
|
|
- }
|
|
|
- today.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
- today.set(Calendar.MINUTE, min);
|
|
|
- today.set(Calendar.SECOND, sec);
|
|
|
- TimeScheduleUnit scUnit = new TimeScheduleUnit(SCHEDULE_TYPE_GETINFO, today);
|
|
|
- if (!scUnit.isOver())
|
|
|
- GeneralData.add(scUnit);
|
|
|
- }
|
|
|
-
|
|
|
- SetMorningCallData();
|
|
|
- SetSysResetData();
|
|
|
- refreshSchedulerData();
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- class runCallServices extends Thread {
|
|
|
- public runCallServices() {
|
|
|
- super();
|
|
|
- }
|
|
|
-
|
|
|
- public void run() {
|
|
|
- try {
|
|
|
- if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
- if (getIsSubWallpad()) {
|
|
|
- Log.w(TAG, "[runCallServices.run()] ############### This wallpad is set as a sub-wallpad ###############");
|
|
|
- Intent SubWallpadServiceLauncher = new Intent ("kr.co.icontrols.callengine.subwallpad.SubWallPadSerialManager.StartService");
|
|
|
- getApplicationContext().startService(SubWallpadServiceLauncher);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runCallServices.run()] ############### This wallpad is set as a main-wallpad ###############");
|
|
|
- // SIP/Subphone 서비스 실행
|
|
|
- Intent SIPServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.SIPStun.StartService");
|
|
|
- getApplicationContext().startService(SIPServiceLauncher);
|
|
|
-
|
|
|
- Intent SubPhoneServiceLauncher = new Intent ("kr.co.icontrols.callengine.subphone.SubPhoneSerialManager.StartService");
|
|
|
- getApplicationContext().startService(SubPhoneServiceLauncher);
|
|
|
-
|
|
|
- if (GetRemoteCallUseInfo()) {
|
|
|
- Intent remoteCallServiceLauncher = new Intent ("kr.co.icontrols.callengine.remotecall.RemoteCallManager.StartService");
|
|
|
- getApplicationContext().startService(remoteCallServiceLauncher);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- int nModelType = Version.getModelType();
|
|
|
- if (nModelType == MODEL_TYPE.IHN_750) {
|
|
|
- // SIP 서비스만 실행
|
|
|
- Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.SIPStun.StartService");
|
|
|
- getApplicationContext().startService(sipServiceLauncher);
|
|
|
- }
|
|
|
- else {
|
|
|
- // SIP/PSTN/Subphone 서비스 실행
|
|
|
- Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.SIPStun.StartService");
|
|
|
- getApplicationContext().startService(sipServiceLauncher);
|
|
|
-
|
|
|
- Intent PSTNServiceLauncher = new Intent ("kr.co.icontrols.callengine.pstn.PSTNSerialManager.StartService");
|
|
|
- getApplicationContext().startService(PSTNServiceLauncher);
|
|
|
-
|
|
|
- Intent SubPhoneServiceLauncher = new Intent ("kr.co.icontrols.callengine.subphone.SubPhoneSerialManager.StartService");
|
|
|
- getApplicationContext().startService(SubPhoneServiceLauncher);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch(Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runCallServices().run()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 방문객원격통화 솔루션 사용여부 판별
|
|
|
- private boolean GetRemoteCallUseInfo() {
|
|
|
- try {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
|
|
|
- if (mWallpadDeviceSet != null) {
|
|
|
- String[] astrRemoteCall = mWallpadDeviceSet.GetSettingData("방문객원격통화");
|
|
|
- if (astrRemoteCall != null) {
|
|
|
- if (astrRemoteCall[1].contains("사용함"))
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- Log.d(TAG, "[GetRemoteCallUseInfo] astrRemoteCall is null!!");
|
|
|
- }
|
|
|
- }
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] GetRemoteCallUseInfo()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- int UNINSTALL_REQUEST_CODE = 1;
|
|
|
- private void uninstallAnCCallApp(String strAPK) {
|
|
|
- try {
|
|
|
- Log.w(TAG, "[uninstallAnCCallApp] strAPK [" + strAPK + "]");
|
|
|
- if (checkAppInstalled(strAPK)) {
|
|
|
-// Intent mIntent = new Intent(Intent.ACTION_DELETE);
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
|
|
|
- mIntent.setData(Uri.parse("package:" + strAPK));
|
|
|
- mIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
|
|
|
- startActivityForResult(mIntent, UNINSTALL_REQUEST_CODE);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[uninstallAnCCallApp] Not installed [" + strAPK + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {;
|
|
|
- Log.e(TAG, "[Exception] uninstallAnCCallApp()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean checkAppInstalled(String strAPK) {
|
|
|
- try {
|
|
|
- PackageManager mPackageManager = getPackageManager();
|
|
|
- try {
|
|
|
- mPackageManager.getPackageInfo(strAPK, PackageManager.GET_ACTIVITIES);
|
|
|
- return true;
|
|
|
- } catch (PackageManager.NameNotFoundException pne) {
|
|
|
- Log.w(TAG, "[checkAppInstalled] No Package [" + strAPK + "]");
|
|
|
- }
|
|
|
- return false;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkAppInstalled(String strAPK)");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean MainSubScreenLoadingComplite = false;
|
|
|
- public boolean getMainSubScreenLoadingComplite() {
|
|
|
- return MainSubScreenLoadingComplite;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 설치된 모든 어플의 이름/버전정보 Version DB에 저장하는 쓰레드. <br>
|
|
|
- * main Activity 생성 시 최초 1회 실행 후 die
|
|
|
- */
|
|
|
- class getInstalledPackageInfo extends Thread {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- super.run();
|
|
|
- try {
|
|
|
- Log.d(TAG, "[getInstalledPackageInfo] Started getting installed package infomation");
|
|
|
- ArrayList<PackageVersionInfo> PackageVersionInfos = new ArrayList<PackageVersionInfo>();
|
|
|
- List<PackageInfo> PackageInfoList = getPackageManager().getInstalledPackages(PackageManager.PERMISSION_GRANTED);
|
|
|
-
|
|
|
- while (true) {
|
|
|
- Log.d(TAG, "[getInstalledPackageInfo.run()] Get installed packages start!!");
|
|
|
- try {
|
|
|
- for (PackageInfo pack : PackageInfoList) {
|
|
|
- Log.d(TAG, "# PackageName : " + pack.packageName);
|
|
|
- Log.d(TAG, "# VersionName : " + pack.versionName);
|
|
|
- if ((pack.packageName.contains("icontrols")) || (pack.packageName.contains("artncore")) || (pack.packageName.contains("dadam"))) {
|
|
|
- PackageVersionInfos.add(new PackageVersionInfo(pack.packageName, pack.versionName));
|
|
|
- }
|
|
|
- }
|
|
|
- } catch(Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- break;
|
|
|
- }
|
|
|
- Log.d(TAG, "[getInstalledPackageInfo.run()] Get installed packages end!!");
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- Log.d(TAG, "[getInstalledPackageInfo.run()] Save installed packages start!!");
|
|
|
- wallpaddbmgr WallpadDBMGR = new wallpaddbmgr(getApplicationContext());
|
|
|
- if (PackageVersionInfos != null) {
|
|
|
- for (int i = 0; i < PackageVersionInfos.size(); i++) {
|
|
|
- WallpadDBMGR.UpdateVersionData(PackageVersionInfos.get(i).getPackageName(), PackageVersionInfos.get(i).getPackageVersion());
|
|
|
- }
|
|
|
- }
|
|
|
- WallpadDBMGR.closeDB();
|
|
|
- Log.d(TAG, "[getInstalledPackageInfo.run()] Save installed packages end!!");
|
|
|
-
|
|
|
- try {
|
|
|
- Thread.sleep(1500);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) {
|
|
|
- try {
|
|
|
- Thread.sleep(1000);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- runOnUiThread(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- registerSubScreen();
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- WallpadScheduleData schedb = new WallpadScheduleData(getApplicationContext());
|
|
|
- boolean bLunarTableExist = schedb.CheckLunarTable();
|
|
|
- schedb.closeDB();
|
|
|
-
|
|
|
- if (!bLunarTableExist) {
|
|
|
- try {
|
|
|
- Log.d(TAG, "DB File Copy Start");
|
|
|
- copyDataBase(wallpaddbmgr.dblocation + "/" + wallpaddbmgr.Schedule_LunaDB);
|
|
|
- Log.d(TAG, "DB File Copy End");
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
-// if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) checkDongHoSetting();
|
|
|
- checkDongHoSetting();
|
|
|
-
|
|
|
- if (Common.GetElevatorSampleMode(getApplicationContext())) {
|
|
|
- int retCount = EnergyAlramPopupMgr.get_WallPadRebootingCount( getApplicationContext()) + 1;
|
|
|
- EnergyAlramPopupMgr.set_WallPadRebootingCount(getApplicationContext(), retCount);
|
|
|
- Log.d(TAG, "################################# rebooting Count : " + retCount );
|
|
|
- }
|
|
|
-
|
|
|
- // 하드웨어 키 샘플 모드 동작 여부 설정
|
|
|
- WallpadSalesSampleData sdata = new WallpadSalesSampleData(getApplicationContext());
|
|
|
- int salsesampleHWBtn = sdata.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION);
|
|
|
- sdata.closeDB();
|
|
|
-
|
|
|
- WallPadInterface wpdifc = new WallPadInterface();
|
|
|
- if (salsesampleHWBtn == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED)
|
|
|
- wpdifc.DoControl(WallPadInterface.IOCTL_KEY_ONOFF_SET, 0);
|
|
|
-
|
|
|
- CheckEnv();
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}
|
|
|
- MainSubScreenLoadingComplite = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public static String DB_WALLPAD_WIDGET_INIT = "DB_WALLPAD_WIDGET_INIT";
|
|
|
-
|
|
|
- public void set_WallPadWidgetInit(Context context) {
|
|
|
- try {
|
|
|
- wallpaddbmgr mgr = new wallpaddbmgr(context);
|
|
|
- boolean bRet = mgr.UpdateWallPADData(DB_WALLPAD_WIDGET_INIT, String.valueOf(1));
|
|
|
- if (bRet == false ) {
|
|
|
- Log.d(TAG, "----- DB_WALLPAD_WIDGET_INIT insert ==> false ");
|
|
|
- mgr.insertWallPADDB(DB_WALLPAD_WIDGET_INIT, "1");
|
|
|
- }
|
|
|
- mgr.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public int get_WallPadWidgetInit(Context context) {
|
|
|
- int ret = 0;
|
|
|
- try {
|
|
|
- wallpaddbmgr mgr = new wallpaddbmgr(context);
|
|
|
- String strRet = mgr.GetWallPADData(DB_WALLPAD_WIDGET_INIT);
|
|
|
- if (strRet == null) {
|
|
|
- Log.d(TAG, "----- get_WallPadRebootingCount strRet == null && insert ==> false ");
|
|
|
- mgr.insertWallPADDB(DB_WALLPAD_WIDGET_INIT, "0");
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- ret = Integer.parseInt(strRet);
|
|
|
- mgr.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 스케줄 관련 처리 핸들러 추가
|
|
|
- * 모닝콜, 일정관리, 엘리베이터 호출상태, 에너지 사용량 확인
|
|
|
- * 현재는 사용하지 않음. checkTimeTasks()로 대체
|
|
|
- */
|
|
|
- private int nDay, nHour, nMin;
|
|
|
- Handler Checker = new Handler() {
|
|
|
-
|
|
|
- public void handleMessage(Message msg) {
|
|
|
- super.handleMessage(msg);
|
|
|
- Calendar cal = new GregorianCalendar();
|
|
|
- if (cal.get(Calendar.DAY_OF_MONTH) != nDay) {
|
|
|
- // 날짜가 바뀌었을때...
|
|
|
- nDay = cal.get(Calendar.DAY_OF_MONTH);
|
|
|
-
|
|
|
- Log.d(TAG , "-----------------day change repeat");
|
|
|
- if (SCManager != null) {
|
|
|
- if (SYSTEM_TIME_SET)SCManager.refreshSchedule();
|
|
|
- }
|
|
|
- //
|
|
|
-// Intent intent = new Intent();
|
|
|
-// intent.setAction(define.NOTIFY_ACNAME);
|
|
|
-// intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_DAYCHANGED);
|
|
|
-// getApplicationContext().sendBroadcast(intent);
|
|
|
-
|
|
|
- //에너지사용량 알림 초기화
|
|
|
- ClearEnergyUsage();
|
|
|
-
|
|
|
- Log.d(TAG , "cal.get(Calendar.YEAR) :" + cal.get(Calendar.YEAR) );
|
|
|
-
|
|
|
- if ((bUseofNot_ZeroEnergyHouseInfo == true) && (cal.get(Calendar.YEAR) > 2016) && (SYSTEM_TIME_SET == true)) {
|
|
|
- //어제 시간 재입력
|
|
|
- Log.d(TAG , "/**********************************************/");
|
|
|
- Log.d(TAG , "GetZeroEnergyHouseInfo_RandomCheckHandler(true);");
|
|
|
- Log.d(TAG , "/**********************************************/");
|
|
|
-
|
|
|
- DayofLastSecond = StringUtil.GetDayofLastSecondTimeString(cal); //하루전 날짜의 마지막 시간 입력
|
|
|
- Log.d(TAG , "DayofLastSecond : "+ DayofLastSecond);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (cal.get(Calendar.HOUR_OF_DAY) != nHour) {
|
|
|
- nHour = cal.get(Calendar.HOUR_OF_DAY);
|
|
|
- DoScheduleHourUnit(cal);
|
|
|
- }
|
|
|
-
|
|
|
- if (cal.get(Calendar.MINUTE) != nMin) {
|
|
|
- nMin = cal.get(Calendar.MINUTE);
|
|
|
-
|
|
|
- /**
|
|
|
- * A20월패드 BSP는 전자액자 실행을 시키지 않기때문에 main app에서 전자액자 실행 여부 확인하여
|
|
|
- * 실행시킴
|
|
|
- * **/
|
|
|
- if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
|
|
|
- Log.i(TAG, "[Checker handler] ========== JEFF 1 ========== m_LiveMainActivity : " + m_LiveMainActivity);
|
|
|
- if (m_LiveMainActivity > 0) {
|
|
|
- String LCD_Sleep_Status = null;
|
|
|
-
|
|
|
- Runtime runtime = Runtime.getRuntime();
|
|
|
- Process process;
|
|
|
-
|
|
|
- try {
|
|
|
- String cmd = "getprop persist.sys.display.lcdoff";
|
|
|
- process = runtime.exec(cmd);
|
|
|
- BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
|
|
- String line;
|
|
|
- while ((line = br.readLine()) != null) {
|
|
|
- LCD_Sleep_Status = line;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.fillInStackTrace();
|
|
|
- Log.e("Process Manager", "Unable to execute top command");
|
|
|
- }
|
|
|
-
|
|
|
- if (LCD_Sleep_Status != null) {
|
|
|
- Log.d(TAG, "The LCD_Sleep_Status : " + LCD_Sleep_Status);
|
|
|
- if (LCD_Sleep_Status.equals("1") == true) {
|
|
|
- // LCD 꺼져있음
|
|
|
- WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
-
|
|
|
- if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar())) {
|
|
|
- if (SettData.StartAutoPictureAPP() == true) {
|
|
|
- Log.d(TAG, "StartAutoPictureAPP is true");
|
|
|
-// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
-// pm.userActivity(2, true);
|
|
|
- // LCD backlight normal
|
|
|
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- Log.d(TAG, "PowerManager will be set");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "StartAutoPictureAPP is false");
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "DecideAutoPictureAppStartOrNot is false");
|
|
|
- }
|
|
|
- SettData.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.e(TAG, "The LCD_Sleep_Status is null");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
- Log.i(TAG, "[Checker handler] ========== JEFF 2 ========== m_LiveMainActivity : " + m_LiveMainActivity);
|
|
|
- if (m_LiveMainActivity > 0) {
|
|
|
- boolean bisScreenOn = false;
|
|
|
- if (Version.getModelType() == MODEL_TYPE.IHN_1020B_I) {
|
|
|
- bisScreenOn = checkLCDOnByCMD();
|
|
|
- }
|
|
|
- else {
|
|
|
- PowerManager mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
|
|
|
- bisScreenOn = mPowerManager.isScreenOn();
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[Checker handler] bisScreenOn : " + bisScreenOn);
|
|
|
-
|
|
|
- if (!bisScreenOn) {
|
|
|
- if (getBlackoutStatus()) {
|
|
|
- Log.i(TAG, "[Checker handler] getBlackoutStatus is true!!!");
|
|
|
- sendBlackoutScreenRunBR();
|
|
|
- }
|
|
|
- else {
|
|
|
- WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
-
|
|
|
- if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar())) {
|
|
|
- if (SettData.StartAutoPictureAPP() == true) {
|
|
|
- Log.d(TAG, "StartAutoPictureAPP is true");
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- Log.d(TAG, "PowerManager will be set");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "StartAutoPictureAPP is false");
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "DecideAutoPictureAppStartOrNot is false");
|
|
|
- }
|
|
|
- SettData.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if ((nMin == 50) || (nMin == 0)) {
|
|
|
- try {
|
|
|
- checkScheduleReminder();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- // 스케줄 일정 알람 팝업을 띄우도록 한다.
|
|
|
-
|
|
|
-// Intent intent = new Intent(getApplicationContext(), schedulepopup.class);
|
|
|
-// String SendMSG = doSchedule.get(0).inqmsg;
|
|
|
-// if (doSchedule.size() > 1) SendMSG+=(" 외 "+doSchedule.size()+"건을 알려드립니다.");
|
|
|
-// intent.putExtra("MESSAGE", SendMSG);
|
|
|
-//
|
|
|
-// startActivity(intent);
|
|
|
- }
|
|
|
-
|
|
|
- if (SCManager != null) SCManager.scheduleCheck();
|
|
|
- //CheckElevator();
|
|
|
-
|
|
|
- if (MAX_BOOTUP_RETRY_COUNT < bootupretryCNT && SYSTEM_TIME_SET == false) {
|
|
|
- try {
|
|
|
- WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
- iMAPMethod.ReqGetSet();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 중복.... 이게 왜 있는겨....
|
|
|
-// if ( cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY && SYSTEM_TIME_SET && cal.get(Calendar.DAY_OF_MONTH)!=LastTimeSync)
|
|
|
-// {
|
|
|
-// Calendar checktime = GetTimeSyncTime();
|
|
|
-// if (checktime != null)
|
|
|
-// {
|
|
|
-// if (cal.after(checktime))
|
|
|
-// {
|
|
|
-// LastTimeSync = cal.get(Calendar.DAY_OF_MONTH);
|
|
|
-// WallpadStatusData wpd = new WallpadStatusData(getApplicationContext());
|
|
|
-// wpd.SetLastTimeSyncDate(LastTimeSync);
|
|
|
-// wpd.closeDB();
|
|
|
-// WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
-// iMAPMethod.ReqGetSet();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- //주차정보 관련 20분 마다 얻어오기
|
|
|
- if (bUseofNot_ParkingInfo == true) {
|
|
|
- cGetParkingMin++;
|
|
|
- //테스트
|
|
|
- /*
|
|
|
- bSetMSG_GetParkingInfo = true;
|
|
|
- LoadParkingDataFromServer();
|
|
|
- */
|
|
|
-
|
|
|
- if (cGetParkingMin >= 20) {
|
|
|
- // 20분으로 고정
|
|
|
- cGetParkingMin = 0;
|
|
|
-
|
|
|
- //아이콘트롤스 일때도 처리하지 않도록 수정필요
|
|
|
- //넥스파인 경우는 협의후 처리
|
|
|
- switch (nParkingSystemType) {
|
|
|
- case Common.PARKING_SYSTEM_ICONTROLS:
|
|
|
- case Common.PARKING_SYSTEM_NEXPA:
|
|
|
- case Common.PARKING_SYSTEM_UPIS:
|
|
|
- case Common.PARKING_SYSTEM_IES_100:
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.PARKING_SYSTEM_BASIC:
|
|
|
- case Common.PARKING_SYSTEM_ETC:
|
|
|
- GetParkingInfo_RandomCheckHandler(); //주차 정보 얻어오기
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 필요없는 코드 삭제 ( yskim 2015.03.31 )
|
|
|
-// String checkDate = String.format("%04d%02d%02d",cal.get(Calendar.YEAR),cal.get(Calendar.MONTH)+1,cal.get(Calendar.DAY_OF_MONTH));
|
|
|
-// WallpadStatusData energyData = new WallpadStatusData(getApplicationContext());
|
|
|
-// String EnergyCheckData = energyData.GetEnergyCheckDate();
|
|
|
-// energyData.closeDB();
|
|
|
-// if (SYSTEM_TIME_SET)
|
|
|
-// {
|
|
|
-// Calendar checktime = GetEnergyDataLoadingTime();
|
|
|
-// if (!checkDate.equals(EnergyCheckData))
|
|
|
-// {
|
|
|
-// if (checktime != null)
|
|
|
-// {
|
|
|
-//
|
|
|
-// if (cal.after(checktime))
|
|
|
-// {
|
|
|
-// WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
-// iMAPMethod.GetEnergyUsage();
|
|
|
-// WallPadiMAPNotifyAPI iMAPMethod2 = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
-// iMAPMethod2.GetEnergyUsageMonth();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
- }
|
|
|
-
|
|
|
-// checkMainPage();
|
|
|
-
|
|
|
- Checker.sendEmptyMessageDelayed(0, 1000);
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * JEFF, 2019.12.25
|
|
|
- * 매 1초마다 실행되면서 스케쥴 확인하여 각 기능을 동작시킨다 (시간업데이트, 전자액자 등)
|
|
|
- */
|
|
|
- Handler handlerEverySecond = new Handler() {
|
|
|
- public void handleMessage(Message msg) {
|
|
|
- super.handleMessage(msg);
|
|
|
- checkTimeTasks();
|
|
|
- handlerEverySecond.sendEmptyMessageDelayed(0, 1000);
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- private void checkTimeTasks() {
|
|
|
- try {
|
|
|
-// Log.d(TAG , "[checkTimeTasks] ===== START =====");
|
|
|
- Calendar cal = new GregorianCalendar();
|
|
|
- if (cal.get(Calendar.DAY_OF_MONTH) != nDay) {
|
|
|
- // 날짜 변경시
|
|
|
- Log.d(TAG , "[checkTimeTasks] day changed!!");
|
|
|
- nDay = cal.get(Calendar.DAY_OF_MONTH);
|
|
|
- if (SCManager != null) {
|
|
|
- if (SYSTEM_TIME_SET) SCManager.refreshSchedule();
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG , "[checkTimeTasks] SYSTEM_TIME_SET is null!!");
|
|
|
- }
|
|
|
-
|
|
|
- // 모바일연동 서비스로 원격검침 데이터를 전송
|
|
|
-// getTelemeteringDataOnRandomTime();
|
|
|
-// // 에너지사용량 알림 초기화
|
|
|
-// ClearEnergyUsage();
|
|
|
-
|
|
|
- Log.d(TAG , "[checkTimeTasks] Calendar.YEAR = " + cal.get(Calendar.YEAR) );
|
|
|
-
|
|
|
- if ((bUseofNot_ZeroEnergyHouseInfo == true) && (cal.get(Calendar.YEAR) > 2016) && (SYSTEM_TIME_SET == true)) {
|
|
|
- //어제 시간 재입력
|
|
|
- Log.i(TAG , "[checkTimeTasks] GetZeroEnergyHouseInfo_RandomCheckHandler(true);");
|
|
|
- DayofLastSecond = StringUtil.GetDayofLastSecondTimeString(cal); //하루전 날짜의 마지막 시간 입력
|
|
|
- Log.d(TAG , "[checkTimeTasks] DayofLastSecond : "+ DayofLastSecond);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (cal.get(Calendar.HOUR_OF_DAY) != nHour) {
|
|
|
- nHour = cal.get(Calendar.HOUR_OF_DAY);
|
|
|
- // 원격검침 데이터를 서버로부터 가져와 관련 기능모듈에 알린다.
|
|
|
- getTelemeteringDataOnRandomTime();
|
|
|
- DoScheduleHourUnit(cal);
|
|
|
- }
|
|
|
-
|
|
|
- if (getBlackoutStatus()) {
|
|
|
- Log.i(TAG, "[checkTimeTasks] getBlackoutStatus is true!!!");
|
|
|
- sendBlackoutScreenRunBR();
|
|
|
- }
|
|
|
-
|
|
|
- if (cal.get(Calendar.MINUTE) != nMin) {
|
|
|
- nMin = cal.get(Calendar.MINUTE);
|
|
|
-
|
|
|
- /**
|
|
|
- * main app에서 전자액자 실행 여부 확인하여 실행시킴
|
|
|
- * **/
|
|
|
- if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
- Log.i(TAG, "[checkTimeTasks] m_LiveMainActivity : " + m_LiveMainActivity);
|
|
|
- if (m_LiveMainActivity > 0) {
|
|
|
- boolean bScreenOn = false;
|
|
|
-
|
|
|
- if (Version.getModelType() == MODEL_TYPE.IHN_1020B_I) {
|
|
|
- bScreenOn = checkLCDOnByCMD();
|
|
|
- }
|
|
|
- else {
|
|
|
- PowerManager mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
|
|
|
- bScreenOn = mPowerManager.isScreenOn();
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[checkTimeTasks] bScreenOn : " + bScreenOn);
|
|
|
-
|
|
|
- if (!bScreenOn && !getBlackoutStatus()) {
|
|
|
- WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
-
|
|
|
- if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar())) {
|
|
|
- if (SettData.StartAutoPictureAPP() == true) {
|
|
|
- Log.d(TAG, "[checkTimeTasks] StartAutoPictureAPP() is true");
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- Log.d(TAG, "[checkTimeTasks] PowerManager will be set");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "[checkTimeTasks] StartAutoPictureAPP() is false");
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.d(TAG, "[checkTimeTasks] DecideAutoPictureAppStartOrNot(...) is false");
|
|
|
- }
|
|
|
- SettData.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if ((nMin == 50) || (nMin == 0)) {
|
|
|
- try {
|
|
|
- checkScheduleReminder();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (SCManager != null) SCManager.scheduleCheck();
|
|
|
-
|
|
|
- if (MAX_BOOTUP_RETRY_COUNT < bootupretryCNT && SYSTEM_TIME_SET == false) {
|
|
|
- try {
|
|
|
- WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
- iMAPMethod.ReqGetSet();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //주차정보 관련 20분 마다 얻어오기
|
|
|
- if (bUseofNot_ParkingInfo == true) {
|
|
|
- cGetParkingMin++;
|
|
|
- //테스트
|
|
|
- /*
|
|
|
- bSetMSG_GetParkingInfo = true;
|
|
|
- LoadParkingDataFromServer();
|
|
|
- */
|
|
|
-
|
|
|
- if (cGetParkingMin >= 20) {
|
|
|
- // 20분으로 고정
|
|
|
- cGetParkingMin = 0;
|
|
|
-
|
|
|
- //아이콘트롤스 일때도 처리하지 않도록 수정필요
|
|
|
- //넥스파인 경우는 협의후 처리
|
|
|
- switch(nParkingSystemType) {
|
|
|
- case Common.PARKING_SYSTEM_ICONTROLS:
|
|
|
- case Common.PARKING_SYSTEM_NEXPA:
|
|
|
- case Common.PARKING_SYSTEM_UPIS:
|
|
|
- case Common.PARKING_SYSTEM_IES_100:
|
|
|
- break;
|
|
|
-
|
|
|
- case Common.PARKING_SYSTEM_BASIC:
|
|
|
- case Common.PARKING_SYSTEM_ETC:
|
|
|
- GetParkingInfo_RandomCheckHandler(); //주차 정보 얻어오기
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkTimeTasks()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 일정 알림 팝업창 생성하는 함수<br>
|
|
|
- * 김용성 과장님 이곳에서 팝업창 생성해주시기 바랍니다.
|
|
|
- * @param popup_msg 팝업창에 띄울 메시지.
|
|
|
- * **/
|
|
|
- private void MakePopup_Schedule(String popup_msg) {
|
|
|
- try {
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] popup_msg [" + popup_msg + "]");
|
|
|
- DebugLogOutput("===================================");
|
|
|
- DebugLogOutput(popup_msg);
|
|
|
- DebugLogOutput("===================================");
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
- int AlarmStatus = mWallpadStatusData.GetAlarmStatus();
|
|
|
- boolean soundOut = mWallpadStatusData.GetSoundOutputOfEventAlarm();
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 1 ==========");
|
|
|
- if (AlarmStatus != WallpadStatusData.ALARM_ARISE && AlarmStatus != WallpadStatusData.GUARD_OUT && AlarmStatus != WallpadStatusData.GUARD_OUT_WAIT) {
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 2 ==========");
|
|
|
- if (!Common.bWallPadCallLive) {
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 3 ==========");
|
|
|
- Common.SendAppFinishReqBR(getApplicationContext());
|
|
|
- PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
- Log.d(TAG, "[MakePopup_Schedule] Screen On: " + mPowerManager.isScreenOn());
|
|
|
-
|
|
|
- if (getCompareBSPVersion()) {
|
|
|
- if (!checkLCDOnByCMD()) {
|
|
|
- mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- if (!mPowerManager.isScreenOn()) {
|
|
|
- Log.d(TAG, "[MakePopup_Schedule] V40Interface LcdWakeUp Call!!");
|
|
|
- mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ((MainActivity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- // 알람 소리를 내준다.
|
|
|
- if (soundOut) {
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 4 ==========");
|
|
|
- Sound().Play(SND.effect.EFFECT1);
|
|
|
- }
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 5 ==========");
|
|
|
- EnergyAlramPopupMgr.SchedulePopupMsg = popup_msg;
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 6 ==========");
|
|
|
- StartPopup(ID.POPUPS.POPUP_SCHEDULENOTIFICATION);
|
|
|
- Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 7 ==========");
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] MakePopup_Schedule(String popup_msg)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 일정 알림 시간 비교!
|
|
|
- * **/
|
|
|
- private void checkScheduleReminder() {
|
|
|
- try {
|
|
|
- Calendar ScheduleCal = Calendar.getInstance();
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ScheduleCal: " + ScheduleCal.getTime());
|
|
|
- WallpadScheduleData SCData = new WallpadScheduleData(getApplicationContext());
|
|
|
-// List<WallpadScheduleData.ScheduleData> scheduleDataDB = SCData.NewGetScheduleDataForMainActivity(ScheduleCal.get(Calendar.YEAR), ScheduleCal.get(Calendar.MONTH) + 1, ScheduleCal.get(Calendar.DAY_OF_MONTH));
|
|
|
- List<WallpadScheduleData.ScheduleData> scheduleDataDB = SCData.getScheduledInfoforMainActivity();
|
|
|
- SCData.closeDB();
|
|
|
-
|
|
|
- if (scheduleDataDB != null) {
|
|
|
- Log.i(TAG, "scheduleDataDB.size() [" + scheduleDataDB.size() + "]");
|
|
|
- for (int i = 0; i < scheduleDataDB.size(); i++) {
|
|
|
- DebugLogOutput("[checkScheduleReminder] ===================================");
|
|
|
- DebugLogOutput("[checkScheduleReminder] index [" + i + "], year [" + scheduleDataDB.get(i).inqyear + "], month [" + scheduleDataDB.get(i).inqmonth + "], day [" + scheduleDataDB.get(i).inqday + "], hour [" + scheduleDataDB.get(i).inqhour + "]");
|
|
|
- DebugLogOutput("[checkScheduleReminder] msg [" + scheduleDataDB.get(i).inqmsg + "], seq [" + scheduleDataDB.get(i).seqnum + "]");
|
|
|
- /**
|
|
|
- * inqttype: 음력여부 - {"moon", "sun"}
|
|
|
- * inqctype: 주기 - no:없음 or month:매월주기 or year:매년주기
|
|
|
- * inqatype: 알림 - {"no","intime","min","hour","day"} := {안울림, 정각, 10분전, 1시간전, 하루전}
|
|
|
- * inqitype: 행사 - {"birth","memorial","appoint","trip","first","wedding","tax","meeting","car","ancestor"} := {생일,기념일,약속,여행,돌,결혼,공과금,차량점검,제사}
|
|
|
- */
|
|
|
- DebugLogOutput("[checkScheduleReminder] lunar [" + scheduleDataDB.get(i).inqttype + "], cycle [" + scheduleDataDB.get(i).inqctype + "], remindtime [" + scheduleDataDB.get(i).inqatype + "], event [" + scheduleDataDB.get(i).inqitype + "]");
|
|
|
- DebugLogOutput("[checkScheduleReminder] ===================================\n");
|
|
|
-
|
|
|
- Calendar alarmCalendar = Calendar.getInstance();
|
|
|
-
|
|
|
- if(scheduleDataDB.get(i).inqatype.equalsIgnoreCase("no") == true) {
|
|
|
- //알림 사용하지 않음.
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm off ==========");
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on ==========");
|
|
|
- if (scheduleDataDB.get(i).inqctype.equalsIgnoreCase("month")) {
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month ==========");
|
|
|
- if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("intime")) {
|
|
|
- //정각인 경우
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> intime ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("min")) {
|
|
|
- //10분 전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> 10 min before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.MINUTE, -10);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("hour")) {
|
|
|
- //1시간 전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> 1 hour before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.HOUR_OF_DAY, -1);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("day")) {
|
|
|
- //하루전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> 1 day before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.DATE, -1);
|
|
|
-
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.YEAR): " + ScheduleCal.get(Calendar.YEAR) + ", alarmCalendar.get(Calendar.YEAR): " + alarmCalendar.get(Calendar.YEAR));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MONTH): " + ScheduleCal.get(Calendar.MONTH) + ", alarmCalendar.get(Calendar.MONTH): " + alarmCalendar.get(Calendar.MONTH));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.DAY_OF_MONTH): " + ScheduleCal.get(Calendar.DAY_OF_MONTH) + ", alarmCalendar.get(Calendar.DAY_OF_MONTH): " + alarmCalendar.get(Calendar.DAY_OF_MONTH));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.HOUR_OF_DAY): " + ScheduleCal.get(Calendar.HOUR_OF_DAY) + ", alarmCalendar.get(Calendar.HOUR_OF_DAY): " + alarmCalendar.get(Calendar.HOUR_OF_DAY));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MINUTE): " + ScheduleCal.get(Calendar.MINUTE) + ", alarmCalendar.get(Calendar.MINUTE): " + alarmCalendar.get(Calendar.MINUTE));
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqctype.equalsIgnoreCase("year")) {
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year ==========");
|
|
|
- if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("intime")) {
|
|
|
- //정각인 경우
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> intime ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("min")) {
|
|
|
- //10분 전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> 10 min before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.MINUTE, -10);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("hour")) {
|
|
|
- //1시간 전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> 1 hour before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.HOUR_OF_DAY, -1);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("day")) {
|
|
|
- //하루전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> 1 day before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.DATE, -1);
|
|
|
-
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.YEAR): " + ScheduleCal.get(Calendar.YEAR) + ", alarmCalendar.get(Calendar.YEAR): " + alarmCalendar.get(Calendar.YEAR));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MONTH): " + ScheduleCal.get(Calendar.MONTH) + ", alarmCalendar.get(Calendar.MONTH): " + alarmCalendar.get(Calendar.MONTH));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.DAY_OF_MONTH): " + ScheduleCal.get(Calendar.DAY_OF_MONTH) + ", alarmCalendar.get(Calendar.DAY_OF_MONTH): " + alarmCalendar.get(Calendar.DAY_OF_MONTH));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.HOUR_OF_DAY): " + ScheduleCal.get(Calendar.HOUR_OF_DAY) + ", alarmCalendar.get(Calendar.HOUR_OF_DAY): " + alarmCalendar.get(Calendar.HOUR_OF_DAY));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MINUTE): " + ScheduleCal.get(Calendar.MINUTE) + ", alarmCalendar.get(Calendar.MINUTE): " + alarmCalendar.get(Calendar.MINUTE));
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- //반복 없는경우
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat ==========");
|
|
|
- if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("intime")) {
|
|
|
- //정각인 경우
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> intime ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
- && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("min")) {
|
|
|
- //10분 전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> 10 min before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.MINUTE, -10);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
- && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if(scheduleDataDB.get(i).inqatype.equalsIgnoreCase("hour")) {
|
|
|
- //1시간 전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> 1 hour before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.HOUR_OF_DAY, -1);
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
- && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("day")) {
|
|
|
- //하루전
|
|
|
- Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> 1 day before ==========");
|
|
|
- alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
- alarmCalendar.add(Calendar.DATE, -1);
|
|
|
-
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.YEAR): " + ScheduleCal.get(Calendar.YEAR) + ", alarmCalendar.get(Calendar.YEAR): " + alarmCalendar.get(Calendar.YEAR));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MONTH): " + ScheduleCal.get(Calendar.MONTH) + ", alarmCalendar.get(Calendar.MONTH): " + alarmCalendar.get(Calendar.MONTH));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.DAY_OF_MONTH): " + ScheduleCal.get(Calendar.DAY_OF_MONTH) + ", alarmCalendar.get(Calendar.DAY_OF_MONTH): " + alarmCalendar.get(Calendar.DAY_OF_MONTH));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.HOUR_OF_DAY): " + ScheduleCal.get(Calendar.HOUR_OF_DAY) + ", alarmCalendar.get(Calendar.HOUR_OF_DAY): " + alarmCalendar.get(Calendar.HOUR_OF_DAY));
|
|
|
-// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MINUTE): " + ScheduleCal.get(Calendar.MINUTE) + ", alarmCalendar.get(Calendar.MINUTE): " + alarmCalendar.get(Calendar.MINUTE));
|
|
|
-
|
|
|
- if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
- && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
- && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
- && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
- {
|
|
|
- AlarmScheduleCount++;
|
|
|
- if (bAlarmScheduleString == false) {
|
|
|
- bAlarmScheduleString = true;
|
|
|
- if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
- AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- else {
|
|
|
- AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[checkScheduleReminder] Unsupported alarm type!! -> " + scheduleDataDB.get(i).inqatype);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[checkScheduleReminder] bAlarmScheduleString [" + bAlarmScheduleString + "], AlarmScheduleCount [" + AlarmScheduleCount + "]");
|
|
|
-
|
|
|
- if (bAlarmScheduleString == true) {
|
|
|
- if(AlarmScheduleCount == 1) {
|
|
|
- //일정이 1개인 경우
|
|
|
- AlarmScheduleString += " 일정이 있습니다.\r\n확인 하시겠습니까?";
|
|
|
- }
|
|
|
- else {
|
|
|
- //일정이 1개보다 많은 경우
|
|
|
- AlarmScheduleString += " 일정 외 "+(AlarmScheduleCount-1)+"건이 있습니다.\r\n확인 하시겠습니까?";
|
|
|
- }
|
|
|
- AlarmScheduleCount = 0;
|
|
|
- bAlarmScheduleString = false;
|
|
|
-
|
|
|
- MakePopup_Schedule(AlarmScheduleString);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[checkScheduleReminder] scheduleDataDB is null!!");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkScheduleReminder(Calendar cal)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 프로토콜에 정의된 일정표 이벤트 종류를 변환하여 반환한다.
|
|
|
- private String getScheduleEventType(String strEvent) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[getScheduleEventType] strEvent [" + strEvent + "]");
|
|
|
- if (strEvent.equalsIgnoreCase("birth")) return "생일";
|
|
|
- else if (strEvent.equalsIgnoreCase("memorial")) return "기념일";
|
|
|
- else if (strEvent.equalsIgnoreCase("appoint")) return "약속";
|
|
|
- else if (strEvent.equalsIgnoreCase("trip")) return "여행";
|
|
|
- else if (strEvent.equalsIgnoreCase("first")) return "돌";
|
|
|
- else if (strEvent.equalsIgnoreCase("wedding")) return "결혼";
|
|
|
- else if (strEvent.equalsIgnoreCase("tax")) return "공과금";
|
|
|
- else if (strEvent.equalsIgnoreCase("meeting")) return "모임";
|
|
|
- else if (strEvent.equalsIgnoreCase("car")) return "생일";
|
|
|
- else if (strEvent.equalsIgnoreCase("ancestor")) return "제사";
|
|
|
- else return "알수없음";
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getScheduleEventType(String strEvent)");
|
|
|
- e.printStackTrace();
|
|
|
- return "알수없음";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void getParkedVehicleLocationSysInfo() {
|
|
|
- try {
|
|
|
- DebugLogOutput("getParkedVehicleLocationSysInfo Init");
|
|
|
- WallpadDeviceSet devSet = new WallpadDeviceSet(getContext());
|
|
|
- String[] ParkingDB = devSet.GetSettingData("주차확인");
|
|
|
- devSet.closeDB();
|
|
|
-
|
|
|
- if (ParkingDB!=null) {
|
|
|
- try {
|
|
|
- String devInfo = ParkingDB[1];
|
|
|
-
|
|
|
- devInfo = devInfo.replace('(', '_');
|
|
|
- devInfo = devInfo.replace(':', '_');
|
|
|
- devInfo = devInfo.replace(')', '_');
|
|
|
-
|
|
|
- String[] ParkingInfo = devInfo.split("_");
|
|
|
-
|
|
|
- //ParkingInfo[3] -> 사용여부 <사용함 / else>
|
|
|
- //ParkingInfo[5] -> 종류 <기본 / 아이콘트롤스 / NEXPA / UPIS / ETC / 비상벨 / else>
|
|
|
- //ParkingInfo[7] -> IP정보
|
|
|
- //ParkingInfo[8] -> 포트번호
|
|
|
-
|
|
|
- if (ParkingInfo[3].equalsIgnoreCase("사용함") == true) {
|
|
|
- bUseofNot_ParkingInfo = true;
|
|
|
- }
|
|
|
-
|
|
|
- if (ParkingInfo[5].equalsIgnoreCase("기본") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_BASIC;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("아이콘트롤스") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_ICONTROLS;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("넥스파") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_NEXPA;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("NEXPA") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_NEXPA;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("UPIS") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_UPIS;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("ETC") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_ETC;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("비상벨") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_IES_100;
|
|
|
- }
|
|
|
- else if (ParkingInfo[5].equalsIgnoreCase("다람정보") == true) {
|
|
|
- nParkingSystemType = Common.PARKING_SYSTEM_DARAM;
|
|
|
- }
|
|
|
-
|
|
|
- ParkingServerIP = ParkingInfo[7];
|
|
|
- ParkingServerPort = Integer.parseInt(ParkingInfo[8]);
|
|
|
-
|
|
|
- DebugLogOutput("[getParkedVehicleLocationSysInfo] bUseofNot_ParkingInfo [" + bUseofNot_ParkingInfo + ", nParkingSystemType ["+ nParkingSystemType + "]");
|
|
|
- DebugLogOutput("[getParkedVehicleLocationSysInfo] ParkingServerIP ["+ParkingServerIP + "], ParkingServerPort [" + ParkingServerPort + "]");
|
|
|
- } catch(Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- bUseofNot_ParkingInfo = false;
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- bUseofNot_ParkingInfo = false;
|
|
|
- DebugLogOutput("[getParkedVehicleLocationSysInfo] bUseofNot_ParkingInfo ["+bUseofNot_ParkingInfo + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //20분 마다 한번씩 호출되는 주차관련 함수!
|
|
|
- private void GetParkingInfo_RandomCheckHandler() {
|
|
|
- int DelayTime = StringUtil.GetDelayTimeBaseIP(getContext());
|
|
|
- if (DelayTime < 1) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- DebugLogOutput("[GetParkingInfo] DelayTime : "+ DelayTime);
|
|
|
- bSetMSG_GetParkingInfo = true;
|
|
|
- mGetParkInfoRandomCheckHandler.sendEmptyMessageDelayed(0, 1000 * DelayTime);
|
|
|
- }
|
|
|
-
|
|
|
- private Handler mGetParkInfoRandomCheckHandler = new Handler()
|
|
|
- {
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg)
|
|
|
- {
|
|
|
- if (msg.what == 0) {
|
|
|
- DebugLogOutput("[GetParkingInfo] mGetParkInfoRandomCheckHandler() will be called");
|
|
|
- //얻어오기
|
|
|
- LoadParkingDataFromServer();
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 주차정보 서버로부터 얻어오기<br>
|
|
|
- * 호출 시에는 bSetMSG_GetParkingInfo = true 하고 호출해야함.
|
|
|
- * **/
|
|
|
- private void LoadParkingDataFromServer() {
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- final AddressSet addc = SetData.getAddressMGR();
|
|
|
- SetData.closeDB();
|
|
|
-
|
|
|
- if (bSetMSG_GetParkingInfo == false) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if ((nParkingSystemType == Common.PARKING_SYSTEM_BASIC)
|
|
|
- || (nParkingSystemType == Common.PARKING_SYSTEM_ICONTROLS)
|
|
|
- || (nParkingSystemType == Common.PARKING_SYSTEM_NEXPA)
|
|
|
- || (nParkingSystemType == Common.PARKING_SYSTEM_IES_100))
|
|
|
- {
|
|
|
- iMAPcarParking = new iMAPCarParking(mContext, true);
|
|
|
- iMAPcarParking.SetServerIPcfg(ParkingServerIP, ParkingServerPort);
|
|
|
- DebugLogOutput("ParkingServerIP :"+ParkingServerIP+", ParkingServerPort : "+ParkingServerPort);
|
|
|
- DebugLogOutput("iMAPcarParking.DoWork()");
|
|
|
- iMAPcarParking.DoWork();
|
|
|
-
|
|
|
- iMAPcarParking.SetRetCtr(new RetProci(){
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- DebugLogOutput("Load EMData From Server - ProcSuccess");
|
|
|
- try {
|
|
|
- iMAPcarParking.SetItem("home_info");
|
|
|
- int home_info_count = Integer.parseInt(iMAPcarParking.GetAttributeVal(0, "count"));
|
|
|
- int park_info_count = iMAPcarParking.SetItem("park_info");
|
|
|
-
|
|
|
- if (home_info_count != park_info_count) {
|
|
|
- DebugLogOutput("home_info_count != park_info_count -->"+ home_info_count+" != "+ park_info_count);
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (park_info_count == 0) {
|
|
|
- DebugLogOutput("park_info_count :" + park_info_count);
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.DeleteAllParkInfo();
|
|
|
- parkdb.closeDB();
|
|
|
-
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
-
|
|
|
- /*
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- int countRow = parkdb.RowCountCarParking();
|
|
|
- parkdb.closeDB();
|
|
|
- DebugLogOutput("countRow :" + countRow);
|
|
|
- */
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.DeleteAllParkInfo();
|
|
|
- parkdb.closeDB();
|
|
|
-
|
|
|
- for (int i = 0; i < park_info_count; i++) {
|
|
|
- if ((addc.Dong.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "dong"))) && (addc.Ho.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "ho")))) {
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.InputParkInfo(
|
|
|
- iMAPcarParking.GetAttributeVal(i, "index"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "dong"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "ho"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "card_num"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "uid"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "sn"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "card_type"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "time"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "location_text"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "location_map"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "vehicle_info"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "ftp_path"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "ftp_info"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "message"));
|
|
|
- parkdb.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //테스트
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- CarParkingData carParkingData[] = parkdb.getCarParkingData();
|
|
|
- parkdb.closeDB();
|
|
|
- if (carParkingData != null) {
|
|
|
- for (int j = 0; j < carParkingData.length; j++) {
|
|
|
- DebugLogOutput(carParkingData[j].ToDebugString());
|
|
|
- }
|
|
|
- }
|
|
|
- //테스트
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- } catch (Exception e) {
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError() {
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- DebugLogOutput("Load EMData From Server - ProcError");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing() {
|
|
|
-
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- else if (nParkingSystemType == Common.PARKING_SYSTEM_DARAM) {
|
|
|
- iMAPcarParking = new iMAPCarParking(mContext, false);
|
|
|
- iMAPcarParking.SetServerIPcfg(ParkingServerIP, ParkingServerPort);
|
|
|
- DebugLogOutput("ParkingServerIP :"+ParkingServerIP+", ParkingServerPort : "+ParkingServerPort);
|
|
|
- DebugLogOutput("iMAPcarParking.DoWork()");
|
|
|
- iMAPcarParking.DoWork();
|
|
|
-
|
|
|
- iMAPcarParking.SetRetCtr(new RetProci(){
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- DebugLogOutput("Load EMData From Server - ProcSuccess");
|
|
|
- try {
|
|
|
- iMAPcarParking.SetItem("home_info");
|
|
|
- int home_info_count = Integer.parseInt(iMAPcarParking.GetAttributeVal(0, "count"));
|
|
|
- int park_info_count = iMAPcarParking.SetItem("park_info");
|
|
|
-
|
|
|
- if (home_info_count != park_info_count) {
|
|
|
- DebugLogOutput("home_info_count != park_info_count -->"+ home_info_count+" != "+ park_info_count);
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (park_info_count == 0) {
|
|
|
- DebugLogOutput("park_info_count :" + park_info_count);
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.DeleteAllParkInfo();
|
|
|
- parkdb.closeDB();
|
|
|
-
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
-
|
|
|
- /*
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- int countRow = parkdb.RowCountCarParking();
|
|
|
- parkdb.closeDB();
|
|
|
- DebugLogOutput("countRow :" + countRow);
|
|
|
- */
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.DeleteAllParkInfo();
|
|
|
- parkdb.closeDB();
|
|
|
-
|
|
|
- for (int i = 0; i < park_info_count; i++) {
|
|
|
- if ((addc.Dong.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "dong"))) && (addc.Ho.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "ho")))) {
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.InputParkInfo(
|
|
|
- iMAPcarParking.GetAttributeVal(i, "index"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "dong"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "ho"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "card_num"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "uid"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "sn"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "card_type"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "time"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "location_text"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "location_map"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "vehicle_info"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "ftp_path"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "ftp_info"),
|
|
|
- iMAPcarParking.GetAttributeVal(i, "message"));
|
|
|
- parkdb.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //테스트
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- CarParkingData carParkingData[] = parkdb.getCarParkingData();
|
|
|
- parkdb.closeDB();
|
|
|
- if (carParkingData != null) {
|
|
|
- for (int j = 0; j < carParkingData.length; j++) {
|
|
|
- DebugLogOutput(carParkingData[j].ToDebugString());
|
|
|
- }
|
|
|
- }
|
|
|
- //테스트
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- } catch (Exception e) {
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError() {
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- DebugLogOutput("Load EMData From Server - ProcError");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing() {
|
|
|
-
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- else if (nParkingSystemType == Common.PARKING_SYSTEM_UPIS) {
|
|
|
- iMapcarParking_UPIS = new iMAPCarParking_UPIS(mContext);
|
|
|
- iMapcarParking_UPIS.SetServerIPcfg(ParkingServerIP, ParkingServerPort);
|
|
|
- DebugLogOutput("ParkingServerIP :"+ParkingServerIP+", ParkingServerPort : "+ParkingServerPort);
|
|
|
- DebugLogOutput("iMapcarParking_UPIS.DoWork()");
|
|
|
- iMapcarParking_UPIS.DoWork();
|
|
|
-
|
|
|
- iMapcarParking_UPIS.SetRetCtr(new RetProci(){
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- DebugLogOutput("Load EMData From Server - ProcSuccess");
|
|
|
- try {
|
|
|
- iMapcarParking_UPIS.SetItem("home_info");
|
|
|
- int home_info_count = Integer.parseInt(iMapcarParking_UPIS.GetAttributeVal(0, "count"));
|
|
|
- int park_info_count = iMapcarParking_UPIS.SetItem("park_info");
|
|
|
- if (home_info_count != park_info_count) {
|
|
|
- DebugLogOutput("home_info_count != park_info_count -->"+ home_info_count+" != "+ park_info_count);
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (park_info_count == 0) {
|
|
|
- DebugLogOutput("park_info_count :" + park_info_count);
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.DeleteAllParkInfo();
|
|
|
- parkdb.closeDB();
|
|
|
-
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
-
|
|
|
- /*
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- int countRow = parkdb.RowCountCarParking();
|
|
|
- parkdb.closeDB();
|
|
|
- DebugLogOutput("countRow :" + countRow);
|
|
|
- */
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.DeleteAllParkInfo();
|
|
|
- parkdb.closeDB();
|
|
|
-
|
|
|
- for (int i = 0; i < park_info_count; i++) {
|
|
|
- if ((addc.Dong.equalsIgnoreCase(iMapcarParking_UPIS.GetAttributeVal(i, "dong"))) && (addc.Ho.equalsIgnoreCase(iMapcarParking_UPIS.GetAttributeVal(i, "ho")))) {
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- parkdb.InputParkInfo(
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "index"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "dong"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "ho"),
|
|
|
- "null",
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "uid"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "sn"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "card_type"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "time"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "location_2"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "location_1"),
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "car_info"),
|
|
|
- "null",
|
|
|
- "null",
|
|
|
- iMapcarParking_UPIS.GetAttributeVal(i, "message"));
|
|
|
- parkdb.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //테스트
|
|
|
- parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
- CarParkingData carParkingData[] = parkdb.getCarParkingData();
|
|
|
- parkdb.closeDB();
|
|
|
- if (carParkingData != null) {
|
|
|
- for (int j = 0; j < carParkingData.length; j++) {
|
|
|
- DebugLogOutput(carParkingData[j].ToDebugString());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- } catch(Exception e) {
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError() {
|
|
|
- cGetParkingMin = 0;
|
|
|
- bSetMSG_GetParkingInfo = false;
|
|
|
- DebugLogOutput("Load EMData From Server - ProcError");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing() {
|
|
|
-
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] LoadParkingDataFromServer()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 한시간에 한번식 호출되는 함수임
|
|
|
- private void DoScheduleHourUnit(Calendar cal) {
|
|
|
- nHour = cal.get(Calendar.HOUR_OF_DAY);
|
|
|
- // 매시 7시부터 매시간 정각에 계속해서 알려준다. 사용자가 확인하기 전까지...
|
|
|
- // 사용자가 확인하게 되면 알림을 중지한다.
|
|
|
- // 목표값 팝업 알림에 필요한 DB 정보
|
|
|
- // 각각의 항목에 대한 초기화, 근접알림 발생, 근접알림 확인, 초과 알림 발생 , 초과알림 확인 5단계 구분 필요
|
|
|
- // 달이 넘어가게 되면 초괴하 한다.
|
|
|
-
|
|
|
- try {
|
|
|
- if (nHour == GetEnergyAlarmTime()) {
|
|
|
- if (GetEnergyAlarm() == true) {
|
|
|
- if (bUseofNot_EnergyServer == true) {
|
|
|
- if (ResultGetIntent == true) {
|
|
|
- ResultGetIntent = false;
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ENERGY_TARGET_INFO_ALARM_FROM_MAIN_ACTIVIVY);
|
|
|
-
|
|
|
- intent.putExtra("elect_target", elect_target);
|
|
|
- intent.putExtra("elect_used", elect_used);
|
|
|
- intent.putExtra("elect_info", elect_info);
|
|
|
- intent.putExtra("water_target", water_target);
|
|
|
- intent.putExtra("water_used", water_used);
|
|
|
- intent.putExtra("water_info", water_info);
|
|
|
- intent.putExtra("gas_target", gas_target);
|
|
|
- intent.putExtra("gas_used", gas_used);
|
|
|
- intent.putExtra("gas_info", gas_info);
|
|
|
- intent.putExtra("heating_target", heating_target);
|
|
|
- intent.putExtra("heating_used", heating_used);
|
|
|
- intent.putExtra("heating_info", heating_info);
|
|
|
- intent.putExtra("hotwater_target", hotwater_target);
|
|
|
- intent.putExtra("hotwater_used", hotwater_used);
|
|
|
- intent.putExtra("hotwater_info", hotwater_info);
|
|
|
-
|
|
|
- sendBroadcast(intent);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- CheckEnergyUsage();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- if (SCManager != null ) SCManager.CheckSysResetData();
|
|
|
- }
|
|
|
- static boolean NeedCheckEnergy = false;
|
|
|
-
|
|
|
- //에너지 사용량 확인
|
|
|
- public void CheckEnergyUsage() {
|
|
|
- Log.d(TAG, "***********************************************");
|
|
|
- Log.d(TAG, "[CheckEnergyUsage] CheckEnergyUsage Function in");
|
|
|
- Log.d(TAG, "***********************************************");
|
|
|
- try {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- int alarmstate = SetData.GetAlarmStatus();
|
|
|
- SetData.closeDB();
|
|
|
-
|
|
|
- if (alarmstate == WallpadStatusData.ALARM_ARISE || alarmstate == WallpadStatusData.GUARD_OUT)
|
|
|
- return;
|
|
|
-
|
|
|
- String strNear = "";
|
|
|
- String strOver = "";
|
|
|
-
|
|
|
- if (EnergyAlramPopupMgr.m_Elec_UseValue > 0 && EnergyAlramPopupMgr.m_Elec_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_ELEC_ALAM_POPUP_STEP)) {
|
|
|
- if (EnergyAlramPopupMgr.m_Elec_UseValue >= EnergyAlramPopupMgr.m_Elec_GoalValue) {
|
|
|
- strOver += "전기 ";
|
|
|
- EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_ELEC_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- else {
|
|
|
- double nNearValue = EnergyAlramPopupMgr.m_Elec_GoalValue * 0.9;
|
|
|
- if (EnergyAlramPopupMgr.m_Elec_UseValue > nNearValue) {
|
|
|
- strNear += "전기 ";
|
|
|
- EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_ELEC_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (EnergyAlramPopupMgr.m_Water_UseValue > 0 && EnergyAlramPopupMgr.m_Water_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_WATER_ALAM_POPUP_STEP)) {
|
|
|
- if (EnergyAlramPopupMgr.m_Water_UseValue >= EnergyAlramPopupMgr.m_Water_GoalValue) {
|
|
|
- strOver += "수도 ";
|
|
|
- EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_WATER_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- else {
|
|
|
- double nNearValue = EnergyAlramPopupMgr.m_Water_GoalValue * 0.9;
|
|
|
- if (EnergyAlramPopupMgr.m_Water_UseValue > nNearValue) {
|
|
|
- strNear += "수도 ";
|
|
|
- EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_WATER_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (EnergyAlramPopupMgr.m_Gas_UseValue > 0 && EnergyAlramPopupMgr.m_Gas_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_GAS_ALAM_POPUP_STEP)) {
|
|
|
- if (EnergyAlramPopupMgr.m_Gas_UseValue >= EnergyAlramPopupMgr.m_Gas_GoalValue) {
|
|
|
- strOver += "가스 ";
|
|
|
- EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_GAS_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- else {
|
|
|
- double nNearValue = EnergyAlramPopupMgr.m_Gas_GoalValue * 0.9;
|
|
|
- if (EnergyAlramPopupMgr.m_Gas_UseValue > nNearValue) {
|
|
|
- strNear += "가스 ";
|
|
|
- EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_GAS_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (EnergyAlramPopupMgr.m_HotWater_UseValue > 0 && EnergyAlramPopupMgr.m_HotWater_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_HOTWATER_ALAM_POPUP_STEP)) {
|
|
|
- if (EnergyAlramPopupMgr.m_HotWater_UseValue >= EnergyAlramPopupMgr.m_HotWater_GoalValue) {
|
|
|
- strOver += "온수 ";
|
|
|
- EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_HOTWATER_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- else {
|
|
|
- double nNearValue = EnergyAlramPopupMgr.m_HotWater_GoalValue * 0.9;
|
|
|
- if (EnergyAlramPopupMgr.m_HotWater_UseValue > nNearValue) {
|
|
|
- strNear += "온수 ";
|
|
|
- EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_HOTWATER_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (EnergyAlramPopupMgr.m_Heating_UseValue > 0 && EnergyAlramPopupMgr.m_Heating_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_HEATING_ALAM_POPUP_STEP)) {
|
|
|
- if (EnergyAlramPopupMgr.m_Heating_UseValue >= EnergyAlramPopupMgr.m_Heating_GoalValue) {
|
|
|
- strOver += "난방 ";
|
|
|
- EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_HEATING_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- else {
|
|
|
- double nNearValue = EnergyAlramPopupMgr.m_Heating_GoalValue * 0.9;
|
|
|
- if (EnergyAlramPopupMgr.m_Heating_UseValue > nNearValue) {
|
|
|
- strNear += "난방 ";
|
|
|
- EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_HEATING_ALAM_POPUP_STEP);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (strNear.length() > 0) EnergyAlramPopupMgr.PopupMsg01 = strNear + "사용량이 목표값에 가까워지고 있습니다.\n확인 하시겠습니까?";
|
|
|
- else EnergyAlramPopupMgr.PopupMsg01 = "";
|
|
|
-
|
|
|
- if (strOver.length() > 0) EnergyAlramPopupMgr.PopupMsg02 = strOver + "사용량이 목표값을 초과하였습니다.\n확인 하시겠습니까?";
|
|
|
- else EnergyAlramPopupMgr.PopupMsg02 = "";
|
|
|
-
|
|
|
- if (EnergyAlramPopupMgr.PopupMsg01.length() > 0 || EnergyAlramPopupMgr.PopupMsg02.length() > 0) {
|
|
|
- mIOInterface.ctrlLcdWakeUp();
|
|
|
- StartPopup(ID.POPUPS.POPUP_ENERGYUSAGEALERT);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] CheckEnergyUsage()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //시간 동기화를 위한 getinfo 실행 시간을 구함
|
|
|
- protected Calendar GetTimeSyncTime()
|
|
|
- {
|
|
|
- Calendar retTime = new GregorianCalendar();
|
|
|
-
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- AddressSet addc = SetData.getAddressMGR();
|
|
|
- SetData.closeDB();
|
|
|
- try {
|
|
|
- int dong = Integer.parseInt(addc.Dong);
|
|
|
- int ho = 101;
|
|
|
-
|
|
|
- if(addc.UseOrNotRentHouse == true)
|
|
|
- {
|
|
|
- ho = addc.Ho_Integer;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ho = Integer.parseInt(addc.Ho);
|
|
|
- }
|
|
|
-
|
|
|
- int interval = (dong-(dong/100)*100) * 100 + ho/100;
|
|
|
- int hour;
|
|
|
- int min;
|
|
|
- int sec;
|
|
|
- if (interval/3600 > 0)
|
|
|
- {
|
|
|
- hour = 3+interval/3600;
|
|
|
- interval=interval%3600;
|
|
|
- }
|
|
|
- else hour = 6;
|
|
|
-
|
|
|
- if (interval/60 > 0)
|
|
|
- {
|
|
|
- min = interval/60;
|
|
|
- sec = interval%60;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- min = 0;
|
|
|
- sec = interval;
|
|
|
- }
|
|
|
- retTime.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
- retTime.set(Calendar.MINUTE, min);
|
|
|
- retTime.set(Calendar.SECOND, sec);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- return retTime;
|
|
|
- }
|
|
|
-
|
|
|
- //에너지 사용량 확인을 위한 데이터 로딩 시간을 가져옴
|
|
|
- protected Calendar GetEnergyDataLoadingTime()
|
|
|
- {
|
|
|
- Calendar retTime = new GregorianCalendar();
|
|
|
-
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
- AddressSet addc = SetData.getAddressMGR();
|
|
|
- SetData.closeDB();
|
|
|
- try {
|
|
|
- int dong = Integer.parseInt(addc.Dong);
|
|
|
- int ho = 201;
|
|
|
-
|
|
|
- if(addc.UseOrNotRentHouse == true)
|
|
|
- {
|
|
|
- ho = addc.Ho_Integer;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ho = Integer.parseInt(addc.Ho);
|
|
|
- }
|
|
|
-
|
|
|
- int interval = (dong-(dong/100)*100) * 100 + ho/100;
|
|
|
- int hour;
|
|
|
- int min;
|
|
|
- int sec;
|
|
|
- if (interval/3600 > 0)
|
|
|
- {
|
|
|
- hour = 6+interval/3600;
|
|
|
- interval=interval%3600;
|
|
|
- }
|
|
|
- else hour = 6;
|
|
|
-
|
|
|
- if (interval/60 > 0)
|
|
|
- {
|
|
|
- min = interval/60;
|
|
|
- sec = interval%60;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- min = 0;
|
|
|
- sec = interval;
|
|
|
- }
|
|
|
- retTime.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
- retTime.set(Calendar.MINUTE, min);
|
|
|
- retTime.set(Calendar.SECOND, sec);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- return retTime;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private void setNetworkAddr(int secNum, int thirdNum, int forthNum) {
|
|
|
- try
|
|
|
- {
|
|
|
- String IPAddress = String.format("10.%d.%d.%d", secNum, thirdNum, forthNum);
|
|
|
- String gateWayIPAddress = String.format("10.%d.%d.%d", secNum, Common.DEFAULT_GATEWAY_IP_THIRD, Common.DEFAULT_GATEWAY_IP_FORTH);
|
|
|
- String MacAddr = String.format("00:0A:%02x:%02x:%02x:00", secNum, thirdNum, forthNum);
|
|
|
-
|
|
|
- String serverIP = Common.DEFAULT_SERVER_IP;
|
|
|
- int serverPort = Common.DEFAULT_SERVER_PORT;
|
|
|
-
|
|
|
- String managePCIP = Common.DEFAULT_MANAGER_PC_IP;
|
|
|
- int managePCPort = Common.DEFAULT_MANAGER_PC_PORT;
|
|
|
-
|
|
|
- wallpaddbmgr dbmgr = new wallpaddbmgr(this);
|
|
|
- AddressSet addc = dbmgr.getAddressMGR();
|
|
|
- String mDong = String.format("%d%02d", 1, secNum);
|
|
|
- String mHo = String.format("%d%02d", thirdNum, forthNum);
|
|
|
- addc.setAddress(mDong, mHo);
|
|
|
- addc.setIPAddress(IPAddress);
|
|
|
- dbmgr.closeDB();
|
|
|
-
|
|
|
- WallpadStatusData wallpadStatusData = new WallpadStatusData(this);
|
|
|
- wallpadStatusData.SetServerIP(serverIP, serverPort);
|
|
|
- wallpadStatusData.SetManagePC(managePCIP, managePCPort);
|
|
|
- wallpadStatusData.closeDB();
|
|
|
-
|
|
|
- EthernetDevInfo info = new EthernetDevInfo();
|
|
|
-
|
|
|
- info.setIfName("eth0");
|
|
|
- info.setConnectMode(EthernetDevInfo.ETH_CONN_MODE_MANUAL);
|
|
|
- info.setIpAddress(IPAddress);
|
|
|
- info.setRouteAddr(gateWayIPAddress);
|
|
|
- info.setDnsAddr(Common.DNS_IP);
|
|
|
- info.setNetMask(Common.SUBNET_MASK);
|
|
|
-
|
|
|
- EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
- mEthManager.UpdateEthDevInfo(info);
|
|
|
- mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
- WallPadInterface wallPadInterface = new WallPadInterface();;
|
|
|
- wallPadInterface.setMacAddr(MacAddr);
|
|
|
- Log.d("MANAGERSETTING", " IP : "+IPAddress+" Mac : "+ MacAddr);
|
|
|
-
|
|
|
- writeMacAddress(MacAddr);
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private final String NETWORK_SETTING = "network_setting";
|
|
|
- private final String MAC_ADDRESS_FILE_PATH = Common.CONTENTS_ROOT + NETWORK_SETTING + ".inc";
|
|
|
-
|
|
|
- private boolean writeMacAddress(String MacAddr) {
|
|
|
- boolean ret = false;
|
|
|
- String read = null;
|
|
|
-
|
|
|
- BufferedWriter bufferWriter = null;
|
|
|
-
|
|
|
- try {
|
|
|
- FileOutputStream fos = new FileOutputStream(MAC_ADDRESS_FILE_PATH, false);
|
|
|
- OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
|
|
- bufferWriter = new BufferedWriter(osr, 1024);
|
|
|
-
|
|
|
- if ((bufferWriter != null) && (MacAddr != null)) {
|
|
|
- bufferWriter.write(MacAddr, 0, MacAddr.length());
|
|
|
- bufferWriter.newLine();
|
|
|
- bufferWriter.flush();
|
|
|
-
|
|
|
- ret = true;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- try {
|
|
|
- if (bufferWriter != null) {
|
|
|
- bufferWriter.close();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- Log.d(TAG, "writeMacAddress() path : " + MAC_ADDRESS_FILE_PATH
|
|
|
- + ", MacAddr : " + MacAddr
|
|
|
- + ", ret : " + ret
|
|
|
- );
|
|
|
-
|
|
|
- return ret;
|
|
|
- }
|
|
|
- private void GetElectricCarInfo() {
|
|
|
- try {
|
|
|
- Log.d(TAG, "[GetElectricCarInfo] ===== START =====");
|
|
|
- int retInt = -1;
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = null;
|
|
|
- mWallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
- retInt = mWallpadDeviceSet.GetDeviceSetted("전기차충전");
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
- Log.d(TAG, "[GetElectricCarInfo] retInt = " + retInt);
|
|
|
- if (retInt == WallpadDeviceSet.DEV_DATA_ENABLE) {
|
|
|
- Log.i(TAG, "[GetElectricCarInfo] Electronic car changing enabled!!");
|
|
|
- GetElectricCarInfo_RandomCheckHandler();
|
|
|
- }
|
|
|
- else Log.i(TAG, "[GetElectricCarInfo] Electronic car changing disabled!!");
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] GetElectricCarInfo()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- private void GetElectricCarInfo_RandomCheckHandler() {
|
|
|
- try {
|
|
|
- Log.d(TAG, "[GetElectricCarInfo_RandomCheckHandler] ===== START =====");
|
|
|
- int nDelayTime = StringUtil.GetDelayTimeBaseIP(getContext());
|
|
|
- Log.d(TAG, "[GetElectricCarInfo_RandomCheckHandler] nDelayTime : "+ nDelayTime);
|
|
|
- if (nDelayTime < 1) {
|
|
|
- Log.w(TAG, "[GetElectricCarInfo_RandomCheckHandler] DelayTime error!! -> nDelayTime = " + nDelayTime);
|
|
|
- return;
|
|
|
- }
|
|
|
- mGetElecricCarRandomCheckHandler.sendEmptyMessageDelayed(0, 1000 * nDelayTime);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] GetElectricCarInfo_RandomCheckHandler()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private Handler mGetElecricCarRandomCheckHandler = new Handler()
|
|
|
- {
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg)
|
|
|
- {
|
|
|
- if (msg.what == 0) {
|
|
|
- Log.i(TAG, "[GetElectricCarInfo] mGetElecricCarRandomCheckHandler() will be called!!");
|
|
|
- //얻어오기
|
|
|
- imapElecCarChargingInfo = new iMAPElecCarChargingInfo(getApplicationContext());
|
|
|
- LoadElectricCarDataFromServer();
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- void LoadElectricCarDataFromServer() {
|
|
|
- DebugLogOutput("LoadElectricCarDataFromServer");
|
|
|
- imapElecCarChargingInfo.DoWork();
|
|
|
- imapElecCarChargingInfo.SetRetCtr(new RetProci() {
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- Log.i(TAG, "[LoadElectricCarDataFromServer] ProcSuccess");
|
|
|
- try {
|
|
|
- int SetItemResult = imapElecCarChargingInfo.SetItem("charging_cnt");
|
|
|
- if(SetItemResult != 1) {
|
|
|
- Log.w(TAG, "[LoadElectricCarDataFromServer.ProcSuccess()] Error1 - SetItemResult : "+ SetItemResult);
|
|
|
- nElecVehicleChangingCnt = 0;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- String sChargingCount = imapElecCarChargingInfo.GetItemVal(0);
|
|
|
- int intChargingCount = Integer.parseInt(sChargingCount);
|
|
|
- if (intChargingCount < 1) {
|
|
|
- Log.w(TAG, "[LoadElectricCarDataFromServer.ProcSuccess()] Error1 - intChargingCount : "+ intChargingCount);
|
|
|
- nElecVehicleChangingCnt = 0;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- SetItemResult = imapElecCarChargingInfo.SetItem("charger_info");
|
|
|
-
|
|
|
- if (SetItemResult != intChargingCount) {
|
|
|
- Log.w(TAG, "[LoadElectricCarDataFromServer.ProcSuccess()] Error1 - SetItemResult : "+ SetItemResult);
|
|
|
- nElecVehicleChangingCnt = 0;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (intChargingCount > 0) {
|
|
|
- nElecVehicleChangingCnt = intChargingCount;
|
|
|
-
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_GET_ELEC_CHARGE);
|
|
|
-
|
|
|
- intent.putExtra("sCard_Num", imapElecCarChargingInfo.GetAttributeVal(0, "card_num"));
|
|
|
- intent.putExtra("sCar_Num", imapElecCarChargingInfo.GetAttributeVal(0, "car_num"));
|
|
|
- intent.putExtra("sCharger_Num", imapElecCarChargingInfo.GetAttributeVal(0, "charger_num"));
|
|
|
- intent.putExtra("sCharger_Loc", imapElecCarChargingInfo.GetAttributeVal(0, "charger_loc"));
|
|
|
- intent.putExtra("sCharging_Status", "charging");
|
|
|
- intent.putExtra("sCharger_sort", imapElecCarChargingInfo.GetAttributeVal(0, "charger_sort"));
|
|
|
- intent.putExtra("sCharging_Ratio", imapElecCarChargingInfo.GetAttributeVal(0, "charging_ratio"));
|
|
|
- intent.putExtra("sStart_Time", imapElecCarChargingInfo.GetAttributeVal(0, "start_time"));
|
|
|
- intent.putExtra("sRemain_Time", imapElecCarChargingInfo.GetAttributeVal(0, "remain_time"));
|
|
|
- intent.putExtra("sMessage", imapElecCarChargingInfo.GetAttributeVal(0, "c_msg"));
|
|
|
-
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] LoadElectricCarDataFromServer() -> ProcSuccess");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError()
|
|
|
- {
|
|
|
- Log.i(TAG, "[LoadElectricCarDataFromServer] ProcError");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing()
|
|
|
- {
|
|
|
- Log.i(TAG, "[LoadElectricCarDataFromServer] ProcDoing");
|
|
|
- }
|
|
|
-
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 대외향 Call 버튼 점멸 및 On Off 처리
|
|
|
- */
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- protected Handler mLedFlickerHandler = new Handler()
|
|
|
- {
|
|
|
- boolean Flicker = false;
|
|
|
-
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg)
|
|
|
- {
|
|
|
- if(msg.what == 0) // 콜 수신시 또는 발신시 ...
|
|
|
- {
|
|
|
- // 점멸 시작 CallButton LED On
|
|
|
- Flicker = true;
|
|
|
- mLedFlickerHandler.sendEmptyMessageDelayed(1, 500);
|
|
|
- WallPadInterface wpdifc = new WallPadInterface();
|
|
|
- wpdifc.callLEDControll(true);
|
|
|
- }
|
|
|
- else if(msg.what == 1)
|
|
|
- {
|
|
|
-
|
|
|
- mLedFlickerHandler.sendEmptyMessageDelayed(0, 500);
|
|
|
- WallPadInterface wpdifc = new WallPadInterface();
|
|
|
- wpdifc.callLEDControll(false);
|
|
|
-
|
|
|
- }
|
|
|
- else if(msg.what == 2) // 통화중
|
|
|
- {
|
|
|
- Flicker = false;
|
|
|
- }
|
|
|
- else if(msg.what == 4) // 통화종료
|
|
|
- {
|
|
|
- Flicker = false;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- public void GetEnergyServerInfo()
|
|
|
- {
|
|
|
- WallpadDeviceSet devSet = new WallpadDeviceSet(getContext());
|
|
|
- String[] MetringDB = devSet.GetSettingData("에너지관리서버");
|
|
|
- devSet.closeDB();
|
|
|
-
|
|
|
- if (MetringDB != null)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- String devInfo = MetringDB[1];
|
|
|
-
|
|
|
- devInfo = devInfo.replace('(', '_');
|
|
|
- devInfo = devInfo.replace(':', '_');
|
|
|
- devInfo = devInfo.replace(')', '_');
|
|
|
-
|
|
|
- String[] MetringInfo = devInfo.split("_");
|
|
|
-
|
|
|
- // MetringInfo[1] -> 회로수
|
|
|
- // MetringInfo[3] -> 에너지관리서버 사용여부 사용함 or 사용안함
|
|
|
- // MetringInfo[4] -> IP
|
|
|
- // MetringInfo[5] -> IP정보
|
|
|
- // MetringInfo[6] -> 검침일사용자설정
|
|
|
- // MetringInfo[7] -> 사용함 또는 사용안함
|
|
|
-
|
|
|
- if(MetringInfo[3].equals("사용함") == true)
|
|
|
- {
|
|
|
- bUseofNot_EnergyServer = true;
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- Log.d(TAG, "[bUseofNot_EnergyServer] bUseofNot_EnergyServer :"+bUseofNot_EnergyServer);
|
|
|
- }
|
|
|
-
|
|
|
- public boolean GetEnergyAlarm()
|
|
|
- {
|
|
|
- boolean ret = false;
|
|
|
-
|
|
|
- WallpadStatusData DBMGR = null;
|
|
|
- DBMGR = new WallpadStatusData(getContext());
|
|
|
-
|
|
|
- if( DBMGR != null )
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- ret = DBMGR.GetRemoteMetering_Alarm();
|
|
|
- }
|
|
|
- catch(Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- ret = false;
|
|
|
- DBMGR.insertWallPADDB(WallpadStatusData.REMOTE_METERING_ALARM_USE, WallpadStatusData.REMOTE_METERING_ALARM_USE_DEFAULT);
|
|
|
- }
|
|
|
-
|
|
|
- DBMGR.closeDB();
|
|
|
- }
|
|
|
-
|
|
|
- bUseofNot_EnergyAlarm = ret;
|
|
|
- Log.d(TAG, "[bUseofNot_EnergyAlarm] bUseofNot_EnergyAlarm :"+bUseofNot_EnergyAlarm);
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description
|
|
|
- * 에너지 사용량 알림 시간 얻어오기
|
|
|
- * @return int Hour시간 값
|
|
|
- */
|
|
|
- public int GetEnergyAlarmTime()
|
|
|
- {
|
|
|
- int ret = 12;
|
|
|
-
|
|
|
- WallpadStatusData DBMGR = null;
|
|
|
- DBMGR = new WallpadStatusData(getContext());
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- ret = DBMGR.GetRemoteMetering_AlarmTime();
|
|
|
- }
|
|
|
- catch(Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- DBMGR.closeDB();
|
|
|
-
|
|
|
- Log.d(TAG, "[GetEnergyAlarmTime] GetEnergyAlarmTime :"+ret);
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- public void ClearEnergyUsage()
|
|
|
- {
|
|
|
- ResultGetIntent = false;
|
|
|
-
|
|
|
- elect_target = "Error";
|
|
|
- elect_used = "Error";
|
|
|
- elect_info = "Error";
|
|
|
-
|
|
|
- water_target = "Error";
|
|
|
- water_used = "Error";
|
|
|
- water_info = "Error";
|
|
|
-
|
|
|
- gas_target = "Error";
|
|
|
- gas_used = "Error";
|
|
|
- gas_info = "Error";
|
|
|
-
|
|
|
- hotwater_target = "Error";
|
|
|
- hotwater_used = "Error";
|
|
|
- hotwater_info = "Error";
|
|
|
-
|
|
|
- heating_target = "Error";
|
|
|
- heating_used = "Error";
|
|
|
- heating_info = "Error";
|
|
|
- }
|
|
|
-
|
|
|
- // 신규 통화어플 실행을 위한 코드 (JEFF, 2016.05.23)
|
|
|
- // 통화주체를 다루는 enum
|
|
|
- public enum CALLOWNER {
|
|
|
- NONE,
|
|
|
- WALLPAD,
|
|
|
- MOBILE,
|
|
|
- SUB_WALLPAD,
|
|
|
- KITCHEN_TV,
|
|
|
- BATH_PHONE,
|
|
|
- BATH_TV,
|
|
|
- UNIVERSAL_DEVICE,
|
|
|
- ERROR;
|
|
|
- }
|
|
|
- public enum CALLEVENTTYPE {
|
|
|
- RECEIVE_CALL, // 호출 수신 (호출 수신)
|
|
|
- TRYING_CALL, // 호출 시도중 (호출 발신)
|
|
|
- RECEIVE_CALL_2ND, // 멀티콜 수신 (호출 수신)
|
|
|
- RECEIVE_CALL_ACK, // 호출응답 수신 (호출 발신)
|
|
|
- REQUEST_FRONT_MONITORING, // 호출응답 수신 (호출 발신)
|
|
|
- CONNECT_CALL, // 통화 시작
|
|
|
- TERMINATE_CALL, // 통화 종료
|
|
|
- CANCEL_CALL, // 호출 취소
|
|
|
- CANCEL_CALL_2ND, // 멀티콜 호출 취소
|
|
|
- REJECT_CALL, // 호출수신 거절
|
|
|
- REJECT_BUSY_CALL, // 통화중 호출수신 거절
|
|
|
- FORWARD_CALL, // 착신전환 설정
|
|
|
- CALLERID, // Caller ID_OLD
|
|
|
- TIMEOUT_1STCALL, // 1st Call Timeout
|
|
|
- TIMEOUT_2NDCALL, // 2nd Call Timeout
|
|
|
- TIMEOUT_3RDCALL, // 3rd Call Timeout
|
|
|
- MOIP_VIDEO_SET, // MoIP 영상통화 설정
|
|
|
- DOOR_OPEN, // 문열림 설정
|
|
|
- DETECT_STRANGER, // 거동수상자 발생
|
|
|
- NONE;
|
|
|
- }
|
|
|
- public enum CALLTYPE {
|
|
|
- NONE,
|
|
|
- FRONT,
|
|
|
- RESIDENCE,
|
|
|
- LOBBY,
|
|
|
- GUARD,
|
|
|
- PSTN,
|
|
|
- IHUB,
|
|
|
- HISTORY_CALL,
|
|
|
- HISTORY_VISITORPIC,
|
|
|
- FRONT_RECORD, // 현관_영상녹화
|
|
|
- FRONT_TAKEPIC, // 현관_사진촬영
|
|
|
- ERROR,
|
|
|
- }
|
|
|
- public static class CALLTRIGGER {
|
|
|
- public static String CALLOWNER = "CALLOWNER";
|
|
|
- public static String CALLEVENTTYPE = "CALLEVENTTYPE";
|
|
|
- public static String CALLTYPE = "CALLTYPE";
|
|
|
- public enum SOURCE {
|
|
|
- USER,
|
|
|
- CALL_RECEIVE,
|
|
|
- SUBPHONE
|
|
|
- }
|
|
|
- public enum TYPE {
|
|
|
- MENU,
|
|
|
- FRONT,
|
|
|
- LOBBY,
|
|
|
- GUARD,
|
|
|
- RESIDENCE,
|
|
|
- PSTN
|
|
|
- }
|
|
|
- }
|
|
|
- String strWallPadCallPakageName = "kr.co.icontrols.wallpadcall";
|
|
|
-
|
|
|
- public void runWallPadCallAPKByUX(int nScreen) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[runWallPadCallAPKByUX] nScreen [" + nScreen + "]");
|
|
|
-
|
|
|
- CALLOWNER eCallOwner = CALLOWNER.NONE;
|
|
|
- CALLEVENTTYPE eEventType = CALLEVENTTYPE.NONE;
|
|
|
- CALLTYPE eCallType = CALLTYPE.GUARD;
|
|
|
-
|
|
|
- if (nScreen == ID.LINKEDSCREEN.SubCall.Door) {
|
|
|
- if (getIsSubWallpad()) eCallOwner = CALLOWNER.SUB_WALLPAD;
|
|
|
- else eCallOwner = CALLOWNER.WALLPAD;
|
|
|
- eEventType = CALLEVENTTYPE.REQUEST_FRONT_MONITORING;
|
|
|
- eCallType = CALLTYPE.FRONT;
|
|
|
- }
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_Record) {
|
|
|
- eCallType = CALLTYPE.FRONT;
|
|
|
- eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
- }
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_TakePic) {
|
|
|
- eCallType = CALLTYPE.FRONT;
|
|
|
- eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
- }
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Lobby) eCallType = CALLTYPE.LOBBY;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Guard) eCallType = CALLTYPE.GUARD;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Neighboor) eCallType = CALLTYPE.RESIDENCE;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Pstn) eCallType = CALLTYPE.PSTN;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.CallList) eCallType = CALLTYPE.HISTORY_CALL;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Visitor) eCallType = CALLTYPE.HISTORY_VISITORPIC;
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runWallPadCallAPKByUX] NOT Supported nScreen!! [" + nScreen + "]");
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[runWallPadCallAPKByUX] eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
|
|
|
-
|
|
|
- if (getIsSubWallpad()) {
|
|
|
- // 서브월패드는 국선 기능을 제공하지 않는다.
|
|
|
- if (eCallType != CALLTYPE.PSTN) runCallMainActivity(eCallOwner, eEventType, eCallType);
|
|
|
- }
|
|
|
- else {
|
|
|
- runCallMainActivity(eCallOwner, eEventType, eCallType);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runWallPadCallAPKByUX(int nScreen)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void runWallPadCallAPKByUX(int nScreen, int nEmerState) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[runWallPadCallAPKByUX] nScreen [" + nScreen + "], nEmerState [" + nEmerState + "]");
|
|
|
-
|
|
|
- CALLOWNER eCallOwner = CALLOWNER.NONE;
|
|
|
- CALLEVENTTYPE eEventType = CALLEVENTTYPE.NONE;
|
|
|
- CALLTYPE eCallType = CALLTYPE.GUARD;
|
|
|
-
|
|
|
- if (nScreen == ID.LINKEDSCREEN.SubCall.Door) {
|
|
|
- if (getIsSubWallpad()) eCallOwner = CALLOWNER.SUB_WALLPAD;
|
|
|
- else eCallOwner = CALLOWNER.WALLPAD;
|
|
|
- eEventType = CALLEVENTTYPE.REQUEST_FRONT_MONITORING;
|
|
|
- eCallType = CALLTYPE.FRONT;
|
|
|
- }
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_Record) {
|
|
|
- eCallType = CALLTYPE.FRONT;
|
|
|
- eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
- }
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_TakePic) {
|
|
|
- eCallType = CALLTYPE.FRONT;
|
|
|
- eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
- }
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Lobby) eCallType = CALLTYPE.LOBBY;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Guard) eCallType = CALLTYPE.GUARD;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Neighboor) eCallType = CALLTYPE.RESIDENCE;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Pstn) eCallType = CALLTYPE.PSTN;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.CallList) eCallType = CALLTYPE.HISTORY_CALL;
|
|
|
- else if (nScreen == ID.LINKEDSCREEN.SubCall.Visitor) eCallType = CALLTYPE.HISTORY_VISITORPIC;
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runWallPadCallAPKByUX] NOT Supported nScreen!! [" + nScreen + "]");
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[runWallPadCallAPKByUX] eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
|
|
|
-
|
|
|
- if (getIsSubWallpad()) {
|
|
|
- // 서브월패드는 국선 기능을 제공하지 않는다.
|
|
|
- if (eCallType != CALLTYPE.PSTN) runCallMainActivity(eCallOwner, eEventType, eCallType, nEmerState);
|
|
|
- }
|
|
|
- else {
|
|
|
- runCallMainActivity(eCallOwner, eEventType, eCallType, nEmerState);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runWallPadCallAPKByUX(int nScreen, int nEmerState)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[runCallMainActivity] getTopActivity()[" + getTopActivity() + "], eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
|
|
|
- //if (!Common.bWallPadCallLive) {
|
|
|
- if (!getTopActivity().equals(strWallPadCallPakageName)) {
|
|
|
- // 통화어플을 실행시킨다.
|
|
|
- sendLCDBacklightStatus(true);
|
|
|
-
|
|
|
- ComponentName mComponentName = new ComponentName("kr.co.icontrols.wallpadcall", "kr.co.icontrols.wallpadcall.MainActivity");
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
-// mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- mIntent.putExtra(CALLTRIGGER.CALLOWNER, eCallOwner.toString());
|
|
|
- mIntent.putExtra(CALLTRIGGER.CALLEVENTTYPE, eEventType.toString());
|
|
|
- mIntent.putExtra(CALLTRIGGER.CALLTYPE, eCallType.toString());
|
|
|
- mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- mIntent.setComponent(mComponentName);
|
|
|
- startActivity(mIntent);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runCallMainActivity] WallPadCall is already running!!");
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runCallMainActivity()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Edited by jeff (2020.06.22)
|
|
|
- * LCD 잔상 현장 복구/보호를 위해 실행되고 있는 LCD Keeper를 종료하기 위해, 통화 App이 실행되면서
|
|
|
- * backlight를 On하기 전에 이를 알리는 BR를 수신하여 LCD Keeper를 종료한다.
|
|
|
- * @param bOn
|
|
|
- */
|
|
|
- private void sendLCDBacklightStatus(boolean bOn) {
|
|
|
- try {
|
|
|
- Log.d(TAG,"[sendLCDBacklightStatus] bOn [" + bOn + "]");
|
|
|
- Intent mIntent = new Intent();
|
|
|
- if (bOn) mIntent.setAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_ON);
|
|
|
- else mIntent.setAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_OFF);
|
|
|
- getApplicationContext().sendBroadcast(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendLCDBacklightStatus(boolean bOn)");
|
|
|
- e.printStackTrace() ;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType, int nEmerState) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[runCallMainActivity] getTopActivity() [" + getTopActivity() + "], eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "], nEmerState [" + nEmerState + "]");
|
|
|
- //if (!Common.bWallPadCallLive) {
|
|
|
- if (!getTopActivity().equals(strWallPadCallPakageName)) {
|
|
|
- // 통화어플을 실행시킨다.
|
|
|
- sendLCDBacklightStatus(true);
|
|
|
-
|
|
|
- if (eEventType == CALLEVENTTYPE.DETECT_STRANGER) {
|
|
|
- if (nEmerState >= 0) {
|
|
|
- if (nEmerState != WallpadStatusData.GUARD_OUT)
|
|
|
- Common.SendAppFinishReqBR(getApplicationContext());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ComponentName mComponentName = new ComponentName("kr.co.icontrols.wallpadcall", "kr.co.icontrols.wallpadcall.MainActivity");
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
-// mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
- mIntent.putExtra(CALLTRIGGER.CALLOWNER, eCallOwner.toString());
|
|
|
- mIntent.putExtra(CALLTRIGGER.CALLEVENTTYPE, eEventType.toString());
|
|
|
- mIntent.putExtra(CALLTRIGGER.CALLTYPE, eCallType.toString());
|
|
|
- mIntent.putExtra("EMERGENCY_STATE", nEmerState);
|
|
|
- if (nEmerState != WallpadStatusData.GUARD_OUT) Common.SendAppFinishReqBR(getApplicationContext());
|
|
|
- mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- mIntent.setComponent(mComponentName);
|
|
|
- startActivity(mIntent);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runCallMainActivity] WallPadCall is already running!!");
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType, int nEmerState)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private String getTopActivity() {
|
|
|
- try {
|
|
|
- ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
- List<ActivityManager.RunningTaskInfo> mTaskInfo = mActivityManager.getRunningTasks(1);
|
|
|
- Log.d(TAG,"[isMainActivityTop] getClassName = " + mTaskInfo.get(0).topActivity.getClassName());
|
|
|
- ComponentName mComponentName = mTaskInfo.get(0).topActivity;
|
|
|
- Log.d(TAG,"[isMainActivityTop] getPackageName = " + mComponentName.getPackageName());
|
|
|
- return mComponentName.getPackageName();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getTopActivity()");
|
|
|
- e.printStackTrace();
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 월패드에 설치된 APP들의 패키지 명 및 버전을 저장하는 클래스
|
|
|
- * **/
|
|
|
- class PackageVersionInfo {
|
|
|
- protected String strPackageName;
|
|
|
- protected String strPackageVersion;
|
|
|
-
|
|
|
- public PackageVersionInfo(String strName, String strVersion) {
|
|
|
- strPackageName = strName;
|
|
|
- strPackageVersion = strVersion;
|
|
|
- }
|
|
|
-
|
|
|
- public String getPackageName() {
|
|
|
- return strPackageName;
|
|
|
- }
|
|
|
- public String getPackageVersion() {
|
|
|
- return strPackageVersion;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 통화 타임아웃 DB정보 초기화 (무조건 사용함으로 변경)
|
|
|
- * **/
|
|
|
- public void setCallAppTimeoutAsDefault() {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
|
|
|
- try {
|
|
|
- mWallpadDeviceSet.Set_CallAppCallTimeout(true);
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] setCallAppTimeoutAsDefault()");
|
|
|
- e.printStackTrace();
|
|
|
- if (mWallpadDeviceSet != null) mWallpadDeviceSet.closeDB();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 동호 설정 화면 나오게 처리
|
|
|
- * **/
|
|
|
- private void startManagerSettingSetAddress() {
|
|
|
- try {
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
- MAINStatus = MAIN_WAIT_SETIP;
|
|
|
- mIntent.setComponent(new ComponentName("com.artncore.managersetting", "com.artncore.managersetting.ui.activities.SetAddress"));
|
|
|
- mIntent.putExtra("KIND", "SOLO");
|
|
|
- startActivity(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] startManagerSettingSetAddress()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private Handler mGetCallHistoryCheckHandler = new Handler() {
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg) {
|
|
|
- if (msg.what == 0) {
|
|
|
-// CheckCallData_CalledCountAndVisitorCount();
|
|
|
- checkEventNotifications();
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- /**
|
|
|
- * 음력 데이터를 raw resource에서 wallpaddata폴더 밑으로 복사한다.
|
|
|
- * **/
|
|
|
- private void copyDataBase(String OutputDBPath) throws IOException {
|
|
|
- // Open your local db as the input stream
|
|
|
- //InputStream myInput = this.getAssets().open("luna_db.db");
|
|
|
- InputStream myInput = getResources().openRawResource(R.raw.luna_db);
|
|
|
- // Path to the just created empty db
|
|
|
- String outFileName = OutputDBPath;
|
|
|
-
|
|
|
- // Open the empty db as the output stream
|
|
|
- OutputStream myOutput = new FileOutputStream(outFileName);
|
|
|
-
|
|
|
- // transfer bytes from the inputfile to the outputfile
|
|
|
- byte[] buffer = new byte[1024];
|
|
|
- int length;
|
|
|
- while ((length = myInput.read(buffer)) > 0)
|
|
|
- {
|
|
|
- myOutput.write(buffer, 0, length);
|
|
|
- }
|
|
|
-
|
|
|
- // Close the streams
|
|
|
- myOutput.flush();
|
|
|
- myOutput.close();
|
|
|
- myInput.close();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- protected Handler mLCD_SleepHandler = new Handler()
|
|
|
- {
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg)
|
|
|
- {
|
|
|
- if (msg.what == 0) {
|
|
|
- try {
|
|
|
- if (m_ModelHouseSleepModeRelease == true) {
|
|
|
- if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- }
|
|
|
- else {
|
|
|
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
- }
|
|
|
- Log.i(TAG, "[SAMPLE SLEEP MODE] Never Sleep Run ~~~");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- public void runIcon(int nIconID) {
|
|
|
- try {
|
|
|
- Log.d(TAG, "[runIcon] nIconID [" + nIconID + "]");
|
|
|
-
|
|
|
- if (nIconID == ID.ICONS.MENUS.MAIN_ELEVATOR.getID()) {
|
|
|
- // DB를 체크해서 층표시이면 팝업을 띄우고 아니면 바로 호출하도록 한다
|
|
|
- String strElevShortEnabled = Common.getSubDevListItem(this.getContext() ,Common.SETTING_ITEM_SUB_DEVICE_ELEVATOR);
|
|
|
- Log.d(TAG, "[runIcon] strElevShortEnabled [" + strElevShortEnabled + "]");
|
|
|
-
|
|
|
- if (strElevShortEnabled.contains("사용함") && strElevShortEnabled.contains("기본")) {
|
|
|
- Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
- Intent intent = new Intent(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI, null);
|
|
|
- intent.putExtra(Common.BR_MAIN_NOTI.KIND, Common.BR_MAIN_NOTI.CALL_ELEVATOR_DOWN);
|
|
|
- getContext().sendBroadcast(intent);
|
|
|
- }
|
|
|
- else {
|
|
|
- ((MainActivity)(getContext())).StartPopup(ID_OLD.SCREENS.ElevatorPopupScreen);
|
|
|
- }
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.MAIN_LIGHTS_OUT.getID()) {
|
|
|
- ((MainActivity)(getContext())).StartPopup(ID.POPUPS.POPUP_COLLECTIVELIGHTCTRL);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.MAIN_CALRENDAR.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.TimeSetting);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.MAIN_WEATHER.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Weather);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_FRONT.getID()) {
|
|
|
-// Common.command_iGW200( this.getContext(), Common.IGW200_DOOR_MONITERING );
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Door);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_LOBBY.getID()) {
|
|
|
- // 로비는 수신시에만 출력되는 화면이므로 해당코드 없음
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_NEIGHBOR.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Neighboor);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_GUARD.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Guard);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_PHONE.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Pstn);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_CALLHISTORY.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.CallList);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.TALK_VISITORPIC.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Visitor);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_LIGHT.getID()) {
|
|
|
- // 모델별 설정에 따라 구분하여 호출하는 기능 추가해야함
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDC_EachLamp);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_HEATING.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Heating_V1);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_GAS.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Gas);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_DOORLOCK.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.DoorLockWL);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_VENT.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.ChangAir_Normal);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_OUTLET.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Concent);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_LIVINGLIGHT.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDC_LivingLamp);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_AIRQUALTY.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.AirQualty);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_ELECCOOKTOP.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.ElecCooktop);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_COOKTOPOUTLET.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.CooktopOutlet);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.CTRL_SYSTEMAIRCON.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.SystemAircon);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_NOTICE.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Notice);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_WEATHER.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Weather);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_MEMO.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Memo);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_E_FRAME.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.AutoPicture);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_SCHEDULE.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Schedule);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_CCTV.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Cctv);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_PARKING.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Parking);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_PARKINGLIST.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.ParkingList);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_ELECTRICCAR.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.ElecCar);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_INTERLAYERNOISE.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.InterlayerNoiseHistory);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_VISITEDVEHICLEREGI.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.VisitedVehicleRegi);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_BANDLOCATION.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.BandLocation);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ADD_GUARDINGSTREETLAMP.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.GuardingStreetLamp);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SECURITY_SETARMED.getID()) {
|
|
|
- runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.SecurityMain);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SECURITY_DEVICELINK.getID()) {
|
|
|
- runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.LinkDeviceSet);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SECURITY_DEVICELINKSLEEP.getID()) {
|
|
|
- runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.lnkBedDeviceSet);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SECURITY_ACCESSHISTORY.getID()) {
|
|
|
- runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.AccessHistoryDoor);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SECURITY_VISITORVIDEO.getID()) {
|
|
|
- runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.VisitorVideo);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_SMARTPANEL.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.SmartPanel);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_SMARTLIGHT.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.SmartLight);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_SMARTOUTLET.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.SmartOutlet);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_ENERGYMETER.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.IEnergy);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_REMOTEMETER.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.RemoteMeter);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_ENERGYCONSUMPTION.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.EnergyMgr);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.ENERGY_ENERGYCOSTTABLE.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.CostTable);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_CONFIG.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.Configuration);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_CLREANSCREEN.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.CleanLcd);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_PWCHANGE.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.PassWordChange);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_MORNINGCALL.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.MoningCall);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_SMARTKEY.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.SmartKey);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_SMARTBAND.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.SmartBand);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_ACCESSCARD.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.RfCard);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_CALENDAR.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.TimeSetting);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_REMOTECALLUSER.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.RemoteCallUser);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_REMOTECTRL.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.MobileDeviceReg);
|
|
|
- }
|
|
|
- else if (nIconID == ID.ICONS.MENUS.SETTING_OCCUPANCYSENSOR.getID()) {
|
|
|
- m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.OccupancySensorConfig);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runShortcut] nIconID is not supported!! [" + nIconID + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runShortcut(int nIconID)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void runSecurityAPK(int nScreenID) {
|
|
|
- try {
|
|
|
- WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
- int nSecurityMode = wdb.GetAlarmStatus();
|
|
|
- wdb.closeDB();
|
|
|
-
|
|
|
- Log.w(TAG, "[runSecurityAPK] nSecurityMode [" + nSecurityMode + "]");
|
|
|
-
|
|
|
- if (nSecurityMode == WallpadStatusData.GUARD_IN) {
|
|
|
- // 팝업 띄워서 재택모드 해제 유도
|
|
|
- StartPopup(ID.POPUPS.POPUP_RELEASEINMODE);
|
|
|
-// ((MainActivity)(getContext())).StartPopup(ID_OLD.SCREENS.SecurityReleasePopupScreen);
|
|
|
- }
|
|
|
- else if (nSecurityMode == WallpadStatusData.OUT_MODE) {
|
|
|
- // 팝업 띄워서 외출모드 해제 유도
|
|
|
- StartPopup(ID.POPUPS.POPUP_RELEASEOUTMODE);
|
|
|
-// ((MainActivity)(getContext())).StartPopup(ID_OLD.SCREENS.OutModeReleasePopupScreen);
|
|
|
- }
|
|
|
- else if (nSecurityMode == WallpadStatusData.ALARM_STOP) {
|
|
|
- // 알람 화면을 띄우도록 한다.
|
|
|
- runEmergencyAPK(this, getAlarmType(), 2 , "모름");
|
|
|
- }
|
|
|
- else {
|
|
|
- m_CallSubMenuScreen.callStartSecurityAPK(nScreenID);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runSecurityAPK(int nScreenID)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void runEmergencyAPK(Context context, int nScreenID, int startOption, String detailInfo) {
|
|
|
- try {
|
|
|
- // DB 체크 해서 띄우 도록 한다.
|
|
|
- int [] m_EmerMenuList = new int[4];
|
|
|
- m_EmerMenuList[0] = ID.LINKEDSCREEN.SubEmergency.EMER_ALARM;
|
|
|
- m_EmerMenuList[1] = ID.LINKEDSCREEN.SubEmergency.FIRE_ALARM;
|
|
|
- m_EmerMenuList[2] = ID.LINKEDSCREEN.SubEmergency.BREAKIN_ALARM;
|
|
|
- m_EmerMenuList[3] = ID.LINKEDSCREEN.SubEmergency.LADDER_ALARM;
|
|
|
-
|
|
|
- Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
|
- intent.putExtra(Common.MENU_ID_LIST, m_EmerMenuList); // KEY : MENU_ID_LIST
|
|
|
- intent.putExtra(Common.MENU_START_ID, nScreenID); // KEY : MENU_START_ID
|
|
|
- intent.putExtra(Common.MENU_START_OPTION, startOption); // KEY : MENU_START_OPTION
|
|
|
- intent.putExtra(Common.MENU_DETAIL_INFO, detailInfo);
|
|
|
- intent.setComponent(new ComponentName(Common.EMER_ALARM_APK, Common.EMER_ALARM_APK + Common.MAIN_ACTIVITY ));
|
|
|
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- context.startActivity(intent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runEmergencyAPK(Context context, int nScreenID, int startOption, String detailInfo)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public int getAlarmType() {
|
|
|
- WallpadStatusData SetData = new WallpadStatusData(this.getContext());
|
|
|
- int alarmtype = SetData.GetAlarmType();
|
|
|
- SetData.closeDB();
|
|
|
- int Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.EMER_ALARM;
|
|
|
-
|
|
|
- switch (alarmtype) {
|
|
|
- case WallpadStatusData.ALARM_ALERT:
|
|
|
- Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.FIRE_ALARM;
|
|
|
- break;
|
|
|
-
|
|
|
- case WallpadStatusData.ALARM_EMM:
|
|
|
- Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.EMER_ALARM;
|
|
|
- break;
|
|
|
-
|
|
|
- case WallpadStatusData.ALARM_EVAC:
|
|
|
- Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.LADDER_ALARM;
|
|
|
- break;
|
|
|
-
|
|
|
- case WallpadStatusData.ALARM_INVADE:
|
|
|
- Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.BREAKIN_ALARM;
|
|
|
- break;
|
|
|
- }
|
|
|
- return Menu_Start_Option;
|
|
|
- }
|
|
|
-
|
|
|
- public void runGoogleLauncher() {
|
|
|
- try {
|
|
|
- ComponentName mComponentName = new ComponentName("com.android.launcher3", "com.android.launcher3.Launcher");
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
- mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- mIntent.setComponent(mComponentName);
|
|
|
- startActivity(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runGoogleLauncher()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void setCallAppRunning(boolean bRunning) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[setCallAppRunning] bRunning [" + bRunning + "]");
|
|
|
- WallpadStatusData DBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
- DBMGR.SetCallAPKStatus(bRunning);
|
|
|
- DBMGR.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] setCallAppRunning(boolean bRunning)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void registerMainActivityBR() {
|
|
|
- try {
|
|
|
- IntentFilter filter = new IntentFilter();
|
|
|
- filter.addAction(Common.BR_REQUEST_APK_RUN);
|
|
|
- filter.addAction(ACTION_TIME_TICK);
|
|
|
- filter.addAction(Common.BR_PLAY_SOUND);
|
|
|
- filter.addAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_ON);
|
|
|
- filter.addAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_OFF);
|
|
|
- mContext.registerReceiver(MainActivityBroadcastReceiver, filter);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] registerMainActivityBR()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- String strAPKType = "APKType";
|
|
|
- String strMenuType = "MenuType";
|
|
|
- String strSoundID = "SoundID";
|
|
|
- BroadcastReceiver MainActivityBroadcastReceiver = new BroadcastReceiver() {
|
|
|
- @Override
|
|
|
- public void onReceive(Context context, Intent intent) {
|
|
|
- try {
|
|
|
- if (((MainActivity)(getContext())).getMainSubScreenLoadingComplite() == false)
|
|
|
- return;
|
|
|
-
|
|
|
- String strActionName = intent.getAction();
|
|
|
-
|
|
|
- Log.d(TAG,"[MainActivityBroadcastReceiver] strActionName [" + strActionName + "]");
|
|
|
- if (strActionName.equals(Common.BR_REQUEST_APK_RUN)) {
|
|
|
- Log.d(TAG, "[MainActivityBroadcastReceiver] (BR.Action) BR_REQUEST_APK_RUN");
|
|
|
- int nAPKType = intent.getIntExtra(strAPKType,0);
|
|
|
- int nMenuType = intent.getIntExtra(strMenuType,0);
|
|
|
- int nCardNum = intent.getIntExtra(Common.BR_MAIN_NOTI.CARD_NUM, 0);
|
|
|
- Log.d(TAG, "[MainActivityBroadcastReceiver] nAPKType [" + nAPKType + "], nMenuType [" + nMenuType + "], nCardNum [" + nCardNum + "]");
|
|
|
- if (nAPKType == ID.LINKEDSCREEN.SubCall.BASE) {
|
|
|
- m_CallSubMenuScreen.callStartCallAPK(nMenuType);
|
|
|
- }
|
|
|
- else if (nAPKType == ID.LINKEDSCREEN.SubMenuAddService.BASE) {
|
|
|
- m_CallSubMenuScreen.callStartAddServiceAPK(nMenuType, nCardNum);
|
|
|
- }
|
|
|
- }
|
|
|
- else if (strActionName.equals(ACTION_TIME_TICK)) {
|
|
|
-// checkTimeTasks();
|
|
|
- if (bLCDKeeperUsage) ctrlLCDKeeper();
|
|
|
- }
|
|
|
- else if (strActionName.equals(Common.BR_PLAY_SOUND)) {
|
|
|
- int nSoundID = intent.getIntExtra(strSoundID,0);
|
|
|
- Sound().Play(nSoundID);
|
|
|
- }
|
|
|
- else if (strActionName.equals(define.NOTIFY_ACNAME_LCD_BACKLIGHT_ON)) {
|
|
|
- Log.d(TAG, "[MainActivityBroadcastReceiver] (BR.Action) NOTIFY_ACNAME_LCD_BACKLIGHT_ON: bLCDKeeperUsage [" + bLCDKeeperUsage + "], nLCDKeeperType [" + getLCDKeeperType(nLCDKeeperType) + "]");
|
|
|
- if (bLCDKeeperUsage) {
|
|
|
- bLCDBacklightPower = true;
|
|
|
- ctrlLCDKeeper();
|
|
|
- }
|
|
|
- }
|
|
|
- else if (strActionName.equals(define.NOTIFY_ACNAME_LCD_BACKLIGHT_OFF)) {
|
|
|
- Log.d(TAG, "[MainActivityBroadcastReceiver] (BR.Action) NOTIFY_ACNAME_LCD_BACKLIGHT_OFF: bLCDKeeperUsage [" + bLCDKeeperUsage + "], nLCDKeeperType [" + getLCDKeeperType(nLCDKeeperType) + "]");
|
|
|
- if (bLCDKeeperUsage) {
|
|
|
- bLCDBacklightPower = false;
|
|
|
- ctrlLCDKeeper();
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG,"[MainActivityBroadcastReceiver] Not supported strActionName [" + strActionName + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] MainActivityBroadcastReceiver()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- public Common.GUI_TYPE checkGUIType(Context context) {
|
|
|
- try {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(context);
|
|
|
- String strGUIType = mWallpadDeviceSet.GetMainGUISelect();
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
- if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_DEFAULT)) return Common.GUI_TYPE.STANDARD;
|
|
|
- else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_METRO)) return Common.GUI_TYPE.METRO;
|
|
|
- else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HYOSUNG_CTR_ON)) return Common.GUI_TYPE.HYOSUNG_CTRL_ON;
|
|
|
- else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HYOSUNG_CTR_OFF)) return Common.GUI_TYPE.HYOSUNG_CTRL_OFF;
|
|
|
- else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HIMCHAN)) return Common.GUI_TYPE.HIMCHAN;
|
|
|
- else return Common.GUI_TYPE.STANDARD;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkGUIType(Context context)");
|
|
|
- e.printStackTrace();
|
|
|
- return Common.GUI_TYPE.STANDARD;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void finishActivity() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[finishActivity]");
|
|
|
- super.finish();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] finishActivity()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // MainActivity Handler
|
|
|
- public final class HANDLERMSG {
|
|
|
- public final static int CHECK_FLIPPER_MAINSCREEN_ID = 100;
|
|
|
- public final static int CHECK_WALLPAD_CAMERA_INIT = 200;
|
|
|
- public final static int CHECK_WALLPAD_CAMERA_REMOVE = 300;
|
|
|
- public final static int CHECK_WALLPAD_CAMERA_RESET = 400;
|
|
|
- public final static int CHECK_WALLPAD_CAMERA_CHECK = 500;
|
|
|
- public final static int FINISH_ACTIVITY = 999;
|
|
|
- }
|
|
|
-
|
|
|
- public Handler MainHandler = new Handler(Looper.getMainLooper()) {
|
|
|
- public void handleMessage(Message msg) {
|
|
|
- Log.d(TAG, "[MainHandler] MainHandler : what [" + msg.what + "], arg1 [" + msg.arg1 + "], arg2 [" + msg.arg2 + "]");
|
|
|
- switch (msg.what) {
|
|
|
- case HANDLERMSG.CHECK_FLIPPER_MAINSCREEN_ID:
|
|
|
-// checkMainPage();
|
|
|
- break;
|
|
|
-
|
|
|
- case HANDLERMSG.CHECK_WALLPAD_CAMERA_INIT:
|
|
|
- if (getWallPadCameraUsage()) {
|
|
|
- initMyVideoSurfaceLayout();
|
|
|
- sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_REMOVE, 0, 0, 3000); // 월패드 카메라 영상을 띄우고 5초뒤에 없앤다.
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case HANDLERMSG.CHECK_WALLPAD_CAMERA_REMOVE:
|
|
|
- if (getWallPadCameraUsage()) removeMyVideoSurfaceLayout();
|
|
|
- break;
|
|
|
-
|
|
|
- case HANDLERMSG.CHECK_WALLPAD_CAMERA_RESET:
|
|
|
- if (getWallPadCameraUsage()) resetCameraService();
|
|
|
- break;
|
|
|
-
|
|
|
- case HANDLERMSG.CHECK_WALLPAD_CAMERA_CHECK:
|
|
|
- checkCameraLoading();
|
|
|
- break;
|
|
|
-
|
|
|
- case HANDLERMSG.FINISH_ACTIVITY:
|
|
|
- finishActivity();
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- Log.d(TAG, "MainHandler : " + msg.what);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- public void sendHandlerMsg(int what, int arg1, int arg2) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[sendHandlerMsg] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "]");
|
|
|
- Message HandleMsg = MainHandler.obtainMessage();
|
|
|
- HandleMsg.what = what;
|
|
|
- HandleMsg.arg1 = arg1;
|
|
|
- HandleMsg.arg2 = arg2;
|
|
|
- MainHandler.sendMessage(HandleMsg);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void sendHandlerMsgDelayed(int what, int arg1, int arg2, long delay) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[sendHandlerMsgDelayed] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], delay [" + delay + "]");
|
|
|
- Message HandleMsg = MainHandler.obtainMessage();
|
|
|
- HandleMsg.what = what;
|
|
|
- HandleMsg.arg1 = arg1;
|
|
|
- HandleMsg.arg2 = arg2;
|
|
|
- MainHandler.sendMessageDelayed(HandleMsg, delay);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean savePresetValue(String strPresetValues) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[savePresetValue] strPresetValues [" + strPresetValues + "]");
|
|
|
- String[] strParse_01 = strPresetValues.split("/");
|
|
|
- int presetid = Integer.parseInt(strParse_01[0]);
|
|
|
- String[] strParse_02 = strParse_01[1].split(":");
|
|
|
- String onoff = strParse_02[0];
|
|
|
- int dim = Integer.parseInt(strParse_02[1]);
|
|
|
- int color = Integer.parseInt(strParse_02[2]);
|
|
|
-
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(mContext);
|
|
|
- boolean result = mWallpadStatusData.setLivinglightModeCtrlUnitValues(presetid, 0, "on", dim, color);
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
- Log.d(TAG, "[savePresetValue] result [" + result + "], onoff [" + onoff + "], dim [" + dim + "], color [" + color + "]");
|
|
|
- if (result) {
|
|
|
- mLightInfo.mPreset[presetid].mLights[0].ONOFF = onoff;
|
|
|
- mLightInfo.mPreset[presetid].mLights[0].DIM = dim;
|
|
|
- mLightInfo.mPreset[presetid].mLights[0].COLOR = color;
|
|
|
- Log.d(TAG,"[savePresetValue] OnOff [" + mLightInfo.mPreset[presetid].mLights[0].ONOFF + "], Level [" + mLightInfo.mPreset[presetid].mLights[0].DIM + "], Color [" + mLightInfo.mPreset[presetid].mLights[0].COLOR + "]");
|
|
|
- return true;
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG,"[savePresetValue] Fail to save light preset values!!");
|
|
|
- return false;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] savePresetValue(String strPresetValues)");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void initProximitySensor() {
|
|
|
- try {
|
|
|
- WallpadStatusData mWallpadStatusData = new WallpadStatusData(this);
|
|
|
- int nProximitySensorLevel = mWallpadStatusData.GetCloseSensorValue();
|
|
|
- mWallpadStatusData.closeDB();
|
|
|
-
|
|
|
- Log.i(TAG, "[initProximitySensor] nProximitySensorLevel = " + nProximitySensorLevel);
|
|
|
-
|
|
|
- if (nProximitySensorLevel < 0 || 5 < nProximitySensorLevel) {
|
|
|
- Log.w(TAG, "[initProximitySensor] nProximitySensorLevel is out of range!!");
|
|
|
- nProximitySensorLevel = 5;
|
|
|
- }
|
|
|
-
|
|
|
- int nResult = mIOInterface.setProximitySensorLevel(nProximitySensorLevel * 3);
|
|
|
- Log.i(TAG, "[initProximitySensor] nResult = " + nResult);
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] initProximitySensor()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- private boolean checkInterFloorNoiseError() {
|
|
|
- try {
|
|
|
- WallpadStatusData wsd = new WallpadStatusData(getContext());
|
|
|
- String stSensorStatus = wsd.Get_InterlayerSensor_Status();
|
|
|
- wsd.closeDB();
|
|
|
-
|
|
|
- // 센서 정상 : false, 센서 이상 : true
|
|
|
- Log.i(TAG, "[checkInterFloorNoiseError] stSensorStatus : " + stSensorStatus);
|
|
|
- if (stSensorStatus.equalsIgnoreCase(define.INTERLAYER_NOISE_STATUS_NORMAL)) return false;
|
|
|
- else return true;
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkInterFloorNoiseError()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean checkInterFloorNoiseFuncUsage() {
|
|
|
- try {
|
|
|
- WallpadStatusData wsd = new WallpadStatusData(getContext());
|
|
|
- boolean bUsage = wsd.GetNoisePopupUse();
|
|
|
- wsd.closeDB();
|
|
|
-
|
|
|
- return bUsage;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkInterFloorNoiseFuncUsage()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- /**
|
|
|
- * 현관호출 or 전화호출시 사용되는 keycode - Broadcast 을 송신한다.
|
|
|
- *
|
|
|
- * @param nKeyCode - (int) 송신할 keycode
|
|
|
- * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
- */
|
|
|
- private int sendKeyEventBR(int nKeyCode) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[sendKeyEventBR] nKeyCode [" + nKeyCode +"] -> EVENT_DEVICE_CONTROL");
|
|
|
- KeyEvent event = new KeyEvent(KeyEvent.ACTION_UP, nKeyCode);
|
|
|
- Intent intent = new Intent("EVENT_DEVICE_CONTROL", null);
|
|
|
- intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
|
|
|
- intent.putExtra("keycode",nKeyCode);
|
|
|
- sendBroadcast(intent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendKeyEventBR(int nKeyCode) [" + nKeyCode + "]");
|
|
|
- e.printStackTrace();
|
|
|
- return -100;
|
|
|
- }
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- // 카카오 연동 관련
|
|
|
- public static boolean bKakaoiEnable = false;
|
|
|
-
|
|
|
-
|
|
|
- // run Kakao i floating button 실행
|
|
|
- private void startKakaoiFloatingBTN() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[startKakaoiFloatingBTN] ========== Run Kakao i floating button ==========");
|
|
|
- ComponentName mComponentName = new ComponentName("kr.co.icontrols.wallpadglobalbutton", "kr.co.icontrols.wallpadglobalbutton.MainActivity");
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
- mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- mIntent.setComponent(mComponentName);
|
|
|
- startActivity(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] startKakaoiFloatingBTN()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void Send_NotiSmartSwitch(int nNoticeCnt, int nParcelCnt, int nVisitorPicCnt)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- Intent intentBR = new Intent();
|
|
|
- intentBR.setAction(define.DRIVER_ISD_NOTIINFO);
|
|
|
- //if( m_NoticeCNT > 0 || m_ParcelCNT > 0 || m_InCallCNT > 0 || m_VisitorCNT > 0 )
|
|
|
- {
|
|
|
- // 아이콘 활성화
|
|
|
- if( nNoticeCnt > 0 )
|
|
|
- {
|
|
|
- Log.d(TAG, "LOG : NOTICE CNT INCREASED ++");
|
|
|
- intentBR.putExtra(define.NOTIBR_ISD_NOTICECNT, nNoticeCnt);
|
|
|
- Log.d(TAG, "NoticeCNT BroadCast Added");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- intentBR.putExtra(define.NOTIBR_ISD_NOTICECNT, 0);
|
|
|
- Log.d(TAG, "NoticeCNT ZERO Added");
|
|
|
- }
|
|
|
-
|
|
|
- if( nParcelCnt > 0 )
|
|
|
- {
|
|
|
- Log.d(TAG, "LOG : Parcel CNT INCREASED ++");
|
|
|
- intentBR.putExtra(define.NOTIBR_ISD_PARCELCNT, nParcelCnt);
|
|
|
- Log.d(TAG, "ParcelCNT BroadCast Added");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- intentBR.putExtra(define.NOTIBR_ISD_PARCELCNT, 0);
|
|
|
- Log.d(TAG, "ParcelCNT ZERO Added");
|
|
|
- }
|
|
|
-
|
|
|
- if( nVisitorPicCnt > 0 )
|
|
|
- {
|
|
|
- Log.d(TAG, "LOG : VISITOR CNT INCREASED ++");
|
|
|
- intentBR.putExtra(define.NOTIBR_ISD_VISITORCNT, nVisitorPicCnt);
|
|
|
- Log.d(TAG, "VisitorCNT BroadCast Added");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- intentBR.putExtra(define.NOTIBR_ISD_VISITORCNT, nVisitorPicCnt);
|
|
|
- Log.d(TAG, "VisitorCNT ZERO Added");
|
|
|
- }
|
|
|
-
|
|
|
- // 알림정보 intent BroadCast
|
|
|
- getContext().sendBroadcast(intentBR);
|
|
|
- }
|
|
|
- }
|
|
|
- catch( Exception e)
|
|
|
- {
|
|
|
- Log.e(TAG, e.toString());
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-// private void startKakaoiVoiceAgent() {
|
|
|
-// try {
|
|
|
-// Log.i(TAG, "[startKakaoiVoiceAgent] ========== Start Kakao i Voice Agent ==========");
|
|
|
-// Intent mIntent = new Intent("com.kakao.i.agent.START_SERVICE").setPackage("com.kakao.i.test.sandbox");
|
|
|
-// ContextCompat.startForegroundService(this, mIntent);
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.e(TAG, "[Exception] startKakaoiVoiceAgent()");
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// private void enableKakaoiVoiceAgent() {
|
|
|
-// try {
|
|
|
-// Log.i(TAG, "[enableKakaoiVoiceAgent] ========== Enable Kakao i Voice Agent ==========");
|
|
|
-// Intent mIntent = new Intent("com.kakao.i.agent.ENABLE_KAKAO_I").setPackage("com.kakao.i.test.sandbox");
|
|
|
-// ContextCompat.startForegroundService(this, mIntent);
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.e(TAG, "[Exception] enableKakaoiVoiceAgent()");
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// private void diableKakaoiVoiceAgent() {
|
|
|
-// try {
|
|
|
-// Log.i(TAG, "[diableKakaoiVoiceAgent] ========== Disable Kakao i Voice Agent ==========");
|
|
|
-// Intent mIntent = new Intent("com.kakao.i.agent.DISABLE_KAKAO_I").setPackage("com.kakao.i.test.sandbox");
|
|
|
-// ContextCompat.startForegroundService(this, mIntent);
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.e(TAG, "[Exception] diableKakaoiVoiceAgent()");
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * JEFF, 2019.08.06
|
|
|
- * 동탄현장 월패드 죽는 이슈 원인 분석을 위한 월패드 App 삭제 코드
|
|
|
- * 메인App만 남기고 모두 삭제
|
|
|
- */
|
|
|
- UninstallAPKs mUninstallAPKs = new UninstallAPKs();
|
|
|
- class UninstallAPKs extends Thread {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- super.run();
|
|
|
- try {
|
|
|
- Log.d(TAG, "[UninstallAPKs.run()] Started getting installed package infomation");
|
|
|
- ArrayList<PackageVersionInfo> PackageVersionInfos = new ArrayList<PackageVersionInfo>();
|
|
|
- List<PackageInfo> PackageInfoList = getPackageManager().getInstalledPackages(PackageManager.PERMISSION_GRANTED);
|
|
|
-
|
|
|
- while (true) {
|
|
|
- Log.d(TAG, "[UninstallAPKs.run()] Get installed packages start!!");
|
|
|
- try {
|
|
|
- for (PackageInfo pack : PackageInfoList) {
|
|
|
-// Log.d(TAG, "[UninstallAPKs.run()] Package Name [" + pack.packageName + "]");
|
|
|
-// Log.d(TAG, "[UninstallAPKs.run()] Version Name [" + pack.versionName + "]");
|
|
|
- if ((pack.packageName.contains("icontrols")) || (pack.packageName.contains("artncore"))) {
|
|
|
- PackageVersionInfos.add(new PackageVersionInfo(pack.packageName, pack.versionName));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- } catch(Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- break;
|
|
|
- }
|
|
|
- Log.d(TAG, "[getInstalledPackageInfo.run()] Get installed packages end!!");
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- for (int i = 0; i < PackageVersionInfos.size(); i++) {
|
|
|
- Log.d(TAG, "[UninstallAPKs.run()] Package Name [" + PackageVersionInfos.get(i).getPackageName() + "]");
|
|
|
- Log.d(TAG, "[UninstallAPKs.run()] Version Name [" + PackageVersionInfos.get(i).strPackageVersion + "]");
|
|
|
- uninstallWallPadApp(PackageVersionInfos.get(i).getPackageName());
|
|
|
- try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] UninstallAPKs.run()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
-// try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void uninstallWallPadApp(String strAPK) {
|
|
|
- try {
|
|
|
- Log.w(TAG, "[uninstallWallPadApp] strAPK [" + strAPK + "]");
|
|
|
- if (checkAppInstalled(strAPK)) {
|
|
|
-// Intent mIntent = new Intent(Intent.ACTION_DELETE);
|
|
|
- Intent mIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
|
|
|
- mIntent.setData(Uri.parse("package:" + strAPK));
|
|
|
- mIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
|
|
|
- startActivityForResult(mIntent, UNINSTALL_REQUEST_CODE);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[uninstallWallPadApp] Not installed [" + strAPK + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {;
|
|
|
- Log.e(TAG, "[Exception] uninstallWallPadApp()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- iMAPRemotemeter miMAPRemotemeter;
|
|
|
- boolean mEMS_Enable;
|
|
|
- int nEnergyTypeCnt;
|
|
|
- private boolean mCostInfo_Enable = false;
|
|
|
-
|
|
|
- private Calendar nowCal, HourCal, DateCal, MonthCal, YearCal, EnergyDataGetCal;
|
|
|
-
|
|
|
- int CalendarYear;
|
|
|
- int CalendarMonth;
|
|
|
- int CalendarDate;
|
|
|
-
|
|
|
- int ShowNowEnergyIndex = 0;
|
|
|
- String[] ShowListEnergyType_String = {
|
|
|
- "전기",
|
|
|
- "수도",
|
|
|
- "가스",
|
|
|
- "온수",
|
|
|
- "난방",
|
|
|
- "탄소"
|
|
|
- };
|
|
|
-
|
|
|
- // 원격검침 월사용량 데이터 클래스
|
|
|
- MonthTableClass monthTableClass[] = new MonthTableClass[6];
|
|
|
- class MonthTableClass {
|
|
|
- private String Use;
|
|
|
- private String SamePyungUse;
|
|
|
- private String Rank;
|
|
|
- private String Goal;
|
|
|
- private String Price;
|
|
|
-
|
|
|
-
|
|
|
- public MonthTableClass (String Use, String SamePyungUse, String Rank, String Goal) {
|
|
|
- this.Use = Use;
|
|
|
- this.SamePyungUse = SamePyungUse;
|
|
|
- this.Rank = Rank;
|
|
|
- this.Goal = Goal;
|
|
|
- }
|
|
|
-
|
|
|
- public String getUse(){return Use;}
|
|
|
- public String getSamePyungUse(){return SamePyungUse;}
|
|
|
- public String getRank(){return Rank;}
|
|
|
- public String getGoal(){return Goal;}
|
|
|
- public String getPrice(){return Price;}
|
|
|
- }
|
|
|
-
|
|
|
- public void GetMeteringCount()
|
|
|
- {
|
|
|
- WallpadDeviceSet devSet = new WallpadDeviceSet(getContext());
|
|
|
- String[] MetringDB = devSet.GetSettingData("원격검침");
|
|
|
- devSet.closeDB();
|
|
|
- if (MetringDB != null)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- String devInfo = MetringDB[1];
|
|
|
-
|
|
|
- devInfo = devInfo.replace('(', '_');
|
|
|
- devInfo = devInfo.replace(':', '_');
|
|
|
- devInfo = devInfo.replace(')', '_');
|
|
|
-
|
|
|
- String[] MetringInfo = devInfo.split("_");
|
|
|
- // MetringInfo[1] -> 회로수
|
|
|
- // MetringInfo[5] -> EMS 사용여부 사용함 or 사용안함
|
|
|
- if ((Integer.parseInt(MetringInfo[1]) == 2) || (Integer.parseInt(MetringInfo[1]) == 3) || (Integer.parseInt(MetringInfo[1]) == 5) || (Integer.parseInt(MetringInfo[1]) == 6))
|
|
|
- {
|
|
|
- nEnergyTypeCnt = Integer.parseInt(MetringInfo[1]);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- nEnergyTypeCnt = 5;
|
|
|
- }
|
|
|
-
|
|
|
- if (MetringInfo[5].equals("사용함"))
|
|
|
- {
|
|
|
- mEMS_Enable = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mEMS_Enable = false;
|
|
|
- }
|
|
|
- if(MetringInfo[7].equals("사용함"))
|
|
|
- {
|
|
|
- mCostInfo_Enable = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mCostInfo_Enable = false;
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- e.printStackTrace();
|
|
|
- nEnergyTypeCnt = 5;
|
|
|
- mEMS_Enable = true;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- nEnergyTypeCnt = 5;
|
|
|
- mEMS_Enable = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description
|
|
|
- * 서버로 부터 데이터를 받아와 분석하고 표현하는 함수<br>
|
|
|
- * @param
|
|
|
- * InputType 0 당월, 1 일별<br>
|
|
|
- * @param
|
|
|
- * //year - 연도<br>
|
|
|
- * @param
|
|
|
- * //month - 월<br>
|
|
|
- * @param
|
|
|
- * //energy - 0 전기, 1 수도, 2 가스, 3 온수, 4 열량, 5 탄소<br>
|
|
|
- */
|
|
|
- private void LoadRemotemeterDataFromServer(int InputType, int Year, int Month, int Energy, final boolean bSendToMobile) {
|
|
|
- final int inputType = InputType;
|
|
|
- final int year = Year;
|
|
|
- final int month = (Month+1);
|
|
|
-
|
|
|
- try {
|
|
|
- Log.i(TAG, "[LoadRemotemeterDataFromServer] InputType [" + InputType + "], Year [" + Year + "], Month [" + Month + "], Energy [" + Energy + "], bSendToMobile [" + bSendToMobile + "]");
|
|
|
- Log.i(TAG, "[LoadRemotemeterDataFromServer] inputType [" + inputType + "], year [" + year + "], month [" + month + "]");
|
|
|
-
|
|
|
- miMAPRemotemeter = new iMAPRemotemeter(getApplicationContext());
|
|
|
-
|
|
|
- switch(inputType) {
|
|
|
- case 0: //당월
|
|
|
- miMAPRemotemeter.DoWork(true, true, true, true, true, true, true, mEMS_Enable, year, month);
|
|
|
- break;
|
|
|
-
|
|
|
- case 1: //일별
|
|
|
- miMAPRemotemeter.DoWork(false, true, true, true, true, true, false, false, year, month);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- miMAPRemotemeter.SetRetCtr(new RetProci() {
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- String TempString = null;
|
|
|
-
|
|
|
- // DB
|
|
|
- WallpadStatusData StatusDBMGR = null;
|
|
|
- try {
|
|
|
- StatusDBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
- Log.i(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] inputType [" + inputType + "]");
|
|
|
- boolean result = false;
|
|
|
- switch (inputType) {
|
|
|
- case 0: // 당월
|
|
|
- EnergyDataGetCal = Calendar.getInstance();
|
|
|
- int NumberOfValuelist = miMAPRemotemeter.SetItem("valuelist");
|
|
|
- if (NumberOfValuelist != 0) {
|
|
|
- for (int i = 0; i < NumberOfValuelist; i++) {
|
|
|
- //DebugLogOutput("NumberOfValuelist " + Integer.toString(NumberOfValuelist));
|
|
|
- //DebugLogOutput("GetAttributeVal(i, month) " + imapRemotemeter.GetAttributeVal(i, "month"));
|
|
|
- //DebugLogOutput("CalendarMonth " + (CalendarMonth + 1));
|
|
|
- if ((Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "month")) == (CalendarMonth + 1)) && (Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "year")) == (CalendarYear))) {
|
|
|
- result = true;
|
|
|
- int Temp_mNumberOfEnergy = nEnergyTypeCnt;
|
|
|
- if (Temp_mNumberOfEnergy == 2) {
|
|
|
- Temp_mNumberOfEnergy = 3;
|
|
|
- }
|
|
|
-
|
|
|
- for (int j = 0; j < Temp_mNumberOfEnergy; j++) {
|
|
|
- switch (j) {
|
|
|
- case 0:
|
|
|
- monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_used").equals("1000000") == true) {
|
|
|
- monthTableClass[j].Use = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "elect_used");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_average_used_samesize") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_average_used_samesize").equals("null") == true) {
|
|
|
- monthTableClass[j].SamePyungUse = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "elect_average_used_samesize");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((miMAPRemotemeter.GetAttributeVal(i, "elect_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_ranking_samesize").equals("null") == true) {
|
|
|
- TempString = "- / ";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = miMAPRemotemeter.GetAttributeVal(i, "elect_ranking_samesize") + " / ";
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
- TempString = TempString + "-";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
- }
|
|
|
- monthTableClass[j].Rank = TempString;
|
|
|
- }
|
|
|
-
|
|
|
- //가격정보
|
|
|
- if (mCostInfo_Enable == true) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_price") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_price").equals("null") == true) {
|
|
|
- monthTableClass[j].Price = "";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "elect_price");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
- //DebugLogOutput("전기");
|
|
|
- //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
- //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_used").equals("1000000") == true) {
|
|
|
- monthTableClass[j].Use = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "water_used");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_average_used_samesize") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_average_used_samesize").equals("null") == true) {
|
|
|
- monthTableClass[j].SamePyungUse = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "water_average_used_samesize");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((miMAPRemotemeter.GetAttributeVal(i, "water_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_ranking_samesize").equals("null") == true) {
|
|
|
- TempString = "- / ";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = miMAPRemotemeter.GetAttributeVal(i, "water_ranking_samesize") + " / ";
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
- TempString = TempString + "-";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
- }
|
|
|
- monthTableClass[j].Rank = TempString;
|
|
|
- }
|
|
|
-
|
|
|
- //가격정보
|
|
|
- if (mCostInfo_Enable == true) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_price") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_price").equals("null") == true) {
|
|
|
- monthTableClass[j].Price = "";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "water_price");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
- //DebugLogOutput("수도");
|
|
|
- //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
- //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
- break;
|
|
|
-
|
|
|
- case 2:
|
|
|
- monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_used").equals("1000000") == true) {
|
|
|
- monthTableClass[j].Use = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "gas_used");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_average_used_samesize") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_average_used_samesize").equals("null") == true) {
|
|
|
- monthTableClass[j].SamePyungUse = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "gas_average_used_samesize");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((miMAPRemotemeter.GetAttributeVal(i, "gas_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_ranking_samesize").equals("null") == true) {
|
|
|
- TempString = "- / ";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = miMAPRemotemeter.GetAttributeVal(i, "gas_ranking_samesize") + " / ";
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
- TempString = TempString + "-";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
- }
|
|
|
- monthTableClass[j].Rank = TempString;
|
|
|
- }
|
|
|
-
|
|
|
- //가격정보
|
|
|
- if (mCostInfo_Enable == true) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_price") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_price").equals("null") == true) {
|
|
|
- monthTableClass[j].Price = "";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "gas_price");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
- //DebugLogOutput("가스");
|
|
|
- //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
- //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
- break;
|
|
|
-
|
|
|
- case 3:
|
|
|
- monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used").equals("1000000") == true) {
|
|
|
- monthTableClass[j].Use = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "hotwater_used");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize").equals("null") == true) {
|
|
|
- monthTableClass[j].SamePyungUse = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((miMAPRemotemeter.GetAttributeVal(i, "hotwater_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_ranking_samesize").equals("null") == true) {
|
|
|
- TempString = "- / ";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = miMAPRemotemeter.GetAttributeVal(i, "hotwater_ranking_samesize") + " / ";
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
- TempString = TempString + "-";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
- }
|
|
|
- monthTableClass[j].Rank = TempString;
|
|
|
- }
|
|
|
-
|
|
|
- //가격정보
|
|
|
- if (mCostInfo_Enable == true) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_price") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_price").equals("null") == true) {
|
|
|
- monthTableClass[j].Price = "";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "hotwater_price");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
- //DebugLogOutput("온수");
|
|
|
- //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
- //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
- break;
|
|
|
-
|
|
|
- case 4:
|
|
|
- monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_used").equals("1000000") == true) {
|
|
|
- monthTableClass[j].Use = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "energy_used");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_average_used_samesize") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_average_used_samesize").equals("null") == true) {
|
|
|
- monthTableClass[j].SamePyungUse = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "energy_average_used_samesize");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((miMAPRemotemeter.GetAttributeVal(i, "energy_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_ranking_samesize").equals("null") == true) {
|
|
|
- TempString = "- / ";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = miMAPRemotemeter.GetAttributeVal(i, "energy_ranking_samesize") + " / ";
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
- TempString = TempString + "-";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
- }
|
|
|
- monthTableClass[j].Rank = TempString;
|
|
|
- }
|
|
|
-
|
|
|
- //가격정보
|
|
|
- if (mCostInfo_Enable == true) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_price") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_price").equals("null") == true) {
|
|
|
- monthTableClass[j].Price = "";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "energy_price");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
- //DebugLogOutput("열량");
|
|
|
- //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
- //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
- break;
|
|
|
-
|
|
|
- case 5:
|
|
|
- monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_used").equals("1000000") == true) {
|
|
|
- monthTableClass[j].Use = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "carbon_used");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_average_used_samesize") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_average_used_samesize").equals("null") == true) {
|
|
|
- monthTableClass[j].SamePyungUse = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "carbon_average_used_samesize");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((miMAPRemotemeter.GetAttributeVal(i, "carbon_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_ranking_samesize").equals("null") == true) {
|
|
|
- TempString = "- / ";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = miMAPRemotemeter.GetAttributeVal(i, "carbon_ranking_samesize") + " / ";
|
|
|
- }
|
|
|
-
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
- TempString = TempString + "-";
|
|
|
- }
|
|
|
- else {
|
|
|
- TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
- }
|
|
|
- monthTableClass[j].Rank = TempString;
|
|
|
- }
|
|
|
-
|
|
|
- //가격정보
|
|
|
- if (mCostInfo_Enable == true) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_price") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "carbon_price").equals("null") == true) {
|
|
|
- monthTableClass[j].Price = "";
|
|
|
- }
|
|
|
- else {
|
|
|
- monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "carbon_price");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
- //DebugLogOutput("탄소");
|
|
|
- //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
- //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- break;
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (result) {
|
|
|
- if (1 < nEnergyTypeCnt && nEnergyTypeCnt < 6) {
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ENERGY_TARGET_INFO_ALARM_FROM_SERVER);
|
|
|
- intent.putExtra("FromWhere", "IcEnergyMgrScreen");
|
|
|
-
|
|
|
- if (nEnergyTypeCnt == 2) {
|
|
|
- elect_target = monthTableClass[0].Goal;
|
|
|
- elect_used = monthTableClass[0].Use;
|
|
|
- water_target = monthTableClass[1].Goal;
|
|
|
- water_used = monthTableClass[1].Use;
|
|
|
- }
|
|
|
- else if (nEnergyTypeCnt == 3) {
|
|
|
- elect_target = monthTableClass[0].Goal;
|
|
|
- elect_used = monthTableClass[0].Use;
|
|
|
- water_target = monthTableClass[1].Goal;
|
|
|
- water_used = monthTableClass[1].Use;
|
|
|
- gas_target = monthTableClass[2].Goal;
|
|
|
- gas_used = monthTableClass[2].Use;
|
|
|
- }
|
|
|
- else if (nEnergyTypeCnt == 4) {
|
|
|
- elect_target = monthTableClass[0].Goal;
|
|
|
- elect_used = monthTableClass[0].Use;
|
|
|
- water_target = monthTableClass[1].Goal;
|
|
|
- water_used = monthTableClass[1].Use;
|
|
|
- hotwater_target = monthTableClass[2].Goal;
|
|
|
- hotwater_used = monthTableClass[2].Use;
|
|
|
- heating_target = monthTableClass[3].Goal;
|
|
|
- heating_used = monthTableClass[3].Use;
|
|
|
- }
|
|
|
- else if (nEnergyTypeCnt == 5) {
|
|
|
- elect_target = monthTableClass[0].Goal;
|
|
|
- elect_used = monthTableClass[0].Use;
|
|
|
- water_target = monthTableClass[1].Goal;
|
|
|
- water_used = monthTableClass[1].Use;
|
|
|
- gas_target = monthTableClass[2].Goal;
|
|
|
- gas_used = monthTableClass[2].Use;
|
|
|
- hotwater_target = monthTableClass[3].Goal;
|
|
|
- hotwater_used = monthTableClass[3].Use;
|
|
|
- heating_target = monthTableClass[4].Goal;
|
|
|
- heating_used = monthTableClass[4].Use;
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] Out of range!! =1 = mNumberOfEnergy -> " + nEnergyTypeCnt);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- getApplicationContext().sendBroadcast(intent);
|
|
|
- if (bSendToMobile) sendRemotemeterDataToMobile();
|
|
|
-
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] Out of range!! =2 = mNumberOfEnergy -> " + nEnergyTypeCnt);
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] result [" + result + "]");
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- StatusDBMGR.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- if (StatusDBMGR != null) {
|
|
|
- StatusDBMGR.closeDB();
|
|
|
- }
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError() {
|
|
|
- Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcError] Error!!!");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing() {
|
|
|
- Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcDoing] Processing!!!");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] LoadRemotemeterDataFromServer(int InputType, int Year, int Month, int Energy)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * @description
|
|
|
- * 서버로 부터 데이터를 받아와 분석하고 표현하는 함수<br>
|
|
|
- * @param
|
|
|
- * //year - 연도<br>
|
|
|
- * @param
|
|
|
- * //month - 월<br>
|
|
|
- * @param
|
|
|
- * //energy - 0 전기, 1 수도, 2 가스, 3 온수, 4 열량, 5 탄소<br>
|
|
|
- */
|
|
|
- private void getTelemeringDailyUsageData(final int nYear, final int nMonth, final int nDate) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[getTelemeringDailyUsageData] nYear [" + nYear + "], nMonth [" + nMonth + "], nDate [" + nDate + "]");
|
|
|
-
|
|
|
- miMAPRemotemeter = new iMAPRemotemeter(getApplicationContext());
|
|
|
- miMAPRemotemeter.DoWork(false, true, true, true, true, true, false, false, nYear, nMonth);
|
|
|
- miMAPRemotemeter.SetRetCtr(new RetProci() {
|
|
|
- @Override
|
|
|
- public void ProcSuccess() {
|
|
|
- String strTempValue = null;
|
|
|
- int nEnergyTypeCnt = 5;
|
|
|
-
|
|
|
- try {
|
|
|
- boolean bResult = false;
|
|
|
- String strElecUsage = "", strGasUsage = "", strWaterUsage = "", strHotwaterUsage = "", strHeatingUsage = "";
|
|
|
- int nDataCnt = miMAPRemotemeter.SetItem("valuelist");
|
|
|
- if (nDataCnt != 0) {
|
|
|
- Log.i(TAG, "[getTelemeringDailyData] nDataCnt [" + nDataCnt + "]");
|
|
|
- for (int i = 0; i < nDataCnt; i++) {
|
|
|
- if ((Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "year")) == nYear)
|
|
|
- && (Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "month")) == nMonth)
|
|
|
- && (Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "day")) == nDate)) {
|
|
|
- bResult = true;
|
|
|
- Log.i(TAG, "[getTelemeringDailyUsageData] Find!!! nYear [" + nYear + "], nMonth [" + nMonth + "], nDate [" + nDate + "]");
|
|
|
- for (int j = 0; j < nEnergyTypeCnt; j++) {
|
|
|
- if (j == 0) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "elect_used").equals("1000000")) {
|
|
|
- strElecUsage = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- strElecUsage = miMAPRemotemeter.GetAttributeVal(i, "elect_used");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (j == 1) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "water_used").equals("1000000") == true) {
|
|
|
- strWaterUsage = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- strWaterUsage = miMAPRemotemeter.GetAttributeVal(i, "water_used");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (j == 2) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "gas_used").equals("1000000") == true) {
|
|
|
- strGasUsage = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- strGasUsage = miMAPRemotemeter.GetAttributeVal(i, "gas_used");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (j == 3) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used").equals("1000000") == true) {
|
|
|
- strHotwaterUsage = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- strHotwaterUsage = miMAPRemotemeter.GetAttributeVal(i, "hotwater_used");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if (j == 4) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_used") != null) {
|
|
|
- if (miMAPRemotemeter.GetAttributeVal(i, "energy_used").equals("1000000") == true) {
|
|
|
- strHeatingUsage = "0";
|
|
|
- }
|
|
|
- else {
|
|
|
- strHeatingUsage = miMAPRemotemeter.GetAttributeVal(i, "energy_used");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (bResult) {
|
|
|
- Intent mIntent = new Intent();
|
|
|
- mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
- mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_TELEMETERING_DAILY_USAGE);
|
|
|
- mIntent.putExtra("elect_used", strElecUsage);
|
|
|
- mIntent.putExtra("water_used", strWaterUsage);
|
|
|
- mIntent.putExtra("gas_used", strGasUsage);
|
|
|
- mIntent.putExtra("hotwater_used", strHotwaterUsage);
|
|
|
- mIntent.putExtra("heating_used", strHeatingUsage);
|
|
|
- getApplicationContext().sendBroadcast(mIntent);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[getTelemeringDailyUsageData.ProcSuccess] bResult [" + bResult + "]");
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getTelemeringDailyData.ProcSuccess");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcError() {
|
|
|
- Log.w(TAG, "[getTelemeringDailyData.ProcError] Error!!!");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void ProcDoing() {
|
|
|
- Log.w(TAG, "[getTelemeringDailyData.ProcDoing] Processing!!!");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getTelemeringDailyData(int nYear, int nMonth)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void sendRemotemeterDataToMobile() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[sendRemotemeterDataToMobile] ========== START ==========");
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.setAction(define.NOTIFY_ACNAME);
|
|
|
- intent.putExtra("KIND", define.NOTIFY_ENERGY_DATA);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_ENERGY_COUNT, nEnergyTypeCnt);
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_YEAR, EnergyDataGetCal.get(Calendar.YEAR));
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_MONTH, (EnergyDataGetCal.get(Calendar.MONTH)+1));
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_DAY, EnergyDataGetCal.get(Calendar.DATE));
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_HOUR, EnergyDataGetCal.get(Calendar.HOUR_OF_DAY));
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_MINUTE, EnergyDataGetCal.get(Calendar.MINUTE));
|
|
|
-
|
|
|
- if (nEnergyTypeCnt == 2) {
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
- }
|
|
|
- else if (nEnergyTypeCnt == 3) {
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_GAS, gas_used); //가스
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_GAS, gas_target);
|
|
|
- }
|
|
|
- else if (nEnergyTypeCnt == 4) {
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_HOTWATER, hotwater_used); //온수
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_HOTWATER, hotwater_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_HEATING, heating_used); //열량
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_HEATING, heating_target);
|
|
|
- }
|
|
|
- else if (nEnergyTypeCnt == 5) {
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_GAS, gas_used); //가스
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_GAS, gas_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_HOTWATER, hotwater_used); //온수
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_HOTWATER, hotwater_target);
|
|
|
-
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_USE_HEATING, heating_used); //열량
|
|
|
- intent.putExtra(Common.ENERGY_INTENT_GOAL_HEATING, heating_target);
|
|
|
- }
|
|
|
- getContext().sendBroadcast(intent);
|
|
|
-
|
|
|
- Log.i(TAG, "[sendRemotemeterDataToMobile] Sent ENERGY_INTENT_ BR "+define.NOTIFY_ENERGY_DATA);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendRemotemeterDataToMobile()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void getTelemeteringDataOnRandomTime() {
|
|
|
- try {
|
|
|
- int DelayTime = StringUtil.GetDelayTimeBaseIP(getContext());
|
|
|
- if (DelayTime < 1) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[getTelemeteringDataOnRandomTime] DelayTime : "+ DelayTime);
|
|
|
- getTelemeteringDataHandler.sendEmptyMessageDelayed(0, 1000 * DelayTime);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getTelemeteringDataOnRandomTime()");
|
|
|
- e.printStackTrace();
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- private Handler getTelemeteringDataHandler = new Handler() {
|
|
|
- @SuppressLint("HandlerLeak")
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg) {
|
|
|
- if (msg.what == 0) {
|
|
|
- getRemoteMeterDataFromServer(true);
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- boolean bTelemeteringToISS = false;
|
|
|
-
|
|
|
- private void checkISSEnergyType() {
|
|
|
- try {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getApplication());
|
|
|
- int nEnergyKind = mWallpadDeviceSet.Get_SmartSwitchEnergy_Kind();
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
-
|
|
|
- if (nEnergyKind == WallpadDeviceSet.SMARTSWITCH_ENERGY_REMOTE) bTelemeteringToISS = true;
|
|
|
- else bTelemeteringToISS = false;
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkISSEnergyType()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void getRemoteMeterDataFromServer(boolean bSendToMobile) {
|
|
|
- try {
|
|
|
- nowCal = Calendar.getInstance();
|
|
|
- CalendarYear = nowCal.get(Calendar.YEAR);
|
|
|
- CalendarMonth = nowCal.get(Calendar.MONTH);
|
|
|
- CalendarDate = nowCal.get(Calendar.DATE);
|
|
|
- GetMeteringCount();
|
|
|
- LoadRemotemeterDataFromServer(0, CalendarYear, CalendarMonth, ShowNowEnergyIndex, bSendToMobile);
|
|
|
- if (bTelemeteringToISS) getTelemeringDailyUsageData(CalendarYear, CalendarMonth + 1, CalendarDate);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getRemoteMeterDataFromServer()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean getBlackoutStatus() {
|
|
|
- try {
|
|
|
- SharedPreferences mSharedPreferences = getSharedPreferences("BlackoutStatus", MODE_PRIVATE);
|
|
|
- return mSharedPreferences.getBoolean("status", false);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getBlackoutStatus()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void sendBlackoutScreenRunBR() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[sendBlackoutScreenRunBR] ========== START ==========");
|
|
|
- Intent mIntent = new Intent(Common.BR_BLACKOUT_SCREEN_RUN, null);
|
|
|
- mContext.sendBroadcast(mIntent);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] sendBlackoutScreenRunBR()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 월패드 타입 판별
|
|
|
- * @return bResult
|
|
|
- * false: 메인월패드
|
|
|
- * true: 서브월패드
|
|
|
- */
|
|
|
- public boolean getIsSubWallpad() {
|
|
|
- boolean bResult = false;
|
|
|
- try {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
|
|
|
- String[] DBinfo = mWallpadDeviceSet.GetSettingData("서브월패드");
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
-
|
|
|
- if (DBinfo == null) bResult = false;
|
|
|
- else {
|
|
|
- if (DBinfo[1].indexOf("사용함") > 0) bResult = true;
|
|
|
- else bResult = false;
|
|
|
- }
|
|
|
- Log.d(TAG, "[getIsSubWallpad] bResult [" + bResult + "]");
|
|
|
- return bResult;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getIsSubWallpad()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * JEFF, 2020.01.14
|
|
|
- * 월패드 카메라의 초기화를 위한 코드 삽입
|
|
|
- * 월패드 카메라 preview 실행시, 최초 1회에 한하여 카메라 화면에 녹색이 보이는 증상을 해결하기 위함
|
|
|
- */
|
|
|
- /* ================================================================================================
|
|
|
- * 내 영상
|
|
|
- ================================================================================================ */
|
|
|
- // SurfaceLayout 구성
|
|
|
- RelativeLayout MyVideoLayout; // MoIP 카메라 영상
|
|
|
- SurfaceHolder MyVideoHolder;
|
|
|
- SurfaceView MyVideoSurface;
|
|
|
- RelativeLayout SurfaceLayout; // 영상표시 화면
|
|
|
- public Camera mMyCamera;
|
|
|
-
|
|
|
- public void toggleMyVideo() {
|
|
|
- try {
|
|
|
- if (MyVideoLayout == null) {
|
|
|
- Log.e(TAG, "[toggleMyVideo] Show My Video!!!");
|
|
|
- initMyVideoSurfaceLayout();
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.e(TAG, "[toggleMyVideo] Remove My Video!!!");
|
|
|
- removeMyVideoSurfaceLayout();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] toggleMyVideo()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void initMyVideoSurfaceLayout() {
|
|
|
- try {
|
|
|
-// LOG_INFO("[initMyVideoSurfaceLayout] MyVideoLayout = " + MyVideoLayout);
|
|
|
- if (MyVideoLayout != null) {
|
|
|
- MyVideoSurface.getHolder().removeCallback(MyVideoCallback);
|
|
|
- MyVideoLayout.removeAllViews();
|
|
|
- MyVideoLayout = null;
|
|
|
- }
|
|
|
-
|
|
|
- MyVideoLayout = new RelativeLayout(mContext);
|
|
|
- WpadUtil.LayoutRegistration(SurfaceLayout, MyVideoLayout, 1024, 600, 0, 0, ID.MAINACTIVITY.LAYOUT.MYVIDEO);
|
|
|
- MyVideoSurface = new SurfaceView(mContext);
|
|
|
- MyVideoHolder = MyVideoSurface.getHolder();
|
|
|
- WpadRelativeLayoutParams MyVideoParams = new WpadRelativeLayoutParams(320, 240);
|
|
|
-// MyVideoParams.setMargins(10, 10, 0, 0); // 보이게
|
|
|
- MyVideoParams.setMargins(1300, 112, 0, 0); // 안보이게
|
|
|
- MyVideoLayout.addView(MyVideoSurface, MyVideoParams);
|
|
|
- MyVideoSurface.getHolder().addCallback(MyVideoCallback);
|
|
|
- MyVideoSurface.setZOrderOnTop(true);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] initMyVideoSurfaceLayout()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void removeMyVideoSurfaceLayout() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[removeMyVideoSurfaceLayout] MyVideoLayout = " + MyVideoLayout);
|
|
|
- if (MyVideoLayout != null) {
|
|
|
- MyVideoLayout.removeAllViews();
|
|
|
- MyVideoLayout = null;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] removeRemoteVideoSurfaceLayout()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private SurfaceHolder.Callback MyVideoCallback = new SurfaceHolder.Callback() {
|
|
|
- @Override
|
|
|
- public void surfaceCreated(SurfaceHolder holder) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[MyVideoCallback] surfaceCreated!!");
|
|
|
- if (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT) {
|
|
|
- mIOInterface.ctrlWallPadCamPower(true);
|
|
|
- mMyCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
|
|
|
- Camera.Parameters params = mMyCamera.getParameters();
|
|
|
- params.setPictureSize(320, 240);
|
|
|
- mMyCamera.setParameters(params);
|
|
|
- mMyCamera.setPreviewDisplay(holder);
|
|
|
- } else {
|
|
|
- Log.w(TAG, "[MyVideoCallback] surfaceCreated!! -> NOT Supported Common.CurrentBoardType [" + Common.CurrentBoardType + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] MyVideoCallback -> surfaceCreated(SurfaceHolder holder)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[MyVideoCallback] surfaceChanged!!");
|
|
|
- if (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT) {
|
|
|
- mMyCamera.startPreview();
|
|
|
- } else {
|
|
|
- Log.w(TAG, "[MyVideoCallback] surfaceChanged!! -> NOT Supported Common.CurrentBoardType [" + Common.CurrentBoardType + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] MyVideoCallback -> surfaceChanged(SurfaceHolder holder, int format, int width, int height)");
|
|
|
- e.printStackTrace();
|
|
|
-// if (getWallPadCameraUsage()) sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_RESET, 0, 0, 3000); // 3초후 카메라 서비스를 재실행한다.
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void surfaceDestroyed(SurfaceHolder holder) {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[MyVideoCallback] surfaceDestroyed!!");
|
|
|
- if (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT) {
|
|
|
- mIOInterface.ctrlWallPadCamPower(false);
|
|
|
- if (mMyCamera != null) {
|
|
|
- mMyCamera.stopPreview();
|
|
|
- mMyCamera.release();
|
|
|
- mMyCamera = null;
|
|
|
- }
|
|
|
- } else {
|
|
|
- Log.w(TAG, "[MyVideoCallback] surfaceDestroyed!! -> NOT Supported Common.CurrentBoardType [" + Common.CurrentBoardType + "]");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] MyVideoCallback -> surfaceDestroyed(SurfaceHolder holder)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- private boolean getWallPadCameraUsage() {
|
|
|
- boolean bResult = false;
|
|
|
- try {
|
|
|
- WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this.getContext());
|
|
|
- int nResult = mWallpadDeviceSet.GetDeviceSetted("월패드카메라");
|
|
|
- mWallpadDeviceSet.closeDB();
|
|
|
-
|
|
|
- if (nResult == WallpadDeviceSet.DEV_DATA_ENABLE) bResult = true;
|
|
|
- else bResult = false;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getWallPadCameraUsage()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- Log.i(TAG, "[getWallPadCameraUsage] bResult [" + bResult + "]");
|
|
|
- return bResult;
|
|
|
- }
|
|
|
-
|
|
|
- private void forceCtrlStrangerRecordingUserSettingDisable(boolean bEnable) {
|
|
|
- try {
|
|
|
- WallpadStatusData DBMGR = new WallpadStatusData(getContext());
|
|
|
- DBMGR.SetStrangerRecordingOnOff(bEnable);
|
|
|
- DBMGR.closeDB();
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] forceCtrlStrangerRecordingUserSettingDisable(boolean bEnable)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void registerLCDKeeper() {
|
|
|
- try {
|
|
|
- Log.i(TAG, "[registerLCDKeeper] ===== START =====");
|
|
|
-
|
|
|
- if (!bLCDKeeperUsage) {
|
|
|
- Log.w(TAG, "[registerLCDKeeper] bLCDKeeperUsage is false!!!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (Build.VERSION.SDK_INT < 24) {
|
|
|
- Log.w(TAG, "[registerLCDKeeper] not support LCDKeeper!! Build.VERSION.SDK_INT -> " + Build.VERSION.SDK_INT);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- IMG_LCD_KEEPER = (ImageView) findViewById(R.id.view_lcdkeeper);
|
|
|
- IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
|
|
|
- Log.i(TAG, "[registerLCDKeeper] ===== END =====");
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] registerLCDKeeper()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- int LCDKEEPER_MODE_NONE = 0; // 동작중 아님
|
|
|
- int LCDKEEPER_MODE_RESTROE = 1; // 복구모드
|
|
|
- int LCDKEEPER_MODE_PROTECT = 2; // 보호모드
|
|
|
- boolean bLCDBacklightPower = true; // LCD backlight on/off 여부 (true: on, false: off)
|
|
|
- int nLCDKeeperRunMode = LCDKEEPER_MODE_NONE; // LCD Keeper 동작 모드 (0: 동작중 아님, 1: 복구모드, 2: 예방모드)
|
|
|
- private void runLCDKeeper(int nKeeperMode) {
|
|
|
- try {
|
|
|
- if (!bLCDKeeperUsage) {
|
|
|
- Log.w(TAG, "[registerLCDKeeper] bLCDKeeperUsage is false!!!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[runLCDKeeper] nKeeperMode [" + nKeeperMode +"], bLCDBacklightPower [" + bLCDBacklightPower +"]");
|
|
|
- if (Build.VERSION.SDK_INT < 24) {
|
|
|
- Log.w(TAG, "[registerLCDKeeper] not support LCDKeeper!! Build.VERSION.SDK_INT -> " + Build.VERSION.SDK_INT);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (IMG_LCD_KEEPER == null) {
|
|
|
- Log.w(TAG, "[runLCDKeeper] IMG_LCD_KEEPER is null!!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // check run mode
|
|
|
- if (nLCDKeeperRunMode == nKeeperMode) {
|
|
|
- // already run LCDKeeper!!
|
|
|
- Log.w(TAG, "[runLCDKeeper] LCD Keeper mode is same -> Asis [" + nLCDKeeperRunMode + "], Tobe [" + nKeeperMode + "]");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- nLCDKeeperRunMode = nKeeperMode;
|
|
|
-
|
|
|
- if (nKeeperMode == LCDKEEPER_MODE_NONE) {
|
|
|
- IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
|
|
|
- }
|
|
|
- else if (nKeeperMode == LCDKEEPER_MODE_RESTROE) {
|
|
|
- if (Common.SCREEN_TYPE == Common.SCREEN_TYPE_1280x800) {
|
|
|
- Glide.with(this).asGif().load(R.drawable.lcd_restore_1280).diskCacheStrategy(DiskCacheStrategy.RESOURCE).into(IMG_LCD_KEEPER);
|
|
|
- }
|
|
|
- else {
|
|
|
- Glide.with(this).asGif().load(R.drawable.lcd_restore_1024).diskCacheStrategy(DiskCacheStrategy.RESOURCE).into(IMG_LCD_KEEPER);
|
|
|
- }
|
|
|
- IMG_LCD_KEEPER.setVisibility(View.VISIBLE);
|
|
|
- }
|
|
|
- else if (nKeeperMode == LCDKEEPER_MODE_PROTECT) {
|
|
|
- IMG_LCD_KEEPER.setBackgroundColor(Color.BLACK);
|
|
|
- IMG_LCD_KEEPER.setVisibility(View.VISIBLE);
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.w(TAG, "[runLCDKeeper] Not supported mode!! -> " + nKeeperMode);
|
|
|
- IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] runLCDKeeper(int nKeeperMode)");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void ctrlLCDKeeper() {
|
|
|
- try {
|
|
|
- if (!bLCDKeeperUsage) {
|
|
|
- Log.w(TAG, "[ctrlLCDKeeper] bLCDKeeperUsage is false!!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (Build.VERSION.SDK_INT < 24) {
|
|
|
- Log.w(TAG, "[ctrlLCDKeeper] not support LCDKeeper!! Build.VERSION.SDK_INT -> " + Build.VERSION.SDK_INT);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (IMG_LCD_KEEPER == null) {
|
|
|
- Log.w(TAG, "[ctrlLCDKeeper] IMG_LCD_KEEPER is null!!");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "[ctrlLCDKeeper] bLCDBacklightPower [" + bLCDBacklightPower +"]");
|
|
|
- if (bLCDBacklightPower) {
|
|
|
- // backlight on시 lcd keeper를 비활성화 한다.
|
|
|
- runLCDKeeper(LCDKEEPER_MODE_NONE);
|
|
|
- }
|
|
|
- else {
|
|
|
- if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT) {
|
|
|
- // LCD backlight off시, LCD protect 화면을 구동한다.
|
|
|
- runLCDKeeper(LCDKEEPER_MODE_PROTECT);
|
|
|
- }
|
|
|
- else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_RECOVER) {
|
|
|
- // LCD backlight off시, LCD restore 화면을 구동한다.
|
|
|
- runLCDKeeper(LCDKEEPER_MODE_RESTROE);
|
|
|
- }
|
|
|
- else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT_RECOVER) {
|
|
|
- // 새벽 2:00 ~ 3:59까지 LCD restore 화면을 구동하고, 나머지 시간에는 LCD protect 화면을 구동한다.
|
|
|
- // 화면에 스모그 또는 미러 글라스 적용이 아닌 경우에는 LCD 보호모드(블랙)만 사용을 권장한다. (LCD RGBW rolling시 컬러가 화면에 비침)
|
|
|
- Calendar LCDCal = Calendar.getInstance();
|
|
|
- int nYear = LCDCal.get(Calendar.YEAR);
|
|
|
- int nMonth = LCDCal.get(Calendar.MONTH) + 1;
|
|
|
- int nDay = LCDCal.get(Calendar.DAY_OF_MONTH);
|
|
|
- int nHour = LCDCal.get(Calendar.HOUR_OF_DAY);
|
|
|
- Log.i(TAG, "[ctrlLCDKeeper] nYear [" + nYear +"], nMonth [" + nMonth +"], nDay [" + nDay +"], nHour [" + nHour +"]");
|
|
|
- if (3 >= nHour && nHour >= 2) {
|
|
|
- // 새벽 2:00 ~ 3:59까지 LCD restore 화면을 구동한다.
|
|
|
- runLCDKeeper(LCDKEEPER_MODE_RESTROE);
|
|
|
- }
|
|
|
- else {
|
|
|
- // 새벽 2:00 ~ 3:59 이외의 시간에는 LCD protect 화면을 구동한다.
|
|
|
- if (nYear == 2020 && ((nMonth < 8 && nDay < 20) || (nMonth < 7))) {
|
|
|
- // 단, 이미 증상이 발생한 현장의 LCD 복구를 위해 2020년 7월 19일까지는 protection 화면 대신 restore 화면을 구동한다.
|
|
|
- runLCDKeeper(LCDKEEPER_MODE_RESTROE);
|
|
|
- }
|
|
|
- else {
|
|
|
- runLCDKeeper(LCDKEEPER_MODE_PROTECT);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] ctrlLCDKeeper()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private boolean checkTranslucentGlassUsage() {
|
|
|
- try {
|
|
|
- if (Version.getModelType() == MODEL_TYPE.IHN_D101 || Version.getModelType() == MODEL_TYPE.IHN_D101_I
|
|
|
- || Version.getModelType() == MODEL_TYPE.IHN_D101K || Version.getModelType() == MODEL_TYPE.IHN_D101K_I
|
|
|
- || Version.getModelType() == MODEL_TYPE.IHN_1010 || Version.getModelType() == MODEL_TYPE.IHN_1010_I | Version.getModelType() == MODEL_TYPE.IHN_1010_I_ALT
|
|
|
- || Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I
|
|
|
- || Version.getModelType() == MODEL_TYPE.IHN_T1010 || Version.getModelType() == MODEL_TYPE.IHN_T1010_I
|
|
|
- || Version.getModelType() == MODEL_TYPE.IHN_1303_I) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else return false;
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkTranslucentGlassUsage()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * LCD backlight off시 센서값 keyevent가 발생하지 않는 증상 해결을 위한 임시코드
|
|
|
- * 우선 IHN-1020B-I에만 적용 후, 결과를 보고 다른 일체형 월패드에도 적용 예정
|
|
|
- * Jeff, 2020.09.07
|
|
|
- * @return true: LCD backlight On, false: LCD backlight Off
|
|
|
- */
|
|
|
- public boolean checkLCDOnByCMD() {
|
|
|
- try {
|
|
|
- Runtime mRuntime = Runtime.getRuntime();
|
|
|
- Process mProcess;
|
|
|
- String cmd = "getprop persist.sys.lcdcon";
|
|
|
-
|
|
|
- mProcess = mRuntime.exec(cmd);
|
|
|
- BufferedReader br = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
|
|
|
- String line;
|
|
|
- String strResult = null;
|
|
|
-
|
|
|
- while ((line = br.readLine()) != null) {
|
|
|
- strResult = line;
|
|
|
- }
|
|
|
-
|
|
|
- if (strResult.equals("0")) {
|
|
|
- Log.e(TAG, "[checkLCDOnByCMD] LCD On");
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (strResult.equals("1")) {
|
|
|
- Log.e(TAG, "[checkLCDOnByCMD] LCD Off");
|
|
|
- return false;
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.e(TAG, "[checkLCDOnByCMD] Unknown value [" + strResult + "], return false!!!");
|
|
|
- return false;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkLCDOnByCMD()");
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 절전모드에서 백라이트를 키는 경우, BSP에서 PowerManager 또는 속성값으로 상태를 구분하는데
|
|
|
- * BSP 버전에 따라 상이하게 동작하므로 BSP 버전 구분하여 절전모드 판별 필요
|
|
|
- * @return true: 기준 BSP 이후 버전, false: 기준 BSP 이전 버전
|
|
|
- */
|
|
|
- public boolean getCompareBSPVersion() {
|
|
|
- try {
|
|
|
- StringBuilder strBSPVersion = new StringBuilder();
|
|
|
- StringBuffer sysInfoBuffer = new StringBuffer();
|
|
|
- sysInfoBuffer.append(Build.DISPLAY);
|
|
|
- strBSPVersion.append(sysInfoBuffer.toString());
|
|
|
-
|
|
|
- String result = strBSPVersion.toString();
|
|
|
- Log.d(TAG, "[getCompareBSPVersion] result [" + result + "]");
|
|
|
-
|
|
|
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
|
|
|
- Date date = simpleDateFormat.parse(result);
|
|
|
- Date standardDate = simpleDateFormat.parse("2020.09.18"); // 비교 기준 BSP 버전
|
|
|
- if (date.compareTo(standardDate) >= 0) {
|
|
|
- Log.d(TAG, "[getCompareBSPVersion] BSP VERSION OVER!");
|
|
|
- return true;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] getCompareBSPVersion()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 월패드 부팅시 카메라서비스 로딩이 실패하는 경우가 생겨 카메라 화면이 안나오는 경우 발생
|
|
|
- * WallPadMain에서 부팅시 카메라를 확인하여 Exception이 발생하는 경우
|
|
|
- * 카메라 서비스를 재실행한다.
|
|
|
- * (Edited by jeff, 2020.09.08)
|
|
|
- */
|
|
|
- public void resetCameraService() {
|
|
|
- try {
|
|
|
- Log.e(TAG, "[resetCameraService] start!!");
|
|
|
- Runtime mRuntime = Runtime.getRuntime();
|
|
|
- String cmd = "setprop persist.sys.fakeactivitydel 1";
|
|
|
- mRuntime.exec(cmd);
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] resetCameraService()");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 월패드 부팅시 카메라서비스 로딩이 실패하는 경우가 발생하여
|
|
|
- * 카메라서비스 정상동작 여부를 확인하기위한 함수를 정의한다.
|
|
|
- * 카메라서비스 정상: 정상적으로 카메라가 open되며, camera object가 null이 아니면 카메라를 release한다.
|
|
|
- * 카메라 서비스 비정상: 카메라 open시 Exception이 발생하며 resetCameraService() 함수를 실행하여 카메라서비스를 재실행한다.
|
|
|
- * (Edited by jeff, 2020.09.08)
|
|
|
- */
|
|
|
- public void checkCameraLoading() {
|
|
|
- try {
|
|
|
- Camera checkCamera = Camera.open();
|
|
|
- if (checkCamera != null) {
|
|
|
- Log.e(TAG, "[checkCameraLoading] checkCamera is not null!!");
|
|
|
- checkCamera.release();
|
|
|
- }
|
|
|
- else {
|
|
|
- Log.e(TAG, "[checkCameraLoading] checkCamera is null!!");
|
|
|
- resetCameraService();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- Log.e(TAG, "[Exception] checkCameraLoading()");
|
|
|
- e.printStackTrace();
|
|
|
- resetCameraService();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
+package kr.co.icontrols.wallpadmain;
|
|
|
+
|
|
|
+import android.annotation.SuppressLint;
|
|
|
+import android.app.Activity;
|
|
|
+import android.app.ActivityManager;
|
|
|
+import android.app.ActivityManager.RunningTaskInfo;
|
|
|
+import android.content.BroadcastReceiver;
|
|
|
+import android.content.ComponentName;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.Intent;
|
|
|
+import android.content.IntentFilter;
|
|
|
+import android.content.SharedPreferences;
|
|
|
+import android.content.pm.PackageInfo;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
+import android.graphics.Color;
|
|
|
+import android.hardware.Camera;
|
|
|
+import android.media.AudioManager;
|
|
|
+import android.net.Uri;
|
|
|
+import android.net.ethernet.EthernetDevInfo;
|
|
|
+import android.net.ethernet.EthernetManager;
|
|
|
+import android.os.Build;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Looper;
|
|
|
+import android.os.Message;
|
|
|
+import android.os.PowerManager;
|
|
|
+import android.util.Log;
|
|
|
+import android.view.KeyEvent;
|
|
|
+import android.view.MotionEvent;
|
|
|
+import android.view.SurfaceHolder;
|
|
|
+import android.view.SurfaceView;
|
|
|
+import android.view.View;
|
|
|
+import android.view.WindowManager;
|
|
|
+import android.view.animation.Animation;
|
|
|
+import android.view.animation.AnimationUtils;
|
|
|
+import android.widget.ImageView;
|
|
|
+import android.widget.RelativeLayout;
|
|
|
+import android.widget.ViewFlipper;
|
|
|
+
|
|
|
+import com.artncore.WallPadDataMgr.WallpadCallHistoryData;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadParkInfo;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadSalesSampleData;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadScheduleData;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadStatusData;
|
|
|
+import com.artncore.WallPadDataMgr.WallpadVisitorPicData_A20;
|
|
|
+import com.artncore.WallPadDataMgr.wallpaddbmgr;
|
|
|
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSet;
|
|
|
+import com.artncore.WallPadDataMgr.wallpaddbmgr.AddressSetBackup;
|
|
|
+import com.artncore.commons.APIErrorCode;
|
|
|
+import com.artncore.commons.DataClasses.CarParkingData;
|
|
|
+import com.artncore.commons.define;
|
|
|
+import com.artncore.deviceinterface.WallPadInterface;
|
|
|
+import com.artncore.wallpadapi.IntLightAPI;
|
|
|
+import com.artncore.wallpadapi.LightAPI;
|
|
|
+import com.artncore.wallpadapi.MultiSwitchAPI;
|
|
|
+import com.artncore.wallpadapi.SdbAPI;
|
|
|
+import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
|
|
|
+import com.artncore.wallpadapi.WallPadAPI;
|
|
|
+import com.artncore.wallpadimap.RetProci;
|
|
|
+import com.artncore.wallpadimap.WallPadiMAPNotifyAPI;
|
|
|
+import com.bumptech.glide.Glide;
|
|
|
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|
|
+
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.BufferedWriter;
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.io.InputStreamReader;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.io.OutputStreamWriter;
|
|
|
+import java.net.InetAddress;
|
|
|
+import java.net.NetworkInterface;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.GregorianCalendar;
|
|
|
+import java.util.List;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+import kr.co.icontrols.v40ioctl.V40IOInterface;
|
|
|
+import kr.co.icontrols.wallpadmain.declare.Common;
|
|
|
+import kr.co.icontrols.wallpadmain.declare.Common.BR_MAIN_LIVE_CHECKER;
|
|
|
+import kr.co.icontrols.wallpadmain.declare.DataClasses.IconInfoTable;
|
|
|
+import kr.co.icontrols.wallpadmain.declare.ID;
|
|
|
+import kr.co.icontrols.wallpadmain.declare.ID_OLD;
|
|
|
+import kr.co.icontrols.wallpadmain.declare.LayoutDevice;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPAlarmOperation;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPCarParking;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPCarParking_UPIS;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPElecCarChargingInfo;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPEnergyServer_EnergyMeter;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPEnergyServer_EnergyModule;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPEnergyServer_Realmeter;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPRemotemeter;
|
|
|
+import kr.co.icontrols.wallpadmain.menu.CallSubMenuScreen;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.EASYUI_MAIN;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.HYOSUNGUI_MAIN_HA;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.HYOSUNGUI_MAIN_HN;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.MAIN;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.METROUI_MAIN;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.METROUI_SUB_01;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.METROUI_SUB_02;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.METROUI_SUB_GROUP;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.SUB_01;
|
|
|
+import kr.co.icontrols.wallpadmain.screen.SUB_02;
|
|
|
+import kr.co.icontrols.wallpadmain.util.EnergyAlramPopupMgr;
|
|
|
+import kr.co.icontrols.wallpadmain.util.IconManager;
|
|
|
+import kr.co.icontrols.wallpadmain.util.MobileProcService;
|
|
|
+import kr.co.icontrols.wallpadmain.util.StringUtil;
|
|
|
+import kr.co.icontrols.wallpadmain.util.iMapServer;
|
|
|
+import kr.co.icontrols.wallpadsupport.Version;
|
|
|
+import kr.co.icontrols.wallpadsupport.Version.MODEL_TYPE;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadActivity;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadRelativeLayoutParams;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadScale;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadSound;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadSound.SND;
|
|
|
+import kr.co.icontrols.wallpadsupport.WpadUtil;
|
|
|
+
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPAlarmOperation.EMER_STATE;
|
|
|
+import kr.co.icontrols.wallpadmain.imap.iMAPAlarmOperation.EMER_DETAIL_INFO;
|
|
|
+
|
|
|
+import static android.content.Intent.ACTION_TIME_TICK;
|
|
|
+import static com.artncore.commons.define.ALBUM_PICTURE_LOCATION;
|
|
|
+import static com.artncore.commons.define.BESTIN_LOCATION;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description
|
|
|
+ * 월패드 [설정기능] 메인화면 이다.<br>
|
|
|
+ * 상단의 Top 메뉴, [홈] [돌아가기]<br>
|
|
|
+ * 좌측의 Tab 메뉴, [조명] [난방] [가스] ... 등 선택 메뉴<br>
|
|
|
+ * 를 여기서 처리한다.
|
|
|
+ */
|
|
|
+public class MainActivity extends WpadActivity {
|
|
|
+ private final static String TAG = "MainActivity";
|
|
|
+
|
|
|
+ private void DebugLogOutput(String s) { if(Common.DEBUG_LOG_ON) Log.d(TAG, s); }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Declaration ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ protected Context mContext = null;
|
|
|
+ public Context getContext() { return mContext; }
|
|
|
+ private WallPadAPI mWallPadAPI = null;
|
|
|
+ public static IOInterface mIOInterface = null;
|
|
|
+ private int DEVICE_OPERATION_MODE = Common.MODE;
|
|
|
+ boolean bEasyModeUsage = false;
|
|
|
+
|
|
|
+ public static boolean bGoodDesign2020 = false;
|
|
|
+
|
|
|
+ // Layout
|
|
|
+ private RelativeLayout MainLayout; // 메인화면
|
|
|
+ private RelativeLayout MainScreenLayout;
|
|
|
+
|
|
|
+ private RelativeLayout SubLayout_01; // 서브 01 화면
|
|
|
+ private RelativeLayout SubScreenLayout_01;
|
|
|
+
|
|
|
+ private RelativeLayout SubLayout_02; // 서브 02 화면
|
|
|
+ private RelativeLayout SubScreenLayout_02;
|
|
|
+
|
|
|
+ private RelativeLayout EasyMainLayout; // 간편모드 메인화면
|
|
|
+ private RelativeLayout EasyMainScreenLayout;
|
|
|
+
|
|
|
+ private ViewFlipper mViewFlipper;
|
|
|
+ Animation aniSlideIn, aniSlideOut;
|
|
|
+
|
|
|
+ public static ImageView IMG_LCD_KEEPER;
|
|
|
+
|
|
|
+
|
|
|
+ // PopupActivityRun
|
|
|
+ private static boolean PopupActivityRun = false;
|
|
|
+ public static boolean getPopupActivityRun() { return PopupActivityRun; }
|
|
|
+ public static void setPopupActivityRun(boolean run) { PopupActivityRun = run; }
|
|
|
+
|
|
|
+ // InfoActivityRun
|
|
|
+ private static boolean InfoActivityRun = false;
|
|
|
+ public static boolean getInfoActivityRun() {
|
|
|
+ Log.d(TAG, "[getInfoActivityRun] InfoActivityRun: " + InfoActivityRun);
|
|
|
+ return InfoActivityRun;
|
|
|
+ }
|
|
|
+ public static void setInfoActivityRun(boolean run) {
|
|
|
+ InfoActivityRun = run;
|
|
|
+ if (!InfoActivityRun) resetCurrentInfoScreenID();
|
|
|
+ }
|
|
|
+
|
|
|
+ // Menu & TabData
|
|
|
+ private Menu mMenu = null;
|
|
|
+// private TabData mTabData = null;
|
|
|
+
|
|
|
+ // CurrentScreenId
|
|
|
+ private int mCurrentScreenId = -1;
|
|
|
+ private int mTempCurrentScreenId = -1;
|
|
|
+ private static int mCurrentInfoScreenId = -1;
|
|
|
+
|
|
|
+ // Screen
|
|
|
+ private MAIN MainScreen = null;
|
|
|
+ private SUB_01 SUB_01Screen = null;
|
|
|
+ private SUB_02 SUB_02Screen = null;
|
|
|
+ private METROUI_MAIN MetroUI_MainScreen = null;
|
|
|
+ private METROUI_SUB_01 MetroUI_SUB_01Screen = null;
|
|
|
+ private METROUI_SUB_02 MetroUI_SUB_02Screen = null;
|
|
|
+ private METROUI_SUB_GROUP MetroUI_SUB_GroupScreen = null;
|
|
|
+ private HYOSUNGUI_MAIN_HN Hyosung_HN_MainScreen = null;
|
|
|
+ private HYOSUNGUI_MAIN_HA Hyosung_HA_MainScreen = null;
|
|
|
+ private EASYUI_MAIN EasyUI_MainScreen = null;
|
|
|
+
|
|
|
+ // 메뉴 리스트 처리 및 서브 스크린 호출
|
|
|
+ public CallSubMenuScreen m_CallSubMenuScreen = null;
|
|
|
+
|
|
|
+ ///////////////////////////// AnC 메인어플에서 사용되는 변수 모음
|
|
|
+
|
|
|
+
|
|
|
+ int LastTimeSync = 0;
|
|
|
+ boolean HomeCTROn = true;
|
|
|
+ //int PSTNStatus = 0;
|
|
|
+ int MAINStatus = 0;
|
|
|
+ public static final int MAIN_NORMAL = 0;
|
|
|
+ public static final int MAIN_WAIT_SETIP = 1;
|
|
|
+ static boolean Alert_App_On = false;
|
|
|
+
|
|
|
+ byte bootupretryCNT = 0;
|
|
|
+ static final int MAX_BOOTUP_RETRY_COUNT = 1200;
|
|
|
+
|
|
|
+ ScheduleManager SCManager;
|
|
|
+
|
|
|
+
|
|
|
+ boolean SYSTEM_TIME_SET = false;
|
|
|
+ static boolean CALLSVCSTARTED = false;
|
|
|
+
|
|
|
+ public Thread mThread_getAppsVersion = null;
|
|
|
+ ///////////////////////////// end
|
|
|
+
|
|
|
+ // 거실조명 제어드라이버
|
|
|
+ private IntLightAPI mIntLightAPI = null;
|
|
|
+ // 에너지미터 제어드라이버
|
|
|
+ private Sdb_LivingRoomLightAPI mSdb_LivingRoomLightAPI = null;
|
|
|
+ private SdbAPI mSdbAPI = null;
|
|
|
+
|
|
|
+ // 멀티스위치 제어 드라이버
|
|
|
+ private MultiSwitchAPI m_MultiSwitch = null;
|
|
|
+ // 대외향 거실 스위치 드라이버
|
|
|
+ private LightAPI m_LightCtrl = null;
|
|
|
+
|
|
|
+ private boolean m_ModelHouseSleepModeRelease = false;
|
|
|
+
|
|
|
+ //주차정보 관련 변수
|
|
|
+ public static boolean bUseofNot_ParkingInfo = false;
|
|
|
+ public static int nParkingSystemType = Common.PARKING_SYSTEM_ICONTROLS;
|
|
|
+ private String ParkingServerIP = null;
|
|
|
+ private int ParkingServerPort = 10000;
|
|
|
+ private int cGetParkingMin = 18;
|
|
|
+ private boolean bSetMSG_GetParkingInfo = false;
|
|
|
+ iMAPCarParking iMAPcarParking;
|
|
|
+ iMAPCarParking_UPIS iMapcarParking_UPIS;
|
|
|
+
|
|
|
+ //일정 알림 관련 변수
|
|
|
+ private int AlarmScheduleCount = 0;
|
|
|
+ private String AlarmScheduleString = null;
|
|
|
+ private boolean bAlarmScheduleString = false;
|
|
|
+
|
|
|
+ //전기차 충전 관련 변수
|
|
|
+ iMAPElecCarChargingInfo imapElecCarChargingInfo;
|
|
|
+
|
|
|
+ //제로 에너지 하우스 관련 변수
|
|
|
+ private boolean bUseofNot_ZeroEnergyHouseInfo = false;
|
|
|
+ private int cGetZeroEnergyHouseMin = 12;
|
|
|
+ iMAPEnergyServer_Realmeter iMAPenergyServer_Realmeter;
|
|
|
+ iMAPEnergyServer_EnergyMeter iMAPenergyServer_EnergyMeter;
|
|
|
+ iMAPEnergyServer_EnergyModule iMAPenergyServer_EnergyModule;
|
|
|
+ String DayofLastSecond = "2000-01-01 00:00:00";
|
|
|
+ boolean DayofLastBoolean = false;
|
|
|
+
|
|
|
+ //에너지관리서버 관련 변수
|
|
|
+ private boolean bUseofNot_EnergyServer = false;
|
|
|
+
|
|
|
+ //에너지 알람 발생 관련 변수
|
|
|
+ private boolean bUseofNot_EnergyAlarm = false;
|
|
|
+ private boolean ResultGetIntent = false;
|
|
|
+
|
|
|
+ private String elect_target = "Error";
|
|
|
+ private String elect_used = "Error";
|
|
|
+ private String elect_info = "Error";
|
|
|
+
|
|
|
+ private String water_target = "Error";
|
|
|
+ private String water_used = "Error";
|
|
|
+ private String water_info = "Error";
|
|
|
+
|
|
|
+ private String gas_target = "Error";
|
|
|
+ private String gas_used = "Error";
|
|
|
+ private String gas_info = "Error";
|
|
|
+
|
|
|
+ private String hotwater_target = "Error";
|
|
|
+ private String hotwater_used = "Error";
|
|
|
+ private String hotwater_info = "Error";
|
|
|
+
|
|
|
+ private String heating_target = "Error";
|
|
|
+ private String heating_used = "Error";
|
|
|
+ private String heating_info = "Error";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 월패드 이벤트 알림 관련 변수
|
|
|
+ */
|
|
|
+ // 스마트 우편, 전기차 충전 사용 여부
|
|
|
+ public static boolean bSmartPostUsage = false, bElecVehicleUsage = false;
|
|
|
+ // 부재중 전화, 방문객 사진, 공지사항, 택배, 스마트 우편, 전기차 충전 이벤트 개수
|
|
|
+ public static int nMissedCallCnt = 0, nVisitorPicCnt = 0, nNoticeCnt = 0, nParcelCnt = 0, nPostCnt = 0, nElecVehicleChangingCnt = 0;
|
|
|
+
|
|
|
+
|
|
|
+ // 끝
|
|
|
+
|
|
|
+ IconManager mIconManager;
|
|
|
+ public IconInfoTable mIconInfoTable;
|
|
|
+ public static int nShortcutCnt = 0;
|
|
|
+ public static int nShortcutMax = 12;
|
|
|
+ int nIconsOnSubScreen = 24;
|
|
|
+ public static List<WallpadStatusData.WidgetItem> MainScreenShortcutList;
|
|
|
+
|
|
|
+ // 조명상태를 관리하기 위한 클래스
|
|
|
+ public static class LightInfo {
|
|
|
+ public class Preset {
|
|
|
+ public class Lights {
|
|
|
+ public String ONOFF = "none";
|
|
|
+ public int DIM = 0;
|
|
|
+ public int COLOR = 0;
|
|
|
+ public Lights() {
|
|
|
+ ONOFF = "none";
|
|
|
+ DIM = 0;
|
|
|
+ COLOR = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Lights[] mLights;
|
|
|
+
|
|
|
+ public Preset() {
|
|
|
+ mLights = new Lights[9]; // 0번지는 프리셋별 그룹제어 설정값 (조명 1~8)
|
|
|
+ for (int i = 0; i < mLights.length; i++) {
|
|
|
+ mLights[i] = new Lights();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Preset[] mPreset;
|
|
|
+ public int nLightPresetNo;
|
|
|
+ public LightInfo() {
|
|
|
+ mPreset = new Preset[9]; // 0번지는 전체제어 설정값 (프리셋 1~8)
|
|
|
+ for (int i = 0; i < mPreset.length; i++) {
|
|
|
+ mPreset[i] = new Preset();
|
|
|
+ }
|
|
|
+ nLightPresetNo = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public static LightInfo mLightInfo;
|
|
|
+ public String BR_CTRL_LIGHT_LIVINGROOM = "kr.co.icontrols.wallpadglobalscreen.BR_CTRL_LIGHT_LIVINGROOM";
|
|
|
+
|
|
|
+ public static WpadSound mSound;
|
|
|
+
|
|
|
+ public void getLivinglightPreset() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(this);
|
|
|
+ String[] strEntireValue = mWallpadStatusData.getLivinglightModeCtrlEntireValue();
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ Log.i(TAG, "[getLivinglightPreset] strEntireValue.length = " + strEntireValue.length);
|
|
|
+ for (int i = 0; i < strEntireValue.length; i++) {
|
|
|
+ Log.i(TAG, "[getLivinglightPreset] strEntireValue[" + i + "] = " + strEntireValue[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getLivinglightPreset()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void initLivinglightPreset() {
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(this);
|
|
|
+ try {
|
|
|
+ if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
+ || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] Initialize preset for IHN-D101");
|
|
|
+ for (int i = 1; i < 5; i++) {
|
|
|
+ String strPreset = mWallpadStatusData.getLivinglightModeCtrlUnitValues(i, 0);
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] i = " + i + ", strPreset = " + strPreset);
|
|
|
+ String[] strParse = strPreset.split(":");
|
|
|
+ if (strParse[1].equalsIgnoreCase("0") || strParse[2].equalsIgnoreCase("0")) {
|
|
|
+ if (i == 1) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 7;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 5;
|
|
|
+ }
|
|
|
+ else if (i == 2) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 3;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 2;
|
|
|
+ }
|
|
|
+ else if (i == 3) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 1;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 1;
|
|
|
+ }
|
|
|
+ mWallpadStatusData.setLivinglightModeCtrlUnitValues(i, 0, mLightInfo.mPreset[i].mLights[0].ONOFF, mLightInfo.mPreset[i].mLights[0].DIM, mLightInfo.mPreset[i].mLights[0].COLOR);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = strParse[0];
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = Integer.parseInt(strParse[1]);
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = Integer.parseInt(strParse[2]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (Version.getModelType() == MODEL_TYPE.IHN_1010 || Version.getModelType() == MODEL_TYPE.IHN_1010_I || Version.getModelType() == MODEL_TYPE.IHN_1010_I_ALT) {
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] Initialize preset for IHN-1010(-I)");
|
|
|
+ if (getKCCDimmingCtrl()) {
|
|
|
+ for (int i = 1; i < 5; i++) {
|
|
|
+ String strPreset = mWallpadStatusData.getLivinglightModeCtrlUnitValues(i, 0);
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] i = " + i + ", strPreset = " + strPreset);
|
|
|
+ String[] strParse = strPreset.split(":");
|
|
|
+ if (strParse[1].equalsIgnoreCase("0") || strParse[2].equalsIgnoreCase("0")) {
|
|
|
+ if (i == 1) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 10;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 5;
|
|
|
+ }
|
|
|
+ else if (i == 2) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 7;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 2;
|
|
|
+ }
|
|
|
+ else if (i == 3) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 5;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 1;
|
|
|
+ }
|
|
|
+ else if (i == 4) {
|
|
|
+ mLightInfo.mPreset[i].mLights[0].ONOFF = "on";
|
|
|
+ mLightInfo.mPreset[i].mLights[0].DIM = 2;
|
|
|
+ mLightInfo.mPreset[i].mLights[0].COLOR = 1;
|
|
|
+ }
|
|
|
+ mWallpadStatusData.setLivinglightModeCtrlUnitValues(i, 0, mLightInfo.mPreset[i].mLights[0].ONOFF, mLightInfo.mPreset[i].mLights[0].DIM, mLightInfo.mPreset[i].mLights[0].COLOR);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] i = " + i + ", strPreset = " + strPreset);
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] mLightInfo.mPreset[" + i + "].mLights[0].ONOFF = " + mLightInfo.mPreset[i].mLights[0].ONOFF);
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] mLightInfo.mPreset[" + i + "].mLights[0].ONOFF = " + mLightInfo.mPreset[i].mLights[0].DIM);
|
|
|
+ Log.i(TAG, "[initLivinglightPreset] mLightInfo.mPreset[" + i + "].mLights[0].ONOFF = " + mLightInfo.mPreset[i].mLights[0].COLOR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] initLivinglightPreset()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean getKCCDimmingCtrl() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[getKCCDimmingCtrl] ========== START ==========");
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(mContext);
|
|
|
+ int nEnable = mWallpadDeviceSet.GetDeviceSetted("KCC디밍제어기");
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+ Log.i(TAG, "[getKCCDimmingCtrl] nEnable [" + nEnable + "]");
|
|
|
+
|
|
|
+ if (nEnable == WallpadDeviceSet.DEV_DATA_ENABLE) {
|
|
|
+ Log.i(TAG, "[getKCCDimmingCtrl] Enabled");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.i(TAG, "[getKCCDimmingCtrl] Disabled");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] setKCCDimmingCtrl()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void CallSubMenuScreen(int screenID) {
|
|
|
+ if (screenID >= ID.LINKEDSCREEN.SubMenuAddService.Notice && screenID <= ID.LINKEDSCREEN.SubMenuAddService.ElecCar) m_CallSubMenuScreen.callStartAddServiceAPK(screenID);
|
|
|
+ else if (screenID >= ID.LINKEDSCREEN.SubMenuEnergy.RealTimeCheckMeter && screenID <= ID.LINKEDSCREEN.SubMenuEnergy.IEnergy) m_CallSubMenuScreen.callStartEnergyAPK(screenID);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void restoreSystemVolume() {
|
|
|
+ try {
|
|
|
+ String strCurrentTopPackage = getTopActivity();
|
|
|
+ Log.i(TAG, "[restoreSystemVolume] strCurrentTopPackage = " + strCurrentTopPackage);
|
|
|
+
|
|
|
+ WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
+ int nSavedVolume = wdb.GetWallPadMasterVolume();
|
|
|
+ wdb.closeDB();
|
|
|
+
|
|
|
+ final AudioManager audioManager = (AudioManager)this.getContext().getSystemService(this.getContext().AUDIO_SERVICE);
|
|
|
+ int nCurrentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
|
|
|
+ audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nSavedVolume , 0);
|
|
|
+ Log.i(TAG, "[restoreSystemVolume] #Before# nCurrentVolume = " + nCurrentVolume + ", #After# nSavedVolume = " + nSavedVolume);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] restoreSystemVolume()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // =================================================================================================
|
|
|
+ // [[ Activity Life Cycle ]] region
|
|
|
+ // =================================================================================================
|
|
|
+ /**
|
|
|
+ * Activity Constructors
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onCreate(Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ Log.i(TAG, "[onCreate] ========== START ==========");
|
|
|
+
|
|
|
+ Log.w(TAG, "[onCreate] Start to check booting status!!!");
|
|
|
+ Runtime mRuntime = Runtime.getRuntime();
|
|
|
+ Process mProcess;
|
|
|
+ int iDelayCount = 0;
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ try {
|
|
|
+ String cmd = "getprop dev.bootcomplete";
|
|
|
+
|
|
|
+ mProcess = mRuntime.exec(cmd);
|
|
|
+ BufferedReader br = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
|
|
|
+ String line;
|
|
|
+ String strResult = null;
|
|
|
+
|
|
|
+ while ((line = br.readLine()) != null) {
|
|
|
+ strResult = line;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strResult.equals("1")) {
|
|
|
+
|
|
|
+ File sdcard = new File("/storage/emulated/0");
|
|
|
+ if(sdcard.exists() == true) {
|
|
|
+ iDelayCount = 0;
|
|
|
+ Thread.sleep(1000);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ {
|
|
|
+ iDelayCount++;
|
|
|
+ Thread.sleep(100);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (iDelayCount > 400) {
|
|
|
+ cmd = "setprop persist.sys.reboot 1";
|
|
|
+ mProcess = mRuntime.exec(cmd);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] Checking device booting status -> Unable to execute top command");
|
|
|
+ e.fillInStackTrace();
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ Log.w(TAG, "[onCreate] Device booting completed!!");
|
|
|
+
|
|
|
+ Log.i(TAG, "[onCreate] Wallpad model name [" + Version.getModelType() + "]");
|
|
|
+
|
|
|
+ if (Common.DIAGNOSTIC_MODE) {
|
|
|
+ Log.i(TAG, "------------------ [START - DIAGNOSTIC_MODE] -------------------");
|
|
|
+ setNetworkAddr( 2, 1, 3);
|
|
|
+ }
|
|
|
+
|
|
|
+ // @ AutoScale 설정 - 1.
|
|
|
+ if (WpadScale.getWidthPixels() == 800 && WpadScale.getHeightPixels() == 480) {
|
|
|
+ // 800x480 일 경우에만 AutoScale 을 설정한다.
|
|
|
+ Log.i(TAG, "[onCreate] Wallpad LCD resolution. -> Width [" + WpadScale.getWidthPixels() + "], Height [" + WpadScale.getHeightPixels() + "] -> setAutoScale ON !!!");
|
|
|
+ WpadScale.setAutoScale(true);
|
|
|
+ }
|
|
|
+ else if (WpadScale.getWidthPixels() == 1366 && WpadScale.getHeightPixels() == 768) {
|
|
|
+ // 800x480 일 경우에만 AutoScale 을 설정한다.
|
|
|
+ Log.i(TAG, "[onCreate] Wallpad LCD resolution. -> Width [" + WpadScale.getWidthPixels() + "], Height [" + WpadScale.getHeightPixels() + "] -> setAutoScale ON !!!");
|
|
|
+ WpadScale.setAutoScale(true);
|
|
|
+ WpadScale.changeAutoScaleValue(1024, 600);
|
|
|
+ }
|
|
|
+
|
|
|
+ // @ AutoScale 설정 - 2. 에너지관리화면을 위한 구분자 설정
|
|
|
+ if ((WpadScale.getWidthPixels() == 1024) && (WpadScale.getHeightPixels() == 600)) {
|
|
|
+ Common.SCREEN_TYPE = Common.SCREEN_TYPE_1024x600;
|
|
|
+ }
|
|
|
+ else if ((WpadScale.getWidthPixels() == 1280) && (WpadScale.getHeightPixels() == 800)) {
|
|
|
+ Common.SCREEN_TYPE = Common.SCREEN_TYPE_1280x800;
|
|
|
+ }
|
|
|
+ else if ((WpadScale.getWidthPixels() == 800) && (WpadScale.getHeightPixels() == 480)) {
|
|
|
+ Common.SCREEN_TYPE = Common.SCREEN_TYPE_800x480;
|
|
|
+ }
|
|
|
+ else if ((WpadScale.getWidthPixels() == 1366) && (WpadScale.getHeightPixels() == 768)) {
|
|
|
+ Common.SCREEN_TYPE = Common.SCREEN_TYPE_1024x600;
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[onCreate] SCREEN_TYPE: " + Common.SCREEN_TYPE);
|
|
|
+
|
|
|
+
|
|
|
+ super.setFinishBrEnable(false);
|
|
|
+ super.AppVersionLogOut(); // [APP Version] + [WallPadSupport Lib Version] 을 로그로 출력한다.
|
|
|
+
|
|
|
+ LayoutDevice.InitGetScreenSize(this.getWindowManager(), getApplicationContext() );
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 최초 DB 폴더가 생성되어 있지 않으면 폴더를 생성하도록 한다.
|
|
|
+ File dbhome = new File(wallpaddbmgr.dblocation);
|
|
|
+ Log.d(TAG, "[Create] - Step0.3 : dbhome path [" + dbhome.getPath() + "]");
|
|
|
+ if (dbhome.exists() == false) {
|
|
|
+ dbhome.mkdir();
|
|
|
+ Log.d(TAG, "[Create] - Step0.3 : Make DB Folder");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "[Create] - Step0.3 : DB exists");
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
+ if (mWallpadStatusData != null) {
|
|
|
+ DebugLogOutput("[Create] - Step0.3 : WallpadStatusData Open OK");
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ DebugLogOutput("[Create] - Step0.3 : WallpadStatusData Open FAIL");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ DebugLogOutput("[Create] - Step0.5 : WallpadStatusData end");
|
|
|
+
|
|
|
+ Log.i("Version", "<><><><> WallPadAPI Version = [" + define.WALLPADAPI_VERSION + "] " + "<><><><>");
|
|
|
+
|
|
|
+ checkISSEnergyType();
|
|
|
+
|
|
|
+ runDeviceService();
|
|
|
+
|
|
|
+ // 1. 변수 초기화
|
|
|
+ DebugLogOutput("[Create] - Step1 : EMData Create");
|
|
|
+ PopupActivityRun = false;
|
|
|
+ InfoActivityRun = false;
|
|
|
+ mContext = this;
|
|
|
+ setCallAppRunning(false); // 메인앱 초기화시 통화앱 미실행값을 DB에 저장
|
|
|
+ // 2. 자동 종료 셋팅
|
|
|
+ DebugLogOutput("[Create] - Step2 : Auto Finish Setting");
|
|
|
+
|
|
|
+ // 3. API 호출
|
|
|
+ DebugLogOutput("[Create] - Step3 : API Call");
|
|
|
+
|
|
|
+ // 3.1. mWallPadAPI 생성
|
|
|
+ try {
|
|
|
+ mWallPadAPI = new WallPadAPI(this);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[ExceptionError] - new WallPadAPI : " + e);
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ initIOInterface(mWallPadAPI);
|
|
|
+ Common.CurrentBoardType = mIOInterface.getBoardType(Version.getModelType());
|
|
|
+
|
|
|
+ DebugLogOutput("[Create] - Step3.5 : API Call end");
|
|
|
+
|
|
|
+ if (Common.GetDeviceSampleMode(this)) {
|
|
|
+ Log.d(TAG, "[Create] OperationMode = MODE_BUSINESS_SAMPLE");
|
|
|
+ DEVICE_OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "[Create] OperationMode = MODE_NOMAL");
|
|
|
+ DEVICE_OPERATION_MODE = Common.MODE_NOMAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 분전반 정보 가져오기
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
|
|
|
+ Common.CurrentDistributionPanelType = mWallpadDeviceSet.Get_DistributionPannelType_Info();
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+
|
|
|
+ // 4. Layout registration
|
|
|
+ DebugLogOutput("[Create] - Step4 : Layout registration");
|
|
|
+
|
|
|
+ Common.eGUIType = checkGUIType(this.getContext());
|
|
|
+ Log.i(TAG, "[Create] eGUIType = " + Common.eGUIType);
|
|
|
+
|
|
|
+ mIconManager = new IconManager(mContext, mWallPadAPI);
|
|
|
+ if (mIconManager == null) {
|
|
|
+ Log.w(TAG, "[Create] mIconManager is null!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ mIconInfoTable = mIconManager.getAvailableIcons();
|
|
|
+ if (mIconInfoTable == null) {
|
|
|
+ Log.w(TAG, "[Create] mIconInfoTable is null!!");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.i(TAG, "[Create] mIconInfoTable.getCnt() = " + mIconInfoTable.getCnt());
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadDeviceSet deviceSet = new WallpadDeviceSet(mContext);
|
|
|
+ boolean bSupport = deviceSet.Get_EasyModeUX_Support();
|
|
|
+ deviceSet.closeDB();
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
+ if (!bSupport) {
|
|
|
+ mWallpadStatusData.SetEasyModeUxUse(false);
|
|
|
+ }
|
|
|
+ bEasyModeUsage = bSupport & mWallpadStatusData.GetEasyModeUxUse();
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ // Sound API 등록
|
|
|
+ mSound = new WpadSound(this);
|
|
|
+
|
|
|
+ // 메인화면 레이아웃
|
|
|
+ MainLayout = new RelativeLayout(this);
|
|
|
+ RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
+ MainLayout.setLayoutParams(params);
|
|
|
+ MainLayout.setId(ID_OLD.main.layout.ALL);
|
|
|
+ super.setAllLayoutRegistration(MainLayout);
|
|
|
+
|
|
|
+ // 메인화면 스크린 레이아웃
|
|
|
+ MainScreenLayout = new RelativeLayout(this);
|
|
|
+ WpadUtil.LayoutRegistration(MainLayout, MainScreenLayout, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
+
|
|
|
+ if (getWallPadCameraUsage() && (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT)) {
|
|
|
+ Log.i(TAG, "[Create] SurfaceLayout Registration!!!");
|
|
|
+ SurfaceLayout = new RelativeLayout(this);
|
|
|
+ WpadUtil.LayoutRegistration(MainLayout, SurfaceLayout, WpadScale.getWidthPixels(), WpadScale.getWidthPixels(), 0, 0, ID.MAINACTIVITY.LAYOUT.SURFACE);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Common.eGUIType == Common.GUI_TYPE.STANDARD) nIconsOnSubScreen = 24;
|
|
|
+// else if (eGUIType == GUI_TYPE.METRO) nIconsOnSubScreen = 15;
|
|
|
+ else nIconsOnSubScreen = 24;
|
|
|
+
|
|
|
+ // 서브화면 1 레이아웃
|
|
|
+ if (mIconInfoTable.getCnt() > 0) {
|
|
|
+ SubLayout_01 = new RelativeLayout(this);
|
|
|
+ params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
+ SubLayout_01.setLayoutParams(params);
|
|
|
+ SubLayout_01.setId(ID_OLD.main.layout.ALL);
|
|
|
+ super.setAllLayoutRegistration(SubLayout_01);
|
|
|
+
|
|
|
+ // 서브화면 1 스크린 레이아웃
|
|
|
+ SubScreenLayout_01 = new RelativeLayout(this);
|
|
|
+ WpadUtil.LayoutRegistration(SubLayout_01, SubScreenLayout_01, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 서브화면 2 레이아웃
|
|
|
+ if (mIconInfoTable.getCnt() > nIconsOnSubScreen) {
|
|
|
+ SubLayout_02 = new RelativeLayout(this);
|
|
|
+ params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
+ SubLayout_02.setLayoutParams(params);
|
|
|
+ SubLayout_02.setId(ID_OLD.main.layout.ALL);
|
|
|
+ super.setAllLayoutRegistration(SubLayout_02);
|
|
|
+
|
|
|
+ // 서브화면 2 스크린 레이아웃
|
|
|
+ SubScreenLayout_02 = new RelativeLayout(this);
|
|
|
+ WpadUtil.LayoutRegistration(SubLayout_02, SubScreenLayout_02, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 간편모드 메인화면 레이아웃
|
|
|
+ if (bEasyModeUsage) {
|
|
|
+ EasyMainLayout = new RelativeLayout(this);
|
|
|
+ params = new RelativeLayout.LayoutParams(WpadScale.getWidthPixels(), WpadScale.getHeightPixels());
|
|
|
+ EasyMainLayout.setLayoutParams(params);
|
|
|
+ EasyMainLayout.setId(ID_OLD.main.layout.ALL);
|
|
|
+ super.setAllLayoutRegistration(EasyMainLayout);
|
|
|
+
|
|
|
+ // 간편모드 메인화면 스크린 레이아웃
|
|
|
+ EasyMainScreenLayout = new RelativeLayout(this);
|
|
|
+ WpadUtil.LayoutRegistration(EasyMainLayout, EasyMainScreenLayout, WpadScale.getWidthPixels(), WpadScale.getHeightPixels(), 0, 0, ID_OLD.main.layout.SCREEN);
|
|
|
+ }
|
|
|
+
|
|
|
+ m_ModelHouseSleepModeRelease= Common.GetModelHouseSleepModeRelease(this);
|
|
|
+ Log.d(TAG, " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% =====> GetModelHouseSleepModeRelease :" + m_ModelHouseSleepModeRelease);
|
|
|
+ if (m_ModelHouseSleepModeRelease) {
|
|
|
+ mLCD_SleepHandler.sendEmptyMessageDelayed(0, (30 * 1000));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5. Top Menu - ImageView registration
|
|
|
+ DebugLogOutput("[Create] - Step5 : Top Menu - ImageView registration");
|
|
|
+ // 6. Tab Menu - ImageView registration
|
|
|
+
|
|
|
+ restoreSystemVolume();
|
|
|
+ initProximitySensor();
|
|
|
+
|
|
|
+
|
|
|
+ // 서브 스크린 호출하기 위한 메뉴 리스트 관리 클래스
|
|
|
+ m_CallSubMenuScreen = new CallSubMenuScreen( this , mWallPadAPI);
|
|
|
+
|
|
|
+ if (Common.eGUIType == Common.GUI_TYPE.STANDARD) {
|
|
|
+ // 메인화면 3가지 등록으로 인해 변경
|
|
|
+ MainScreen = new MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen, DEVICE_OPERATION_MODE);
|
|
|
+// EasyUI_MainScreen = new EASYUI_MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
+ }
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.METRO) {
|
|
|
+ MetroUI_MainScreen = new METROUI_MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
+ }
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_ON) {
|
|
|
+ Hyosung_HN_MainScreen = new HYOSUNGUI_MAIN_HN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
+ }
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_OFF) {
|
|
|
+ Hyosung_HA_MainScreen = new HYOSUNGUI_MAIN_HA(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ MainScreen = new MAIN(this, MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen, DEVICE_OPERATION_MODE);
|
|
|
+ }
|
|
|
+
|
|
|
+ DebugLogOutput("[Create] - Step6 : Main Screen registration");
|
|
|
+ // 7. Draw
|
|
|
+ DebugLogOutput("[Create] - Step7 : setContentView");
|
|
|
+
|
|
|
+ try {
|
|
|
+ if (Common.eGUIType == Common.GUI_TYPE.STANDARD) {
|
|
|
+ if (mIconInfoTable.getCnt() > nIconsOnSubScreen) setContentView(R.layout.main);
|
|
|
+ else setContentView(R.layout.main_2);
|
|
|
+ }
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.METRO) setContentView(R.layout.main_metro);
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_ON) setContentView(R.layout.main_hyosung);
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_OFF) setContentView(R.layout.main_hyosung);
|
|
|
+ else {
|
|
|
+ if (mIconInfoTable.getCnt() > nIconsOnSubScreen) setContentView(R.layout.main);
|
|
|
+ else setContentView(R.layout.main_2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bEasyModeUsage) setContentView(R.layout.main_easy);
|
|
|
+
|
|
|
+// setContentView(R.layout.main);
|
|
|
+ // 메인화면 3가지로 슬라이딩 방식으로 구현하기 위하여 뷰플리퍼를 사용하여 처리
|
|
|
+ mViewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
|
|
|
+ if (mViewFlipper != null) {
|
|
|
+ if (MainLayout != null) mViewFlipper.addView(MainLayout);
|
|
|
+ if (SubLayout_01 != null) mViewFlipper.addView(SubLayout_01);
|
|
|
+ if (SubLayout_02 != null && Common.eGUIType == Common.GUI_TYPE.STANDARD) mViewFlipper.addView(SubLayout_02);
|
|
|
+ if (EasyMainLayout != null && bEasyModeUsage) mViewFlipper.addView(EasyMainLayout);
|
|
|
+ DebugLogOutput("[Create] - Step8 : Add Flipper !!! ");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ registerBroadcastReceiver();
|
|
|
+
|
|
|
+ Check_Upgrade_File();
|
|
|
+
|
|
|
+ //앱 버전정보 DB저장
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "mThread_getAppsVersion Start!! ");
|
|
|
+ if (mThread_getAppsVersion== null) {
|
|
|
+ mThread_getAppsVersion = new getInstalledPackageInfo();
|
|
|
+ mThread_getAppsVersion.start();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "mThread_getAppsVersion is null!!");
|
|
|
+ }
|
|
|
+ Log.d(TAG, "mThread_getAppsVersion End!! ");
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ AddressSet addc = SetData.getAddressMGR();
|
|
|
+ AddressSetBackup addc_Backup = SetData.getAddressMGR_Backup();
|
|
|
+
|
|
|
+ overridePendingTransition(0, 0);
|
|
|
+
|
|
|
+ if (!isSystemIPSet()) {
|
|
|
+ Log.w(TAG, "[onCreate] The IP Address of OS is not set!");
|
|
|
+ startManagerSettingSetAddress();
|
|
|
+ }
|
|
|
+ else if (addc.Dong.equals("NONE") || addc.Ho.equals("NONE")) {
|
|
|
+ Log.w(TAG, "[onCreate] The info. of resi. is not set! [primary db]");
|
|
|
+ if (addc_Backup.Dong.equals("NONE") || addc_Backup.Ho.equals("NONE")) {
|
|
|
+ Log.w(TAG, "[onCreate] The info. of resi. is not set! [secondary db]");
|
|
|
+ startManagerSettingSetAddress();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ addc.setAddress(addc_Backup.Dong, addc_Backup.Ho);
|
|
|
+ addc.setIPAddress(addc_Backup.IPAddress);
|
|
|
+
|
|
|
+ m_IPActivity = true;
|
|
|
+ if (!addc.IPAddress.equals("NONE")) {
|
|
|
+ Log.w(TAG, "[onCreate] ========== start iMapServer service ========== [secondary db]");
|
|
|
+ Intent intent = new Intent(getApplicationContext(), iMapServer.class);
|
|
|
+ startService(intent);
|
|
|
+
|
|
|
+ Intent intentMobile = new Intent(getApplicationContext(), MobileProcService.class);
|
|
|
+ Log.w(TAG, "[onCreate] ========== start MobileProcServicee ========== [secondary db]");
|
|
|
+ startService(intentMobile);
|
|
|
+ }
|
|
|
+ MAINStatus = MAIN_NORMAL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_IPActivity = true;
|
|
|
+ if (!addc.IPAddress.equals("NONE")) {
|
|
|
+ Log.w(TAG, "[onCreate] ========== start iMapServer service ========== [primary db]");
|
|
|
+ Intent intent = new Intent(this, iMapServer.class);
|
|
|
+ startService(intent);
|
|
|
+
|
|
|
+ Intent intentMobile = new Intent(getApplicationContext(), MobileProcService.class);
|
|
|
+ Log.w(TAG, "[onCreate] ========== start MobileProcServicee ========== [secondary db]");
|
|
|
+ startService(intentMobile);
|
|
|
+ }
|
|
|
+ MAINStatus = MAIN_NORMAL;
|
|
|
+ }
|
|
|
+ SetData.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] check device addresses(ip, resi. info.)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ //주차정보 사용여부 체크
|
|
|
+ getParkedVehicleLocationSysInfo();
|
|
|
+
|
|
|
+ //전기차 정보 가져오기
|
|
|
+ GetElectricCarInfo();
|
|
|
+
|
|
|
+ //에너지관리서버 사용여부 가져오기
|
|
|
+ GetEnergyServerInfo();
|
|
|
+
|
|
|
+ //에너지 알람 사용여부 가져오기
|
|
|
+ GetEnergyAlarm();
|
|
|
+
|
|
|
+ //통화타임아웃 초기화
|
|
|
+ setCallAppTimeoutAsDefault();
|
|
|
+
|
|
|
+ try {
|
|
|
+ mWallPadApiCheckHandler.sendEmptyMessage(0);
|
|
|
+// Checker.sendEmptyMessageDelayed(0, 1000);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // sip 서비스 실행 옮김
|
|
|
+ Log.d(TAG, "[onCreate] startCallService start");
|
|
|
+ try {
|
|
|
+ runCallServices startCallService = new runCallServices();
|
|
|
+ startCallService.start();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[onCreate] startCallService end");
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 부팅하고 나서 업그레이드 상태를 false 로 해주지 않으면 통화 수신이 안됨
|
|
|
+ // 꼭 들어가야 함
|
|
|
+
|
|
|
+ // 전체 정전시험시 단지서버도 재부팅은 하나 로긴을 하지 않으면 그시간동안 세대기가 보낸 부트업 메세지를 못 받기 때문에....단말기 시간을 재 셋팅해주도록 한다.
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ String timedata = String.format("%04d",cal.get(Calendar.YEAR))+"."+String.format("%02d",cal.get(Calendar.MONTH)+1)+"."+String.format("%02d",cal.get(Calendar.DAY_OF_MONTH))+"."+String.format("%02d",cal.get(Calendar.HOUR_OF_DAY))+"."+String.format("%02d",cal.get(Calendar.MINUTE))+"."+String.format("%02d",cal.get(Calendar.SECOND));
|
|
|
+
|
|
|
+ WallpadStatusData wpd = new WallpadStatusData(getApplicationContext());
|
|
|
+ wpd.SetUpgradeState(false);
|
|
|
+ wpd.SetLastHeartbeat(timedata);
|
|
|
+ wpd.closeDB();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Calendar m_CurCalendar = Calendar.getInstance();
|
|
|
+ //CurYear , CurMonth, CurDate, CurHour, CurMin, CurSecond;
|
|
|
+ int CurYear = m_CurCalendar.get(Calendar.YEAR);
|
|
|
+
|
|
|
+ if (CurYear < 2018) {
|
|
|
+ WallpadStatusData DBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
+ DBMGR.setSystemTime(2018, 8, 1, 13, 0, 0);
|
|
|
+ DBMGR.closeDB();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ mLightInfo = new LightInfo();
|
|
|
+ getLivinglightPreset();
|
|
|
+ initLivinglightPreset();
|
|
|
+ getLivinglightPreset();
|
|
|
+
|
|
|
+ setPageIndicator();
|
|
|
+
|
|
|
+ mGetCallHistoryCheckHandler.sendEmptyMessageDelayed(0, 10000);
|
|
|
+
|
|
|
+
|
|
|
+ try {
|
|
|
+ handlerEverySecond.sendEmptyMessageDelayed(0, 1000);
|
|
|
+
|
|
|
+ // 월패드 카메라 녹색 노이즈 시험 코드 (월패드 부팅시 월패드 카메라 영상을 잠시 띄운후 없앤다. JEFF/2020.01.21.01)
|
|
|
+ /**
|
|
|
+ * 부팅시 카메라 서비스 정상동작 여부를 확인한다. (Edited by jeff, 2020.09.08)
|
|
|
+ */
|
|
|
+ sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_CHECK, 0, 0, 0); // 5초후 월패드 카메라를 초기화 한다. (그냥 화면밖에 영상을 잠시 띄우고 5초뒤에 없앤다.)
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bKakaoiEnable) {
|
|
|
+ Log.i(TAG, "[onCreate] ========== Kakao function enabled ==========");
|
|
|
+ startKakaoiFloatingBTN();
|
|
|
+ }
|
|
|
+// forceCtrlStrangerRecordingUserSettingDisable(false);
|
|
|
+ getLCDKeeperUsage();
|
|
|
+ Log.i(TAG, "[onCreate] ==================== onCreate end ====================");
|
|
|
+ }
|
|
|
+
|
|
|
+ private int nLCDKeeperType = WallpadDeviceSet.LCDKEEPER_NONE;
|
|
|
+ private String getLCDKeeperType(int nLCDKeeperType) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[getLCDKeeperUsage] nLCDKeeperType [" + nLCDKeeperType + "]");
|
|
|
+ if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_NONE) return "LCDKEEPER_NONE";
|
|
|
+ else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT) return "LCDKEEPER_PROTECT";
|
|
|
+ else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_RECOVER) return "LCDKEEPER_RECOVER";
|
|
|
+ else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT_RECOVER) return "LCDKEEPER_PROTECT_RECOVER";
|
|
|
+ else return "UNKNOWN";
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getLCDKeeperType(int nLCDKeeperType)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return "ERROR";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private boolean bLCDKeeperUsage = false;
|
|
|
+ private void getLCDKeeperUsage() {
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
|
|
|
+ nLCDKeeperType = mWallpadDeviceSet.getLCDKeeperUsage();
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+ if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT || nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_RECOVER || nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT_RECOVER) {
|
|
|
+ bLCDKeeperUsage = true;
|
|
|
+ }
|
|
|
+ Log.i(TAG, "[getLCDKeeperUsage] bLCDKeeperUsage [" + bLCDKeeperUsage + "], nLCDKeeperType [" + getLCDKeeperType(nLCDKeeperType) + "]");
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getLCDKeeperUsage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isSystemIPSet() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[isSystemIPSet] START!");
|
|
|
+
|
|
|
+ String strResult = "";
|
|
|
+ if (Build.VERSION.SDK_INT > 23) {
|
|
|
+ // Android 7
|
|
|
+ strResult = getIPAddress();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // Android 6
|
|
|
+ String strNetInfo = NetworkInterface.getByName("eth0").toString();
|
|
|
+ Log.i(TAG, "[isSystemIPSet] strNetInfo : " + strNetInfo + "]");
|
|
|
+ strNetInfo.trim();
|
|
|
+
|
|
|
+ String[] Parse_01 = strNetInfo.split("\\]");
|
|
|
+// for (int i = 0; i < Parse_01.length; i++) {
|
|
|
+// LOG_DEBUG("[getDeviceIPAddress] Parse_01[" + i + "] : " + Parse_01[i]);
|
|
|
+// }
|
|
|
+
|
|
|
+ String[] Parse_02 = Parse_01[Parse_01.length - 1].split("\\/");
|
|
|
+// for (int i = 0; i < Parse_02.length; i++) {
|
|
|
+// LOG_DEBUG("[getDeviceIPAddress] Parse_02[" + i + "] : " + Parse_02[i]);
|
|
|
+// }
|
|
|
+
|
|
|
+ strResult = Parse_02[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[isSystemIPSet] DONE! [IP Address : " + strResult + "]");
|
|
|
+
|
|
|
+ Pattern mPattern = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
|
|
|
+
|
|
|
+ return mPattern.matcher(strResult).matches();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] isSystemIPSet()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getIPAddress() {
|
|
|
+ try {
|
|
|
+ List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
|
|
|
+ for (NetworkInterface intf : interfaces) {
|
|
|
+ List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
|
|
|
+ for (InetAddress addr : addrs) {
|
|
|
+ if (!addr.isLoopbackAddress()) {
|
|
|
+ String sAddr = addr.getHostAddress();
|
|
|
+ //boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
|
|
|
+ boolean isIPv4 = sAddr.indexOf(':')<0;
|
|
|
+
|
|
|
+ if (isIPv4)
|
|
|
+ return sAddr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] isSystemIPSet()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void initIOInterface(WallPadAPI wallpadapi) {
|
|
|
+ try {
|
|
|
+ mIOInterface = new IOInterface(getContext(), wallpadapi);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] initIOInterface(WallPadAPI wallpadapi)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void checkDongHoSetting() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] ========== START ==========");
|
|
|
+ boolean IP_ExpansionSettingFlag = false;
|
|
|
+ EthernetDevInfo info = new EthernetDevInfo();
|
|
|
+
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
|
|
|
+ AddressSet addc = mWallpadStatusData.getAddressMGR();
|
|
|
+ mWallpadStatusData.SetCallAPKStatus(false);
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ if (!addc.Dong.equals("NONE") && !addc.Ho.equals("NONE") && !addc.IPAddress.equals("NONE")) {
|
|
|
+ if (Version.getModelType() == MODEL_TYPE.IHN_1020GL && Version.getModelType() == MODEL_TYPE.IHN_1020B_A
|
|
|
+ && Version.getModelType() == MODEL_TYPE.IHN_1020SA_A && Version.getModelType() == MODEL_TYPE.IHN_750) {
|
|
|
+ // LH 게이트웨이 때문에 위치 옮김 제어 서비스 보다 먼저 처리
|
|
|
+ String[] iptbl = addc.IPAddress.split("[.]");
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] Mac Set -> IP : " + addc.IPAddress +", Length : " + iptbl.length);
|
|
|
+ // BSP에서 초기 이더넷 비활성화시 jni 맥 셋팅시 메인어플 다이~~
|
|
|
+ EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] ETH_STATE_DISABLED!!!");
|
|
|
+
|
|
|
+ if (IP_ExpansionSettingFlag == true) {
|
|
|
+ mEthManager.UpdateEthDevInfo(info);
|
|
|
+ }
|
|
|
+
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] ETH_STATE_ENABLING!!!");
|
|
|
+ if (iptbl.length == 4) {
|
|
|
+ String macadd = String.format("00:%02x:%02x:%02x:%02x:00", Integer.parseInt(iptbl[0]),Integer.parseInt(iptbl[1]), Integer.parseInt(iptbl[2]), Integer.parseInt(iptbl[3]));
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] Mac Set "+macadd);
|
|
|
+ try {
|
|
|
+ WallPadInterface wpdifc = new WallPadInterface();
|
|
|
+ wpdifc.setMacAddr(macadd);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] -----------------------------------MacSet");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG,"[checkDongHoSetting] -----------------------------------Mac iptbl.length fail !!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
+ //mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
+ Log.d(TAG, "[checkDongHoSetting] ETH_STATE_ENABLING!!!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkDongHoSetting()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void registerSubScreen() {
|
|
|
+ try {
|
|
|
+ if (Common.eGUIType == Common.GUI_TYPE.METRO) {
|
|
|
+ if (MetroUI_SUB_GroupScreen == null && SubScreenLayout_01 != null ) MetroUI_SUB_GroupScreen = new METROUI_SUB_GROUP(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
+ }
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_ON) {
|
|
|
+ if (MetroUI_SUB_GroupScreen == null && SubScreenLayout_01 != null ) MetroUI_SUB_GroupScreen = new METROUI_SUB_GROUP(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
+ }
|
|
|
+ else if (Common.eGUIType == Common.GUI_TYPE.HYOSUNG_CTRL_OFF) {
|
|
|
+ if (MetroUI_SUB_GroupScreen == null && SubScreenLayout_01 != null ) MetroUI_SUB_GroupScreen = new METROUI_SUB_GROUP(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (mIconInfoTable.getCnt() > 0) {
|
|
|
+ if (SUB_01Screen == null && SubScreenLayout_01 != null ) SUB_01Screen = new SUB_01(getContext() , SubScreenLayout_01, mWallPadAPI);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mIconInfoTable.getCnt() > nIconsOnSubScreen) {
|
|
|
+ if (SUB_02Screen == null && SubScreenLayout_02 != null ) SUB_02Screen = new SUB_02(getContext() , SubScreenLayout_02, mWallPadAPI);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bEasyModeUsage) {
|
|
|
+ if (EasyUI_MainScreen == null && EasyMainScreenLayout != null ) EasyUI_MainScreen = new EASYUI_MAIN(getContext() , EasyMainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// restoreSystemVolume();
|
|
|
+ SCManager = new ScheduleManager();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.w(TAG, "[registerSubScreen] registerSubScreen()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void moveNextPage() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[moveNextPage] ===== START =====");
|
|
|
+ aniSlideIn = AnimationUtils.loadAnimation(getContext(), R.layout.appear_from_right);
|
|
|
+ aniSlideOut = AnimationUtils.loadAnimation(getContext(), R.layout.disappear_to_left);
|
|
|
+
|
|
|
+ mViewFlipper.setInAnimation(aniSlideIn);
|
|
|
+ mViewFlipper.setOutAnimation(aniSlideOut);
|
|
|
+ mViewFlipper.showNext();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] moveNextPage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void movePreviousPage() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[movePreviousPage] ===== START =====");
|
|
|
+ aniSlideIn = AnimationUtils.loadAnimation(getContext(), R.layout.appear_from_left);
|
|
|
+ aniSlideOut = AnimationUtils.loadAnimation(getContext(), R.layout.disappear_to_right);
|
|
|
+
|
|
|
+ mViewFlipper.setInAnimation(aniSlideIn);
|
|
|
+ mViewFlipper.setOutAnimation(aniSlideOut);
|
|
|
+ mViewFlipper.showPrevious();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] moveNextPage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean bScreenCheck = false;
|
|
|
+ int nSubScreenTimeout = 20, SCREENTIMEOUT = 20;
|
|
|
+ public void checkMainPage() {
|
|
|
+ try {
|
|
|
+
|
|
|
+ if (!bScreenCheck) {
|
|
|
+ nSubScreenTimeout = SCREENTIMEOUT;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ int nViewFlipperIndex = mViewFlipper.getDisplayedChild();
|
|
|
+
|
|
|
+ if (nViewFlipperIndex != 0) {
|
|
|
+ if (nSubScreenTimeout > 0) {
|
|
|
+ nSubScreenTimeout--;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ nSubScreenTimeout = SCREENTIMEOUT;
|
|
|
+ mViewFlipper.setDisplayedChild(0);
|
|
|
+ }
|
|
|
+ Log.i(TAG, "[checkMainPage] nViewFlipperIndex [" + nViewFlipperIndex + "], nSubScreenTimeout [" + nSubScreenTimeout + "]");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (nSubScreenTimeout <= 0) {
|
|
|
+ nSubScreenTimeout = SCREENTIMEOUT;
|
|
|
+ Log.i(TAG, "[checkMainPage] nViewFlipperIndex [" + nViewFlipperIndex + "], nSubScreenTimeout [" + nSubScreenTimeout + "]");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkMainPage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String strWallPadMainPakageName = "kr.co.icontrols.wallpadmain";
|
|
|
+ private boolean isPackageTop(String strPackageName) {
|
|
|
+ try {
|
|
|
+ ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
+ Log.i(TAG, "[isPackageTop] Build.VERSION.SDK_INT [" + Build.VERSION.SDK_INT + "]");
|
|
|
+ if (Build.VERSION.SDK_INT > 23) {
|
|
|
+ // Android 7
|
|
|
+ List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
|
|
|
+ for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
|
|
|
+ if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
|
|
|
+ for (String activeProcess : processInfo.pkgList) {
|
|
|
+ if (activeProcess.equals(strPackageName)) {
|
|
|
+ Log.i(TAG, "[isPackageTop] The top package is [" + strPackageName + "]");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // Android 6
|
|
|
+ List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
|
|
|
+ ComponentName componentInfo = taskInfo.get(0).topActivity;
|
|
|
+ if (componentInfo.getPackageName().equals(strPackageName)) {
|
|
|
+ Log.i(TAG, "[isPackageTop] The top package is [" + strPackageName + "]");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] isPackageTop(String strPackageName)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 부팅시에는 최초 DB에서 값을 읽어와서 변경하도록 한다.
|
|
|
+ private boolean m_SetBookMarkMainScreen = false;
|
|
|
+ private int m_CheckBookMarkReturnCount = 0 ;
|
|
|
+ private final int BOOKMARK_SCREEN_RETURN_CHECK_TIME = 30;
|
|
|
+ private boolean m_thisAcitivityRusume = false;
|
|
|
+
|
|
|
+ // 즐겨찾기 메인화면을 항상 고정해서 쓸것인지 설정하는 함수
|
|
|
+ public void SetBookMarkMainScreen(boolean Set)
|
|
|
+ {
|
|
|
+ m_SetBookMarkMainScreen = Set;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
+ if( wdb != null )
|
|
|
+ {
|
|
|
+ if( Set == true )
|
|
|
+ {
|
|
|
+ wdb.SetSelectedMainScreen( WallpadStatusData.MAIN_BOOKMARK_SCREEN);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ wdb.SetSelectedMainScreen( WallpadStatusData.MAIN_DEFAULT_SCREEN);
|
|
|
+ }
|
|
|
+ wdb.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean CheckCurrentEnergyScreen()
|
|
|
+ {
|
|
|
+ int currentView = mViewFlipper.getDisplayedChild();
|
|
|
+ Log.d(TAG, "-------> currentView : " + currentView);
|
|
|
+ if( currentView == 1)
|
|
|
+ return true;
|
|
|
+ else
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private int nTouchDownPosX = 0;
|
|
|
+ private int nTouchUpPosX = 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean dispatchTouchEvent(MotionEvent ev) {
|
|
|
+ boolean bReturn = false;
|
|
|
+ //Log.d("Move" , "dispatchTouchEvent-----------1");
|
|
|
+ try {
|
|
|
+ if (ev.getAction() == MotionEvent.ACTION_DOWN) {
|
|
|
+ nTouchDownPosX = (int)ev.getX();
|
|
|
+ }
|
|
|
+ else if (ev.getAction() == MotionEvent.ACTION_UP) {
|
|
|
+ nTouchUpPosX = (int)ev.getX();
|
|
|
+ Log.d(TAG, "[dispatchTouchEvent] nTouchDownPosX [" + nTouchDownPosX + "], nTouchUpPosX [" + nTouchUpPosX + "]");
|
|
|
+ if (nTouchUpPosX < nTouchDownPosX - 50) {
|
|
|
+ moveNextPage();
|
|
|
+ setPageIndicator();
|
|
|
+ }
|
|
|
+ else if (nTouchUpPosX > nTouchDownPosX + 50) {
|
|
|
+ movePreviousPage();
|
|
|
+ setPageIndicator();
|
|
|
+ }
|
|
|
+ nTouchDownPosX = nTouchUpPosX;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] dispatchTouchEvent(MotionEvent ev)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ bReturn = super.dispatchTouchEvent(ev);
|
|
|
+ return bReturn;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setPageIndicator() {
|
|
|
+ try {
|
|
|
+ int nViewFlipperIndex = mViewFlipper.getDisplayedChild();
|
|
|
+ int nChildCnt = mViewFlipper.getChildCount();
|
|
|
+ Log.d(TAG, "[setPageIndicator] nViewFlipperIndex [" + nViewFlipperIndex + "], nChildCnt [" + nChildCnt + "]");
|
|
|
+ if (Common.eGUIType == Common.GUI_TYPE.STANDARD) {
|
|
|
+ Log.d(TAG, "[setPageIndicator] eGUIType == GUI_TYPE.STANDARD");
|
|
|
+ ImageView[] IMG_INDICATOR;
|
|
|
+ if (bEasyModeUsage) IMG_INDICATOR = new ImageView[] { (ImageView) findViewById(R.id.pageindex_main), (ImageView) findViewById(R.id.pageindex_sub1), (ImageView) findViewById(R.id.pageindex_sub2), (ImageView) findViewById(R.id.pageindex_easymain) };
|
|
|
+ else IMG_INDICATOR = new ImageView[] { (ImageView) findViewById(R.id.pageindex_main), (ImageView) findViewById(R.id.pageindex_sub1), (ImageView) findViewById(R.id.pageindex_sub2) };
|
|
|
+ for (int i = 0; i < nChildCnt; i++) {
|
|
|
+ if (i == nViewFlipperIndex) {
|
|
|
+ if (i == 0) IMG_INDICATOR[i].setSelected(true);
|
|
|
+ else IMG_INDICATOR[i].setSelected(true);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (i == 0) IMG_INDICATOR[i].setSelected(false);
|
|
|
+ else IMG_INDICATOR[i].setSelected(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+// else if (eGUIType == GUI_TYPE.METRO) {
|
|
|
+// ImageView[] IMG_INDICATOR = { (ImageView) findViewById(R.id.pageindex_sub1), (ImageView) findViewById(R.id.pageindex_sub2) };
|
|
|
+// if (nViewFlipperIndex == 0) {
|
|
|
+// for (int i = 0; i < nChildCnt; i++) {
|
|
|
+// if (i != 0) IMG_INDICATOR[i - 1].setVisibility(View.INVISIBLE);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// else {
|
|
|
+// for (int i = 0; i < nChildCnt; i++) {
|
|
|
+// if (i != 0) {
|
|
|
+// IMG_INDICATOR[i - 1].setVisibility(View.VISIBLE);
|
|
|
+// if (i == nViewFlipperIndex) IMG_INDICATOR[i - 1].setSelected(true);
|
|
|
+// else IMG_INDICATOR[i - 1].setSelected(false);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] setPageIndicator()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * (임시코드) WallPadAPI 초기생성시 Connect 에 시간이 걸리며, <br>
|
|
|
+ * WallPadAPI 초기화후 바로 Get_GasValveController 등을 사용하여 API 를 가져올수 없기에, <br>
|
|
|
+ * 본 딜레이 코드를 임시로 적용한다.
|
|
|
+ */
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ protected Handler mWallPadApiCheckHandler = new Handler()
|
|
|
+ {
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg)
|
|
|
+ {
|
|
|
+ if (msg.what == 0) {
|
|
|
+ if (mWallPadAPI != null) {
|
|
|
+ if (mWallPadAPI.Check_Connect()) mWallPadApiCheckHandler.sendEmptyMessageDelayed(1, 10);
|
|
|
+ else mWallPadApiCheckHandler.sendEmptyMessageDelayed(0, 10);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (msg.what == 1) {
|
|
|
+ // 현산향
|
|
|
+ AutoIGALStatusReleaseSinario();
|
|
|
+ if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
+ || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
+ mSdb_LivingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
|
|
|
+ mSdbAPI = mWallPadAPI.Get_SdbController();
|
|
|
+
|
|
|
+ if (mSdb_LivingRoomLightAPI == null) Log.d(TAG , "[mWallPadApiCheckHandler] Get_Sdb_LivingRoomLightAPI Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
+ else Log.d(TAG , "[mWallPadApiCheckHandler] Get_Sdb_LivingRoomLightAPI Success !");
|
|
|
+
|
|
|
+ if (mSdbAPI == null) Log.d(TAG , "[mWallPadApiCheckHandler] Get_SdbController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
+ else Log.d(TAG , "[mWallPadApiCheckHandler] Get_SdbController Success !");
|
|
|
+
|
|
|
+// ChangeLEDButtonLevel();
|
|
|
+ }
|
|
|
+ else if (Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I || Version.getModelType() == MODEL_TYPE.IHN_1010_I_ALT) {
|
|
|
+ mIntLightAPI = mWallPadAPI.Get_IntLightController();
|
|
|
+ if (mIntLightAPI == null) Log.d(TAG , "[mWallPadApiCheckHandler] Get_IntLightController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
+ else Log.d(TAG , "[mWallPadApiCheckHandler] Get_IntLightController Success !");
|
|
|
+// ChangeLEDButtonLevel();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 대외향
|
|
|
+ WallpadDeviceSet devDB = new WallpadDeviceSet( getApplicationContext() );
|
|
|
+ int[] retArray = devDB.Get_Light_info();
|
|
|
+ devDB.closeDB();
|
|
|
+ if (retArray!= null && retArray[0] == 1) {
|
|
|
+ if (retArray[1] == WallpadDeviceSet.LIGHT_TYPE_LIVING) {
|
|
|
+ // 거실 스위치
|
|
|
+ m_LightCtrl = mWallPadAPI.Get_LightController();
|
|
|
+ if (m_LightCtrl == null) Log.d(TAG , "Get_LightController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
+ else Log.d(TAG , "Get_LightController Success !");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 멀티스위치
|
|
|
+ m_MultiSwitch = mWallPadAPI.Get_MultiSwitchController();
|
|
|
+ if (m_MultiSwitch == null) Log.d(TAG , "Get_MultiSwitchController Fail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
|
|
|
+ else Log.d(TAG , "Get_MultiSwitchController Success !");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (msg.what == 10) {
|
|
|
+ // 부트업 실패시 5초 간격으로 보내도록 수정
|
|
|
+ Log.d(TAG , "NOTIFY_SENDBOOTUP_FAIL Retry!!!!");
|
|
|
+ Intent Newintent = new Intent();
|
|
|
+ Newintent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ Newintent.putExtra(define.NOTIBR_KIND,Common.DEVICE_BOOTUP_RETRY);
|
|
|
+ sendBroadcast(Newintent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ private void ChangeLEDButtonLevel()
|
|
|
+ {
|
|
|
+ if( Version.getModelType() == Version.MODEL_TYPE.IHN_1020GL )
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ String filename = "/sdcard/led_button_reset.txt";
|
|
|
+
|
|
|
+ File savefile = new File(filename);
|
|
|
+
|
|
|
+ Log.d(TAG, "8888888888888888888888 savefile : " + savefile.exists());
|
|
|
+ if(savefile.exists())
|
|
|
+ {
|
|
|
+ Log.d(TAG, "try file is exist... ");
|
|
|
+ if( mIntLightAPI != null)
|
|
|
+ {
|
|
|
+ int ret = mIntLightAPI.LedBrightCtrl((byte)0x01);
|
|
|
+
|
|
|
+ if( ret >= 0 )
|
|
|
+ {
|
|
|
+ WallpadStatusData wd = new WallpadStatusData( getApplicationContext());
|
|
|
+ wd.SetLEDButtonBrightnessLevel(1); // DB 저장이 실패하게 되면 초기값을 2로 셋팅하기 때문에 다시 한번 셋팅해준다.
|
|
|
+ int level = wd.GetLEDButtonBrightnessLevel();
|
|
|
+ wd.closeDB();
|
|
|
+ Log.d(TAG, "88888888 button brightness Level 1 == " + level);
|
|
|
+
|
|
|
+ WallpadStatusData wd1 = new WallpadStatusData( getApplicationContext());
|
|
|
+ wd1.SetLEDButtonBrightnessLevel(1);
|
|
|
+ level = wd1.GetLEDButtonBrightnessLevel();
|
|
|
+ wd1.closeDB();
|
|
|
+
|
|
|
+
|
|
|
+ savefile.delete();
|
|
|
+
|
|
|
+ // 생산 기술팀 요청사항
|
|
|
+ // LED 버튼 보디 교체로 레벨이 너무 밝아 디폴트값 변경을 요청함 ,,
|
|
|
+ Log.d(TAG, "8888888888888888888888 button brightness Level 1 == " + level);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AutoIGALStatusReleaseSinario()
|
|
|
+ {
|
|
|
+ // 에너지미터 설정에 따라 조명 상태 변경시 일괄소등 해제 처리 시나리오를 설정하도록 한다.
|
|
|
+ // 일괄소등 해제 시나리오 적용시...
|
|
|
+ try
|
|
|
+ {
|
|
|
+ WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ int setIparkEnergy = devset.Get_Energy_Devices_Info();
|
|
|
+ Log.d(TAG , "Get_IPark_Energy_Info bSet: setIparkEnergy : " + setIparkEnergy);
|
|
|
+ if( setIparkEnergy == 1 )
|
|
|
+ {
|
|
|
+ mWallPadAPI.SetAutoIGALStatusClear(true);
|
|
|
+ Log.d(TAG , "AutoIGALStatusReleaseSinario bSet: true");
|
|
|
+ }
|
|
|
+ devset.closeDB();
|
|
|
+ }
|
|
|
+ catch(Exception e )
|
|
|
+ {
|
|
|
+ Log.e(TAG, e.toString());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * onDestroy
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onDestroy() {
|
|
|
+ // 이걸 왜 넣었지?
|
|
|
+ setChangeScreen(mCurrentScreenId, true, false);
|
|
|
+ unregisterBroadcastReceiver();
|
|
|
+ super.setFinishTimerDestroy();
|
|
|
+
|
|
|
+ Log.i(TAG, "*************************************************************");
|
|
|
+ Log.i(TAG, "****************** [END - MainActivity] *******************");
|
|
|
+ Log.i(TAG, "*************************************************************");
|
|
|
+ super.onDestroy();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * onResume
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onResume() {
|
|
|
+ super.onResume();
|
|
|
+
|
|
|
+ ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
+ List<ActivityManager.RunningTaskInfo> info = manager.getRunningTasks(1);
|
|
|
+ ComponentName componentName= info.get(0).topActivity;
|
|
|
+ String topActivityName = componentName.getClassName();
|
|
|
+ Log.d(TAG,"[onResume] ========== START ========== " + topActivityName);
|
|
|
+
|
|
|
+ m_thisAcitivityRusume = true;
|
|
|
+ if (mWallPadAPI != null) {
|
|
|
+ if (mWallPadAPI.Check_Connect()) Log.w(TAG, "[onResume] mWallPadAPI.Check_Connect() = true!!!");
|
|
|
+ else Log.w(TAG, "[onResume] mWallPadAPI.Check_Connect() = false!!!");
|
|
|
+ mWallPadAPI.Resume();
|
|
|
+ }
|
|
|
+
|
|
|
+ //CallDataChecker();
|
|
|
+ try {
|
|
|
+ if (m_ModelHouseSleepModeRelease) {
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(1, true);
|
|
|
+// pm.userActivity(2, true);1qn
|
|
|
+ // LCD 항상 ON
|
|
|
+ ((Activity)this.getContext()).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (MAINStatus == MAIN_WAIT_SETIP) {
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ AddressSet addc = SetData.getAddressMGR();
|
|
|
+ SetData.closeDB();
|
|
|
+ Log.i("MAINSCREEN", "onResume MAIN_WAIT_SETIP "+addc.IPAddress);
|
|
|
+ if (!addc.IPAddress.equals("NONE")) {
|
|
|
+ Log.i("MAINSCREEN", "onResume Start Server");
|
|
|
+ EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
+ Intent intent = new Intent(getApplicationContext(), iMapServer.class);
|
|
|
+ Log.w("MAINSCREEN", "Call Start iMapServer");
|
|
|
+ startService(intent);
|
|
|
+ WallpadDeviceSet devSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ String[] sitecode = devSet.GetSettingData("site_code");
|
|
|
+ try {
|
|
|
+ if (sitecode != null) {
|
|
|
+ Intent sipServiceLauncher = new Intent ("cm.sip.hns.SIPStun.StartService");
|
|
|
+ getApplicationContext().startService(sipServiceLauncher);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Common.DebugLog("SIP StartServerice Error!!!!!!!!!!!!!!");
|
|
|
+ }
|
|
|
+ devSet.closeDB();
|
|
|
+ MAINStatus = MAIN_NORMAL;
|
|
|
+ }
|
|
|
+ } catch(Exception e ) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //CheckMainScreen();
|
|
|
+
|
|
|
+ //refreshUserCtr();
|
|
|
+ //reloadData();
|
|
|
+ try {
|
|
|
+ WallPadInterface wpdifc = new WallPadInterface();
|
|
|
+ AudioManager amanager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
|
|
|
+ amanager.setMode(WallPadInterface.AUDIO_MODE_NORMAL);
|
|
|
+ wpdifc.DoControl(WallPadInterface.IOCTL_DOOR_POWERONOFF, 0);
|
|
|
+
|
|
|
+ Intent intent = new Intent(Common.MAIN_SCREEN_NOW_UPDATE, null);
|
|
|
+ getContext().sendBroadcast(intent);
|
|
|
+
|
|
|
+ mGetCallHistoryCheckHandler.sendEmptyMessageDelayed(0, 1000);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ bScreenCheck = true;
|
|
|
+ DebugLogOutput("@@@@@@@@ [onResume] @@@@@@@@");
|
|
|
+ }
|
|
|
+
|
|
|
+ protected String getForegroundAPK() {
|
|
|
+ try {
|
|
|
+ ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
+ List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
|
|
|
+ ComponentName topActivity=taskInfo.get(0).topActivity;
|
|
|
+ String str=topActivity.getPackageName();
|
|
|
+
|
|
|
+ return str;
|
|
|
+ } catch(Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return " ";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * onPause
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onPause() {
|
|
|
+ m_thisAcitivityRusume = false;
|
|
|
+ if(mWallPadAPI != null) mWallPadAPI.Pause();
|
|
|
+ bScreenCheck = false;
|
|
|
+ DebugLogOutput("@@@@@@@@ [onPause] @@@@@@@@");
|
|
|
+ super.onPause();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* ================================================================================================
|
|
|
+ * [BroadcastReceiver] Section
|
|
|
+ ================================================================================================ */
|
|
|
+ /**
|
|
|
+ * BroadcastReceiver.onReceive for [WpadActivity]
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onBrReceive(Intent intent) {
|
|
|
+ try {
|
|
|
+ String strAction = intent.getAction();
|
|
|
+ Log.i(TAG, "[onBrReceive] Action [" + strAction + "]");
|
|
|
+ if (strAction.equals(BR_CTRL_LIGHT_LIVINGROOM)) {
|
|
|
+ Log.d(TAG, "[onBrReceive] (BR) BR_CTRL_LIGHT_LIVINGROOM");
|
|
|
+ mLightInfo.nLightPresetNo = 0;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] onBrReceive(Intent intent)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ super.onBrReceive(intent);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* ================================================================================================
|
|
|
+ * [Touch & Key Event] Section
|
|
|
+ ================================================================================================ */
|
|
|
+ /**
|
|
|
+ * TouchEvent for [WpadActivity]
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onTouchEvent(View v, MotionEvent event) {
|
|
|
+ super.onTouchEvent(v, event);
|
|
|
+
|
|
|
+ int TargetId = v.getId();
|
|
|
+ int MoveEvent = event.getAction();
|
|
|
+ Log.i(TAG, "[onTouchEvent] TargetId [" + TargetId + "], MoveEvent [" + MoveEvent + "]");
|
|
|
+ if (MoveEvent == MotionEvent.ACTION_UP) {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * H/W Key Event
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
+ Log.i(TAG, "[onKeyDown] keyCode : " + keyCode + ", Action : " + event.getAction());
|
|
|
+// sendKeyEventBR(keyCode);
|
|
|
+ return super.onKeyDown(keyCode, event);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onKeyUp(int keyCode, KeyEvent event) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ Log.i(TAG, "[onKeyUp] keyCode : " + keyCode + ", Action : " + event.getAction());
|
|
|
+ return super.onKeyUp(keyCode, event);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public boolean onKeyLongPress(int keyCode, KeyEvent event) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ DebugLogOutput("onKeyLongPress - " + " / keyCode : " + keyCode + " / Action : " + event.getAction());
|
|
|
+ return super.onKeyLongPress(keyCode, event);
|
|
|
+ }
|
|
|
+ /* ================================================================================================
|
|
|
+ * [Popup Activity] Section
|
|
|
+ ================================================================================================ */
|
|
|
+ /**
|
|
|
+ * Popup Activity 를 시작시킨다.
|
|
|
+ *
|
|
|
+ * @param ScreenId - 팝업시작시 Screen ID_OLD
|
|
|
+ * @return (boolean) true : 성공, false : 실패
|
|
|
+ */
|
|
|
+ public boolean StartPopup(int ScreenId) {
|
|
|
+ try {
|
|
|
+ if (ID.POPUPS.POPUP_INTERFLOORNOISEOCCURED <= ScreenId && ScreenId <= ID.POPUPS.POPUP_POSTRECEIVED) { // 알림 팝업에 한하여
|
|
|
+ if (Common.bWallPadCallLive) {
|
|
|
+ Log.w(TAG, "[StartPopup] StartPopup denied!!! === WallPadCall is running!! ScreenId [" + ScreenId + "]");
|
|
|
+ return false; // 통화 앱이 실행되어 있는 경우, 팝업 출력 안함
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (getPopupActivityRun()) {
|
|
|
+ return ((WpadActivity)(PopupActivity.getContext())).ChangeScreen(ScreenId);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ setPopupActivityRun(true);
|
|
|
+ Intent intent = new Intent(mContext, PopupActivity.class);
|
|
|
+ intent.putExtra("ScreenId", ScreenId);
|
|
|
+ overridePendingTransition(0, 0);
|
|
|
+ startActivityForResult(intent, 0);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] StartPopup(int ScreenId)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Popup Activity 를 시작시킨다. (시작시 Intent Type 데이터를 전달한다)
|
|
|
+ *
|
|
|
+ * @param ScreenId - 팝업시작시 Screen ID_OLD
|
|
|
+ * @param data - 전달할 데이터
|
|
|
+ * @return (boolean) true : 성공, false : 실패
|
|
|
+ */
|
|
|
+ public boolean StartPopup(int ScreenId, Intent data) {
|
|
|
+ try {
|
|
|
+ if (ID.POPUPS.POPUP_INTERFLOORNOISEOCCURED <= ScreenId && ScreenId <= ID.POPUPS.POPUP_POSTRECEIVED) { // 알림 팝업에 한하여
|
|
|
+ if (Common.bWallPadCallLive) {
|
|
|
+ Log.w(TAG, "[StartPopup] StartPopup denied!!! === WallPadCall is running!! ScreenId [" + ScreenId + "]");
|
|
|
+ return false; // 통화 앱이 실행되어 있는 경우, 팝업 출력 안함
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (getPopupActivityRun()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ setPopupActivityRun(true);
|
|
|
+ Intent intent = new Intent(mContext, PopupActivity.class);
|
|
|
+ intent.putExtra("ScreenId", ScreenId);
|
|
|
+ intent.putExtra("PopupScreenDataIntent", data);
|
|
|
+ overridePendingTransition(0, 0);
|
|
|
+ startActivityForResult(intent, 0);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] StartPopup(int ScreenId, Intent data)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Activity Result Reception
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "@@@@@@@@ [onActivityResult] @@@@@@@@");
|
|
|
+
|
|
|
+ // int screenId = data.getIntExtra("SCREENS", -1);
|
|
|
+ // Log.d(TAG, "@@@@@@@@ [onActivityResult] @@@@@@@@ screenId : " + screenId );
|
|
|
+ //if( mViewFlipper)
|
|
|
+
|
|
|
+ if (requestCode == UNINSTALL_REQUEST_CODE) {
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+ Log.w(TAG, "[onActivityResult] user accepted the uninstall");
|
|
|
+ } else if (resultCode == RESULT_CANCELED) {
|
|
|
+ Log.w(TAG, "[onActivityResult] user canceled the uninstall");
|
|
|
+ } else if (resultCode == RESULT_FIRST_USER) {
|
|
|
+ Log.w(TAG, "[onActivityResult] failed to uninstall");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (data != null) {
|
|
|
+ int nSenderScreenID = data.getIntExtra(Common.BR_SENDER_SCREEN, -1);
|
|
|
+ int nReceiveScreenID = data.getIntExtra(Common.BR_RECEIVE_SCREEN, -1);
|
|
|
+ int nCallSubMenuScreen = data.getIntExtra(Common.CALL_SUBMAIN_SCREEN, -1);
|
|
|
+
|
|
|
+ if (nCallSubMenuScreen > 0) {
|
|
|
+ CallSubMenuScreen(nCallSubMenuScreen);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "[onActivityResult] nSenderScreenID : " + nSenderScreenID + " , nReceiveScreenID : " + nReceiveScreenID );
|
|
|
+ if (nSenderScreenID == ID.POPUPS.POPUP_DELETESHORTCUT && nReceiveScreenID == ID.SCREENS.SCREEN_MAIN) {
|
|
|
+ boolean bResult = data.getBooleanExtra(Common.BR_WIDGET_DELETE, false);
|
|
|
+ int nDeleteShortcutID = data.getIntExtra(Common.BR_DELETE_WIDGET_ID, -1);
|
|
|
+ Log.d(TAG, "[onActivityResult] bResult : " + bResult + ", nDeleteShortcutID : " + nDeleteShortcutID);
|
|
|
+ MainScreen.procDeleteShortcutPopupResult(bResult, nDeleteShortcutID);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if (nSenderScreenID == ID.POPUPS.POPUP_ADDSHORTCUT && nReceiveScreenID == ID.SCREENS.SCREEN_MAIN) {
|
|
|
+ boolean bResult = data.getBooleanExtra(Common.BR_WIDGET_INSERT, false);
|
|
|
+ int nAddShortcutID = data.getIntExtra(Common.BR_INSERT_WIDGET_ID, -1);
|
|
|
+ Log.d(TAG, "[onActivityResult] bResult : " + bResult + ", nAddShortcutID : " + nAddShortcutID);
|
|
|
+ MainScreen.procAddShortcutPopupResult(bResult, nAddShortcutID);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if (nSenderScreenID == ID.POPUPS.POPUP_CONFIGUREPRESET && nReceiveScreenID == ID.SCREENS.SCREEN_MAIN) {
|
|
|
+ String strLivinglightPresetInfo = data.getStringExtra(Common.BR_LIVINGLIGHT_PRESET_INFO);
|
|
|
+ Log.d(TAG, "[onActivityResult] strLivinglightPresetInfo [" + strLivinglightPresetInfo + "]");
|
|
|
+ savePresetValue(strLivinglightPresetInfo);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if ((ID.POPUPS.POPUP_GROUP_CTRL <= nSenderScreenID && nSenderScreenID <= ID.POPUPS.POPUP_GROUP_SETTING) && nReceiveScreenID == ID.SCREENS.SCREEN_METROUI_GROUP) {
|
|
|
+ boolean bRun = data.getBooleanExtra(Common.BR_RUN_WIDGET, false);
|
|
|
+ int nIconID = data.getIntExtra(Common.BR_RUN_WIDGET_ID, 0);
|
|
|
+ Log.d(TAG, "[onPopupResult] bRun [" + bRun + "], nIconID [" + nIconID + "]") ;
|
|
|
+ if (bRun) runIcon(nIconID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+// // 팝업을 종료하고 다른 팝업을 띄울경우가 있다.
|
|
|
+// int screenIdCode = data.getExtras().getInt("CHANGE_POPUP" );
|
|
|
+// int popupKind = data.getExtras().getInt("POPUP_KIND");
|
|
|
+//
|
|
|
+// Log.d(TAG, "@@@ CHANGE_POPUP : " + screenIdCode + " , popupKind : " +popupKind);
|
|
|
+// if( screenIdCode > 0 )
|
|
|
+// {
|
|
|
+// setPopupActivityRun(false);
|
|
|
+// Intent intent = new Intent();
|
|
|
+// intent.putExtra("POPUP_KIND", popupKind );
|
|
|
+// StartPopup(screenIdCode , intent);
|
|
|
+// }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ Log.e(TAG, e.toString());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /* ================================================================================================
|
|
|
+ * [Info Activity] Section
|
|
|
+ ================================================================================================ */
|
|
|
+ public static ManualActivity mManualActivity;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Info Activity를 시작시킨다.
|
|
|
+ *
|
|
|
+ * @param screenId - 매뉴얼 시작시 Screen ID_OLD
|
|
|
+ * @return (boolean) true : 성공, false : 실패
|
|
|
+ */
|
|
|
+ public boolean startManualPopup(int screenId) {
|
|
|
+ Log.d(TAG, "[startManualPopup] ScreenId [" + screenId +"], mCurrentInfoScreenId [" + mCurrentInfoScreenId + "]" );
|
|
|
+ if (getInfoActivityRun() == true) {
|
|
|
+ mCurrentInfoScreenId = screenId;
|
|
|
+ return ((WpadActivity)(ManualActivity.getContext())).ChangeScreen(screenId);
|
|
|
+ } else {
|
|
|
+ if (mCurrentInfoScreenId == screenId) return false;
|
|
|
+ mCurrentInfoScreenId = screenId;
|
|
|
+ setInfoActivityRun(true);
|
|
|
+ Intent intent = new Intent(mContext, ManualActivity.class);
|
|
|
+ intent.putExtra("ScreenId", screenId);
|
|
|
+
|
|
|
+ overridePendingTransition(0, 0);
|
|
|
+ startActivityForResult(intent, 0);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void resetCurrentInfoScreenID() {
|
|
|
+ try {
|
|
|
+ mCurrentInfoScreenId = -1;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] resetCurrentInfoScreenID()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 매뉴얼 버튼 사용 유무
|
|
|
+ *
|
|
|
+ * @return boolean 타입 - true:사용, false:미사용
|
|
|
+ */
|
|
|
+ public boolean GetManualUse() {
|
|
|
+ WallpadDeviceSet devSet = new WallpadDeviceSet(mContext);
|
|
|
+ String[] DBinfo = devSet.GetSettingData("매뉴얼");
|
|
|
+ devSet.closeDB();
|
|
|
+ if (DBinfo != null) {
|
|
|
+ if (DBinfo[1].indexOf("사용함") > 0) {
|
|
|
+ Log.d(TAG, "[GetManualUse] Use Manual");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 미사용
|
|
|
+ Log.d(TAG, "[GetManualUse] Not Use Manual");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //미사용
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /* ================================================================================================
|
|
|
+ * [Screen] Section
|
|
|
+ ================================================================================================ */
|
|
|
+ /**
|
|
|
+ * Screen 에서 Screen 변경을 요청할 경우 호출된다.<br>
|
|
|
+ * Override 사용하여 Screen 변경을 처리한다.<br>
|
|
|
+ *
|
|
|
+ * @param nScreenId - 변경할 Screen ID_OLD
|
|
|
+ * @return (boolean) true : 성공, false : 실패
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ protected boolean onChangeScreen(int nScreenId) {
|
|
|
+ super.onChangeScreen(nScreenId);
|
|
|
+
|
|
|
+ return setChangeScreen(nScreenId, false, false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Screen 등록자<br>
|
|
|
+ * MainScreenLayout 에 현재 Screen 을 삭제하고, 새로운 Screen 을 등록시킨다.
|
|
|
+ *
|
|
|
+ * @param nScreenId - 변경할 Screen ID_OLD
|
|
|
+ * @param OnlyRemove - 현재 Screen 을 삭제만 할 경우 (onDestroy 에서 사용)
|
|
|
+ * @return (boolean) true : 성공, false : 실패
|
|
|
+ */
|
|
|
+ private boolean setChangeScreen(int nScreenId, boolean OnlyRemove, boolean setAnimation) {
|
|
|
+ DebugLogOutput("setChangeScreen - " + "CurrentSelectDeviceId : " + mCurrentScreenId + " / NextLayoutId : " + nScreenId + " / OnlyRemove : " + OnlyRemove);
|
|
|
+
|
|
|
+ // 1. 현재 Layout 삭제
|
|
|
+ boolean remove = false;
|
|
|
+ if (mCurrentScreenId > 0) {
|
|
|
+ remove = true;
|
|
|
+ MainScreenLayout.removeAllViews();
|
|
|
+ super.setCurrentScreen(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (OnlyRemove) return true;
|
|
|
+
|
|
|
+ mCurrentScreenId = nScreenId;
|
|
|
+
|
|
|
+ // 2. 새로운 Layout 표시
|
|
|
+ try {
|
|
|
+ switch (nScreenId) {
|
|
|
+ case ID.SCREENS.SCREEN_MAIN:
|
|
|
+ MainScreen = new MAIN(getContext(), MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen, DEVICE_OPERATION_MODE);
|
|
|
+ super.setCurrentScreen(MainScreen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID.SCREENS.SCREEN_SUB_01:
|
|
|
+ SUB_01Screen = new SUB_01(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
+ super.setCurrentScreen(SUB_01Screen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID.SCREENS.SCREEN_SUB_02:
|
|
|
+ SUB_02Screen = new SUB_02(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
+ super.setCurrentScreen(SUB_02Screen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID.SCREENS.SCREEN_METROUI_MAIN:
|
|
|
+ MetroUI_MainScreen = new METROUI_MAIN(getContext(), MainScreenLayout, mWallPadAPI, m_CallSubMenuScreen);
|
|
|
+ super.setCurrentScreen(MetroUI_MainScreen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID.SCREENS.SCREEN_METROUI_SUB_01:
|
|
|
+ MetroUI_SUB_01Screen = new METROUI_SUB_01(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
+ super.setCurrentScreen(MetroUI_SUB_01Screen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID.SCREENS.SCREEN_METROUI_SUB_02:
|
|
|
+ MetroUI_SUB_02Screen = new METROUI_SUB_02(getContext(), MainScreenLayout, mWallPadAPI);
|
|
|
+ super.setCurrentScreen(MetroUI_SUB_02Screen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ Log.e(TAG, "[Error] setChangeScreen - nScreenId Not found!!! (" + mCurrentScreenId + ")");
|
|
|
+ mCurrentScreenId = -1;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[ExceptionError] - setChangeScreen->Screen Create : " + e);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /////////////////////////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+ private void runDeviceService() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[runDeviceService] ===== START =====");
|
|
|
+ /* 2018.01.30 속초 아이파크 RF현관카메라 연동으로 인하여 수정
|
|
|
+ // 우선 제어기기 연동 기능이 없음
|
|
|
+ if( Version.getModelType() == Version.MODEL_TYPE.IHN_750 )
|
|
|
+ return;
|
|
|
+ */
|
|
|
+ if (!getIsSubWallpad()) {
|
|
|
+ ActivityManager mActivityManager = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
+ List<ActivityManager.RunningAppProcessInfo> RunningAppList = mActivityManager.getRunningAppProcesses();
|
|
|
+
|
|
|
+ Common.DebugLog("[runDeviceService] -----> RunningAppProcessInfo : " + RunningAppList.size() + " +++ Version : " + this.getAppVersion());
|
|
|
+ for (int i = 0; i < RunningAppList.size(); i++) {
|
|
|
+ ActivityManager.RunningAppProcessInfo RunningAppListInfo = RunningAppList.get(i);
|
|
|
+ Common.DebugLog("[runDeviceService] -----> RunningAppListInfo.processName : " + RunningAppListInfo.processName);
|
|
|
+
|
|
|
+ if (RunningAppListInfo.processName.equals("com.artncore.deviceservice")) {
|
|
|
+ Log.w(TAG, "[runDeviceService] DevService is already running");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[runDeviceService] Start DevService!!");
|
|
|
+ Intent mIntent = new Intent("wallpaddevservice.ServiceMain");
|
|
|
+ startService(mIntent);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runDeviceService] This wallpad is sub-wallpad. not need DevService!!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runDeviceService()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 통신으로 들어오는 비상버튼 스킵하기 위한 딜레이 체크 변수
|
|
|
+ private long EmerCommDelayTime = 0;
|
|
|
+ public static String WALLPAD_ALERT = "WALLPAD_ALERT";
|
|
|
+ BroadcastReceiver mWallPadAlertBR = new BroadcastReceiver() {
|
|
|
+ @Override
|
|
|
+ public void onReceive(Context context, Intent intent) {
|
|
|
+ Log.i(TAG, "[mWallPadAlertBR] Receive alert BR");
|
|
|
+ String strAction = intent.getAction();
|
|
|
+ Log.d(TAG, "[mWallPadAlertBR] strAction [" + strAction + "]");
|
|
|
+ if (strAction.equalsIgnoreCase(WALLPAD_ALERT)) {
|
|
|
+ int kind = intent.getIntExtra("KIND",0);
|
|
|
+ Log.i(TAG, "[mWallPadAlertBR] " + String.format("Receive alert BR [%d][tag:%s]", kind,String.valueOf(Alert_App_On)));
|
|
|
+
|
|
|
+ // 제주 아이파크 스위트현장의 비상발생 증상을 디버깅하기 위한 코드 (JEFF, 2019.09.26)
|
|
|
+// if (kind == 4) {
|
|
|
+// try {
|
|
|
+// byte hFrom = intent.getByteExtra("FROM", (byte) 0xFF);
|
|
|
+// if (hFrom != (byte) 0xFF) {
|
|
|
+// if (hFrom % 10 == 3) {
|
|
|
+// Log.w(TAG, "[mWallPadAlertBR] Emergency from BathPhone!!!");
|
|
|
+// int nDstPort = 10000;
|
|
|
+// sendAlarmOperationToMainServer("10.0.1.1", nDstPort, EMER_STATE.FIRE, EMER_DETAIL_INFO.EMERGENCY_COMM);
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// Log.e(TAG, "[Exception] mWallPadAlertBR - 1");
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ if (kind == 30) Alert_App_On = true;
|
|
|
+ else if (kind == 40) Alert_App_On = false;
|
|
|
+ else {
|
|
|
+ WallpadStatusData wdb = new WallpadStatusData(getApplicationContext());
|
|
|
+ int alarmState = wdb.GetAlarmStatus();
|
|
|
+ wdb.closeDB();
|
|
|
+
|
|
|
+ if (alarmState == WallpadStatusData.ALARM_ARISE || alarmState == WallpadStatusData.ALARM_STOP) {
|
|
|
+ // 알람화면이 현재 실행중이면 스킵
|
|
|
+ Log.d(TAG, "Skip BR ==> Current Alarm state : "+ alarmState );
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (kind == 4 && ( Math.abs(System.currentTimeMillis()-EmerCommDelayTime) < 1000)) {
|
|
|
+ // 통신 비상알람의 경우 중복으로 날라오는 경우가 있어서 필터링
|
|
|
+ Log.d(TAG, "Skip BR ==> deleayTime :" + String.valueOf( Math.abs(System.currentTimeMillis()-EmerCommDelayTime)));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ EmerCommDelayTime = System.currentTimeMillis();
|
|
|
+
|
|
|
+ SendAppFinishReqBR();
|
|
|
+ Log.i(TAG, "[mWallPadAlertBR] before Call Alert App");
|
|
|
+
|
|
|
+ int base = 7000;
|
|
|
+ int [] Menu_Id_List = { base+11, base+21 , base+31 , base+41, base+51};
|
|
|
+ int Menu_Start_Id = base+21;
|
|
|
+ int Menu_Start_Option = 1;
|
|
|
+ String Cause = "none";
|
|
|
+ if (kind == 1) Cause = "gas";
|
|
|
+ else if (kind == 2) Cause = "fire";
|
|
|
+ else if (kind == 4) Cause = "emergency_Comm";
|
|
|
+ else if (kind == 5) {
|
|
|
+ Cause = "heating_Leak";
|
|
|
+ Menu_Start_Id = base + 51;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Cause = "unknown(" + kind + ")";
|
|
|
+ }
|
|
|
+
|
|
|
+ Intent newintent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ newintent.putExtra("MENU_ID_LIST", Menu_Id_List); // KEY : MENU_ID_LIST
|
|
|
+ newintent.putExtra("MENU_START_ID", Menu_Start_Id); // KEY : MENU_START_ID
|
|
|
+ newintent.putExtra("MENU_START_OPTION", Menu_Start_Option); // KEY : MENU_START_OPTION
|
|
|
+ newintent.putExtra("MENU_DETAIL_INFO", Cause);
|
|
|
+ newintent.setComponent(new ComponentName("kr.co.icontrols.wallpademergency", "kr.co.icontrols.wallpademergency.MainActivity"));
|
|
|
+ newintent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
|
|
+ startActivity(newintent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ private void sendAlarmOperationToMainServer(String DstIP, int DstPort, EMER_STATE alarm_mode, EMER_DETAIL_INFO cause) {
|
|
|
+ Log.d(TAG, "[sendAlarmOperationToMainServer] DstIP [" + DstIP + "], DstPort [" + DstPort + "], alarm_mode [" + EMER_STATE.GetXMLData(alarm_mode) + "], cause [" + EMER_DETAIL_INFO.GetXMLData(cause) + "]");
|
|
|
+ WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
+ AddressSet addc = wdb.getAddressMGR(); //DB에서 동호 정보 받아옴
|
|
|
+ wdb.closeDB();
|
|
|
+ final iMAPAlarmOperation imapAlarmOperation = new iMAPAlarmOperation(getContext() , addc);
|
|
|
+
|
|
|
+ imapAlarmOperation.SetServerIPcfg(DstIP, DstPort);
|
|
|
+ imapAlarmOperation.DoWork(alarm_mode, cause);
|
|
|
+ imapAlarmOperation.SetRetCtr(new RetProci(){
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ Log.i(TAG, "[sendAlarmOperationToMainServer] ProcSuccess()");
|
|
|
+ String result = imapAlarmOperation.GetAttributeVal(0, "result");
|
|
|
+ Log.i(TAG, "[sendAlarmOperationToMainServer] result [" + result +"]");
|
|
|
+ if (result.equalsIgnoreCase("ok")) {
|
|
|
+ Log.i(TAG, "[sendAlarmOperationToMainServer] result [" + result +"]");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError() {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ Log.i(TAG, "[sendAlarmOperationToMainServer] ProcError() -> " + APIErrorCode.GetLogPrefix());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing() {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ Log.i(TAG, "[sendAlarmOperationToMainServer] ProcDoing()");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getMainVersion() {
|
|
|
+ return this.getAppVersion();
|
|
|
+ }
|
|
|
+
|
|
|
+ private int m_LiveImapServer = 0;
|
|
|
+ private int m_LiveMainActivity = 0;
|
|
|
+ private boolean m_IPActivity = false;
|
|
|
+
|
|
|
+ BroadcastReceiver mWallPadNotifyBR = new BroadcastReceiver() {
|
|
|
+ @Override
|
|
|
+ public void onReceive(Context context, Intent intent) {
|
|
|
+
|
|
|
+ String strAction = intent.getAction();
|
|
|
+ int item = 0;
|
|
|
+ Log.i(TAG, "[mWallPadNotifyBR] strAction [" + strAction + "]");
|
|
|
+ if (strAction.equals(define.NOTIFY_ACNAME)) {
|
|
|
+ int kind = intent.getIntExtra(Common.BR_MAIN_NOTI.KIND,0);
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] define.NOTIFY_ACNAME -> kind : " + kind);
|
|
|
+ switch (kind) {
|
|
|
+ case define.NOTIFY_GET_ELEC_CHARGE:
|
|
|
+ String strState = intent.getStringExtra("sCharging_Status");
|
|
|
+ String strCarNum = intent.getStringExtra("sCar_Num");
|
|
|
+ if (strState.equals("start")) {
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getContext());
|
|
|
+ boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
+ SetData.closeDB();
|
|
|
+ if (soundOut) Sound().Play(SND.effect.EFFECT1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 충전시작
|
|
|
+ Intent data = new Intent();
|
|
|
+ data.putExtra("CarNum", strCarNum); // KEY : MENU_ID_LIST
|
|
|
+ data.putExtra("Msg", "충전을 시작합니다.");
|
|
|
+
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ StartPopup(ID.POPUPS.POPUP_CHARGINGELECTRICVEHICLE, data);
|
|
|
+ }
|
|
|
+ else if (strState.equals("stop")) {
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getContext());
|
|
|
+ boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
+ SetData.closeDB();
|
|
|
+ if (soundOut) Sound().Play(SND.effect.EFFECT1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ // 충전 종료
|
|
|
+ Intent data = new Intent();
|
|
|
+ data.putExtra("CarNum", strCarNum); // KEY : MENU_ID_LIST
|
|
|
+ data.putExtra("Msg", "충전이 종료되었습니다.");
|
|
|
+
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ StartPopup(ID.POPUPS.POPUP_CHARGINGELECTRICVEHICLE, data);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_INTERLAYTER_NOISE_ALARM:
|
|
|
+ if (checkInterFloorNoiseFuncUsage()) {
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ StartPopup(ID.POPUPS.POPUP_INTERFLOORNOISEOCCURED);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_INTERLAYTER_SENSOR_STATUS_CHANGE :
|
|
|
+ if (checkInterFloorNoiseFuncUsage() && checkInterFloorNoiseError()) {
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ StartPopup(ID.POPUPS.POPUP_INTERFLOORNOISEERROR);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_AUTOPICTURE_FINISH:
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] define.NOTIFY_AUTOPICTURE_FINISH");
|
|
|
+ // 전자액자 종료 BR 수신시 LCD ON Flag 제거
|
|
|
+ ctrlLCDOnOff(false);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_ALARM_CHANGE:
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] define.NOTIFY_ALARM_CHANGE");
|
|
|
+// WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+// int nAlarmStatus = SetData.GetAlarmStatus();
|
|
|
+// SetData.closeDB();
|
|
|
+//
|
|
|
+// Log.d(TAG, "[mWallPadNotifyBR] nAlarmStatus = " + nAlarmStatus);
|
|
|
+// if (nAlarmStatus == WallpadStatusData.GUARD_IN) {
|
|
|
+// mSound.PlayMent(SND.mode.INMODE_SETTING);
|
|
|
+// }
|
|
|
+// else if (nAlarmStatus == WallpadStatusData.GUARD_OUT) {
|
|
|
+// mSound.PlayMent(SND.mode.OUTMODE_SETTING);
|
|
|
+// }
|
|
|
+// else if (nAlarmStatus == WallpadStatusData.ALARM_NONE) {
|
|
|
+// mSound.PlayMent(SND.mode.NORMALMODE_COMEBACK);
|
|
|
+// }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_PLAYMENT:
|
|
|
+ int sndidx = intent.getIntExtra(define.NOTIBR_CONTENT,0);
|
|
|
+ Sound().PlayMent(sndidx);
|
|
|
+
|
|
|
+ case define.NOTIFY_DEVICE_INIT_COMPLETION:
|
|
|
+ Log.i(TAG, "[mWallPadNotifyBR] NOTIFY_DEVICE_INIT_COMPLETION: bLCDKeeperUsage [" + bLCDKeeperUsage +"]");
|
|
|
+ if (bLCDKeeperUsage) registerLCDKeeper();
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ Log.w(TAG, "[mWallPadNotifyBR] (BR.nKind) Not support!! -> " + kind);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (strAction.equals(Common.BR_ACK_WALLPADCALL_LIVE)) {
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] Common.BR_ACK_WALLPADCALL_LIVE");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if (strAction.equals(define.DRIVER_VENTIL_BR)) {
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] define.DRIVER_VENTIL_BR");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if (strAction.equals(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI)) {
|
|
|
+ try {
|
|
|
+ int kind = intent.getIntExtra(Common.BR_MAIN_NOTI.KIND,0);
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] ACNAME_MAIN_NOTI -> kind : " + kind);
|
|
|
+ switch (kind) {
|
|
|
+ case Common.BR_MAIN_NOTI.ARRIVED_CAR:
|
|
|
+ StartPopup(ID.POPUPS.POPUP_VEHICLEARRIVED, intent);
|
|
|
+// StartPopup(ID_OLD.SCREENS.ArrivedCarPopupScreen);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.UI_UPDATE_PARCEL:
|
|
|
+ StartPopup(ID.POPUPS.POPUP_PARCELRECEIVED);
|
|
|
+// StartPopup(ID_OLD.SCREENS.DeliveryBox);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.SMARTKEY_ALARM_BR:
|
|
|
+ StartPopup(ID.POPUPS.POPUP_SMARTKEYEMERGENCY, intent);
|
|
|
+// StartPopup(ID_OLD.SCREENS.SmartKeyAlarmPopupScreen, intent);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.UI_BANDLOCATION_ALARM:
|
|
|
+ ctrlLCDOnOff(true);
|
|
|
+ int nCardNum = intent.getIntExtra(Common.BR_MAIN_NOTI.CARD_NUM,0);
|
|
|
+ Intent mIntent = new Intent();
|
|
|
+ mIntent.putExtra(Common.BR_MAIN_NOTI.CARD_NUM, nCardNum);
|
|
|
+ StartPopup(ID.POPUPS.POPUP_BANDLOCATIONALARM, mIntent);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.UI_UPDATE_POST:
|
|
|
+ ctrlLCDOnOff(true);
|
|
|
+ StartPopup(ID.POPUPS.POPUP_POSTRECEIVED);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.NOTICE_DETECT_STRANGER:
|
|
|
+ // 알람 상태 확인
|
|
|
+ int doorCamType = intent.getIntExtra("DOORCAM_TYPE", -1);
|
|
|
+ Intent data = new Intent();
|
|
|
+ data.putExtra("DOORCAM_TYPE", doorCamType);
|
|
|
+ StartPopup(ID.POPUPS.POPUP_NOTICESTRANGER, data);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.ACCEPT_RECORDING:
|
|
|
+ int nEmerState = intent.getIntExtra("EMERGENCY_STATE", -1);
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Door_Record, nEmerState);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.BR_MAIN_NOTI.ACCEPT_TAKEPIC:
|
|
|
+ nEmerState = intent.getIntExtra("EMERGENCY_STATE", -1);
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Door_TakePic, nEmerState);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ Log.w(TAG, "[mWallPadNotifyBR] (BR.nKind) Not support!! -> " + kind);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.toString();
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if(strAction.equals(BR_MAIN_LIVE_CHECKER.ACNAME_MAIN_LIVE_CHECKER )) {
|
|
|
+ int kind = intent.getIntExtra(BR_MAIN_LIVE_CHECKER.KIND,0);
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] BR_MAIN_LIVE_CHECKER.ACNAME_MAIN_LIVE_CHECKER -> kind : " + kind + ", m_LiveImapServer [" + m_LiveImapServer + "], m_LiveMainActivity [" + m_LiveMainActivity + "]");
|
|
|
+ if (kind == BR_MAIN_LIVE_CHECKER.IMAP_SERVER) {
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] received Imap Server Live !");
|
|
|
+ m_LiveImapServer++;
|
|
|
+ }
|
|
|
+ else if( kind == BR_MAIN_LIVE_CHECKER.MAIN_ACTIVITY) {
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] received Main Activity Live !");
|
|
|
+ m_LiveMainActivity++;
|
|
|
+ if (m_IPActivity == false) {
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] IP is not set");
|
|
|
+ m_LiveImapServer++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[mWallPadNotifyBR] m_LiveImapServer [" + m_LiveImapServer + "], m_LiveMainActivity [" + m_LiveMainActivity +"]");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ int kind = intent.getIntExtra("KIND",0);
|
|
|
+ Log.d(TAG, "MainActivity mWallPadNotifyBR Receive Notify BR "+kind+" "/*+electr.isActive()*/);
|
|
|
+ switch (kind) {
|
|
|
+ case define.NOTIFY_ELE_MOVE:
|
|
|
+// if (electr!= null /*&& electr.isActive()*/)
|
|
|
+// {
|
|
|
+// Log.i("MAINSCREEN", "Receive NOTIFY_ELE_MOVE");
|
|
|
+// electr.updateUI(intent.getStringExtra("FLOOR"), intent.getByteExtra("UPDOWN",(byte)-1));
|
|
|
+// }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_ELE_ARRIVAL_UP:
|
|
|
+ Log.i("AIDLTEST", "Receive NOTIFY_ELE_ARRIVAL_UP");
|
|
|
+ Sound().Play(SND.elevator.UP_ARRIVED);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_ELE_ARRIVAL_DOWN:
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ int eleinfo = devset.Get_Elevator_Info();
|
|
|
+ devset.closeDB();
|
|
|
+
|
|
|
+ if (WallpadDeviceSet.ELEVATOR_SIMPLE == eleinfo) Sound().Play(SND.elevator.ORG_ARRIVED);
|
|
|
+ else if (WallpadDeviceSet.ELEVATOR_FLOOR == eleinfo) Sound().Play(SND.elevator.DN_ARRIVED);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_UPDATE_START:
|
|
|
+ try {
|
|
|
+ String updateFile = intent.getStringExtra("PATH");
|
|
|
+ Log.i("WALLPADAPI","Call Update App :" + updateFile);
|
|
|
+ if (updateFile==null) return;
|
|
|
+ ComponentName cn = new ComponentName("com.telechips.android.systemupdater","com.telechips.android.systemupdater.SystemUpdate");
|
|
|
+ Intent Uintent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ Uintent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ Uintent.putExtra("updatefile",updateFile);
|
|
|
+ Uintent.setComponent(cn);
|
|
|
+ startActivity(Uintent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_DEVSERVICE_START:
|
|
|
+ mWallPadAPI = new WallPadAPI(getApplicationContext());
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_DEVICECONNECTED:
|
|
|
+ //DevLockCtr.ReleaseLock(define.DEVICE_LOCK_SVC_INIT);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_SENDBOOTUP_FAIL:
|
|
|
+ // 부트업 실패시 5초 간격으로 다시 시도하도록 수정.
|
|
|
+ mWallPadApiCheckHandler.sendEmptyMessageDelayed(10, 10000);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_IMAPSERVER_START:
|
|
|
+ case Common.DEVICE_BOOTUP_RETRY:
|
|
|
+ Log.i(TAG, "Try Send Boot up MSG kind : " + kind );
|
|
|
+ bootupretryCNT++;
|
|
|
+ if (bootupretryCNT > MAX_BOOTUP_RETRY_COUNT) break;
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ if (SetData != null) {
|
|
|
+ // AnC 기존 코드는 네트워크 연결이 안된경우 DB Close를 50회를 안 하도록 되어있어서 수정함.
|
|
|
+ String strServerIP = SetData.GetServerIP();
|
|
|
+ int nServerPort = SetData.GetServerPort();
|
|
|
+ String svrVersion = SetData.GetServerVer();
|
|
|
+ Log.d(TAG, "DB Server Version : " + svrVersion );
|
|
|
+ if (svrVersion == null) svrVersion = "1.0";
|
|
|
+
|
|
|
+ //설정정보 버전 가져오기
|
|
|
+ StringBuilder result = new StringBuilder();
|
|
|
+ result.append(SetData.GetSettingVer());
|
|
|
+ SetData.closeDB();
|
|
|
+
|
|
|
+ String Setting_Version = result.toString();
|
|
|
+ Log.i(TAG, "Setting's Version :"+Setting_Version);
|
|
|
+
|
|
|
+ boolean mNewDanjiServer = false;
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ mNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
+ wallpadDeviceSet.closeDB();
|
|
|
+ } catch(Exception e) {
|
|
|
+ Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
|
|
|
+ e.printStackTrace();
|
|
|
+ mNewDanjiServer = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mNewDanjiServer == true) {
|
|
|
+ // DB 값하고 , 신형단지서버 사용 설정이 동일 하다면 DB값을 전달한다.
|
|
|
+ // 나중에 2.X 이상 버전이 갱신될 경우를 위해서
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ svrVersion = "1.0";
|
|
|
+ }
|
|
|
+
|
|
|
+ //Main App 버전정보 가져오기
|
|
|
+ WallPadiMAPNotifyAPI notify = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+ notify.SetSocketWaitCount(3000);
|
|
|
+ notify.SetServerIPcfg(strServerIP, nServerPort);
|
|
|
+ notify.Send_Device_BootUP(getMainVersion(), Setting_Version , svrVersion );
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ Intent Newintent = new Intent();
|
|
|
+ Newintent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ Newintent.putExtra(define.NOTIBR_KIND,define.NOTIFY_SENDBOOTUP_FAIL);
|
|
|
+ sendBroadcast(Newintent);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_SUBDEVCALLBUSY:
|
|
|
+ /*
|
|
|
+ callbtn = (Button)findViewById(R.id.Callbtn);
|
|
|
+ callbtn.setBackgroundResource(R.drawable.but_call_on);
|
|
|
+ MAIN_CALL_LOCK = true;
|
|
|
+ */
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_SUBDEVCALLEND:
|
|
|
+ /*
|
|
|
+ callbtn = (Button)findViewById(R.id.Callbtn);
|
|
|
+ callbtn.setBackgroundResource(R.drawable.but_call);
|
|
|
+ MAIN_CALL_LOCK = false;
|
|
|
+ */
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_UPDATECALLDATA:
|
|
|
+ try{
|
|
|
+ String[] UpdateCallData = intent.getStringExtra(define.NOTIBR_CONTENT).split(define.DEVCTR_CMD_SPLITER);
|
|
|
+ Log.i(APIErrorCode.GetLogPrefix(),"Receive NOTIFY_UPDATECALLDATA "+UpdateCallData[0]+";"+UpdateCallData[1]);
|
|
|
+ int IncallCnt = 0;
|
|
|
+ int VisitorCNT = 0;
|
|
|
+ try {
|
|
|
+ IncallCnt = Integer.parseInt(UpdateCallData[0]);
|
|
|
+ VisitorCNT = Integer.parseInt(UpdateCallData[1]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ } catch(Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_UPDATENOTICE:
|
|
|
+ Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATENOTICE ");
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
+ SetData.closeDB();
|
|
|
+ if (soundOut) {
|
|
|
+ Sound().PlayMent(SND.effect.EFFECT1);
|
|
|
+ }
|
|
|
+
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_UPDATEPARCEL:
|
|
|
+ try {
|
|
|
+
|
|
|
+ String type = intent.getStringExtra(define.NOTIBR_CONTENT);
|
|
|
+ int itemcnt = intent.getIntExtra("ITEM",-1);
|
|
|
+
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
|
|
|
+ if (itemcnt !=-1) SetData.SetParcelCNT(itemcnt);
|
|
|
+ SetData.closeDB();
|
|
|
+
|
|
|
+ Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPARCEL itemcnt : " + itemcnt);
|
|
|
+// if (soundOut) {
|
|
|
+// if (type.equals("parcel_in")) {
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(1, true);
|
|
|
+// Sound().PlayMent(SND.mode.BOX_ARRIVED);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ Log.d(TAG, "Send BR --> Common.BR_MAIN_NOTI.UI_UPDATE_PARCEL");
|
|
|
+ Intent Newintent = new Intent();
|
|
|
+ Newintent.setAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI);
|
|
|
+ Newintent.putExtra(Common.BR_MAIN_NOTI.KIND, Common.BR_MAIN_NOTI.UI_UPDATE_PARCEL);
|
|
|
+ getApplicationContext().sendBroadcast(Newintent);
|
|
|
+
|
|
|
+ //NoticeIconOnoff(true);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+// if (type.equals("parcel_in"))
|
|
|
+// {
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(1, true);
|
|
|
+// PlayNotiSound(WpadSound.SND.mode.BOX_ARRIVED);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (itemcnt!=-1){
|
|
|
+// if (itemcnt > 0)
|
|
|
+// ParcelIconOnoff(true);
|
|
|
+// else
|
|
|
+// ParcelIconOnoff(false);
|
|
|
+// WallpadStatusData ParData = new WallpadStatusData(getApplicationContext());
|
|
|
+// ParData.SetParcelCNT(itemcnt);
|
|
|
+// ParData.closeDB();
|
|
|
+// if (ParcelMGR!=null) ParcelMGR.updateParcel();
|
|
|
+// }
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_UPDATEPOST:
|
|
|
+ try {
|
|
|
+ int nItemCnt = intent.getIntExtra("ITEM",-1);
|
|
|
+ Log.d(TAG, "[UI_UPDATE_POST] nItemCnt [" + nItemCnt + "]");
|
|
|
+
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ if (nItemCnt != -1) SetData.SetPostCNT(nItemCnt);
|
|
|
+ SetData.closeDB();
|
|
|
+
|
|
|
+ Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPOST nItemCnt : " + nItemCnt);
|
|
|
+
|
|
|
+ Log.d(TAG, "Send BR --> Common.BR_MAIN_NOTI.UI_UPDATE_POST");
|
|
|
+ Intent Newintent = new Intent();
|
|
|
+ Newintent.setAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI);
|
|
|
+ Newintent.putExtra(Common.BR_MAIN_NOTI.KIND, Common.BR_MAIN_NOTI.UI_UPDATE_POST);
|
|
|
+ getApplicationContext().sendBroadcast(Newintent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] mWallPadNotifyBR.onReceive()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_UPDATEPARKING:
|
|
|
+ Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPARKING ");
|
|
|
+
|
|
|
+ /*
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ List<String[]> parkList = parkdb.GetParkInfo();
|
|
|
+
|
|
|
+ if(parkList != null)
|
|
|
+ {
|
|
|
+ for(int j= 0; j<parkList.size(); j++)
|
|
|
+ {
|
|
|
+ for(int i = 0; i<4; i++)
|
|
|
+ {
|
|
|
+ Common.DebugLog("parkList.get("+j+")["+i+"]:"+ parkList.get(j)[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ parkdb.closeDB();
|
|
|
+ */
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_DEVICEREBOOT:
|
|
|
+ try {
|
|
|
+ //[Model]
|
|
|
+// if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
|
|
|
+// // A20
|
|
|
+// PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(8, true);
|
|
|
+// }
|
|
|
+// else if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
+ if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
+ // V40
|
|
|
+ V40IOInterface mV40IOInterface = new V40IOInterface();
|
|
|
+ mV40IOInterface.setV40Reboot(5);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // TCC8935
|
|
|
+ SendAppFinishReqBR();
|
|
|
+ ComponentName cnA = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
+ intent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ intent.putExtra("updatesystem", "no");
|
|
|
+ intent.putExtra("updateapp", " no ");
|
|
|
+ intent.putExtra("rebootcmd", "reboot");
|
|
|
+ intent.setComponent(cnA);
|
|
|
+ startActivity(intent);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_DEVICEDEEPSLEEP:
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[mWallPadAlertBR] NOTIFY_DEVICEDEEPSLEEP");
|
|
|
+ WallpadStatusData sdb = new WallpadStatusData(getApplicationContext());
|
|
|
+ String[] getstate = sdb.GetSystemUpdateStatus();
|
|
|
+ for (int i = 0; i < getstate.length; i++) {
|
|
|
+ Log.d(TAG, "[mWallPadAlertBR] getstate[" + i + "] = " + getstate[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (getstate[0].equalsIgnoreCase("SET")) {
|
|
|
+ sdb.SetSystemUpdate(null, null);
|
|
|
+ sdb.SetUpgradeState(true);
|
|
|
+ ComponentName cnn = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
+ intent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ intent.putExtra("updatesystem", getstate[1]);
|
|
|
+ intent.putExtra("updateapp", getstate[2]);
|
|
|
+ intent.setComponent(cnn);
|
|
|
+ Log.e("MAINSCREEN","Call Upgrade Request BSP : "+getstate[1]+" APP : "+getstate[2]);
|
|
|
+ startActivity(intent);
|
|
|
+ }
|
|
|
+ sdb.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_SYSTEMTIMESETTED:
|
|
|
+ try {
|
|
|
+ Common.DebugLog("MainActivity ---------- > define.NOTIFY_SYSTEMTIMESETTED");
|
|
|
+ Calendar caldata = new GregorianCalendar();
|
|
|
+ // refreshdate(caldata);
|
|
|
+ // refreshclock(caldata);
|
|
|
+ if (SYSTEM_TIME_SET == false) {
|
|
|
+ SYSTEM_TIME_SET = true;
|
|
|
+ if (SCManager != null) {
|
|
|
+ if (SCManager.isSetted != true) SCManager.refreshSchedule();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_SCHEDULEUPDATED:
|
|
|
+// item = intent.getIntExtra("ITEM",0);
|
|
|
+// if (item == ScheduleManager.SCHEDULE_TYPE_SCHEDULER && SYSTEM_TIME_SET)
|
|
|
+// SCManager.refreshSchedulerData();
|
|
|
+// else if (item == ScheduleManager.SCHEDULE_TYPE_SYSRESET && SYSTEM_TIME_SET)
|
|
|
+// SCManager.refreshsysreset();
|
|
|
+// else if (item == ScheduleManager.SCHEDULE_TYPE_MORNINGCALL && SYSTEM_TIME_SET)
|
|
|
+// SCManager.refreshMorningCall();
|
|
|
+// break;
|
|
|
+ case define.NOTIFY_ALARMSTAUSCHANGED:
|
|
|
+ try {
|
|
|
+ item = intent.getIntExtra("ITEM",0);
|
|
|
+ if (item == WallpadStatusData.GUARD_OUT) {
|
|
|
+ int base = 8000;
|
|
|
+ int [] Menu_Id_List = { base+11};
|
|
|
+ int Menu_Start_Id = base+11;
|
|
|
+ int Menu_Start_Option = -1;
|
|
|
+ Intent iintent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ iintent.putExtra("MENU_ID_LIST", Menu_Id_List); // KEY : MENU_ID_LIST
|
|
|
+ iintent.putExtra("MENU_START_ID", Menu_Start_Id); // KEY : MENU_START_ID
|
|
|
+ iintent.putExtra("MENU_START_OPTION", Menu_Start_Option); // KEY : MENU_START_OPTION
|
|
|
+ iintent.setComponent(new ComponentName("kr.co.icontrols.wallpadoutmoderun","kr.co.icontrols.wallpadoutmoderun.MainActivity"));
|
|
|
+ startActivity(iintent);
|
|
|
+ }
|
|
|
+ else if (item == WallpadStatusData.GUARD_IN) {
|
|
|
+ WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
+ // Button callBtn = (Button)findViewById(R.id.GuardBtn);
|
|
|
+ // callBtn.setBackgroundResource((SettData.GetAlarmStatus() == WallpadStatusData.GUARD_IN)?R.drawable.but_guard_on:R.drawable.but_guard);
|
|
|
+ SettData.closeDB();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_ENERGYUPDATE:
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Calendar caldata = new GregorianCalendar();
|
|
|
+ String[] getData = intent.getStringExtra(define.NOTIBR_CONTENT).split(define.DEVCTR_CMD_SPLITER);
|
|
|
+ String checkDate = String.format("%04d%02d%02d",caldata.get(Calendar.YEAR),caldata.get(Calendar.MONTH)+1,caldata.get(Calendar.DAY_OF_MONTH));
|
|
|
+ WallpadStatusData energyData = new WallpadStatusData(getApplicationContext());
|
|
|
+ energyData.SetEnergyData(intent.getStringExtra(define.NOTIBR_CONTENT));
|
|
|
+ energyData.SetEnergyCheckDate(checkDate);
|
|
|
+ energyData.closeDB();
|
|
|
+ //if (NeedCheckEnergy)
|
|
|
+ // CheckEnergyUsage(getData);
|
|
|
+ // if (EnergyMGR!=null)
|
|
|
+ // EnergyMGR.UpdateData(getData);
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case define.NOTIFY_STARTEFRAME:
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Log.w("MAINSCREEN"," Receive NOTIFY_STARTEFRAME Start StartAutoPictureAPP ");
|
|
|
+ WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
+
|
|
|
+ if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar()))
|
|
|
+ {
|
|
|
+ if (!SettData.StartAutoPictureAPP())
|
|
|
+ {
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(3, true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(3, true);
|
|
|
+ }
|
|
|
+ SettData.closeDB();
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case define.NOTIFY_ADDDEVICELOCK:
|
|
|
+ Log.w("MAINSCREEN"," Receive NOTIFY_ADDDEVICELOCK Start ");
|
|
|
+ //DevLockCtr.AddLock(intent.getIntExtra(define.NOTIBR_CONTENT, 0));
|
|
|
+ break;
|
|
|
+ case define.NOTIFY_RELEASEDEVICELOCK:
|
|
|
+ Log.w("MAINSCREEN"," Receive NOTIFY_RELEASEDEVICELOCK Start ");
|
|
|
+ //DevLockCtr.ReleaseLock(intent.getIntExtra(define.NOTIBR_CONTENT, 0));
|
|
|
+ break;
|
|
|
+ case define.NOTIFY_PLAYMENT:
|
|
|
+ {
|
|
|
+ int sndidx = intent.getIntExtra(define.NOTIBR_CONTENT,0);
|
|
|
+ Sound().PlayMent(sndidx);
|
|
|
+
|
|
|
+ if (sndidx == WpadSound.SND.elevator.CALL) {
|
|
|
+ byte floorInfo = intent.getByteExtra(define.NOTIBR_FLOOR,(byte)0);
|
|
|
+ Log.e("MANUAL_MAIN", " PLAY MENT Get Ele Call : "+floorInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_ENERGY_DATA:
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Log.w("MAINSCREEN"," Receive NOTIFY_ENERGY DATA Start ");
|
|
|
+
|
|
|
+ //에너지 데이터 개수 - 3종 또는 5종
|
|
|
+ EnergyAlramPopupMgr.m_EnergyInfoCount = intent.getIntExtra(Common.ENERGY_INTENT_ENERGY_COUNT, -1);
|
|
|
+ Log.w("MAINSCREEN"," ENERGY_INTENT_ENERGY_COUNT :"+ EnergyAlramPopupMgr.m_EnergyInfoCount);
|
|
|
+
|
|
|
+ //에너지 단지서버에서 받아온 시간
|
|
|
+ EnergyAlramPopupMgr.m_ReceiveYear = intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_YEAR, -1);
|
|
|
+ Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_YEAR :"+ EnergyAlramPopupMgr.m_ReceiveYear);
|
|
|
+
|
|
|
+ EnergyAlramPopupMgr.m_ReceiveMonth = intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_MONTH, -1);
|
|
|
+ Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_MONTH :"+ EnergyAlramPopupMgr.m_ReceiveMonth);
|
|
|
+
|
|
|
+ EnergyAlramPopupMgr.m_ReceiveDay = intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_DAY, -1);
|
|
|
+ Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_DAY :"+ EnergyAlramPopupMgr.m_ReceiveDay );
|
|
|
+
|
|
|
+ Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_HOUR :"+ intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_HOUR, -1));
|
|
|
+
|
|
|
+ Log.w("MAINSCREEN"," ENERGY_INTENT_GETDATA_TIME_MINUTE :"+ intent.getIntExtra(Common.ENERGY_INTENT_GETDATA_TIME_MINUTE, -1));
|
|
|
+
|
|
|
+ //전기 에너지 정보
|
|
|
+ String Vaule = "";
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_ELECTRIC);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Elec_UseValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Elec_GoalValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ //수도 에너지 정보
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_WATER);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Water_UseValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_WATER);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Water_GoalValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ //가스 에너지 정보
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_GAS);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Gas_UseValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_GAS);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Gas_GoalValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+
|
|
|
+ //온수 에너지 정보
|
|
|
+ if( EnergyAlramPopupMgr.m_EnergyInfoCount >= 5 )
|
|
|
+ {
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_HOTWATER);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_HotWater_UseValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_HOTWATER);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_HotWater_GoalValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ //난방 에너지 정보
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_USE_HEATING);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Heating_UseValue = Double.parseDouble(Vaule);
|
|
|
+
|
|
|
+ Vaule = intent.getStringExtra(Common.ENERGY_INTENT_GOAL_HEATING);
|
|
|
+ if( Vaule != null && Vaule.length() > 0 )
|
|
|
+ EnergyAlramPopupMgr.m_Heating_GoalValue = Double.parseDouble(Vaule);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_GET_CAR_PARKING:
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if(bUseofNot_ParkingInfo == true)
|
|
|
+ {
|
|
|
+ bSetMSG_GetParkingInfo = true;
|
|
|
+ LoadParkingDataFromServer();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DebugLogOutput("bUseofNot_ParkingInfo == false");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ catch( Exception e )
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case define.NOTIFY_ENERGY_TARGET_INFO_ALARM_FROM_SERVER:
|
|
|
+
|
|
|
+ String tempFromWhere = intent.getStringExtra("FromWhere");
|
|
|
+ if(tempFromWhere == null)
|
|
|
+ {
|
|
|
+ ResultGetIntent = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempElect_target = intent.getStringExtra("elect_target");
|
|
|
+ if(tempElect_target != null)
|
|
|
+ {
|
|
|
+ elect_target = tempElect_target;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempElect_used = intent.getStringExtra("elect_used");
|
|
|
+ if(tempElect_used != null)
|
|
|
+ {
|
|
|
+ elect_used = tempElect_used;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempElect_info = intent.getStringExtra("elect_info");
|
|
|
+ if(tempElect_info != null)
|
|
|
+ {
|
|
|
+ elect_info = tempElect_info;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempWater_target = intent.getStringExtra("water_target");
|
|
|
+ if(tempWater_target != null)
|
|
|
+ {
|
|
|
+ water_target = tempWater_target;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempWater_used = intent.getStringExtra("water_used");
|
|
|
+ if(tempWater_used != null)
|
|
|
+ {
|
|
|
+ water_used = tempWater_used;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempWater_info = intent.getStringExtra("water_info");
|
|
|
+ if(tempWater_info != null)
|
|
|
+ {
|
|
|
+ water_info = tempWater_info;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempGas_target = intent.getStringExtra("gas_target");
|
|
|
+ if(tempGas_target != null)
|
|
|
+ {
|
|
|
+ gas_target = tempGas_target;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempGas_used = intent.getStringExtra("gas_used");
|
|
|
+ if(tempGas_used != null)
|
|
|
+ {
|
|
|
+ gas_used = tempGas_used;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempGas_info = intent.getStringExtra("gas_info");
|
|
|
+ if(tempGas_info != null)
|
|
|
+ {
|
|
|
+ gas_info = tempGas_info;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempHotwater_target = intent.getStringExtra("hotwater_target");
|
|
|
+ if(tempHotwater_target != null)
|
|
|
+ {
|
|
|
+ hotwater_target = tempHotwater_target;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempHotwater_used = intent.getStringExtra("hotwater_used");
|
|
|
+ if(tempHotwater_used != null)
|
|
|
+ {
|
|
|
+ hotwater_used = tempHotwater_used;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempHotwater_info = intent.getStringExtra("hotwater_info");
|
|
|
+ if(tempHotwater_info != null)
|
|
|
+ {
|
|
|
+ hotwater_info = tempHotwater_info;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempHeating_target = intent.getStringExtra("heating_target");
|
|
|
+ if(tempHeating_target != null)
|
|
|
+ {
|
|
|
+ heating_target = tempHeating_target;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempHeating_used = intent.getStringExtra("heating_used");
|
|
|
+ if(tempHeating_used != null)
|
|
|
+ {
|
|
|
+ heating_used = tempHeating_used;
|
|
|
+ }
|
|
|
+
|
|
|
+ String tempHeatin_info = intent.getStringExtra("heating_info");
|
|
|
+ if(tempHeatin_info != null)
|
|
|
+ {
|
|
|
+ heating_info = tempHeatin_info;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+ private void ctrlLCDOnOff(boolean bOn) {
|
|
|
+ try {
|
|
|
+ if (bOn) {
|
|
|
+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+ Log.d(TAG, "[ctrlLCDOnOff] Screen On: " + pm.isScreenOn());
|
|
|
+ if (getCompareBSPVersion()) {
|
|
|
+ if (!checkLCDOnByCMD()) {
|
|
|
+ Log.d(TAG, "[ctrlLCDOnOff] V40Interface LcdWakeUp Call!!");
|
|
|
+ mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (!pm.isScreenOn()) {
|
|
|
+ Log.d(TAG, "[ctrlLCDOnOff] V40Interface LcdWakeUp Call!!");
|
|
|
+ mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
+ }
|
|
|
+ }
|
|
|
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ } else
|
|
|
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] ctrlLCDOnOff(boolean bOn)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void refreshUserCtr() {
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.DRIVER_LIGHT_BR);
|
|
|
+ Log.i("HIGH","StatusChanged BR Send "+define.DRIVER_LIGHT_BR);
|
|
|
+ sendBroadcast(intent);
|
|
|
+
|
|
|
+ intent = new Intent();
|
|
|
+ intent.setAction(define.DRIVER_BATCHLIGHT_BR);
|
|
|
+ Log.i("HIGH","StatusChanged BR Send "+define.DRIVER_BATCHLIGHT_BR);
|
|
|
+ sendBroadcast(intent);
|
|
|
+
|
|
|
+ intent = new Intent();
|
|
|
+ intent.setAction(define.DRIVER_VENTIL_BR);
|
|
|
+ Log.i("HIGH","StatusChanged BR Send "+define.DRIVER_VENTIL_BR);
|
|
|
+ sendBroadcast(intent);
|
|
|
+
|
|
|
+// intent = new Intent();
|
|
|
+// intent.setAction(HEATERBR);
|
|
|
+// Log.i("HIGH","StatusChanged BR Send "+HEATERBR);
|
|
|
+// sendBroadcast(intent);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void Check_Upgrade_File() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData sdb = new WallpadStatusData(getApplicationContext());
|
|
|
+ String[] getstate = sdb.GetSystemUpdateStatus();
|
|
|
+ if (getstate[0].equalsIgnoreCase("SET")) {
|
|
|
+ for (int i = 1; i < 3; i++) {
|
|
|
+ if (!getstate[i].equals("no")) {
|
|
|
+ String filePath = "/sdcard/"+getstate[i];
|
|
|
+ File updradef = new File(filePath);
|
|
|
+ if (updradef.exists()) updradef.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sdb.SetSystemUpdate(null, null);
|
|
|
+ }
|
|
|
+ sdb.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] Check_Upgrade_File()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void SendAppFinishReqBR() {
|
|
|
+ try {
|
|
|
+ Log.e("MANUAL_MAIN", "Send Finish BR");
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(1, true);
|
|
|
+ // LCD Always ON
|
|
|
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ Intent notiIntent = new Intent();
|
|
|
+ notiIntent.setAction(define.BR_APP_FINISH);
|
|
|
+ getApplicationContext().sendBroadcast(notiIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] SendAppFinishReqBR()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerBroadcastReceiver() {
|
|
|
+ try {
|
|
|
+ IntentFilter mIntentFilter = new IntentFilter();
|
|
|
+ mIntentFilter.addAction("WALLPAD_ALERT");
|
|
|
+ registerReceiver(mWallPadAlertBR, mIntentFilter);
|
|
|
+
|
|
|
+ mIntentFilter = new IntentFilter();
|
|
|
+ mIntentFilter.addAction("WALLPAD_NOTIFY");
|
|
|
+ mIntentFilter.addAction(define.DRIVER_VENTIL_BR);
|
|
|
+ mIntentFilter.addAction(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI); // ACC 꺼와 구분되는 Noti 추가
|
|
|
+ mIntentFilter.addAction(BR_MAIN_LIVE_CHECKER.ACNAME_MAIN_LIVE_CHECKER);
|
|
|
+ mIntentFilter.addAction(Common.BR_ACK_WALLPADCALL_LIVE);
|
|
|
+ registerReceiver(mWallPadNotifyBR, mIntentFilter);
|
|
|
+
|
|
|
+ registerMainActivityBR();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerBroadcastReceiver()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void unregisterBroadcastReceiver() {
|
|
|
+ try {
|
|
|
+ unregisterReceiver(mWallPadAlertBR);
|
|
|
+ unregisterReceiver(mWallPadNotifyBR);
|
|
|
+ unregisterReceiver(MainActivityBroadcastReceiver);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] unregisterBroadcastReceiver()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void MainScrLog(String msg) {
|
|
|
+ Log.e("MAINSCREEN",APIErrorCode.GetLogPrefix()+msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void CheckEnv() {
|
|
|
+ try {
|
|
|
+ File dnDIC = new File(BESTIN_LOCATION);
|
|
|
+ if (!dnDIC.exists()) dnDIC.mkdir();
|
|
|
+
|
|
|
+ dnDIC = new File(ALBUM_PICTURE_LOCATION);
|
|
|
+ if (!dnDIC.exists()) dnDIC.mkdir();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] CheckEnv()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void FileCopy(String Target, String Source) {
|
|
|
+ try {
|
|
|
+ FileInputStream input = new FileInputStream(Source);
|
|
|
+ long size = input.available();
|
|
|
+ byte buff[] = new byte[(int)size];
|
|
|
+ input.read(buff);
|
|
|
+ input.close( );
|
|
|
+ FileOutputStream output = new FileOutputStream(Target);
|
|
|
+ output.write(buff);
|
|
|
+ output.flush();
|
|
|
+ output.close();
|
|
|
+ } catch( Exception e ) {
|
|
|
+ Log.e(TAG, "[Exception] FileCopy(String Target, String Source)");
|
|
|
+ e.printStackTrace() ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void checkEventNotifications() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG,"[checkEventNotifications] ========== START ==========)");
|
|
|
+
|
|
|
+ // 스마트우편함, 전기차충전 연동 여부 확인
|
|
|
+ int nRetElecVehicle = -1;
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this.getContext());
|
|
|
+ bSmartPostUsage = mWallpadDeviceSet.Get_SmartPostUse();
|
|
|
+ nRetElecVehicle = mWallpadDeviceSet.GetDeviceSetted("전기차충전");
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+
|
|
|
+ if (nRetElecVehicle == WallpadDeviceSet.DEV_DATA_ENABLE) bElecVehicleUsage = true;
|
|
|
+ else bElecVehicleUsage = false;
|
|
|
+ Log.d(TAG, "[checkEventNotifications] bSmartPostUsage [" + bSmartPostUsage + "], nRetElecVehicle [" + nRetElecVehicle + "], bElecVehicleUsage [" + bElecVehicleUsage + "]");
|
|
|
+
|
|
|
+ // 부재중 통화
|
|
|
+ WallpadCallHistoryData mWallpadCallHistoryData = new WallpadCallHistoryData(getContext());
|
|
|
+ try {
|
|
|
+ nMissedCallCnt = mWallpadCallHistoryData.RowCallHistoryCountData();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadCallHistoryData");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadCallHistoryData.closeDB();
|
|
|
+
|
|
|
+ // 방문자 사진
|
|
|
+ WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
|
|
|
+ try {
|
|
|
+ nVisitorPicCnt = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadVisitorPicData_A20");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadVisitorPicData_A20.closeDB();
|
|
|
+
|
|
|
+ // 공지사항, 택배, 스마트 우편
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
|
|
|
+ try {
|
|
|
+ nNoticeCnt = mWallpadStatusData.GetNoticeCNT();
|
|
|
+ nParcelCnt = mWallpadStatusData.GetParcelCNT();
|
|
|
+ nPostCnt = mWallpadStatusData.GetPostCNT();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadStatusData");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+
|
|
|
+ if (0 > nMissedCallCnt) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] out of range!! nMissedCallCnt [" + nMissedCallCnt + "]");
|
|
|
+ nMissedCallCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nVisitorPicCnt) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] out of range!! nVisitorPicCnt [" + nVisitorPicCnt + "]");
|
|
|
+ nVisitorPicCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nNoticeCnt) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] out of range!! nNoticeCnt [" + nNoticeCnt + "]");
|
|
|
+ nNoticeCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nParcelCnt) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] out of range!! nParcelCnt [" + nParcelCnt + "]");
|
|
|
+ nParcelCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nPostCnt) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] out of range!! nPostCnt [" + nPostCnt + "]");
|
|
|
+ nPostCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nElecVehicleChangingCnt) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] out of range!! nElecVehicleChangingCnt [" + nElecVehicleChangingCnt + "]");
|
|
|
+ nElecVehicleChangingCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!bSmartPostUsage) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] bSmartPostUsage is not supported!! -> bSmartPostUsage [" + bSmartPostUsage + "]");
|
|
|
+ nPostCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!bElecVehicleUsage) {
|
|
|
+ Log.w(TAG,"[checkEventNotifications] bElecVehicleUsage is not supported!! -> bElecVehicleUsage [" + bElecVehicleUsage + "]");
|
|
|
+ nElecVehicleChangingCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d(TAG,"[checkEventNotifications] nMissedCallCnt [" + nMissedCallCnt + "], nVisitorPicCnt [" + nVisitorPicCnt + "], nNoticeCnt [" + nNoticeCnt + "], nParcelCnt [" + nParcelCnt + "], nPostCnt [" + nPostCnt + "], nElecVehicleChangingCnt [" + nElecVehicleChangingCnt + "]");
|
|
|
+
|
|
|
+ sendEventNotiBR(nMissedCallCnt, nVisitorPicCnt, nNoticeCnt, nParcelCnt, nPostCnt, nElecVehicleChangingCnt);
|
|
|
+ Send_NotiSmartSwitch(MainActivity.nNoticeCnt, MainActivity.nParcelCnt, MainActivity.nVisitorPicCnt);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkEventNotifications()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getEventNotificationInfo() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG,"[getEventNotificationInfo] ========== START ==========)");
|
|
|
+ // 부재중 통화, 방문자 사진, 공지사항, 택배
|
|
|
+ int nMissedCallCnt = 0, nVisitorPicCnt = 0, nNoticeCnt = 0, nParcelCnt = 0, nPostCnt = 0;
|
|
|
+
|
|
|
+ // 부재중 통화
|
|
|
+ WallpadCallHistoryData mWallpadCallHistoryData = new WallpadCallHistoryData(getContext());
|
|
|
+ try {
|
|
|
+ nMissedCallCnt = mWallpadCallHistoryData.RowCallHistoryCountData();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadCallHistoryData");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadCallHistoryData.closeDB();
|
|
|
+
|
|
|
+ // 방문자 사진
|
|
|
+ WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
|
|
|
+ try {
|
|
|
+ nVisitorPicCnt = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadVisitorPicData_A20");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadVisitorPicData_A20.closeDB();
|
|
|
+
|
|
|
+ // 공지사항, 택배
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
|
|
|
+ try {
|
|
|
+ nNoticeCnt = mWallpadStatusData.GetNoticeCNT();
|
|
|
+ nParcelCnt = mWallpadStatusData.GetParcelCNT();
|
|
|
+ nPostCnt = mWallpadStatusData.GetPostCNT();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadStatusData");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ if (0 > nMissedCallCnt) {
|
|
|
+ Log.w(TAG,"[getEventNotificationInfo] out of range!! nMissedCallCnt [" + nMissedCallCnt + "]");
|
|
|
+ nMissedCallCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nVisitorPicCnt) {
|
|
|
+ Log.w(TAG,"[getEventNotificationInfo] out of range!! nVisitorPicCnt [" + nVisitorPicCnt + "]");
|
|
|
+ nVisitorPicCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nNoticeCnt) {
|
|
|
+ Log.w(TAG,"[getEventNotificationInfo] out of range!! nNoticeCnt [" + nNoticeCnt + "]");
|
|
|
+ nNoticeCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nParcelCnt) {
|
|
|
+ Log.w(TAG,"[getEventNotificationInfo] out of range!! nParcelCnt [" + nParcelCnt + "]");
|
|
|
+ nParcelCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (0 > nPostCnt) {
|
|
|
+ Log.w(TAG,"[getEventNotificationInfo] out of range!! nPostCnt [" + nPostCnt + "]");
|
|
|
+ nPostCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d(TAG,"[getEventNotificationInfo] nMissedCallCnt [" + nMissedCallCnt + "], nVisitorPicCnt [" + nVisitorPicCnt + "], nNoticeCnt [" + nNoticeCnt + "], nParcelCnt [" + nParcelCnt + "], nPostCnt [" + nPostCnt + "]");
|
|
|
+
|
|
|
+ if (bSmartPostUsage) return nMissedCallCnt + define.DEVCTR_CMD_SPLITER + nVisitorPicCnt + define.DEVCTR_CMD_SPLITER + nNoticeCnt + define.DEVCTR_CMD_SPLITER + nParcelCnt + define.DEVCTR_CMD_SPLITER + nPostCnt;
|
|
|
+ else return nMissedCallCnt + define.DEVCTR_CMD_SPLITER + nVisitorPicCnt + define.DEVCTR_CMD_SPLITER + nNoticeCnt + define.DEVCTR_CMD_SPLITER + nParcelCnt;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getEventNotificationInfo()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel) {
|
|
|
+ try {
|
|
|
+ Log.d(TAG,"[sendEventNotiBR] missedcall [" + missedcall + "], visitorpic [" + visitorpic + "], notice [" + notice + "], parcel [" + parcel + "]");
|
|
|
+ String strResult = String.valueOf(missedcall) + define.DEVCTR_CMD_SPLITER + String.valueOf(visitorpic) + define.DEVCTR_CMD_SPLITER + String.valueOf(notice) + define.DEVCTR_CMD_SPLITER + String.valueOf(parcel);
|
|
|
+ Log.d(TAG,"[sendEventNotiBR] strResult [" + strResult + "]");
|
|
|
+
|
|
|
+ Intent mIntent = new Intent();
|
|
|
+ mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
+ mIntent.putExtra(define.NOTIBR_CONTENT, strResult);
|
|
|
+ getApplicationContext().sendBroadcast(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel)");
|
|
|
+ e.printStackTrace() ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post) {
|
|
|
+ try {
|
|
|
+ Log.d(TAG,"[sendEventNotiBR] missedcall [" + missedcall + "], visitorpic [" + visitorpic + "], notice [" + notice + "], parcel [" + parcel + "], post [" + post + "]");
|
|
|
+ String strResult = String.valueOf(missedcall) + define.DEVCTR_CMD_SPLITER + String.valueOf(visitorpic) + define.DEVCTR_CMD_SPLITER + String.valueOf(notice) + define.DEVCTR_CMD_SPLITER + String.valueOf(parcel) + define.DEVCTR_CMD_SPLITER + String.valueOf(post);
|
|
|
+ Log.d(TAG,"[sendEventNotiBR] strResult [" + strResult + "]");
|
|
|
+
|
|
|
+ Intent mIntent = new Intent();
|
|
|
+ mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
+ mIntent.putExtra(define.NOTIBR_CONTENT, strResult);
|
|
|
+ getApplicationContext().sendBroadcast(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post)");
|
|
|
+ e.printStackTrace() ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post, int elecvehiclecharging) {
|
|
|
+ try {
|
|
|
+ Log.d(TAG,"[sendEventNotiBR] missedcall [" + missedcall + "], visitorpic [" + visitorpic + "], notice [" + notice + "], parcel [" + parcel + "], post [" + post + "], elecvehiclecharging [" + elecvehiclecharging +"]");
|
|
|
+ String strResult = String.valueOf(missedcall) + define.DEVCTR_CMD_SPLITER + String.valueOf(visitorpic) + define.DEVCTR_CMD_SPLITER + String.valueOf(notice)
|
|
|
+ + define.DEVCTR_CMD_SPLITER + String.valueOf(parcel) + define.DEVCTR_CMD_SPLITER + String.valueOf(post) + define.DEVCTR_CMD_SPLITER + String.valueOf(elecvehiclecharging);
|
|
|
+ Log.d(TAG,"[sendEventNotiBR] strResult [" + strResult + "]");
|
|
|
+
|
|
|
+ Intent mIntent = new Intent();
|
|
|
+ mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
+ mIntent.putExtra(define.NOTIBR_CONTENT, strResult);
|
|
|
+ getApplicationContext().sendBroadcast(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post, int elecvehiclecharging)");
|
|
|
+ e.printStackTrace() ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CheckCallData_CalledCountAndVisitorCount() {
|
|
|
+ try {
|
|
|
+ int Vcount = 0;
|
|
|
+ int Ccount = 0;
|
|
|
+ try {
|
|
|
+ //DB정보 읽어서 처리
|
|
|
+ Log.d(TAG,"CheckCallData_CalledCountAndVisitorCount Start");
|
|
|
+ WallpadCallHistoryData mWallpadCallHistoryData = new WallpadCallHistoryData(getContext());
|
|
|
+ int TempCcount = mWallpadCallHistoryData.RowCallHistoryCountData();
|
|
|
+ mWallpadCallHistoryData.closeDB();
|
|
|
+
|
|
|
+ Log.d(TAG,"RowCallHistoryCountData() :" + TempCcount);
|
|
|
+ if (TempCcount != -999) {
|
|
|
+ Ccount = TempCcount;
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
|
|
|
+ int TempVcount = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
|
|
|
+ mWallpadVisitorPicData_A20.closeDB();
|
|
|
+
|
|
|
+ Log.d(TAG,"RowVisitorPictureCountData() :" + TempVcount);
|
|
|
+ if (TempVcount != -999) {
|
|
|
+ Vcount = TempVcount;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d(TAG," Call Count Check Receive Ccount :" + Ccount + " , Photo Count : " + Vcount );
|
|
|
+
|
|
|
+ String Retdata = String.valueOf(Ccount)+define.DEVCTR_CMD_SPLITER+String.valueOf(Vcount);
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATECALLDATA);
|
|
|
+ intent.putExtra(define.NOTIBR_CONTENT, Retdata);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] CheckCallData_CalledCountAndVisitorCount()");
|
|
|
+ e.printStackTrace() ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ class ScheduleManager {
|
|
|
+ public static final int SCHEDULE_TYPE_GETINFO = 5000;
|
|
|
+ public static final int SCHEDULE_TYPE_MORNINGCALL = 5001;
|
|
|
+ public static final int SCHEDULE_TYPE_SCHEDULER = 5002;
|
|
|
+ public static final int SCHEDULE_TYPE_SYSRESET = 5003;
|
|
|
+ public static final int SCHEDULE_TYPE_NONE = 5004;
|
|
|
+
|
|
|
+ public boolean isSetted = false;
|
|
|
+
|
|
|
+ List<TimeScheduleUnit> SchedulerData = new ArrayList<TimeScheduleUnit>();
|
|
|
+ List<TimeScheduleUnit> GeneralData = new ArrayList<TimeScheduleUnit>();
|
|
|
+ public ScheduleManager() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public class TimeScheduleUnit {
|
|
|
+ int type;
|
|
|
+ Calendar TimeSet;
|
|
|
+ String message;
|
|
|
+ TimeScheduleUnit(int sctype, Calendar target) {
|
|
|
+ type = sctype;
|
|
|
+ TimeSet = target;
|
|
|
+ }
|
|
|
+
|
|
|
+ TimeScheduleUnit(int sctype, Calendar target, String msg) {
|
|
|
+ Log.i("MAINSCREEN","TimeScheduleUnit Create "+sctype+" : MSG : "+msg);
|
|
|
+ type = sctype;
|
|
|
+ TimeSet = target;
|
|
|
+ message = msg;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isOver() {
|
|
|
+ Calendar cal_now = new GregorianCalendar();
|
|
|
+ if (cal_now.after(TimeSet)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CheckSysResetData() {
|
|
|
+ try {
|
|
|
+ Calendar today = new GregorianCalendar();
|
|
|
+ Log.i("MAINSCREEN","CheckSysResetData Schedule");
|
|
|
+ WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
+ String[] ResetData = WsDB.GetResetSchedule();
|
|
|
+ if (!ResetData[0].equals("NONE")) {
|
|
|
+ int type = Integer.parseInt(ResetData[0]);
|
|
|
+ Log.i("MAINSCREEN","CheckSysResetData Schedule check typr : "+type + " Week : "+today.get(Calendar.DAY_OF_WEEK)+" Set Week : "+ResetData[1]);
|
|
|
+ if ((type == WallpadStatusData.RESET_MONTH && today.get(Calendar.DAY_OF_MONTH)+1 == Integer.parseInt(ResetData[1])) ||
|
|
|
+ (type == WallpadStatusData.RESET_WEEK && today.get(Calendar.DAY_OF_WEEK) == (Integer.parseInt(ResetData[1]))+1) )
|
|
|
+ {
|
|
|
+ if (today.get(Calendar.HOUR_OF_DAY) == Integer.parseInt(ResetData[2]) && today.get(Calendar.MINUTE) < 2) {
|
|
|
+ SendAppFinishReqBR();
|
|
|
+ ComponentName cn = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
+ Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ intent.putExtra("updatesystem", "no");
|
|
|
+ intent.putExtra("updateapp", " no ");
|
|
|
+ intent.putExtra("rebootcmd", "reboot");
|
|
|
+ intent.setComponent(cn);
|
|
|
+ startActivity(intent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WsDB.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] CheckSysResetData()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean checkMorningCall() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
+ int AlarmStatus = WsDB.GetAlarmStatus();
|
|
|
+
|
|
|
+ if (AlarmStatus != WallpadStatusData.ALARM_NONE && AlarmStatus != WallpadStatusData.GUARD_IN && AlarmStatus != WallpadStatusData.ALARM_STOP) {
|
|
|
+ WsDB.closeDB();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ Calendar today = new GregorianCalendar();
|
|
|
+
|
|
|
+ int MCStatus = WsDB.GetMorningCallStatus();
|
|
|
+ Log.i(TAG,"[checkMorningCall] GetMorningCallStatus : "+MCStatus);
|
|
|
+ if (MCStatus==WallpadStatusData.MORNINGCALL_ON) {
|
|
|
+ int MCPer = WsDB.GetMorningCallPeriod();
|
|
|
+ Log.i(TAG,"[checkMorningCall] GetMorningCallPeriod : "+MCPer);
|
|
|
+ int TodatofWeek = today.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if ((MCPer == WallpadStatusData.MORNINGCALL_EWORKDAY && TodatofWeek != Calendar.SUNDAY) ||
|
|
|
+ (MCPer == WallpadStatusData.MORNINGCALL_WORKDAY && TodatofWeek!=Calendar.SUNDAY && TodatofWeek != Calendar.SATURDAY) ||
|
|
|
+ (MCPer == WallpadStatusData.MORNINGCALL_ONCE || MCPer == WallpadStatusData.MORNINGCALL_EVERYDAY )) {
|
|
|
+
|
|
|
+ Log.i(TAG,"[checkMorningCall] "+today.get(Calendar.HOUR_OF_DAY)+";"+WsDB.MorningHour + " -- " +today.get(Calendar.MINUTE)+":"+WsDB.MorningMin);
|
|
|
+
|
|
|
+ if (today.get(Calendar.HOUR_OF_DAY) == WsDB.MorningHour && today.get(Calendar.MINUTE) == WsDB.MorningMin) {
|
|
|
+ SendAppFinishReqBR();
|
|
|
+
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+
|
|
|
+ StartPopup(ID.POPUPS.POPUP_MORNINGCALL);
|
|
|
+
|
|
|
+ int[] MC_Doing = WsDB.GetMorningCallReserve();
|
|
|
+ if (MC_Doing != null && MC_Doing.length > 0) {
|
|
|
+ for (int k=0;k<MC_Doing.length;k++) {
|
|
|
+ switch (MC_Doing[k]) {
|
|
|
+ case WallpadStatusData.MCALLR_VENTIL_ON:
|
|
|
+ mWallPadAPI.DeviceBatchControl(WallPadAPI.DEV_BATCH_CTRL__TYPE.VENTI, true);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case WallpadStatusData.MCALLR_LIGHT_ON:
|
|
|
+ //에너지 미터인 경우 안방 조명을 켜도록 하고
|
|
|
+ //에너지 미터가 안 달린 경우 거실 조명을 켜도록 한다
|
|
|
+ if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
+ || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
+ // 안방조명에 1번 조명만 제어하도록 한다
|
|
|
+ // 모닝콜이 울리면 일괄소등시나리오에 의해 일괄소등이 해제가 되겠네 ? 음.....이건 아닌데
|
|
|
+ // 모닝콜이 울리는 동안만 켜고 끄자 일괄소등 시나리오를 해제할까나? 그러면 팝업 화면에서 제어처리를?
|
|
|
+ Log.d(TAG, "[checkMorningCall] mSdbAPI Room 1 - Lamp 1 On");
|
|
|
+ if (mSdbAPI != null) {
|
|
|
+ int nResult = mSdbAPI.SetLightOnOff((byte) 0x00, (byte) 0x00, true);
|
|
|
+ Log.d(TAG, "[checkMorningCall] mSdbAPI nResult = " + nResult);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I) {
|
|
|
+ Log.d(TAG, "[checkMorningCall] mIntLightAPI Living Room - Lamp 1 On");
|
|
|
+ if (mIntLightAPI != null) {
|
|
|
+ int nResult = mIntLightAPI.LightControl((byte) 0x01, true);
|
|
|
+ Log.d(TAG, "[checkMorningCall] mIntLightAPI nResult = " + nResult);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 대외향 구분하여 처리
|
|
|
+ WallpadDeviceSet devDB = new WallpadDeviceSet( getApplicationContext() );
|
|
|
+ int[] retArray = devDB.Get_Light_info();
|
|
|
+ devDB.closeDB();
|
|
|
+ if (retArray!= null && retArray[0] == 1) {
|
|
|
+ if (retArray[1] == WallpadDeviceSet.LIGHT_TYPE_LIVING) {
|
|
|
+ // 거실 스위치
|
|
|
+ if (m_LightCtrl != null) {
|
|
|
+ m_LightCtrl.Refresh(false);
|
|
|
+ m_LightCtrl.SetLightOnOff((byte)0x01, true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 멀티 스위치
|
|
|
+ if (m_MultiSwitch != null) {
|
|
|
+ m_MultiSwitch.Refresh((byte)0x00, false);
|
|
|
+ if (m_MultiSwitch.data.DeviceCnt > 1) {
|
|
|
+ m_MultiSwitch.SetLightOnOff((byte)0x01 ,(byte)0x00 , true);
|
|
|
+ }
|
|
|
+ else if(m_MultiSwitch.data.DeviceCnt == 1) {
|
|
|
+ m_MultiSwitch.SetLightOnOff((byte)0x00 ,(byte)0x00 , true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case WallpadStatusData.MCALLR_CURTAIN_OPEN: //fill lather
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (MCPer == WallpadStatusData.MORNINGCALL_ONCE) {
|
|
|
+ // Button morning = (Button)findViewById(R.id.top_alarm);
|
|
|
+ // morning.setVisibility(View.INVISIBLE);
|
|
|
+ WsDB.SetMorningCall(WallpadStatusData.MORNINGCALL_OFF, WsDB.MorningHour, WsDB.MorningMin);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WsDB.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void scheduleCheck()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Log.d("scheduleCheck", "++++++++++++++++++++++++++++++++++++++++");
|
|
|
+ Log.d("scheduleCheck", "Enter scheduleCheck "+GeneralData.size()+" : "+SchedulerData.size());
|
|
|
+ checkMorningCall();
|
|
|
+ if (GeneralData.size() > 0)
|
|
|
+ {
|
|
|
+ for (int i = 0;i < GeneralData.size(); i++)
|
|
|
+ {
|
|
|
+ TimeScheduleUnit scUnit = GeneralData.get(i);
|
|
|
+
|
|
|
+
|
|
|
+ if (scUnit.isOver())
|
|
|
+ {
|
|
|
+ switch (scUnit.type)
|
|
|
+ {
|
|
|
+ case SCHEDULE_TYPE_SYSRESET:
|
|
|
+ GeneralData.remove(scUnit);
|
|
|
+ Log.d("scheduleCheck", "++++++++++++++++++++++++++++++++++++++++ SCHEDULE_TYPE_SYSRESET");
|
|
|
+ SendAppFinishReqBR();
|
|
|
+ ComponentName cn = new ComponentName("com.artncore.updater","com.artncore.updater.MainActivity");
|
|
|
+ Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ intent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ intent.putExtra("updatesystem", "no");
|
|
|
+ intent.putExtra("updateapp", "no");
|
|
|
+ intent.putExtra("rebootcmd", "reboot");
|
|
|
+ intent.setComponent(cn);
|
|
|
+ startActivity(intent);
|
|
|
+ break;
|
|
|
+ case SCHEDULE_TYPE_GETINFO:
|
|
|
+ GeneralData.remove(scUnit);
|
|
|
+ Log.d("scheduleCheck", "++++++++++++++++++++++++++++++++++++++++ SCHEDULE_TYPE_GETINFO");
|
|
|
+ WallPadiMAPNotifyAPI notifyAPI = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+ notifyAPI.ReqGetSet();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d("scheduleCheck", "after scheduleCheck "+GeneralData.size() );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void doSchedule(String mess, int cnt)
|
|
|
+ {
|
|
|
+// SendAppFinishReqBR();
|
|
|
+// Intent intent = new Intent(getApplicationContext(), schedulepopup.class);
|
|
|
+// String SendMSG = mess;
|
|
|
+// if (cnt > 1) SendMSG+=(" 외 "+cnt+"건을 알려드립니다.");
|
|
|
+// intent.putExtra("MESSAGE", SendMSG);
|
|
|
+// Log.i("MAINSCREEN","Call Schedule POPUP");
|
|
|
+// startActivity(intent);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void refreshSchedulerData()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ SchedulerData.clear();
|
|
|
+ WallpadScheduleData schedata = new WallpadScheduleData(getApplicationContext());
|
|
|
+ List<WallpadScheduleData.ScheduleData> scheduledata = schedata.GetTodaySchedule();
|
|
|
+ Log.i("MAINSCREEN","refreshSchedulerData "+scheduledata.size());
|
|
|
+ for(int i=0;i<scheduledata.size();i++)
|
|
|
+ {
|
|
|
+ WallpadScheduleData.ScheduleData ScUnit = scheduledata.get(i);
|
|
|
+ int hour;
|
|
|
+ int min;
|
|
|
+ Log.i("MAINSCREEN","refreshSchedulerData "+ScUnit.inqatype+" : "+ScUnit.inqhour+" : ");
|
|
|
+ if (ScUnit.inqatype.equals("no")) continue;
|
|
|
+ else if (ScUnit.inqatype.equals("intime")||ScUnit.inqatype.equals("day"))
|
|
|
+ {
|
|
|
+ hour = ScUnit.inqhour;
|
|
|
+ min = 0;
|
|
|
+ }
|
|
|
+ else if (ScUnit.inqatype.equals("hour"))
|
|
|
+ {
|
|
|
+ hour = ScUnit.inqhour-1;
|
|
|
+ if (hour < 0) continue;
|
|
|
+ min = 0;
|
|
|
+ }
|
|
|
+ else if (ScUnit.inqatype.equals("min"))
|
|
|
+ {
|
|
|
+ hour = ScUnit.inqhour-1;
|
|
|
+ if (hour < 0) continue;
|
|
|
+ min = 50;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ continue;
|
|
|
+ Calendar today = new GregorianCalendar();
|
|
|
+ int MoonM;
|
|
|
+ int MoonD;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ String Moon = schedata.GetLunarDate(String.format("%04d%02d%02d", today.get(Calendar.YEAR),today.get(Calendar.MONTH)+1,today.get(Calendar.DAY_OF_MONTH) ));
|
|
|
+ MoonM = Integer.parseInt(Moon.substring(4, 6));
|
|
|
+ MoonD = Integer.parseInt(Moon.substring(6, 8));
|
|
|
+ Log.i("MAINSCREEN", " Get Lunar Date "+Moon+" : "+MoonM+"/"+MoonD);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ MoonM = 0;
|
|
|
+ MoonD = 0;
|
|
|
+ }
|
|
|
+ today.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
+ today.set(Calendar.MINUTE, min);
|
|
|
+
|
|
|
+
|
|
|
+ String Mesg = String.format("%04d년 %02d월 %02d일 (음 %02d/%02d)\n",today.get(Calendar.YEAR),today.get(Calendar.MONTH)+1,today.get(Calendar.DAY_OF_MONTH), MoonM, MoonD)+ScUnit.inqmsg;
|
|
|
+ Log.i("MAINSCREEN","refreshSchedulerData add "+ScUnit.inqatype+" : "+ScUnit.inqhour+" : "+Mesg);
|
|
|
+ TimeScheduleUnit newUnit = new TimeScheduleUnit(SCHEDULE_TYPE_SCHEDULER, today, Mesg);
|
|
|
+ isSetted = true;
|
|
|
+ SchedulerData.add(newUnit);
|
|
|
+ }
|
|
|
+ schedata.closeDB();
|
|
|
+
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void refreshMorningCall()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ for (int i = 0; i < GeneralData.size(); i++)
|
|
|
+ {
|
|
|
+ TimeScheduleUnit scUnit = SchedulerData.get(i);
|
|
|
+ if (scUnit.type == SCHEDULE_TYPE_MORNINGCALL)
|
|
|
+ {
|
|
|
+ SchedulerData.remove(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SetMorningCallData();
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void SetMorningCallData()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Log.i("MAINSCREEN","SetMorningCallData Schedule");
|
|
|
+ Calendar today = new GregorianCalendar();
|
|
|
+ WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
+ int MCStatus = WsDB.GetMorningCallStatus();
|
|
|
+ if (MCStatus==WallpadStatusData.MORNINGCALL_ON)
|
|
|
+ {
|
|
|
+ int MCPer = WsDB.GetMorningCallPeriod();
|
|
|
+ int TodatofWeek = today.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if ((MCPer == WallpadStatusData.MORNINGCALL_EWORKDAY && TodatofWeek != Calendar.SUNDAY) &&
|
|
|
+ (MCPer == WallpadStatusData.MORNINGCALL_WORKDAY && TodatofWeek!=Calendar.SUNDAY && TodatofWeek != Calendar.SATURDAY) &&
|
|
|
+ (MCPer == WallpadStatusData.MORNINGCALL_ONCE || MCPer == WallpadStatusData.MORNINGCALL_EVERYDAY ))
|
|
|
+ {
|
|
|
+ today.set(Calendar.HOUR_OF_DAY, WsDB.MorningHour);
|
|
|
+ today.set(Calendar.MINUTE, WsDB.MorningMin);
|
|
|
+ today.set(Calendar.SECOND, 0);
|
|
|
+ TimeScheduleUnit scUnit = new TimeScheduleUnit(SCHEDULE_TYPE_MORNINGCALL, today);
|
|
|
+ if (!scUnit.isOver())
|
|
|
+ {
|
|
|
+ isSetted = true;
|
|
|
+ // Button morning = (Button)findViewById(R.id.top_alarm);
|
|
|
+ // morning.setVisibility(View.VISIBLE);
|
|
|
+ GeneralData.add(scUnit);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Button morning = (Button)findViewById(R.id.top_alarm);
|
|
|
+ // morning.setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WsDB.closeDB();
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void refreshsysreset()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Log.i("MAINSCREEN","refreshsysreset Schedule");
|
|
|
+ for (int i = 0; i < GeneralData.size(); i++)
|
|
|
+ {
|
|
|
+ TimeScheduleUnit scUnit = SchedulerData.get(i);
|
|
|
+ if (scUnit.type == SCHEDULE_TYPE_SYSRESET)
|
|
|
+ {
|
|
|
+ SchedulerData.remove(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SetSysResetData();
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void SetSysResetData()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Calendar today = new GregorianCalendar();
|
|
|
+ Log.i("MAINSCREEN","SetSysResetData Schedule");
|
|
|
+ WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
|
|
|
+ String[] ResetData = WsDB.GetResetSchedule();
|
|
|
+ if (!ResetData[0].equals("NONE"))
|
|
|
+ {
|
|
|
+
|
|
|
+ int type = Integer.parseInt(ResetData[0]);
|
|
|
+ if ((type == WallpadStatusData.RESET_MONTH && today.get(Calendar.DAY_OF_MONTH) == Integer.parseInt(ResetData[1])) ||
|
|
|
+ (type == WallpadStatusData.RESET_WEEK && today.get(Calendar.DAY_OF_WEEK) == Integer.parseInt(ResetData[1])) )
|
|
|
+ {
|
|
|
+ Log.i("MAINSCREEN","SetSysResetData Setted");
|
|
|
+ today.set(Calendar.HOUR_OF_DAY, Integer.parseInt(ResetData[2]));
|
|
|
+ today.set(Calendar.MINUTE, 0);
|
|
|
+ today.set(Calendar.SECOND, 0);
|
|
|
+ TimeScheduleUnit scUnit = new TimeScheduleUnit(SCHEDULE_TYPE_SYSRESET, today);
|
|
|
+ if (!scUnit.isOver())
|
|
|
+ {
|
|
|
+ isSetted = true;
|
|
|
+ GeneralData.add(scUnit);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WsDB.closeDB();
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public void refreshSchedule()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Log.i("MAINSCREEN","Refresh Schedule");
|
|
|
+ GeneralData.clear();
|
|
|
+ Calendar today = new GregorianCalendar();
|
|
|
+ // 하루에 한번 가져오는 걸로 변경함
|
|
|
+ //if (today.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY)
|
|
|
+ {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ AddressSet addc = SetData.getAddressMGR();
|
|
|
+ SetData.closeDB();
|
|
|
+ int dong = Integer.parseInt(addc.Dong);
|
|
|
+
|
|
|
+ int ho = 101;
|
|
|
+ if(addc.UseOrNotRentHouse == true)
|
|
|
+ {
|
|
|
+ ho = addc.Ho_Integer;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ho = Integer.parseInt(addc.Ho);
|
|
|
+ }
|
|
|
+
|
|
|
+ int interval = (dong-(dong/100)*100) * 100 + ho/100;
|
|
|
+ int hour;
|
|
|
+ int min;
|
|
|
+ int sec;
|
|
|
+ if (interval/3600 > 0)
|
|
|
+ {
|
|
|
+ hour = 3+interval/3600;
|
|
|
+ interval=interval%3600;
|
|
|
+ }
|
|
|
+ else hour = 3;
|
|
|
+
|
|
|
+ if (interval/60 > 0)
|
|
|
+ {
|
|
|
+ min = interval/60;
|
|
|
+ sec = interval%60;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ min = 0;
|
|
|
+ sec = interval;
|
|
|
+ }
|
|
|
+ today.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
+ today.set(Calendar.MINUTE, min);
|
|
|
+ today.set(Calendar.SECOND, sec);
|
|
|
+ TimeScheduleUnit scUnit = new TimeScheduleUnit(SCHEDULE_TYPE_GETINFO, today);
|
|
|
+ if (!scUnit.isOver())
|
|
|
+ GeneralData.add(scUnit);
|
|
|
+ }
|
|
|
+
|
|
|
+ SetMorningCallData();
|
|
|
+ SetSysResetData();
|
|
|
+ refreshSchedulerData();
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ class runCallServices extends Thread {
|
|
|
+ public runCallServices() {
|
|
|
+ super();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
+ if (getIsSubWallpad()) {
|
|
|
+ Log.w(TAG, "[runCallServices.run()] ############### This wallpad is set as a sub-wallpad ###############");
|
|
|
+ Intent SubWallpadServiceLauncher = new Intent ("kr.co.icontrols.callengine.subwallpad.SubWallPadSerialManager.StartService");
|
|
|
+ getApplicationContext().startService(SubWallpadServiceLauncher);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runCallServices.run()] ############### This wallpad is set as a main-wallpad ###############");
|
|
|
+ // SIP/Subphone 서비스 실행
|
|
|
+ Intent SIPServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.SIPStun.StartService");
|
|
|
+ getApplicationContext().startService(SIPServiceLauncher);
|
|
|
+
|
|
|
+ Intent SubPhoneServiceLauncher = new Intent ("kr.co.icontrols.callengine.subphone.SubPhoneSerialManager.StartService");
|
|
|
+ getApplicationContext().startService(SubPhoneServiceLauncher);
|
|
|
+
|
|
|
+ if (GetRemoteCallUseInfo()) {
|
|
|
+ Intent remoteCallServiceLauncher = new Intent ("kr.co.icontrols.callengine.remotecall.RemoteCallManager.StartService");
|
|
|
+ getApplicationContext().startService(remoteCallServiceLauncher);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ int nModelType = Version.getModelType();
|
|
|
+ if (nModelType == MODEL_TYPE.IHN_750) {
|
|
|
+ // SIP 서비스만 실행
|
|
|
+ Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.SIPStun.StartService");
|
|
|
+ getApplicationContext().startService(sipServiceLauncher);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // SIP/PSTN/Subphone 서비스 실행
|
|
|
+ Intent sipServiceLauncher = new Intent ("kr.co.icontrols.callengine.sip.SIPStun.StartService");
|
|
|
+ getApplicationContext().startService(sipServiceLauncher);
|
|
|
+
|
|
|
+ Intent PSTNServiceLauncher = new Intent ("kr.co.icontrols.callengine.pstn.PSTNSerialManager.StartService");
|
|
|
+ getApplicationContext().startService(PSTNServiceLauncher);
|
|
|
+
|
|
|
+ Intent SubPhoneServiceLauncher = new Intent ("kr.co.icontrols.callengine.subphone.SubPhoneSerialManager.StartService");
|
|
|
+ getApplicationContext().startService(SubPhoneServiceLauncher);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch(Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runCallServices().run()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 방문객원격통화 솔루션 사용여부 판별
|
|
|
+ private boolean GetRemoteCallUseInfo() {
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
|
|
|
+ if (mWallpadDeviceSet != null) {
|
|
|
+ String[] astrRemoteCall = mWallpadDeviceSet.GetSettingData("방문객원격통화");
|
|
|
+ if (astrRemoteCall != null) {
|
|
|
+ if (astrRemoteCall[1].contains("사용함"))
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ Log.d(TAG, "[GetRemoteCallUseInfo] astrRemoteCall is null!!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] GetRemoteCallUseInfo()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ int UNINSTALL_REQUEST_CODE = 1;
|
|
|
+ private void uninstallAnCCallApp(String strAPK) {
|
|
|
+ try {
|
|
|
+ Log.w(TAG, "[uninstallAnCCallApp] strAPK [" + strAPK + "]");
|
|
|
+ if (checkAppInstalled(strAPK)) {
|
|
|
+// Intent mIntent = new Intent(Intent.ACTION_DELETE);
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
|
|
|
+ mIntent.setData(Uri.parse("package:" + strAPK));
|
|
|
+ mIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
|
|
|
+ startActivityForResult(mIntent, UNINSTALL_REQUEST_CODE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[uninstallAnCCallApp] Not installed [" + strAPK + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {;
|
|
|
+ Log.e(TAG, "[Exception] uninstallAnCCallApp()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean checkAppInstalled(String strAPK) {
|
|
|
+ try {
|
|
|
+ PackageManager mPackageManager = getPackageManager();
|
|
|
+ try {
|
|
|
+ mPackageManager.getPackageInfo(strAPK, PackageManager.GET_ACTIVITIES);
|
|
|
+ return true;
|
|
|
+ } catch (PackageManager.NameNotFoundException pne) {
|
|
|
+ Log.w(TAG, "[checkAppInstalled] No Package [" + strAPK + "]");
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkAppInstalled(String strAPK)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean MainSubScreenLoadingComplite = false;
|
|
|
+ public boolean getMainSubScreenLoadingComplite() {
|
|
|
+ return MainSubScreenLoadingComplite;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 설치된 모든 어플의 이름/버전정보 Version DB에 저장하는 쓰레드. <br>
|
|
|
+ * main Activity 생성 시 최초 1회 실행 후 die
|
|
|
+ */
|
|
|
+ class getInstalledPackageInfo extends Thread {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ super.run();
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[getInstalledPackageInfo] Started getting installed package infomation");
|
|
|
+ ArrayList<PackageVersionInfo> PackageVersionInfos = new ArrayList<PackageVersionInfo>();
|
|
|
+ List<PackageInfo> PackageInfoList = getPackageManager().getInstalledPackages(PackageManager.PERMISSION_GRANTED);
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ Log.d(TAG, "[getInstalledPackageInfo.run()] Get installed packages start!!");
|
|
|
+ try {
|
|
|
+ for (PackageInfo pack : PackageInfoList) {
|
|
|
+ Log.d(TAG, "# PackageName : " + pack.packageName);
|
|
|
+ Log.d(TAG, "# VersionName : " + pack.versionName);
|
|
|
+ if ((pack.packageName.contains("icontrols")) || (pack.packageName.contains("artncore")) || (pack.packageName.contains("dadam"))) {
|
|
|
+ PackageVersionInfos.add(new PackageVersionInfo(pack.packageName, pack.versionName));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch(Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[getInstalledPackageInfo.run()] Get installed packages end!!");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d(TAG, "[getInstalledPackageInfo.run()] Save installed packages start!!");
|
|
|
+ wallpaddbmgr WallpadDBMGR = new wallpaddbmgr(getApplicationContext());
|
|
|
+ if (PackageVersionInfos != null) {
|
|
|
+ for (int i = 0; i < PackageVersionInfos.size(); i++) {
|
|
|
+ WallpadDBMGR.UpdateVersionData(PackageVersionInfos.get(i).getPackageName(), PackageVersionInfos.get(i).getPackageVersion());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ WallpadDBMGR.closeDB();
|
|
|
+ Log.d(TAG, "[getInstalledPackageInfo.run()] Save installed packages end!!");
|
|
|
+
|
|
|
+ try {
|
|
|
+ Thread.sleep(1500);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) {
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ runOnUiThread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ registerSubScreen();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ WallpadScheduleData schedb = new WallpadScheduleData(getApplicationContext());
|
|
|
+ boolean bLunarTableExist = schedb.CheckLunarTable();
|
|
|
+ schedb.closeDB();
|
|
|
+
|
|
|
+ if (!bLunarTableExist) {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "DB File Copy Start");
|
|
|
+ copyDataBase(wallpaddbmgr.dblocation + "/" + wallpaddbmgr.Schedule_LunaDB);
|
|
|
+ Log.d(TAG, "DB File Copy End");
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+// if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) checkDongHoSetting();
|
|
|
+ checkDongHoSetting();
|
|
|
+
|
|
|
+ if (Common.GetElevatorSampleMode(getApplicationContext())) {
|
|
|
+ int retCount = EnergyAlramPopupMgr.get_WallPadRebootingCount( getApplicationContext()) + 1;
|
|
|
+ EnergyAlramPopupMgr.set_WallPadRebootingCount(getApplicationContext(), retCount);
|
|
|
+ Log.d(TAG, "################################# rebooting Count : " + retCount );
|
|
|
+ }
|
|
|
+
|
|
|
+ // 하드웨어 키 샘플 모드 동작 여부 설정
|
|
|
+ WallpadSalesSampleData sdata = new WallpadSalesSampleData(getApplicationContext());
|
|
|
+ int salsesampleHWBtn = sdata.getSalesSampleData(WallpadSalesSampleData.SALES_SAMPLE_MODE_HW_BUTTON_OPERATION);
|
|
|
+ sdata.closeDB();
|
|
|
+
|
|
|
+ WallPadInterface wpdifc = new WallPadInterface();
|
|
|
+ if (salsesampleHWBtn == WallpadSalesSampleData.SALES_SAMPLE_MODE_DO_NOT_USED)
|
|
|
+ wpdifc.DoControl(WallPadInterface.IOCTL_KEY_ONOFF_SET, 0);
|
|
|
+
|
|
|
+ CheckEnv();
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}
|
|
|
+ MainSubScreenLoadingComplite = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String DB_WALLPAD_WIDGET_INIT = "DB_WALLPAD_WIDGET_INIT";
|
|
|
+
|
|
|
+ public void set_WallPadWidgetInit(Context context) {
|
|
|
+ try {
|
|
|
+ wallpaddbmgr mgr = new wallpaddbmgr(context);
|
|
|
+ boolean bRet = mgr.UpdateWallPADData(DB_WALLPAD_WIDGET_INIT, String.valueOf(1));
|
|
|
+ if (bRet == false ) {
|
|
|
+ Log.d(TAG, "----- DB_WALLPAD_WIDGET_INIT insert ==> false ");
|
|
|
+ mgr.insertWallPADDB(DB_WALLPAD_WIDGET_INIT, "1");
|
|
|
+ }
|
|
|
+ mgr.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public int get_WallPadWidgetInit(Context context) {
|
|
|
+ int ret = 0;
|
|
|
+ try {
|
|
|
+ wallpaddbmgr mgr = new wallpaddbmgr(context);
|
|
|
+ String strRet = mgr.GetWallPADData(DB_WALLPAD_WIDGET_INIT);
|
|
|
+ if (strRet == null) {
|
|
|
+ Log.d(TAG, "----- get_WallPadRebootingCount strRet == null && insert ==> false ");
|
|
|
+ mgr.insertWallPADDB(DB_WALLPAD_WIDGET_INIT, "0");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = Integer.parseInt(strRet);
|
|
|
+ mgr.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 스케줄 관련 처리 핸들러 추가
|
|
|
+ * 모닝콜, 일정관리, 엘리베이터 호출상태, 에너지 사용량 확인
|
|
|
+ * 현재는 사용하지 않음. checkTimeTasks()로 대체
|
|
|
+ */
|
|
|
+ private int nDay, nHour, nMin;
|
|
|
+ Handler Checker = new Handler() {
|
|
|
+
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ super.handleMessage(msg);
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ if (cal.get(Calendar.DAY_OF_MONTH) != nDay) {
|
|
|
+ // 날짜가 바뀌었을때...
|
|
|
+ nDay = cal.get(Calendar.DAY_OF_MONTH);
|
|
|
+
|
|
|
+ Log.d(TAG , "-----------------day change repeat");
|
|
|
+ if (SCManager != null) {
|
|
|
+ if (SYSTEM_TIME_SET)SCManager.refreshSchedule();
|
|
|
+ }
|
|
|
+ //
|
|
|
+// Intent intent = new Intent();
|
|
|
+// intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+// intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_DAYCHANGED);
|
|
|
+// getApplicationContext().sendBroadcast(intent);
|
|
|
+
|
|
|
+ //에너지사용량 알림 초기화
|
|
|
+ ClearEnergyUsage();
|
|
|
+
|
|
|
+ Log.d(TAG , "cal.get(Calendar.YEAR) :" + cal.get(Calendar.YEAR) );
|
|
|
+
|
|
|
+ if ((bUseofNot_ZeroEnergyHouseInfo == true) && (cal.get(Calendar.YEAR) > 2016) && (SYSTEM_TIME_SET == true)) {
|
|
|
+ //어제 시간 재입력
|
|
|
+ Log.d(TAG , "/**********************************************/");
|
|
|
+ Log.d(TAG , "GetZeroEnergyHouseInfo_RandomCheckHandler(true);");
|
|
|
+ Log.d(TAG , "/**********************************************/");
|
|
|
+
|
|
|
+ DayofLastSecond = StringUtil.GetDayofLastSecondTimeString(cal); //하루전 날짜의 마지막 시간 입력
|
|
|
+ Log.d(TAG , "DayofLastSecond : "+ DayofLastSecond);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cal.get(Calendar.HOUR_OF_DAY) != nHour) {
|
|
|
+ nHour = cal.get(Calendar.HOUR_OF_DAY);
|
|
|
+ DoScheduleHourUnit(cal);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cal.get(Calendar.MINUTE) != nMin) {
|
|
|
+ nMin = cal.get(Calendar.MINUTE);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * A20월패드 BSP는 전자액자 실행을 시키지 않기때문에 main app에서 전자액자 실행 여부 확인하여
|
|
|
+ * 실행시킴
|
|
|
+ * **/
|
|
|
+ if (Version.getPlatformType() == Version.PLATFORM_TYPE.A20) {
|
|
|
+ Log.i(TAG, "[Checker handler] ========== JEFF 1 ========== m_LiveMainActivity : " + m_LiveMainActivity);
|
|
|
+ if (m_LiveMainActivity > 0) {
|
|
|
+ String LCD_Sleep_Status = null;
|
|
|
+
|
|
|
+ Runtime runtime = Runtime.getRuntime();
|
|
|
+ Process process;
|
|
|
+
|
|
|
+ try {
|
|
|
+ String cmd = "getprop persist.sys.display.lcdoff";
|
|
|
+ process = runtime.exec(cmd);
|
|
|
+ BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
|
|
+ String line;
|
|
|
+ while ((line = br.readLine()) != null) {
|
|
|
+ LCD_Sleep_Status = line;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.fillInStackTrace();
|
|
|
+ Log.e("Process Manager", "Unable to execute top command");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (LCD_Sleep_Status != null) {
|
|
|
+ Log.d(TAG, "The LCD_Sleep_Status : " + LCD_Sleep_Status);
|
|
|
+ if (LCD_Sleep_Status.equals("1") == true) {
|
|
|
+ // LCD 꺼져있음
|
|
|
+ WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
+
|
|
|
+ if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar())) {
|
|
|
+ if (SettData.StartAutoPictureAPP() == true) {
|
|
|
+ Log.d(TAG, "StartAutoPictureAPP is true");
|
|
|
+// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+// pm.userActivity(2, true);
|
|
|
+ // LCD backlight normal
|
|
|
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ Log.d(TAG, "PowerManager will be set");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "StartAutoPictureAPP is false");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "DecideAutoPictureAppStartOrNot is false");
|
|
|
+ }
|
|
|
+ SettData.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.e(TAG, "The LCD_Sleep_Status is null");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
+ Log.i(TAG, "[Checker handler] ========== JEFF 2 ========== m_LiveMainActivity : " + m_LiveMainActivity);
|
|
|
+ if (m_LiveMainActivity > 0) {
|
|
|
+ boolean bisScreenOn = false;
|
|
|
+ if (Version.getModelType() == MODEL_TYPE.IHN_1020B_I) {
|
|
|
+ bisScreenOn = checkLCDOnByCMD();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ PowerManager mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
|
|
|
+ bisScreenOn = mPowerManager.isScreenOn();
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[Checker handler] bisScreenOn : " + bisScreenOn);
|
|
|
+
|
|
|
+ if (!bisScreenOn) {
|
|
|
+ if (getBlackoutStatus()) {
|
|
|
+ Log.i(TAG, "[Checker handler] getBlackoutStatus is true!!!");
|
|
|
+ sendBlackoutScreenRunBR();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
+
|
|
|
+ if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar())) {
|
|
|
+ if (SettData.StartAutoPictureAPP() == true) {
|
|
|
+ Log.d(TAG, "StartAutoPictureAPP is true");
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ Log.d(TAG, "PowerManager will be set");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "StartAutoPictureAPP is false");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "DecideAutoPictureAppStartOrNot is false");
|
|
|
+ }
|
|
|
+ SettData.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if ((nMin == 50) || (nMin == 0)) {
|
|
|
+ try {
|
|
|
+ checkScheduleReminder();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 스케줄 일정 알람 팝업을 띄우도록 한다.
|
|
|
+
|
|
|
+// Intent intent = new Intent(getApplicationContext(), schedulepopup.class);
|
|
|
+// String SendMSG = doSchedule.get(0).inqmsg;
|
|
|
+// if (doSchedule.size() > 1) SendMSG+=(" 외 "+doSchedule.size()+"건을 알려드립니다.");
|
|
|
+// intent.putExtra("MESSAGE", SendMSG);
|
|
|
+//
|
|
|
+// startActivity(intent);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (SCManager != null) SCManager.scheduleCheck();
|
|
|
+ //CheckElevator();
|
|
|
+
|
|
|
+ if (MAX_BOOTUP_RETRY_COUNT < bootupretryCNT && SYSTEM_TIME_SET == false) {
|
|
|
+ try {
|
|
|
+ WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+ iMAPMethod.ReqGetSet();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 중복.... 이게 왜 있는겨....
|
|
|
+// if ( cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY && SYSTEM_TIME_SET && cal.get(Calendar.DAY_OF_MONTH)!=LastTimeSync)
|
|
|
+// {
|
|
|
+// Calendar checktime = GetTimeSyncTime();
|
|
|
+// if (checktime != null)
|
|
|
+// {
|
|
|
+// if (cal.after(checktime))
|
|
|
+// {
|
|
|
+// LastTimeSync = cal.get(Calendar.DAY_OF_MONTH);
|
|
|
+// WallpadStatusData wpd = new WallpadStatusData(getApplicationContext());
|
|
|
+// wpd.SetLastTimeSyncDate(LastTimeSync);
|
|
|
+// wpd.closeDB();
|
|
|
+// WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+// iMAPMethod.ReqGetSet();
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ //주차정보 관련 20분 마다 얻어오기
|
|
|
+ if (bUseofNot_ParkingInfo == true) {
|
|
|
+ cGetParkingMin++;
|
|
|
+ //테스트
|
|
|
+ /*
|
|
|
+ bSetMSG_GetParkingInfo = true;
|
|
|
+ LoadParkingDataFromServer();
|
|
|
+ */
|
|
|
+
|
|
|
+ if (cGetParkingMin >= 20) {
|
|
|
+ // 20분으로 고정
|
|
|
+ cGetParkingMin = 0;
|
|
|
+
|
|
|
+ //아이콘트롤스 일때도 처리하지 않도록 수정필요
|
|
|
+ //넥스파인 경우는 협의후 처리
|
|
|
+ switch (nParkingSystemType) {
|
|
|
+ case Common.PARKING_SYSTEM_ICONTROLS:
|
|
|
+ case Common.PARKING_SYSTEM_NEXPA:
|
|
|
+ case Common.PARKING_SYSTEM_UPIS:
|
|
|
+ case Common.PARKING_SYSTEM_IES_100:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.PARKING_SYSTEM_BASIC:
|
|
|
+ case Common.PARKING_SYSTEM_ETC:
|
|
|
+ GetParkingInfo_RandomCheckHandler(); //주차 정보 얻어오기
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 필요없는 코드 삭제 ( yskim 2015.03.31 )
|
|
|
+// String checkDate = String.format("%04d%02d%02d",cal.get(Calendar.YEAR),cal.get(Calendar.MONTH)+1,cal.get(Calendar.DAY_OF_MONTH));
|
|
|
+// WallpadStatusData energyData = new WallpadStatusData(getApplicationContext());
|
|
|
+// String EnergyCheckData = energyData.GetEnergyCheckDate();
|
|
|
+// energyData.closeDB();
|
|
|
+// if (SYSTEM_TIME_SET)
|
|
|
+// {
|
|
|
+// Calendar checktime = GetEnergyDataLoadingTime();
|
|
|
+// if (!checkDate.equals(EnergyCheckData))
|
|
|
+// {
|
|
|
+// if (checktime != null)
|
|
|
+// {
|
|
|
+//
|
|
|
+// if (cal.after(checktime))
|
|
|
+// {
|
|
|
+// WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+// iMAPMethod.GetEnergyUsage();
|
|
|
+// WallPadiMAPNotifyAPI iMAPMethod2 = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+// iMAPMethod2.GetEnergyUsageMonth();
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+// checkMainPage();
|
|
|
+
|
|
|
+ Checker.sendEmptyMessageDelayed(0, 1000);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * JEFF, 2019.12.25
|
|
|
+ * 매 1초마다 실행되면서 스케쥴 확인하여 각 기능을 동작시킨다 (시간업데이트, 전자액자 등)
|
|
|
+ */
|
|
|
+ Handler handlerEverySecond = new Handler() {
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ super.handleMessage(msg);
|
|
|
+ checkTimeTasks();
|
|
|
+ handlerEverySecond.sendEmptyMessageDelayed(0, 1000);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ private void checkTimeTasks() {
|
|
|
+ try {
|
|
|
+// Log.d(TAG , "[checkTimeTasks] ===== START =====");
|
|
|
+ Calendar cal = new GregorianCalendar();
|
|
|
+ if (cal.get(Calendar.DAY_OF_MONTH) != nDay) {
|
|
|
+ // 날짜 변경시
|
|
|
+ Log.d(TAG , "[checkTimeTasks] day changed!!");
|
|
|
+ nDay = cal.get(Calendar.DAY_OF_MONTH);
|
|
|
+ if (SCManager != null) {
|
|
|
+ if (SYSTEM_TIME_SET) SCManager.refreshSchedule();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG , "[checkTimeTasks] SYSTEM_TIME_SET is null!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 모바일연동 서비스로 원격검침 데이터를 전송
|
|
|
+// getTelemeteringDataOnRandomTime();
|
|
|
+// // 에너지사용량 알림 초기화
|
|
|
+// ClearEnergyUsage();
|
|
|
+
|
|
|
+ Log.d(TAG , "[checkTimeTasks] Calendar.YEAR = " + cal.get(Calendar.YEAR) );
|
|
|
+
|
|
|
+ if ((bUseofNot_ZeroEnergyHouseInfo == true) && (cal.get(Calendar.YEAR) > 2016) && (SYSTEM_TIME_SET == true)) {
|
|
|
+ //어제 시간 재입력
|
|
|
+ Log.i(TAG , "[checkTimeTasks] GetZeroEnergyHouseInfo_RandomCheckHandler(true);");
|
|
|
+ DayofLastSecond = StringUtil.GetDayofLastSecondTimeString(cal); //하루전 날짜의 마지막 시간 입력
|
|
|
+ Log.d(TAG , "[checkTimeTasks] DayofLastSecond : "+ DayofLastSecond);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cal.get(Calendar.HOUR_OF_DAY) != nHour) {
|
|
|
+ nHour = cal.get(Calendar.HOUR_OF_DAY);
|
|
|
+ // 원격검침 데이터를 서버로부터 가져와 관련 기능모듈에 알린다.
|
|
|
+ getTelemeteringDataOnRandomTime();
|
|
|
+ DoScheduleHourUnit(cal);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (getBlackoutStatus()) {
|
|
|
+ Log.i(TAG, "[checkTimeTasks] getBlackoutStatus is true!!!");
|
|
|
+ sendBlackoutScreenRunBR();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cal.get(Calendar.MINUTE) != nMin) {
|
|
|
+ nMin = cal.get(Calendar.MINUTE);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * main app에서 전자액자 실행 여부 확인하여 실행시킴
|
|
|
+ * **/
|
|
|
+ if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
+ Log.i(TAG, "[checkTimeTasks] m_LiveMainActivity : " + m_LiveMainActivity);
|
|
|
+ if (m_LiveMainActivity > 0) {
|
|
|
+ boolean bScreenOn = false;
|
|
|
+
|
|
|
+ if (Version.getModelType() == MODEL_TYPE.IHN_1020B_I) {
|
|
|
+ bScreenOn = checkLCDOnByCMD();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ PowerManager mPowerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
|
|
|
+ bScreenOn = mPowerManager.isScreenOn();
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[checkTimeTasks] bScreenOn : " + bScreenOn);
|
|
|
+
|
|
|
+ if (!bScreenOn && !getBlackoutStatus()) {
|
|
|
+ WallpadStatusData SettData = new WallpadStatusData(getApplicationContext());
|
|
|
+
|
|
|
+ if (SettData.DecideAutoPictureAppStartOrNot(new GregorianCalendar())) {
|
|
|
+ if (SettData.StartAutoPictureAPP() == true) {
|
|
|
+ Log.d(TAG, "[checkTimeTasks] StartAutoPictureAPP() is true");
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ Log.d(TAG, "[checkTimeTasks] PowerManager will be set");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "[checkTimeTasks] StartAutoPictureAPP() is false");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.d(TAG, "[checkTimeTasks] DecideAutoPictureAppStartOrNot(...) is false");
|
|
|
+ }
|
|
|
+ SettData.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if ((nMin == 50) || (nMin == 0)) {
|
|
|
+ try {
|
|
|
+ checkScheduleReminder();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (SCManager != null) SCManager.scheduleCheck();
|
|
|
+
|
|
|
+ if (MAX_BOOTUP_RETRY_COUNT < bootupretryCNT && SYSTEM_TIME_SET == false) {
|
|
|
+ try {
|
|
|
+ WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
|
|
|
+ iMAPMethod.ReqGetSet();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //주차정보 관련 20분 마다 얻어오기
|
|
|
+ if (bUseofNot_ParkingInfo == true) {
|
|
|
+ cGetParkingMin++;
|
|
|
+ //테스트
|
|
|
+ /*
|
|
|
+ bSetMSG_GetParkingInfo = true;
|
|
|
+ LoadParkingDataFromServer();
|
|
|
+ */
|
|
|
+
|
|
|
+ if (cGetParkingMin >= 20) {
|
|
|
+ // 20분으로 고정
|
|
|
+ cGetParkingMin = 0;
|
|
|
+
|
|
|
+ //아이콘트롤스 일때도 처리하지 않도록 수정필요
|
|
|
+ //넥스파인 경우는 협의후 처리
|
|
|
+ switch(nParkingSystemType) {
|
|
|
+ case Common.PARKING_SYSTEM_ICONTROLS:
|
|
|
+ case Common.PARKING_SYSTEM_NEXPA:
|
|
|
+ case Common.PARKING_SYSTEM_UPIS:
|
|
|
+ case Common.PARKING_SYSTEM_IES_100:
|
|
|
+ break;
|
|
|
+
|
|
|
+ case Common.PARKING_SYSTEM_BASIC:
|
|
|
+ case Common.PARKING_SYSTEM_ETC:
|
|
|
+ GetParkingInfo_RandomCheckHandler(); //주차 정보 얻어오기
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkTimeTasks()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 일정 알림 팝업창 생성하는 함수<br>
|
|
|
+ * 김용성 과장님 이곳에서 팝업창 생성해주시기 바랍니다.
|
|
|
+ * @param popup_msg 팝업창에 띄울 메시지.
|
|
|
+ * **/
|
|
|
+ private void MakePopup_Schedule(String popup_msg) {
|
|
|
+ try {
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] popup_msg [" + popup_msg + "]");
|
|
|
+ DebugLogOutput("===================================");
|
|
|
+ DebugLogOutput(popup_msg);
|
|
|
+ DebugLogOutput("===================================");
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
+ int AlarmStatus = mWallpadStatusData.GetAlarmStatus();
|
|
|
+ boolean soundOut = mWallpadStatusData.GetSoundOutputOfEventAlarm();
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 1 ==========");
|
|
|
+ if (AlarmStatus != WallpadStatusData.ALARM_ARISE && AlarmStatus != WallpadStatusData.GUARD_OUT && AlarmStatus != WallpadStatusData.GUARD_OUT_WAIT) {
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 2 ==========");
|
|
|
+ if (!Common.bWallPadCallLive) {
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 3 ==========");
|
|
|
+ Common.SendAppFinishReqBR(getApplicationContext());
|
|
|
+ PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
|
|
+ Log.d(TAG, "[MakePopup_Schedule] Screen On: " + mPowerManager.isScreenOn());
|
|
|
+
|
|
|
+ if (getCompareBSPVersion()) {
|
|
|
+ if (!checkLCDOnByCMD()) {
|
|
|
+ mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (!mPowerManager.isScreenOn()) {
|
|
|
+ Log.d(TAG, "[MakePopup_Schedule] V40Interface LcdWakeUp Call!!");
|
|
|
+ mIOInterface.ctrlLcdWakeUp(); // 절전상태일 경우, jni LcdWakeUp 먼저 호출
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ((MainActivity) mContext).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ // 알람 소리를 내준다.
|
|
|
+ if (soundOut) {
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 4 ==========");
|
|
|
+ Sound().Play(SND.effect.EFFECT1);
|
|
|
+ }
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 5 ==========");
|
|
|
+ EnergyAlramPopupMgr.SchedulePopupMsg = popup_msg;
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 6 ==========");
|
|
|
+ StartPopup(ID.POPUPS.POPUP_SCHEDULENOTIFICATION);
|
|
|
+ Log.e(TAG, "[MakePopup_Schedule] ========== JEFF 7 ==========");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] MakePopup_Schedule(String popup_msg)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 일정 알림 시간 비교!
|
|
|
+ * **/
|
|
|
+ private void checkScheduleReminder() {
|
|
|
+ try {
|
|
|
+ Calendar ScheduleCal = Calendar.getInstance();
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ScheduleCal: " + ScheduleCal.getTime());
|
|
|
+ WallpadScheduleData SCData = new WallpadScheduleData(getApplicationContext());
|
|
|
+// List<WallpadScheduleData.ScheduleData> scheduleDataDB = SCData.NewGetScheduleDataForMainActivity(ScheduleCal.get(Calendar.YEAR), ScheduleCal.get(Calendar.MONTH) + 1, ScheduleCal.get(Calendar.DAY_OF_MONTH));
|
|
|
+ List<WallpadScheduleData.ScheduleData> scheduleDataDB = SCData.getScheduledInfoforMainActivity();
|
|
|
+ SCData.closeDB();
|
|
|
+
|
|
|
+ if (scheduleDataDB != null) {
|
|
|
+ Log.i(TAG, "scheduleDataDB.size() [" + scheduleDataDB.size() + "]");
|
|
|
+ for (int i = 0; i < scheduleDataDB.size(); i++) {
|
|
|
+ DebugLogOutput("[checkScheduleReminder] ===================================");
|
|
|
+ DebugLogOutput("[checkScheduleReminder] index [" + i + "], year [" + scheduleDataDB.get(i).inqyear + "], month [" + scheduleDataDB.get(i).inqmonth + "], day [" + scheduleDataDB.get(i).inqday + "], hour [" + scheduleDataDB.get(i).inqhour + "]");
|
|
|
+ DebugLogOutput("[checkScheduleReminder] msg [" + scheduleDataDB.get(i).inqmsg + "], seq [" + scheduleDataDB.get(i).seqnum + "]");
|
|
|
+ /**
|
|
|
+ * inqttype: 음력여부 - {"moon", "sun"}
|
|
|
+ * inqctype: 주기 - no:없음 or month:매월주기 or year:매년주기
|
|
|
+ * inqatype: 알림 - {"no","intime","min","hour","day"} := {안울림, 정각, 10분전, 1시간전, 하루전}
|
|
|
+ * inqitype: 행사 - {"birth","memorial","appoint","trip","first","wedding","tax","meeting","car","ancestor"} := {생일,기념일,약속,여행,돌,결혼,공과금,차량점검,제사}
|
|
|
+ */
|
|
|
+ DebugLogOutput("[checkScheduleReminder] lunar [" + scheduleDataDB.get(i).inqttype + "], cycle [" + scheduleDataDB.get(i).inqctype + "], remindtime [" + scheduleDataDB.get(i).inqatype + "], event [" + scheduleDataDB.get(i).inqitype + "]");
|
|
|
+ DebugLogOutput("[checkScheduleReminder] ===================================\n");
|
|
|
+
|
|
|
+ Calendar alarmCalendar = Calendar.getInstance();
|
|
|
+
|
|
|
+ if(scheduleDataDB.get(i).inqatype.equalsIgnoreCase("no") == true) {
|
|
|
+ //알림 사용하지 않음.
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm off ==========");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on ==========");
|
|
|
+ if (scheduleDataDB.get(i).inqctype.equalsIgnoreCase("month")) {
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month ==========");
|
|
|
+ if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("intime")) {
|
|
|
+ //정각인 경우
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> intime ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("min")) {
|
|
|
+ //10분 전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> 10 min before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.MINUTE, -10);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("hour")) {
|
|
|
+ //1시간 전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> 1 hour before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.HOUR_OF_DAY, -1);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("day")) {
|
|
|
+ //하루전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> month -> 1 day before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.DATE, -1);
|
|
|
+
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.YEAR): " + ScheduleCal.get(Calendar.YEAR) + ", alarmCalendar.get(Calendar.YEAR): " + alarmCalendar.get(Calendar.YEAR));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MONTH): " + ScheduleCal.get(Calendar.MONTH) + ", alarmCalendar.get(Calendar.MONTH): " + alarmCalendar.get(Calendar.MONTH));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.DAY_OF_MONTH): " + ScheduleCal.get(Calendar.DAY_OF_MONTH) + ", alarmCalendar.get(Calendar.DAY_OF_MONTH): " + alarmCalendar.get(Calendar.DAY_OF_MONTH));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.HOUR_OF_DAY): " + ScheduleCal.get(Calendar.HOUR_OF_DAY) + ", alarmCalendar.get(Calendar.HOUR_OF_DAY): " + alarmCalendar.get(Calendar.HOUR_OF_DAY));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MINUTE): " + ScheduleCal.get(Calendar.MINUTE) + ", alarmCalendar.get(Calendar.MINUTE): " + alarmCalendar.get(Calendar.MINUTE));
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqctype.equalsIgnoreCase("year")) {
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year ==========");
|
|
|
+ if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("intime")) {
|
|
|
+ //정각인 경우
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> intime ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE))) {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("min")) {
|
|
|
+ //10분 전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> 10 min before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.MINUTE, -10);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("hour")) {
|
|
|
+ //1시간 전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> 1 hour before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.HOUR_OF_DAY, -1);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("day")) {
|
|
|
+ //하루전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> year -> 1 day before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.DATE, -1);
|
|
|
+
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.YEAR): " + ScheduleCal.get(Calendar.YEAR) + ", alarmCalendar.get(Calendar.YEAR): " + alarmCalendar.get(Calendar.YEAR));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MONTH): " + ScheduleCal.get(Calendar.MONTH) + ", alarmCalendar.get(Calendar.MONTH): " + alarmCalendar.get(Calendar.MONTH));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.DAY_OF_MONTH): " + ScheduleCal.get(Calendar.DAY_OF_MONTH) + ", alarmCalendar.get(Calendar.DAY_OF_MONTH): " + alarmCalendar.get(Calendar.DAY_OF_MONTH));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.HOUR_OF_DAY): " + ScheduleCal.get(Calendar.HOUR_OF_DAY) + ", alarmCalendar.get(Calendar.HOUR_OF_DAY): " + alarmCalendar.get(Calendar.HOUR_OF_DAY));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MINUTE): " + ScheduleCal.get(Calendar.MINUTE) + ", alarmCalendar.get(Calendar.MINUTE): " + alarmCalendar.get(Calendar.MINUTE));
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //반복 없는경우
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat ==========");
|
|
|
+ if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("intime")) {
|
|
|
+ //정각인 경우
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> intime ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
+ && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("min")) {
|
|
|
+ //10분 전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> 10 min before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.MINUTE, -10);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
+ && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(scheduleDataDB.get(i).inqatype.equalsIgnoreCase("hour")) {
|
|
|
+ //1시간 전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> 1 hour before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.HOUR_OF_DAY, -1);
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
+ && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (scheduleDataDB.get(i).inqatype.equalsIgnoreCase("day")) {
|
|
|
+ //하루전
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] ========== alarm on -> no repeat -> 1 day before ==========");
|
|
|
+ alarmCalendar.set(scheduleDataDB.get(i).inqyear, scheduleDataDB.get(i).inqmonth - 1, scheduleDataDB.get(i).inqday, scheduleDataDB.get(i).inqhour, 0);
|
|
|
+ alarmCalendar.add(Calendar.DATE, -1);
|
|
|
+
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.YEAR): " + ScheduleCal.get(Calendar.YEAR) + ", alarmCalendar.get(Calendar.YEAR): " + alarmCalendar.get(Calendar.YEAR));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MONTH): " + ScheduleCal.get(Calendar.MONTH) + ", alarmCalendar.get(Calendar.MONTH): " + alarmCalendar.get(Calendar.MONTH));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.DAY_OF_MONTH): " + ScheduleCal.get(Calendar.DAY_OF_MONTH) + ", alarmCalendar.get(Calendar.DAY_OF_MONTH): " + alarmCalendar.get(Calendar.DAY_OF_MONTH));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.HOUR_OF_DAY): " + ScheduleCal.get(Calendar.HOUR_OF_DAY) + ", alarmCalendar.get(Calendar.HOUR_OF_DAY): " + alarmCalendar.get(Calendar.HOUR_OF_DAY));
|
|
|
+// Log.i(TAG, "[checkScheduleReminder] cal.get(Calendar.MINUTE): " + ScheduleCal.get(Calendar.MINUTE) + ", alarmCalendar.get(Calendar.MINUTE): " + alarmCalendar.get(Calendar.MINUTE));
|
|
|
+
|
|
|
+ if ((ScheduleCal.get(Calendar.YEAR) == alarmCalendar.get(Calendar.YEAR))
|
|
|
+ && (ScheduleCal.get(Calendar.MONTH) == alarmCalendar.get(Calendar.MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.DAY_OF_MONTH) == alarmCalendar.get(Calendar.DAY_OF_MONTH))
|
|
|
+ && (ScheduleCal.get(Calendar.HOUR_OF_DAY) == alarmCalendar.get(Calendar.HOUR_OF_DAY))
|
|
|
+ && (ScheduleCal.get(Calendar.MINUTE) == alarmCalendar.get(Calendar.MINUTE)))
|
|
|
+ {
|
|
|
+ AlarmScheduleCount++;
|
|
|
+ if (bAlarmScheduleString == false) {
|
|
|
+ bAlarmScheduleString = true;
|
|
|
+ if (scheduleDataDB.get(i).inqttype.equalsIgnoreCase("moon")) {
|
|
|
+ AlarmScheduleString = "[음력] "+ getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AlarmScheduleString = getScheduleEventType(scheduleDataDB.get(i).inqitype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[checkScheduleReminder] Unsupported alarm type!! -> " + scheduleDataDB.get(i).inqatype);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[checkScheduleReminder] bAlarmScheduleString [" + bAlarmScheduleString + "], AlarmScheduleCount [" + AlarmScheduleCount + "]");
|
|
|
+
|
|
|
+ if (bAlarmScheduleString == true) {
|
|
|
+ if(AlarmScheduleCount == 1) {
|
|
|
+ //일정이 1개인 경우
|
|
|
+ AlarmScheduleString += " 일정이 있습니다.\r\n확인 하시겠습니까?";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //일정이 1개보다 많은 경우
|
|
|
+ AlarmScheduleString += " 일정 외 "+(AlarmScheduleCount-1)+"건이 있습니다.\r\n확인 하시겠습니까?";
|
|
|
+ }
|
|
|
+ AlarmScheduleCount = 0;
|
|
|
+ bAlarmScheduleString = false;
|
|
|
+
|
|
|
+ MakePopup_Schedule(AlarmScheduleString);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[checkScheduleReminder] scheduleDataDB is null!!");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkScheduleReminder(Calendar cal)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 프로토콜에 정의된 일정표 이벤트 종류를 변환하여 반환한다.
|
|
|
+ private String getScheduleEventType(String strEvent) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[getScheduleEventType] strEvent [" + strEvent + "]");
|
|
|
+ if (strEvent.equalsIgnoreCase("birth")) return "생일";
|
|
|
+ else if (strEvent.equalsIgnoreCase("memorial")) return "기념일";
|
|
|
+ else if (strEvent.equalsIgnoreCase("appoint")) return "약속";
|
|
|
+ else if (strEvent.equalsIgnoreCase("trip")) return "여행";
|
|
|
+ else if (strEvent.equalsIgnoreCase("first")) return "돌";
|
|
|
+ else if (strEvent.equalsIgnoreCase("wedding")) return "결혼";
|
|
|
+ else if (strEvent.equalsIgnoreCase("tax")) return "공과금";
|
|
|
+ else if (strEvent.equalsIgnoreCase("meeting")) return "모임";
|
|
|
+ else if (strEvent.equalsIgnoreCase("car")) return "생일";
|
|
|
+ else if (strEvent.equalsIgnoreCase("ancestor")) return "제사";
|
|
|
+ else return "알수없음";
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getScheduleEventType(String strEvent)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return "알수없음";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getParkedVehicleLocationSysInfo() {
|
|
|
+ try {
|
|
|
+ DebugLogOutput("getParkedVehicleLocationSysInfo Init");
|
|
|
+ WallpadDeviceSet devSet = new WallpadDeviceSet(getContext());
|
|
|
+ String[] ParkingDB = devSet.GetSettingData("주차확인");
|
|
|
+ devSet.closeDB();
|
|
|
+
|
|
|
+ if (ParkingDB!=null) {
|
|
|
+ try {
|
|
|
+ String devInfo = ParkingDB[1];
|
|
|
+
|
|
|
+ devInfo = devInfo.replace('(', '_');
|
|
|
+ devInfo = devInfo.replace(':', '_');
|
|
|
+ devInfo = devInfo.replace(')', '_');
|
|
|
+
|
|
|
+ String[] ParkingInfo = devInfo.split("_");
|
|
|
+
|
|
|
+ //ParkingInfo[3] -> 사용여부 <사용함 / else>
|
|
|
+ //ParkingInfo[5] -> 종류 <기본 / 아이콘트롤스 / NEXPA / UPIS / ETC / 비상벨 / else>
|
|
|
+ //ParkingInfo[7] -> IP정보
|
|
|
+ //ParkingInfo[8] -> 포트번호
|
|
|
+
|
|
|
+ if (ParkingInfo[3].equalsIgnoreCase("사용함") == true) {
|
|
|
+ bUseofNot_ParkingInfo = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ParkingInfo[5].equalsIgnoreCase("기본") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_BASIC;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("아이콘트롤스") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_ICONTROLS;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("넥스파") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_NEXPA;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("NEXPA") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_NEXPA;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("UPIS") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_UPIS;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("ETC") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_ETC;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("비상벨") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_IES_100;
|
|
|
+ }
|
|
|
+ else if (ParkingInfo[5].equalsIgnoreCase("다람정보") == true) {
|
|
|
+ nParkingSystemType = Common.PARKING_SYSTEM_DARAM;
|
|
|
+ }
|
|
|
+
|
|
|
+ ParkingServerIP = ParkingInfo[7];
|
|
|
+ ParkingServerPort = Integer.parseInt(ParkingInfo[8]);
|
|
|
+
|
|
|
+ DebugLogOutput("[getParkedVehicleLocationSysInfo] bUseofNot_ParkingInfo [" + bUseofNot_ParkingInfo + ", nParkingSystemType ["+ nParkingSystemType + "]");
|
|
|
+ DebugLogOutput("[getParkedVehicleLocationSysInfo] ParkingServerIP ["+ParkingServerIP + "], ParkingServerPort [" + ParkingServerPort + "]");
|
|
|
+ } catch(Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ bUseofNot_ParkingInfo = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ bUseofNot_ParkingInfo = false;
|
|
|
+ DebugLogOutput("[getParkedVehicleLocationSysInfo] bUseofNot_ParkingInfo ["+bUseofNot_ParkingInfo + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //20분 마다 한번씩 호출되는 주차관련 함수!
|
|
|
+ private void GetParkingInfo_RandomCheckHandler() {
|
|
|
+ int DelayTime = StringUtil.GetDelayTimeBaseIP(getContext());
|
|
|
+ if (DelayTime < 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ DebugLogOutput("[GetParkingInfo] DelayTime : "+ DelayTime);
|
|
|
+ bSetMSG_GetParkingInfo = true;
|
|
|
+ mGetParkInfoRandomCheckHandler.sendEmptyMessageDelayed(0, 1000 * DelayTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Handler mGetParkInfoRandomCheckHandler = new Handler()
|
|
|
+ {
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg)
|
|
|
+ {
|
|
|
+ if (msg.what == 0) {
|
|
|
+ DebugLogOutput("[GetParkingInfo] mGetParkInfoRandomCheckHandler() will be called");
|
|
|
+ //얻어오기
|
|
|
+ LoadParkingDataFromServer();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description 주차정보 서버로부터 얻어오기<br>
|
|
|
+ * 호출 시에는 bSetMSG_GetParkingInfo = true 하고 호출해야함.
|
|
|
+ * **/
|
|
|
+ private void LoadParkingDataFromServer() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ final AddressSet addc = SetData.getAddressMGR();
|
|
|
+ SetData.closeDB();
|
|
|
+
|
|
|
+ if (bSetMSG_GetParkingInfo == false) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((nParkingSystemType == Common.PARKING_SYSTEM_BASIC)
|
|
|
+ || (nParkingSystemType == Common.PARKING_SYSTEM_ICONTROLS)
|
|
|
+ || (nParkingSystemType == Common.PARKING_SYSTEM_NEXPA)
|
|
|
+ || (nParkingSystemType == Common.PARKING_SYSTEM_IES_100))
|
|
|
+ {
|
|
|
+ iMAPcarParking = new iMAPCarParking(mContext, true);
|
|
|
+ iMAPcarParking.SetServerIPcfg(ParkingServerIP, ParkingServerPort);
|
|
|
+ DebugLogOutput("ParkingServerIP :"+ParkingServerIP+", ParkingServerPort : "+ParkingServerPort);
|
|
|
+ DebugLogOutput("iMAPcarParking.DoWork()");
|
|
|
+ iMAPcarParking.DoWork();
|
|
|
+
|
|
|
+ iMAPcarParking.SetRetCtr(new RetProci(){
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ DebugLogOutput("Load EMData From Server - ProcSuccess");
|
|
|
+ try {
|
|
|
+ iMAPcarParking.SetItem("home_info");
|
|
|
+ int home_info_count = Integer.parseInt(iMAPcarParking.GetAttributeVal(0, "count"));
|
|
|
+ int park_info_count = iMAPcarParking.SetItem("park_info");
|
|
|
+
|
|
|
+ if (home_info_count != park_info_count) {
|
|
|
+ DebugLogOutput("home_info_count != park_info_count -->"+ home_info_count+" != "+ park_info_count);
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (park_info_count == 0) {
|
|
|
+ DebugLogOutput("park_info_count :" + park_info_count);
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.DeleteAllParkInfo();
|
|
|
+ parkdb.closeDB();
|
|
|
+
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+
|
|
|
+ /*
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ int countRow = parkdb.RowCountCarParking();
|
|
|
+ parkdb.closeDB();
|
|
|
+ DebugLogOutput("countRow :" + countRow);
|
|
|
+ */
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.DeleteAllParkInfo();
|
|
|
+ parkdb.closeDB();
|
|
|
+
|
|
|
+ for (int i = 0; i < park_info_count; i++) {
|
|
|
+ if ((addc.Dong.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "dong"))) && (addc.Ho.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "ho")))) {
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.InputParkInfo(
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "index"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "dong"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "ho"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "card_num"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "uid"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "sn"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "card_type"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "time"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "location_text"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "location_map"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "vehicle_info"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "ftp_path"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "ftp_info"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "message"));
|
|
|
+ parkdb.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //테스트
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ CarParkingData carParkingData[] = parkdb.getCarParkingData();
|
|
|
+ parkdb.closeDB();
|
|
|
+ if (carParkingData != null) {
|
|
|
+ for (int j = 0; j < carParkingData.length; j++) {
|
|
|
+ DebugLogOutput(carParkingData[j].ToDebugString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //테스트
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError() {
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ DebugLogOutput("Load EMData From Server - ProcError");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else if (nParkingSystemType == Common.PARKING_SYSTEM_DARAM) {
|
|
|
+ iMAPcarParking = new iMAPCarParking(mContext, false);
|
|
|
+ iMAPcarParking.SetServerIPcfg(ParkingServerIP, ParkingServerPort);
|
|
|
+ DebugLogOutput("ParkingServerIP :"+ParkingServerIP+", ParkingServerPort : "+ParkingServerPort);
|
|
|
+ DebugLogOutput("iMAPcarParking.DoWork()");
|
|
|
+ iMAPcarParking.DoWork();
|
|
|
+
|
|
|
+ iMAPcarParking.SetRetCtr(new RetProci(){
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ DebugLogOutput("Load EMData From Server - ProcSuccess");
|
|
|
+ try {
|
|
|
+ iMAPcarParking.SetItem("home_info");
|
|
|
+ int home_info_count = Integer.parseInt(iMAPcarParking.GetAttributeVal(0, "count"));
|
|
|
+ int park_info_count = iMAPcarParking.SetItem("park_info");
|
|
|
+
|
|
|
+ if (home_info_count != park_info_count) {
|
|
|
+ DebugLogOutput("home_info_count != park_info_count -->"+ home_info_count+" != "+ park_info_count);
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (park_info_count == 0) {
|
|
|
+ DebugLogOutput("park_info_count :" + park_info_count);
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.DeleteAllParkInfo();
|
|
|
+ parkdb.closeDB();
|
|
|
+
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+
|
|
|
+ /*
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ int countRow = parkdb.RowCountCarParking();
|
|
|
+ parkdb.closeDB();
|
|
|
+ DebugLogOutput("countRow :" + countRow);
|
|
|
+ */
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.DeleteAllParkInfo();
|
|
|
+ parkdb.closeDB();
|
|
|
+
|
|
|
+ for (int i = 0; i < park_info_count; i++) {
|
|
|
+ if ((addc.Dong.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "dong"))) && (addc.Ho.equalsIgnoreCase(iMAPcarParking.GetAttributeVal(i, "ho")))) {
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.InputParkInfo(
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "index"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "dong"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "ho"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "card_num"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "uid"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "sn"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "card_type"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "time"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "location_text"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "location_map"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "vehicle_info"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "ftp_path"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "ftp_info"),
|
|
|
+ iMAPcarParking.GetAttributeVal(i, "message"));
|
|
|
+ parkdb.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //테스트
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ CarParkingData carParkingData[] = parkdb.getCarParkingData();
|
|
|
+ parkdb.closeDB();
|
|
|
+ if (carParkingData != null) {
|
|
|
+ for (int j = 0; j < carParkingData.length; j++) {
|
|
|
+ DebugLogOutput(carParkingData[j].ToDebugString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //테스트
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError() {
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ DebugLogOutput("Load EMData From Server - ProcError");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else if (nParkingSystemType == Common.PARKING_SYSTEM_UPIS) {
|
|
|
+ iMapcarParking_UPIS = new iMAPCarParking_UPIS(mContext);
|
|
|
+ iMapcarParking_UPIS.SetServerIPcfg(ParkingServerIP, ParkingServerPort);
|
|
|
+ DebugLogOutput("ParkingServerIP :"+ParkingServerIP+", ParkingServerPort : "+ParkingServerPort);
|
|
|
+ DebugLogOutput("iMapcarParking_UPIS.DoWork()");
|
|
|
+ iMapcarParking_UPIS.DoWork();
|
|
|
+
|
|
|
+ iMapcarParking_UPIS.SetRetCtr(new RetProci(){
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ DebugLogOutput("Load EMData From Server - ProcSuccess");
|
|
|
+ try {
|
|
|
+ iMapcarParking_UPIS.SetItem("home_info");
|
|
|
+ int home_info_count = Integer.parseInt(iMapcarParking_UPIS.GetAttributeVal(0, "count"));
|
|
|
+ int park_info_count = iMapcarParking_UPIS.SetItem("park_info");
|
|
|
+ if (home_info_count != park_info_count) {
|
|
|
+ DebugLogOutput("home_info_count != park_info_count -->"+ home_info_count+" != "+ park_info_count);
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (park_info_count == 0) {
|
|
|
+ DebugLogOutput("park_info_count :" + park_info_count);
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.DeleteAllParkInfo();
|
|
|
+ parkdb.closeDB();
|
|
|
+
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+
|
|
|
+ /*
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ int countRow = parkdb.RowCountCarParking();
|
|
|
+ parkdb.closeDB();
|
|
|
+ DebugLogOutput("countRow :" + countRow);
|
|
|
+ */
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.DeleteAllParkInfo();
|
|
|
+ parkdb.closeDB();
|
|
|
+
|
|
|
+ for (int i = 0; i < park_info_count; i++) {
|
|
|
+ if ((addc.Dong.equalsIgnoreCase(iMapcarParking_UPIS.GetAttributeVal(i, "dong"))) && (addc.Ho.equalsIgnoreCase(iMapcarParking_UPIS.GetAttributeVal(i, "ho")))) {
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ parkdb.InputParkInfo(
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "index"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "dong"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "ho"),
|
|
|
+ "null",
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "uid"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "sn"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "card_type"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "time"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "location_2"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "location_1"),
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "car_info"),
|
|
|
+ "null",
|
|
|
+ "null",
|
|
|
+ iMapcarParking_UPIS.GetAttributeVal(i, "message"));
|
|
|
+ parkdb.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //테스트
|
|
|
+ parkdb = new WallpadParkInfo(getApplicationContext());
|
|
|
+ CarParkingData carParkingData[] = parkdb.getCarParkingData();
|
|
|
+ parkdb.closeDB();
|
|
|
+ if (carParkingData != null) {
|
|
|
+ for (int j = 0; j < carParkingData.length; j++) {
|
|
|
+ DebugLogOutput(carParkingData[j].ToDebugString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_UPDATEPARKING);
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ } catch(Exception e) {
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError() {
|
|
|
+ cGetParkingMin = 0;
|
|
|
+ bSetMSG_GetParkingInfo = false;
|
|
|
+ DebugLogOutput("Load EMData From Server - ProcError");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] LoadParkingDataFromServer()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 한시간에 한번식 호출되는 함수임
|
|
|
+ private void DoScheduleHourUnit(Calendar cal) {
|
|
|
+ nHour = cal.get(Calendar.HOUR_OF_DAY);
|
|
|
+ // 매시 7시부터 매시간 정각에 계속해서 알려준다. 사용자가 확인하기 전까지...
|
|
|
+ // 사용자가 확인하게 되면 알림을 중지한다.
|
|
|
+ // 목표값 팝업 알림에 필요한 DB 정보
|
|
|
+ // 각각의 항목에 대한 초기화, 근접알림 발생, 근접알림 확인, 초과 알림 발생 , 초과알림 확인 5단계 구분 필요
|
|
|
+ // 달이 넘어가게 되면 초괴하 한다.
|
|
|
+
|
|
|
+ try {
|
|
|
+ if (nHour == GetEnergyAlarmTime()) {
|
|
|
+ if (GetEnergyAlarm() == true) {
|
|
|
+ if (bUseofNot_EnergyServer == true) {
|
|
|
+ if (ResultGetIntent == true) {
|
|
|
+ ResultGetIntent = false;
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ENERGY_TARGET_INFO_ALARM_FROM_MAIN_ACTIVIVY);
|
|
|
+
|
|
|
+ intent.putExtra("elect_target", elect_target);
|
|
|
+ intent.putExtra("elect_used", elect_used);
|
|
|
+ intent.putExtra("elect_info", elect_info);
|
|
|
+ intent.putExtra("water_target", water_target);
|
|
|
+ intent.putExtra("water_used", water_used);
|
|
|
+ intent.putExtra("water_info", water_info);
|
|
|
+ intent.putExtra("gas_target", gas_target);
|
|
|
+ intent.putExtra("gas_used", gas_used);
|
|
|
+ intent.putExtra("gas_info", gas_info);
|
|
|
+ intent.putExtra("heating_target", heating_target);
|
|
|
+ intent.putExtra("heating_used", heating_used);
|
|
|
+ intent.putExtra("heating_info", heating_info);
|
|
|
+ intent.putExtra("hotwater_target", hotwater_target);
|
|
|
+ intent.putExtra("hotwater_used", hotwater_used);
|
|
|
+ intent.putExtra("hotwater_info", hotwater_info);
|
|
|
+
|
|
|
+ sendBroadcast(intent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ CheckEnergyUsage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (SCManager != null ) SCManager.CheckSysResetData();
|
|
|
+ }
|
|
|
+ static boolean NeedCheckEnergy = false;
|
|
|
+
|
|
|
+ //에너지 사용량 확인
|
|
|
+ public void CheckEnergyUsage() {
|
|
|
+ Log.d(TAG, "***********************************************");
|
|
|
+ Log.d(TAG, "[CheckEnergyUsage] CheckEnergyUsage Function in");
|
|
|
+ Log.d(TAG, "***********************************************");
|
|
|
+ try {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ int alarmstate = SetData.GetAlarmStatus();
|
|
|
+ SetData.closeDB();
|
|
|
+
|
|
|
+ if (alarmstate == WallpadStatusData.ALARM_ARISE || alarmstate == WallpadStatusData.GUARD_OUT)
|
|
|
+ return;
|
|
|
+
|
|
|
+ String strNear = "";
|
|
|
+ String strOver = "";
|
|
|
+
|
|
|
+ if (EnergyAlramPopupMgr.m_Elec_UseValue > 0 && EnergyAlramPopupMgr.m_Elec_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_ELEC_ALAM_POPUP_STEP)) {
|
|
|
+ if (EnergyAlramPopupMgr.m_Elec_UseValue >= EnergyAlramPopupMgr.m_Elec_GoalValue) {
|
|
|
+ strOver += "전기 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_ELEC_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ double nNearValue = EnergyAlramPopupMgr.m_Elec_GoalValue * 0.9;
|
|
|
+ if (EnergyAlramPopupMgr.m_Elec_UseValue > nNearValue) {
|
|
|
+ strNear += "전기 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_ELEC_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (EnergyAlramPopupMgr.m_Water_UseValue > 0 && EnergyAlramPopupMgr.m_Water_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_WATER_ALAM_POPUP_STEP)) {
|
|
|
+ if (EnergyAlramPopupMgr.m_Water_UseValue >= EnergyAlramPopupMgr.m_Water_GoalValue) {
|
|
|
+ strOver += "수도 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_WATER_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ double nNearValue = EnergyAlramPopupMgr.m_Water_GoalValue * 0.9;
|
|
|
+ if (EnergyAlramPopupMgr.m_Water_UseValue > nNearValue) {
|
|
|
+ strNear += "수도 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_WATER_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (EnergyAlramPopupMgr.m_Gas_UseValue > 0 && EnergyAlramPopupMgr.m_Gas_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_GAS_ALAM_POPUP_STEP)) {
|
|
|
+ if (EnergyAlramPopupMgr.m_Gas_UseValue >= EnergyAlramPopupMgr.m_Gas_GoalValue) {
|
|
|
+ strOver += "가스 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_GAS_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ double nNearValue = EnergyAlramPopupMgr.m_Gas_GoalValue * 0.9;
|
|
|
+ if (EnergyAlramPopupMgr.m_Gas_UseValue > nNearValue) {
|
|
|
+ strNear += "가스 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_GAS_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (EnergyAlramPopupMgr.m_HotWater_UseValue > 0 && EnergyAlramPopupMgr.m_HotWater_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_HOTWATER_ALAM_POPUP_STEP)) {
|
|
|
+ if (EnergyAlramPopupMgr.m_HotWater_UseValue >= EnergyAlramPopupMgr.m_HotWater_GoalValue) {
|
|
|
+ strOver += "온수 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_HOTWATER_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ double nNearValue = EnergyAlramPopupMgr.m_HotWater_GoalValue * 0.9;
|
|
|
+ if (EnergyAlramPopupMgr.m_HotWater_UseValue > nNearValue) {
|
|
|
+ strNear += "온수 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_HOTWATER_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (EnergyAlramPopupMgr.m_Heating_UseValue > 0 && EnergyAlramPopupMgr.m_Heating_GoalValue > 0 && EnergyAlramPopupMgr.CheckAlramPopupCreate( getContext(), EnergyAlramPopupMgr.DB_HEATING_ALAM_POPUP_STEP)) {
|
|
|
+ if (EnergyAlramPopupMgr.m_Heating_UseValue >= EnergyAlramPopupMgr.m_Heating_GoalValue) {
|
|
|
+ strOver += "난방 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramOverStep(getContext(), EnergyAlramPopupMgr.DB_HEATING_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ double nNearValue = EnergyAlramPopupMgr.m_Heating_GoalValue * 0.9;
|
|
|
+ if (EnergyAlramPopupMgr.m_Heating_UseValue > nNearValue) {
|
|
|
+ strNear += "난방 ";
|
|
|
+ EnergyAlramPopupMgr.setAlramNearStep(getContext(), EnergyAlramPopupMgr.DB_HEATING_ALAM_POPUP_STEP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strNear.length() > 0) EnergyAlramPopupMgr.PopupMsg01 = strNear + "사용량이 목표값에 가까워지고 있습니다.\n확인 하시겠습니까?";
|
|
|
+ else EnergyAlramPopupMgr.PopupMsg01 = "";
|
|
|
+
|
|
|
+ if (strOver.length() > 0) EnergyAlramPopupMgr.PopupMsg02 = strOver + "사용량이 목표값을 초과하였습니다.\n확인 하시겠습니까?";
|
|
|
+ else EnergyAlramPopupMgr.PopupMsg02 = "";
|
|
|
+
|
|
|
+ if (EnergyAlramPopupMgr.PopupMsg01.length() > 0 || EnergyAlramPopupMgr.PopupMsg02.length() > 0) {
|
|
|
+ mIOInterface.ctrlLcdWakeUp();
|
|
|
+ StartPopup(ID.POPUPS.POPUP_ENERGYUSAGEALERT);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] CheckEnergyUsage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //시간 동기화를 위한 getinfo 실행 시간을 구함
|
|
|
+ protected Calendar GetTimeSyncTime()
|
|
|
+ {
|
|
|
+ Calendar retTime = new GregorianCalendar();
|
|
|
+
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ AddressSet addc = SetData.getAddressMGR();
|
|
|
+ SetData.closeDB();
|
|
|
+ try {
|
|
|
+ int dong = Integer.parseInt(addc.Dong);
|
|
|
+ int ho = 101;
|
|
|
+
|
|
|
+ if(addc.UseOrNotRentHouse == true)
|
|
|
+ {
|
|
|
+ ho = addc.Ho_Integer;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ho = Integer.parseInt(addc.Ho);
|
|
|
+ }
|
|
|
+
|
|
|
+ int interval = (dong-(dong/100)*100) * 100 + ho/100;
|
|
|
+ int hour;
|
|
|
+ int min;
|
|
|
+ int sec;
|
|
|
+ if (interval/3600 > 0)
|
|
|
+ {
|
|
|
+ hour = 3+interval/3600;
|
|
|
+ interval=interval%3600;
|
|
|
+ }
|
|
|
+ else hour = 6;
|
|
|
+
|
|
|
+ if (interval/60 > 0)
|
|
|
+ {
|
|
|
+ min = interval/60;
|
|
|
+ sec = interval%60;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ min = 0;
|
|
|
+ sec = interval;
|
|
|
+ }
|
|
|
+ retTime.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
+ retTime.set(Calendar.MINUTE, min);
|
|
|
+ retTime.set(Calendar.SECOND, sec);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ return retTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ //에너지 사용량 확인을 위한 데이터 로딩 시간을 가져옴
|
|
|
+ protected Calendar GetEnergyDataLoadingTime()
|
|
|
+ {
|
|
|
+ Calendar retTime = new GregorianCalendar();
|
|
|
+
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(getApplicationContext());
|
|
|
+ AddressSet addc = SetData.getAddressMGR();
|
|
|
+ SetData.closeDB();
|
|
|
+ try {
|
|
|
+ int dong = Integer.parseInt(addc.Dong);
|
|
|
+ int ho = 201;
|
|
|
+
|
|
|
+ if(addc.UseOrNotRentHouse == true)
|
|
|
+ {
|
|
|
+ ho = addc.Ho_Integer;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ho = Integer.parseInt(addc.Ho);
|
|
|
+ }
|
|
|
+
|
|
|
+ int interval = (dong-(dong/100)*100) * 100 + ho/100;
|
|
|
+ int hour;
|
|
|
+ int min;
|
|
|
+ int sec;
|
|
|
+ if (interval/3600 > 0)
|
|
|
+ {
|
|
|
+ hour = 6+interval/3600;
|
|
|
+ interval=interval%3600;
|
|
|
+ }
|
|
|
+ else hour = 6;
|
|
|
+
|
|
|
+ if (interval/60 > 0)
|
|
|
+ {
|
|
|
+ min = interval/60;
|
|
|
+ sec = interval%60;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ min = 0;
|
|
|
+ sec = interval;
|
|
|
+ }
|
|
|
+ retTime.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
+ retTime.set(Calendar.MINUTE, min);
|
|
|
+ retTime.set(Calendar.SECOND, sec);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ return retTime;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void setNetworkAddr(int secNum, int thirdNum, int forthNum) {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ String IPAddress = String.format("10.%d.%d.%d", secNum, thirdNum, forthNum);
|
|
|
+ String gateWayIPAddress = String.format("10.%d.%d.%d", secNum, Common.DEFAULT_GATEWAY_IP_THIRD, Common.DEFAULT_GATEWAY_IP_FORTH);
|
|
|
+ String MacAddr = String.format("00:0A:%02x:%02x:%02x:00", secNum, thirdNum, forthNum);
|
|
|
+
|
|
|
+ String serverIP = Common.DEFAULT_SERVER_IP;
|
|
|
+ int serverPort = Common.DEFAULT_SERVER_PORT;
|
|
|
+
|
|
|
+ String managePCIP = Common.DEFAULT_MANAGER_PC_IP;
|
|
|
+ int managePCPort = Common.DEFAULT_MANAGER_PC_PORT;
|
|
|
+
|
|
|
+ wallpaddbmgr dbmgr = new wallpaddbmgr(this);
|
|
|
+ AddressSet addc = dbmgr.getAddressMGR();
|
|
|
+ String mDong = String.format("%d%02d", 1, secNum);
|
|
|
+ String mHo = String.format("%d%02d", thirdNum, forthNum);
|
|
|
+ addc.setAddress(mDong, mHo);
|
|
|
+ addc.setIPAddress(IPAddress);
|
|
|
+ dbmgr.closeDB();
|
|
|
+
|
|
|
+ WallpadStatusData wallpadStatusData = new WallpadStatusData(this);
|
|
|
+ wallpadStatusData.SetServerIP(serverIP, serverPort);
|
|
|
+ wallpadStatusData.SetManagePC(managePCIP, managePCPort);
|
|
|
+ wallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ EthernetDevInfo info = new EthernetDevInfo();
|
|
|
+
|
|
|
+ info.setIfName("eth0");
|
|
|
+ info.setConnectMode(EthernetDevInfo.ETH_CONN_MODE_MANUAL);
|
|
|
+ info.setIpAddress(IPAddress);
|
|
|
+ info.setRouteAddr(gateWayIPAddress);
|
|
|
+ info.setDnsAddr(Common.DNS_IP);
|
|
|
+ info.setNetMask(Common.SUBNET_MASK);
|
|
|
+
|
|
|
+ EthernetManager mEthManager = (EthernetManager) getSystemService("ethernet");
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_DISABLED);
|
|
|
+ mEthManager.UpdateEthDevInfo(info);
|
|
|
+ mEthManager.setEthernetState(EthernetManager.ETH_STATE_ENABLING);
|
|
|
+ WallPadInterface wallPadInterface = new WallPadInterface();;
|
|
|
+ wallPadInterface.setMacAddr(MacAddr);
|
|
|
+ Log.d("MANAGERSETTING", " IP : "+IPAddress+" Mac : "+ MacAddr);
|
|
|
+
|
|
|
+ writeMacAddress(MacAddr);
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private final String NETWORK_SETTING = "network_setting";
|
|
|
+ private final String MAC_ADDRESS_FILE_PATH = Common.CONTENTS_ROOT + NETWORK_SETTING + ".inc";
|
|
|
+
|
|
|
+ private boolean writeMacAddress(String MacAddr) {
|
|
|
+ boolean ret = false;
|
|
|
+ String read = null;
|
|
|
+
|
|
|
+ BufferedWriter bufferWriter = null;
|
|
|
+
|
|
|
+ try {
|
|
|
+ FileOutputStream fos = new FileOutputStream(MAC_ADDRESS_FILE_PATH, false);
|
|
|
+ OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
|
|
|
+ bufferWriter = new BufferedWriter(osr, 1024);
|
|
|
+
|
|
|
+ if ((bufferWriter != null) && (MacAddr != null)) {
|
|
|
+ bufferWriter.write(MacAddr, 0, MacAddr.length());
|
|
|
+ bufferWriter.newLine();
|
|
|
+ bufferWriter.flush();
|
|
|
+
|
|
|
+ ret = true;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ try {
|
|
|
+ if (bufferWriter != null) {
|
|
|
+ bufferWriter.close();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Log.d(TAG, "writeMacAddress() path : " + MAC_ADDRESS_FILE_PATH
|
|
|
+ + ", MacAddr : " + MacAddr
|
|
|
+ + ", ret : " + ret
|
|
|
+ );
|
|
|
+
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ private void GetElectricCarInfo() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[GetElectricCarInfo] ===== START =====");
|
|
|
+ int retInt = -1;
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = null;
|
|
|
+ mWallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ retInt = mWallpadDeviceSet.GetDeviceSetted("전기차충전");
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+ Log.d(TAG, "[GetElectricCarInfo] retInt = " + retInt);
|
|
|
+ if (retInt == WallpadDeviceSet.DEV_DATA_ENABLE) {
|
|
|
+ Log.i(TAG, "[GetElectricCarInfo] Electronic car changing enabled!!");
|
|
|
+ GetElectricCarInfo_RandomCheckHandler();
|
|
|
+ }
|
|
|
+ else Log.i(TAG, "[GetElectricCarInfo] Electronic car changing disabled!!");
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] GetElectricCarInfo()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void GetElectricCarInfo_RandomCheckHandler() {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[GetElectricCarInfo_RandomCheckHandler] ===== START =====");
|
|
|
+ int nDelayTime = StringUtil.GetDelayTimeBaseIP(getContext());
|
|
|
+ Log.d(TAG, "[GetElectricCarInfo_RandomCheckHandler] nDelayTime : "+ nDelayTime);
|
|
|
+ if (nDelayTime < 1) {
|
|
|
+ Log.w(TAG, "[GetElectricCarInfo_RandomCheckHandler] DelayTime error!! -> nDelayTime = " + nDelayTime);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ mGetElecricCarRandomCheckHandler.sendEmptyMessageDelayed(0, 1000 * nDelayTime);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] GetElectricCarInfo_RandomCheckHandler()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private Handler mGetElecricCarRandomCheckHandler = new Handler()
|
|
|
+ {
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg)
|
|
|
+ {
|
|
|
+ if (msg.what == 0) {
|
|
|
+ Log.i(TAG, "[GetElectricCarInfo] mGetElecricCarRandomCheckHandler() will be called!!");
|
|
|
+ //얻어오기
|
|
|
+ imapElecCarChargingInfo = new iMAPElecCarChargingInfo(getApplicationContext());
|
|
|
+ LoadElectricCarDataFromServer();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ void LoadElectricCarDataFromServer() {
|
|
|
+ DebugLogOutput("LoadElectricCarDataFromServer");
|
|
|
+ imapElecCarChargingInfo.DoWork();
|
|
|
+ imapElecCarChargingInfo.SetRetCtr(new RetProci() {
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ Log.i(TAG, "[LoadElectricCarDataFromServer] ProcSuccess");
|
|
|
+ try {
|
|
|
+ int SetItemResult = imapElecCarChargingInfo.SetItem("charging_cnt");
|
|
|
+ if(SetItemResult != 1) {
|
|
|
+ Log.w(TAG, "[LoadElectricCarDataFromServer.ProcSuccess()] Error1 - SetItemResult : "+ SetItemResult);
|
|
|
+ nElecVehicleChangingCnt = 0;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String sChargingCount = imapElecCarChargingInfo.GetItemVal(0);
|
|
|
+ int intChargingCount = Integer.parseInt(sChargingCount);
|
|
|
+ if (intChargingCount < 1) {
|
|
|
+ Log.w(TAG, "[LoadElectricCarDataFromServer.ProcSuccess()] Error1 - intChargingCount : "+ intChargingCount);
|
|
|
+ nElecVehicleChangingCnt = 0;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetItemResult = imapElecCarChargingInfo.SetItem("charger_info");
|
|
|
+
|
|
|
+ if (SetItemResult != intChargingCount) {
|
|
|
+ Log.w(TAG, "[LoadElectricCarDataFromServer.ProcSuccess()] Error1 - SetItemResult : "+ SetItemResult);
|
|
|
+ nElecVehicleChangingCnt = 0;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (intChargingCount > 0) {
|
|
|
+ nElecVehicleChangingCnt = intChargingCount;
|
|
|
+
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_GET_ELEC_CHARGE);
|
|
|
+
|
|
|
+ intent.putExtra("sCard_Num", imapElecCarChargingInfo.GetAttributeVal(0, "card_num"));
|
|
|
+ intent.putExtra("sCar_Num", imapElecCarChargingInfo.GetAttributeVal(0, "car_num"));
|
|
|
+ intent.putExtra("sCharger_Num", imapElecCarChargingInfo.GetAttributeVal(0, "charger_num"));
|
|
|
+ intent.putExtra("sCharger_Loc", imapElecCarChargingInfo.GetAttributeVal(0, "charger_loc"));
|
|
|
+ intent.putExtra("sCharging_Status", "charging");
|
|
|
+ intent.putExtra("sCharger_sort", imapElecCarChargingInfo.GetAttributeVal(0, "charger_sort"));
|
|
|
+ intent.putExtra("sCharging_Ratio", imapElecCarChargingInfo.GetAttributeVal(0, "charging_ratio"));
|
|
|
+ intent.putExtra("sStart_Time", imapElecCarChargingInfo.GetAttributeVal(0, "start_time"));
|
|
|
+ intent.putExtra("sRemain_Time", imapElecCarChargingInfo.GetAttributeVal(0, "remain_time"));
|
|
|
+ intent.putExtra("sMessage", imapElecCarChargingInfo.GetAttributeVal(0, "c_msg"));
|
|
|
+
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] LoadElectricCarDataFromServer() -> ProcSuccess");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError()
|
|
|
+ {
|
|
|
+ Log.i(TAG, "[LoadElectricCarDataFromServer] ProcError");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing()
|
|
|
+ {
|
|
|
+ Log.i(TAG, "[LoadElectricCarDataFromServer] ProcDoing");
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 대외향 Call 버튼 점멸 및 On Off 처리
|
|
|
+ */
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ protected Handler mLedFlickerHandler = new Handler()
|
|
|
+ {
|
|
|
+ boolean Flicker = false;
|
|
|
+
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg)
|
|
|
+ {
|
|
|
+ if(msg.what == 0) // 콜 수신시 또는 발신시 ...
|
|
|
+ {
|
|
|
+ // 점멸 시작 CallButton LED On
|
|
|
+ Flicker = true;
|
|
|
+ mLedFlickerHandler.sendEmptyMessageDelayed(1, 500);
|
|
|
+ WallPadInterface wpdifc = new WallPadInterface();
|
|
|
+ wpdifc.callLEDControll(true);
|
|
|
+ }
|
|
|
+ else if(msg.what == 1)
|
|
|
+ {
|
|
|
+
|
|
|
+ mLedFlickerHandler.sendEmptyMessageDelayed(0, 500);
|
|
|
+ WallPadInterface wpdifc = new WallPadInterface();
|
|
|
+ wpdifc.callLEDControll(false);
|
|
|
+
|
|
|
+ }
|
|
|
+ else if(msg.what == 2) // 통화중
|
|
|
+ {
|
|
|
+ Flicker = false;
|
|
|
+ }
|
|
|
+ else if(msg.what == 4) // 통화종료
|
|
|
+ {
|
|
|
+ Flicker = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void GetEnergyServerInfo()
|
|
|
+ {
|
|
|
+ WallpadDeviceSet devSet = new WallpadDeviceSet(getContext());
|
|
|
+ String[] MetringDB = devSet.GetSettingData("에너지관리서버");
|
|
|
+ devSet.closeDB();
|
|
|
+
|
|
|
+ if (MetringDB != null)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ String devInfo = MetringDB[1];
|
|
|
+
|
|
|
+ devInfo = devInfo.replace('(', '_');
|
|
|
+ devInfo = devInfo.replace(':', '_');
|
|
|
+ devInfo = devInfo.replace(')', '_');
|
|
|
+
|
|
|
+ String[] MetringInfo = devInfo.split("_");
|
|
|
+
|
|
|
+ // MetringInfo[1] -> 회로수
|
|
|
+ // MetringInfo[3] -> 에너지관리서버 사용여부 사용함 or 사용안함
|
|
|
+ // MetringInfo[4] -> IP
|
|
|
+ // MetringInfo[5] -> IP정보
|
|
|
+ // MetringInfo[6] -> 검침일사용자설정
|
|
|
+ // MetringInfo[7] -> 사용함 또는 사용안함
|
|
|
+
|
|
|
+ if(MetringInfo[3].equals("사용함") == true)
|
|
|
+ {
|
|
|
+ bUseofNot_EnergyServer = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[bUseofNot_EnergyServer] bUseofNot_EnergyServer :"+bUseofNot_EnergyServer);
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean GetEnergyAlarm()
|
|
|
+ {
|
|
|
+ boolean ret = false;
|
|
|
+
|
|
|
+ WallpadStatusData DBMGR = null;
|
|
|
+ DBMGR = new WallpadStatusData(getContext());
|
|
|
+
|
|
|
+ if( DBMGR != null )
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ ret = DBMGR.GetRemoteMetering_Alarm();
|
|
|
+ }
|
|
|
+ catch(Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ ret = false;
|
|
|
+ DBMGR.insertWallPADDB(WallpadStatusData.REMOTE_METERING_ALARM_USE, WallpadStatusData.REMOTE_METERING_ALARM_USE_DEFAULT);
|
|
|
+ }
|
|
|
+
|
|
|
+ DBMGR.closeDB();
|
|
|
+ }
|
|
|
+
|
|
|
+ bUseofNot_EnergyAlarm = ret;
|
|
|
+ Log.d(TAG, "[bUseofNot_EnergyAlarm] bUseofNot_EnergyAlarm :"+bUseofNot_EnergyAlarm);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description
|
|
|
+ * 에너지 사용량 알림 시간 얻어오기
|
|
|
+ * @return int Hour시간 값
|
|
|
+ */
|
|
|
+ public int GetEnergyAlarmTime()
|
|
|
+ {
|
|
|
+ int ret = 12;
|
|
|
+
|
|
|
+ WallpadStatusData DBMGR = null;
|
|
|
+ DBMGR = new WallpadStatusData(getContext());
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ ret = DBMGR.GetRemoteMetering_AlarmTime();
|
|
|
+ }
|
|
|
+ catch(Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ DBMGR.closeDB();
|
|
|
+
|
|
|
+ Log.d(TAG, "[GetEnergyAlarmTime] GetEnergyAlarmTime :"+ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void ClearEnergyUsage()
|
|
|
+ {
|
|
|
+ ResultGetIntent = false;
|
|
|
+
|
|
|
+ elect_target = "Error";
|
|
|
+ elect_used = "Error";
|
|
|
+ elect_info = "Error";
|
|
|
+
|
|
|
+ water_target = "Error";
|
|
|
+ water_used = "Error";
|
|
|
+ water_info = "Error";
|
|
|
+
|
|
|
+ gas_target = "Error";
|
|
|
+ gas_used = "Error";
|
|
|
+ gas_info = "Error";
|
|
|
+
|
|
|
+ hotwater_target = "Error";
|
|
|
+ hotwater_used = "Error";
|
|
|
+ hotwater_info = "Error";
|
|
|
+
|
|
|
+ heating_target = "Error";
|
|
|
+ heating_used = "Error";
|
|
|
+ heating_info = "Error";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 신규 통화어플 실행을 위한 코드 (JEFF, 2016.05.23)
|
|
|
+ // 통화주체를 다루는 enum
|
|
|
+ public enum CALLOWNER {
|
|
|
+ NONE,
|
|
|
+ WALLPAD,
|
|
|
+ MOBILE,
|
|
|
+ SUB_WALLPAD,
|
|
|
+ KITCHEN_TV,
|
|
|
+ BATH_PHONE,
|
|
|
+ BATH_TV,
|
|
|
+ UNIVERSAL_DEVICE,
|
|
|
+ ERROR;
|
|
|
+ }
|
|
|
+ public enum CALLEVENTTYPE {
|
|
|
+ RECEIVE_CALL, // 호출 수신 (호출 수신)
|
|
|
+ TRYING_CALL, // 호출 시도중 (호출 발신)
|
|
|
+ RECEIVE_CALL_2ND, // 멀티콜 수신 (호출 수신)
|
|
|
+ RECEIVE_CALL_ACK, // 호출응답 수신 (호출 발신)
|
|
|
+ REQUEST_FRONT_MONITORING, // 호출응답 수신 (호출 발신)
|
|
|
+ CONNECT_CALL, // 통화 시작
|
|
|
+ TERMINATE_CALL, // 통화 종료
|
|
|
+ CANCEL_CALL, // 호출 취소
|
|
|
+ CANCEL_CALL_2ND, // 멀티콜 호출 취소
|
|
|
+ REJECT_CALL, // 호출수신 거절
|
|
|
+ REJECT_BUSY_CALL, // 통화중 호출수신 거절
|
|
|
+ FORWARD_CALL, // 착신전환 설정
|
|
|
+ CALLERID, // Caller ID_OLD
|
|
|
+ TIMEOUT_1STCALL, // 1st Call Timeout
|
|
|
+ TIMEOUT_2NDCALL, // 2nd Call Timeout
|
|
|
+ TIMEOUT_3RDCALL, // 3rd Call Timeout
|
|
|
+ MOIP_VIDEO_SET, // MoIP 영상통화 설정
|
|
|
+ DOOR_OPEN, // 문열림 설정
|
|
|
+ DETECT_STRANGER, // 거동수상자 발생
|
|
|
+ NONE;
|
|
|
+ }
|
|
|
+ public enum CALLTYPE {
|
|
|
+ NONE,
|
|
|
+ FRONT,
|
|
|
+ RESIDENCE,
|
|
|
+ LOBBY,
|
|
|
+ GUARD,
|
|
|
+ PSTN,
|
|
|
+ IHUB,
|
|
|
+ HISTORY_CALL,
|
|
|
+ HISTORY_VISITORPIC,
|
|
|
+ FRONT_RECORD, // 현관_영상녹화
|
|
|
+ FRONT_TAKEPIC, // 현관_사진촬영
|
|
|
+ ERROR,
|
|
|
+ }
|
|
|
+ public static class CALLTRIGGER {
|
|
|
+ public static String CALLOWNER = "CALLOWNER";
|
|
|
+ public static String CALLEVENTTYPE = "CALLEVENTTYPE";
|
|
|
+ public static String CALLTYPE = "CALLTYPE";
|
|
|
+ public enum SOURCE {
|
|
|
+ USER,
|
|
|
+ CALL_RECEIVE,
|
|
|
+ SUBPHONE
|
|
|
+ }
|
|
|
+ public enum TYPE {
|
|
|
+ MENU,
|
|
|
+ FRONT,
|
|
|
+ LOBBY,
|
|
|
+ GUARD,
|
|
|
+ RESIDENCE,
|
|
|
+ PSTN
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String strWallPadCallPakageName = "kr.co.icontrols.wallpadcall";
|
|
|
+
|
|
|
+ public void runWallPadCallAPKByUX(int nScreen) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[runWallPadCallAPKByUX] nScreen [" + nScreen + "]");
|
|
|
+
|
|
|
+ CALLOWNER eCallOwner = CALLOWNER.NONE;
|
|
|
+ CALLEVENTTYPE eEventType = CALLEVENTTYPE.NONE;
|
|
|
+ CALLTYPE eCallType = CALLTYPE.GUARD;
|
|
|
+
|
|
|
+ if (nScreen == ID.LINKEDSCREEN.SubCall.Door) {
|
|
|
+ if (getIsSubWallpad()) eCallOwner = CALLOWNER.SUB_WALLPAD;
|
|
|
+ else eCallOwner = CALLOWNER.WALLPAD;
|
|
|
+ eEventType = CALLEVENTTYPE.REQUEST_FRONT_MONITORING;
|
|
|
+ eCallType = CALLTYPE.FRONT;
|
|
|
+ }
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_Record) {
|
|
|
+ eCallType = CALLTYPE.FRONT;
|
|
|
+ eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
+ }
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_TakePic) {
|
|
|
+ eCallType = CALLTYPE.FRONT;
|
|
|
+ eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
+ }
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Lobby) eCallType = CALLTYPE.LOBBY;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Guard) eCallType = CALLTYPE.GUARD;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Neighboor) eCallType = CALLTYPE.RESIDENCE;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Pstn) eCallType = CALLTYPE.PSTN;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.CallList) eCallType = CALLTYPE.HISTORY_CALL;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Visitor) eCallType = CALLTYPE.HISTORY_VISITORPIC;
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runWallPadCallAPKByUX] NOT Supported nScreen!! [" + nScreen + "]");
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[runWallPadCallAPKByUX] eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
|
|
|
+
|
|
|
+ if (getIsSubWallpad()) {
|
|
|
+ // 서브월패드는 국선 기능을 제공하지 않는다.
|
|
|
+ if (eCallType != CALLTYPE.PSTN) runCallMainActivity(eCallOwner, eEventType, eCallType);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ runCallMainActivity(eCallOwner, eEventType, eCallType);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runWallPadCallAPKByUX(int nScreen)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runWallPadCallAPKByUX(int nScreen, int nEmerState) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[runWallPadCallAPKByUX] nScreen [" + nScreen + "], nEmerState [" + nEmerState + "]");
|
|
|
+
|
|
|
+ CALLOWNER eCallOwner = CALLOWNER.NONE;
|
|
|
+ CALLEVENTTYPE eEventType = CALLEVENTTYPE.NONE;
|
|
|
+ CALLTYPE eCallType = CALLTYPE.GUARD;
|
|
|
+
|
|
|
+ if (nScreen == ID.LINKEDSCREEN.SubCall.Door) {
|
|
|
+ if (getIsSubWallpad()) eCallOwner = CALLOWNER.SUB_WALLPAD;
|
|
|
+ else eCallOwner = CALLOWNER.WALLPAD;
|
|
|
+ eEventType = CALLEVENTTYPE.REQUEST_FRONT_MONITORING;
|
|
|
+ eCallType = CALLTYPE.FRONT;
|
|
|
+ }
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_Record) {
|
|
|
+ eCallType = CALLTYPE.FRONT;
|
|
|
+ eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
+ }
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Door_TakePic) {
|
|
|
+ eCallType = CALLTYPE.FRONT;
|
|
|
+ eEventType = CALLEVENTTYPE.DETECT_STRANGER;
|
|
|
+ }
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Lobby) eCallType = CALLTYPE.LOBBY;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Guard) eCallType = CALLTYPE.GUARD;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Neighboor) eCallType = CALLTYPE.RESIDENCE;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Pstn) eCallType = CALLTYPE.PSTN;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.CallList) eCallType = CALLTYPE.HISTORY_CALL;
|
|
|
+ else if (nScreen == ID.LINKEDSCREEN.SubCall.Visitor) eCallType = CALLTYPE.HISTORY_VISITORPIC;
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runWallPadCallAPKByUX] NOT Supported nScreen!! [" + nScreen + "]");
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[runWallPadCallAPKByUX] eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
|
|
|
+
|
|
|
+ if (getIsSubWallpad()) {
|
|
|
+ // 서브월패드는 국선 기능을 제공하지 않는다.
|
|
|
+ if (eCallType != CALLTYPE.PSTN) runCallMainActivity(eCallOwner, eEventType, eCallType, nEmerState);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ runCallMainActivity(eCallOwner, eEventType, eCallType, nEmerState);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runWallPadCallAPKByUX(int nScreen, int nEmerState)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[runCallMainActivity] getTopActivity()[" + getTopActivity() + "], eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
|
|
|
+ //if (!Common.bWallPadCallLive) {
|
|
|
+ if (!getTopActivity().equals(strWallPadCallPakageName)) {
|
|
|
+ // 통화어플을 실행시킨다.
|
|
|
+ sendLCDBacklightStatus(true);
|
|
|
+
|
|
|
+ ComponentName mComponentName = new ComponentName("kr.co.icontrols.wallpadcall", "kr.co.icontrols.wallpadcall.MainActivity");
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
+// mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ mIntent.putExtra(CALLTRIGGER.CALLOWNER, eCallOwner.toString());
|
|
|
+ mIntent.putExtra(CALLTRIGGER.CALLEVENTTYPE, eEventType.toString());
|
|
|
+ mIntent.putExtra(CALLTRIGGER.CALLTYPE, eCallType.toString());
|
|
|
+ mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
+ mIntent.setComponent(mComponentName);
|
|
|
+ startActivity(mIntent);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runCallMainActivity] WallPadCall is already running!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runCallMainActivity()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Edited by jeff (2020.06.22)
|
|
|
+ * LCD 잔상 현장 복구/보호를 위해 실행되고 있는 LCD Keeper를 종료하기 위해, 통화 App이 실행되면서
|
|
|
+ * backlight를 On하기 전에 이를 알리는 BR를 수신하여 LCD Keeper를 종료한다.
|
|
|
+ * @param bOn
|
|
|
+ */
|
|
|
+ private void sendLCDBacklightStatus(boolean bOn) {
|
|
|
+ try {
|
|
|
+ Log.d(TAG,"[sendLCDBacklightStatus] bOn [" + bOn + "]");
|
|
|
+ Intent mIntent = new Intent();
|
|
|
+ if (bOn) mIntent.setAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_ON);
|
|
|
+ else mIntent.setAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_OFF);
|
|
|
+ getApplicationContext().sendBroadcast(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendLCDBacklightStatus(boolean bOn)");
|
|
|
+ e.printStackTrace() ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType, int nEmerState) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[runCallMainActivity] getTopActivity() [" + getTopActivity() + "], eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "], nEmerState [" + nEmerState + "]");
|
|
|
+ //if (!Common.bWallPadCallLive) {
|
|
|
+ if (!getTopActivity().equals(strWallPadCallPakageName)) {
|
|
|
+ // 통화어플을 실행시킨다.
|
|
|
+ sendLCDBacklightStatus(true);
|
|
|
+
|
|
|
+ if (eEventType == CALLEVENTTYPE.DETECT_STRANGER) {
|
|
|
+ if (nEmerState >= 0) {
|
|
|
+ if (nEmerState != WallpadStatusData.GUARD_OUT)
|
|
|
+ Common.SendAppFinishReqBR(getApplicationContext());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ComponentName mComponentName = new ComponentName("kr.co.icontrols.wallpadcall", "kr.co.icontrols.wallpadcall.MainActivity");
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
+// mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
|
+ mIntent.putExtra(CALLTRIGGER.CALLOWNER, eCallOwner.toString());
|
|
|
+ mIntent.putExtra(CALLTRIGGER.CALLEVENTTYPE, eEventType.toString());
|
|
|
+ mIntent.putExtra(CALLTRIGGER.CALLTYPE, eCallType.toString());
|
|
|
+ mIntent.putExtra("EMERGENCY_STATE", nEmerState);
|
|
|
+ if (nEmerState != WallpadStatusData.GUARD_OUT) Common.SendAppFinishReqBR(getApplicationContext());
|
|
|
+ mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
+ mIntent.setComponent(mComponentName);
|
|
|
+ startActivity(mIntent);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runCallMainActivity] WallPadCall is already running!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType, int nEmerState)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getTopActivity() {
|
|
|
+ try {
|
|
|
+ ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
|
|
|
+ List<ActivityManager.RunningTaskInfo> mTaskInfo = mActivityManager.getRunningTasks(1);
|
|
|
+ Log.d(TAG,"[isMainActivityTop] getClassName = " + mTaskInfo.get(0).topActivity.getClassName());
|
|
|
+ ComponentName mComponentName = mTaskInfo.get(0).topActivity;
|
|
|
+ Log.d(TAG,"[isMainActivityTop] getPackageName = " + mComponentName.getPackageName());
|
|
|
+ return mComponentName.getPackageName();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getTopActivity()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 월패드에 설치된 APP들의 패키지 명 및 버전을 저장하는 클래스
|
|
|
+ * **/
|
|
|
+ class PackageVersionInfo {
|
|
|
+ protected String strPackageName;
|
|
|
+ protected String strPackageVersion;
|
|
|
+
|
|
|
+ public PackageVersionInfo(String strName, String strVersion) {
|
|
|
+ strPackageName = strName;
|
|
|
+ strPackageVersion = strVersion;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPackageName() {
|
|
|
+ return strPackageName;
|
|
|
+ }
|
|
|
+ public String getPackageVersion() {
|
|
|
+ return strPackageVersion;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 통화 타임아웃 DB정보 초기화 (무조건 사용함으로 변경)
|
|
|
+ * **/
|
|
|
+ public void setCallAppTimeoutAsDefault() {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getContext());
|
|
|
+ try {
|
|
|
+ mWallpadDeviceSet.Set_CallAppCallTimeout(true);
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] setCallAppTimeoutAsDefault()");
|
|
|
+ e.printStackTrace();
|
|
|
+ if (mWallpadDeviceSet != null) mWallpadDeviceSet.closeDB();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 동호 설정 화면 나오게 처리
|
|
|
+ * **/
|
|
|
+ private void startManagerSettingSetAddress() {
|
|
|
+ try {
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ MAINStatus = MAIN_WAIT_SETIP;
|
|
|
+ mIntent.setComponent(new ComponentName("com.artncore.managersetting", "com.artncore.managersetting.ui.activities.SetAddress"));
|
|
|
+ mIntent.putExtra("KIND", "SOLO");
|
|
|
+ startActivity(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] startManagerSettingSetAddress()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private Handler mGetCallHistoryCheckHandler = new Handler() {
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ if (msg.what == 0) {
|
|
|
+// CheckCallData_CalledCountAndVisitorCount();
|
|
|
+ checkEventNotifications();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 음력 데이터를 raw resource에서 wallpaddata폴더 밑으로 복사한다.
|
|
|
+ * **/
|
|
|
+ private void copyDataBase(String OutputDBPath) throws IOException {
|
|
|
+ // Open your local db as the input stream
|
|
|
+ //InputStream myInput = this.getAssets().open("luna_db.db");
|
|
|
+ InputStream myInput = getResources().openRawResource(R.raw.luna_db);
|
|
|
+ // Path to the just created empty db
|
|
|
+ String outFileName = OutputDBPath;
|
|
|
+
|
|
|
+ // Open the empty db as the output stream
|
|
|
+ OutputStream myOutput = new FileOutputStream(outFileName);
|
|
|
+
|
|
|
+ // transfer bytes from the inputfile to the outputfile
|
|
|
+ byte[] buffer = new byte[1024];
|
|
|
+ int length;
|
|
|
+ while ((length = myInput.read(buffer)) > 0)
|
|
|
+ {
|
|
|
+ myOutput.write(buffer, 0, length);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Close the streams
|
|
|
+ myOutput.flush();
|
|
|
+ myOutput.close();
|
|
|
+ myInput.close();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ protected Handler mLCD_SleepHandler = new Handler()
|
|
|
+ {
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg)
|
|
|
+ {
|
|
|
+ if (msg.what == 0) {
|
|
|
+ try {
|
|
|
+ if (m_ModelHouseSleepModeRelease == true) {
|
|
|
+ if (Version.getPlatformType() == Version.PLATFORM_TYPE.A40i) {
|
|
|
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
|
+ }
|
|
|
+ Log.i(TAG, "[SAMPLE SLEEP MODE] Never Sleep Run ~~~");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ public void runIcon(int nIconID) {
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[runIcon] nIconID [" + nIconID + "]");
|
|
|
+
|
|
|
+ if (nIconID == ID.ICONS.MENUS.MAIN_ELEVATOR.getID()) {
|
|
|
+ // DB를 체크해서 층표시이면 팝업을 띄우고 아니면 바로 호출하도록 한다
|
|
|
+ String strElevShortEnabled = Common.getSubDevListItem(this.getContext() ,Common.SETTING_ITEM_SUB_DEVICE_ELEVATOR);
|
|
|
+ Log.d(TAG, "[runIcon] strElevShortEnabled [" + strElevShortEnabled + "]");
|
|
|
+
|
|
|
+ if (strElevShortEnabled.contains("사용함") && strElevShortEnabled.contains("기본")) {
|
|
|
+ Sound().Play(SND.effect.TOUCH_LATCHED);
|
|
|
+ Intent intent = new Intent(Common.BR_MAIN_NOTI.ACNAME_MAIN_NOTI, null);
|
|
|
+ intent.putExtra(Common.BR_MAIN_NOTI.KIND, Common.BR_MAIN_NOTI.CALL_ELEVATOR_DOWN);
|
|
|
+ getContext().sendBroadcast(intent);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ ((MainActivity)(getContext())).StartPopup(ID_OLD.SCREENS.ElevatorPopupScreen);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.MAIN_LIGHTS_OUT.getID()) {
|
|
|
+ ((MainActivity)(getContext())).StartPopup(ID.POPUPS.POPUP_COLLECTIVELIGHTCTRL);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.MAIN_CALRENDAR.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.TimeSetting);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.MAIN_WEATHER.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Weather);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_FRONT.getID()) {
|
|
|
+// Common.command_iGW200( this.getContext(), Common.IGW200_DOOR_MONITERING );
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Door);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_LOBBY.getID()) {
|
|
|
+ // 로비는 수신시에만 출력되는 화면이므로 해당코드 없음
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_NEIGHBOR.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Neighboor);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_GUARD.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Guard);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_PHONE.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Pstn);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_CALLHISTORY.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.CallList);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.TALK_VISITORPIC.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(ID.LINKEDSCREEN.SubCall.Visitor);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_LIGHT.getID()) {
|
|
|
+ // 모델별 설정에 따라 구분하여 호출하는 기능 추가해야함
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDC_EachLamp);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_HEATING.getID()) {
|
|
|
+ int nHeatingVersion = mWallPadAPI.GetHeatingKind();
|
|
|
+ if (nHeatingVersion == 1) m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Heating_V1);
|
|
|
+ else if (nHeatingVersion == 2) m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Heating_V2);
|
|
|
+ else m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Heating_V1); // 기본설정을 난방V1로 한다.
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_GAS.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Gas);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_DOORLOCK.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.DoorLockWL);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_VENT.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.ChangAir_Normal);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_OUTLET.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Concent);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_LIVINGLIGHT.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDC_LivingLamp);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_AIRQUALTY.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.AirQualty);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_ELECCOOKTOP.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.ElecCooktop);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_COOKTOPOUTLET.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.CooktopOutlet);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.CTRL_SYSTEMAIRCON.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.SystemAircon);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_NOTICE.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Notice);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_WEATHER.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Weather);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_MEMO.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Memo);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_E_FRAME.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.AutoPicture);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_SCHEDULE.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Schedule);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_CCTV.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Cctv);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_PARKING.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.Parking);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_PARKINGLIST.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.ParkingList);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_ELECTRICCAR.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.ElecCar);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_INTERLAYERNOISE.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.InterlayerNoiseHistory);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_VISITEDVEHICLEREGI.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.VisitedVehicleRegi);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_BANDLOCATION.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.BandLocation);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ADD_GUARDINGSTREETLAMP.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(ID.LINKEDSCREEN.SubMenuAddService.GuardingStreetLamp);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SECURITY_SETARMED.getID()) {
|
|
|
+ runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.SecurityMain);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SECURITY_DEVICELINK.getID()) {
|
|
|
+ runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.LinkDeviceSet);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SECURITY_DEVICELINKSLEEP.getID()) {
|
|
|
+ runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.lnkBedDeviceSet);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SECURITY_ACCESSHISTORY.getID()) {
|
|
|
+ runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.AccessHistoryDoor);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SECURITY_VISITORVIDEO.getID()) {
|
|
|
+ runSecurityAPK(ID.LINKEDSCREEN.SubMenuSecurity.VisitorVideo);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_SMARTPANEL.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.SmartPanel);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_SMARTLIGHT.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.SmartLight);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_SMARTOUTLET.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.SmartOutlet);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_ENERGYMETER.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.IEnergy);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_REMOTEMETER.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.RemoteMeter);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_ENERGYCONSUMPTION.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.EnergyMgr);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.ENERGY_ENERGYCOSTTABLE.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartEnergyAPK(ID.LINKEDSCREEN.SubMenuEnergy.CostTable);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_CONFIG.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.Configuration);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_CLREANSCREEN.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.CleanLcd);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_PWCHANGE.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.PassWordChange);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_MORNINGCALL.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.MoningCall);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_SMARTKEY.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.SmartKey);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_SMARTBAND.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.SmartBand);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_ACCESSCARD.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.RfCard);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_CALENDAR.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.TimeSetting);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_REMOTECALLUSER.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.RemoteCallUser);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_REMOTECTRL.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.MobileDeviceReg);
|
|
|
+ }
|
|
|
+ else if (nIconID == ID.ICONS.MENUS.SETTING_OCCUPANCYSENSOR.getID()) {
|
|
|
+ m_CallSubMenuScreen.callStartConfigAPK(ID.LINKEDSCREEN.SubMenuConfig.OccupancySensorConfig);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runShortcut] nIconID is not supported!! [" + nIconID + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runShortcut(int nIconID)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runSecurityAPK(int nScreenID) {
|
|
|
+ try {
|
|
|
+ WallpadStatusData wdb = new WallpadStatusData(this.getContext());
|
|
|
+ int nSecurityMode = wdb.GetAlarmStatus();
|
|
|
+ wdb.closeDB();
|
|
|
+
|
|
|
+ Log.w(TAG, "[runSecurityAPK] nSecurityMode [" + nSecurityMode + "]");
|
|
|
+
|
|
|
+ if (nSecurityMode == WallpadStatusData.GUARD_IN) {
|
|
|
+ // 팝업 띄워서 재택모드 해제 유도
|
|
|
+ StartPopup(ID.POPUPS.POPUP_RELEASEINMODE);
|
|
|
+// ((MainActivity)(getContext())).StartPopup(ID_OLD.SCREENS.SecurityReleasePopupScreen);
|
|
|
+ }
|
|
|
+ else if (nSecurityMode == WallpadStatusData.OUT_MODE) {
|
|
|
+ // 팝업 띄워서 외출모드 해제 유도
|
|
|
+ StartPopup(ID.POPUPS.POPUP_RELEASEOUTMODE);
|
|
|
+// ((MainActivity)(getContext())).StartPopup(ID_OLD.SCREENS.OutModeReleasePopupScreen);
|
|
|
+ }
|
|
|
+ else if (nSecurityMode == WallpadStatusData.ALARM_STOP) {
|
|
|
+ // 알람 화면을 띄우도록 한다.
|
|
|
+ runEmergencyAPK(this, getAlarmType(), 2 , "모름");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_CallSubMenuScreen.callStartSecurityAPK(nScreenID);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runSecurityAPK(int nScreenID)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runEmergencyAPK(Context context, int nScreenID, int startOption, String detailInfo) {
|
|
|
+ try {
|
|
|
+ // DB 체크 해서 띄우 도록 한다.
|
|
|
+ int [] m_EmerMenuList = new int[4];
|
|
|
+ m_EmerMenuList[0] = ID.LINKEDSCREEN.SubEmergency.EMER_ALARM;
|
|
|
+ m_EmerMenuList[1] = ID.LINKEDSCREEN.SubEmergency.FIRE_ALARM;
|
|
|
+ m_EmerMenuList[2] = ID.LINKEDSCREEN.SubEmergency.BREAKIN_ALARM;
|
|
|
+ m_EmerMenuList[3] = ID.LINKEDSCREEN.SubEmergency.LADDER_ALARM;
|
|
|
+
|
|
|
+ Intent intent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ intent.putExtra(Common.MENU_ID_LIST, m_EmerMenuList); // KEY : MENU_ID_LIST
|
|
|
+ intent.putExtra(Common.MENU_START_ID, nScreenID); // KEY : MENU_START_ID
|
|
|
+ intent.putExtra(Common.MENU_START_OPTION, startOption); // KEY : MENU_START_OPTION
|
|
|
+ intent.putExtra(Common.MENU_DETAIL_INFO, detailInfo);
|
|
|
+ intent.setComponent(new ComponentName(Common.EMER_ALARM_APK, Common.EMER_ALARM_APK + Common.MAIN_ACTIVITY ));
|
|
|
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
+ context.startActivity(intent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runEmergencyAPK(Context context, int nScreenID, int startOption, String detailInfo)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getAlarmType() {
|
|
|
+ WallpadStatusData SetData = new WallpadStatusData(this.getContext());
|
|
|
+ int alarmtype = SetData.GetAlarmType();
|
|
|
+ SetData.closeDB();
|
|
|
+ int Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.EMER_ALARM;
|
|
|
+
|
|
|
+ switch (alarmtype) {
|
|
|
+ case WallpadStatusData.ALARM_ALERT:
|
|
|
+ Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.FIRE_ALARM;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case WallpadStatusData.ALARM_EMM:
|
|
|
+ Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.EMER_ALARM;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case WallpadStatusData.ALARM_EVAC:
|
|
|
+ Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.LADDER_ALARM;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case WallpadStatusData.ALARM_INVADE:
|
|
|
+ Menu_Start_Option = ID.LINKEDSCREEN.SubEmergency.BREAKIN_ALARM;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return Menu_Start_Option;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runGoogleLauncher() {
|
|
|
+ try {
|
|
|
+ ComponentName mComponentName = new ComponentName("com.android.launcher3", "com.android.launcher3.Launcher");
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
+ mIntent.setComponent(mComponentName);
|
|
|
+ startActivity(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runGoogleLauncher()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setCallAppRunning(boolean bRunning) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[setCallAppRunning] bRunning [" + bRunning + "]");
|
|
|
+ WallpadStatusData DBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
+ DBMGR.SetCallAPKStatus(bRunning);
|
|
|
+ DBMGR.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] setCallAppRunning(boolean bRunning)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerMainActivityBR() {
|
|
|
+ try {
|
|
|
+ IntentFilter filter = new IntentFilter();
|
|
|
+ filter.addAction(Common.BR_REQUEST_APK_RUN);
|
|
|
+ filter.addAction(ACTION_TIME_TICK);
|
|
|
+ filter.addAction(Common.BR_PLAY_SOUND);
|
|
|
+ filter.addAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_ON);
|
|
|
+ filter.addAction(define.NOTIFY_ACNAME_LCD_BACKLIGHT_OFF);
|
|
|
+ mContext.registerReceiver(MainActivityBroadcastReceiver, filter);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerMainActivityBR()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String strAPKType = "APKType";
|
|
|
+ String strMenuType = "MenuType";
|
|
|
+ String strSoundID = "SoundID";
|
|
|
+ BroadcastReceiver MainActivityBroadcastReceiver = new BroadcastReceiver() {
|
|
|
+ @Override
|
|
|
+ public void onReceive(Context context, Intent intent) {
|
|
|
+ try {
|
|
|
+ if (((MainActivity)(getContext())).getMainSubScreenLoadingComplite() == false)
|
|
|
+ return;
|
|
|
+
|
|
|
+ String strActionName = intent.getAction();
|
|
|
+
|
|
|
+ Log.d(TAG,"[MainActivityBroadcastReceiver] strActionName [" + strActionName + "]");
|
|
|
+ if (strActionName.equals(Common.BR_REQUEST_APK_RUN)) {
|
|
|
+ Log.d(TAG, "[MainActivityBroadcastReceiver] (BR.Action) BR_REQUEST_APK_RUN");
|
|
|
+ int nAPKType = intent.getIntExtra(strAPKType,0);
|
|
|
+ int nMenuType = intent.getIntExtra(strMenuType,0);
|
|
|
+ int nCardNum = intent.getIntExtra(Common.BR_MAIN_NOTI.CARD_NUM, 0);
|
|
|
+ Log.d(TAG, "[MainActivityBroadcastReceiver] nAPKType [" + nAPKType + "], nMenuType [" + nMenuType + "], nCardNum [" + nCardNum + "]");
|
|
|
+ if (nAPKType == ID.LINKEDSCREEN.SubCall.BASE) {
|
|
|
+ m_CallSubMenuScreen.callStartCallAPK(nMenuType);
|
|
|
+ }
|
|
|
+ else if (nAPKType == ID.LINKEDSCREEN.SubMenuAddService.BASE) {
|
|
|
+ m_CallSubMenuScreen.callStartAddServiceAPK(nMenuType, nCardNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (strActionName.equals(ACTION_TIME_TICK)) {
|
|
|
+// checkTimeTasks();
|
|
|
+ if (bLCDKeeperUsage) ctrlLCDKeeper();
|
|
|
+ }
|
|
|
+ else if (strActionName.equals(Common.BR_PLAY_SOUND)) {
|
|
|
+ int nSoundID = intent.getIntExtra(strSoundID,0);
|
|
|
+ Sound().Play(nSoundID);
|
|
|
+ }
|
|
|
+ else if (strActionName.equals(define.NOTIFY_ACNAME_LCD_BACKLIGHT_ON)) {
|
|
|
+ Log.d(TAG, "[MainActivityBroadcastReceiver] (BR.Action) NOTIFY_ACNAME_LCD_BACKLIGHT_ON: bLCDKeeperUsage [" + bLCDKeeperUsage + "], nLCDKeeperType [" + getLCDKeeperType(nLCDKeeperType) + "]");
|
|
|
+ if (bLCDKeeperUsage) {
|
|
|
+ bLCDBacklightPower = true;
|
|
|
+ ctrlLCDKeeper();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (strActionName.equals(define.NOTIFY_ACNAME_LCD_BACKLIGHT_OFF)) {
|
|
|
+ Log.d(TAG, "[MainActivityBroadcastReceiver] (BR.Action) NOTIFY_ACNAME_LCD_BACKLIGHT_OFF: bLCDKeeperUsage [" + bLCDKeeperUsage + "], nLCDKeeperType [" + getLCDKeeperType(nLCDKeeperType) + "]");
|
|
|
+ if (bLCDKeeperUsage) {
|
|
|
+ bLCDBacklightPower = false;
|
|
|
+ ctrlLCDKeeper();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG,"[MainActivityBroadcastReceiver] Not supported strActionName [" + strActionName + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] MainActivityBroadcastReceiver()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ public Common.GUI_TYPE checkGUIType(Context context) {
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(context);
|
|
|
+ String strGUIType = mWallpadDeviceSet.GetMainGUISelect();
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+ if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_DEFAULT)) return Common.GUI_TYPE.STANDARD;
|
|
|
+ else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_METRO)) return Common.GUI_TYPE.METRO;
|
|
|
+ else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HYOSUNG_CTR_ON)) return Common.GUI_TYPE.HYOSUNG_CTRL_ON;
|
|
|
+ else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HYOSUNG_CTR_OFF)) return Common.GUI_TYPE.HYOSUNG_CTRL_OFF;
|
|
|
+ else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HIMCHAN)) return Common.GUI_TYPE.HIMCHAN;
|
|
|
+ else return Common.GUI_TYPE.STANDARD;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkGUIType(Context context)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return Common.GUI_TYPE.STANDARD;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void finishActivity() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[finishActivity]");
|
|
|
+ super.finish();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] finishActivity()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // MainActivity Handler
|
|
|
+ public final class HANDLERMSG {
|
|
|
+ public final static int CHECK_FLIPPER_MAINSCREEN_ID = 100;
|
|
|
+ public final static int CHECK_WALLPAD_CAMERA_INIT = 200;
|
|
|
+ public final static int CHECK_WALLPAD_CAMERA_REMOVE = 300;
|
|
|
+ public final static int CHECK_WALLPAD_CAMERA_RESET = 400;
|
|
|
+ public final static int CHECK_WALLPAD_CAMERA_CHECK = 500;
|
|
|
+ public final static int FINISH_ACTIVITY = 999;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Handler MainHandler = new Handler(Looper.getMainLooper()) {
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ Log.d(TAG, "[MainHandler] MainHandler : what [" + msg.what + "], arg1 [" + msg.arg1 + "], arg2 [" + msg.arg2 + "]");
|
|
|
+ switch (msg.what) {
|
|
|
+ case HANDLERMSG.CHECK_FLIPPER_MAINSCREEN_ID:
|
|
|
+// checkMainPage();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case HANDLERMSG.CHECK_WALLPAD_CAMERA_INIT:
|
|
|
+ if (getWallPadCameraUsage()) {
|
|
|
+ initMyVideoSurfaceLayout();
|
|
|
+ sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_REMOVE, 0, 0, 3000); // 월패드 카메라 영상을 띄우고 5초뒤에 없앤다.
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case HANDLERMSG.CHECK_WALLPAD_CAMERA_REMOVE:
|
|
|
+ if (getWallPadCameraUsage()) removeMyVideoSurfaceLayout();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case HANDLERMSG.CHECK_WALLPAD_CAMERA_RESET:
|
|
|
+ if (getWallPadCameraUsage()) resetCameraService();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case HANDLERMSG.CHECK_WALLPAD_CAMERA_CHECK:
|
|
|
+ checkCameraLoading();
|
|
|
+ break;
|
|
|
+
|
|
|
+ case HANDLERMSG.FINISH_ACTIVITY:
|
|
|
+ finishActivity();
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ Log.d(TAG, "MainHandler : " + msg.what);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ public void sendHandlerMsg(int what, int arg1, int arg2) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[sendHandlerMsg] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "]");
|
|
|
+ Message HandleMsg = MainHandler.obtainMessage();
|
|
|
+ HandleMsg.what = what;
|
|
|
+ HandleMsg.arg1 = arg1;
|
|
|
+ HandleMsg.arg2 = arg2;
|
|
|
+ MainHandler.sendMessage(HandleMsg);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendHandlerMsgDelayed(int what, int arg1, int arg2, long delay) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[sendHandlerMsgDelayed] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], delay [" + delay + "]");
|
|
|
+ Message HandleMsg = MainHandler.obtainMessage();
|
|
|
+ HandleMsg.what = what;
|
|
|
+ HandleMsg.arg1 = arg1;
|
|
|
+ HandleMsg.arg2 = arg2;
|
|
|
+ MainHandler.sendMessageDelayed(HandleMsg, delay);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean savePresetValue(String strPresetValues) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[savePresetValue] strPresetValues [" + strPresetValues + "]");
|
|
|
+ String[] strParse_01 = strPresetValues.split("/");
|
|
|
+ int presetid = Integer.parseInt(strParse_01[0]);
|
|
|
+ String[] strParse_02 = strParse_01[1].split(":");
|
|
|
+ String onoff = strParse_02[0];
|
|
|
+ int dim = Integer.parseInt(strParse_02[1]);
|
|
|
+ int color = Integer.parseInt(strParse_02[2]);
|
|
|
+
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(mContext);
|
|
|
+ boolean result = mWallpadStatusData.setLivinglightModeCtrlUnitValues(presetid, 0, "on", dim, color);
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ Log.d(TAG, "[savePresetValue] result [" + result + "], onoff [" + onoff + "], dim [" + dim + "], color [" + color + "]");
|
|
|
+ if (result) {
|
|
|
+ mLightInfo.mPreset[presetid].mLights[0].ONOFF = onoff;
|
|
|
+ mLightInfo.mPreset[presetid].mLights[0].DIM = dim;
|
|
|
+ mLightInfo.mPreset[presetid].mLights[0].COLOR = color;
|
|
|
+ Log.d(TAG,"[savePresetValue] OnOff [" + mLightInfo.mPreset[presetid].mLights[0].ONOFF + "], Level [" + mLightInfo.mPreset[presetid].mLights[0].DIM + "], Color [" + mLightInfo.mPreset[presetid].mLights[0].COLOR + "]");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG,"[savePresetValue] Fail to save light preset values!!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] savePresetValue(String strPresetValues)");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initProximitySensor() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData mWallpadStatusData = new WallpadStatusData(this);
|
|
|
+ int nProximitySensorLevel = mWallpadStatusData.GetCloseSensorValue();
|
|
|
+ mWallpadStatusData.closeDB();
|
|
|
+
|
|
|
+ Log.i(TAG, "[initProximitySensor] nProximitySensorLevel = " + nProximitySensorLevel);
|
|
|
+
|
|
|
+ if (nProximitySensorLevel < 0 || 5 < nProximitySensorLevel) {
|
|
|
+ Log.w(TAG, "[initProximitySensor] nProximitySensorLevel is out of range!!");
|
|
|
+ nProximitySensorLevel = 5;
|
|
|
+ }
|
|
|
+
|
|
|
+ int nResult = mIOInterface.setProximitySensorLevel(nProximitySensorLevel * 3);
|
|
|
+ Log.i(TAG, "[initProximitySensor] nResult = " + nResult);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] initProximitySensor()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private boolean checkInterFloorNoiseError() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData wsd = new WallpadStatusData(getContext());
|
|
|
+ String stSensorStatus = wsd.Get_InterlayerSensor_Status();
|
|
|
+ wsd.closeDB();
|
|
|
+
|
|
|
+ // 센서 정상 : false, 센서 이상 : true
|
|
|
+ Log.i(TAG, "[checkInterFloorNoiseError] stSensorStatus : " + stSensorStatus);
|
|
|
+ if (stSensorStatus.equalsIgnoreCase(define.INTERLAYER_NOISE_STATUS_NORMAL)) return false;
|
|
|
+ else return true;
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkInterFloorNoiseError()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean checkInterFloorNoiseFuncUsage() {
|
|
|
+ try {
|
|
|
+ WallpadStatusData wsd = new WallpadStatusData(getContext());
|
|
|
+ boolean bUsage = wsd.GetNoisePopupUse();
|
|
|
+ wsd.closeDB();
|
|
|
+
|
|
|
+ return bUsage;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkInterFloorNoiseFuncUsage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 현관호출 or 전화호출시 사용되는 keycode - Broadcast 을 송신한다.
|
|
|
+ *
|
|
|
+ * @param nKeyCode - (int) 송신할 keycode
|
|
|
+ * @return (int) - >=0 : 성공, <0 : 실패
|
|
|
+ */
|
|
|
+ private int sendKeyEventBR(int nKeyCode) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[sendKeyEventBR] nKeyCode [" + nKeyCode +"] -> EVENT_DEVICE_CONTROL");
|
|
|
+ KeyEvent event = new KeyEvent(KeyEvent.ACTION_UP, nKeyCode);
|
|
|
+ Intent intent = new Intent("EVENT_DEVICE_CONTROL", null);
|
|
|
+ intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
|
|
|
+ intent.putExtra("keycode",nKeyCode);
|
|
|
+ sendBroadcast(intent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendKeyEventBR(int nKeyCode) [" + nKeyCode + "]");
|
|
|
+ e.printStackTrace();
|
|
|
+ return -100;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 카카오 연동 관련
|
|
|
+ public static boolean bKakaoiEnable = false;
|
|
|
+
|
|
|
+
|
|
|
+ // run Kakao i floating button 실행
|
|
|
+ private void startKakaoiFloatingBTN() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[startKakaoiFloatingBTN] ========== Run Kakao i floating button ==========");
|
|
|
+ ComponentName mComponentName = new ComponentName("kr.co.icontrols.wallpadglobalbutton", "kr.co.icontrols.wallpadglobalbutton.MainActivity");
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
|
|
+ mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
+ mIntent.setComponent(mComponentName);
|
|
|
+ startActivity(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] startKakaoiFloatingBTN()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void Send_NotiSmartSwitch(int nNoticeCnt, int nParcelCnt, int nVisitorPicCnt)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Intent intentBR = new Intent();
|
|
|
+ intentBR.setAction(define.DRIVER_ISD_NOTIINFO);
|
|
|
+ //if( m_NoticeCNT > 0 || m_ParcelCNT > 0 || m_InCallCNT > 0 || m_VisitorCNT > 0 )
|
|
|
+ {
|
|
|
+ // 아이콘 활성화
|
|
|
+ if( nNoticeCnt > 0 )
|
|
|
+ {
|
|
|
+ Log.d(TAG, "LOG : NOTICE CNT INCREASED ++");
|
|
|
+ intentBR.putExtra(define.NOTIBR_ISD_NOTICECNT, nNoticeCnt);
|
|
|
+ Log.d(TAG, "NoticeCNT BroadCast Added");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ intentBR.putExtra(define.NOTIBR_ISD_NOTICECNT, 0);
|
|
|
+ Log.d(TAG, "NoticeCNT ZERO Added");
|
|
|
+ }
|
|
|
+
|
|
|
+ if( nParcelCnt > 0 )
|
|
|
+ {
|
|
|
+ Log.d(TAG, "LOG : Parcel CNT INCREASED ++");
|
|
|
+ intentBR.putExtra(define.NOTIBR_ISD_PARCELCNT, nParcelCnt);
|
|
|
+ Log.d(TAG, "ParcelCNT BroadCast Added");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ intentBR.putExtra(define.NOTIBR_ISD_PARCELCNT, 0);
|
|
|
+ Log.d(TAG, "ParcelCNT ZERO Added");
|
|
|
+ }
|
|
|
+
|
|
|
+ if( nVisitorPicCnt > 0 )
|
|
|
+ {
|
|
|
+ Log.d(TAG, "LOG : VISITOR CNT INCREASED ++");
|
|
|
+ intentBR.putExtra(define.NOTIBR_ISD_VISITORCNT, nVisitorPicCnt);
|
|
|
+ Log.d(TAG, "VisitorCNT BroadCast Added");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ intentBR.putExtra(define.NOTIBR_ISD_VISITORCNT, nVisitorPicCnt);
|
|
|
+ Log.d(TAG, "VisitorCNT ZERO Added");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 알림정보 intent BroadCast
|
|
|
+ getContext().sendBroadcast(intentBR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch( Exception e)
|
|
|
+ {
|
|
|
+ Log.e(TAG, e.toString());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// private void startKakaoiVoiceAgent() {
|
|
|
+// try {
|
|
|
+// Log.i(TAG, "[startKakaoiVoiceAgent] ========== Start Kakao i Voice Agent ==========");
|
|
|
+// Intent mIntent = new Intent("com.kakao.i.agent.START_SERVICE").setPackage("com.kakao.i.test.sandbox");
|
|
|
+// ContextCompat.startForegroundService(this, mIntent);
|
|
|
+// } catch (Exception e) {
|
|
|
+// Log.e(TAG, "[Exception] startKakaoiVoiceAgent()");
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// private void enableKakaoiVoiceAgent() {
|
|
|
+// try {
|
|
|
+// Log.i(TAG, "[enableKakaoiVoiceAgent] ========== Enable Kakao i Voice Agent ==========");
|
|
|
+// Intent mIntent = new Intent("com.kakao.i.agent.ENABLE_KAKAO_I").setPackage("com.kakao.i.test.sandbox");
|
|
|
+// ContextCompat.startForegroundService(this, mIntent);
|
|
|
+// } catch (Exception e) {
|
|
|
+// Log.e(TAG, "[Exception] enableKakaoiVoiceAgent()");
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// private void diableKakaoiVoiceAgent() {
|
|
|
+// try {
|
|
|
+// Log.i(TAG, "[diableKakaoiVoiceAgent] ========== Disable Kakao i Voice Agent ==========");
|
|
|
+// Intent mIntent = new Intent("com.kakao.i.agent.DISABLE_KAKAO_I").setPackage("com.kakao.i.test.sandbox");
|
|
|
+// ContextCompat.startForegroundService(this, mIntent);
|
|
|
+// } catch (Exception e) {
|
|
|
+// Log.e(TAG, "[Exception] diableKakaoiVoiceAgent()");
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * JEFF, 2019.08.06
|
|
|
+ * 동탄현장 월패드 죽는 이슈 원인 분석을 위한 월패드 App 삭제 코드
|
|
|
+ * 메인App만 남기고 모두 삭제
|
|
|
+ */
|
|
|
+ UninstallAPKs mUninstallAPKs = new UninstallAPKs();
|
|
|
+ class UninstallAPKs extends Thread {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ super.run();
|
|
|
+ try {
|
|
|
+ Log.d(TAG, "[UninstallAPKs.run()] Started getting installed package infomation");
|
|
|
+ ArrayList<PackageVersionInfo> PackageVersionInfos = new ArrayList<PackageVersionInfo>();
|
|
|
+ List<PackageInfo> PackageInfoList = getPackageManager().getInstalledPackages(PackageManager.PERMISSION_GRANTED);
|
|
|
+
|
|
|
+ while (true) {
|
|
|
+ Log.d(TAG, "[UninstallAPKs.run()] Get installed packages start!!");
|
|
|
+ try {
|
|
|
+ for (PackageInfo pack : PackageInfoList) {
|
|
|
+// Log.d(TAG, "[UninstallAPKs.run()] Package Name [" + pack.packageName + "]");
|
|
|
+// Log.d(TAG, "[UninstallAPKs.run()] Version Name [" + pack.versionName + "]");
|
|
|
+ if ((pack.packageName.contains("icontrols")) || (pack.packageName.contains("artncore"))) {
|
|
|
+ PackageVersionInfos.add(new PackageVersionInfo(pack.packageName, pack.versionName));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch(Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[getInstalledPackageInfo.run()] Get installed packages end!!");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < PackageVersionInfos.size(); i++) {
|
|
|
+ Log.d(TAG, "[UninstallAPKs.run()] Package Name [" + PackageVersionInfos.get(i).getPackageName() + "]");
|
|
|
+ Log.d(TAG, "[UninstallAPKs.run()] Version Name [" + PackageVersionInfos.get(i).strPackageVersion + "]");
|
|
|
+ uninstallWallPadApp(PackageVersionInfos.get(i).getPackageName());
|
|
|
+ try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] UninstallAPKs.run()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+// try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void uninstallWallPadApp(String strAPK) {
|
|
|
+ try {
|
|
|
+ Log.w(TAG, "[uninstallWallPadApp] strAPK [" + strAPK + "]");
|
|
|
+ if (checkAppInstalled(strAPK)) {
|
|
|
+// Intent mIntent = new Intent(Intent.ACTION_DELETE);
|
|
|
+ Intent mIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
|
|
|
+ mIntent.setData(Uri.parse("package:" + strAPK));
|
|
|
+ mIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
|
|
|
+ startActivityForResult(mIntent, UNINSTALL_REQUEST_CODE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[uninstallWallPadApp] Not installed [" + strAPK + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {;
|
|
|
+ Log.e(TAG, "[Exception] uninstallWallPadApp()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ iMAPRemotemeter miMAPRemotemeter;
|
|
|
+ boolean mEMS_Enable;
|
|
|
+ int nEnergyTypeCnt;
|
|
|
+ private boolean mCostInfo_Enable = false;
|
|
|
+
|
|
|
+ private Calendar nowCal, HourCal, DateCal, MonthCal, YearCal, EnergyDataGetCal;
|
|
|
+
|
|
|
+ int CalendarYear;
|
|
|
+ int CalendarMonth;
|
|
|
+ int CalendarDate;
|
|
|
+
|
|
|
+ int ShowNowEnergyIndex = 0;
|
|
|
+ String[] ShowListEnergyType_String = {
|
|
|
+ "전기",
|
|
|
+ "수도",
|
|
|
+ "가스",
|
|
|
+ "온수",
|
|
|
+ "난방",
|
|
|
+ "탄소"
|
|
|
+ };
|
|
|
+
|
|
|
+ // 원격검침 월사용량 데이터 클래스
|
|
|
+ MonthTableClass monthTableClass[] = new MonthTableClass[6];
|
|
|
+ class MonthTableClass {
|
|
|
+ private String Use;
|
|
|
+ private String SamePyungUse;
|
|
|
+ private String Rank;
|
|
|
+ private String Goal;
|
|
|
+ private String Price;
|
|
|
+
|
|
|
+
|
|
|
+ public MonthTableClass (String Use, String SamePyungUse, String Rank, String Goal) {
|
|
|
+ this.Use = Use;
|
|
|
+ this.SamePyungUse = SamePyungUse;
|
|
|
+ this.Rank = Rank;
|
|
|
+ this.Goal = Goal;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getUse(){return Use;}
|
|
|
+ public String getSamePyungUse(){return SamePyungUse;}
|
|
|
+ public String getRank(){return Rank;}
|
|
|
+ public String getGoal(){return Goal;}
|
|
|
+ public String getPrice(){return Price;}
|
|
|
+ }
|
|
|
+
|
|
|
+ public void GetMeteringCount()
|
|
|
+ {
|
|
|
+ WallpadDeviceSet devSet = new WallpadDeviceSet(getContext());
|
|
|
+ String[] MetringDB = devSet.GetSettingData("원격검침");
|
|
|
+ devSet.closeDB();
|
|
|
+ if (MetringDB != null)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ String devInfo = MetringDB[1];
|
|
|
+
|
|
|
+ devInfo = devInfo.replace('(', '_');
|
|
|
+ devInfo = devInfo.replace(':', '_');
|
|
|
+ devInfo = devInfo.replace(')', '_');
|
|
|
+
|
|
|
+ String[] MetringInfo = devInfo.split("_");
|
|
|
+ // MetringInfo[1] -> 회로수
|
|
|
+ // MetringInfo[5] -> EMS 사용여부 사용함 or 사용안함
|
|
|
+ if ((Integer.parseInt(MetringInfo[1]) == 2) || (Integer.parseInt(MetringInfo[1]) == 3) || (Integer.parseInt(MetringInfo[1]) == 5) || (Integer.parseInt(MetringInfo[1]) == 6))
|
|
|
+ {
|
|
|
+ nEnergyTypeCnt = Integer.parseInt(MetringInfo[1]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ nEnergyTypeCnt = 5;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (MetringInfo[5].equals("사용함"))
|
|
|
+ {
|
|
|
+ mEMS_Enable = true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mEMS_Enable = false;
|
|
|
+ }
|
|
|
+ if(MetringInfo[7].equals("사용함"))
|
|
|
+ {
|
|
|
+ mCostInfo_Enable = true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mCostInfo_Enable = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ e.printStackTrace();
|
|
|
+ nEnergyTypeCnt = 5;
|
|
|
+ mEMS_Enable = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ nEnergyTypeCnt = 5;
|
|
|
+ mEMS_Enable = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description
|
|
|
+ * 서버로 부터 데이터를 받아와 분석하고 표현하는 함수<br>
|
|
|
+ * @param
|
|
|
+ * InputType 0 당월, 1 일별<br>
|
|
|
+ * @param
|
|
|
+ * //year - 연도<br>
|
|
|
+ * @param
|
|
|
+ * //month - 월<br>
|
|
|
+ * @param
|
|
|
+ * //energy - 0 전기, 1 수도, 2 가스, 3 온수, 4 열량, 5 탄소<br>
|
|
|
+ */
|
|
|
+ private void LoadRemotemeterDataFromServer(int InputType, int Year, int Month, int Energy, final boolean bSendToMobile) {
|
|
|
+ final int inputType = InputType;
|
|
|
+ final int year = Year;
|
|
|
+ final int month = (Month+1);
|
|
|
+
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[LoadRemotemeterDataFromServer] InputType [" + InputType + "], Year [" + Year + "], Month [" + Month + "], Energy [" + Energy + "], bSendToMobile [" + bSendToMobile + "]");
|
|
|
+ Log.i(TAG, "[LoadRemotemeterDataFromServer] inputType [" + inputType + "], year [" + year + "], month [" + month + "]");
|
|
|
+
|
|
|
+ miMAPRemotemeter = new iMAPRemotemeter(getApplicationContext());
|
|
|
+
|
|
|
+ switch(inputType) {
|
|
|
+ case 0: //당월
|
|
|
+ miMAPRemotemeter.DoWork(true, true, true, true, true, true, true, mEMS_Enable, year, month);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 1: //일별
|
|
|
+ miMAPRemotemeter.DoWork(false, true, true, true, true, true, false, false, year, month);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ miMAPRemotemeter.SetRetCtr(new RetProci() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ String TempString = null;
|
|
|
+
|
|
|
+ // DB
|
|
|
+ WallpadStatusData StatusDBMGR = null;
|
|
|
+ try {
|
|
|
+ StatusDBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
+ Log.i(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] inputType [" + inputType + "]");
|
|
|
+ boolean result = false;
|
|
|
+ switch (inputType) {
|
|
|
+ case 0: // 당월
|
|
|
+ EnergyDataGetCal = Calendar.getInstance();
|
|
|
+ int NumberOfValuelist = miMAPRemotemeter.SetItem("valuelist");
|
|
|
+ if (NumberOfValuelist != 0) {
|
|
|
+ for (int i = 0; i < NumberOfValuelist; i++) {
|
|
|
+ //DebugLogOutput("NumberOfValuelist " + Integer.toString(NumberOfValuelist));
|
|
|
+ //DebugLogOutput("GetAttributeVal(i, month) " + imapRemotemeter.GetAttributeVal(i, "month"));
|
|
|
+ //DebugLogOutput("CalendarMonth " + (CalendarMonth + 1));
|
|
|
+ if ((Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "month")) == (CalendarMonth + 1)) && (Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "year")) == (CalendarYear))) {
|
|
|
+ result = true;
|
|
|
+ int Temp_mNumberOfEnergy = nEnergyTypeCnt;
|
|
|
+ if (Temp_mNumberOfEnergy == 2) {
|
|
|
+ Temp_mNumberOfEnergy = 3;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int j = 0; j < Temp_mNumberOfEnergy; j++) {
|
|
|
+ switch (j) {
|
|
|
+ case 0:
|
|
|
+ monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_used").equals("1000000") == true) {
|
|
|
+ monthTableClass[j].Use = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "elect_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_average_used_samesize") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_average_used_samesize").equals("null") == true) {
|
|
|
+ monthTableClass[j].SamePyungUse = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "elect_average_used_samesize");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((miMAPRemotemeter.GetAttributeVal(i, "elect_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_ranking_samesize").equals("null") == true) {
|
|
|
+ TempString = "- / ";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = miMAPRemotemeter.GetAttributeVal(i, "elect_ranking_samesize") + " / ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
+ TempString = TempString + "-";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
+ }
|
|
|
+ monthTableClass[j].Rank = TempString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //가격정보
|
|
|
+ if (mCostInfo_Enable == true) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_price") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_price").equals("null") == true) {
|
|
|
+ monthTableClass[j].Price = "";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "elect_price");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
+ //DebugLogOutput("전기");
|
|
|
+ //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
+ //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 1:
|
|
|
+ monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_used").equals("1000000") == true) {
|
|
|
+ monthTableClass[j].Use = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "water_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_average_used_samesize") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_average_used_samesize").equals("null") == true) {
|
|
|
+ monthTableClass[j].SamePyungUse = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "water_average_used_samesize");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((miMAPRemotemeter.GetAttributeVal(i, "water_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_ranking_samesize").equals("null") == true) {
|
|
|
+ TempString = "- / ";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = miMAPRemotemeter.GetAttributeVal(i, "water_ranking_samesize") + " / ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
+ TempString = TempString + "-";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
+ }
|
|
|
+ monthTableClass[j].Rank = TempString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //가격정보
|
|
|
+ if (mCostInfo_Enable == true) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_price") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_price").equals("null") == true) {
|
|
|
+ monthTableClass[j].Price = "";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "water_price");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
+ //DebugLogOutput("수도");
|
|
|
+ //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
+ //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_used").equals("1000000") == true) {
|
|
|
+ monthTableClass[j].Use = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "gas_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_average_used_samesize") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_average_used_samesize").equals("null") == true) {
|
|
|
+ monthTableClass[j].SamePyungUse = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "gas_average_used_samesize");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((miMAPRemotemeter.GetAttributeVal(i, "gas_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_ranking_samesize").equals("null") == true) {
|
|
|
+ TempString = "- / ";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = miMAPRemotemeter.GetAttributeVal(i, "gas_ranking_samesize") + " / ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
+ TempString = TempString + "-";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
+ }
|
|
|
+ monthTableClass[j].Rank = TempString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //가격정보
|
|
|
+ if (mCostInfo_Enable == true) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_price") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_price").equals("null") == true) {
|
|
|
+ monthTableClass[j].Price = "";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "gas_price");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
+ //DebugLogOutput("가스");
|
|
|
+ //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
+ //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 3:
|
|
|
+ monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used").equals("1000000") == true) {
|
|
|
+ monthTableClass[j].Use = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "hotwater_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize").equals("null") == true) {
|
|
|
+ monthTableClass[j].SamePyungUse = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((miMAPRemotemeter.GetAttributeVal(i, "hotwater_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_ranking_samesize").equals("null") == true) {
|
|
|
+ TempString = "- / ";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = miMAPRemotemeter.GetAttributeVal(i, "hotwater_ranking_samesize") + " / ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
+ TempString = TempString + "-";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
+ }
|
|
|
+ monthTableClass[j].Rank = TempString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //가격정보
|
|
|
+ if (mCostInfo_Enable == true) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_price") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_price").equals("null") == true) {
|
|
|
+ monthTableClass[j].Price = "";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "hotwater_price");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
+ //DebugLogOutput("온수");
|
|
|
+ //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
+ //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 4:
|
|
|
+ monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_used").equals("1000000") == true) {
|
|
|
+ monthTableClass[j].Use = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "energy_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_average_used_samesize") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_average_used_samesize").equals("null") == true) {
|
|
|
+ monthTableClass[j].SamePyungUse = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "energy_average_used_samesize");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((miMAPRemotemeter.GetAttributeVal(i, "energy_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_ranking_samesize").equals("null") == true) {
|
|
|
+ TempString = "- / ";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = miMAPRemotemeter.GetAttributeVal(i, "energy_ranking_samesize") + " / ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
+ TempString = TempString + "-";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
+ }
|
|
|
+ monthTableClass[j].Rank = TempString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //가격정보
|
|
|
+ if (mCostInfo_Enable == true) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_price") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_price").equals("null") == true) {
|
|
|
+ monthTableClass[j].Price = "";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "energy_price");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
+ //DebugLogOutput("열량");
|
|
|
+ //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
+ //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 5:
|
|
|
+ monthTableClass[j] = new MonthTableClass("", "", "", "");
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_used").equals("1000000") == true) {
|
|
|
+ monthTableClass[j].Use = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Use = miMAPRemotemeter.GetAttributeVal(i, "carbon_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_average_used_samesize") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_average_used_samesize").equals("null") == true) {
|
|
|
+ monthTableClass[j].SamePyungUse = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].SamePyungUse = miMAPRemotemeter.GetAttributeVal(i, "carbon_average_used_samesize");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((miMAPRemotemeter.GetAttributeVal(i, "carbon_ranking_samesize") != null) && (miMAPRemotemeter.GetAttributeVal(i, "count_samesize") != null)) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_ranking_samesize").equals("null") == true) {
|
|
|
+ TempString = "- / ";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = miMAPRemotemeter.GetAttributeVal(i, "carbon_ranking_samesize") + " / ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "count_samesize").equals("null") == true) {
|
|
|
+ TempString = TempString + "-";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ TempString = TempString + miMAPRemotemeter.GetAttributeVal(i, "count_samesize");
|
|
|
+ }
|
|
|
+ monthTableClass[j].Rank = TempString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //가격정보
|
|
|
+ if (mCostInfo_Enable == true) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_price") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "carbon_price").equals("null") == true) {
|
|
|
+ monthTableClass[j].Price = "";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ monthTableClass[j].Price = miMAPRemotemeter.GetAttributeVal(i, "carbon_price");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
|
|
|
+ //DebugLogOutput("탄소");
|
|
|
+ //DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
|
|
|
+ //DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (result) {
|
|
|
+ if (1 < nEnergyTypeCnt && nEnergyTypeCnt < 6) {
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ENERGY_TARGET_INFO_ALARM_FROM_SERVER);
|
|
|
+ intent.putExtra("FromWhere", "IcEnergyMgrScreen");
|
|
|
+
|
|
|
+ if (nEnergyTypeCnt == 2) {
|
|
|
+ elect_target = monthTableClass[0].Goal;
|
|
|
+ elect_used = monthTableClass[0].Use;
|
|
|
+ water_target = monthTableClass[1].Goal;
|
|
|
+ water_used = monthTableClass[1].Use;
|
|
|
+ }
|
|
|
+ else if (nEnergyTypeCnt == 3) {
|
|
|
+ elect_target = monthTableClass[0].Goal;
|
|
|
+ elect_used = monthTableClass[0].Use;
|
|
|
+ water_target = monthTableClass[1].Goal;
|
|
|
+ water_used = monthTableClass[1].Use;
|
|
|
+ gas_target = monthTableClass[2].Goal;
|
|
|
+ gas_used = monthTableClass[2].Use;
|
|
|
+ }
|
|
|
+ else if (nEnergyTypeCnt == 4) {
|
|
|
+ elect_target = monthTableClass[0].Goal;
|
|
|
+ elect_used = monthTableClass[0].Use;
|
|
|
+ water_target = monthTableClass[1].Goal;
|
|
|
+ water_used = monthTableClass[1].Use;
|
|
|
+ hotwater_target = monthTableClass[2].Goal;
|
|
|
+ hotwater_used = monthTableClass[2].Use;
|
|
|
+ heating_target = monthTableClass[3].Goal;
|
|
|
+ heating_used = monthTableClass[3].Use;
|
|
|
+ }
|
|
|
+ else if (nEnergyTypeCnt == 5) {
|
|
|
+ elect_target = monthTableClass[0].Goal;
|
|
|
+ elect_used = monthTableClass[0].Use;
|
|
|
+ water_target = monthTableClass[1].Goal;
|
|
|
+ water_used = monthTableClass[1].Use;
|
|
|
+ gas_target = monthTableClass[2].Goal;
|
|
|
+ gas_used = monthTableClass[2].Use;
|
|
|
+ hotwater_target = monthTableClass[3].Goal;
|
|
|
+ hotwater_used = monthTableClass[3].Use;
|
|
|
+ heating_target = monthTableClass[4].Goal;
|
|
|
+ heating_used = monthTableClass[4].Use;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] Out of range!! =1 = mNumberOfEnergy -> " + nEnergyTypeCnt);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ getApplicationContext().sendBroadcast(intent);
|
|
|
+ if (bSendToMobile) sendRemotemeterDataToMobile();
|
|
|
+
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] Out of range!! =2 = mNumberOfEnergy -> " + nEnergyTypeCnt);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcSuccess] result [" + result + "]");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ StatusDBMGR.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ if (StatusDBMGR != null) {
|
|
|
+ StatusDBMGR.closeDB();
|
|
|
+ }
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError() {
|
|
|
+ Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcError] Error!!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing() {
|
|
|
+ Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcDoing] Processing!!!");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] LoadRemotemeterDataFromServer(int InputType, int Year, int Month, int Energy)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description
|
|
|
+ * 서버로 부터 데이터를 받아와 분석하고 표현하는 함수<br>
|
|
|
+ * @param
|
|
|
+ * //year - 연도<br>
|
|
|
+ * @param
|
|
|
+ * //month - 월<br>
|
|
|
+ * @param
|
|
|
+ * //energy - 0 전기, 1 수도, 2 가스, 3 온수, 4 열량, 5 탄소<br>
|
|
|
+ */
|
|
|
+ private void getTelemeringDailyUsageData(final int nYear, final int nMonth, final int nDate) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[getTelemeringDailyUsageData] nYear [" + nYear + "], nMonth [" + nMonth + "], nDate [" + nDate + "]");
|
|
|
+
|
|
|
+ miMAPRemotemeter = new iMAPRemotemeter(getApplicationContext());
|
|
|
+ miMAPRemotemeter.DoWork(false, true, true, true, true, true, false, false, nYear, nMonth);
|
|
|
+ miMAPRemotemeter.SetRetCtr(new RetProci() {
|
|
|
+ @Override
|
|
|
+ public void ProcSuccess() {
|
|
|
+ String strTempValue = null;
|
|
|
+ int nEnergyTypeCnt = 5;
|
|
|
+
|
|
|
+ try {
|
|
|
+ boolean bResult = false;
|
|
|
+ String strElecUsage = "", strGasUsage = "", strWaterUsage = "", strHotwaterUsage = "", strHeatingUsage = "";
|
|
|
+ int nDataCnt = miMAPRemotemeter.SetItem("valuelist");
|
|
|
+ if (nDataCnt != 0) {
|
|
|
+ Log.i(TAG, "[getTelemeringDailyData] nDataCnt [" + nDataCnt + "]");
|
|
|
+ for (int i = 0; i < nDataCnt; i++) {
|
|
|
+ if ((Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "year")) == nYear)
|
|
|
+ && (Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "month")) == nMonth)
|
|
|
+ && (Integer.parseInt(miMAPRemotemeter.GetAttributeVal(i, "day")) == nDate)) {
|
|
|
+ bResult = true;
|
|
|
+ Log.i(TAG, "[getTelemeringDailyUsageData] Find!!! nYear [" + nYear + "], nMonth [" + nMonth + "], nDate [" + nDate + "]");
|
|
|
+ for (int j = 0; j < nEnergyTypeCnt; j++) {
|
|
|
+ if (j == 0) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "elect_used").equals("1000000")) {
|
|
|
+ strElecUsage = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ strElecUsage = miMAPRemotemeter.GetAttributeVal(i, "elect_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (j == 1) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "water_used").equals("1000000") == true) {
|
|
|
+ strWaterUsage = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ strWaterUsage = miMAPRemotemeter.GetAttributeVal(i, "water_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (j == 2) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "gas_used").equals("1000000") == true) {
|
|
|
+ strGasUsage = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ strGasUsage = miMAPRemotemeter.GetAttributeVal(i, "gas_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (j == 3) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "hotwater_used").equals("1000000") == true) {
|
|
|
+ strHotwaterUsage = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ strHotwaterUsage = miMAPRemotemeter.GetAttributeVal(i, "hotwater_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (j == 4) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_used") != null) {
|
|
|
+ if (miMAPRemotemeter.GetAttributeVal(i, "energy_used").equals("1000000") == true) {
|
|
|
+ strHeatingUsage = "0";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ strHeatingUsage = miMAPRemotemeter.GetAttributeVal(i, "energy_used");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bResult) {
|
|
|
+ Intent mIntent = new Intent();
|
|
|
+ mIntent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ mIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_TELEMETERING_DAILY_USAGE);
|
|
|
+ mIntent.putExtra("elect_used", strElecUsage);
|
|
|
+ mIntent.putExtra("water_used", strWaterUsage);
|
|
|
+ mIntent.putExtra("gas_used", strGasUsage);
|
|
|
+ mIntent.putExtra("hotwater_used", strHotwaterUsage);
|
|
|
+ mIntent.putExtra("heating_used", strHeatingUsage);
|
|
|
+ getApplicationContext().sendBroadcast(mIntent);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[getTelemeringDailyUsageData.ProcSuccess] bResult [" + bResult + "]");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getTelemeringDailyData.ProcSuccess");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcError() {
|
|
|
+ Log.w(TAG, "[getTelemeringDailyData.ProcError] Error!!!");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void ProcDoing() {
|
|
|
+ Log.w(TAG, "[getTelemeringDailyData.ProcDoing] Processing!!!");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getTelemeringDailyData(int nYear, int nMonth)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void sendRemotemeterDataToMobile() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[sendRemotemeterDataToMobile] ========== START ==========");
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(define.NOTIFY_ACNAME);
|
|
|
+ intent.putExtra("KIND", define.NOTIFY_ENERGY_DATA);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_ENERGY_COUNT, nEnergyTypeCnt);
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_YEAR, EnergyDataGetCal.get(Calendar.YEAR));
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_MONTH, (EnergyDataGetCal.get(Calendar.MONTH)+1));
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_DAY, EnergyDataGetCal.get(Calendar.DATE));
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_HOUR, EnergyDataGetCal.get(Calendar.HOUR_OF_DAY));
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GETDATA_TIME_MINUTE, EnergyDataGetCal.get(Calendar.MINUTE));
|
|
|
+
|
|
|
+ if (nEnergyTypeCnt == 2) {
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
+ }
|
|
|
+ else if (nEnergyTypeCnt == 3) {
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_GAS, gas_used); //가스
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_GAS, gas_target);
|
|
|
+ }
|
|
|
+ else if (nEnergyTypeCnt == 4) {
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_HOTWATER, hotwater_used); //온수
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_HOTWATER, hotwater_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_HEATING, heating_used); //열량
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_HEATING, heating_target);
|
|
|
+ }
|
|
|
+ else if (nEnergyTypeCnt == 5) {
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_ELECTRIC, elect_used); //전기
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_ELECTRIC, elect_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_WATER, water_used); //수도
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_WATER, water_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_GAS, gas_used); //가스
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_GAS, gas_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_HOTWATER, hotwater_used); //온수
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_HOTWATER, hotwater_target);
|
|
|
+
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_USE_HEATING, heating_used); //열량
|
|
|
+ intent.putExtra(Common.ENERGY_INTENT_GOAL_HEATING, heating_target);
|
|
|
+ }
|
|
|
+ getContext().sendBroadcast(intent);
|
|
|
+
|
|
|
+ Log.i(TAG, "[sendRemotemeterDataToMobile] Sent ENERGY_INTENT_ BR "+define.NOTIFY_ENERGY_DATA);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendRemotemeterDataToMobile()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getTelemeteringDataOnRandomTime() {
|
|
|
+ try {
|
|
|
+ int DelayTime = StringUtil.GetDelayTimeBaseIP(getContext());
|
|
|
+ if (DelayTime < 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[getTelemeteringDataOnRandomTime] DelayTime : "+ DelayTime);
|
|
|
+ getTelemeteringDataHandler.sendEmptyMessageDelayed(0, 1000 * DelayTime);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getTelemeteringDataOnRandomTime()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ private Handler getTelemeteringDataHandler = new Handler() {
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ if (msg.what == 0) {
|
|
|
+ getRemoteMeterDataFromServer(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ boolean bTelemeteringToISS = false;
|
|
|
+
|
|
|
+ private void checkISSEnergyType() {
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(getApplication());
|
|
|
+ int nEnergyKind = mWallpadDeviceSet.Get_SmartSwitchEnergy_Kind();
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+
|
|
|
+ if (nEnergyKind == WallpadDeviceSet.SMARTSWITCH_ENERGY_REMOTE) bTelemeteringToISS = true;
|
|
|
+ else bTelemeteringToISS = false;
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkISSEnergyType()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void getRemoteMeterDataFromServer(boolean bSendToMobile) {
|
|
|
+ try {
|
|
|
+ nowCal = Calendar.getInstance();
|
|
|
+ CalendarYear = nowCal.get(Calendar.YEAR);
|
|
|
+ CalendarMonth = nowCal.get(Calendar.MONTH);
|
|
|
+ CalendarDate = nowCal.get(Calendar.DATE);
|
|
|
+ GetMeteringCount();
|
|
|
+ LoadRemotemeterDataFromServer(0, CalendarYear, CalendarMonth, ShowNowEnergyIndex, bSendToMobile);
|
|
|
+ if (bTelemeteringToISS) getTelemeringDailyUsageData(CalendarYear, CalendarMonth + 1, CalendarDate);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getRemoteMeterDataFromServer()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean getBlackoutStatus() {
|
|
|
+ try {
|
|
|
+ SharedPreferences mSharedPreferences = getSharedPreferences("BlackoutStatus", MODE_PRIVATE);
|
|
|
+ return mSharedPreferences.getBoolean("status", false);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getBlackoutStatus()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendBlackoutScreenRunBR() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[sendBlackoutScreenRunBR] ========== START ==========");
|
|
|
+ Intent mIntent = new Intent(Common.BR_BLACKOUT_SCREEN_RUN, null);
|
|
|
+ mContext.sendBroadcast(mIntent);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] sendBlackoutScreenRunBR()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 월패드 타입 판별
|
|
|
+ * @return bResult
|
|
|
+ * false: 메인월패드
|
|
|
+ * true: 서브월패드
|
|
|
+ */
|
|
|
+ public boolean getIsSubWallpad() {
|
|
|
+ boolean bResult = false;
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
|
|
|
+ String[] DBinfo = mWallpadDeviceSet.GetSettingData("서브월패드");
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+
|
|
|
+ if (DBinfo == null) bResult = false;
|
|
|
+ else {
|
|
|
+ if (DBinfo[1].indexOf("사용함") > 0) bResult = true;
|
|
|
+ else bResult = false;
|
|
|
+ }
|
|
|
+ Log.d(TAG, "[getIsSubWallpad] bResult [" + bResult + "]");
|
|
|
+ return bResult;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getIsSubWallpad()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * JEFF, 2020.01.14
|
|
|
+ * 월패드 카메라의 초기화를 위한 코드 삽입
|
|
|
+ * 월패드 카메라 preview 실행시, 최초 1회에 한하여 카메라 화면에 녹색이 보이는 증상을 해결하기 위함
|
|
|
+ */
|
|
|
+ /* ================================================================================================
|
|
|
+ * 내 영상
|
|
|
+ ================================================================================================ */
|
|
|
+ // SurfaceLayout 구성
|
|
|
+ RelativeLayout MyVideoLayout; // MoIP 카메라 영상
|
|
|
+ SurfaceHolder MyVideoHolder;
|
|
|
+ SurfaceView MyVideoSurface;
|
|
|
+ RelativeLayout SurfaceLayout; // 영상표시 화면
|
|
|
+ public Camera mMyCamera;
|
|
|
+
|
|
|
+ public void toggleMyVideo() {
|
|
|
+ try {
|
|
|
+ if (MyVideoLayout == null) {
|
|
|
+ Log.e(TAG, "[toggleMyVideo] Show My Video!!!");
|
|
|
+ initMyVideoSurfaceLayout();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.e(TAG, "[toggleMyVideo] Remove My Video!!!");
|
|
|
+ removeMyVideoSurfaceLayout();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] toggleMyVideo()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void initMyVideoSurfaceLayout() {
|
|
|
+ try {
|
|
|
+// LOG_INFO("[initMyVideoSurfaceLayout] MyVideoLayout = " + MyVideoLayout);
|
|
|
+ if (MyVideoLayout != null) {
|
|
|
+ MyVideoSurface.getHolder().removeCallback(MyVideoCallback);
|
|
|
+ MyVideoLayout.removeAllViews();
|
|
|
+ MyVideoLayout = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ MyVideoLayout = new RelativeLayout(mContext);
|
|
|
+ WpadUtil.LayoutRegistration(SurfaceLayout, MyVideoLayout, 1024, 600, 0, 0, ID.MAINACTIVITY.LAYOUT.MYVIDEO);
|
|
|
+ MyVideoSurface = new SurfaceView(mContext);
|
|
|
+ MyVideoHolder = MyVideoSurface.getHolder();
|
|
|
+ WpadRelativeLayoutParams MyVideoParams = new WpadRelativeLayoutParams(320, 240);
|
|
|
+// MyVideoParams.setMargins(10, 10, 0, 0); // 보이게
|
|
|
+ MyVideoParams.setMargins(1300, 112, 0, 0); // 안보이게
|
|
|
+ MyVideoLayout.addView(MyVideoSurface, MyVideoParams);
|
|
|
+ MyVideoSurface.getHolder().addCallback(MyVideoCallback);
|
|
|
+ MyVideoSurface.setZOrderOnTop(true);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] initMyVideoSurfaceLayout()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void removeMyVideoSurfaceLayout() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[removeMyVideoSurfaceLayout] MyVideoLayout = " + MyVideoLayout);
|
|
|
+ if (MyVideoLayout != null) {
|
|
|
+ MyVideoLayout.removeAllViews();
|
|
|
+ MyVideoLayout = null;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] removeRemoteVideoSurfaceLayout()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private SurfaceHolder.Callback MyVideoCallback = new SurfaceHolder.Callback() {
|
|
|
+ @Override
|
|
|
+ public void surfaceCreated(SurfaceHolder holder) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[MyVideoCallback] surfaceCreated!!");
|
|
|
+ if (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT) {
|
|
|
+ mIOInterface.ctrlWallPadCamPower(true);
|
|
|
+ mMyCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
|
|
|
+ Camera.Parameters params = mMyCamera.getParameters();
|
|
|
+ params.setPictureSize(320, 240);
|
|
|
+ mMyCamera.setParameters(params);
|
|
|
+ mMyCamera.setPreviewDisplay(holder);
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[MyVideoCallback] surfaceCreated!! -> NOT Supported Common.CurrentBoardType [" + Common.CurrentBoardType + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] MyVideoCallback -> surfaceCreated(SurfaceHolder holder)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[MyVideoCallback] surfaceChanged!!");
|
|
|
+ if (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT) {
|
|
|
+ mMyCamera.startPreview();
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[MyVideoCallback] surfaceChanged!! -> NOT Supported Common.CurrentBoardType [" + Common.CurrentBoardType + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] MyVideoCallback -> surfaceChanged(SurfaceHolder holder, int format, int width, int height)");
|
|
|
+ e.printStackTrace();
|
|
|
+// if (getWallPadCameraUsage()) sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_RESET, 0, 0, 3000); // 3초후 카메라 서비스를 재실행한다.
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void surfaceDestroyed(SurfaceHolder holder) {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[MyVideoCallback] surfaceDestroyed!!");
|
|
|
+ if (Common.CurrentBoardType == Common.BOARD_TYPE.V40 || Common.CurrentBoardType == Common.BOARD_TYPE.V40_NOUGAT) {
|
|
|
+ mIOInterface.ctrlWallPadCamPower(false);
|
|
|
+ if (mMyCamera != null) {
|
|
|
+ mMyCamera.stopPreview();
|
|
|
+ mMyCamera.release();
|
|
|
+ mMyCamera = null;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[MyVideoCallback] surfaceDestroyed!! -> NOT Supported Common.CurrentBoardType [" + Common.CurrentBoardType + "]");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] MyVideoCallback -> surfaceDestroyed(SurfaceHolder holder)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ private boolean getWallPadCameraUsage() {
|
|
|
+ boolean bResult = false;
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this.getContext());
|
|
|
+ int nResult = mWallpadDeviceSet.GetDeviceSetted("월패드카메라");
|
|
|
+ mWallpadDeviceSet.closeDB();
|
|
|
+
|
|
|
+ if (nResult == WallpadDeviceSet.DEV_DATA_ENABLE) bResult = true;
|
|
|
+ else bResult = false;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getWallPadCameraUsage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ Log.i(TAG, "[getWallPadCameraUsage] bResult [" + bResult + "]");
|
|
|
+ return bResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void forceCtrlStrangerRecordingUserSettingDisable(boolean bEnable) {
|
|
|
+ try {
|
|
|
+ WallpadStatusData DBMGR = new WallpadStatusData(getContext());
|
|
|
+ DBMGR.SetStrangerRecordingOnOff(bEnable);
|
|
|
+ DBMGR.closeDB();
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] forceCtrlStrangerRecordingUserSettingDisable(boolean bEnable)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerLCDKeeper() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[registerLCDKeeper] ===== START =====");
|
|
|
+
|
|
|
+ if (!bLCDKeeperUsage) {
|
|
|
+ Log.w(TAG, "[registerLCDKeeper] bLCDKeeperUsage is false!!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Build.VERSION.SDK_INT < 24) {
|
|
|
+ Log.w(TAG, "[registerLCDKeeper] not support LCDKeeper!! Build.VERSION.SDK_INT -> " + Build.VERSION.SDK_INT);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ IMG_LCD_KEEPER = (ImageView) findViewById(R.id.view_lcdkeeper);
|
|
|
+ IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
|
|
|
+ Log.i(TAG, "[registerLCDKeeper] ===== END =====");
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] registerLCDKeeper()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ int LCDKEEPER_MODE_NONE = 0; // 동작중 아님
|
|
|
+ int LCDKEEPER_MODE_RESTROE = 1; // 복구모드
|
|
|
+ int LCDKEEPER_MODE_PROTECT = 2; // 보호모드
|
|
|
+ boolean bLCDBacklightPower = true; // LCD backlight on/off 여부 (true: on, false: off)
|
|
|
+ int nLCDKeeperRunMode = LCDKEEPER_MODE_NONE; // LCD Keeper 동작 모드 (0: 동작중 아님, 1: 복구모드, 2: 예방모드)
|
|
|
+ private void runLCDKeeper(int nKeeperMode) {
|
|
|
+ try {
|
|
|
+ if (!bLCDKeeperUsage) {
|
|
|
+ Log.w(TAG, "[registerLCDKeeper] bLCDKeeperUsage is false!!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[runLCDKeeper] nKeeperMode [" + nKeeperMode +"], bLCDBacklightPower [" + bLCDBacklightPower +"]");
|
|
|
+ if (Build.VERSION.SDK_INT < 24) {
|
|
|
+ Log.w(TAG, "[registerLCDKeeper] not support LCDKeeper!! Build.VERSION.SDK_INT -> " + Build.VERSION.SDK_INT);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (IMG_LCD_KEEPER == null) {
|
|
|
+ Log.w(TAG, "[runLCDKeeper] IMG_LCD_KEEPER is null!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // check run mode
|
|
|
+ if (nLCDKeeperRunMode == nKeeperMode) {
|
|
|
+ // already run LCDKeeper!!
|
|
|
+ Log.w(TAG, "[runLCDKeeper] LCD Keeper mode is same -> Asis [" + nLCDKeeperRunMode + "], Tobe [" + nKeeperMode + "]");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ nLCDKeeperRunMode = nKeeperMode;
|
|
|
+
|
|
|
+ if (nKeeperMode == LCDKEEPER_MODE_NONE) {
|
|
|
+ IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+ else if (nKeeperMode == LCDKEEPER_MODE_RESTROE) {
|
|
|
+ if (Common.SCREEN_TYPE == Common.SCREEN_TYPE_1280x800) {
|
|
|
+ Glide.with(this).asGif().load(R.drawable.lcd_restore_1280).diskCacheStrategy(DiskCacheStrategy.RESOURCE).into(IMG_LCD_KEEPER);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Glide.with(this).asGif().load(R.drawable.lcd_restore_1024).diskCacheStrategy(DiskCacheStrategy.RESOURCE).into(IMG_LCD_KEEPER);
|
|
|
+ }
|
|
|
+ IMG_LCD_KEEPER.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ else if (nKeeperMode == LCDKEEPER_MODE_PROTECT) {
|
|
|
+ IMG_LCD_KEEPER.setBackgroundColor(Color.BLACK);
|
|
|
+ IMG_LCD_KEEPER.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.w(TAG, "[runLCDKeeper] Not supported mode!! -> " + nKeeperMode);
|
|
|
+ IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] runLCDKeeper(int nKeeperMode)");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ctrlLCDKeeper() {
|
|
|
+ try {
|
|
|
+ if (!bLCDKeeperUsage) {
|
|
|
+ Log.w(TAG, "[ctrlLCDKeeper] bLCDKeeperUsage is false!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Build.VERSION.SDK_INT < 24) {
|
|
|
+ Log.w(TAG, "[ctrlLCDKeeper] not support LCDKeeper!! Build.VERSION.SDK_INT -> " + Build.VERSION.SDK_INT);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (IMG_LCD_KEEPER == null) {
|
|
|
+ Log.w(TAG, "[ctrlLCDKeeper] IMG_LCD_KEEPER is null!!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.i(TAG, "[ctrlLCDKeeper] bLCDBacklightPower [" + bLCDBacklightPower +"]");
|
|
|
+ if (bLCDBacklightPower) {
|
|
|
+ // backlight on시 lcd keeper를 비활성화 한다.
|
|
|
+ runLCDKeeper(LCDKEEPER_MODE_NONE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT) {
|
|
|
+ // LCD backlight off시, LCD protect 화면을 구동한다.
|
|
|
+ runLCDKeeper(LCDKEEPER_MODE_PROTECT);
|
|
|
+ }
|
|
|
+ else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_RECOVER) {
|
|
|
+ // LCD backlight off시, LCD restore 화면을 구동한다.
|
|
|
+ runLCDKeeper(LCDKEEPER_MODE_RESTROE);
|
|
|
+ }
|
|
|
+ else if (nLCDKeeperType == WallpadDeviceSet.LCDKEEPER_PROTECT_RECOVER) {
|
|
|
+ // 새벽 2:00 ~ 3:59까지 LCD restore 화면을 구동하고, 나머지 시간에는 LCD protect 화면을 구동한다.
|
|
|
+ // 화면에 스모그 또는 미러 글라스 적용이 아닌 경우에는 LCD 보호모드(블랙)만 사용을 권장한다. (LCD RGBW rolling시 컬러가 화면에 비침)
|
|
|
+ Calendar LCDCal = Calendar.getInstance();
|
|
|
+ int nYear = LCDCal.get(Calendar.YEAR);
|
|
|
+ int nMonth = LCDCal.get(Calendar.MONTH) + 1;
|
|
|
+ int nDay = LCDCal.get(Calendar.DAY_OF_MONTH);
|
|
|
+ int nHour = LCDCal.get(Calendar.HOUR_OF_DAY);
|
|
|
+ Log.i(TAG, "[ctrlLCDKeeper] nYear [" + nYear +"], nMonth [" + nMonth +"], nDay [" + nDay +"], nHour [" + nHour +"]");
|
|
|
+ if (3 >= nHour && nHour >= 2) {
|
|
|
+ // 새벽 2:00 ~ 3:59까지 LCD restore 화면을 구동한다.
|
|
|
+ runLCDKeeper(LCDKEEPER_MODE_RESTROE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 새벽 2:00 ~ 3:59 이외의 시간에는 LCD protect 화면을 구동한다.
|
|
|
+ if (nYear == 2020 && ((nMonth < 8 && nDay < 20) || (nMonth < 7))) {
|
|
|
+ // 단, 이미 증상이 발생한 현장의 LCD 복구를 위해 2020년 7월 19일까지는 protection 화면 대신 restore 화면을 구동한다.
|
|
|
+ runLCDKeeper(LCDKEEPER_MODE_RESTROE);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ runLCDKeeper(LCDKEEPER_MODE_PROTECT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] ctrlLCDKeeper()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean checkTranslucentGlassUsage() {
|
|
|
+ try {
|
|
|
+ if (Version.getModelType() == MODEL_TYPE.IHN_D101 || Version.getModelType() == MODEL_TYPE.IHN_D101_I
|
|
|
+ || Version.getModelType() == MODEL_TYPE.IHN_D101K || Version.getModelType() == MODEL_TYPE.IHN_D101K_I
|
|
|
+ || Version.getModelType() == MODEL_TYPE.IHN_1010 || Version.getModelType() == MODEL_TYPE.IHN_1010_I | Version.getModelType() == MODEL_TYPE.IHN_1010_I_ALT
|
|
|
+ || Version.getModelType() == MODEL_TYPE.IHN_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I
|
|
|
+ || Version.getModelType() == MODEL_TYPE.IHN_T1010 || Version.getModelType() == MODEL_TYPE.IHN_T1010_I
|
|
|
+ || Version.getModelType() == MODEL_TYPE.IHN_1303_I) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else return false;
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkTranslucentGlassUsage()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * LCD backlight off시 센서값 keyevent가 발생하지 않는 증상 해결을 위한 임시코드
|
|
|
+ * 우선 IHN-1020B-I에만 적용 후, 결과를 보고 다른 일체형 월패드에도 적용 예정
|
|
|
+ * Jeff, 2020.09.07
|
|
|
+ * @return true: LCD backlight On, false: LCD backlight Off
|
|
|
+ */
|
|
|
+ public boolean checkLCDOnByCMD() {
|
|
|
+ try {
|
|
|
+ Runtime mRuntime = Runtime.getRuntime();
|
|
|
+ Process mProcess;
|
|
|
+ String cmd = "getprop persist.sys.lcdcon";
|
|
|
+
|
|
|
+ mProcess = mRuntime.exec(cmd);
|
|
|
+ BufferedReader br = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
|
|
|
+ String line;
|
|
|
+ String strResult = null;
|
|
|
+
|
|
|
+ while ((line = br.readLine()) != null) {
|
|
|
+ strResult = line;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (strResult.equals("0")) {
|
|
|
+ Log.e(TAG, "[checkLCDOnByCMD] LCD On");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else if (strResult.equals("1")) {
|
|
|
+ Log.e(TAG, "[checkLCDOnByCMD] LCD Off");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.e(TAG, "[checkLCDOnByCMD] Unknown value [" + strResult + "], return false!!!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkLCDOnByCMD()");
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 절전모드에서 백라이트를 키는 경우, BSP에서 PowerManager 또는 속성값으로 상태를 구분하는데
|
|
|
+ * BSP 버전에 따라 상이하게 동작하므로 BSP 버전 구분하여 절전모드 판별 필요
|
|
|
+ * @return true: 기준 BSP 이후 버전, false: 기준 BSP 이전 버전
|
|
|
+ */
|
|
|
+ public boolean getCompareBSPVersion() {
|
|
|
+ try {
|
|
|
+ StringBuilder strBSPVersion = new StringBuilder();
|
|
|
+ StringBuffer sysInfoBuffer = new StringBuffer();
|
|
|
+ sysInfoBuffer.append(Build.DISPLAY);
|
|
|
+ strBSPVersion.append(sysInfoBuffer.toString());
|
|
|
+
|
|
|
+ String result = strBSPVersion.toString();
|
|
|
+ Log.d(TAG, "[getCompareBSPVersion] result [" + result + "]");
|
|
|
+
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
|
|
|
+ Date date = simpleDateFormat.parse(result);
|
|
|
+ Date standardDate = simpleDateFormat.parse("2020.09.18"); // 비교 기준 BSP 버전
|
|
|
+ if (date.compareTo(standardDate) >= 0) {
|
|
|
+ Log.d(TAG, "[getCompareBSPVersion] BSP VERSION OVER!");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] getCompareBSPVersion()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 월패드 부팅시 카메라서비스 로딩이 실패하는 경우가 생겨 카메라 화면이 안나오는 경우 발생
|
|
|
+ * WallPadMain에서 부팅시 카메라를 확인하여 Exception이 발생하는 경우
|
|
|
+ * 카메라 서비스를 재실행한다.
|
|
|
+ * (Edited by jeff, 2020.09.08)
|
|
|
+ */
|
|
|
+ public void resetCameraService() {
|
|
|
+ try {
|
|
|
+ Log.e(TAG, "[resetCameraService] start!!");
|
|
|
+ Runtime mRuntime = Runtime.getRuntime();
|
|
|
+ String cmd = "setprop persist.sys.fakeactivitydel 1";
|
|
|
+ mRuntime.exec(cmd);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] resetCameraService()");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 월패드 부팅시 카메라서비스 로딩이 실패하는 경우가 발생하여
|
|
|
+ * 카메라서비스 정상동작 여부를 확인하기위한 함수를 정의한다.
|
|
|
+ * 카메라서비스 정상: 정상적으로 카메라가 open되며, camera object가 null이 아니면 카메라를 release한다.
|
|
|
+ * 카메라 서비스 비정상: 카메라 open시 Exception이 발생하며 resetCameraService() 함수를 실행하여 카메라서비스를 재실행한다.
|
|
|
+ * (Edited by jeff, 2020.09.08)
|
|
|
+ */
|
|
|
+ public void checkCameraLoading() {
|
|
|
+ try {
|
|
|
+ Camera checkCamera = Camera.open();
|
|
|
+ if (checkCamera != null) {
|
|
|
+ Log.e(TAG, "[checkCameraLoading] checkCamera is not null!!");
|
|
|
+ checkCamera.release();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log.e(TAG, "[checkCameraLoading] checkCamera is null!!");
|
|
|
+ resetCameraService();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] checkCameraLoading()");
|
|
|
+ e.printStackTrace();
|
|
|
+ resetCameraService();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|