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.database.SQLException;
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.provider.Settings;
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 com.util.LogUtil;
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 android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import static com.artncore.commons.define.ALBUM_PICTURE_LOCATION;
import static com.artncore.commons.define.BESTIN_LOCATION;
/**
* @description
* 월패드 [설정기능] 메인화면 이다.
* 상단의 Top 메뉴, [홈] [돌아가기]
* 좌측의 Tab 메뉴, [조명] [난방] [가스] ... 등 선택 메뉴
* 를 여기서 처리한다.
*/
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;
static Context mContext_call = 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;
public static int nShortcutCnt_HS = 0;
public static int nShortcutMax_HS = 9;
public static int nShortcutCnt_Metro = 0;
public static int nShortcutMax_Metro = 3;
int nIconsOnSubScreen = 24;
public static List MainScreenShortcutList;
public static List HSScreenShortcutList;
public static List MetroScreenShortcutList;
// 조명상태를 관리하기 위한 클래스
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getLivinglightPreset()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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
|| Version.getModelType() == MODEL_TYPE.IHN_D101_I_OCF) {
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_2443
) {
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] initLivinglightPreset()");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] setKCCDimmingCtrl()");
LogUtil.errorLogInfo("", TAG, e);
return false;
}
}
private void initEscapeLadderDownSend() {
try {
WallpadDeviceSet deviceSet = new WallpadDeviceSet(getContext());
if(deviceSet!=null)
{
int ladderDownSend = deviceSet.getEscapeLadderDownSend();
boolean ladderDownRecv = deviceSet.GetEscapeLadderDownRecv(); // 기존 '피난사다리입하수신' 설정정보 (더이상 사용하지 않음 2021.01.28)\
Log.d(TAG, "[initEscapeLadderDownSend] ladderDownRecv [" + ladderDownRecv + "]");
if (ladderDownRecv) {
if (ladderDownSend == WallpadDeviceSet.ESCAPELADDER_DOWN_SEND_NONE) {
Log.d(TAG, "[initEscapeLadderDownSend] ===== first setting =====");
deviceSet.setEscapeLadderDownSend(WallpadDeviceSet.ESCAPELADDER_DOWN_SEND_UPPER); // 신규 /'피난사다리전송' 설정정보 '윗집'
} else {
Log.d(TAG, "[initEscapeLadderDownSend] ladderDownSend [" + ladderDownSend + "]");
}
}
deviceSet.closeDB();
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
} catch (Exception e) {
Log.e(TAG, "[Exception] initEscapeLadderDownSend()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] restoreSystemVolume()");
LogUtil.errorLogInfo("", TAG, e);
}
}
// =================================================================================================
// [[ 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!=null && 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] Checking device booting status -> Unable to execute top command");
e.fillInStackTrace();
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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;
mContext_call = mContext;
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[ExceptionError] - new WallPadAPI : " + e);
LogUtil.errorLogInfo("", TAG, e);
}
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) {
Hyosung_HN_MainScreen = new HYOSUNGUI_MAIN_HN(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) 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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!=null && !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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] check device addresses(ip, resi. info.)");
LogUtil.errorLogInfo("", TAG, e);
}
//주차정보 사용여부 체크
getParkedVehicleLocationSysInfo();
//전기차 정보 가져오기
GetElectricCarInfo();
//에너지관리서버 사용여부 가져오기
GetEnergyServerInfo();
//에너지 알람 사용여부 가져오기
GetEnergyAlarm();
//통화타임아웃 초기화
setCallAppTimeoutAsDefault();
//카카오홈 사용 여부 체크(카카오홈)
boolean isUseKakao = getKakaoHomeCheck();
if(isUseKakao)
{
Handler mHandler = new Handler();
mHandler.postDelayed(mLaunchTaskKakao, 500);
mHandler = null;
}
try {
mWallPadApiCheckHandler.sendEmptyMessage(0);
// Checker.sendEmptyMessageDelayed(0, 1000);
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
// sip 서비스 실행 옮김
Log.d(TAG, "[onCreate] startCallService start");
try {
runCallServices startCallService = new runCallServices();
startCallService.start();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
mLightInfo = new LightInfo();
getLivinglightPreset();
initLivinglightPreset();
getLivinglightPreset();
initEscapeLadderDownSend();
setPageIndicator();
mGetCallHistoryCheckHandler.sendEmptyMessageDelayed(0, 10000);
try {
int getSleepTime = Settings.System.getInt(this.getContext().getContentResolver(), SCREEN_OFF_TIMEOUT);
int mSleepModeTime = (getSleepTime / 1000);
Log.d(TAG, "[Create] mSleepModeTime [" + mSleepModeTime + "]");
if (mSleepModeTime <= 30) {
Log.d(TAG, "[Create] Reset mSleepModeTime ===== [" + mSleepModeTime + "] =====");
Settings.System.putInt(this.getContext().getContentResolver(), SCREEN_OFF_TIMEOUT, 28 * 1000); // 백라이트 off와 앱 종료가 동시에 일어나면 월패드가 비정상 종료되므로 수정 (2021.04.06 메이드인랩 김수진 선임 요청)
}
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
try {
handlerEverySecond.sendEmptyMessageDelayed(0, 1000);
// BSP 수정으로 인하여 해당 코드 삭제 (2021.02.24, SEULKI)
// // 월패드 카메라 녹색 노이즈 시험 코드 (월패드 부팅시 월패드 카메라 영상을 잠시 띄운후 없앤다. JEFF/2020.01.21.01)
// /**
// * 부팅시 카메라 서비스 정상동작 여부를 확인한다. (Edited by jeff, 2020.09.08)
// */
// sendHandlerMsgDelayed(HANDLERMSG.CHECK_WALLPAD_CAMERA_CHECK, 0, 0, 0); // 5초후 월패드 카메라를 초기화 한다. (그냥 화면밖에 영상을 잠시 띄우고 5초뒤에 없앤다.)
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
if (bKakaoiEnable) {
Log.i(TAG, "[onCreate] ========== Kakao function enabled ==========");
startKakaoiFloatingBTN();
}
// forceCtrlStrangerRecordingUserSettingDisable(false);
getLCDKeeperUsage();
Log.i(TAG, "[onCreate] ==================== onCreate end ====================");
}
/**
* 카카오 실행 관련 핸들러
*/
private Runnable mLaunchTaskKakao = new Runnable() {
public void run() {
String Packagename = "com.kakao.i.test.real.wallpad";
//Handler를 이용하여 Timer 사용
Intent mainIntent = mContext.getPackageManager().getLaunchIntentForPackage(Packagename);
if (mainIntent != null) {
boolean isShowKakao = getShowKakaoCheck();
if(isShowKakao)
mainIntent.putExtra("ShowKakao", true);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(mainIntent);
};
}
};
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return "ERROR";
}
catch (Exception e) {
Log.e(TAG, "[Exception] getLCDKeeperType(int nLCDKeeperType)");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getLCDKeeperUsage()");
LogUtil.errorLogInfo("", TAG, e);
}
}
public boolean isSystemIPSet() {
try {
Log.i(TAG, "[isSystemIPSet] START!");
String strResult = "";
if (Build.VERSION.SDK_INT > 23) {
// Android 7
strResult = getIPAddress();
}
else {
// Android 6
if(NetworkInterface.getByName("eth0")!=null)
{
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] isSystemIPSet()");
LogUtil.errorLogInfo("", TAG, e);
return false;
}
}
public static String getIPAddress() {
try {
List interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
List 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] isSystemIPSet()");
LogUtil.errorLogInfo("", TAG, e);
}
return "";
}
public void initIOInterface(WallPadAPI wallpadapi) {
try {
mIOInterface = new IOInterface(getContext(), wallpadapi);
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] initIOInterface(WallPadAPI wallpadapi)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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!=null && !addc.Dong.equals("NONE") && addc.Ho!=null&& !addc.Ho.equals("NONE") && addc.IPAddress!=null&& !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 게이트웨이 때문에 위치 옮김 제어 서비스 보다 먼저 처리
if(addc.IPAddress!=null)
{
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception ex) {
//ex.printStackTrace();
LogUtil.errorLogInfo("", TAG, ex);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkDongHoSetting()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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) {
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.w(TAG, "[registerSubScreen] registerSubScreen()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] moveNextPage()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] moveNextPage()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkMainPage()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 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 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] isPackageTop(String strPackageName)");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] dispatchTouchEvent(MotionEvent ev)");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] setPageIndicator()");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* (임시코드) WallPadAPI 초기생성시 Connect 에 시간이 걸리며,
* WallPadAPI 초기화후 바로 Get_GasValveController 등을 사용하여 API 를 가져올수 없기에,
* 본 딜레이 코드를 임시로 적용한다.
*/
@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
|| Version.getModelType() == MODEL_TYPE.IHN_D101_I_OCF) {
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_1010GL_I_2443 || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I_6410) {
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();
FileDelete(savefile);//.delete();
// 생산 기술팀 요청사항
// LED 버튼 보디 교체로 레벨이 너무 밝아 디폴트값 변경을 요청함 ,,
Log.d(TAG, "8888888888888888888888 button brightness Level 1 == " + level);
}
}
}
}
catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
LogUtil.errorLogInfo("", TAG, e);
}
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
Log.e(TAG, e.toString());
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 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();
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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!=null && !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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Common.DebugLog("SIP StartServerice Error!!!!!!!!!!!!!!");
}
devSet.closeDB();
MAINStatus = MAIN_NORMAL;
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e ) {
LogUtil.errorLogInfo("", TAG, e);
}
}
//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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
bScreenCheck = true;
DebugLogOutput("@@@@@@@@ [onResume] @@@@@@@@");
}
protected String getForegroundAPK() {
try {
ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List taskInfo = am.getRunningTasks(1);
ComponentName topActivity=taskInfo.get(0).topActivity;
String str=topActivity.getPackageName();
return str;
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return " ";
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] onBrReceive(Intent intent)");
LogUtil.errorLogInfo("", TAG, e);
}
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; // 통화 앱이 실행되어 있는 경우, 팝업 출력 안함
}
WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
int AlarmStatus = WsDB.GetAlarmStatus();
WsDB.closeDB();
if (AlarmStatus == WallpadStatusData.ALARM_ARISE || AlarmStatus == WallpadStatusData.GUARD_OUT || AlarmStatus == WallpadStatusData.GUARD_OUT_WAIT) {
Log.w(TAG, "[StartPopup] StartPopup denied!!! === AlarmStatus [" + AlarmStatus + "]");
return false; // 방범모드 실행중인 경우, 팝업 출력 안함
}
}
if (getPopupActivityRun()) {
if (ScreenId == ID.POPUPS.POPUP_NOTICESTRANGER) return ((WpadActivity)(PopupActivity.getContext())).ChangeScreen(ScreenId);
else return false;
}
else {
setPopupActivityRun(true);
Intent intent = new Intent(mContext, PopupActivity.class);
intent.putExtra("ScreenId", ScreenId);
overridePendingTransition(0, 0);
startActivityForResult(intent, 0);
return true;
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] StartPopup(int ScreenId)");
LogUtil.errorLogInfo("", TAG, e);
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; // 통화 앱이 실행되어 있는 경우, 팝업 출력 안함
}
WallpadStatusData WsDB = new WallpadStatusData(getApplicationContext());
int AlarmStatus = WsDB.GetAlarmStatus();
WsDB.closeDB();
if (AlarmStatus == WallpadStatusData.ALARM_ARISE || AlarmStatus == WallpadStatusData.GUARD_OUT || AlarmStatus == WallpadStatusData.GUARD_OUT_WAIT) {
Log.w(TAG, "[StartPopup] StartPopup denied!!! === AlarmStatus [" + AlarmStatus + "]");
return false; // 방범모드 실행중인 경우, 팝업 출력 안함
}
}
if (getPopupActivityRun()) {
if (ScreenId == ID.POPUPS.POPUP_NOTICESTRANGER) return ((WpadActivity)(PopupActivity.getContext())).ChangeScreen(ScreenId);
else 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] StartPopup(int ScreenId, Intent data)");
LogUtil.errorLogInfo("", TAG, e);
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) {
if (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 (nReceiveScreenID == ID.SCREENS.SCREEN_HYOSUNGUI_MAIN_HN) {
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);
Hyosung_HN_MainScreen.procDeleteShortcutPopupResult(bResult, nDeleteShortcutID);
return;
}
else if (nReceiveScreenID == ID.SCREENS.SCREEN_METROUI_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);
MetroUI_MainScreen.procDeleteShortcutPopupResult(bResult, nDeleteShortcutID);
return;
}
}
else if (nSenderScreenID == ID.POPUPS.POPUP_ADDSHORTCUT) {
if (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 (nReceiveScreenID == ID.SCREENS.SCREEN_HYOSUNGUI_MAIN_HN) {
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);
Hyosung_HN_MainScreen.procAddShortcutPopupResult(bResult, nAddShortcutID);
return;
}
else if (nReceiveScreenID == ID.SCREENS.SCREEN_METROUI_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);
MetroUI_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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
Log.e(TAG, e.toString());
LogUtil.errorLogInfo("", TAG, e);
}
}
/* ================================================================================================
* [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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] resetCurrentInfoScreenID()");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 매뉴얼 버튼 사용 유무
*
* @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 변경을 요청할 경우 호출된다.
* Override 사용하여 Screen 변경을 처리한다.
*
* @param nScreenId - 변경할 Screen ID_OLD
* @return (boolean) true : 성공, false : 실패
*/
@Override
protected boolean onChangeScreen(int nScreenId) {
super.onChangeScreen(nScreenId);
return setChangeScreen(nScreenId, false, false);
}
/**
* Screen 등록자
* 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
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 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 {
//여기서 직접 연동이 있는지 확인이 필요
WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(this);
int[] naSubWallPadLight = mWallpadDeviceSet.GetSubWpdDirect_Light();
mWallpadDeviceSet.closeDB();
if(naSubWallPadLight!=null && naSubWallPadLight.length == 2 && naSubWallPadLight[1] == WallpadDeviceSet.SUBWPD_CTR_DIRECT)
{
ActivityManager mActivityManager = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runDeviceService()");
LogUtil.errorLogInfo("", TAG, e);
}
}
// 통신으로 들어오는 비상버튼 스킵하기 위한 딜레이 체크 변수
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 (RuntimeException re) {
// LogUtil.errorLogInfo("", TAG, re);
// }
// 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
// 충전시작
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
// 충전 종료
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);
mIOInterface.ctrlLcdWakeUp();
// StartPopup(ID.POPUPS.POPUP_NOTICESTRANGER, data); // 시나리오 변경: 거동수상자 알림 팝업 삭제 (바로 녹화 시작)
WallpadStatusData SetData = new WallpadStatusData(mContext);
boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
SetData.closeDB();
if (soundOut) Sound().Play(SND.effect.EFFECT1);
// 메인 앱으로 BR 전송
Intent notiIntent = new Intent();
notiIntent.setAction(define.NOTIFY_ACNAME);
notiIntent.putExtra(define.NOTIBR_KIND, define.NOTIFY_ACCEPT_RECORD_STRANGER);
mContext.sendBroadcast(notiIntent);
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;
default:
Log.w(TAG, "[mWallPadNotifyBR] (BR.nKind) Not support!! -> " + kind);
break;
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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();
int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
if(danjiserverType == 1)
{
mNewDanjiServer = false;
}
else if(danjiserverType == 2)
{
mNewDanjiServer = true;
}
else
{
mNewDanjiServer = true;
}
wallpadDeviceSet.closeDB();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
mNewDanjiServer = false;
}
catch (Exception e) {
Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
Intent Newintent = new Intent();
Newintent.setAction(define.NOTIFY_ACNAME);
Newintent.putExtra(define.NOTIBR_KIND,define.NOTIFY_SENDBOOTUP_FAIL);
sendBroadcast(Newintent);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) { LogUtil.errorLogInfo("", TAG, 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
// 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] mWallPadNotifyBR.onReceive()");
LogUtil.errorLogInfo("", TAG, e);
}
break;
case define.NOTIFY_UPDATEPARKING:
Common.DebugLog("Main Activity Receive Br=== . define.NOTIFY_UPDATEPARKING ");
/*
WallpadParkInfo parkdb = new WallpadParkInfo(getApplicationContext());
List parkList = parkdb.GetParkInfo();
if(parkList != null)
{
for(int j= 0; j 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
LogUtil.errorLogInfo("", TAG, e);
}
}
break;
case define.NOTIFY_GET_CAR_PARKING:
try
{
if(bUseofNot_ParkingInfo == true)
{
bSetMSG_GetParkingInfo = true;
LoadParkingDataFromServer();
}
else
{
DebugLogOutput("bUseofNot_ParkingInfo == false");
}
}
catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e )
{
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] ctrlLCDOnOff(boolean bOn)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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()) FileDelete(updradef);//.delete();
}
}
sdb.SetSystemUpdate(null, null);
}
sdb.closeDB();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] Check_Upgrade_File()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] SendAppFinishReqBR()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] registerBroadcastReceiver()");
LogUtil.errorLogInfo("", TAG, e);
}
}
private void unregisterBroadcastReceiver() {
try {
unregisterReceiver(mWallPadAlertBR);
unregisterReceiver(mWallPadNotifyBR);
unregisterReceiver(MainActivityBroadcastReceiver);
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] unregisterBroadcastReceiver()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] CheckEnv()");
LogUtil.errorLogInfo("", TAG, e);
}
}
public void FileCopy(String Target, String Source) {
FileInputStream input = null;
FileOutputStream output = null;
try {
input = new FileInputStream(Source);
long size = input.available();
byte buff[] = new byte[(int)size];
input.read(buff);
output = new FileOutputStream(Target);
output.write(buff);
output.flush();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e ) {
Log.e(TAG, "[Exception] FileCopy(String Target, String Source)");
LogUtil.errorLogInfo("", TAG, e);
}
finally {
if(input!=null) {
try {
input.close( );
} catch (IOException e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
input = null;
if(output!=null) {
try {
output.close();
} catch (IOException e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
output = null;
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadCallHistoryData");
LogUtil.errorLogInfo("", TAG, e);
}
mWallpadCallHistoryData.closeDB();
// 방문자 사진
WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
try {
nVisitorPicCnt = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadVisitorPicData_A20");
LogUtil.errorLogInfo("", TAG, e);
}
mWallpadVisitorPicData_A20.closeDB();
// 공지사항, 택배, 스마트 우편
WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
try {
nNoticeCnt = mWallpadStatusData.GetNoticeCNT();
nParcelCnt = mWallpadStatusData.GetParcelCNT();
nPostCnt = mWallpadStatusData.GetPostCNT();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkEventNotifications() -> mWallpadStatusData");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkEventNotifications()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadCallHistoryData");
LogUtil.errorLogInfo("", TAG, e);
}
mWallpadCallHistoryData.closeDB();
// 방문자 사진
WallpadVisitorPicData_A20 mWallpadVisitorPicData_A20 = new WallpadVisitorPicData_A20(getContext());
try {
nVisitorPicCnt = mWallpadVisitorPicData_A20.RowVisitorPictureCountData();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadVisitorPicData_A20");
LogUtil.errorLogInfo("", TAG, e);
}
mWallpadVisitorPicData_A20.closeDB();
// 공지사항, 택배
WallpadStatusData mWallpadStatusData = new WallpadStatusData(this.getContext());
try {
nNoticeCnt = mWallpadStatusData.GetNoticeCNT();
nParcelCnt = mWallpadStatusData.GetParcelCNT();
nPostCnt = mWallpadStatusData.GetPostCNT();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getEventNotificationInfo() -> mWallpadStatusData");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return null;
}
catch (Exception e) {
Log.e(TAG, "[Exception] getEventNotificationInfo()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendEventNotiBR(int missedcall, int visitorpic, int notice, int parcel, int post, int elecvehiclecharging)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] CheckCallData_CalledCountAndVisitorCount()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 SchedulerData = new ArrayList();
List GeneralData = new ArrayList();
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] CheckSysResetData()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
}
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 scheduledata = schedata.GetTodaySchedule();
Log.i("MAINSCREEN","refreshSchedulerData "+scheduledata.size());
for(int i=0;i 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runCallServices().run()");
LogUtil.errorLogInfo("", TAG, e);
}
}
}
// 방문객원격통화 솔루션 사용여부 판별
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] GetRemoteCallUseInfo()");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {;
Log.e(TAG, "[Exception] uninstallAnCCallApp()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkAppInstalled(String strAPK)");
LogUtil.errorLogInfo("", TAG, e);
return false;
}
}
private boolean MainSubScreenLoadingComplite = false;
public boolean getMainSubScreenLoadingComplite() {
return MainSubScreenLoadingComplite;
}
/**
* 설치된 모든 어플의 이름/버전정보 Version DB에 저장하는 쓰레드.
* 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 PackageVersionInfos = new ArrayList();
List 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
break;
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
if (Version.getModelType() == Version.MODEL_TYPE.IHN_1020B_C || Version.getModelType() == Version.MODEL_TYPE.IHN_1030_D) {
try {
Thread.sleep(1000);
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
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) {
LogUtil.errorLogInfo("", TAG, e);
}
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
// 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
try {Thread.sleep(5000);}
catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
MainSubScreenLoadingComplite = true;
}
catch (Exception e){LogUtil.errorLogInfo("", TAG, e);}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
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 (getCompareBSPVersion()) {
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
// 스케줄 일정 알람 팝업을 띄우도록 한다.
// 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
// 중복.... 이게 왜 있는겨....
// 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 (getCompareBSPVersion()) {
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
if (SCManager != null) SCManager.scheduleCheck();
if (MAX_BOOTUP_RETRY_COUNT < bootupretryCNT && SYSTEM_TIME_SET == false) {
try {
WallPadiMAPNotifyAPI iMAPMethod = new WallPadiMAPNotifyAPI(getApplicationContext());
iMAPMethod.ReqGetSet();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
//주차정보 관련 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkTimeTasks()");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 일정 알림 팝업창 생성하는 함수
* 김용성 과장님 이곳에서 팝업창 생성해주시기 바랍니다.
* @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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] MakePopup_Schedule(String popup_msg)");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 일정 알림 시간 비교!
* **/
private void checkScheduleReminder() {
try {
Calendar ScheduleCal = Calendar.getInstance();
Log.i(TAG, "[checkScheduleReminder] ScheduleCal: " + ScheduleCal.getTime());
WallpadScheduleData SCData = new WallpadScheduleData(getApplicationContext());
// List scheduleDataDB = SCData.NewGetScheduleDataForMainActivity(ScheduleCal.get(Calendar.YEAR), ScheduleCal.get(Calendar.MONTH) + 1, ScheduleCal.get(Calendar.DAY_OF_MONTH));
List 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkScheduleReminder(Calendar cal)");
LogUtil.errorLogInfo("", TAG, e);
}
}
// 프로토콜에 정의된 일정표 이벤트 종류를 변환하여 반환한다.
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return "알수없음";
}
catch (Exception e) {
Log.e(TAG, "[Exception] getScheduleEventType(String strEvent)");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
bUseofNot_ParkingInfo = false;
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
bUseofNot_ParkingInfo = false;
}
}
else {
bUseofNot_ParkingInfo = false;
DebugLogOutput("[getParkedVehicleLocationSysInfo] bUseofNot_ParkingInfo ["+bUseofNot_ParkingInfo + "]");
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
//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 주차정보 서버로부터 얻어오기
* 호출 시에는 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
cGetParkingMin = 0;
bSetMSG_GetParkingInfo = false;
}
catch (Exception e) {
cGetParkingMin = 0;
bSetMSG_GetParkingInfo = false;
Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
cGetParkingMin = 0;
bSetMSG_GetParkingInfo = false;
}
catch (Exception e) {
cGetParkingMin = 0;
bSetMSG_GetParkingInfo = false;
Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
LogUtil.errorLogInfo("", TAG, e);
}
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, false);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
cGetParkingMin = 0;
bSetMSG_GetParkingInfo = false;
}
catch (Exception e) {
cGetParkingMin = 0;
bSetMSG_GetParkingInfo = false;
Log.e(TAG, "[Exception] iMAPcarParking.ProcSuccess()");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] LoadParkingDataFromServer()");
LogUtil.errorLogInfo("", TAG, e);
}
}
// 한시간에 한번식 호출되는 함수임
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
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() > 8) EnergyAlramPopupMgr.PopupMsg01 = strNear + "사용량이\n목표값에 가까워지고 있습니다.\n확인 하시겠습니까?";
else if (0 < strNear.length() && strNear.length() <= 8) EnergyAlramPopupMgr.PopupMsg01 = strNear + "사용량이 목표값에 가까워지고 있습니다.\n확인 하시겠습니까?";
else EnergyAlramPopupMgr.PopupMsg01 = "";
if (strOver.length() > 10) {
EnergyAlramPopupMgr.PopupMsg02 = strOver + "사용량이\n목표값을 초과하였습니다.\n확인 하시겠습니까?";
}
else if (0 < strOver.length() && strOver.length() <= 10) {
EnergyAlramPopupMgr.PopupMsg02 = strOver + "사용량이 목표값을 초과하였습니다.\n확인 하시겠습니까?";
}
else if(strOver.length() < 0){
EnergyAlramPopupMgr.PopupMsg02 = "";
}
if (EnergyAlramPopupMgr.PopupMsg01.length() > 0 || EnergyAlramPopupMgr.PopupMsg02.length() > 0) {
mIOInterface.ctrlLcdWakeUp();
StartPopup(ID.POPUPS.POPUP_ENERGYUSAGEALERT);
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] CheckEnergyUsage()");
LogUtil.errorLogInfo("", TAG, e);
}
}
//시간 동기화를 위한 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return null;
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return null;
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
} finally {
try {
if (bufferWriter != null) {
bufferWriter.close();
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] GetElectricCarInfo()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] GetElectricCarInfo_RandomCheckHandler()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] LoadElectricCarDataFromServer() -> ProcSuccess");
LogUtil.errorLogInfo("", TAG, e);
}
}
@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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
}
else
{
}
Log.d(TAG, "[bUseofNot_EnergyServer] bUseofNot_EnergyServer :"+bUseofNot_EnergyServer);
}
/**
* 카카오 사용 여부 체크
* @return
*/
public boolean getKakaoHomeCheck()
{
boolean result = false;
WallpadDeviceSet mWallpadDeviceSet = null;
mWallpadDeviceSet = new WallpadDeviceSet(getContext());
try {
result = mWallpadDeviceSet.Get_KakaoUse();
}
catch (SQLException e)
{
LogUtil.errorLogInfo("", TAG, e);
}
return result;
}
/**
* 사용자 설정(카카오를 볼것인지 아닌지를 설정)
* @return
*/
public boolean getShowKakaoCheck()
{
boolean result = false;
WallpadDeviceSet mWallpadDeviceSet = null;
mWallpadDeviceSet = new WallpadDeviceSet(getContext());
try {
result = mWallpadDeviceSet.Get_KakaoShow();
}
catch (SQLException e)
{
LogUtil.errorLogInfo("", TAG, e);
}
return result;
}
public boolean GetEnergyAlarm()
{
boolean ret = false;
WallpadStatusData DBMGR = null;
DBMGR = new WallpadStatusData(getContext());
if( DBMGR != null )
{
try
{
ret = DBMGR.GetRemoteMetering_Alarm();
}
catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
ret = false;
DBMGR.insertWallPADDB(WallpadStatusData.REMOTE_METERING_ALARM_USE, WallpadStatusData.REMOTE_METERING_ALARM_USE_DEFAULT);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
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.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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runWallPadCallAPKByUX(int nScreen)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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.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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runWallPadCallAPKByUX(int nScreen, int nEmerState)");
LogUtil.errorLogInfo("", TAG, e);
}
}
public void runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType) {
try {
Log.i(TAG, "[runCallMainActivity] Common.bWallPadCallLive [" + Common.bWallPadCallLive + "], eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "]");
if (!Common.bWallPadCallLive) {
// 통화어플을 실행시킨다.
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runCallMainActivity()");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendLCDBacklightStatus(boolean bOn)");
LogUtil.errorLogInfo("", TAG, e);
}
}
public void runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType, int nEmerState) {
try {
Log.i(TAG, "[runCallMainActivity] Common.bWallPadCallLive [" + Common.bWallPadCallLive + "], eCallOwner [" + eCallOwner + "], eEventType [" + eEventType + "], eCallType [" + eCallType + "], nEmerState [" + nEmerState + "]");
if (!Common.bWallPadCallLive) {
// 통화어플을 실행시킨다.
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runCallMainActivity(CALLOWNER eCallOwner, CALLEVENTTYPE eEventType, CALLTYPE eCallType, int nEmerState)");
LogUtil.errorLogInfo("", TAG, e);
}
}
private String getTopActivity() {
try {
ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List mTaskInfo = mActivityManager.getRunningTasks(1);
// LOG_INFO("[isMainActivityTop] getClassName = " + mTaskInfo.get(0).topActivity.getClassName());
ComponentName mComponentName = mTaskInfo.get(0).topActivity;
// LOG_INFO("[isMainActivityTop] getPackageName = " + mComponentName.getPackageName());
return mComponentName.getPackageName();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return null;
}
catch (Exception e) {
Log.e(TAG, "[Exception] getTopActivity()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
if (mWallpadDeviceSet != null) mWallpadDeviceSet.closeDB();
}
catch (Exception e) {
Log.e(TAG, "[Exception] setCallAppTimeoutAsDefault()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] startManagerSettingSetAddress()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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);
try {
// 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();
}
catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
}
finally {
if(myOutput!=null)
myOutput.close();
myOutput = null;
if(myInput!=null)
myInput.close();
myInput = null;
}
}
@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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
}
};
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);
if(strElevShortEnabled!=null)
{
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()) {
// 모델별 설정에 따라 구분하여 호출하는 기능 추가해야함
WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(mContext);
int[] naLightEnable = mWallpadDeviceSet.Get_Light_info(); // 조명설정 확인
if (mWallpadDeviceSet != null) mWallpadDeviceSet.closeDB();
// for (int i = 0; i < naLightEnable.length; i++) Log.i(TAG, "[runIcon] naLightEnable[" + i + "] = " + naLightEnable[i]);
//기본형
if (naLightEnable[1] == WallpadDeviceSet.LIGHT_TYPE_HDC_INTLIGHT_NORMAL) {
m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDCLivingNEach_Lamp);
}
//기본형 + 에너지미터
else if(naLightEnable[1] == WallpadDeviceSet.LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH) {
m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDCLivingNEnergyMeter_Lamp);
}
else {
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_CURTAIN.getID()) {
m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.Curtain);
}
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()) {
WallpadDeviceSet mWallpadDeviceSet = new WallpadDeviceSet(mContext);
int[] naLightEnable = mWallpadDeviceSet.Get_Light_info(); // 조명설정 확인
if (mWallpadDeviceSet != null) mWallpadDeviceSet.closeDB();
if (naLightEnable[1] == WallpadDeviceSet.LIGHT_TYPE_HDC_INTLIGHT_ADD_BATCHLIGHT_MULTISWITCH) {
m_CallSubMenuScreen.callStartHomeCtrlAPK(ID.LINKEDSCREEN.SubMenuCtrl.HDCLivingNEach_Concent);
}
else {
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runShortcut(int nIconID)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runSecurityAPK(int nScreenID)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runEmergencyAPK(Context context, int nScreenID, int startOption, String detailInfo)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runGoogleLauncher()");
LogUtil.errorLogInfo("", TAG, e);
}
}
public void setCallAppRunning(boolean bRunning) {
try {
Log.i(TAG, "[setCallAppRunning] bRunning [" + bRunning + "]");
WallpadStatusData DBMGR = new WallpadStatusData(getApplicationContext());
DBMGR.SetCallAPKStatus(bRunning);
DBMGR.closeDB();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] setCallAppRunning(boolean bRunning)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] registerMainActivityBR()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] MainActivityBroadcastReceiver()");
LogUtil.errorLogInfo("", TAG, e);
}
}
};
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)) return Common.GUI_TYPE.HYOSUNG;
else if (strGUIType.equalsIgnoreCase(WallpadDeviceSet.MAIN_GUI_TYPE_HIMCHAN)) return Common.GUI_TYPE.HIMCHAN;
else return Common.GUI_TYPE.STANDARD;
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return Common.GUI_TYPE.STANDARD;
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkGUIType(Context context)");
LogUtil.errorLogInfo("", TAG, e);
return Common.GUI_TYPE.STANDARD;
}
}
public void finishActivity() {
try {
Log.i(TAG, "[finishActivity]");
super.finish();
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] finishActivity()");
LogUtil.errorLogInfo("", TAG, e);
}
}
// 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] savePresetValue(String strPresetValues)");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] initProximitySensor()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkInterFloorNoiseError()");
LogUtil.errorLogInfo("", TAG, e);
return false;
}
}
private boolean checkInterFloorNoiseFuncUsage() {
try {
WallpadStatusData wsd = new WallpadStatusData(getContext());
boolean bUsage = wsd.GetNoisePopupUse();
wsd.closeDB();
return bUsage;
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkInterFloorNoiseFuncUsage()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return -100;
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendKeyEventBR(int nKeyCode) [" + nKeyCode + "]");
LogUtil.errorLogInfo("", TAG, e);
return -100;
}
return 0;
}
// 카카오 연동 관련
public static boolean bKakaoiEnable = false;
/**
* 이진규
* kakaohome 서비스 사용 유무 판단
*/
protected boolean bKakaoHomeEnable = 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] startKakaoiFloatingBTN()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e)
{
Log.e(TAG, e.toString());
LogUtil.errorLogInfo("", TAG, e);
}
}
// 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 (RuntimeException re) {
// LogUtil.errorLogInfo("", TAG, re);
// }
// 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 (RuntimeException re) {
// LogUtil.errorLogInfo("", TAG, re);
// }
// 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 (RuntimeException re) {
// LogUtil.errorLogInfo("", TAG, re);
// }
// 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 PackageVersionInfos = new ArrayList();
List 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
break;
} catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
} catch (Exception e) {
LogUtil.errorLogInfo("", TAG, e);
}
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
} catch (Exception e) {
Log.e(TAG, "[Exception] UninstallAPKs.run()");
LogUtil.errorLogInfo("", TAG, e);
}
// try {Thread.sleep(5000);}catch (RuntimeException re) { LogUtil.errorLogInfo("", TAG, re);}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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {;
Log.e(TAG, "[Exception] uninstallWallPadApp()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
nEnergyTypeCnt = 5;
mEMS_Enable = true;
}
catch (Exception e)
{
LogUtil.errorLogInfo("", TAG, e);
nEnergyTypeCnt = 5;
mEMS_Enable = true;
}
}
else
{
nEnergyTypeCnt = 5;
mEMS_Enable = true;
}
}
/**
* @description
* 서버로 부터 데이터를 받아와 분석하고 표현하는 함수
* @param
* InputType 0 당월, 1 일별
* @param
* //year - 연도
* @param
* //month - 월
* @param
* //energy - 0 전기, 1 수도, 2 가스, 3 온수, 4 열량, 5 탄소
*/
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;
}
boolean isUseEMS = true;
WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
isUseEMS = wds.GetEMSProtocolUse();
wds.closeDB();
if(isUseEMS)
{
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 (RuntimeException re) {
if (StatusDBMGR != null) {
StatusDBMGR.closeDB();
}
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
if (StatusDBMGR != null) {
StatusDBMGR.closeDB();
}
LogUtil.errorLogInfo("", TAG, e);
}
}
@Override
public void ProcError() {
Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcError] Error!!!");
}
@Override
public void ProcDoing() {
Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcDoing] Processing!!!");
}
});
}
else {
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");
}
}
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");
}
}
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");
}
}
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");
}
}
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");
}
}
monthTableClass[j].Goal = StatusDBMGR.GetRemoteMeteringTargetValue(j);
//DebugLogOutput("열량");
//DebugLogOutput("Homeuse: " + monthTableClass[j].Use);
//DebugLogOutput("SamePyungUse: " + monthTableClass[j].SamePyungUse);
break;
case 5:
monthTableClass[j] = new MonthTableClass("", "", "", "");
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 (RuntimeException re) {
if (StatusDBMGR != null) {
StatusDBMGR.closeDB();
}
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
if (StatusDBMGR != null) {
StatusDBMGR.closeDB();
}
LogUtil.errorLogInfo("", TAG, e);
}
}
@Override
public void ProcError() {
Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcError] Error!!!");
}
@Override
public void ProcDoing() {
Log.w(TAG, "[LoadRemotemeterDataFromServer.ProcDoing] Processing!!!");
}
});
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] LoadRemotemeterDataFromServer(int InputType, int Year, int Month, int Energy)");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* @description
* 서버로 부터 데이터를 받아와 분석하고 표현하는 함수
* @param
* //year - 연도
* @param
* //month - 월
* @param
* //energy - 0 전기, 1 수도, 2 가스, 3 온수, 4 열량, 5 탄소
*/
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);
boolean isUseEMS = true;
WallpadDeviceSet wds = new WallpadDeviceSet(getContext());
isUseEMS = wds.GetEMSProtocolUse();
wds.closeDB();
if(isUseEMS)
{
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getTelemeringDailyData.ProcSuccess");
LogUtil.errorLogInfo("", TAG, e);
}
}
@Override
public void ProcError() {
Log.w(TAG, "[getTelemeringDailyData.ProcError] Error!!!");
}
@Override
public void ProcDoing() {
Log.w(TAG, "[getTelemeringDailyData.ProcDoing] Processing!!!");
}
});
}
else
{
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getTelemeringDailyData.ProcSuccess");
LogUtil.errorLogInfo("", TAG, e);
}
}
@Override
public void ProcError() {
Log.w(TAG, "[getTelemeringDailyData.ProcError] Error!!!");
}
@Override
public void ProcDoing() {
Log.w(TAG, "[getTelemeringDailyData.ProcDoing] Processing!!!");
}
});
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getTelemeringDailyData(int nYear, int nMonth)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendRemotemeterDataToMobile()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return;
}
catch (Exception e) {
Log.e(TAG, "[Exception] getTelemeteringDataOnRandomTime()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkISSEnergyType()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getRemoteMeterDataFromServer()");
LogUtil.errorLogInfo("", TAG, e);
}
}
private boolean getBlackoutStatus() {
try {
SharedPreferences mSharedPreferences = getSharedPreferences("BlackoutStatus", MODE_PRIVATE);
return mSharedPreferences.getBoolean("status", false);
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] getBlackoutStatus()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] sendBlackoutScreenRunBR()");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 월패드 타입 판별
* @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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] getIsSubWallpad()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] toggleMyVideo()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] initMyVideoSurfaceLayout()");
LogUtil.errorLogInfo("", TAG, e);
}
}
public void removeMyVideoSurfaceLayout() {
try {
Log.i(TAG, "[removeMyVideoSurfaceLayout] MyVideoLayout = " + MyVideoLayout);
if (MyVideoLayout != null) {
MyVideoLayout.removeAllViews();
MyVideoLayout = null;
}
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] removeRemoteVideoSurfaceLayout()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] MyVideoCallback -> surfaceCreated(SurfaceHolder holder)");
LogUtil.errorLogInfo("", TAG, e);
}
}
@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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] MyVideoCallback -> surfaceChanged(SurfaceHolder holder, int format, int width, int height)");
LogUtil.errorLogInfo("", TAG, e);
// 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] MyVideoCallback -> surfaceDestroyed(SurfaceHolder holder)");
LogUtil.errorLogInfo("", TAG, e);
}
}
};
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getWallPadCameraUsage()");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] forceCtrlStrangerRecordingUserSettingDisable(boolean bEnable)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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.bringToFront();
IMG_LCD_KEEPER.setVisibility(View.INVISIBLE);
Log.i(TAG, "[registerLCDKeeper] ===== END =====");
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] registerLCDKeeper()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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, "[runLCDKeeper] bLCDKeeperUsage is false!!!");
return;
}
Log.i(TAG, "[runLCDKeeper] nKeeperMode [" + nKeeperMode +"], bLCDBacklightPower [" + bLCDBacklightPower +"]");
if (Build.VERSION.SDK_INT < 24) {
Log.w(TAG, "[runLCDKeeper] 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.setImageBitmap(null);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] runLCDKeeper(int nKeeperMode)");
LogUtil.errorLogInfo("", TAG, e);
}
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] ctrlLCDKeeper()");
LogUtil.errorLogInfo("", TAG, e);
}
}
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_1010GL || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I
|| Version.getModelType() == MODEL_TYPE.IHN_1010GL_I_2443 || Version.getModelType() == MODEL_TYPE.IHN_1010GL_I_6410
|| Version.getModelType() == MODEL_TYPE.IHN_T1010 || Version.getModelType() == MODEL_TYPE.IHN_T1010_I
|| Version.getModelType() == MODEL_TYPE.IHN_1303_I || Version.getModelType() == MODEL_TYPE.IHN_D101_I_OCF) {
return true;
}
else return false;
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkTranslucentGlassUsage()");
LogUtil.errorLogInfo("", TAG, e);
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!=null)
{
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;
}
}
else return false;
} catch (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
return false;
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkLCDOnByCMD()");
LogUtil.errorLogInfo("", TAG, e);
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] getCompareBSPVersion()");
LogUtil.errorLogInfo("", TAG, e);
}
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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
}
catch (Exception e) {
Log.e(TAG, "[Exception] resetCameraService()");
LogUtil.errorLogInfo("", TAG, e);
}
}
/**
* 월패드 부팅시 카메라서비스 로딩이 실패하는 경우가 발생하여
* 카메라서비스 정상동작 여부를 확인하기위한 함수를 정의한다.
* 카메라서비스 정상: 정상적으로 카메라가 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 (RuntimeException re) {
LogUtil.errorLogInfo("", TAG, re);
resetCameraService();
}
catch (Exception e) {
Log.e(TAG, "[Exception] checkCameraLoading()");
LogUtil.errorLogInfo("", TAG, e);
resetCameraService();
}
}
private synchronized void FileDelete(File file)
{
if(file!=null && file.exists())
{
file.delete();
}
}
public static void ReDirectCall(String ip)
{
Intent Intent = new Intent();
Intent.setAction("CERES_CALL");
Intent.putExtra("REMOTEINFO", ip);
mContext_call.sendBroadcast(Intent);
}
}