From 2ab5fb6e741bf8959607e5430e377a069c5fb352 Mon Sep 17 00:00:00 2001 From: snickersun Date: Fri, 4 Dec 2020 01:29:21 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=E9=98=B2=E8=B5=B0=E4=B8=A2?= =?utf8?q?=E9=9D=99=E9=BB=98=E6=97=B6=E9=97=B4=E6=AE=B5=E6=8E=A7=E5=88=B6?= =?utf8?q?=EF=BC=88=E9=98=B2=E6=89=93=E6=89=B0=EF=BC=89SILENCETIME2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 + .../com/enqualcomm/support/CoreService.java | 95 +- .../com/enqualcomm/support/ParseUpdate.java | 331 --- .../java/com/enqualcomm/support/PassData.java | 55 - .../com/enqualcomm/support/bean/Silent.java | 124 +- .../com/enqualcomm/support/bean/Update.java | 300 --- .../support/service/AntiMonitorService.java | 1 + .../support/service/SilentManager.java | 220 +- .../enqualcomm/support/utils/DBHelper.java | 2339 +++++++++-------- .../enqualcomm/support/utils/IBeaconUtil.java | 2 +- .../support/utils/SimSignalUtil.java | 19 - .../com/enqualcomm/support/utils/Util.java | 2305 ++++++++-------- .../java/com/ic/protocols/protocol_fzd.java | 86 +- 13 files changed, 2653 insertions(+), 3226 deletions(-) delete mode 100644 app/src/main/java/com/enqualcomm/support/ParseUpdate.java delete mode 100644 app/src/main/java/com/enqualcomm/support/PassData.java delete mode 100644 app/src/main/java/com/enqualcomm/support/bean/Update.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 43928644..98fa0b87 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -171,6 +171,8 @@ + + diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 1fe12bee..23616594 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -76,6 +76,7 @@ import java.util.concurrent.TimeUnit; import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import static com.enqualcomm.support.Constants.ACTION_ALARM_ADD_DATAPOINTS; +import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_ALARM_BLE_SCAN; import static com.enqualcomm.support.Constants.ACTION_ALARM_CHECK_ANTI; import static com.enqualcomm.support.Constants.ACTION_CHECK_ANTIOFF_EVENT; @@ -113,7 +114,7 @@ public class CoreService extends Service { private static final String MY_WAKE_LOCKTAG =CoreService.class.getSimpleName(); - public static int alarmCycle = 1; + public static int alarmCycle = 5; public static final int interval = 60000; @@ -175,7 +176,7 @@ public class CoreService extends Service { // setHeartAlarm(); // setHeartRateDetectAlarm(runtime.getPpgTestCycle()); setWeatherAlarm(); - runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE",runtime); //更新Alarm + runtime.getContextProxy().sendBroadcast(ACTION_ALARM_ALARM_CHANGE,runtime); //更新Alarm // setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); if (cmcm_call_eiot_into_powersave_mode() == 0) AlarmWakeUp.isNeedWakeUpAlarm(runtime); @@ -808,7 +809,7 @@ public class CoreService extends Service { - Config.setHeartBeatCycle(this,5); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。 + Config.setHeartBeatCycle(this,alarmCycle); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。 //初始化ServerHeartBeat Cycle Config.loadHearBeatSetting(runtime); //初始化PPG,LocationMod,LocationCycle @@ -957,7 +958,7 @@ public class CoreService extends Service { } //设置来电模式 - SimSignalUtil.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true); + Util.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true); //备份DB数据到sd cache目录,为调试方便 Util.getDBFile(); @@ -1139,7 +1140,46 @@ public class CoreService extends Service { stringBuilder.append(paramInt2); ICLogger.i(stringBuilder.toString()); // if (ACTION_ALARM.equals(paramIntent.getAction())) { - if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())) { + + if (HEART_ALARM.equals(paramIntent.getAction())) { + //发送心跳间隔广播给其他应用 + this.runtime.getContextProxy().sendBroadcast(ACTION_EQC_ALARM, this.runtime); + this.connectionServiceChain.processAlarmClock(this.connection, this.runtime); + this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime); +// if (SystemClock.elapsedRealtime() - this.mWeatherTime > 60000L && this.mHaveSetWeatherAlarm) { +// setWeatherAlarm(); +// this.mHaveSetWeatherAlarm = false; +// return Service.START_NOT_STICKY; +// } + + locationClient.updateStepCount(); + updateSleepDate(); //检查睡眠 + checkKeepSitting();//检查久坐 + checkAlarmMessage();//检测是否有报警消息需要显示 + checkUnreadMessage();//检查未读消息 + if (this.mKeepAlive != null) { + if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { + this.mKeepAlive.onHeartAlarm(this.connection, this.runtime); + ICLogger.i("triggerBLEProcess "); + locationClient.triggerBLEProcess();//每次心跳检测一次BLE + Deliver.triggerSendThread(); + } else { + // if (this.mKeepAlive.is_retry_time_above_limit()) { + ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!"); + connection.disconnectServer(); + this.startConnectionRetryTimer(); + // }else{ + // ICLogger.i(""); + // } + } + //检测电池电量 并上报低电报警 + batteryUtil.getBatteryLevel(this); + setHeartAlarm(); + if (Config.LOG_TOFILE) + ICLogger.logToFile("alarmCycle", "HEART_ALARM alarmCycle "); + return Service.START_STICKY; + } + }else if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())) { // if (cmcm_call_eiot_into_powersave_mode() == 1) { @@ -1166,16 +1206,8 @@ public class CoreService extends Service { // setAlarm(alarmCycle); // if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "ALARM alarmCycle"); - //发送心跳间隔广播给其他应用 - this.runtime.getContextProxy().sendBroadcast(ACTION_EQC_ALARM, this.runtime); + this.locationClient.onAlarm(getWakeLock(1)); - this.connectionServiceChain.processAlarmClock(this.connection, this.runtime); - this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime); -// if (SystemClock.elapsedRealtime() - this.mWeatherTime > 60000L && this.mHaveSetWeatherAlarm) { -// setWeatherAlarm(); -// this.mHaveSetWeatherAlarm = false; -// return Service.START_NOT_STICKY; -// } //收到定时定位消息 @@ -1186,6 +1218,12 @@ public class CoreService extends Service { if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString()); // this.locationClient.triggerLocationProcess(); + }else if (Constants.OTHER_ALARM_END.equals(paramIntent.getAction())) { + ICLogger.i("OTHER_ALARM_END set Ringmode Normal vib true"); + SilentManager.setSilentConfig(this,false); + }else if (Constants.OTHER_ALARM_START.equals(paramIntent.getAction())) { + ICLogger.i("OTHER_ALARM_START set Ringmode Silent vib false"); + SilentManager.setSilentConfig(this,true); }else if (Constants.ACTION_ALARM_BLE_SCAN.equals(paramIntent.getAction())) { //循环蓝牙扫描 setBleScanAlarm(runtime.bleInfo.bleScanCycle); @@ -1251,35 +1289,6 @@ public class CoreService extends Service { setTempAlarm(); return Service.START_STICKY; - } else if (HEART_ALARM.equals(paramIntent.getAction())) { - - locationClient.updateStepCount(); - updateSleepDate(); //检查睡眠 - checkKeepSitting();//检查久坐 - checkAlarmMessage();//检测是否有报警消息需要显示 - checkUnreadMessage();//检查未读消息 - if (this.mKeepAlive != null) { - if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { - this.mKeepAlive.onHeartAlarm(this.connection, this.runtime); - ICLogger.i("triggerBLEProcess "); - locationClient.triggerBLEProcess();//每次心跳检测一次BLE - Deliver.triggerSendThread(); - } else { - // if (this.mKeepAlive.is_retry_time_above_limit()) { - ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!"); - connection.disconnectServer(); - this.startConnectionRetryTimer(); - // }else{ - // ICLogger.i(""); - // } - } - //检测电池电量 并上报低电报警 - batteryUtil.getBatteryLevel(this); - setHeartAlarm(); - if (Config.LOG_TOFILE) - ICLogger.logToFile("alarmCycle", "HEART_ALARM alarmCycle "); - return Service.START_STICKY; - } } else if (STEP_COUNT_ALARM_ACTION.equals(paramIntent.getAction())) { ICLogger.i("Reset Count At 00:00 "); //update stepCount and broadcast before reset diff --git a/app/src/main/java/com/enqualcomm/support/ParseUpdate.java b/app/src/main/java/com/enqualcomm/support/ParseUpdate.java deleted file mode 100644 index b2bf87a1..00000000 --- a/app/src/main/java/com/enqualcomm/support/ParseUpdate.java +++ /dev/null @@ -1,331 +0,0 @@ -package com.enqualcomm.support; - -import android.content.Intent; - -import com.enqualcomm.support.bean.StringMessage; -import com.enqualcomm.support.bean.Update; -import com.enqualcomm.support.utils.Util; -import com.enqualcomm.support.bean.Runtime; - -import java.util.ArrayList; -import java.util.Iterator; - -import rx.Observable; -import rx.Subscriber; -import rx.schedulers.Schedulers; - -public class ParseUpdate extends Object implements Observable.OnSubscribe { - private Runtime runtime; - - private ArrayList source; - - private String[] strings; - - public ParseUpdate(StringMessage paramStringMessage, Runtime paramRuntime) { - this.strings = paramStringMessage.all(); - this.source = paramStringMessage.source(); - this.runtime = paramRuntime; - } - - public void call(Subscriber paramSubscriber) { - Update.Builder builder = new Update.Builder(); - int i = this.strings.length; -// for (byte b = 1; b < i; b++) { -// String arrayList = this.strings[b]; -// int k = arrayList.length(); -// boolean bool = arrayList.startsWith("STADMIN:"); -// int j = 0; -// if (bool) { -// builder.clearAdmin(); -// if (k > 8) { -// ArrayList bList = Util.split((byte[])this.source.get(b), (byte)58, 8); -// if (bList.size() > 1) { -// builder.setAdmin(Util.getRealName((byte[])bList.get(0)), new String((byte[])bList.get(1))); -// } else { -// builder.setAdmin((this.runtime.getContextProxy()).context.getResources().getString(2131624050), new String((byte[])bList.get(0))); -// } -// } -// } else { -// Iterator iterator; -// if (arrayList.startsWith("STCARE:")) { -// builder.clearCare(); -// if (k > 7) { -// iterator = Util.split((byte[])this.source.get(b), (byte)44, 7).iterator(); -// while (iterator.hasNext()) { -// ArrayList arrayList1 = Util.split((byte[])iterator.next(), (byte)58, 0); -// if (arrayList1.size() > 1) { -// builder.addCare(Util.getRealName((byte[])arrayList1.get(0)), new String((byte[])arrayList1.get(1))); -// continue; -// } -// builder.addCare((this.runtime.getContextProxy()).context.getResources().getString(2131624050), new String((byte[])arrayList1.get(0))); -// } -// } -// } else if (arrayList.startsWith("STCALL:")) { -// builder.clearCall(); -// if (k > 7) { -// iterator = Util.split((byte[])this.source.get(b), (byte)44, 7).iterator(); -// while (iterator.hasNext()) { -// ArrayList arrayList1 = Util.split((byte[])iterator.next(), (byte)58, 0); -// if (arrayList1.size() > 1) { -// builder.addCall(Util.getRealName((byte[])arrayList1.get(0)), new String((byte[])arrayList1.get(1))); -// continue; -// } -// builder.addCall((this.runtime.getContextProxy()).context.getResources().getString(2131624050), new String((byte[])arrayList1.get(0))); -// } -// } -// } else if (arrayList.startsWith("PARTNER:")) { -// builder.clearPartner(); -// if (k > 8) { -// iterator = Util.split((byte[])this.source.get(b), (byte)44, 8).iterator(); -// while (iterator.hasNext()) { -// ArrayList arrayOfString = Util.split((byte[])iterator.next(), (byte)58, 0); -// if (arrayOfString.size() > 1) { -// String str1 = Util.getRealName((byte[])arrayOfString.get(0)); -// String[] barrayOfString = (new String((byte[])arrayOfString.get(1))).split("@"); -// if (barrayOfString.length > 1) -// builder.addPartner(str1, barrayOfString[0], barrayOfString[1]); -// continue; -// } -// String str = (this.runtime.getContextProxy()).context.getResources().getString(2131624050); -// String[]barrayOfString = (new String((byte[])arrayOfString.get(0))).split("@"); -// if (barrayOfString.length > 1) -// builder.addPartner(str, barrayOfString[0], barrayOfString[1]); -// } -// } -// } else { -// Iterator iterator1; -// if (iterator.startsWith("VIDEOSTCARE:")) { -// iterator1 = new StringBuilder(); -// iterator1.append("VIDEOSTCARE length="); -// iterator1.append(k); -// ICLogger.i(iterator1.toString()); -// builder.clearVideo(); -// if (k > 12) { -// iterator1 = Util.split((byte[])this.source.get(b), (byte)44, 12).iterator(); -// while (iterator1.hasNext()) { -// String[] arrayOfString = Util.split((byte[])iterator1.next(), (byte)58, 0); -// if (arrayOfString.size() > 1) { -// String str1 = Util.getRealName((byte[])arrayOfString.get(0)); -// arrayOfString = (new String((byte[])arrayOfString.get(1))).split("@"); -// StringBuilder stringBuilder1 = new StringBuilder(); -// stringBuilder1.append("VIDEOSTCARE name="); -// stringBuilder1.append(str1); -// stringBuilder1.append(" ,"); -// stringBuilder1.append(arrayOfString[0]); -// stringBuilder1.append(" ,"); -// stringBuilder1.append(arrayOfString[1]); -// ICLogger.i(stringBuilder1.toString()); -// builder.addVideo(str1, arrayOfString[0], arrayOfString[1]); -// continue; -// } -// String str = (this.runtime.getContextProxy()).context.getResources().getString(2131624050); -// arrayOfString = (new String((byte[])arrayOfString.get(0))).split("@"); -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("VIDEOSTCARE name="); -// stringBuilder.append(str); -// stringBuilder.append(" ,"); -// stringBuilder.append(arrayOfString[0]); -// stringBuilder.append(" ,"); -// stringBuilder.append(arrayOfString[1]); -// ICLogger.i(stringBuilder.toString()); -// builder.addVideo(str, arrayOfString[0], arrayOfString[1]); -// } -// } -// } else if (iterator1.startsWith("STREL_ADMIN:")) { -// if (k > 12) -// builder.setAdminIcon(iterator1.substring(12, k)); -// } else if (iterator1.startsWith("STREL_CARE:")) { -// if (k > 11) -// builder.setCareIcons(iterator1.substring(11, k).split("\\u002B")); -// } else if (iterator1.startsWith("STREL_CALL:")) { -// if (k > 11) -// builder.setCallIcons(iterator1.substring(11, k).split("\\u002B")); -// } else if (iterator1.startsWith("STREL_PARTNER:")) { -// if (k > 14) -// builder.setPartnerIcons(iterator1.substring(14, k).split("\\u002B")); -// } else { -// String[] arrayOfString; -// if (iterator1.startsWith("STSILENT=ON,")) { -// builder.clearSilent(); -// arrayOfString = iterator1.substring(12, k).split("@"); -// k = arrayOfString.length; -// j = 0; -// while (j < k) { -// String str = arrayOfString[j]; -// if (str.charAt(10) != '0') { -// String[] arrayOfString1 = str.substring(10, str.length()).split(","); -// builder.addSilent(arrayOfString1[0], arrayOfString1[1], arrayOfString1[2], arrayOfString1[3]); -// j++; -// } -// } -// } else if (arrayOfString.startsWith("STALARM=ON,")) { -// builder.clearAlarm(); -// arrayOfString = arrayOfString.substring(11, k).split("@"); -// k = arrayOfString.length; -// j = 0; -// while (j < k) { -// String str = arrayOfString[j]; -// if (str.charAt(9) != '0') { -// String[] arrayOfString1 = str.substring(9, str.length()).split(","); -// builder.addAlarm(arrayOfString1[0], arrayOfString1[1], arrayOfString1[2], arrayOfString1[3]); -// j++; -// } -// } -// } else { -// ArrayList arrayList1; -// if (arrayOfString.startsWith("ALARMNAME:")) { -// if (arrayOfString.length() > 59) { -// arrayList1 = Util.split((byte[])this.source.get(b), (byte)64, 10); -// k = arrayList1.size(); -// String[] arrayOfString1 = new String[k]; -// while (j < k) { -// byte[] arrayOfByte = (byte[])arrayList1.get(j); -// if (arrayOfByte.length > 9) { -// arrayOfString1[j] = Util.getRealName(Util.subArray(arrayOfByte, 9)); -// j++; -// } -// } -// builder.setAlarmNames(arrayOfString1); -// } -// } else { -// Intent intent; -// if (arrayList1.startsWith("STWORKMODE:")) { -// String[] arrayOfString1 = arrayList1.split(":")[1].split("@"); -// if (arrayOfString1.length >= 2) { -// String str1 = arrayOfString1[0]; -// String str2 = arrayOfString1[1]; -// j = Integer.valueOf(str1).intValue(); -// k = Integer.valueOf(str2).intValue(); -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("mode1="); -// stringBuilder.append(j); -// stringBuilder.append("cycle1"); -// stringBuilder.append(k); -// ICLogger.i(stringBuilder.toString()); -// stringBuilder = new StringBuilder(); -// stringBuilder.append("mode2="); -// stringBuilder.append(j); -// stringBuilder.append("cycle2"); -// stringBuilder.append(k); -// ICLogger.i(stringBuilder.toString()); -// EqcAlgorithmNative.native_EqcAlgorithmMethod1(j, k); -// intent = new Intent((this.runtime.getContextProxy()).context, com.enqualcomm.support.CoreService.class); -// intent.setAction("com.enqualcomm.support.ACTION_STWORKMODE_ALARM"); -// intent.putExtra("location_cycle", k); -// (this.runtime.getContextProxy()).context.startService(intent); -// SharPreferenceUtil.setPrefInt((this.runtime.getContextProxy()).context, "location_mode", j); -// SharPreferenceUtil.setPrefInt((this.runtime.getContextProxy()).context, "location_cycle", k); -// } -// } else { -// String str; -// if (intent.startsWith("VOICENOTICE:")) { -// String[] arrayOfString1 = intent.split(":"); -// str = ""; -// final DBHelper dbHelper = this.runtime.getDbHelper(); -// if (arrayOfString1.length > 1) -// str = arrayOfString1[1]; -// if ("".equals(str)) { -// dBHelper.saveNoticeContent(null); -// } else { -// this.runtime.getContextProxy(); -// Observable.create(new GetNotice(str, this.runtime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber>() { -// public void onCompleted() {} -// -// public void onError(Throwable param1Throwable) {} -// -// public void onNext(ArrayList param1ArrayList) { dbHelper.saveNoticeContent(param1ArrayList); } -// }); -// } -// } else { -// String[] arrayOfString1; -// if (str.startsWith("SCORE:")) { -// arrayOfString1 = str.split(":")[1].split("@"); -// if (arrayOfString1.length == 2) -// builder.score = arrayOfString1[1]; -// } else if (arrayOfString1.startsWith("AWARD:")) { -// if (arrayOfString1.length() > 8) -// builder.award = Util.getRealName((byte[])Util.split((byte[])this.source.get(b), (byte)64, 6).get(1)); -// } else if (arrayOfString1.startsWith("BELONG:")) { -// str1 = arrayOfString1.split(":")[1]; -// if (str1 != null) { -// this.runtime.setBelong(str1); -// SharPreferenceUtil.setPrefString((this.runtime.getContextProxy()).context, "KEY_COMPANY", str1); -// } -// } else if (str1.startsWith("STWEATHER:")) { -// String[] arrayOfString2 = str1.split(":")[1].split("@"); -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("STWEATHER="); -// stringBuilder.append(str1); -// ICLogger.i(stringBuilder.toString()); -// try { -// builder.weatherType = arrayOfString2[0]; -// builder.min_Temperature = arrayOfString2[1]; -// builder.max_Temperature = arrayOfString2[2]; -// builder.cur_Temperature = arrayOfString2[3]; -// builder.weatherIndex = arrayOfString2[4]; -// } catch (Exception str1) { -// str1.printStackTrace(); -// } -// } else if (str1.startsWith("WEATHERINFO:")) { -// if (k > 12) { -// str1 = Util.getRealName((byte[])Util.split((byte[])this.source.get(b), (byte)58, 0).get(1)); -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("weatherInfo="); -// stringBuilder.append(str1); -// ICLogger.i(stringBuilder.toString()); -// builder.weatherInfo = str1; -// } -// } else { -// String[] arrayOfString2; -// if (str1.startsWith("STHEART_RATE_STATUS=")) { -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("s="); -// stringBuilder.append(str1); -// ICLogger.i(stringBuilder.toString()); -// builder.clearStheartRate(); -// String[] arrayOfString3 = str1.substring(23, k).split("@"); -// if (str1.startsWith("STHEART_RATE_STATUS=ON,")) { -// k = arrayOfString3.length; -// j = 0; -// while (j < k) { -// str1 = arrayOfString3[j]; -// if (str1.charAt(14) != '0') { -// arrayOfString2 = str1.substring(14, str1.length()).split(","); -// builder.addStheartRate(arrayOfString2[0], arrayOfString2[1], arrayOfString2[2], arrayOfString2[3]); -// j++; -// } -// } -// } -// } else if (arrayOfString2.startsWith("STHEART_RATE:")) { -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append("s="); -// stringBuilder.append(arrayOfString2); -// ICLogger.i(stringBuilder.toString()); -// builder.setStheartRateInterval(arrayOfString2.split(":")[1]); -// } else if (arrayOfString2.startsWith("STANTIOFF=ON,")) { -// builder.clearAntioff(); -// arrayOfString2 = arrayOfString2.substring(13, k).split("@"); -// k = arrayOfString2.length; -// j = 0; -// while (j < k) { -// String str2 = arrayOfString2[j]; -// if (str2.charAt(11) != '0') { -// String[] arrayOfString3 = str2.substring(11, str2.length()).split(","); -// builder.addAntioff(arrayOfString3[0], arrayOfString3[1], arrayOfString3[2], arrayOfString3[3]); -// j++; -// } -// } -// } -// } -// } -// } -// } -// } -// } -// } -// } -// } -// paramSubscriber.onNext(builder.build()); -// paramSubscriber.onCompleted(); - } -} diff --git a/app/src/main/java/com/enqualcomm/support/PassData.java b/app/src/main/java/com/enqualcomm/support/PassData.java deleted file mode 100644 index 1588bdc0..00000000 --- a/app/src/main/java/com/enqualcomm/support/PassData.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.enqualcomm.support; - - -import com.enqualcomm.support.bean.StringMessage; -import com.enqualcomm.support.utils.ICLogger; - -import rx.Observable; -import rx.Subscriber; - -public class PassData extends Object implements Observable.OnSubscribe { - private Runtime mRuntime; - - private String[] msg; - - public PassData(StringMessage paramStringMessage, Runtime paramRuntime) { - this.msg = paramStringMessage.all(); - this.mRuntime = paramRuntime; - } - - public void call(Subscriber paramSubscriber) { - StringBuilder stringBuilder1 = new StringBuilder(); - int i = this.msg.length; - StringBuilder stringBuilder2 = new StringBuilder(); - stringBuilder2.append("size ="); - stringBuilder2.append(i); - ICLogger.i(stringBuilder2.toString()); - if (i < 4) { - paramSubscriber.onNext(null); - return; - } - byte b = 3; - boolean bool = false; - while (b < i) { - String str = this.msg[b]; - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("sss ="); - stringBuilder.append(str); - ICLogger.i(stringBuilder.toString()); - if (!bool) { - stringBuilder1.append(str); - bool = true; - } else { - stringBuilder1.append(";"); - stringBuilder1.append(str); - } - b++; - } - stringBuilder1 = new StringBuilder(); - stringBuilder1.append(this.msg[1]); - stringBuilder1.append(";"); - stringBuilder1.append(this.msg[2]); - paramSubscriber.onNext(stringBuilder1.toString()); - } -} - diff --git a/app/src/main/java/com/enqualcomm/support/bean/Silent.java b/app/src/main/java/com/enqualcomm/support/bean/Silent.java index 7cfb951b..b8df0796 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Silent.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Silent.java @@ -1,62 +1,62 @@ -package com.enqualcomm.support.bean; - -public class Silent { - public String cur_sys_status; - - public String end; - - public long endTimeMillis; - - public String start; - - public long startTimeMillis; - - public String status; - - public String week; - - public Silent(String paramString1, String paramString2, String paramString3, String paramString4) { - this.start = paramString1; - this.end = paramString2; - this.week = paramString3; - this.status = paramString4; - } - - public Silent(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) { - this.start = paramString1; - this.end = paramString2; - this.week = paramString3; - this.status = paramString4; - this.cur_sys_status = paramString5; - } - - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj != null) { - if (getClass() != obj.getClass()) - return false; - Silent silent = (Silent)obj; - return !this.start.equals(silent.start) ? false : (!this.end.equals(silent.end) ? false : (!this.week.equals(silent.week) ? false : this.status.equals(silent.status))); - } - return false; - } - - public String toString() { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Silent{start='"); - stringBuilder.append(this.start); - stringBuilder.append('\''); - stringBuilder.append(", end='"); - stringBuilder.append(this.end); - stringBuilder.append('\''); - stringBuilder.append(", week='"); - stringBuilder.append(this.week); - stringBuilder.append('\''); - stringBuilder.append(", status='"); - stringBuilder.append(this.status); - stringBuilder.append('\''); - stringBuilder.append('}'); - return stringBuilder.toString(); - } -} +package com.enqualcomm.support.bean; + +public class Silent { + public String cur_sys_status; + + public String end; + + public long endTimeMillis; + + public String start; + + public long startTimeMillis; + + public String status; + + public String week; + + public Silent(String _start, String _end, String _week, String _status) { + this.start = _start; + this.end = _end; + this.week = _week; + this.status = _status; + } + + public Silent(String _start, String _end, String _week, String _status, String _cur_sys_status) { + this.start = _start; + this.end = _end; + this.week = _week; + this.status = _status; + this.cur_sys_status = _cur_sys_status; + } + + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj != null) { + if (getClass() != obj.getClass()) + return false; + Silent silent = (Silent)obj; + return !this.start.equals(silent.start) ? false : (!this.end.equals(silent.end) ? false : (!this.week.equals(silent.week) ? false : this.status.equals(silent.status))); + } + return false; + } + + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Silent{start='"); + stringBuilder.append(this.start); + stringBuilder.append('\''); + stringBuilder.append(", end='"); + stringBuilder.append(this.end); + stringBuilder.append('\''); + stringBuilder.append(", week='"); + stringBuilder.append(this.week); + stringBuilder.append('\''); + stringBuilder.append(", status='"); + stringBuilder.append(this.status); + stringBuilder.append('\''); + stringBuilder.append('}'); + return stringBuilder.toString(); + } +} diff --git a/app/src/main/java/com/enqualcomm/support/bean/Update.java b/app/src/main/java/com/enqualcomm/support/bean/Update.java deleted file mode 100644 index 8bba67db..00000000 --- a/app/src/main/java/com/enqualcomm/support/bean/Update.java +++ /dev/null @@ -1,300 +0,0 @@ -package com.enqualcomm.support.bean; - -import com.enqualcomm.support.utils.ICLogger; - -import java.util.ArrayList; - -public class Update { - public ArrayList alarmList; - - public ArrayList antioffList; - - public boolean clearAdmin; - - public boolean clearCall; - - public boolean clearCare; - - public boolean clearPartner; - - public boolean clearVideo; - - public ArrayList contactList; - - public ArrayList silentList; - - public ArrayList stheartRateList; - - public Weather weather; - - private Update(ArrayList paramArrayList1, - boolean paramBoolean1, - boolean paramBoolean2, - boolean paramBoolean3, - boolean paramBoolean4, - boolean paramBoolean5, - ArrayList paramArrayList2, - ArrayList paramArrayList3, - Weather paramWeather, - ArrayList paramArrayList4, - ArrayList paramArrayList5) { - this.contactList = paramArrayList1; - this.clearAdmin = paramBoolean1; - this.clearCare = paramBoolean2; - this.clearCall = paramBoolean3; - this.clearPartner = paramBoolean4; - this.clearVideo = paramBoolean5; - this.silentList = paramArrayList2; - this.alarmList = paramArrayList3; - this.weather = paramWeather; - this.stheartRateList = paramArrayList4; - this.antioffList = paramArrayList5; - } - - public static class Builder { - String StheartRateInterval; - - Contact admin; - - String admin_icon_index; - - ArrayList alarmList; - - String[] alarmNames; - - ArrayList antioffList; - - - ArrayList callList; - - String[] call_icon_indexes; - - ArrayList careList; - - String[] care_icon_indexes; - - boolean clearAdmin; - - public String cur_Temperature; - - public String max_Temperature; - - public String min_Temperature; - - ArrayList partnerList; - - String[] partner_icon_indexes; - - - ArrayList silentList; - - ArrayList stheartRateList; - - String stwork_mode; - - ArrayList videoList; - - String[] video_icon_indexes; - - public String weatherIndex; - - public String weatherInfo; - - public String weatherType; - - public void addAlarm(String param1String1, String param1String2, String param1String3, String param1String4) { this.alarmList.add(new Alarm(param1String1, param1String2, param1String3, param1String4)); } - - public void addAntioff(String param1String1, String param1String2, String param1String3, String param1String4) { this.antioffList.add(new Antioff(param1String1, param1String2, param1String3, param1String4)); } - - public void addCall(String param1String1, String param1String2) { this.callList.add(new Contact(3, param1String1, param1String2)); } - - public void addCare(String param1String1, String param1String2) { this.careList.add(new Contact(2, param1String1, param1String2)); } - - public void addPartner(String param1String1, String param1String2, String param1String3) { this.partnerList.add(new Contact(4, param1String1, param1String2, param1String3)); } - - public void addSilent(String param1String1, String param1String2, String param1String3, String param1String4) { this.silentList.add(new Silent(param1String1, param1String2, param1String3, param1String4)); } - - public void addStheartRate(String param1String1, String param1String2, String param1String3, String param1String4) { this.stheartRateList.add(new StheartRate(param1String1, param1String2, param1String3, param1String4)); } - - public void addVideo(String param1String1, String param1String2, String param1String3) { this.videoList.add(new Contact(5, param1String1, param1String2, param1String3)); } - - public Update build() { - boolean bool4; - boolean bool3; - boolean bool2; - boolean bool1; - ArrayList arrayList1 = new ArrayList(); - - Weather weather = new Weather(); - - - if (this.weatherType != null) - weather.weatherType = this.weatherType; - if (this.min_Temperature != null) - weather.min_Temperature = this.min_Temperature; - if (this.max_Temperature != null) - weather.max_Temperature = this.max_Temperature; - if (this.cur_Temperature != null) - weather.cur_Temperature = this.cur_Temperature; - if (this.weatherIndex != null) - weather.weatherIndex = this.weatherIndex; - if (this.weatherInfo != null) - weather.weatherInfo = this.weatherInfo; - if (this.admin != null) { - this.admin.icon_index = this.admin_icon_index; - arrayList1.add(this.admin); - } - ArrayList arrayList2 = this.careList; - boolean bool = false; - int i = 1; - if (arrayList2 != null) { - bool1 = true; - } else { - bool1 = false; - } - if (bool1) { - boolean bool5; - if (this.care_icon_indexes != null && this.care_icon_indexes.length == this.careList.size()) { - bool5 = true; - } else { - bool5 = false; - } - int j = this.careList.size(); - for (byte b = 0; b < j; b++) { - Contact contact = (Contact)this.careList.get(b); - if (bool5) - contact.icon_index = this.care_icon_indexes[b]; - arrayList1.add(contact); - } - } - if (this.callList != null) { - bool2 = true; - } else { - bool2 = false; - } - if (bool2) { - boolean bool5; - if (this.call_icon_indexes != null && this.call_icon_indexes.length == this.callList.size()) { - bool5 = true; - } else { - bool5 = false; - } - int j = this.callList.size(); - for (byte b = 0; b < j; b++) { - Contact contact = (Contact)this.callList.get(b); - if (bool5) - contact.icon_index = this.call_icon_indexes[b]; - arrayList1.add(contact); - } - } - if (this.partnerList != null) { - bool3 = true; - } else { - bool3 = false; - } - if (bool3) { - boolean bool5; - if (this.partner_icon_indexes != null && this.partner_icon_indexes.length == this.partnerList.size()) { - bool5 = true; - } else { - bool5 = false; - } - int j = this.partnerList.size(); - for (byte b = 0; b < j; b++) { - Contact contact = (Contact)this.partnerList.get(b); - if (bool5) - contact.icon_index = this.partner_icon_indexes[b]; - arrayList1.add(contact); - } - } - if (this.videoList != null) { - bool4 = true; - } else { - bool4 = false; - } - if (bool4) { - boolean bool5; - if (this.video_icon_indexes != null && this.video_icon_indexes.length == this.videoList.size()) { - bool5 = true; - } else { - bool5 = false; - } - i = this.videoList.size(); - for (byte b = 0; b < i; b++) { - Contact contact = (Contact)this.videoList.get(b); - if (bool5) - contact.icon_index = this.video_icon_indexes[b]; - arrayList1.add(contact); - } - } - if (this.alarmList != null && this.alarmNames != null) { - int j = this.alarmList.size(); - for (byte b = 0; b < j; b++) - ((Alarm)this.alarmList.get(b)).name = this.alarmNames[b]; - } - if (this.stheartRateList != null && this.StheartRateInterval != null) - for (byte b = 0; b < this.stheartRateList.size(); b++) - ((StheartRate)this.stheartRateList.get(b)).interval = this.StheartRateInterval; - return new Update(arrayList1, - this.clearAdmin, - bool1, - bool2, - bool3, - bool4, - this.silentList, - this.alarmList, - weather, - this.stheartRateList, - this.antioffList); - } - - public void clearAdmin() { - this.clearAdmin = true; - this.admin = null; - } - - public void clearAlarm() { this.alarmList = new ArrayList(); } - - public void clearAntioff() { this.antioffList = new ArrayList(); } - - public void clearCall() { this.callList = new ArrayList(); } - - public void clearCare() { this.careList = new ArrayList(); } - - public void clearPartner() { this.partnerList = new ArrayList(); } - - public void clearSilent() { this.silentList = new ArrayList(); } - - public void clearStheartRate() { this.stheartRateList = new ArrayList(); } - - public void clearVideo() { this.videoList = new ArrayList(); } - - public String getStwork_mode() { return this.stwork_mode; } - - public void setAdmin(String param1String1, String param1String2) { - this.admin = new Contact(1, param1String1, param1String2); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("name= "); - stringBuilder.append(param1String1); - stringBuilder.append("number="); - stringBuilder.append(param1String2); - ICLogger.i(stringBuilder.toString()); - } - - public void setAdminIcon(String param1String) { this.admin_icon_index = param1String; } - - public void setAlarmNames(String[] param1ArrayOfString) { this.alarmNames = param1ArrayOfString; } - - public void setCallIcons(String[] param1ArrayOfString) { this.call_icon_indexes = param1ArrayOfString; } - - public void setCareIcons(String[] param1ArrayOfString) { this.care_icon_indexes = param1ArrayOfString; } - - public void setPartnerIcons(String[] param1ArrayOfString) { this.partner_icon_indexes = param1ArrayOfString; } - - public void setStheartRateInterval(String param1String) { this.StheartRateInterval = param1String; } - - public void setStwork_mode(String param1String) { this.stwork_mode = param1String; } - - public void setVideoIcons(String[] param1ArrayOfString) { this.video_icon_indexes = param1ArrayOfString; } - } -} diff --git a/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java b/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java index 1324a1b5..d1eb6396 100644 --- a/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java +++ b/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java @@ -255,6 +255,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService { //throw new UnsupportedOperationException("设备不支持"); } + boolean isRegister = mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL); if (!isRegister) { ICLogger.i("Proximity 设备不支持2"); diff --git a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java index 241e0f76..ae863254 100644 --- a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java @@ -8,6 +8,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; +import android.media.AudioManager; import android.net.Uri; import android.os.Handler; import android.os.Message; @@ -37,6 +38,7 @@ import com.enqualcomm.support.utils.MissedCallContentObserver; import com.enqualcomm.support.utils.SharPreferenceUtil; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; +import com.enqualcomm.support.utils.VibrateUtil; import java.util.ArrayList; import java.util.Calendar; @@ -47,9 +49,14 @@ import java.util.concurrent.TimeUnit; import static android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED; import static android.telephony.TelephonyManager.CALL_STATE_OFFHOOK; import static android.telephony.TelephonyManager.CALL_STATE_RINGING; +import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; +import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_CARE_ALARM; import static com.enqualcomm.support.Constants.ACTION_CLOSE_UNREAD_MSG; import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; +import static com.enqualcomm.support.Constants.ACTION_NOTICE_ALARM_CHANGE; +import static com.enqualcomm.support.Constants.OTHER_ALARM_END; +import static com.enqualcomm.support.Constants.OTHER_ALARM_START; import static com.enqualcomm.support.Constants.SERVICE_CLS_NAME; import static com.enqualcomm.support.Constants.SERVICE_PKG_NAME; @@ -278,22 +285,22 @@ public class SilentManager extends AbstractInvokeHandlerService { } private void getSilentListStartAndEndTime() { - Calendar var1 = Calendar.getInstance(); - this.mTodayWeek = var1.get(Calendar.DAY_OF_WEEK); - - Silent var3; - for(Iterator var2 = this.silentList.iterator(); var2.hasNext(); var3.endTimeMillis = var1.getTimeInMillis()) { - var3 = (Silent)var2.next(); - var1.set(Calendar.SECOND, 0); - int var4 = Integer.parseInt(var3.start.substring(2, 4)); - int var5 = Integer.parseInt(var3.start.substring(5, 7)); - var1.set(Calendar.HOUR_OF_DAY, var4); - var1.set(Calendar.MINUTE, var5); - var3.startTimeMillis = var1.getTimeInMillis(); - var5 = Integer.parseInt(var3.end.substring(2, 4)); - var4 = Integer.parseInt(var3.end.substring(5, 7)); - var1.set(Calendar.HOUR_OF_DAY, var5); - var1.set(Calendar.MINUTE, var4); + Calendar calendar = Calendar.getInstance(); + this.mTodayWeek = calendar.get(Calendar.DAY_OF_WEEK); + + Silent silent; + for(Iterator it = this.silentList.iterator() ; it.hasNext(); silent.endTimeMillis = calendar.getTimeInMillis()) { + silent = (Silent)it.next(); + calendar.set(Calendar.SECOND, 0); + int hour = Integer.parseInt(silent.start.substring(2, 4)); + int minutes = Integer.parseInt(silent.start.substring(5, 7)); + calendar.set(Calendar.HOUR_OF_DAY, hour); + calendar.set(Calendar.MINUTE, minutes); + silent.startTimeMillis = calendar.getTimeInMillis(); + minutes = Integer.parseInt(silent.end.substring(2, 4)); + hour = Integer.parseInt(silent.end.substring(5, 7)); + calendar.set(Calendar.HOUR_OF_DAY, minutes); + calendar.set(Calendar.MINUTE, hour); } } @@ -340,8 +347,28 @@ public class SilentManager extends AbstractInvokeHandlerService { } + public static void setSilentConfig(Context context,boolean silent){ + + if(silent){ + VibrateUtil.setVibPattern(0); + ICAudioManager.setMasterVolumn(context,0); + Util.SetRingMode(context,AudioManager.RINGER_MODE_SILENT,false); + }else{ + int mastervolume = Config.getMasterVolume(context); + ICAudioManager.setMasterVolumn(context,mastervolume); + int duration=Config.getDurationOfVibration(context); + VibrateUtil.setVibPattern(duration*1000); + Util.SetRingMode(context, AudioManager.MODE_NORMAL,true); + } + + + + } private void handSilence(Context var1, boolean var2) { this.mValue_isSilence = var2; + + setSilentConfig(var1,var2); + if (this.isCalling) { this.haveHandSilence = true; } else { @@ -351,37 +378,38 @@ public class SilentManager extends AbstractInvokeHandlerService { var3.setAction("com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE"); var3.putExtra("KEY_ISSILENCE", var2); var1.sendBroadcast(var3); - ComponentName var4 = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME); - Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4); - this.mRuntime.getContextProxy().context.startService(var5); + + // ComponentName var4 = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME); + // Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4); + // this.mRuntime.getContextProxy().context.startService(var5); } } - private void handleSilent(Runtime var1, boolean var2) { - int var3 = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); - if (var3 != this.mTodayWeek && (var3 != 1 || this.mTodayWeek != 8)) { + private void handleSilent(Runtime runtime, boolean silent) { + int dayofweek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); + if (dayofweek != this.mTodayWeek && (dayofweek != 1 || this.mTodayWeek != 8)) { this.getSilentListStartAndEndTime(); this.queryNotice(); } - boolean var4 = this.isSilentTime(); + boolean isSilent = this.isSilentTime(); StringBuilder var5 = new StringBuilder(); var5.append("inSilent="); - var5.append(var4); + var5.append(isSilent); ICLogger.i(var5.toString()); - if (!this.mInSilent && var4) { + if (!this.mInSilent && isSilent) { this.onSilentStateChange(true); this.handSilence(this.mContext, true); this.mDbHelper.upDateStatus("ON"); - } else if (this.mInSilent && !var4) { + } else if (this.mInSilent && !isSilent) { this.onSilentStateChange(false); this.mDbHelper.upDateStatus("OFF"); this.handSilence(this.mContext, false); } - this.mInSilent = var4; - this.getStartAndEndStheartRateTime(); - this.isStheartRateTime(var2); + this.mInSilent = isSilent; + // this.getStartAndEndStheartRateTime(); + // this.isStheartRateTime(var2); } private boolean isIdle(Context context) { @@ -424,7 +452,7 @@ public class SilentManager extends AbstractInvokeHandlerService { if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { var11 = Integer.parseInt(var6.start.substring(2, 4)); var5 = Integer.parseInt(var6.start.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var11, var5, "com.enqualcomm.support.OTHER_ALARM_START"); + AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_START); var8 = new StringBuilder(); var8.append("设置起始时间=hour"); var8.append(var11); @@ -437,7 +465,7 @@ public class SilentManager extends AbstractInvokeHandlerService { if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { var11 = Integer.parseInt(var6.end.substring(2, 4)); var5 = Integer.parseInt(var6.end.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var11, var5, "com.enqualcomm.support.OTHER_ALARM_END"); + AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_END); var8 = new StringBuilder(); var8.append("设置结束时间=hour"); var8.append(var11); @@ -457,63 +485,66 @@ public class SilentManager extends AbstractInvokeHandlerService { } private boolean isSilentTime() { - long var1 = System.currentTimeMillis(); - ArrayList var3 = this.silentList; - int var4 = this.mTodayWeek; - boolean var5 = false; //默认不在silent时间段 - if (var4 == 1) { + long currenttime = System.currentTimeMillis(); + ArrayList slist = this.silentList; + int todayWeek = this.mTodayWeek; + boolean isSilent = false; //默认不在silent时间段 + if (todayWeek == 1) { this.mTodayWeek += 7; } - Iterator var6 = var3.iterator(); + Iterator it = slist.iterator(); while(true) { - if (!var6.hasNext()) { - var5 = false; + if (!it.hasNext()) { + isSilent = false; break; } - Silent var12 = (Silent)var6.next(); - String var7 = var12.week; - StringBuilder var8 = new StringBuilder(); - var8.append(this.mTodayWeek - 1); - var8.append(""); - if (var7.contains(var8.toString())) { - long var9 = var12.startTimeMillis - var1; - int var11; - StringBuilder var13; + Silent silent = (Silent)it.next(); + String week = silent.week; + StringBuilder sb = new StringBuilder(); + sb.append(this.mTodayWeek - 1); + sb.append(""); + if (week.contains(sb.toString())) { + long var9 = silent.startTimeMillis - currenttime; + int hour,minutes; + StringBuilder sblog; + if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { - var11 = Integer.parseInt(var12.start.substring(2, 4)); - var4 = Integer.parseInt(var12.start.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var11, var4, "com.enqualcomm.support.OTHER_ALARM_START"); - var13 = new StringBuilder(); - var13.append("设置起始时间=hour"); - var13.append(var11); - var13.append("minute+"); - var13.append(var4); - ICLogger.i(var13.toString()); + hour = Integer.parseInt(silent.start.substring(2, 4)); + minutes = Integer.parseInt(silent.start.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_START); + sblog = new StringBuilder(); + sblog.append("设置起始时间=hour"); + sblog.append(hour); + sblog.append("minute+"); + sblog.append(minutes); + ICLogger.i(sblog.toString()); } - var9 = var12.endTimeMillis - var1; + var9 = silent.endTimeMillis - currenttime; if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { - var11 = Integer.parseInt(var12.end.substring(2, 4)); - var4 = Integer.parseInt(var12.end.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var11, var4, "com.enqualcomm.support.OTHER_ALARM_END"); - var13 = new StringBuilder(); - var13.append("设置结束时间=hour"); - var13.append(var11); - var13.append("minute+"); - var13.append(var4); - ICLogger.i(var13.toString()); + hour = Integer.parseInt(silent.end.substring(2, 4)); + minutes = Integer.parseInt(silent.end.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_END); + sblog = new StringBuilder(); + sblog.append("设置结束时间=hour"); + sblog.append(hour); + sblog.append("minute+"); + sblog.append(minutes); + ICLogger.i(sblog.toString()); } - if (var12.startTimeMillis <= var1 && var12.endTimeMillis > var1) { + //刚好在silent时段,则直接退出 + if (silent.startTimeMillis <= currenttime && silent.endTimeMillis > currenttime) { + isSilent=true; break; } } } - return var5; + return isSilent; } private boolean isStheartRateTime(boolean var1) { @@ -733,16 +764,17 @@ public class SilentManager extends AbstractInvokeHandlerService { } - public void onAlarmClock(Connection var1, Runtime var2) { - this.handleSilent(var2, true); + public void onAlarmClock(Connection var1, Runtime runtime) { + //每个心跳检查静默消息状态 + this.handleSilent(runtime, true); } - public void onAttach(Connection var1, Runtime var2) { - this.mRuntime = var2; + public void onAttach(Connection var1, Runtime runtime) { + this.mRuntime = runtime; this.mConnection = var1; - this.mContext = var2.getContextProxy().context; + this.mContext = runtime.getContextProxy().context; this.mAlarmManager = (AlarmManager)this.mContext.getSystemService(Context.ALARM_SERVICE); - this.mDbHelper = var2.getDbHelper(); + this.mDbHelper = runtime.getDbHelper(); this.silentList = this.querySilent(); this.getSilentListStartAndEndTime(); this.mInSilent = this.isSilentTime(); @@ -756,20 +788,22 @@ public class SilentManager extends AbstractInvokeHandlerService { var3.upDateorInsertDeviceStatus(var4); this.handSilence(this.mContext, this.mInSilent); + /* this.stheartRateList = this.queryStheartRate(); this.getStartAndEndStheartRateTime(); this.mIsStheartRate = this.isStheartRateTime(false); + */ this.alarms = this.queryAlarm(); this.voiceNotice = this.queryNotice(); - var2.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver); + runtime.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver); this.mAlramReceiver = new SilentManager.AlramReceiver(); IntentFilter var5 = new IntentFilter(); - var5.addAction("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE"); - var5.addAction("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE"); - var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"); - var5.addAction("com.eqc.heartrate.action.RESULT"); + var5.addAction(ACTION_NOTICE_ALARM_CHANGE); + var5.addAction(ACTION_ALARM_ALARM_CHANGE); + // var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"); + // var5.addAction("com.eqc.heartrate.action.RESULT"); this.mContext.registerReceiver(this.mAlramReceiver, var5); - var2.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32); + runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32); } public void onDetach(Connection var1, Runtime var2) { @@ -778,7 +812,7 @@ public class SilentManager extends AbstractInvokeHandlerService { } @Override - public boolean onUserRequest(Intent var1, Connection var2, Runtime var3) { + public boolean onUserRequest(Intent var1, Connection var2, Runtime runtime) { String action = var1.getAction(); if (ACTION_CARE_ALARM.equals(action)) { String alarmTime = var1.getDataString(); //alarm:ST00.43,W,CON,闹铃,2 @@ -826,7 +860,7 @@ public class SilentManager extends AbstractInvokeHandlerService { var4 = true; } - this.handleSilent(var3, var4 ^ true); + this.handleSilent(runtime, var4 ^ true); } return false; @@ -842,34 +876,34 @@ public class SilentManager extends AbstractInvokeHandlerService { } public void onReceive(Context var1, Intent var2) { - String var6 = var2.getAction(); + String action = var2.getAction(); StringBuilder var3 = new StringBuilder(); var3.append("action = "); - var3.append(var6); + var3.append(action); ICLogger.i(var3.toString()); - if ("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE".equals(var6)) { + if (ACTION_NOTICE_ALARM_CHANGE.equals(action)) { SilentManager.this.voiceNotice = SilentManager.this.queryNotice(); - } else if ("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE".equals(var6)) { + } else if (ACTION_ALARM_ALARM_CHANGE.equals(action)) { SilentManager.this.alarms = SilentManager.this.queryAlarm(); - } else if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(var6)) { + } else if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(action)) { SilentManager.this.stheartRateList = SilentManager.this.queryStheartRate(); SilentManager.this.getStartAndEndStheartRateTime(); SilentManager.this.isStheartRateTime(false); - } else if ("com.eqc.heartrate.action.RESULT".equals(var6)) { - var6 = var2.getStringExtra("time"); + } else if ("com.eqc.heartrate.action.RESULT".equals(action)) { + String time = var2.getStringExtra("time"); int var4 = var2.getIntExtra("value", 0); int var5 = var2.getIntExtra("type", 0); StringBuilder var7 = new StringBuilder(); var7.append("("); - var7.append(var6); + var7.append(time); var7.append("@"); var7.append(var4); var7.append("@"); var7.append(var5); var7.append(")"); - var6 = var7.toString(); + time = var7.toString(); // SilentManager.this.mConnection.send(API.H60(SilentManager.this.mRuntime, var6)); - } else if ("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE".equals(var6)) { + } else if (ACTION_ANTIOFF_ALARM_CHANGE.equals(action)) { SilentManager.this.sAntioffList = SilentManager.this.queryAntioff(); SilentManager.this.getStartAndEndSantioffTime(); SilentManager.this.mIsNeedAntioff = SilentManager.this.isAntioffTime(false); diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index 848b2d61..2a498e77 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -1,1168 +1,1171 @@ - -package com.enqualcomm.support.utils; - -import android.content.ContentProviderOperation; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.content.Intent; -import android.content.ContentProviderOperation.Builder; -import android.database.Cursor; -import android.net.Uri; -import android.os.Handler; -import android.os.SystemClock; -import android.provider.BaseColumns; -import android.provider.ContactsContract; -import android.provider.ContactsContract.Data; -import android.provider.ContactsContract.RawContacts; -import android.text.TextUtils; - -import com.enqualcomm.support.Config; -import com.enqualcomm.support.ICContentProvider; -import com.enqualcomm.support.bean.Alarm; -import com.enqualcomm.support.bean.Antioff; -import com.enqualcomm.support.bean.Contact; -import com.enqualcomm.support.bean.Content; -import com.enqualcomm.support.bean.DeviceStatus; -import com.enqualcomm.support.bean.NoticeContent; -import com.enqualcomm.support.bean.NotificationParam; -import com.enqualcomm.support.bean.Silent; -import com.enqualcomm.support.bean.SleepInfo; -import com.enqualcomm.support.bean.SleepRecord; -import com.enqualcomm.support.bean.StheartRate; -import com.enqualcomm.support.bean.StringMessage; -import com.enqualcomm.support.bean.Weather; - -import java.util.ArrayList; -import java.util.Iterator; - -import static com.enqualcomm.support.bean.Contact.CATEGORY_ADMIN; -import static com.enqualcomm.support.bean.Contact.CATEGORY_CALL; -import static com.enqualcomm.support.bean.Contact.CATEGORY_CARE; -import static com.enqualcomm.support.bean.Contact.CATEGORY_PARTNER; -import static com.enqualcomm.support.bean.Contact.CATEGORY_SOS; -import static com.enqualcomm.support.bean.Contact.CATEGORY_VIDEO; - -public class DBHelper { - private static long lastUpdateTime; - private Context context; - private ContentResolver cr; - - public DBHelper(ContentResolver var1, Context var2) { - this.cr = var1; - this.context = var2; - } - - private void addAllContact(ArrayList contactArray, ContentResolver resolver) { - Iterator contactIT = contactArray.iterator(); - - while(contactIT.hasNext()) { - Contact contact = (Contact)contactIT.next(); - ContentValues contentvalues = new ContentValues(); - long raw_contactID = ContentUris.parseId(resolver.insert(RawContacts.CONTENT_URI, contentvalues)); - - contentvalues.clear(); - contentvalues.put("raw_contact_id", raw_contactID); - contentvalues.put("mimetype", "vnd.android.cursor.item/name"); - contentvalues.put("data2", contact.name); - resolver.insert(Data.CONTENT_URI, contentvalues); - contentvalues.clear(); - - contentvalues.put("raw_contact_id", raw_contactID); - contentvalues.put("mimetype", "vnd.android.cursor.item/phone_v2"); - contentvalues.put("data1", contact.number); - contentvalues.put("data2", 2); - resolver.insert(Data.CONTENT_URI, contentvalues); - contentvalues.clear(); - } - - } - - public int getContactCount(ContentResolver resolver) - { - StringBuilder sb = new StringBuilder(); - - Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, null, (String[])null, "CATEGORY ASC"); - - return cursor.getCount(); - - } - private void deleteAllContact(ArrayList contactArraylist, String where, ContentResolver resolver) { - StringBuilder sb = new StringBuilder(); - sb.append("where="); - sb.append(where); - ICLogger.i(sb.toString()); - Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, where, (String[])null, "CATEGORY ASC"); - - Iterator contactIT = contactArraylist.iterator(); - - while(contactIT.hasNext()) { - this.DeleteContactId(resolver, ((Contact)contactIT.next()).name); - } - resolver.delete(ICContentProvider.CONTACT_URI, where, (String[])null); - } - - private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) { - ContentValues var5 = new ContentValues(); - var5.put("IMSI", var1); - var5.put("TIME", var4); - var5.put("NUMBER", var2); - var5.put("TOTAL_NUMBER", var3); - return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5); - } - - private void saveContactsImpl(ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) { - StringBuilder log = new StringBuilder(); - log.append("saveContactsImpl contactList = "); - log.append(contactArray.toString()); - ICLogger.i(log.toString()); - StringBuilder where = new StringBuilder("CATEGORY IN ("); - if (admin) { - where.append(CATEGORY_ADMIN); - where.append(","); - } - - if (care) { - where.append(CATEGORY_CARE); - where.append(","); - } - - if (call) { - where.append(CATEGORY_CALL); - where.append(","); - } - - if (partner) { - where.append(CATEGORY_PARTNER); - where.append(","); - } - - if (video) { - where.append(CATEGORY_VIDEO); - where.append(","); - } - - if (sos) { - where.append(CATEGORY_SOS); - where.append(","); - } - int len = where.length(); - if (len > 13) { - where.setCharAt(len - 1, ')'); - this.deleteAllContact(contactArray, where.toString(), this.cr); - int contactCount = contactArray.size(); - if (contactCount != 0) { - ContentValues[] contentlist = new ContentValues[contactCount]; - - for(int i = 0; i < contactCount; ++i) { - Contact contact = (Contact)contactArray.get(i); - ContentValues contentValues = new ContentValues(); - contentlist[i] = contentValues; - contentValues.put("CATEGORY", contact.category); - contentValues.put("NAME", contact.name); - contentValues.put("NUMBER", contact.number); - contentValues.put("ICON", contact.icon_index); - contentValues.put("EXTRA", contact.extra); - StringBuilder log1 = new StringBuilder(); - log1.append("contact="); - log1.append(contact.toString()); - ICLogger.i(log1.toString()); - } - - this.cr.bulkInsert(ICContentProvider.CONTACT_URI, contentlist); - this.addAllContact(contactArray, this.cr); - } - - } - } - - private void upDateMonitorImpl(String var1, String var2) { - Cursor var5 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null); - ArrayList var4 = new ArrayList(); - if (var5 != null) { - while(true) { - if (!var5.moveToNext()) { - var5.close(); - break; - } - - var4.add(new DeviceStatus(var5.getString(1), "0", "0", var5.getInt(4))); - } - } - - this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null); - if (var4.size() != 0) { - ContentValues[] var8 = new ContentValues[var4.size()]; - - for(int var3 = 0; var3 < var4.size(); ++var3) { - DeviceStatus var6 = (DeviceStatus)var4.get(var3); - ContentValues var7 = new ContentValues(); - var8[var3] = var7; - var7.put("IS_SILENCE", var6.isSilence); - var7.put("START_MONITOR", var1); - var7.put("END_MONITOR", var2); - var7.put("IS_ALARM", var6.isAlarm); - } - - this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8); - } - - } - - public void deleteMessage(Uri var1) { - this.cr.delete(var1, (String)null, (String[])null); - } - - public String DeleteContactId(ContentResolver contentResolver, String name) { - String ContactId=null; - Uri uri = ContactsContract.RawContacts.CONTENT_URI; - ContentResolver resolver = contentResolver; - String where = ContactsContract.PhoneLookup.DISPLAY_NAME; - Cursor cursor = resolver.query(uri, new String[]{Data._ID}, where + "=?", new String[]{name}, null); - if (cursor.moveToFirst()) { - int id = cursor.getInt(0); - ContactId=String.valueOf(id); - //根据id删除data中的相应数据 - resolver.delete(uri, where + "=?", new String[]{name}); - uri = ContactsContract.Data.CONTENT_URI; - resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""}); - } - return ContactId; - } - - public boolean getWeather() { - Cursor var5 = this.cr.query(ICContentProvider.WEATHER_URL, (String[])null, (String)null, (String[])null, (String)null); - if (var5 != null && var5.moveToNext()) { - String var1 = var5.getString(1); - String var2 = var5.getString(2); - String var3 = var5.getString(3); - String var4 = var5.getString(4); - String var7 = var5.getString(5); - StringBuilder var6 = new StringBuilder(); - var6.append("weather_type="); - var6.append(var1); - var6.append("min_temperature="); - var6.append(var2); - var6.append("max_temperature="); - var6.append(var3); - var6.append("cur_temperature="); - var6.append(var4); - var6.append("weather_index="); - var6.append(var7); - ICLogger.i(var6.toString()); - return true; - } else { - return false; - } - } - - public Uri insertMessage(Content var1) { - ContentValues var2 = new ContentValues(); - var2.put("CATEGORY", var1.category); - var2.put("CONTENT", var1.content); - var2.put("PREVIEW", var1.preview); - var2.put("STATUS", var1.status); - var2.put("IN_OR_OUT", var1.inOrOut); - var2.put("CONTACT_CATEGORY", var1.contactCategory); - var2.put("CONTACT_NUMBER", var1.contactNumber); - var2.put("SERVER_TIME", var1.serverTime); - var2.put("LOCAL_TIME", var1.localTime); - var2.put("ICON", var1.icon); - return this.cr.insert(ICContentProvider.MESSAGE_URI, var2); - } - - public Uri insertOrUpdate(Content var1) { - StringBuilder sb = new StringBuilder("CATEGORY="); - sb.append(var1.category); - sb.append(" and CONTENT='"); - sb.append(var1.content); - sb.append("' and CONTACT_NUMBER='"); - sb.append(var1.contactNumber); - sb.append("' and CONTACT_CATEGORY="); - sb.append(var1.contactCategory); - String where = sb.toString(); - Cursor cursor = this.cr.query(ICContentProvider.MESSAGE_URI, new String[]{"_id"}, where, (String[])null, (String)null); - long id; - if (cursor != null) { - if (cursor.moveToNext()) { - id = cursor.getLong(0); - } else { - id = -1L; - } - - cursor.close(); - } else { - id = -1L; - } - - if (id != -1L) { - Uri var6 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); - ContentValues var5 = new ContentValues(); - var5.put("STATUS", var1.status); - var5.put("CONTENT", var1.content); - this.cr.update(var6, var5, (String)null, (String[])null); - return var6; - } else { - return this.insertMessage(var1); - } - } - - public Uri insertOrUpdate(Content content, long id) { - label21: { - if (id > 0L) { - ContentResolver var4 = this.cr; - Uri var5 = ICContentProvider.MESSAGE_URI; - StringBuilder var6 = new StringBuilder(); - var6.append("_id="); - var6.append(id); - String where = var6.toString(); - Cursor cursor = var4.query(var5, new String[]{"_id"}, where, (String[])null, (String)null); - if (cursor != null) { - if (cursor.moveToNext()) { - id = cursor.getLong(0); - } else { - id = -1L; - } - - cursor.close(); - break label21; - } - } - - id = -1L; - } - - if (id != -1L) { - Uri var8 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); - ContentValues var9 = new ContentValues(); - var9.put("STATUS", content.status); - this.cr.update(var8, var9, (String)null, (String[])null); - return var8; - } else { - return this.insertMessage(content); - } - } - - public Uri insertOrUpdateDownLoadInfo(String var1, int var2, int var3, String var4) { - StringBuilder var7 = new StringBuilder("IMSI="); - var7.append(var1); - String var9 = var7.toString(); - Cursor var10 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, new String[]{"_id"}, var9, (String[])null, (String)null); - long var5; - if (var10 != null) { - if (var10.moveToNext()) { - var5 = var10.getLong(0); - } else { - var5 = -1L; - } - - var10.close(); - } else { - var5 = -1L; - } - - if (var5 != -1L) { - Uri var11 = ContentUris.withAppendedId(ICContentProvider.DOWNLOADINFO_URL, var5); - ContentValues var8 = new ContentValues(); - var8.put("IMSI", var1); - var8.put("TIME", var4); - var8.put("NUMBER", var2); - var8.put("TOTAL_NUMBER", var3); - this.cr.update(var11, var8, (String)null, (String[])null); - return var11; - } else { - ICLogger.i("插入"); - return this.insertDownLoadInfo(var1, var2, var3, var4); - } - } - - public void insertOrUpdateUnreadMsg(NotificationParam var1) { - StringBuilder var4 = new StringBuilder("id="); - var4.append(var1.id); - String var8 = var4.toString(); - Cursor var9 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, var8, (String[])null, (String)null); - boolean var2 = false; - boolean var3 = false; - if (var9 != null) { - while(true) { - var2 = var3; - if (var9.moveToNext()) { - int var7 = var9.getInt(0); - if (var7 != var1.category) { - continue; - } - - Uri var5 = ContentUris.withAppendedId(ICContentProvider.UNREAD_MSG_URI, (long)var7); - ContentValues var6 = new ContentValues(); - var6.put("category", var1.category); - var6.put("id", var1.id); - var6.put("count", var1.noReadmsgCount); - var6.put("recvtime", var1.lastRevTime); - this.cr.update(var5, var6, (String)null, (String[])null); - var2 = true; - } - - var9.close(); - break; - } - } - - if (!var2) { - ContentValues var10 = new ContentValues(); - var10.put("category", var1.category); - var10.put("id", var1.id); - var10.put("count", var1.noReadmsgCount); - var10.put("recvtime", var1.lastRevTime); - this.cr.insert(ICContentProvider.UNREAD_MSG_URI, var10); - } - - } - - public void insertTest(ArrayList var1) { - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var4 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - Contact var5 = (Contact)var1.get(var2); - ContentValues var6 = new ContentValues(); - var4[var2] = var6; - var6.put("CATEGORY", var5.category); - var6.put("NAME", var5.name); - var6.put("NUMBER", var5.number); - var6.put("ICON", var5.icon_index); - var6.put("EXTRA", var5.extra); - } - - this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var4); - } - - } - - public ArrayList queryAlarm() { - ArrayList var1 = new ArrayList(); - Cursor cursor = this.cr.query(ICContentProvider.ALARM_URI, (String[])null, (String)null, (String[])null, (String)null); - if (cursor != null) { - while(true) { - if (!cursor.moveToNext()) { - cursor.close(); - break; - } - - if ("ON".equals(cursor.getString(4))) { - var1.add(new Alarm(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5))); - } - } - } - - return var1; - } - - public ArrayList queryAntioff(boolean var1) { - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.ANTIOFF_URI; - String var2; - if (var1) { - var2 = "STATUS='ON'"; - } else { - var2 = null; - } - - Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); - ArrayList var6 = new ArrayList(); - if (var5 != null) { - while(var5.moveToNext()) { - var6.add(new Antioff(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); - } - - var5.close(); - } - - return var6; - } - - public Contact queryContactIconInfo(String var1) { - String var2 = var1; - Cursor var4 = this.cr.query(ICContentProvider.CONTACT_URI, (String[])null, "NUMBER=?", new String[]{var1}, "CATEGORY ASC"); - Contact var5 = null; - Contact var3 = null; - if (var4 != null) { - var5 = var3; - if (var4.moveToNext()) { - var5 = new Contact(var4.getInt(1), var4.getString(2), var4.getString(3), var4.getString(4), var4.getString(5)); - } - - var4.close(); - } - - var3 = var5; - if (var5 == null) { - String var7 = var2; - if (var2.contains("@")) { - var7 = var2.substring(2); - } - - Cursor var6 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, (String[])null, "EXTRA=?", new String[]{var7}, "CATEGORY ASC"); - var3 = var5; - if (var6 != null) { - if (var6.moveToNext()) { - var5 = new Contact(var6.getInt(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5)); - } - - var4.close(); - var3 = var5; - } - } - - return var3; - } - - public ArrayList queryNotice(String var1) { - ArrayList noticelist = new ArrayList(); - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.NOTICE_URL; - StringBuilder var5 = new StringBuilder(); - var5.append("TIME like '"); - var5.append(var1); - var5.append("%'"); - Cursor cr_notice = var3.query(var4, (String[])null, var5.toString(), (String[])null, (String)null); - if (cr_notice != null) { - while(true) { - if (!cr_notice.moveToNext()) { - cr_notice.close(); - break; - } - - noticelist.add(new NoticeContent(cr_notice.getString(1), - cr_notice.getString(2), - cr_notice.getString(3), - cr_notice.getString(4), - cr_notice.getString(5), - cr_notice.getString(6), - cr_notice.getString(7))); - } - } - - return noticelist; - } - - public ArrayList querySilence(boolean var1) { - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.SILENT_URI; - String var2; - if (var1) { - var2 = "STATUS='ON'"; - } else { - var2 = null; - } - - Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); - ArrayList var6 = new ArrayList(); - if (var5 != null) { - while(var5.moveToNext()) { - var6.add(new Silent(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); - } - - var5.close(); - } - - return var6; - } - - public ArrayList queryStheartRate(boolean var1) { - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.STHEART_RATE_URL; - String var2; - if (var1) { - var2 = "STATUS='ON'"; - } else { - var2 = null; - } - - Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); - ArrayList var6 = new ArrayList(); - if (var5 != null) { - while(var5.moveToNext()) { - var6.add(new StheartRate(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); - } - - var5.close(); - } - - return var6; - } - - public NotificationParam queryUnreadMsg(String id, int value) { - - Cursor cursor = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, new StringBuilder("id=").append(id).toString(), (String[])null, (String)null); - NotificationParam ret = null; - - if (cursor != null) { - while(true) { - if (cursor.moveToNext()) { - if (cursor.getInt(0) != value) { - continue; - } - ret = new NotificationParam(value, cursor.getString(1), cursor.getInt(2), cursor.getLong(3)); - } - - cursor.close(); - break; - } - } - - return ret; - } - - public ArrayList queryUnreadMsg() { - ArrayList var1 = new ArrayList(); - Cursor var2 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, (String[])null, (String)null, (String[])null, (String)null); - if (var2 != null) { - while(true) { - if (!var2.moveToNext()) { - var2.close(); - break; - } - - var1.add(new NotificationParam(var2.getInt(0), var2.getString(1), var2.getInt(2), Long.valueOf(var2.getLong(3)))); - } - } - - return var1; - } - - public void resetDatabase() { - this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.URLDOWNLOADPIC_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.DOWNLOADINFO_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.IKNOWLEDGE_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.ALARM_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.CONTACT_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.MESSAGE_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.ANTIOFF_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.UNREAD_MSG_URI, (String)null, (String[])null); - } - - public void saveAlarm(ArrayList paramArrayList) { - this.cr.delete(ICContentProvider.ALARM_URI, null, null); - int i = paramArrayList.size(); - if (i != 0) { - ContentValues[] arrayOfContentValues = new ContentValues[i]; - for (byte b = 0; b < i; b++) { - Alarm alarm = paramArrayList.get(b); - ContentValues contentValues = new ContentValues(); - arrayOfContentValues[b] = contentValues; - contentValues.put("TIME", alarm.time); - contentValues.put("WEEK", alarm.week); - contentValues.put("RING", alarm.ring); - contentValues.put("STATUS", alarm.status); - contentValues.put("NAME", alarm.name); - } - this.cr.bulkInsert(ICContentProvider.ALARM_URI, arrayOfContentValues); - } - this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE")); - } - - public void saveAntioff(ArrayList paramArrayList) { - String str; - Cursor cursor = this.cr.query(ICContentProvider.ANTIOFF_URI, null, null, null, null); - if (cursor != null) { - for (str = null; cursor.moveToNext(); str = cursor.getString(5)); - cursor.close(); - } else { - str = null; - } - this.cr.delete(ICContentProvider.ANTIOFF_URI, null, null); - int i = paramArrayList.size(); - if (i != 0) { - ContentValues[] arrayOfContentValues = new ContentValues[i]; - for (byte b = 0; b < i; b++) { - Antioff antioff = paramArrayList.get(b); - ContentValues contentValues = new ContentValues(); - arrayOfContentValues[b] = contentValues; - contentValues.put("START_TIME", antioff.start); - contentValues.put("END_TIME", antioff.end); - contentValues.put("WEEK", antioff.week); - contentValues.put("STATUS", antioff.status); - contentValues.put("CUR_SYS_STATUS", str); - } - this.cr.bulkInsert(ICContentProvider.ANTIOFF_URI, arrayOfContentValues); - } - this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE")); - } - - public void saveContacts(final ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) { - synchronized(this){} - - try { - long currenttime = SystemClock.elapsedRealtime(); - if (currenttime - lastUpdateTime > 1000L) { - this.saveContactsImpl(contactArray, admin, care,call, partner, video,sos); - lastUpdateTime = currenttime; - } else { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - DBHelper.this.saveContacts(contactArray, admin, care,call, partner, video,sos); - } - }, 1000); - } - } finally { - ; - } - - } - - public void saveNoticeContent(ArrayList var1) { - this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null); - if (var1 != null) { - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var4 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - NoticeContent var5 = (NoticeContent)var1.get(var2); - ContentValues var6 = new ContentValues(); - var4[var2] = var6; - var6.put("TIME", var5.noticeTime); - var6.put("NAME", var5.noticeName); - var6.put("NUMBER", var5.noticeNumber); - var6.put("ID", var5.noticeID); - var6.put("CATEGORY", var5.noticeCategory); - var6.put("FREQUENCY", var5.noticeFrequency); - var6.put("CONTENT", var5.noticeContent); - } - - this.cr.bulkInsert(ICContentProvider.NOTICE_URL, var4); - } - } - - this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE")); - } - - public void saveSilent(ArrayList var1) { - Cursor var5 = this.cr.query(ICContentProvider.SILENT_URI, (String[])null, (String)null, (String[])null, (String)null); - String var4; - if (var5 != null) { - for(var4 = null; var5.moveToNext(); var4 = var5.getString(5)) { - } - - var5.close(); - } else { - var4 = null; - } - - this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null); - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var8 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - Silent var6 = (Silent)var1.get(var2); - ContentValues var7 = new ContentValues(); - var8[var2] = var7; - var7.put("START_TIME", var6.start); - var7.put("END_TIME", var6.end); - var7.put("WEEK", var6.week); - var7.put("STATUS", var6.status); - var7.put("CUR_SYS_STATUS", var4); - } - - this.cr.bulkInsert(ICContentProvider.SILENT_URI, var8); - } - - } - - public void saveStheartRateList(ArrayList var1) { - StringBuilder var4 = new StringBuilder(); - var4.append("stheartRateListSize="); - var4.append(var1.size()); - var4.append("stheartRateList="); - var4.append(var1.toString()); - ICLogger.i(var4.toString()); - this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null); - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var7 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - StheartRate var5 = (StheartRate)var1.get(var2); - ContentValues var6 = new ContentValues(); - var7[var2] = var6; - var6.put("START_TIME", var5.start); - var6.put("END_TIME", var5.end); - var6.put("WEEK", var5.week); - var6.put("STATUS", var5.status); - var6.put("INTERVAL", var5.interval); - } - - this.cr.bulkInsert(ICContentProvider.STHEART_RATE_URL, var7); - } - - this.context.sendBroadcast(new Intent("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE")); - } - - public void saveUrlDownloadPic(String var1) { - String[] var8 = var1.split(","); - - for(int var2 = 0; var2 < var8.length; ++var2) { - ContentResolver var5 = this.cr; - Uri var6 = ICContentProvider.URLDOWNLOADPIC_URL; - String var7 = var8[var2]; - Cursor var9 = var5.query(var6, new String[]{"_id"}, "URL=?", new String[]{var7}, (String)null); - long var3; - if (var9 != null) { - if (var9.moveToNext()) { - var3 = var9.getLong(0); - } else { - var3 = -1L; - } - - var9.close(); - } else { - var3 = -1L; - } - - if (var3 == -1L) { - ContentValues var10 = new ContentValues(); - var10.put("URL", var8[var2]); - this.cr.insert(ICContentProvider.URLDOWNLOADPIC_URL, var10); - } - } - - } - - public void saveWeather(Weather var1) { - this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null); - ContentValues var2 = new ContentValues(); - var2.put("WEATHER_TYPE", var1.weatherType); - var2.put("MIN_TEMPERATURE", var1.min_Temperature); - var2.put("MAX_TEMPERATURE", var1.max_Temperature); - var2.put("CUR_TEMPERATURE", var1.cur_Temperature); - var2.put("WEATHER_INDEX", var1.weatherIndex); - var2.put("WEATHER_INFO", var1.weatherInfo); - Uri var4 = this.cr.insert(ICContentProvider.WEATHER_URL, var2); - StringBuilder var3 = new StringBuilder(); - var3.append("升级天气=="); - var3.append(var1.toString()); - var3.append("条目="); - var3.append(var4); - ICLogger.i(var3.toString()); - } - - public void upDateMonitor(final String var1, final String var2) { - synchronized(this){} - - try { - long var3 = SystemClock.elapsedRealtime(); - if (var3 - lastUpdateTime > 1000L) { - this.upDateMonitorImpl(var1, var2); - lastUpdateTime = var3; - } else { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - DBHelper.this.upDateMonitor(var1, var2); - } - },1000); - } - } finally { - ; - } - - } - - public void upDateStatus(int var1) { - ContentValues var2 = new ContentValues(); - var2.put("IS_ALARM", var1); - this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null); - } - - public void upDateStatus(String var1) { - ContentValues var2 = new ContentValues(); - var2.put("IS_SILENCE", var1); - this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null); - } - - public void upDateorInsertDeviceStatus(String var1) { - Cursor var2 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null); - ContentValues var3 = new ContentValues(); - var3.put("IS_SILENCE", var1); - if (var2 != null) { - if (var2.getCount() == 0) { - this.cr.insert(ICContentProvider.DEVICESTATUS_URL, var3); - return; - } - this.cr.update(ICContentProvider.DEVICESTATUS_URL, var3, (String)null, (String[])null); - } - - } - - - public void updateMessage(Content var1, Uri var2) { - ContentValues var3 = new ContentValues(); - var3.put("CATEGORY", var1.category); - var3.put("CONTENT", var1.content); - var3.put("PREVIEW", var1.preview); - var3.put("STATUS", var1.status); - var3.put("IN_OR_OUT", var1.inOrOut); - var3.put("CONTACT_CATEGORY", var1.contactCategory); - var3.put("CONTACT_NUMBER", var1.contactNumber); - var3.put("SERVER_TIME", var1.serverTime); - var3.put("LOCAL_TIME", var1.localTime); - this.cr.update(var2, var3, (String)null, (String[])null); - } - - - public void insertSleepRecord(SleepRecord sr){ - /*每次打点的记录表 SLEEP_DATE 代表记录睡眠的日期,例如 22日上午7:00的计入到21日的睡眠记录中。 DATE代表记录的时间,此出应该等于上文的 22日 7:00 */ -// sqlite.execSQL("CREATE TABLE SLEEP_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SLEEP_DATE TEXT,DATE TEXT, TIME TEXT,STEPCOUNT INTEGER ,ROLLTIMES INTEGER ,STATUS TEXT )"); - ContentValues values=new ContentValues(); - values.put("DATE",sr.date); - values.put("SLEEP_DATE",sr.sleep_date); - values.put("STEPCOUNT",sr.stepCount); - values.put("STATUS",sr.status); - this.cr.insert( ICContentProvider.SLEEP_RECORDS_URI, values); - } - - - public ArrayList querySleepRecord(String sleep_date) { - ArrayList sleeprecordList = new ArrayList(); - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.SLEEP_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("SLEEP_DATE like '"); - where.append(sleep_date); - where.append("'"); - Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - if (cr_sleeprecord != null) { - while (true) { - if (!cr_sleeprecord.moveToNext()) { - cr_sleeprecord.close(); - break; - } - sleeprecordList.add(new SleepRecord( - cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("DATE")), cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("SLEEP_DATE")), cr_sleeprecord.getInt(cr_sleeprecord.getColumnIndex("STEPCOUNT")))); - } - } - return sleeprecordList; - } - public void updateSleepInfo(SleepInfo si){ - /*计算后的分值,每天会在睡眠结束后计算Records获得*/ -// sqlite.execSQL("CREATE TABLE SLEEP_STATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT , DEEP_SLEEP INTEGER , LIGHT_SLEEP INTEGER ,SCORE INTEGER )"); - - ContentValues values = new ContentValues(); - values.put("DATE",si.getCurrentDate()); - values.put("DEEP_SLEEP",si.getDeepsleep_minutes()); - values.put("LIGHT_SLEEP",si.getLightsleep_minutes()); - values.put("SCORE",si.getScore()); - this.cr.insert( ICContentProvider.SLEEP_STATUS_URI, values); - } - - - public int querySleepScore(String dateyyyyMMddHHmmss){ - - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.SLEEP_STATUS_URI; - StringBuilder where = new StringBuilder(); - where.append("DATE like '"); - where.append(dateyyyyMMddHHmmss); - where.append("'"); - ICLogger.i("Query SleepScore "+where); - Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - if (cr_sleeprecord != null) { - int score=0; - if (cr_sleeprecord.getCount()> 0) { - if (cr_sleeprecord.moveToFirst()) { - int index = cr_sleeprecord.getColumnIndex("SCORE"); - score = cr_sleeprecord.getInt(4); - ICLogger.i("get SleepScore "+score + " column index "+index); - } - - } - cr_sleeprecord.close(); - ICLogger.i("get SleepScore "+ score); - return score; - } - return 0; - } - public int deleteSleepData(){ - this.cr.delete(ICContentProvider.SLEEP_RECORDS_URI, (String)null, (String[])null); - return 0; - } - public void insertEventMsg(String dateyyyyMMddHHmmss,int event_type,String event_name){ - //日志表格,存储开机关机,低电报警等消息。。。 -// sqlite.execSQL("CREATE TABLE EVENT_MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT , EVENT_TYPE INTEGER, EVENT_NAME TEXT, TIME TEXT )"); - - ContentValues values = new ContentValues(); - values.put("EVENT_TYPE",event_type); - values.put("EVENT_NAME",event_name); - values.put("TIME",dateyyyyMMddHHmmss); - this.cr.insert( ICContentProvider.EVENT_MESSAGE_URI, values); - - } - -//sqlite.execSQL("CREATE TABLE PROTOCOL_CMD_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT , FLAG INTEGER, DATE TEXT, TIME TEXT ,TOPIC TEXT,CMD TEXT )"); - - public long insertCMDRecord(StringMessage msg){ - ContentValues values = new ContentValues(); - values.put("FLAG",msg.haveSent()); - if(msg.getDate()==null || msg.getTime()==null) - msg.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss()); - values.put("DATE",msg.getDate()); - values.put("TIME",msg.getTime()); - values.put("TOPIC",msg.cmd()); - values.put("CMD",msg.isFromCache()); - long raw_contactID = ContentUris.parseId(cr.insert(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, values)); - if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " insert db " +raw_contactID+" "+msg.getDate()+msg.getTime()+" "+ msg.cmd()+" "+msg.isFromCache()); - - return raw_contactID; - } - - - // - public void updateCMDRecord(int id, int flag){ - - String WhereClause=null; - if (id>=0) { - WhereClause=new StringBuilder("_id=").append(id).toString(); - - ContentValues flagcontent = new ContentValues(); - flagcontent.put("FLAG", flag); - this.cr.update(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, flagcontent, WhereClause, (String[])null); - } - } - - public void clearCMDRecordsHaveSent(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG>1"); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - if(cmdrecords!=null){ - if(cmdrecords.getCount()>500) { - pcr.delete(table, where.toString(), (String[]) null); - ICLogger.i("delete cmdRecords have sent "); - }else{ - ICLogger.i("cmdRecords less than 500 , skip delete "); - } - } - } - - public StringMessage queryNotSentCMDRecord(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG=0"); - //ICLogger.i("Query cmdRecords "+where); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - StringMessage msg=null; - if (cmdrecords != null) { - int score=0; - if (cmdrecords.getCount()> 0) { - if (cmdrecords.moveToFirst()) { - String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); - String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); - String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); - String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); - int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); - int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); - - msg=new StringMessage(new String[]{topic}); - msg.refresh(cmd); - msg.setDate(date,time); - msg.setSentFlag(flag); - msg.setIndex(index); - ICLogger.i("get cmd Record not sent _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); - - } - } - cmdrecords.close(); - - if (msg==null) - ICLogger.i("no cmd record in not sent status !"); - } - return msg; - } - - - public StringMessage queryWaitCMDRecord(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG=1"); - // ICLogger.i("Query cmdRecords "+where); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - StringMessage msg=null; - if (cmdrecords != null) { - int score=0; - if (cmdrecords.getCount()> 0) { - if (cmdrecords.moveToFirst()) { - String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); - String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); - String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); - String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); - int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); - int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); - - msg=new StringMessage(new String[]{topic}); - msg.refresh(cmd); - msg.setDate(date,time); - msg.setSentFlag(flag); - msg.setIndex(index); - ICLogger.i("get cmd Record wait response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); - - } - } - cmdrecords.close(); - - if (msg==null) - ICLogger.i("no cmd record in wait status !"); - } - return msg; - } - - - public StringMessage queryDiscardCMDRecord(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG=3"); - // ICLogger.i("Query cmdRecords "+where); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - StringMessage msg=null; - if (cmdrecords != null) { - int score=0; - if (cmdrecords.getCount()> 0) { - if (cmdrecords.moveToFirst()) { - String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); - String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); - String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); - String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); - int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); - int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); - - msg=new StringMessage(new String[]{topic}); - msg.refresh(cmd); - msg.setDate(date,time); - msg.setSentFlag(flag); - msg.setIndex(index); - ICLogger.i("get cmd Record discarded response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); - } - } - cmdrecords.close(); - - if (msg==null) - ICLogger.i("no cmd record in wait status !"); - } - return msg; - } - - - -} + +package com.enqualcomm.support.utils; + +import android.content.ContentProviderOperation; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.ContentProviderOperation.Builder; +import android.database.Cursor; +import android.net.Uri; +import android.os.Handler; +import android.os.SystemClock; +import android.provider.BaseColumns; +import android.provider.ContactsContract; +import android.provider.ContactsContract.Data; +import android.provider.ContactsContract.RawContacts; +import android.text.TextUtils; + +import com.enqualcomm.support.Config; +import com.enqualcomm.support.ICContentProvider; +import com.enqualcomm.support.bean.Alarm; +import com.enqualcomm.support.bean.Antioff; +import com.enqualcomm.support.bean.Contact; +import com.enqualcomm.support.bean.Content; +import com.enqualcomm.support.bean.DeviceStatus; +import com.enqualcomm.support.bean.NoticeContent; +import com.enqualcomm.support.bean.NotificationParam; +import com.enqualcomm.support.bean.Silent; +import com.enqualcomm.support.bean.SleepInfo; +import com.enqualcomm.support.bean.SleepRecord; +import com.enqualcomm.support.bean.StheartRate; +import com.enqualcomm.support.bean.StringMessage; +import com.enqualcomm.support.bean.Weather; + +import java.util.ArrayList; +import java.util.Iterator; + +import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; +import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE; +import static com.enqualcomm.support.bean.Contact.CATEGORY_ADMIN; +import static com.enqualcomm.support.bean.Contact.CATEGORY_CALL; +import static com.enqualcomm.support.bean.Contact.CATEGORY_CARE; +import static com.enqualcomm.support.bean.Contact.CATEGORY_PARTNER; +import static com.enqualcomm.support.bean.Contact.CATEGORY_SOS; +import static com.enqualcomm.support.bean.Contact.CATEGORY_VIDEO; + +public class DBHelper { + private static long lastUpdateTime; + private Context context; + private ContentResolver cr; + + public DBHelper(ContentResolver var1, Context var2) { + this.cr = var1; + this.context = var2; + } + + private void addAllContact(ArrayList contactArray, ContentResolver resolver) { + Iterator contactIT = contactArray.iterator(); + + while(contactIT.hasNext()) { + Contact contact = (Contact)contactIT.next(); + ContentValues contentvalues = new ContentValues(); + long raw_contactID = ContentUris.parseId(resolver.insert(RawContacts.CONTENT_URI, contentvalues)); + + contentvalues.clear(); + contentvalues.put("raw_contact_id", raw_contactID); + contentvalues.put("mimetype", "vnd.android.cursor.item/name"); + contentvalues.put("data2", contact.name); + resolver.insert(Data.CONTENT_URI, contentvalues); + contentvalues.clear(); + + contentvalues.put("raw_contact_id", raw_contactID); + contentvalues.put("mimetype", "vnd.android.cursor.item/phone_v2"); + contentvalues.put("data1", contact.number); + contentvalues.put("data2", 2); + resolver.insert(Data.CONTENT_URI, contentvalues); + contentvalues.clear(); + } + + } + + public int getContactCount(ContentResolver resolver) + { + StringBuilder sb = new StringBuilder(); + + Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, null, (String[])null, "CATEGORY ASC"); + + return cursor.getCount(); + + } + private void deleteAllContact(ArrayList contactArraylist, String where, ContentResolver resolver) { + StringBuilder sb = new StringBuilder(); + sb.append("where="); + sb.append(where); + ICLogger.i(sb.toString()); + Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, where, (String[])null, "CATEGORY ASC"); + + Iterator contactIT = contactArraylist.iterator(); + + while(contactIT.hasNext()) { + this.DeleteContactId(resolver, ((Contact)contactIT.next()).name); + } + resolver.delete(ICContentProvider.CONTACT_URI, where, (String[])null); + } + + private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) { + ContentValues var5 = new ContentValues(); + var5.put("IMSI", var1); + var5.put("TIME", var4); + var5.put("NUMBER", var2); + var5.put("TOTAL_NUMBER", var3); + return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5); + } + + private void saveContactsImpl(ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) { + StringBuilder log = new StringBuilder(); + log.append("saveContactsImpl contactList = "); + log.append(contactArray.toString()); + ICLogger.i(log.toString()); + StringBuilder where = new StringBuilder("CATEGORY IN ("); + if (admin) { + where.append(CATEGORY_ADMIN); + where.append(","); + } + + if (care) { + where.append(CATEGORY_CARE); + where.append(","); + } + + if (call) { + where.append(CATEGORY_CALL); + where.append(","); + } + + if (partner) { + where.append(CATEGORY_PARTNER); + where.append(","); + } + + if (video) { + where.append(CATEGORY_VIDEO); + where.append(","); + } + + if (sos) { + where.append(CATEGORY_SOS); + where.append(","); + } + int len = where.length(); + if (len > 13) { + where.setCharAt(len - 1, ')'); + this.deleteAllContact(contactArray, where.toString(), this.cr); + int contactCount = contactArray.size(); + if (contactCount != 0) { + ContentValues[] contentlist = new ContentValues[contactCount]; + + for(int i = 0; i < contactCount; ++i) { + Contact contact = (Contact)contactArray.get(i); + ContentValues contentValues = new ContentValues(); + contentlist[i] = contentValues; + contentValues.put("CATEGORY", contact.category); + contentValues.put("NAME", contact.name); + contentValues.put("NUMBER", contact.number); + contentValues.put("ICON", contact.icon_index); + contentValues.put("EXTRA", contact.extra); + StringBuilder log1 = new StringBuilder(); + log1.append("contact="); + log1.append(contact.toString()); + ICLogger.i(log1.toString()); + } + + this.cr.bulkInsert(ICContentProvider.CONTACT_URI, contentlist); + this.addAllContact(contactArray, this.cr); + } + + } + } + + private void upDateMonitorImpl(String var1, String var2) { + Cursor var5 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null); + ArrayList var4 = new ArrayList(); + if (var5 != null) { + while(true) { + if (!var5.moveToNext()) { + var5.close(); + break; + } + + var4.add(new DeviceStatus(var5.getString(1), "0", "0", var5.getInt(4))); + } + } + + this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null); + if (var4.size() != 0) { + ContentValues[] var8 = new ContentValues[var4.size()]; + + for(int var3 = 0; var3 < var4.size(); ++var3) { + DeviceStatus var6 = (DeviceStatus)var4.get(var3); + ContentValues var7 = new ContentValues(); + var8[var3] = var7; + var7.put("IS_SILENCE", var6.isSilence); + var7.put("START_MONITOR", var1); + var7.put("END_MONITOR", var2); + var7.put("IS_ALARM", var6.isAlarm); + } + + this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8); + } + + } + + public void deleteMessage(Uri var1) { + this.cr.delete(var1, (String)null, (String[])null); + } + + public String DeleteContactId(ContentResolver contentResolver, String name) { + String ContactId=null; + Uri uri = ContactsContract.RawContacts.CONTENT_URI; + ContentResolver resolver = contentResolver; + String where = ContactsContract.PhoneLookup.DISPLAY_NAME; + Cursor cursor = resolver.query(uri, new String[]{Data._ID}, where + "=?", new String[]{name}, null); + if (cursor.moveToFirst()) { + int id = cursor.getInt(0); + ContactId=String.valueOf(id); + //根据id删除data中的相应数据 + resolver.delete(uri, where + "=?", new String[]{name}); + uri = ContactsContract.Data.CONTENT_URI; + resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""}); + } + return ContactId; + } + + public boolean getWeather() { + Cursor var5 = this.cr.query(ICContentProvider.WEATHER_URL, (String[])null, (String)null, (String[])null, (String)null); + if (var5 != null && var5.moveToNext()) { + String var1 = var5.getString(1); + String var2 = var5.getString(2); + String var3 = var5.getString(3); + String var4 = var5.getString(4); + String var7 = var5.getString(5); + StringBuilder var6 = new StringBuilder(); + var6.append("weather_type="); + var6.append(var1); + var6.append("min_temperature="); + var6.append(var2); + var6.append("max_temperature="); + var6.append(var3); + var6.append("cur_temperature="); + var6.append(var4); + var6.append("weather_index="); + var6.append(var7); + ICLogger.i(var6.toString()); + return true; + } else { + return false; + } + } + + public Uri insertMessage(Content var1) { + ContentValues var2 = new ContentValues(); + var2.put("CATEGORY", var1.category); + var2.put("CONTENT", var1.content); + var2.put("PREVIEW", var1.preview); + var2.put("STATUS", var1.status); + var2.put("IN_OR_OUT", var1.inOrOut); + var2.put("CONTACT_CATEGORY", var1.contactCategory); + var2.put("CONTACT_NUMBER", var1.contactNumber); + var2.put("SERVER_TIME", var1.serverTime); + var2.put("LOCAL_TIME", var1.localTime); + var2.put("ICON", var1.icon); + return this.cr.insert(ICContentProvider.MESSAGE_URI, var2); + } + + public Uri insertOrUpdate(Content var1) { + StringBuilder sb = new StringBuilder("CATEGORY="); + sb.append(var1.category); + sb.append(" and CONTENT='"); + sb.append(var1.content); + sb.append("' and CONTACT_NUMBER='"); + sb.append(var1.contactNumber); + sb.append("' and CONTACT_CATEGORY="); + sb.append(var1.contactCategory); + String where = sb.toString(); + Cursor cursor = this.cr.query(ICContentProvider.MESSAGE_URI, new String[]{"_id"}, where, (String[])null, (String)null); + long id; + if (cursor != null) { + if (cursor.moveToNext()) { + id = cursor.getLong(0); + } else { + id = -1L; + } + + cursor.close(); + } else { + id = -1L; + } + + if (id != -1L) { + Uri var6 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); + ContentValues var5 = new ContentValues(); + var5.put("STATUS", var1.status); + var5.put("CONTENT", var1.content); + this.cr.update(var6, var5, (String)null, (String[])null); + return var6; + } else { + return this.insertMessage(var1); + } + } + + public Uri insertOrUpdate(Content content, long id) { + label21: { + if (id > 0L) { + ContentResolver var4 = this.cr; + Uri var5 = ICContentProvider.MESSAGE_URI; + StringBuilder var6 = new StringBuilder(); + var6.append("_id="); + var6.append(id); + String where = var6.toString(); + Cursor cursor = var4.query(var5, new String[]{"_id"}, where, (String[])null, (String)null); + if (cursor != null) { + if (cursor.moveToNext()) { + id = cursor.getLong(0); + } else { + id = -1L; + } + + cursor.close(); + break label21; + } + } + + id = -1L; + } + + if (id != -1L) { + Uri var8 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); + ContentValues var9 = new ContentValues(); + var9.put("STATUS", content.status); + this.cr.update(var8, var9, (String)null, (String[])null); + return var8; + } else { + return this.insertMessage(content); + } + } + + public Uri insertOrUpdateDownLoadInfo(String var1, int var2, int var3, String var4) { + StringBuilder var7 = new StringBuilder("IMSI="); + var7.append(var1); + String var9 = var7.toString(); + Cursor var10 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, new String[]{"_id"}, var9, (String[])null, (String)null); + long var5; + if (var10 != null) { + if (var10.moveToNext()) { + var5 = var10.getLong(0); + } else { + var5 = -1L; + } + + var10.close(); + } else { + var5 = -1L; + } + + if (var5 != -1L) { + Uri var11 = ContentUris.withAppendedId(ICContentProvider.DOWNLOADINFO_URL, var5); + ContentValues var8 = new ContentValues(); + var8.put("IMSI", var1); + var8.put("TIME", var4); + var8.put("NUMBER", var2); + var8.put("TOTAL_NUMBER", var3); + this.cr.update(var11, var8, (String)null, (String[])null); + return var11; + } else { + ICLogger.i("插入"); + return this.insertDownLoadInfo(var1, var2, var3, var4); + } + } + + public void insertOrUpdateUnreadMsg(NotificationParam var1) { + StringBuilder var4 = new StringBuilder("id="); + var4.append(var1.id); + String var8 = var4.toString(); + Cursor var9 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, var8, (String[])null, (String)null); + boolean var2 = false; + boolean var3 = false; + if (var9 != null) { + while(true) { + var2 = var3; + if (var9.moveToNext()) { + int var7 = var9.getInt(0); + if (var7 != var1.category) { + continue; + } + + Uri var5 = ContentUris.withAppendedId(ICContentProvider.UNREAD_MSG_URI, (long)var7); + ContentValues var6 = new ContentValues(); + var6.put("category", var1.category); + var6.put("id", var1.id); + var6.put("count", var1.noReadmsgCount); + var6.put("recvtime", var1.lastRevTime); + this.cr.update(var5, var6, (String)null, (String[])null); + var2 = true; + } + + var9.close(); + break; + } + } + + if (!var2) { + ContentValues var10 = new ContentValues(); + var10.put("category", var1.category); + var10.put("id", var1.id); + var10.put("count", var1.noReadmsgCount); + var10.put("recvtime", var1.lastRevTime); + this.cr.insert(ICContentProvider.UNREAD_MSG_URI, var10); + } + + } + + public void insertTest(ArrayList var1) { + int var3 = var1.size(); + if (var3 != 0) { + ContentValues[] var4 = new ContentValues[var3]; + + for(int var2 = 0; var2 < var3; ++var2) { + Contact var5 = (Contact)var1.get(var2); + ContentValues var6 = new ContentValues(); + var4[var2] = var6; + var6.put("CATEGORY", var5.category); + var6.put("NAME", var5.name); + var6.put("NUMBER", var5.number); + var6.put("ICON", var5.icon_index); + var6.put("EXTRA", var5.extra); + } + + this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var4); + } + + } + + public ArrayList queryAlarm() { + ArrayList var1 = new ArrayList(); + Cursor cursor = this.cr.query(ICContentProvider.ALARM_URI, (String[])null, (String)null, (String[])null, (String)null); + if (cursor != null) { + while(true) { + if (!cursor.moveToNext()) { + cursor.close(); + break; + } + + if ("ON".equals(cursor.getString(4))) { + var1.add(new Alarm(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5))); + } + } + } + + return var1; + } + + public ArrayList queryAntioff(boolean var1) { + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.ANTIOFF_URI; + String var2; + if (var1) { + var2 = "STATUS='ON'"; + } else { + var2 = null; + } + + Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); + ArrayList var6 = new ArrayList(); + if (var5 != null) { + while(var5.moveToNext()) { + var6.add(new Antioff(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); + } + + var5.close(); + } + + return var6; + } + + public Contact queryContactIconInfo(String var1) { + String var2 = var1; + Cursor var4 = this.cr.query(ICContentProvider.CONTACT_URI, (String[])null, "NUMBER=?", new String[]{var1}, "CATEGORY ASC"); + Contact var5 = null; + Contact var3 = null; + if (var4 != null) { + var5 = var3; + if (var4.moveToNext()) { + var5 = new Contact(var4.getInt(1), var4.getString(2), var4.getString(3), var4.getString(4), var4.getString(5)); + } + + var4.close(); + } + + var3 = var5; + if (var5 == null) { + String var7 = var2; + if (var2.contains("@")) { + var7 = var2.substring(2); + } + + Cursor var6 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, (String[])null, "EXTRA=?", new String[]{var7}, "CATEGORY ASC"); + var3 = var5; + if (var6 != null) { + if (var6.moveToNext()) { + var5 = new Contact(var6.getInt(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5)); + } + + var4.close(); + var3 = var5; + } + } + + return var3; + } + + public ArrayList queryNotice(String var1) { + ArrayList noticelist = new ArrayList(); + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.NOTICE_URL; + StringBuilder var5 = new StringBuilder(); + var5.append("TIME like '"); + var5.append(var1); + var5.append("%'"); + Cursor cr_notice = var3.query(var4, (String[])null, var5.toString(), (String[])null, (String)null); + if (cr_notice != null) { + while(true) { + if (!cr_notice.moveToNext()) { + cr_notice.close(); + break; + } + + noticelist.add(new NoticeContent(cr_notice.getString(1), + cr_notice.getString(2), + cr_notice.getString(3), + cr_notice.getString(4), + cr_notice.getString(5), + cr_notice.getString(6), + cr_notice.getString(7))); + } + } + + return noticelist; + } + + public ArrayList querySilence(boolean var1) { + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.SILENT_URI; + String var2; + if (var1) { + var2 = "STATUS='ON'"; + } else { + var2 = null; + } + + Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); + ArrayList var6 = new ArrayList(); + if (var5 != null) { + while(var5.moveToNext()) { + var6.add(new Silent(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); + } + + var5.close(); + } + + return var6; + } + + public ArrayList queryStheartRate(boolean var1) { + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.STHEART_RATE_URL; + String var2; + if (var1) { + var2 = "STATUS='ON'"; + } else { + var2 = null; + } + + Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); + ArrayList var6 = new ArrayList(); + if (var5 != null) { + while(var5.moveToNext()) { + var6.add(new StheartRate(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); + } + + var5.close(); + } + + return var6; + } + + public NotificationParam queryUnreadMsg(String id, int value) { + + Cursor cursor = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, new StringBuilder("id=").append(id).toString(), (String[])null, (String)null); + NotificationParam ret = null; + + if (cursor != null) { + while(true) { + if (cursor.moveToNext()) { + if (cursor.getInt(0) != value) { + continue; + } + ret = new NotificationParam(value, cursor.getString(1), cursor.getInt(2), cursor.getLong(3)); + } + + cursor.close(); + break; + } + } + + return ret; + } + + public ArrayList queryUnreadMsg() { + ArrayList var1 = new ArrayList(); + Cursor var2 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, (String[])null, (String)null, (String[])null, (String)null); + if (var2 != null) { + while(true) { + if (!var2.moveToNext()) { + var2.close(); + break; + } + + var1.add(new NotificationParam(var2.getInt(0), var2.getString(1), var2.getInt(2), Long.valueOf(var2.getLong(3)))); + } + } + + return var1; + } + + public void resetDatabase() { + this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.URLDOWNLOADPIC_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.DOWNLOADINFO_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.IKNOWLEDGE_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null); + this.cr.delete(ICContentProvider.ALARM_URI, (String)null, (String[])null); + this.cr.delete(ICContentProvider.CONTACT_URI, (String)null, (String[])null); + this.cr.delete(ICContentProvider.MESSAGE_URI, (String)null, (String[])null); + this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null); + this.cr.delete(ICContentProvider.ANTIOFF_URI, (String)null, (String[])null); + this.cr.delete(ICContentProvider.UNREAD_MSG_URI, (String)null, (String[])null); + } + + public void saveAlarm(ArrayList paramArrayList) { + this.cr.delete(ICContentProvider.ALARM_URI, null, null); + int i = paramArrayList.size(); + if (i != 0) { + ContentValues[] arrayOfContentValues = new ContentValues[i]; + for (byte b = 0; b < i; b++) { + Alarm alarm = paramArrayList.get(b); + ContentValues contentValues = new ContentValues(); + arrayOfContentValues[b] = contentValues; + contentValues.put("TIME", alarm.time); + contentValues.put("WEEK", alarm.week); + contentValues.put("RING", alarm.ring); + contentValues.put("STATUS", alarm.status); + contentValues.put("NAME", alarm.name); + } + this.cr.bulkInsert(ICContentProvider.ALARM_URI, arrayOfContentValues); + } + this.context.sendBroadcast(new Intent(ACTION_ALARM_ALARM_CHANGE)); + } + + public void saveAntioff(ArrayList paramArrayList) { + String str; + Cursor cursor = this.cr.query(ICContentProvider.ANTIOFF_URI, null, null, null, null); + if (cursor != null) { + for (str = null; cursor.moveToNext(); str = cursor.getString(5)); + cursor.close(); + } else { + str = null; + } + this.cr.delete(ICContentProvider.ANTIOFF_URI, null, null); + int i = paramArrayList.size(); + if (i != 0) { + ContentValues[] arrayOfContentValues = new ContentValues[i]; + for (byte b = 0; b < i; b++) { + Antioff antioff = paramArrayList.get(b); + ContentValues contentValues = new ContentValues(); + arrayOfContentValues[b] = contentValues; + contentValues.put("START_TIME", antioff.start); + contentValues.put("END_TIME", antioff.end); + contentValues.put("WEEK", antioff.week); + contentValues.put("STATUS", antioff.status); + contentValues.put("CUR_SYS_STATUS", str); + } + this.cr.bulkInsert(ICContentProvider.ANTIOFF_URI, arrayOfContentValues); + } + this.context.sendBroadcast(new Intent(ACTION_ANTIOFF_ALARM_CHANGE)); + } + + public void saveContacts(final ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) { + synchronized(this){} + + try { + long currenttime = SystemClock.elapsedRealtime(); + if (currenttime - lastUpdateTime > 1000L) { + this.saveContactsImpl(contactArray, admin, care,call, partner, video,sos); + lastUpdateTime = currenttime; + } else { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + DBHelper.this.saveContacts(contactArray, admin, care,call, partner, video,sos); + } + }, 1000); + } + } finally { + ; + } + + } + + public void saveNoticeContent(ArrayList var1) { + this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null); + if (var1 != null) { + int var3 = var1.size(); + if (var3 != 0) { + ContentValues[] var4 = new ContentValues[var3]; + + for(int var2 = 0; var2 < var3; ++var2) { + NoticeContent var5 = (NoticeContent)var1.get(var2); + ContentValues var6 = new ContentValues(); + var4[var2] = var6; + var6.put("TIME", var5.noticeTime); + var6.put("NAME", var5.noticeName); + var6.put("NUMBER", var5.noticeNumber); + var6.put("ID", var5.noticeID); + var6.put("CATEGORY", var5.noticeCategory); + var6.put("FREQUENCY", var5.noticeFrequency); + var6.put("CONTENT", var5.noticeContent); + } + + this.cr.bulkInsert(ICContentProvider.NOTICE_URL, var4); + } + } + + this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE")); + } + + public void saveSilent(ArrayList slist) { + Cursor cursor = this.cr.query(ICContentProvider.SILENT_URI, (String[])null, (String)null, (String[])null, (String)null); + String current_sys_status; + if (cursor != null) { + //获取silent免打扰状态 ON/OFF + for(current_sys_status = null; cursor.moveToNext(); current_sys_status = cursor.getString(5)) { + } + + cursor.close(); + } else { + current_sys_status = null; + } + + this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null); + int count = slist.size(); + if (count != 0) { + ContentValues[] contentValueslist = new ContentValues[count]; + + for(int row = 0; row < count; ++row) { + Silent silent = (Silent)slist.get(row); + ContentValues contentValues = new ContentValues(); + contentValueslist[row] = contentValues; + contentValues.put("START_TIME", silent.start); + contentValues.put("END_TIME", silent.end); + contentValues.put("WEEK", silent.week); + contentValues.put("STATUS", silent.status); + contentValues.put("CUR_SYS_STATUS", current_sys_status); + } + + this.cr.bulkInsert(ICContentProvider.SILENT_URI, contentValueslist); + } + + } + + public void saveStheartRateList(ArrayList var1) { + StringBuilder var4 = new StringBuilder(); + var4.append("stheartRateListSize="); + var4.append(var1.size()); + var4.append("stheartRateList="); + var4.append(var1.toString()); + ICLogger.i(var4.toString()); + this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null); + int var3 = var1.size(); + if (var3 != 0) { + ContentValues[] var7 = new ContentValues[var3]; + + for(int var2 = 0; var2 < var3; ++var2) { + StheartRate var5 = (StheartRate)var1.get(var2); + ContentValues var6 = new ContentValues(); + var7[var2] = var6; + var6.put("START_TIME", var5.start); + var6.put("END_TIME", var5.end); + var6.put("WEEK", var5.week); + var6.put("STATUS", var5.status); + var6.put("INTERVAL", var5.interval); + } + + this.cr.bulkInsert(ICContentProvider.STHEART_RATE_URL, var7); + } + + this.context.sendBroadcast(new Intent("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE")); + } + + public void saveUrlDownloadPic(String var1) { + String[] var8 = var1.split(","); + + for(int var2 = 0; var2 < var8.length; ++var2) { + ContentResolver var5 = this.cr; + Uri var6 = ICContentProvider.URLDOWNLOADPIC_URL; + String var7 = var8[var2]; + Cursor var9 = var5.query(var6, new String[]{"_id"}, "URL=?", new String[]{var7}, (String)null); + long var3; + if (var9 != null) { + if (var9.moveToNext()) { + var3 = var9.getLong(0); + } else { + var3 = -1L; + } + + var9.close(); + } else { + var3 = -1L; + } + + if (var3 == -1L) { + ContentValues var10 = new ContentValues(); + var10.put("URL", var8[var2]); + this.cr.insert(ICContentProvider.URLDOWNLOADPIC_URL, var10); + } + } + + } + + public void saveWeather(Weather var1) { + this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null); + ContentValues var2 = new ContentValues(); + var2.put("WEATHER_TYPE", var1.weatherType); + var2.put("MIN_TEMPERATURE", var1.min_Temperature); + var2.put("MAX_TEMPERATURE", var1.max_Temperature); + var2.put("CUR_TEMPERATURE", var1.cur_Temperature); + var2.put("WEATHER_INDEX", var1.weatherIndex); + var2.put("WEATHER_INFO", var1.weatherInfo); + Uri var4 = this.cr.insert(ICContentProvider.WEATHER_URL, var2); + StringBuilder var3 = new StringBuilder(); + var3.append("升级天气=="); + var3.append(var1.toString()); + var3.append("条目="); + var3.append(var4); + ICLogger.i(var3.toString()); + } + + public void upDateMonitor(final String var1, final String var2) { + synchronized(this){} + + try { + long var3 = SystemClock.elapsedRealtime(); + if (var3 - lastUpdateTime > 1000L) { + this.upDateMonitorImpl(var1, var2); + lastUpdateTime = var3; + } else { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + DBHelper.this.upDateMonitor(var1, var2); + } + },1000); + } + } finally { + ; + } + + } + + public void upDateStatus(int var1) { + ContentValues var2 = new ContentValues(); + var2.put("IS_ALARM", var1); + this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null); + } + + public void upDateStatus(String var1) { + ContentValues var2 = new ContentValues(); + var2.put("IS_SILENCE", var1); + this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null); + } + + public void upDateorInsertDeviceStatus(String var1) { + Cursor var2 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null); + ContentValues var3 = new ContentValues(); + var3.put("IS_SILENCE", var1); + if (var2 != null) { + if (var2.getCount() == 0) { + this.cr.insert(ICContentProvider.DEVICESTATUS_URL, var3); + return; + } + this.cr.update(ICContentProvider.DEVICESTATUS_URL, var3, (String)null, (String[])null); + } + + } + + + public void updateMessage(Content var1, Uri var2) { + ContentValues var3 = new ContentValues(); + var3.put("CATEGORY", var1.category); + var3.put("CONTENT", var1.content); + var3.put("PREVIEW", var1.preview); + var3.put("STATUS", var1.status); + var3.put("IN_OR_OUT", var1.inOrOut); + var3.put("CONTACT_CATEGORY", var1.contactCategory); + var3.put("CONTACT_NUMBER", var1.contactNumber); + var3.put("SERVER_TIME", var1.serverTime); + var3.put("LOCAL_TIME", var1.localTime); + this.cr.update(var2, var3, (String)null, (String[])null); + } + + + public void insertSleepRecord(SleepRecord sr){ + /*每次打点的记录表 SLEEP_DATE 代表记录睡眠的日期,例如 22日上午7:00的计入到21日的睡眠记录中。 DATE代表记录的时间,此出应该等于上文的 22日 7:00 */ +// sqlite.execSQL("CREATE TABLE SLEEP_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SLEEP_DATE TEXT,DATE TEXT, TIME TEXT,STEPCOUNT INTEGER ,ROLLTIMES INTEGER ,STATUS TEXT )"); + ContentValues values=new ContentValues(); + values.put("DATE",sr.date); + values.put("SLEEP_DATE",sr.sleep_date); + values.put("STEPCOUNT",sr.stepCount); + values.put("STATUS",sr.status); + this.cr.insert( ICContentProvider.SLEEP_RECORDS_URI, values); + } + + + public ArrayList querySleepRecord(String sleep_date) { + ArrayList sleeprecordList = new ArrayList(); + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.SLEEP_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("SLEEP_DATE like '"); + where.append(sleep_date); + where.append("'"); + Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + if (cr_sleeprecord != null) { + while (true) { + if (!cr_sleeprecord.moveToNext()) { + cr_sleeprecord.close(); + break; + } + sleeprecordList.add(new SleepRecord( + cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("DATE")), cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("SLEEP_DATE")), cr_sleeprecord.getInt(cr_sleeprecord.getColumnIndex("STEPCOUNT")))); + } + } + return sleeprecordList; + } + public void updateSleepInfo(SleepInfo si){ + /*计算后的分值,每天会在睡眠结束后计算Records获得*/ +// sqlite.execSQL("CREATE TABLE SLEEP_STATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT , DEEP_SLEEP INTEGER , LIGHT_SLEEP INTEGER ,SCORE INTEGER )"); + + ContentValues values = new ContentValues(); + values.put("DATE",si.getCurrentDate()); + values.put("DEEP_SLEEP",si.getDeepsleep_minutes()); + values.put("LIGHT_SLEEP",si.getLightsleep_minutes()); + values.put("SCORE",si.getScore()); + this.cr.insert( ICContentProvider.SLEEP_STATUS_URI, values); + } + + + public int querySleepScore(String dateyyyyMMddHHmmss){ + + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.SLEEP_STATUS_URI; + StringBuilder where = new StringBuilder(); + where.append("DATE like '"); + where.append(dateyyyyMMddHHmmss); + where.append("'"); + ICLogger.i("Query SleepScore "+where); + Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + if (cr_sleeprecord != null) { + int score=0; + if (cr_sleeprecord.getCount()> 0) { + if (cr_sleeprecord.moveToFirst()) { + int index = cr_sleeprecord.getColumnIndex("SCORE"); + score = cr_sleeprecord.getInt(4); + ICLogger.i("get SleepScore "+score + " column index "+index); + } + + } + cr_sleeprecord.close(); + ICLogger.i("get SleepScore "+ score); + return score; + } + return 0; + } + public int deleteSleepData(){ + this.cr.delete(ICContentProvider.SLEEP_RECORDS_URI, (String)null, (String[])null); + return 0; + } + public void insertEventMsg(String dateyyyyMMddHHmmss,int event_type,String event_name){ + //日志表格,存储开机关机,低电报警等消息。。。 +// sqlite.execSQL("CREATE TABLE EVENT_MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT , EVENT_TYPE INTEGER, EVENT_NAME TEXT, TIME TEXT )"); + + ContentValues values = new ContentValues(); + values.put("EVENT_TYPE",event_type); + values.put("EVENT_NAME",event_name); + values.put("TIME",dateyyyyMMddHHmmss); + this.cr.insert( ICContentProvider.EVENT_MESSAGE_URI, values); + + } + +//sqlite.execSQL("CREATE TABLE PROTOCOL_CMD_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT , FLAG INTEGER, DATE TEXT, TIME TEXT ,TOPIC TEXT,CMD TEXT )"); + + public long insertCMDRecord(StringMessage msg){ + ContentValues values = new ContentValues(); + values.put("FLAG",msg.haveSent()); + if(msg.getDate()==null || msg.getTime()==null) + msg.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss()); + values.put("DATE",msg.getDate()); + values.put("TIME",msg.getTime()); + values.put("TOPIC",msg.cmd()); + values.put("CMD",msg.isFromCache()); + long raw_contactID = ContentUris.parseId(cr.insert(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, values)); + if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " insert db " +raw_contactID+" "+msg.getDate()+msg.getTime()+" "+ msg.cmd()+" "+msg.isFromCache()); + + return raw_contactID; + } + + + // + public void updateCMDRecord(int id, int flag){ + + String WhereClause=null; + if (id>=0) { + WhereClause=new StringBuilder("_id=").append(id).toString(); + + ContentValues flagcontent = new ContentValues(); + flagcontent.put("FLAG", flag); + this.cr.update(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, flagcontent, WhereClause, (String[])null); + } + } + + public void clearCMDRecordsHaveSent(){ + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG>1"); + Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + if(cmdrecords!=null){ + if(cmdrecords.getCount()>500) { + pcr.delete(table, where.toString(), (String[]) null); + ICLogger.i("delete cmdRecords have sent "); + }else{ + ICLogger.i("cmdRecords less than 500 , skip delete "); + } + } + } + + public StringMessage queryNotSentCMDRecord(){ + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=0"); + //ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + StringMessage msg=null; + if (cmdrecords != null) { + int score=0; + if (cmdrecords.getCount()> 0) { + if (cmdrecords.moveToFirst()) { + String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg=new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date,time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record not sent _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + + } + } + cmdrecords.close(); + + if (msg==null) + ICLogger.i("no cmd record in not sent status !"); + } + return msg; + } + + + public StringMessage queryWaitCMDRecord(){ + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=1"); + // ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + StringMessage msg=null; + if (cmdrecords != null) { + int score=0; + if (cmdrecords.getCount()> 0) { + if (cmdrecords.moveToFirst()) { + String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg=new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date,time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record wait response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + + } + } + cmdrecords.close(); + + if (msg==null) + ICLogger.i("no cmd record in wait status !"); + } + return msg; + } + + + public StringMessage queryDiscardCMDRecord(){ + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=3"); + // ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); + StringMessage msg=null; + if (cmdrecords != null) { + int score=0; + if (cmdrecords.getCount()> 0) { + if (cmdrecords.moveToFirst()) { + String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg=new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date,time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record discarded response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + } + } + cmdrecords.close(); + + if (msg==null) + ICLogger.i("no cmd record in wait status !"); + } + return msg; + } + + + +} diff --git a/app/src/main/java/com/enqualcomm/support/utils/IBeaconUtil.java b/app/src/main/java/com/enqualcomm/support/utils/IBeaconUtil.java index 114519d8..f50dcfab 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/IBeaconUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/IBeaconUtil.java @@ -11,7 +11,7 @@ public class IBeaconUtil { @Override public String toString() { - return major+","+minor+","+bluetoothAddress+","+rssi; + return major+","+minor+","+bluetoothAddress.replace(":","")+","+rssi; } } public static iBeacon fromScanData(String name,String mac, int rssi, byte[] scanData) { diff --git a/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java b/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java index b1c469ba..03b0e2e1 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java @@ -170,26 +170,7 @@ public class SimSignalUtil { this.mNetworkType = ((TelephonyManager)this.context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType(); } - public static void SetRingMode(Context context,int mod,boolean vibmod){ - AudioManager am= (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); - int currentRingmod=am.getRingerMode(); - am.setRingerMode(mod); - ICLogger.i("Current OldRingMod="+currentRingmod+", Set To RingMod="+mod+", check RingMod="+am.getRingerMode()); - - int curretnVibmod=am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); - - if(vibmod){ - Settings.System.putInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,1); - am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); - am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); - } else { - Settings.System.putInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,0); - am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); - am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); - } - ICLogger.i("Current OldVibRingMod="+curretnVibmod+", check VibRingMod="+am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER)+" , shoudl Vib "+am.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)); - } public static boolean isScreenON(Context context) { // If you use less than API20: PowerManager powerManager = (PowerManager) context.getSystemService(POWER_SERVICE); diff --git a/app/src/main/java/com/enqualcomm/support/utils/Util.java b/app/src/main/java/com/enqualcomm/support/utils/Util.java index e494ce83..25949705 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/Util.java +++ b/app/src/main/java/com/enqualcomm/support/utils/Util.java @@ -1,1142 +1,1163 @@ -package com.enqualcomm.support.utils; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.media.MediaPlayer; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.net.wifi.WifiConfiguration; -import android.net.wifi.WifiManager; -import android.os.Build; -import android.os.Environment; -import android.os.Handler; -import android.os.Looper; -import android.os.PowerManager; -import android.widget.Toast; - - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.ByteArrayOutputStream; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Method; -import java.net.InetAddress; -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.UUID; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.zip.CRC32; -import java.util.zip.CheckedOutputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipOutputStream; - - -import com.enqualcomm.support.Config; -import com.enqualcomm.support.CoreService; -import com.enqualcomm.support.bean.Runtime; -import com.enqualcomm.support.bean.VoiceContent; -import com.enqualcomm.support.bean.voicePacket; -import com.enqualcomm.support.service.Deliver; -import com.ic.protocols.protocolAPIHelper; - -import static android.content.Context.CONNECTIVITY_SERVICE; -import static android.content.Context.WIFI_SERVICE; -import static chestnut.utils.FileUtils.closeIO; -import static chestnut.utils.FileUtils.createOrExistsDir; -import static chestnut.utils.FileUtils.createOrExistsFile; -import static chestnut.utils.StringUtils.isSpace; - -public class Util { - public static Charset UTF_16 = Charset.forName("UTF-16LE"); - - public static Charset UTF_8 = Charset.forName("UTF-8"); - - private static String FT6236U_upgrade_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftsfwupdate"; - private static String FT6236U_getver_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftstpfwver"; - - public static void mSleep(int ms){ - try { - Thread.yield(); - Thread.sleep(ms); - }catch ( Exception e){ - ICLogger.e(e.getMessage(),e); - } - } - - public static void checkMesageNeedNotifi(String msg,Runtime runtime){ - - if(msg!=null ) { - //msg 格式 index,20201111182000,003f99302994 - String list[]= msg.split(","); - if(list.length==3) { - String index=list[0]; - String datetime=list[1]; - String txtmsg=list[2]; - - long lasttime_inms=System.currentTimeMillis()-TimeUtil.parseDatetiime(datetime).getTime(); - ICLogger.i("有消息"+lasttime_inms/1000 +"秒未读!"); - if ((lasttime_inms>8*60*1000 && lasttime_inms<=13*60*1000) //在10分钟,20分钟时都提醒一次。 - ||(lasttime_inms>18*60*1000 && lasttime_inms<=23*60*1000)) - { - - if (!Config.custom_name.equals("VitracK") ){ - if(Config.protocol_no==Config.PROTOCOL_JIAI){ - txtmsg=Util.decodeUnicode2Utf8(txtmsg); - }else { - txtmsg = Util.UrlGB2312ToUTF8(txtmsg); - } - } - if(Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) - { - runtime.setAlarmType(Runtime.AlarmType.ALARM_UNREADMSG); - // Config.setLastUnReadMessage(CoreService.getInstance(),""); - Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - - } - runtime.getContextProxy().sendMsgBroadcast(txtmsg, 3); //msgType 3需要回复,0不需要回复 - - //runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0); //msgType 3需要回复,0不需要回复 - - - } - - - }else{ - ICLogger.i("UnreadMsg format error !"); - } - } - } - - public static boolean installed(Context context,String appPackageName) { - PackageManager packageManager = context.getPackageManager();// 获取packagemanager - List pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息 - for (PackageInfo pkif : pinfo) { - String pn = pkif.packageName; - if (appPackageName.equals(pn)) { - return true; - } - } - return false; - } - public static boolean is_FT6236U_upgrade_firmware_support(){ - boolean ret=getSystemProperties("product.tp.upgradeable").toLowerCase().equals("true"); - return ret; - } - - public static boolean FT6236U_upgrade_firmware(){ - boolean ret=true; - try { - File nod=new File(FT6236U_upgrade_dev); - ICLogger.i("can upgrade ? "+nod.exists()+" "+nod.canWrite()+"\n"); - FileOutputStream fos=new FileOutputStream(nod); - fos.write(new byte[]{'1'}); - fos.close(); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - ret=false; - } - return ret; - } - - public static String FT6236U_getVer(){ - String ret="not found"; - try { - File nod=new File(FT6236U_getver_dev); - FileInputStream fis=new FileInputStream(nod); - byte buf[]=new byte[20]; - int bytes_readed=fis.read(buf,0,buf.length); - fis.close(); - char charArray[]=new char[20]; - for (int i=0;i 0) { - String[] ipAddressArr = new String[inetAddressArr.length]; - - for (int i = 0; i < inetAddressArr.length; i++) { - String ip=inetAddressArr[i].getHostAddress(); - serverip.append( ip); - ipAddressArr[i]=ip; - } - } - } catch (Exception e) { -// e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - ICLogger.i("GetHostIpByName Failed " + host); - return null; - } - return serverip.toString(); - } - /** - * - * 此函数专门给L02 协议使用 ,解析名字用 - * @param unicodestr - * @return - */ - public static String decodeUnicode2Utf8(String unicodestr) { - int len = unicodestr.length(); - //由于协议中Unicode 都是不带\\u 字头的,和网络中常见的不同,直接4个字节代表一个unicode字。 - //如果不是4的整倍数,则证明字符串格式有误,取消转换 - if (len%4==0) { - //先给每个unicode字符都加上\\u字头,然后再进行转换。 - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < len; i += 4) { - sb.append("\\u").append(unicodestr.substring(i, i + 4)); - } - try { - return decodeUnicode2Utf8Common(sb.toString()); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); - return ""; - } - }else{ - return ""; - } - - } - - public static String decodeUnicode2Utf8Common(String unicodestr) { - char aChar; - int len = unicodestr.length(); - StringBuffer outBuffer = new StringBuffer(len); - for (int x = 0; x < len; ) { - aChar = unicodestr.charAt(x++); - if (aChar == '\\') { - aChar = unicodestr.charAt(x++); - if (aChar == 'u') { - // Read the xxxx - int value = 0; - for (int i = 0; i < 4; i++) { - aChar = unicodestr.charAt(x++); - switch (aChar) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - value = (value << 4) + aChar - '0'; - break; - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - value = (value << 4) + 10 + aChar - 'a'; - break; - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - value = (value << 4) + 10 + aChar - 'A'; - break; - default: - throw new IllegalArgumentException( - "Malformed \\uxxxx encoding."); - } - - } - outBuffer.append((char) value); - } else { - if (aChar == 't') - aChar = '\t'; - else if (aChar == 'r') - aChar = '\r'; - else if (aChar == 'n') - aChar = '\n'; - else if (aChar == 'f') - aChar = '\f'; - outBuffer.append(aChar); - } - } else - outBuffer.append(aChar); - } - return outBuffer.toString(); - - - } - public static String getSystemProperties(String prop){ - - String str =""; - Class clazz = null; - try { - clazz = Class.forName("android.os.SystemProperties"); - Method get=clazz.getMethod("get", new Class[] { String.class }); - str = (String)get.invoke(clazz, new Object[] { prop }); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - return str; - } - public static String getSystemProperties(String prop,String defaultValue){ - - String str =defaultValue; - Class clazz = null; - try { - clazz = Class.forName("android.os.SystemProperties"); - Method get=clazz.getMethod("get", new Class[] { String.class }); - str = (String)get.invoke(clazz, new Object[] { prop }); - if(str==null || (str!=null && str.trim().isEmpty())){ - str=defaultValue; - } - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - return str; - } - public static int getSystemPropertiesInt(String prop,int defaultValue){ - - int ret=defaultValue; - String str =""; - Class clazz = null; - try { - clazz = Class.forName("android.os.SystemProperties"); - Method get=clazz.getMethod("get", new Class[] { String.class }); - str = (String)get.invoke(clazz, new Object[] { prop }); - if (str!=null && str.trim().length()>0 && isNumeric(str)){ - ret=Integer.parseInt(str); - } - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - return ret; - } - - public static boolean isNumeric(String str){ - Pattern pattern = Pattern.compile("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); - Matcher isNum = pattern.matcher(str); - if( !isNum.matches() ){ - return false; - } - return true; - } - static public void setSystemProperties(String key, int defaultValue) { - - String value = String.valueOf(defaultValue); - - try { - - Class c = Class.forName("android.os.SystemProperties"); - - Method set = c.getMethod("set", String.class, String.class ); - - set.invoke(c, key, value ); - - } catch (Exception e) { - - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - } - static public void setSystemProperties(String key, String defaultValue) { - - String value = defaultValue; - - try { - - Class c = Class.forName("android.os.SystemProperties"); - - Method set = c.getMethod("set", String.class, String.class ); - - set.invoke(c, key, value ); - - } catch (Exception e) { - - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - } - public static WifiConfiguration GetconfigWifiInfo(Context context, String ssid, String pwd, String encryptType) { - WifiConfiguration wifiConfiguration=null; - StringBuilder stringBuilder; - WifiManager wifiManager = (WifiManager)context.getSystemService(WIFI_SERVICE); - if (wifiManager != null && wifiManager.getConfiguredNetworks()!=null) { - Iterator it = wifiManager.getConfiguredNetworks().iterator(); - - while(it.hasNext()) { - wifiConfiguration = (WifiConfiguration)it.next(); - if (wifiConfiguration != null) { - String ssid_tmp = wifiConfiguration.SSID; - stringBuilder= new StringBuilder(); - stringBuilder.append("\""); - stringBuilder.append(ssid); - stringBuilder.append("\""); - if (ssid_tmp.equals(stringBuilder.toString())) { - return wifiConfiguration; - } - } - } - } - - - - WifiConfiguration retWiFiConfigration = wifiConfiguration; - if (retWiFiConfigration == null) { - retWiFiConfigration = new WifiConfiguration(); - } - - retWiFiConfigration.allowedAuthAlgorithms.clear(); - retWiFiConfigration.allowedGroupCiphers.clear(); - retWiFiConfigration.allowedKeyManagement.clear(); - retWiFiConfigration.allowedPairwiseCiphers.clear(); - retWiFiConfigration.allowedProtocols.clear(); - stringBuilder = new StringBuilder(); - stringBuilder.append("\""); - stringBuilder.append(ssid); - stringBuilder.append("\""); - retWiFiConfigration.SSID = stringBuilder.toString(); - if ("none".equals(encryptType)) { - retWiFiConfigration.allowedKeyManagement.set(0); - } else if ("wep".equals(encryptType)) { - retWiFiConfigration.hiddenSSID = true; - stringBuilder = new StringBuilder(); - stringBuilder.append("\""); - stringBuilder.append(pwd); - stringBuilder.append("\""); - retWiFiConfigration.wepKeys[0] = stringBuilder.toString(); - retWiFiConfigration.allowedAuthAlgorithms.set(1); - retWiFiConfigration.allowedGroupCiphers.set(3); - retWiFiConfigration.allowedGroupCiphers.set(2); - retWiFiConfigration.allowedGroupCiphers.set(0); - retWiFiConfigration.allowedGroupCiphers.set(1); - retWiFiConfigration.allowedKeyManagement.set(0); - retWiFiConfigration.wepTxKeyIndex = 0; - } else if ("psk".equals(encryptType)) { - stringBuilder = new StringBuilder(); - stringBuilder.append("\""); - stringBuilder.append(pwd); - stringBuilder.append("\""); - retWiFiConfigration.preSharedKey = stringBuilder.toString(); - retWiFiConfigration.hiddenSSID = true; - retWiFiConfigration.allowedAuthAlgorithms.set(0); - retWiFiConfigration.allowedGroupCiphers.set(2); - retWiFiConfigration.allowedKeyManagement.set(1); - retWiFiConfigration.allowedPairwiseCiphers.set(1); - retWiFiConfigration.allowedGroupCiphers.set(3); - retWiFiConfigration.allowedPairwiseCiphers.set(2); - retWiFiConfigration.status = 2; - } - - return retWiFiConfigration; - } - - public static String byte2hex(byte[] var0) { - if (var0 == null) { - throw new IllegalArgumentException("Argument b ( byte array ) is null! "); - } else { - String var1 = ""; - - for(int var2 = 0; var2 < var0.length; ++var2) { - String var3 = Integer.toHexString(var0[var2] & 255); - StringBuilder var4; - if (var3.length() == 1) { - var4 = new StringBuilder(); - var4.append(var1); - var4.append("0"); - var4.append(var3); - var1 = var4.toString(); - } else { - var4 = new StringBuilder(); - var4.append(var1); - var4.append(var3); - var1 = var4.toString(); - } - } - - return var1.toUpperCase(); - } - } - - public static boolean checkNetwork(Context var0) { - NetworkInfo var2 = ((ConnectivityManager)var0.getSystemService(CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); - boolean var1; - if (var2 != null && var2.isConnected()) { - var1 = true; - } else { - var1 = false; - } - - return var1; - } - - public static Method connectWifiByReflectMethod(Context var0, int var1) { - WifiManager var2 = (WifiManager)var0.getSystemService(WIFI_SERVICE); - Method[] var3; - int var4; - int var5; - Method var6; - Method var7; - Class[] var8; - Method var11; - StringBuilder var12; - - ICLogger.i("connectWifiByReflectMethod road 1"); - var3 = var2.getClass().getDeclaredMethods(); - var4 = var3.length; - var11 = null; - - for(var5 = 0; var5 < var4; var11 = var7) { - var6 = var3[var5]; - var7 = var11; - if ("connect".equalsIgnoreCase(var6.getName())) { - var8 = var6.getParameterTypes(); - var7 = var11; - if (var8 != null) { - var7 = var11; - if (var8.length > 0) { - var7 = var11; - if ("int".equalsIgnoreCase(var8[0].getName())) { - var7 = var6; - } - } - } - } - - ++var5; - } - - var7 = var11; - if (var11 != null) { - try { - var11.invoke(var2, var1, null); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - var12 = new StringBuilder(); - var12.append("connectWifiByReflectMethod Android "); - var12.append(Build.VERSION.SDK_INT); - var12.append(" error!"); - ICLogger.i(var12.toString()); - return null; - } - - var7 = var11; - } - - return var7; - } - - - - - public static int getDuration(String amrfilePath) { - if (amrfilePath != null) { - double d1; - MediaPlayer mediaPlayer = new MediaPlayer(); - try { - mediaPlayer.setDataSource(amrfilePath); - mediaPlayer.prepare(); - int i = mediaPlayer.getDuration(); - d1 = i; - mediaPlayer.release(); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - mediaPlayer.release(); - d1 = 1000.0D; - } finally {} - return (int)Math.ceil(d1 / 1000.0D); - } - double d = 1000.0D; - return 0; - } - - public static boolean LogfileExist(Runtime runtime,String logfilename){ - return new File(getLogfilePath(runtime,logfilename)).exists(); - } - public static String getRecordfilePath(Runtime runtime,String recordfilename){ - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(recordfilename); - stringBuilder.append(".amr"); - File file = new File(runtime.getCacheDir(), stringBuilder.toString()); - return file.getAbsolutePath(); - } - - public static String getLogfilePath(Runtime runtime,String logfilename){ - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(logfilename); - stringBuilder.append(".txt"); - File file = new File(runtime.getCacheDir(), stringBuilder.toString()); - return file.getAbsolutePath(); - } - - public static void getDBFile() { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(StorageUtils.getExternalStorageLogDir()); - stringBuilder.append("/contacts.db"); - FileOutputUtil.copyFolder("/data/data/com.enqualcomm.support/databases", stringBuilder.toString()); - } - private static int BUFFER_LEN=1024; - /** - * 压缩文件 - * @param srcFile 待压缩的源文件 - * @param rootPath 源文件的根路径 - * @param zos Zip输出流 - * @param comment 备注 - * @return 压缩成功返回true - * @throws IOException - */ - public static boolean zipFile(final File srcFile, String rootPath ,final ZipOutputStream zos ,final String comment) throws IOException { - rootPath = rootPath + (isSpace(rootPath) ? "" : File.separator) + srcFile.getName(); - - if (srcFile.isDirectory()) { - File[] fileList = srcFile.listFiles(); - if (fileList == null || fileList.length <= 0) { - ZipEntry entry = new ZipEntry(rootPath + '/'); - entry.setComment(comment); - zos.putNextEntry(entry); - zos.closeEntry(); - } else { - for (File file : fileList) { - if (!zipFile(file, rootPath, zos, comment)) return false; - } - } - } else { - InputStream is = null; - try { - is = new BufferedInputStream(new FileInputStream(srcFile)); - ZipEntry entry = new ZipEntry(rootPath); - entry.setComment(comment); - zos.putNextEntry(entry); - byte buffer[] = new byte[BUFFER_LEN]; - int len; - while ((len = is.read(buffer, 0, BUFFER_LEN)) != -1) { - zos.write(buffer, 0, len); - } - zos.closeEntry(); - } finally { - if(is!=null) - closeIO(is); - is=null; - } - } - return true; - } - /** - * Unzip the file by keyword. - * - * @param zipFile The ZIP file. - * @param destDir The destination directory. - * @param keyword The keyboard. - * @return the unzipped files - * @throws IOException if unzip unsuccessfully - */ - public static List unzipFileByKeyword(final File zipFile,final File destDir,final String keyword) throws IOException { - if (zipFile == null || destDir == null) return null; - List files = new ArrayList<>(); - ZipFile zip = new ZipFile(zipFile); - Enumeration entries = zip.entries(); - try { - if (isSpace(keyword)) { - while (entries.hasMoreElements()) { - ZipEntry entry = ((ZipEntry) entries.nextElement()); - String entryName = entry.getName(); - if (entryName.contains("../")) { - ICLogger.log("ZipUtils", "it's dangerous!");//防止被利用漏洞恶意修改文件 - return files; - } - if (!unzipChildFile(destDir, files, zip, entry)) return files; - } - } else { - while (entries.hasMoreElements()) { - ZipEntry entry = ((ZipEntry) entries.nextElement()); - String entryName = entry.getName(); - if (entryName.contains("../")) { - ICLogger.log("ZipUtils", "it's dangerous!"); - return files; - } - if (entryName.contains(keyword)) { - if (!unzipChildFile(destDir, files, zip, entry)) return files; - } - } - } - } finally { - zip.close(); - } - return files; - } - - /*** - * - * @param filename 输入SD卡中的文件或者目录的 相对路径 - * @return 压缩有的文件 - */ - public static String zipfiles(String filename){ - String zipfile=filename; - - try { - String sdcard= Environment.getExternalStorageDirectory().getAbsolutePath(); - File srcfile=new File(sdcard+"/"+filename); - zipfile=sdcard+File.separator+srcfile.getName()+".zip"; - if (Util.zipFile(srcfile, "", - new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipfile),new CRC32())) - , filename)) { - } - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - zipfile=""; - } - - return zipfile; - } - - private static boolean unzipChildFile(final File destDir, final List files, final ZipFile zip, final ZipEntry entry) - throws IOException { - File file = new File(destDir, entry.getName()); - files.add(file); - if (entry.isDirectory()) { - return createOrExistsDir(file);//创建文件夹 - } else { - if (!createOrExistsFile(file)) return false; - InputStream in = null; - OutputStream out = null; - try { - in = new BufferedInputStream(zip.getInputStream(entry)); - out = new BufferedOutputStream(new FileOutputStream(file)); - byte buffer[] = new byte[BUFFER_LEN]; - int len; - while ((len = in.read(buffer)) != -1) { - out.write(buffer, 0, len); - } - } finally { - if (in != null) { - in.close(); - } - if (out != null) { - out.close(); - } - } - } - return true; - } - - public static String getServerLogfilePath(String serverhost,String timefolder,String logfilename ,Runtime runtime) { - StringBuilder urlbuilder=new StringBuilder(); - String srvIP=serverhost; - if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { - srvIP=runtime.getDnsUtil().getServerIP_ByDNSCache("http://"+serverhost); - if (null == srvIP ) { - srvIP=serverhost; - } - } - urlbuilder.append("ftp://").append(srvIP).append("/") - .append("ftp/log/") - .append(DeviceInfoUtil.getModule()).append("/") - .append(DeviceInfoUtil.getSWVersionDisplayName()).append("/") - .append(CoreService.getInstance().getRuntime().IMEI()).append("/") - .append(timefolder); - - return urlbuilder.toString(); - } - public static boolean isConnectWifi(Context paramContext) { - ConnectivityManager connectivityManager = (ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE); - NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); - NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); - return (networkInfo != null && networkInfo.isAvailable() && state == NetworkInfo.State.CONNECTED); - } - - public static boolean isWifiInIdle(Context paramContext) { - NetworkInfo.State state = ((ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("yls wifi="); - stringBuilder.append(state); - ICLogger.i(stringBuilder.toString()); - return (state == NetworkInfo.State.DISCONNECTED); - } - - public static boolean isWifiIsOpen(Context paramContext, Runtime paramRuntime) { - return paramRuntime.getContextProxy().getWifiManager().isWifiEnabled(); - } - public static void ShowToast(Runtime runtime,String msg) { - new Thread(new Runnable() { - - @Override - public void run() { - Handler handler = new Handler(Looper.getMainLooper()); - handler.post(new Runnable() { - - @Override - public void run() { - Toast.makeText(runtime.getContextProxy().context, msg, Toast.LENGTH_LONG).show(); - } - }); - } - }).start(); - } - - public static byte[] loadFile(File paramFile) { -// if (paramFile != null && paramFile.exists()) -// try { -// if (paramFile.getName().endsWith(".jpg")) { -// StringBuilder stringBuilder2 = new StringBuilder(); -// stringBuilder2.append("压缩前dataSize="); -// stringBuilder2.append(paramFile.length()); -// ICLogger.i(stringBuilder2.toString()); -// ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); -// Bitmap bitmap = BitmapFactory.decodeFile(paramFile.getAbsolutePath()); -// bitmap.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutputStream); -// bitmap.recycle(); -// null = byteArrayOutputStream.toByteArray(); -// StringBuilder stringBuilder1 = new StringBuilder(); -// stringBuilder1.append("压缩后dataSize="); -// stringBuilder1.append(null.length); -// ICLogger.i(stringBuilder1.toString()); -// return null; -// } -// return Okio.buffer(Okio.source(null)).readByteArray(); -// } catch (IOException paramFile) { -// paramFile.printStackTrace(); -// } - return null; - } - - public static File makeDir(File paramFile, String paramString) { - StringBuilder stringBuilder = new StringBuilder(Integer.toHexString(paramString.hashCode())); -// for (byte b = 2; b < stringBuilder.length(); b += 3) -// stringBuilder.insert(b, "/"); - paramFile = new File(paramFile, stringBuilder.toString()); - paramFile.mkdirs(); - return paramFile; - } - - public static String saveFile(byte[] buf, int start, int size, File dir, String filename) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(UUID.randomUUID().toString()); - stringBuilder.append("_"); - stringBuilder.append(filename); - filename = stringBuilder.toString(); - File paramFile = makeDir(dir, filename); //建立以文件名Hash命名的路径 - try { - paramFile = new File(paramFile, filename);//在路径下再建立文件 - FileOutputStream fos=new FileOutputStream(paramFile); - fos.write(buf,start,size); - fos.close(); - return paramFile.getAbsolutePath(); - } catch (IOException e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - return null; - } - - public static ArrayList split(byte[] paramArrayOfByte, byte paramByte, int paramInt) { - ArrayList arrayList = new ArrayList(); - int m = paramArrayOfByte.length; - int k = paramInt; - int j = paramInt; - for (paramInt = k; j < m; paramInt = k) { - k = paramInt; - if (paramArrayOfByte[j] == paramByte) { - k = j - paramInt; - if (k != 0) { - byte[] arrayOfByte = new byte[k]; - System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, k); - arrayList.add(arrayOfByte); - } - k = j + 1; - } - j++; - } - int i = m - paramInt; - if (i != 0) { - byte[] arrayOfByte = new byte[i]; - System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, i); - arrayList.add(arrayOfByte); - } - return arrayList; - } - - public static ArrayList split(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2) { - ArrayList arrayList = new ArrayList(); - int k = paramArrayOfByte1.length; - int m = paramArrayOfByte2.length; - int i = 0; - int j; - int n; - for (j = 0; i < k; j = n) { - - int i1; - byte b = 0; - while (true) { - int bool = i + b; - i1 = i; - n = j; - if (bool < k) { - i1 = i; - n = j; - if (paramArrayOfByte1[bool] == paramArrayOfByte2[b]) { - b = (byte)(b + 1); - - if (n == m) { - n = i - j; - if (n != 0) { - byte[] arrayOfByte = new byte[n]; - System.arraycopy(paramArrayOfByte1, j, arrayOfByte, 0, n); - arrayList.add(arrayOfByte); - } - i += m; - n = i; - i1 = i - 1; - break; - } - continue; - } - } - break; - } - i = i1 + 1; - } - i = paramArrayOfByte1.length - j; - if (i != 0) { - paramArrayOfByte2 = new byte[i]; - System.arraycopy(paramArrayOfByte1, j, paramArrayOfByte2, 0, i); - arrayList.add(paramArrayOfByte2); - } - return arrayList; - } - - public static byte[] subArray(byte[] paramArrayOfByte, int paramInt) { - return subArray(paramArrayOfByte, paramInt, paramArrayOfByte.length); - } - - public static byte[] subArray(byte[] paramArrayOfByte, int paramInt1, int paramInt2) { - paramInt2 -= paramInt1; - byte[] arrayOfByte = new byte[paramInt2]; - System.arraycopy(paramArrayOfByte, paramInt1, arrayOfByte, 0, paramInt2); - return arrayOfByte; - } - - public static void turnOffWifiForSleep(Context paramContext, Runtime paramRuntime) { - paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(false); - } - - public static void turnOnWifiForConnect(Context paramContext, Runtime paramRuntime) { - paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(true); - } - - - public static boolean parseToVoicePacketSent(VoiceContent voiceContent){ - - long filesize; - File voicefile=new File(voiceContent.content); - if (voicefile.exists()) { - filesize = voicefile.length(); - - int count= (int)(filesize/1024); - if ((filesize%1024)>0) - count++; - ICLogger.i("File "+voiceContent.content+", size "+filesize+", count "+count + " filetype "+voiceContent.filetype + ", datatype "+voiceContent.datatype); - voicePacket.getInstanceSent().clearPacket(); - voicePacket.getInstanceSent().setFileType(voiceContent.filetype,voiceContent.datatype); - try { - FileInputStream fis = new FileInputStream(voicefile); - byte[] audiobuf = new byte[1024]; - for (int i = 0; i < count; i++) { - int readbytes=fis.read(audiobuf,0,1024); - voicePacket.getInstanceSent().appendVoice(voiceContent.contactNumber, "", count, i, readbytes, audiobuf); - } - fis.close(); - voicePacket.getInstanceSent().setCurrentIndexToSent(0); - voicePacket.getInstanceSent().setPacketTime(TimeUtil.getSystemTime3()); - return true; - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - - } - return false; - } - - - public static void reboot(Context context) { - PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); - try { - ICLogger.i("do reboot!"); - powerManager.reboot("remote reboot"); - ICLogger.i("命令重启"); - return; - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - return; - } - } - - - public static void shutdown() { - try { - ICLogger.i("do shutdown!"); - //获得ServiceManager类 - Class ServiceManager = Class - .forName("android.os.ServiceManager"); - - //获得ServiceManager的getService方法 - Method getService = ServiceManager.getMethod("getService", java.lang.String.class); - - //调用getService获取RemoteService - Object oRemoteService = getService.invoke(null, Context.POWER_SERVICE); - - //获得IPowerManager.Stub类 - Class cStub = Class - .forName("android.os.IPowerManager$Stub"); - //获得asInterface方法 - Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class); - //调用asInterface方法获取IPowerManager对象 - Object oIPowerManager = asInterface.invoke(null, oRemoteService); - //获得shutdown()方法 - Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class); - //调用shutdown()方法 - shutdown.invoke(oIPowerManager,false,true); - - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - } - - public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR"; - public static final String EXTRA_REASON = "android.intent.extra.REASON"; - public static final String EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE"; - - public static void doMasterClear(Context context) { - ICLogger.i("do doMasterClear!"); - Intent intent = new Intent(ACTION_MASTER_CLEAR); - intent.setPackage("android"); - intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); - intent.putExtra(EXTRA_REASON, "MasterClearConfirm"); - if (Environment.isExternalStorageRemovable()) { - intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, true); - }else - { - intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, false); - } - context.sendBroadcast(intent); - } - - - public static String UrlGB2312ToUTF8(String url){ - String ret=""; - String src=url; - - - - if (!url.contains("%")){ - int len = url.length(); - //由于协议中GB2312 都是不带% 字头的,和网络中常见的不同,直接2个字节代表一个GB2312字。 - //如果不是2的整倍数,则证明字符串格式有误,取消转换 - if (len%2==0) { - //先给每个unicode字符都加上\\u字头,然后再进行转换。 - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < len; i += 2) { - sb.append("%").append(url.substring(i, i + 2)); - } - src=sb.toString(); - }else{ - return ret; - } - } - try { - ret=java.net.URLDecoder.decode(src,"GB2312"); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - return ret; - } - - public static String UTF8ToUrlGB2312(String msg){ - - String ret=""; - try { - ret=java.net.URLEncoder.encode(msg,"GB2312"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return ret; - } - - public static String bytesToHexString(byte[] src) { - StringBuilder stringBuilder = new StringBuilder(""); - if (src == null || src.length <= 0) { - return null; - } - for (int i = 0; i < src.length; i++) { - int v = src[i] & 0xFF; - String hv = Integer.toHexString(v); - if (hv.length() < 2) { - stringBuilder.append(0); - } - stringBuilder.append(hv); - } - return stringBuilder.toString(); - } - public static byte[] hexStringToBytes(String hexString) { - if (hexString == null || hexString.equals("")) { - return null; - } - hexString = hexString.toUpperCase(); - int length = hexString.length() / 2; - char[] hexChars = hexString.toCharArray(); - byte[] d = new byte[length]; - for (int i = 0; i < length; i++) { - int pos = i * 2; - d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); - } - return d; - } - private static byte charToByte(char c) { - return (byte) "0123456789ABCDEF".indexOf(c); - } -} - +package com.enqualcomm.support.utils; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.os.Build; +import android.os.Environment; +import android.os.Handler; +import android.os.Looper; +import android.os.PowerManager; +import android.provider.Settings; +import android.widget.Toast; + + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Method; +import java.net.InetAddress; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.zip.CRC32; +import java.util.zip.CheckedOutputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + + +import com.enqualcomm.support.Config; +import com.enqualcomm.support.CoreService; +import com.enqualcomm.support.bean.Runtime; +import com.enqualcomm.support.bean.VoiceContent; +import com.enqualcomm.support.bean.voicePacket; +import com.enqualcomm.support.service.Deliver; +import com.ic.protocols.protocolAPIHelper; + +import static android.content.Context.CONNECTIVITY_SERVICE; +import static android.content.Context.WIFI_SERVICE; +import static chestnut.utils.FileUtils.closeIO; +import static chestnut.utils.FileUtils.createOrExistsDir; +import static chestnut.utils.FileUtils.createOrExistsFile; +import static chestnut.utils.StringUtils.isSpace; + +public class Util { + public static Charset UTF_16 = Charset.forName("UTF-16LE"); + + public static Charset UTF_8 = Charset.forName("UTF-8"); + + private static String FT6236U_upgrade_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftsfwupdate"; + private static String FT6236U_getver_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftstpfwver"; + + public static void mSleep(int ms){ + try { + Thread.yield(); + Thread.sleep(ms); + }catch ( Exception e){ + ICLogger.e(e.getMessage(),e); + } + } + public static void SetRingMode(Context context,int mod,boolean vibmod){ + AudioManager am= (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); + int currentRingmod=am.getRingerMode(); + am.setRingerMode(mod); + ICLogger.i("Current OldRingMod="+currentRingmod+", Set To RingMod="+mod+", check RingMod="+am.getRingerMode()); + + int curretnVibmod=am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); + + if(vibmod){ + Settings.System.putInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,1); + am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); + am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); + } else { + Settings.System.putInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,0); + am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); + am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); + } + ICLogger.i("Current OldVibRingMod="+curretnVibmod+", check VibRingMod="+am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER)+" , shoudl Vib "+am.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)); + + } + public static void checkMesageNeedNotifi(String msg,Runtime runtime){ + + if(msg!=null ) { + //msg 格式 index,20201111182000,003f99302994 + String list[]= msg.split(","); + if(list.length==3) { + String index=list[0]; + String datetime=list[1]; + String txtmsg=list[2]; + + long lasttime_inms=System.currentTimeMillis()-TimeUtil.parseDatetiime(datetime).getTime(); + ICLogger.i("有消息"+lasttime_inms/1000 +"秒未读!"); + if ((lasttime_inms>8*60*1000 && lasttime_inms<=13*60*1000) //在10分钟,20分钟时都提醒一次。 + ||(lasttime_inms>18*60*1000 && lasttime_inms<=23*60*1000)) + { + + if (!Config.custom_name.equals("VitracK") ){ + if(Config.protocol_no==Config.PROTOCOL_JIAI){ + txtmsg=Util.decodeUnicode2Utf8(txtmsg); + }else { + txtmsg = Util.UrlGB2312ToUTF8(txtmsg); + } + } + if(Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) + { + runtime.setAlarmType(Runtime.AlarmType.ALARM_UNREADMSG); + // Config.setLastUnReadMessage(CoreService.getInstance(),""); + Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); + + } + runtime.getContextProxy().sendMsgBroadcast(txtmsg, 3); //msgType 3需要回复,0不需要回复 + + //runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0); //msgType 3需要回复,0不需要回复 + + + } + + + }else{ + ICLogger.i("UnreadMsg format error !"); + } + } + } + + public static boolean installed(Context context,String appPackageName) { + PackageManager packageManager = context.getPackageManager();// 获取packagemanager + List pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息 + for (PackageInfo pkif : pinfo) { + String pn = pkif.packageName; + if (appPackageName.equals(pn)) { + return true; + } + } + return false; + } + public static boolean is_FT6236U_upgrade_firmware_support(){ + boolean ret=getSystemProperties("product.tp.upgradeable").toLowerCase().equals("true"); + return ret; + } + + public static boolean FT6236U_upgrade_firmware(){ + boolean ret=true; + try { + File nod=new File(FT6236U_upgrade_dev); + ICLogger.i("can upgrade ? "+nod.exists()+" "+nod.canWrite()+"\n"); + FileOutputStream fos=new FileOutputStream(nod); + fos.write(new byte[]{'1'}); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + ret=false; + } + return ret; + } + + public static String FT6236U_getVer(){ + String ret="not found"; + try { + File nod=new File(FT6236U_getver_dev); + FileInputStream fis=new FileInputStream(nod); + byte buf[]=new byte[20]; + int bytes_readed=fis.read(buf,0,buf.length); + fis.close(); + char charArray[]=new char[20]; + for (int i=0;i 0) { + String[] ipAddressArr = new String[inetAddressArr.length]; + + for (int i = 0; i < inetAddressArr.length; i++) { + String ip=inetAddressArr[i].getHostAddress(); + serverip.append( ip); + ipAddressArr[i]=ip; + } + } + } catch (Exception e) { +// e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + ICLogger.i("GetHostIpByName Failed " + host); + return null; + } + return serverip.toString(); + } + /** + * + * 此函数专门给L02 协议使用 ,解析名字用 + * @param unicodestr + * @return + */ + public static String decodeUnicode2Utf8(String unicodestr) { + int len = unicodestr.length(); + //由于协议中Unicode 都是不带\\u 字头的,和网络中常见的不同,直接4个字节代表一个unicode字。 + //如果不是4的整倍数,则证明字符串格式有误,取消转换 + if (len%4==0) { + //先给每个unicode字符都加上\\u字头,然后再进行转换。 + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < len; i += 4) { + sb.append("\\u").append(unicodestr.substring(i, i + 4)); + } + try { + return decodeUnicode2Utf8Common(sb.toString()); + }catch (Exception e){ + ICLogger.e(e.getMessage(),e); + return ""; + } + }else{ + return ""; + } + + } + + public static String decodeUnicode2Utf8Common(String unicodestr) { + char aChar; + int len = unicodestr.length(); + StringBuffer outBuffer = new StringBuffer(len); + for (int x = 0; x < len; ) { + aChar = unicodestr.charAt(x++); + if (aChar == '\\') { + aChar = unicodestr.charAt(x++); + if (aChar == 'u') { + // Read the xxxx + int value = 0; + for (int i = 0; i < 4; i++) { + aChar = unicodestr.charAt(x++); + switch (aChar) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + value = (value << 4) + aChar - '0'; + break; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + value = (value << 4) + 10 + aChar - 'a'; + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + value = (value << 4) + 10 + aChar - 'A'; + break; + default: + throw new IllegalArgumentException( + "Malformed \\uxxxx encoding."); + } + + } + outBuffer.append((char) value); + } else { + if (aChar == 't') + aChar = '\t'; + else if (aChar == 'r') + aChar = '\r'; + else if (aChar == 'n') + aChar = '\n'; + else if (aChar == 'f') + aChar = '\f'; + outBuffer.append(aChar); + } + } else + outBuffer.append(aChar); + } + return outBuffer.toString(); + + + } + public static String getSystemProperties(String prop){ + + String str =""; + Class clazz = null; + try { + clazz = Class.forName("android.os.SystemProperties"); + Method get=clazz.getMethod("get", new Class[] { String.class }); + str = (String)get.invoke(clazz, new Object[] { prop }); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + return str; + } + public static String getSystemProperties(String prop,String defaultValue){ + + String str =defaultValue; + Class clazz = null; + try { + clazz = Class.forName("android.os.SystemProperties"); + Method get=clazz.getMethod("get", new Class[] { String.class }); + str = (String)get.invoke(clazz, new Object[] { prop }); + if(str==null || (str!=null && str.trim().isEmpty())){ + str=defaultValue; + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + return str; + } + public static int getSystemPropertiesInt(String prop,int defaultValue){ + + int ret=defaultValue; + String str =""; + Class clazz = null; + try { + clazz = Class.forName("android.os.SystemProperties"); + Method get=clazz.getMethod("get", new Class[] { String.class }); + str = (String)get.invoke(clazz, new Object[] { prop }); + if (str!=null && str.trim().length()>0 && isNumeric(str)){ + ret=Integer.parseInt(str); + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + return ret; + } + + public static boolean isNumeric(String str){ + Pattern pattern = Pattern.compile("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); + Matcher isNum = pattern.matcher(str); + if( !isNum.matches() ){ + return false; + } + return true; + } + static public void setSystemProperties(String key, int defaultValue) { + + String value = String.valueOf(defaultValue); + + try { + + Class c = Class.forName("android.os.SystemProperties"); + + Method set = c.getMethod("set", String.class, String.class ); + + set.invoke(c, key, value ); + + } catch (Exception e) { + + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + } + static public void setSystemProperties(String key, String defaultValue) { + + String value = defaultValue; + + try { + + Class c = Class.forName("android.os.SystemProperties"); + + Method set = c.getMethod("set", String.class, String.class ); + + set.invoke(c, key, value ); + + } catch (Exception e) { + + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + } + public static WifiConfiguration GetconfigWifiInfo(Context context, String ssid, String pwd, String encryptType) { + WifiConfiguration wifiConfiguration=null; + StringBuilder stringBuilder; + WifiManager wifiManager = (WifiManager)context.getSystemService(WIFI_SERVICE); + if (wifiManager != null && wifiManager.getConfiguredNetworks()!=null) { + Iterator it = wifiManager.getConfiguredNetworks().iterator(); + + while(it.hasNext()) { + wifiConfiguration = (WifiConfiguration)it.next(); + if (wifiConfiguration != null) { + String ssid_tmp = wifiConfiguration.SSID; + stringBuilder= new StringBuilder(); + stringBuilder.append("\""); + stringBuilder.append(ssid); + stringBuilder.append("\""); + if (ssid_tmp.equals(stringBuilder.toString())) { + return wifiConfiguration; + } + } + } + } + + + + WifiConfiguration retWiFiConfigration = wifiConfiguration; + if (retWiFiConfigration == null) { + retWiFiConfigration = new WifiConfiguration(); + } + + retWiFiConfigration.allowedAuthAlgorithms.clear(); + retWiFiConfigration.allowedGroupCiphers.clear(); + retWiFiConfigration.allowedKeyManagement.clear(); + retWiFiConfigration.allowedPairwiseCiphers.clear(); + retWiFiConfigration.allowedProtocols.clear(); + stringBuilder = new StringBuilder(); + stringBuilder.append("\""); + stringBuilder.append(ssid); + stringBuilder.append("\""); + retWiFiConfigration.SSID = stringBuilder.toString(); + if ("none".equals(encryptType)) { + retWiFiConfigration.allowedKeyManagement.set(0); + } else if ("wep".equals(encryptType)) { + retWiFiConfigration.hiddenSSID = true; + stringBuilder = new StringBuilder(); + stringBuilder.append("\""); + stringBuilder.append(pwd); + stringBuilder.append("\""); + retWiFiConfigration.wepKeys[0] = stringBuilder.toString(); + retWiFiConfigration.allowedAuthAlgorithms.set(1); + retWiFiConfigration.allowedGroupCiphers.set(3); + retWiFiConfigration.allowedGroupCiphers.set(2); + retWiFiConfigration.allowedGroupCiphers.set(0); + retWiFiConfigration.allowedGroupCiphers.set(1); + retWiFiConfigration.allowedKeyManagement.set(0); + retWiFiConfigration.wepTxKeyIndex = 0; + } else if ("psk".equals(encryptType)) { + stringBuilder = new StringBuilder(); + stringBuilder.append("\""); + stringBuilder.append(pwd); + stringBuilder.append("\""); + retWiFiConfigration.preSharedKey = stringBuilder.toString(); + retWiFiConfigration.hiddenSSID = true; + retWiFiConfigration.allowedAuthAlgorithms.set(0); + retWiFiConfigration.allowedGroupCiphers.set(2); + retWiFiConfigration.allowedKeyManagement.set(1); + retWiFiConfigration.allowedPairwiseCiphers.set(1); + retWiFiConfigration.allowedGroupCiphers.set(3); + retWiFiConfigration.allowedPairwiseCiphers.set(2); + retWiFiConfigration.status = 2; + } + + return retWiFiConfigration; + } + + public static String byte2hex(byte[] var0) { + if (var0 == null) { + throw new IllegalArgumentException("Argument b ( byte array ) is null! "); + } else { + String var1 = ""; + + for(int var2 = 0; var2 < var0.length; ++var2) { + String var3 = Integer.toHexString(var0[var2] & 255); + StringBuilder var4; + if (var3.length() == 1) { + var4 = new StringBuilder(); + var4.append(var1); + var4.append("0"); + var4.append(var3); + var1 = var4.toString(); + } else { + var4 = new StringBuilder(); + var4.append(var1); + var4.append(var3); + var1 = var4.toString(); + } + } + + return var1.toUpperCase(); + } + } + + public static boolean checkNetwork(Context var0) { + NetworkInfo var2 = ((ConnectivityManager)var0.getSystemService(CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); + boolean var1; + if (var2 != null && var2.isConnected()) { + var1 = true; + } else { + var1 = false; + } + + return var1; + } + + public static Method connectWifiByReflectMethod(Context var0, int var1) { + WifiManager var2 = (WifiManager)var0.getSystemService(WIFI_SERVICE); + Method[] var3; + int var4; + int var5; + Method var6; + Method var7; + Class[] var8; + Method var11; + StringBuilder var12; + + ICLogger.i("connectWifiByReflectMethod road 1"); + var3 = var2.getClass().getDeclaredMethods(); + var4 = var3.length; + var11 = null; + + for(var5 = 0; var5 < var4; var11 = var7) { + var6 = var3[var5]; + var7 = var11; + if ("connect".equalsIgnoreCase(var6.getName())) { + var8 = var6.getParameterTypes(); + var7 = var11; + if (var8 != null) { + var7 = var11; + if (var8.length > 0) { + var7 = var11; + if ("int".equalsIgnoreCase(var8[0].getName())) { + var7 = var6; + } + } + } + } + + ++var5; + } + + var7 = var11; + if (var11 != null) { + try { + var11.invoke(var2, var1, null); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + var12 = new StringBuilder(); + var12.append("connectWifiByReflectMethod Android "); + var12.append(Build.VERSION.SDK_INT); + var12.append(" error!"); + ICLogger.i(var12.toString()); + return null; + } + + var7 = var11; + } + + return var7; + } + + + + + public static int getDuration(String amrfilePath) { + if (amrfilePath != null) { + double d1; + MediaPlayer mediaPlayer = new MediaPlayer(); + try { + mediaPlayer.setDataSource(amrfilePath); + mediaPlayer.prepare(); + int i = mediaPlayer.getDuration(); + d1 = i; + mediaPlayer.release(); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + mediaPlayer.release(); + d1 = 1000.0D; + } finally {} + return (int)Math.ceil(d1 / 1000.0D); + } + double d = 1000.0D; + return 0; + } + + public static boolean LogfileExist(Runtime runtime,String logfilename){ + return new File(getLogfilePath(runtime,logfilename)).exists(); + } + public static String getRecordfilePath(Runtime runtime,String recordfilename){ + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(recordfilename); + stringBuilder.append(".amr"); + File file = new File(runtime.getCacheDir(), stringBuilder.toString()); + return file.getAbsolutePath(); + } + + public static String getLogfilePath(Runtime runtime,String logfilename){ + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(logfilename); + stringBuilder.append(".txt"); + File file = new File(runtime.getCacheDir(), stringBuilder.toString()); + return file.getAbsolutePath(); + } + + public static void getDBFile() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(StorageUtils.getExternalStorageLogDir()); + stringBuilder.append("/contacts.db"); + FileOutputUtil.copyFolder("/data/data/com.enqualcomm.support/databases", stringBuilder.toString()); + } + private static int BUFFER_LEN=1024; + /** + * 压缩文件 + * @param srcFile 待压缩的源文件 + * @param rootPath 源文件的根路径 + * @param zos Zip输出流 + * @param comment 备注 + * @return 压缩成功返回true + * @throws IOException + */ + public static boolean zipFile(final File srcFile, String rootPath ,final ZipOutputStream zos ,final String comment) throws IOException { + rootPath = rootPath + (isSpace(rootPath) ? "" : File.separator) + srcFile.getName(); + + if (srcFile.isDirectory()) { + File[] fileList = srcFile.listFiles(); + if (fileList == null || fileList.length <= 0) { + ZipEntry entry = new ZipEntry(rootPath + '/'); + entry.setComment(comment); + zos.putNextEntry(entry); + zos.closeEntry(); + } else { + for (File file : fileList) { + if (!zipFile(file, rootPath, zos, comment)) return false; + } + } + } else { + InputStream is = null; + try { + is = new BufferedInputStream(new FileInputStream(srcFile)); + ZipEntry entry = new ZipEntry(rootPath); + entry.setComment(comment); + zos.putNextEntry(entry); + byte buffer[] = new byte[BUFFER_LEN]; + int len; + while ((len = is.read(buffer, 0, BUFFER_LEN)) != -1) { + zos.write(buffer, 0, len); + } + zos.closeEntry(); + } finally { + if(is!=null) + closeIO(is); + is=null; + } + } + return true; + } + /** + * Unzip the file by keyword. + * + * @param zipFile The ZIP file. + * @param destDir The destination directory. + * @param keyword The keyboard. + * @return the unzipped files + * @throws IOException if unzip unsuccessfully + */ + public static List unzipFileByKeyword(final File zipFile,final File destDir,final String keyword) throws IOException { + if (zipFile == null || destDir == null) return null; + List files = new ArrayList<>(); + ZipFile zip = new ZipFile(zipFile); + Enumeration entries = zip.entries(); + try { + if (isSpace(keyword)) { + while (entries.hasMoreElements()) { + ZipEntry entry = ((ZipEntry) entries.nextElement()); + String entryName = entry.getName(); + if (entryName.contains("../")) { + ICLogger.log("ZipUtils", "it's dangerous!");//防止被利用漏洞恶意修改文件 + return files; + } + if (!unzipChildFile(destDir, files, zip, entry)) return files; + } + } else { + while (entries.hasMoreElements()) { + ZipEntry entry = ((ZipEntry) entries.nextElement()); + String entryName = entry.getName(); + if (entryName.contains("../")) { + ICLogger.log("ZipUtils", "it's dangerous!"); + return files; + } + if (entryName.contains(keyword)) { + if (!unzipChildFile(destDir, files, zip, entry)) return files; + } + } + } + } finally { + zip.close(); + } + return files; + } + + /*** + * + * @param filename 输入SD卡中的文件或者目录的 相对路径 + * @return 压缩有的文件 + */ + public static String zipfiles(String filename){ + String zipfile=filename; + + try { + String sdcard= Environment.getExternalStorageDirectory().getAbsolutePath(); + File srcfile=new File(sdcard+"/"+filename); + zipfile=sdcard+File.separator+srcfile.getName()+".zip"; + if (Util.zipFile(srcfile, "", + new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipfile),new CRC32())) + , filename)) { + } + }catch (Exception e){ + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + zipfile=""; + } + + return zipfile; + } + + private static boolean unzipChildFile(final File destDir, final List files, final ZipFile zip, final ZipEntry entry) + throws IOException { + File file = new File(destDir, entry.getName()); + files.add(file); + if (entry.isDirectory()) { + return createOrExistsDir(file);//创建文件夹 + } else { + if (!createOrExistsFile(file)) return false; + InputStream in = null; + OutputStream out = null; + try { + in = new BufferedInputStream(zip.getInputStream(entry)); + out = new BufferedOutputStream(new FileOutputStream(file)); + byte buffer[] = new byte[BUFFER_LEN]; + int len; + while ((len = in.read(buffer)) != -1) { + out.write(buffer, 0, len); + } + } finally { + if (in != null) { + in.close(); + } + if (out != null) { + out.close(); + } + } + } + return true; + } + + public static String getServerLogfilePath(String serverhost,String timefolder,String logfilename ,Runtime runtime) { + StringBuilder urlbuilder=new StringBuilder(); + String srvIP=serverhost; + if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { + srvIP=runtime.getDnsUtil().getServerIP_ByDNSCache("http://"+serverhost); + if (null == srvIP ) { + srvIP=serverhost; + } + } + urlbuilder.append("ftp://").append(srvIP).append("/") + .append("ftp/log/") + .append(DeviceInfoUtil.getModule()).append("/") + .append(DeviceInfoUtil.getSWVersionDisplayName()).append("/") + .append(CoreService.getInstance().getRuntime().IMEI()).append("/") + .append(timefolder); + + return urlbuilder.toString(); + } + public static boolean isConnectWifi(Context paramContext) { + ConnectivityManager connectivityManager = (ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); + NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); + return (networkInfo != null && networkInfo.isAvailable() && state == NetworkInfo.State.CONNECTED); + } + + public static boolean isWifiInIdle(Context paramContext) { + NetworkInfo.State state = ((ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("yls wifi="); + stringBuilder.append(state); + ICLogger.i(stringBuilder.toString()); + return (state == NetworkInfo.State.DISCONNECTED); + } + + public static boolean isWifiIsOpen(Context paramContext, Runtime paramRuntime) { + return paramRuntime.getContextProxy().getWifiManager().isWifiEnabled(); + } + public static void ShowToast(Runtime runtime,String msg) { + new Thread(new Runnable() { + + @Override + public void run() { + Handler handler = new Handler(Looper.getMainLooper()); + handler.post(new Runnable() { + + @Override + public void run() { + Toast.makeText(runtime.getContextProxy().context, msg, Toast.LENGTH_LONG).show(); + } + }); + } + }).start(); + } + + public static byte[] loadFile(File paramFile) { +// if (paramFile != null && paramFile.exists()) +// try { +// if (paramFile.getName().endsWith(".jpg")) { +// StringBuilder stringBuilder2 = new StringBuilder(); +// stringBuilder2.append("压缩前dataSize="); +// stringBuilder2.append(paramFile.length()); +// ICLogger.i(stringBuilder2.toString()); +// ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); +// Bitmap bitmap = BitmapFactory.decodeFile(paramFile.getAbsolutePath()); +// bitmap.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutputStream); +// bitmap.recycle(); +// null = byteArrayOutputStream.toByteArray(); +// StringBuilder stringBuilder1 = new StringBuilder(); +// stringBuilder1.append("压缩后dataSize="); +// stringBuilder1.append(null.length); +// ICLogger.i(stringBuilder1.toString()); +// return null; +// } +// return Okio.buffer(Okio.source(null)).readByteArray(); +// } catch (IOException paramFile) { +// paramFile.printStackTrace(); +// } + return null; + } + + public static File makeDir(File paramFile, String paramString) { + StringBuilder stringBuilder = new StringBuilder(Integer.toHexString(paramString.hashCode())); +// for (byte b = 2; b < stringBuilder.length(); b += 3) +// stringBuilder.insert(b, "/"); + paramFile = new File(paramFile, stringBuilder.toString()); + paramFile.mkdirs(); + return paramFile; + } + + public static String saveFile(byte[] buf, int start, int size, File dir, String filename) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(UUID.randomUUID().toString()); + stringBuilder.append("_"); + stringBuilder.append(filename); + filename = stringBuilder.toString(); + File paramFile = makeDir(dir, filename); //建立以文件名Hash命名的路径 + try { + paramFile = new File(paramFile, filename);//在路径下再建立文件 + FileOutputStream fos=new FileOutputStream(paramFile); + fos.write(buf,start,size); + fos.close(); + return paramFile.getAbsolutePath(); + } catch (IOException e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + return null; + } + + public static ArrayList split(byte[] paramArrayOfByte, byte paramByte, int paramInt) { + ArrayList arrayList = new ArrayList(); + int m = paramArrayOfByte.length; + int k = paramInt; + int j = paramInt; + for (paramInt = k; j < m; paramInt = k) { + k = paramInt; + if (paramArrayOfByte[j] == paramByte) { + k = j - paramInt; + if (k != 0) { + byte[] arrayOfByte = new byte[k]; + System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, k); + arrayList.add(arrayOfByte); + } + k = j + 1; + } + j++; + } + int i = m - paramInt; + if (i != 0) { + byte[] arrayOfByte = new byte[i]; + System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, i); + arrayList.add(arrayOfByte); + } + return arrayList; + } + + public static ArrayList split(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2) { + ArrayList arrayList = new ArrayList(); + int k = paramArrayOfByte1.length; + int m = paramArrayOfByte2.length; + int i = 0; + int j; + int n; + for (j = 0; i < k; j = n) { + + int i1; + byte b = 0; + while (true) { + int bool = i + b; + i1 = i; + n = j; + if (bool < k) { + i1 = i; + n = j; + if (paramArrayOfByte1[bool] == paramArrayOfByte2[b]) { + b = (byte)(b + 1); + + if (n == m) { + n = i - j; + if (n != 0) { + byte[] arrayOfByte = new byte[n]; + System.arraycopy(paramArrayOfByte1, j, arrayOfByte, 0, n); + arrayList.add(arrayOfByte); + } + i += m; + n = i; + i1 = i - 1; + break; + } + continue; + } + } + break; + } + i = i1 + 1; + } + i = paramArrayOfByte1.length - j; + if (i != 0) { + paramArrayOfByte2 = new byte[i]; + System.arraycopy(paramArrayOfByte1, j, paramArrayOfByte2, 0, i); + arrayList.add(paramArrayOfByte2); + } + return arrayList; + } + + public static byte[] subArray(byte[] paramArrayOfByte, int paramInt) { + return subArray(paramArrayOfByte, paramInt, paramArrayOfByte.length); + } + + public static byte[] subArray(byte[] paramArrayOfByte, int paramInt1, int paramInt2) { + paramInt2 -= paramInt1; + byte[] arrayOfByte = new byte[paramInt2]; + System.arraycopy(paramArrayOfByte, paramInt1, arrayOfByte, 0, paramInt2); + return arrayOfByte; + } + + public static void turnOffWifiForSleep(Context paramContext, Runtime paramRuntime) { + paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(false); + } + + public static void turnOnWifiForConnect(Context paramContext, Runtime paramRuntime) { + paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(true); + } + + + public static boolean parseToVoicePacketSent(VoiceContent voiceContent){ + + long filesize; + File voicefile=new File(voiceContent.content); + if (voicefile.exists()) { + filesize = voicefile.length(); + + int count= (int)(filesize/1024); + if ((filesize%1024)>0) + count++; + ICLogger.i("File "+voiceContent.content+", size "+filesize+", count "+count + " filetype "+voiceContent.filetype + ", datatype "+voiceContent.datatype); + voicePacket.getInstanceSent().clearPacket(); + voicePacket.getInstanceSent().setFileType(voiceContent.filetype,voiceContent.datatype); + try { + FileInputStream fis = new FileInputStream(voicefile); + byte[] audiobuf = new byte[1024]; + for (int i = 0; i < count; i++) { + int readbytes=fis.read(audiobuf,0,1024); + voicePacket.getInstanceSent().appendVoice(voiceContent.contactNumber, "", count, i, readbytes, audiobuf); + } + fis.close(); + voicePacket.getInstanceSent().setCurrentIndexToSent(0); + voicePacket.getInstanceSent().setPacketTime(TimeUtil.getSystemTime3()); + return true; + }catch (Exception e){ + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + + } + return false; + } + + + public static void reboot(Context context) { + PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); + try { + ICLogger.i("do reboot!"); + powerManager.reboot("remote reboot"); + ICLogger.i("命令重启"); + return; + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + return; + } + } + + + public static void shutdown() { + try { + ICLogger.i("do shutdown!"); + //获得ServiceManager类 + Class ServiceManager = Class + .forName("android.os.ServiceManager"); + + //获得ServiceManager的getService方法 + Method getService = ServiceManager.getMethod("getService", java.lang.String.class); + + //调用getService获取RemoteService + Object oRemoteService = getService.invoke(null, Context.POWER_SERVICE); + + //获得IPowerManager.Stub类 + Class cStub = Class + .forName("android.os.IPowerManager$Stub"); + //获得asInterface方法 + Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class); + //调用asInterface方法获取IPowerManager对象 + Object oIPowerManager = asInterface.invoke(null, oRemoteService); + //获得shutdown()方法 + Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class); + //调用shutdown()方法 + shutdown.invoke(oIPowerManager,false,true); + + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + } + + public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR"; + public static final String EXTRA_REASON = "android.intent.extra.REASON"; + public static final String EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE"; + + public static void doMasterClear(Context context) { + ICLogger.i("do doMasterClear!"); + Intent intent = new Intent(ACTION_MASTER_CLEAR); + intent.setPackage("android"); + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + intent.putExtra(EXTRA_REASON, "MasterClearConfirm"); + if (Environment.isExternalStorageRemovable()) { + intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, true); + }else + { + intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, false); + } + context.sendBroadcast(intent); + } + + + public static String UrlGB2312ToUTF8(String url){ + String ret=""; + String src=url; + + + + if (!url.contains("%")){ + int len = url.length(); + //由于协议中GB2312 都是不带% 字头的,和网络中常见的不同,直接2个字节代表一个GB2312字。 + //如果不是2的整倍数,则证明字符串格式有误,取消转换 + if (len%2==0) { + //先给每个unicode字符都加上\\u字头,然后再进行转换。 + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < len; i += 2) { + sb.append("%").append(url.substring(i, i + 2)); + } + src=sb.toString(); + }else{ + return ret; + } + } + try { + ret=java.net.URLDecoder.decode(src,"GB2312"); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(),e); + } + return ret; + } + + public static String UTF8ToUrlGB2312(String msg){ + + String ret=""; + try { + ret=java.net.URLEncoder.encode(msg,"GB2312"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ret; + } + + public static String bytesToHexString(byte[] src) { + StringBuilder stringBuilder = new StringBuilder(""); + if (src == null || src.length <= 0) { + return null; + } + for (int i = 0; i < src.length; i++) { + int v = src[i] & 0xFF; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + stringBuilder.append(0); + } + stringBuilder.append(hv); + } + return stringBuilder.toString(); + } + public static byte[] hexStringToBytes(String hexString) { + if (hexString == null || hexString.equals("")) { + return null; + } + hexString = hexString.toUpperCase(); + int length = hexString.length() / 2; + char[] hexChars = hexString.toCharArray(); + byte[] d = new byte[length]; + for (int i = 0; i < length; i++) { + int pos = i * 2; + d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); + } + return d; + } + private static byte charToByte(char c) { + return (byte) "0123456789ABCDEF".indexOf(c); + } +} + diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 5d396c95..5e49880e 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -15,11 +15,13 @@ import com.enqualcomm.support.bean.Content; import com.enqualcomm.support.bean.HealthInfo; import com.enqualcomm.support.bean.ICLocation; import com.enqualcomm.support.bean.Runtime; +import com.enqualcomm.support.bean.Silent; import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.bean.VoiceContent; import com.enqualcomm.support.bean.voicePacket; import com.enqualcomm.support.service.HeartRateManager; import com.enqualcomm.support.utils.Connection; +import com.enqualcomm.support.utils.DBHelper; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.MD5; import com.enqualcomm.support.utils.TemperatureUtil; @@ -29,6 +31,7 @@ import com.enqualcomm.support.utils.regexUtil; import java.io.File; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -378,8 +381,71 @@ public class protocol_fzd { public void handleKA(Runtime runtime,String data){ } + public static StringMessage CENTER(Runtime runtime){ + return genFZDCMD(cmdMap.get(CMD_TYPE.CENTER)); + } + + + public void handleCENTER(Connection connection,Runtime runtime,String cmd,String data){ + connection.send(CENTER(runtime)); + } + + + + + public static StringMessage SILENCETIME2(Runtime runtime){ + return genFZDCMD(cmdMap.get(CMD_TYPE.SILENCETIME2)); + } + + + public void handleSILENCETIME2(Connection connection,Runtime runtime,String cmd,String data){ + /** + * 上课禁用时间段设置 2 + *size 60 [IC*860314001000466*0022*SILENCETIME2,10:03-16:00-1-0111110] + * IC*860314001000466*0022*SILENCETIME2 10:03-16:00-1-0111110 + * 平台发送: + * [IC*YYYYYYYYYYYYYYY*LEN*SILENCETIME2,时间段-开关-自定义日期,时间段-开关-自定义日期,时 间段-开关-自定义日期] + * 实 + * 例 :[IC*334588000000156*0038*SILENCETIME2,7:30-21:10-1-0111110,7:30-21:10-1-0111110,7:30-21:10-0-0111110] + * 终端回复: + * [IC*YYYYYYYYYYYYYYY*LEN*SILENCETIME2] + * 实例:[IC*334588000000156*000C*SILENCETIME2] + * 说明: + * 设置上课禁用时间段范围,拦截终端的任何来电。格式为“起始时间-结束时间-自定义星期几”, 比如上面的 7:30-21:00-0111110,则表示周一到周五 7:30 到 21:00 之间上课禁用生效,起始时间默认大于结束时间。 + * 总开关:0 为关,1 为开 + * 关于自定义星期几的规则:最左边是周日,最右边是周六,即 0111110 的顺序是:周日,周一,周二,周三,周四,周五,周六(1 为打开,0 为关闭),所以上面的意思是周一至周五打开上课禁用。 + */ + connection.send(SILENCETIME2(runtime)); + String[] silent_items=data.split(","); + ArrayList slist=new ArrayList<>(); + if (silent_items.length>0){ + for(String si:silent_items){ + String[] sl=si.split("-"); + if(sl.length==4) + { + String start,end,status; + start="T"+sl[0]; + end="T"+sl[1]; + status=sl[2].equals("1")?"ON":"OFF"; + char[] week=sl[3].toCharArray(); + StringBuilder week_sb=new StringBuilder(); + for (int i=0;i