<action android:name= "com.ic.action.message_sent" />
<action android:name= "com.ic.action.temp_result" />
<action android:name= "com.ic.action.set_sit_range" />
+ <action android:name="com.enqualcomm.support.OTHER_ALARM_END" />
+ <action android:name="com.enqualcomm.support.OTHER_ALARM_START" />
<!-- <action android:name="com.eqc.heartrate.action.SILENT_START" /> -->
</intent-filter>
</receiver>
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;
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;
// 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);
- Config.setHeartBeatCycle(this,5); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。
+ Config.setHeartBeatCycle(this,alarmCycle); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。
//初始化ServerHeartBeat Cycle
Config.loadHearBeatSetting(runtime);
//初始化PPG,LocationMod,LocationCycle
}
//设置来电模式
- SimSignalUtil.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true);
+ Util.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true);
//备份DB数据到sd cache目录,为调试方便
Util.getDBFile();
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) {
// 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;
-// }
//收到定时定位消息
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);
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
+++ /dev/null
-package com.enqualcomm.support;\r
-\r
-import android.content.Intent;\r
-\r
-import com.enqualcomm.support.bean.StringMessage;\r
-import com.enqualcomm.support.bean.Update;\r
-import com.enqualcomm.support.utils.Util;\r
-import com.enqualcomm.support.bean.Runtime;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-\r
-import rx.Observable;\r
-import rx.Subscriber;\r
-import rx.schedulers.Schedulers;\r
-\r
-public class ParseUpdate extends Object implements Observable.OnSubscribe<Update> {\r
- private Runtime runtime;\r
- \r
- private ArrayList<byte[]> source;\r
- \r
- private String[] strings;\r
- \r
- public ParseUpdate(StringMessage paramStringMessage, Runtime paramRuntime) {\r
- this.strings = paramStringMessage.all();\r
- this.source = paramStringMessage.source();\r
- this.runtime = paramRuntime;\r
- }\r
- \r
- public void call(Subscriber<? super Update> paramSubscriber) {\r
- Update.Builder builder = new Update.Builder();\r
- int i = this.strings.length;\r
-// for (byte b = 1; b < i; b++) {\r
-// String arrayList = this.strings[b];\r
-// int k = arrayList.length();\r
-// boolean bool = arrayList.startsWith("STADMIN:");\r
-// int j = 0;\r
-// if (bool) {\r
-// builder.clearAdmin();\r
-// if (k > 8) {\r
-// ArrayList<byte[]> bList = Util.split((byte[])this.source.get(b), (byte)58, 8);\r
-// if (bList.size() > 1) {\r
-// builder.setAdmin(Util.getRealName((byte[])bList.get(0)), new String((byte[])bList.get(1)));\r
-// } else {\r
-// builder.setAdmin((this.runtime.getContextProxy()).context.getResources().getString(2131624050), new String((byte[])bList.get(0)));\r
-// }\r
-// }\r
-// } else {\r
-// Iterator iterator;\r
-// if (arrayList.startsWith("STCARE:")) {\r
-// builder.clearCare();\r
-// if (k > 7) {\r
-// iterator = Util.split((byte[])this.source.get(b), (byte)44, 7).iterator();\r
-// while (iterator.hasNext()) {\r
-// ArrayList arrayList1 = Util.split((byte[])iterator.next(), (byte)58, 0);\r
-// if (arrayList1.size() > 1) {\r
-// builder.addCare(Util.getRealName((byte[])arrayList1.get(0)), new String((byte[])arrayList1.get(1)));\r
-// continue;\r
-// }\r
-// builder.addCare((this.runtime.getContextProxy()).context.getResources().getString(2131624050), new String((byte[])arrayList1.get(0)));\r
-// }\r
-// }\r
-// } else if (arrayList.startsWith("STCALL:")) {\r
-// builder.clearCall();\r
-// if (k > 7) {\r
-// iterator = Util.split((byte[])this.source.get(b), (byte)44, 7).iterator();\r
-// while (iterator.hasNext()) {\r
-// ArrayList arrayList1 = Util.split((byte[])iterator.next(), (byte)58, 0);\r
-// if (arrayList1.size() > 1) {\r
-// builder.addCall(Util.getRealName((byte[])arrayList1.get(0)), new String((byte[])arrayList1.get(1)));\r
-// continue;\r
-// }\r
-// builder.addCall((this.runtime.getContextProxy()).context.getResources().getString(2131624050), new String((byte[])arrayList1.get(0)));\r
-// }\r
-// }\r
-// } else if (arrayList.startsWith("PARTNER:")) {\r
-// builder.clearPartner();\r
-// if (k > 8) {\r
-// iterator = Util.split((byte[])this.source.get(b), (byte)44, 8).iterator();\r
-// while (iterator.hasNext()) {\r
-// ArrayList<byte[]> arrayOfString = Util.split((byte[])iterator.next(), (byte)58, 0);\r
-// if (arrayOfString.size() > 1) {\r
-// String str1 = Util.getRealName((byte[])arrayOfString.get(0));\r
-// String[] barrayOfString = (new String((byte[])arrayOfString.get(1))).split("@");\r
-// if (barrayOfString.length > 1)\r
-// builder.addPartner(str1, barrayOfString[0], barrayOfString[1]);\r
-// continue;\r
-// }\r
-// String str = (this.runtime.getContextProxy()).context.getResources().getString(2131624050);\r
-// String[]barrayOfString = (new String((byte[])arrayOfString.get(0))).split("@");\r
-// if (barrayOfString.length > 1)\r
-// builder.addPartner(str, barrayOfString[0], barrayOfString[1]);\r
-// }\r
-// }\r
-// } else {\r
-// Iterator iterator1;\r
-// if (iterator.startsWith("VIDEOSTCARE:")) {\r
-// iterator1 = new StringBuilder();\r
-// iterator1.append("VIDEOSTCARE length=");\r
-// iterator1.append(k);\r
-// ICLogger.i(iterator1.toString());\r
-// builder.clearVideo();\r
-// if (k > 12) {\r
-// iterator1 = Util.split((byte[])this.source.get(b), (byte)44, 12).iterator();\r
-// while (iterator1.hasNext()) {\r
-// String[] arrayOfString = Util.split((byte[])iterator1.next(), (byte)58, 0);\r
-// if (arrayOfString.size() > 1) {\r
-// String str1 = Util.getRealName((byte[])arrayOfString.get(0));\r
-// arrayOfString = (new String((byte[])arrayOfString.get(1))).split("@");\r
-// StringBuilder stringBuilder1 = new StringBuilder();\r
-// stringBuilder1.append("VIDEOSTCARE name=");\r
-// stringBuilder1.append(str1);\r
-// stringBuilder1.append(" ,");\r
-// stringBuilder1.append(arrayOfString[0]);\r
-// stringBuilder1.append(" ,");\r
-// stringBuilder1.append(arrayOfString[1]);\r
-// ICLogger.i(stringBuilder1.toString());\r
-// builder.addVideo(str1, arrayOfString[0], arrayOfString[1]);\r
-// continue;\r
-// }\r
-// String str = (this.runtime.getContextProxy()).context.getResources().getString(2131624050);\r
-// arrayOfString = (new String((byte[])arrayOfString.get(0))).split("@");\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("VIDEOSTCARE name=");\r
-// stringBuilder.append(str);\r
-// stringBuilder.append(" ,");\r
-// stringBuilder.append(arrayOfString[0]);\r
-// stringBuilder.append(" ,");\r
-// stringBuilder.append(arrayOfString[1]);\r
-// ICLogger.i(stringBuilder.toString());\r
-// builder.addVideo(str, arrayOfString[0], arrayOfString[1]);\r
-// }\r
-// }\r
-// } else if (iterator1.startsWith("STREL_ADMIN:")) {\r
-// if (k > 12)\r
-// builder.setAdminIcon(iterator1.substring(12, k));\r
-// } else if (iterator1.startsWith("STREL_CARE:")) {\r
-// if (k > 11)\r
-// builder.setCareIcons(iterator1.substring(11, k).split("\\u002B"));\r
-// } else if (iterator1.startsWith("STREL_CALL:")) {\r
-// if (k > 11)\r
-// builder.setCallIcons(iterator1.substring(11, k).split("\\u002B"));\r
-// } else if (iterator1.startsWith("STREL_PARTNER:")) {\r
-// if (k > 14)\r
-// builder.setPartnerIcons(iterator1.substring(14, k).split("\\u002B"));\r
-// } else {\r
-// String[] arrayOfString;\r
-// if (iterator1.startsWith("STSILENT=ON,")) {\r
-// builder.clearSilent();\r
-// arrayOfString = iterator1.substring(12, k).split("@");\r
-// k = arrayOfString.length;\r
-// j = 0;\r
-// while (j < k) {\r
-// String str = arrayOfString[j];\r
-// if (str.charAt(10) != '0') {\r
-// String[] arrayOfString1 = str.substring(10, str.length()).split(",");\r
-// builder.addSilent(arrayOfString1[0], arrayOfString1[1], arrayOfString1[2], arrayOfString1[3]);\r
-// j++;\r
-// }\r
-// }\r
-// } else if (arrayOfString.startsWith("STALARM=ON,")) {\r
-// builder.clearAlarm();\r
-// arrayOfString = arrayOfString.substring(11, k).split("@");\r
-// k = arrayOfString.length;\r
-// j = 0;\r
-// while (j < k) {\r
-// String str = arrayOfString[j];\r
-// if (str.charAt(9) != '0') {\r
-// String[] arrayOfString1 = str.substring(9, str.length()).split(",");\r
-// builder.addAlarm(arrayOfString1[0], arrayOfString1[1], arrayOfString1[2], arrayOfString1[3]);\r
-// j++;\r
-// }\r
-// }\r
-// } else {\r
-// ArrayList arrayList1;\r
-// if (arrayOfString.startsWith("ALARMNAME:")) {\r
-// if (arrayOfString.length() > 59) {\r
-// arrayList1 = Util.split((byte[])this.source.get(b), (byte)64, 10);\r
-// k = arrayList1.size();\r
-// String[] arrayOfString1 = new String[k];\r
-// while (j < k) {\r
-// byte[] arrayOfByte = (byte[])arrayList1.get(j);\r
-// if (arrayOfByte.length > 9) {\r
-// arrayOfString1[j] = Util.getRealName(Util.subArray(arrayOfByte, 9));\r
-// j++;\r
-// }\r
-// }\r
-// builder.setAlarmNames(arrayOfString1);\r
-// }\r
-// } else {\r
-// Intent intent;\r
-// if (arrayList1.startsWith("STWORKMODE:")) {\r
-// String[] arrayOfString1 = arrayList1.split(":")[1].split("@");\r
-// if (arrayOfString1.length >= 2) {\r
-// String str1 = arrayOfString1[0];\r
-// String str2 = arrayOfString1[1];\r
-// j = Integer.valueOf(str1).intValue();\r
-// k = Integer.valueOf(str2).intValue();\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("mode1=");\r
-// stringBuilder.append(j);\r
-// stringBuilder.append("cycle1");\r
-// stringBuilder.append(k);\r
-// ICLogger.i(stringBuilder.toString());\r
-// stringBuilder = new StringBuilder();\r
-// stringBuilder.append("mode2=");\r
-// stringBuilder.append(j);\r
-// stringBuilder.append("cycle2");\r
-// stringBuilder.append(k);\r
-// ICLogger.i(stringBuilder.toString());\r
-// EqcAlgorithmNative.native_EqcAlgorithmMethod1(j, k);\r
-// intent = new Intent((this.runtime.getContextProxy()).context, com.enqualcomm.support.CoreService.class);\r
-// intent.setAction("com.enqualcomm.support.ACTION_STWORKMODE_ALARM");\r
-// intent.putExtra("location_cycle", k);\r
-// (this.runtime.getContextProxy()).context.startService(intent);\r
-// SharPreferenceUtil.setPrefInt((this.runtime.getContextProxy()).context, "location_mode", j);\r
-// SharPreferenceUtil.setPrefInt((this.runtime.getContextProxy()).context, "location_cycle", k);\r
-// }\r
-// } else {\r
-// String str;\r
-// if (intent.startsWith("VOICENOTICE:")) {\r
-// String[] arrayOfString1 = intent.split(":");\r
-// str = "";\r
-// final DBHelper dbHelper = this.runtime.getDbHelper();\r
-// if (arrayOfString1.length > 1)\r
-// str = arrayOfString1[1];\r
-// if ("".equals(str)) {\r
-// dBHelper.saveNoticeContent(null);\r
-// } else {\r
-// this.runtime.getContextProxy();\r
-// Observable.create(new GetNotice(str, this.runtime)).subscribeOn(Schedulers.io()).subscribe(new Subscriber<ArrayList<NoticeContent>>() {\r
-// public void onCompleted() {}\r
-//\r
-// public void onError(Throwable param1Throwable) {}\r
-//\r
-// public void onNext(ArrayList<NoticeContent> param1ArrayList) { dbHelper.saveNoticeContent(param1ArrayList); }\r
-// });\r
-// }\r
-// } else {\r
-// String[] arrayOfString1;\r
-// if (str.startsWith("SCORE:")) {\r
-// arrayOfString1 = str.split(":")[1].split("@");\r
-// if (arrayOfString1.length == 2)\r
-// builder.score = arrayOfString1[1];\r
-// } else if (arrayOfString1.startsWith("AWARD:")) {\r
-// if (arrayOfString1.length() > 8)\r
-// builder.award = Util.getRealName((byte[])Util.split((byte[])this.source.get(b), (byte)64, 6).get(1));\r
-// } else if (arrayOfString1.startsWith("BELONG:")) {\r
-// str1 = arrayOfString1.split(":")[1];\r
-// if (str1 != null) {\r
-// this.runtime.setBelong(str1);\r
-// SharPreferenceUtil.setPrefString((this.runtime.getContextProxy()).context, "KEY_COMPANY", str1);\r
-// }\r
-// } else if (str1.startsWith("STWEATHER:")) {\r
-// String[] arrayOfString2 = str1.split(":")[1].split("@");\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("STWEATHER=");\r
-// stringBuilder.append(str1);\r
-// ICLogger.i(stringBuilder.toString());\r
-// try {\r
-// builder.weatherType = arrayOfString2[0];\r
-// builder.min_Temperature = arrayOfString2[1];\r
-// builder.max_Temperature = arrayOfString2[2];\r
-// builder.cur_Temperature = arrayOfString2[3];\r
-// builder.weatherIndex = arrayOfString2[4];\r
-// } catch (Exception str1) {\r
-// str1.printStackTrace();\r
-// }\r
-// } else if (str1.startsWith("WEATHERINFO:")) {\r
-// if (k > 12) {\r
-// str1 = Util.getRealName((byte[])Util.split((byte[])this.source.get(b), (byte)58, 0).get(1));\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("weatherInfo=");\r
-// stringBuilder.append(str1);\r
-// ICLogger.i(stringBuilder.toString());\r
-// builder.weatherInfo = str1;\r
-// }\r
-// } else {\r
-// String[] arrayOfString2;\r
-// if (str1.startsWith("STHEART_RATE_STATUS=")) {\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("s=");\r
-// stringBuilder.append(str1);\r
-// ICLogger.i(stringBuilder.toString());\r
-// builder.clearStheartRate();\r
-// String[] arrayOfString3 = str1.substring(23, k).split("@");\r
-// if (str1.startsWith("STHEART_RATE_STATUS=ON,")) {\r
-// k = arrayOfString3.length;\r
-// j = 0;\r
-// while (j < k) {\r
-// str1 = arrayOfString3[j];\r
-// if (str1.charAt(14) != '0') {\r
-// arrayOfString2 = str1.substring(14, str1.length()).split(",");\r
-// builder.addStheartRate(arrayOfString2[0], arrayOfString2[1], arrayOfString2[2], arrayOfString2[3]);\r
-// j++;\r
-// }\r
-// }\r
-// }\r
-// } else if (arrayOfString2.startsWith("STHEART_RATE:")) {\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("s=");\r
-// stringBuilder.append(arrayOfString2);\r
-// ICLogger.i(stringBuilder.toString());\r
-// builder.setStheartRateInterval(arrayOfString2.split(":")[1]);\r
-// } else if (arrayOfString2.startsWith("STANTIOFF=ON,")) {\r
-// builder.clearAntioff();\r
-// arrayOfString2 = arrayOfString2.substring(13, k).split("@");\r
-// k = arrayOfString2.length;\r
-// j = 0;\r
-// while (j < k) {\r
-// String str2 = arrayOfString2[j];\r
-// if (str2.charAt(11) != '0') {\r
-// String[] arrayOfString3 = str2.substring(11, str2.length()).split(",");\r
-// builder.addAntioff(arrayOfString3[0], arrayOfString3[1], arrayOfString3[2], arrayOfString3[3]);\r
-// j++;\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// }\r
-// paramSubscriber.onNext(builder.build());\r
-// paramSubscriber.onCompleted();\r
- }\r
-}\r
+++ /dev/null
-package com.enqualcomm.support;\r
-\r
-\r
-import com.enqualcomm.support.bean.StringMessage;\r
-import com.enqualcomm.support.utils.ICLogger;\r
-\r
-import rx.Observable;\r
-import rx.Subscriber;\r
-\r
-public class PassData extends Object implements Observable.OnSubscribe<String> {\r
- private Runtime mRuntime;\r
-\r
- private String[] msg;\r
- \r
- public PassData(StringMessage paramStringMessage, Runtime paramRuntime) {\r
- this.msg = paramStringMessage.all();\r
- this.mRuntime = paramRuntime;\r
- }\r
- \r
- public void call(Subscriber<? super String> paramSubscriber) {\r
- StringBuilder stringBuilder1 = new StringBuilder();\r
- int i = this.msg.length;\r
- StringBuilder stringBuilder2 = new StringBuilder();\r
- stringBuilder2.append("size =");\r
- stringBuilder2.append(i);\r
- ICLogger.i(stringBuilder2.toString());\r
- if (i < 4) {\r
- paramSubscriber.onNext(null);\r
- return;\r
- } \r
- byte b = 3;\r
- boolean bool = false;\r
- while (b < i) {\r
- String str = this.msg[b];\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("sss =");\r
- stringBuilder.append(str);\r
- ICLogger.i(stringBuilder.toString());\r
- if (!bool) {\r
- stringBuilder1.append(str);\r
- bool = true;\r
- } else {\r
- stringBuilder1.append(";");\r
- stringBuilder1.append(str);\r
- } \r
- b++;\r
- } \r
- stringBuilder1 = new StringBuilder();\r
- stringBuilder1.append(this.msg[1]);\r
- stringBuilder1.append(";");\r
- stringBuilder1.append(this.msg[2]);\r
- paramSubscriber.onNext(stringBuilder1.toString());\r
- }\r
-}\r
-\r
-package com.enqualcomm.support.bean;\r
-\r
-public class Silent {\r
- public String cur_sys_status;\r
- \r
- public String end;\r
- \r
- public long endTimeMillis;\r
- \r
- public String start;\r
- \r
- public long startTimeMillis;\r
- \r
- public String status;\r
- \r
- public String week;\r
- \r
- public Silent(String paramString1, String paramString2, String paramString3, String paramString4) {\r
- this.start = paramString1;\r
- this.end = paramString2;\r
- this.week = paramString3;\r
- this.status = paramString4;\r
- }\r
- \r
- public Silent(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) {\r
- this.start = paramString1;\r
- this.end = paramString2;\r
- this.week = paramString3;\r
- this.status = paramString4;\r
- this.cur_sys_status = paramString5;\r
- }\r
- \r
- public boolean equals(Object obj) {\r
- if (this == obj)\r
- return true; \r
- if (obj != null) {\r
- if (getClass() != obj.getClass())\r
- return false;\r
- Silent silent = (Silent)obj;\r
- return !this.start.equals(silent.start) ? false : (!this.end.equals(silent.end) ? false : (!this.week.equals(silent.week) ? false : this.status.equals(silent.status)));\r
- } \r
- return false;\r
- }\r
- \r
- public String toString() {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("Silent{start='");\r
- stringBuilder.append(this.start);\r
- stringBuilder.append('\'');\r
- stringBuilder.append(", end='");\r
- stringBuilder.append(this.end);\r
- stringBuilder.append('\'');\r
- stringBuilder.append(", week='");\r
- stringBuilder.append(this.week);\r
- stringBuilder.append('\'');\r
- stringBuilder.append(", status='");\r
- stringBuilder.append(this.status);\r
- stringBuilder.append('\'');\r
- stringBuilder.append('}');\r
- return stringBuilder.toString();\r
- }\r
-}\r
+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();
+ }
+}
+++ /dev/null
-package com.enqualcomm.support.bean;\r
-\r
-import com.enqualcomm.support.utils.ICLogger;\r
-\r
-import java.util.ArrayList;\r
-\r
-public class Update {\r
- public ArrayList<Alarm> alarmList;\r
- \r
- public ArrayList<Antioff> antioffList;\r
- \r
- public boolean clearAdmin;\r
- \r
- public boolean clearCall;\r
- \r
- public boolean clearCare;\r
- \r
- public boolean clearPartner;\r
- \r
- public boolean clearVideo;\r
- \r
- public ArrayList<Contact> contactList;\r
- \r
- public ArrayList<Silent> silentList;\r
- \r
- public ArrayList<StheartRate> stheartRateList;\r
- \r
- public Weather weather;\r
- \r
- private Update(ArrayList<Contact> paramArrayList1,\r
- boolean paramBoolean1,\r
- boolean paramBoolean2,\r
- boolean paramBoolean3,\r
- boolean paramBoolean4,\r
- boolean paramBoolean5,\r
- ArrayList<Silent> paramArrayList2,\r
- ArrayList<Alarm> paramArrayList3,\r
- Weather paramWeather,\r
- ArrayList<StheartRate> paramArrayList4,\r
- ArrayList<Antioff> paramArrayList5) {\r
- this.contactList = paramArrayList1;\r
- this.clearAdmin = paramBoolean1;\r
- this.clearCare = paramBoolean2;\r
- this.clearCall = paramBoolean3;\r
- this.clearPartner = paramBoolean4;\r
- this.clearVideo = paramBoolean5;\r
- this.silentList = paramArrayList2;\r
- this.alarmList = paramArrayList3;\r
- this.weather = paramWeather;\r
- this.stheartRateList = paramArrayList4;\r
- this.antioffList = paramArrayList5;\r
- }\r
- \r
- public static class Builder {\r
- String StheartRateInterval;\r
- \r
- Contact admin;\r
- \r
- String admin_icon_index;\r
- \r
- ArrayList<Alarm> alarmList;\r
- \r
- String[] alarmNames;\r
- \r
- ArrayList<Antioff> antioffList;\r
-\r
- \r
- ArrayList<Contact> callList;\r
- \r
- String[] call_icon_indexes;\r
- \r
- ArrayList<Contact> careList;\r
- \r
- String[] care_icon_indexes;\r
- \r
- boolean clearAdmin;\r
- \r
- public String cur_Temperature;\r
- \r
- public String max_Temperature;\r
- \r
- public String min_Temperature;\r
- \r
- ArrayList<Contact> partnerList;\r
- \r
- String[] partner_icon_indexes;\r
-\r
- \r
- ArrayList<Silent> silentList;\r
- \r
- ArrayList<StheartRate> stheartRateList;\r
- \r
- String stwork_mode;\r
- \r
- ArrayList<Contact> videoList;\r
- \r
- String[] video_icon_indexes;\r
- \r
- public String weatherIndex;\r
- \r
- public String weatherInfo;\r
- \r
- public String weatherType;\r
- \r
- public void addAlarm(String param1String1, String param1String2, String param1String3, String param1String4) { this.alarmList.add(new Alarm(param1String1, param1String2, param1String3, param1String4)); }\r
- \r
- public void addAntioff(String param1String1, String param1String2, String param1String3, String param1String4) { this.antioffList.add(new Antioff(param1String1, param1String2, param1String3, param1String4)); }\r
- \r
- public void addCall(String param1String1, String param1String2) { this.callList.add(new Contact(3, param1String1, param1String2)); }\r
- \r
- public void addCare(String param1String1, String param1String2) { this.careList.add(new Contact(2, param1String1, param1String2)); }\r
- \r
- public void addPartner(String param1String1, String param1String2, String param1String3) { this.partnerList.add(new Contact(4, param1String1, param1String2, param1String3)); }\r
- \r
- public void addSilent(String param1String1, String param1String2, String param1String3, String param1String4) { this.silentList.add(new Silent(param1String1, param1String2, param1String3, param1String4)); }\r
- \r
- public void addStheartRate(String param1String1, String param1String2, String param1String3, String param1String4) { this.stheartRateList.add(new StheartRate(param1String1, param1String2, param1String3, param1String4)); }\r
- \r
- public void addVideo(String param1String1, String param1String2, String param1String3) { this.videoList.add(new Contact(5, param1String1, param1String2, param1String3)); }\r
- \r
- public Update build() {\r
- boolean bool4;\r
- boolean bool3;\r
- boolean bool2;\r
- boolean bool1;\r
- ArrayList arrayList1 = new ArrayList();\r
-\r
- Weather weather = new Weather();\r
-\r
-\r
- if (this.weatherType != null)\r
- weather.weatherType = this.weatherType; \r
- if (this.min_Temperature != null)\r
- weather.min_Temperature = this.min_Temperature; \r
- if (this.max_Temperature != null)\r
- weather.max_Temperature = this.max_Temperature; \r
- if (this.cur_Temperature != null)\r
- weather.cur_Temperature = this.cur_Temperature; \r
- if (this.weatherIndex != null)\r
- weather.weatherIndex = this.weatherIndex; \r
- if (this.weatherInfo != null)\r
- weather.weatherInfo = this.weatherInfo; \r
- if (this.admin != null) {\r
- this.admin.icon_index = this.admin_icon_index;\r
- arrayList1.add(this.admin);\r
- } \r
- ArrayList arrayList2 = this.careList;\r
- boolean bool = false;\r
- int i = 1;\r
- if (arrayList2 != null) {\r
- bool1 = true;\r
- } else {\r
- bool1 = false;\r
- } \r
- if (bool1) {\r
- boolean bool5;\r
- if (this.care_icon_indexes != null && this.care_icon_indexes.length == this.careList.size()) {\r
- bool5 = true;\r
- } else {\r
- bool5 = false;\r
- } \r
- int j = this.careList.size();\r
- for (byte b = 0; b < j; b++) {\r
- Contact contact = (Contact)this.careList.get(b);\r
- if (bool5)\r
- contact.icon_index = this.care_icon_indexes[b]; \r
- arrayList1.add(contact);\r
- } \r
- } \r
- if (this.callList != null) {\r
- bool2 = true;\r
- } else {\r
- bool2 = false;\r
- } \r
- if (bool2) {\r
- boolean bool5;\r
- if (this.call_icon_indexes != null && this.call_icon_indexes.length == this.callList.size()) {\r
- bool5 = true;\r
- } else {\r
- bool5 = false;\r
- } \r
- int j = this.callList.size();\r
- for (byte b = 0; b < j; b++) {\r
- Contact contact = (Contact)this.callList.get(b);\r
- if (bool5)\r
- contact.icon_index = this.call_icon_indexes[b]; \r
- arrayList1.add(contact);\r
- } \r
- } \r
- if (this.partnerList != null) {\r
- bool3 = true;\r
- } else {\r
- bool3 = false;\r
- } \r
- if (bool3) {\r
- boolean bool5;\r
- if (this.partner_icon_indexes != null && this.partner_icon_indexes.length == this.partnerList.size()) {\r
- bool5 = true;\r
- } else {\r
- bool5 = false;\r
- } \r
- int j = this.partnerList.size();\r
- for (byte b = 0; b < j; b++) {\r
- Contact contact = (Contact)this.partnerList.get(b);\r
- if (bool5)\r
- contact.icon_index = this.partner_icon_indexes[b]; \r
- arrayList1.add(contact);\r
- } \r
- } \r
- if (this.videoList != null) {\r
- bool4 = true;\r
- } else {\r
- bool4 = false;\r
- } \r
- if (bool4) {\r
- boolean bool5;\r
- if (this.video_icon_indexes != null && this.video_icon_indexes.length == this.videoList.size()) {\r
- bool5 = true;\r
- } else {\r
- bool5 = false;\r
- } \r
- i = this.videoList.size();\r
- for (byte b = 0; b < i; b++) {\r
- Contact contact = (Contact)this.videoList.get(b);\r
- if (bool5)\r
- contact.icon_index = this.video_icon_indexes[b]; \r
- arrayList1.add(contact);\r
- } \r
- } \r
- if (this.alarmList != null && this.alarmNames != null) {\r
- int j = this.alarmList.size();\r
- for (byte b = 0; b < j; b++)\r
- ((Alarm)this.alarmList.get(b)).name = this.alarmNames[b]; \r
- } \r
- if (this.stheartRateList != null && this.StheartRateInterval != null)\r
- for (byte b = 0; b < this.stheartRateList.size(); b++)\r
- ((StheartRate)this.stheartRateList.get(b)).interval = this.StheartRateInterval; \r
- return new Update(arrayList1,\r
- this.clearAdmin,\r
- bool1,\r
- bool2,\r
- bool3,\r
- bool4,\r
- this.silentList,\r
- this.alarmList,\r
- weather,\r
- this.stheartRateList,\r
- this.antioffList);\r
- }\r
- \r
- public void clearAdmin() {\r
- this.clearAdmin = true;\r
- this.admin = null;\r
- }\r
- \r
- public void clearAlarm() { this.alarmList = new ArrayList(); }\r
- \r
- public void clearAntioff() { this.antioffList = new ArrayList(); }\r
- \r
- public void clearCall() { this.callList = new ArrayList(); }\r
- \r
- public void clearCare() { this.careList = new ArrayList(); }\r
- \r
- public void clearPartner() { this.partnerList = new ArrayList(); }\r
- \r
- public void clearSilent() { this.silentList = new ArrayList(); }\r
- \r
- public void clearStheartRate() { this.stheartRateList = new ArrayList(); }\r
- \r
- public void clearVideo() { this.videoList = new ArrayList(); }\r
- \r
- public String getStwork_mode() { return this.stwork_mode; }\r
- \r
- public void setAdmin(String param1String1, String param1String2) {\r
- this.admin = new Contact(1, param1String1, param1String2);\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("name= ");\r
- stringBuilder.append(param1String1);\r
- stringBuilder.append("number=");\r
- stringBuilder.append(param1String2);\r
- ICLogger.i(stringBuilder.toString());\r
- }\r
- \r
- public void setAdminIcon(String param1String) { this.admin_icon_index = param1String; }\r
- \r
- public void setAlarmNames(String[] param1ArrayOfString) { this.alarmNames = param1ArrayOfString; }\r
- \r
- public void setCallIcons(String[] param1ArrayOfString) { this.call_icon_indexes = param1ArrayOfString; }\r
- \r
- public void setCareIcons(String[] param1ArrayOfString) { this.care_icon_indexes = param1ArrayOfString; }\r
- \r
- public void setPartnerIcons(String[] param1ArrayOfString) { this.partner_icon_indexes = param1ArrayOfString; }\r
- \r
- public void setStheartRateInterval(String param1String) { this.StheartRateInterval = param1String; }\r
- \r
- public void setStwork_mode(String param1String) { this.stwork_mode = param1String; }\r
- \r
- public void setVideoIcons(String[] param1ArrayOfString) { this.video_icon_indexes = param1ArrayOfString; }\r
- }\r
-}\r
//throw new UnsupportedOperationException("设备不支持");
}
+
boolean isRegister = mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
if (!isRegister) {
ICLogger.i("Proximity 设备不支持2");
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;
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;
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;
}
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);
}
}
}
+ 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 {
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) {
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);
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);
}
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) {
}
- 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();
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) {
}
@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
var4 = true;
}
- this.handleSilent(var3, var4 ^ true);
+ this.handleSilent(runtime, var4 ^ true);
}
return false;
}
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);
-\r
-package com.enqualcomm.support.utils;\r
-\r
-import android.content.ContentProviderOperation;\r
-import android.content.ContentResolver;\r
-import android.content.ContentUris;\r
-import android.content.ContentValues;\r
-import android.content.Context;\r
-import android.content.Intent;\r
-import android.content.ContentProviderOperation.Builder;\r
-import android.database.Cursor;\r
-import android.net.Uri;\r
-import android.os.Handler;\r
-import android.os.SystemClock;\r
-import android.provider.BaseColumns;\r
-import android.provider.ContactsContract;\r
-import android.provider.ContactsContract.Data;\r
-import android.provider.ContactsContract.RawContacts;\r
-import android.text.TextUtils;\r
-\r
-import com.enqualcomm.support.Config;\r
-import com.enqualcomm.support.ICContentProvider;\r
-import com.enqualcomm.support.bean.Alarm;\r
-import com.enqualcomm.support.bean.Antioff;\r
-import com.enqualcomm.support.bean.Contact;\r
-import com.enqualcomm.support.bean.Content;\r
-import com.enqualcomm.support.bean.DeviceStatus;\r
-import com.enqualcomm.support.bean.NoticeContent;\r
-import com.enqualcomm.support.bean.NotificationParam;\r
-import com.enqualcomm.support.bean.Silent;\r
-import com.enqualcomm.support.bean.SleepInfo;\r
-import com.enqualcomm.support.bean.SleepRecord;\r
-import com.enqualcomm.support.bean.StheartRate;\r
-import com.enqualcomm.support.bean.StringMessage;\r
-import com.enqualcomm.support.bean.Weather;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-\r
-import static com.enqualcomm.support.bean.Contact.CATEGORY_ADMIN;\r
-import static com.enqualcomm.support.bean.Contact.CATEGORY_CALL;\r
-import static com.enqualcomm.support.bean.Contact.CATEGORY_CARE;\r
-import static com.enqualcomm.support.bean.Contact.CATEGORY_PARTNER;\r
-import static com.enqualcomm.support.bean.Contact.CATEGORY_SOS;\r
-import static com.enqualcomm.support.bean.Contact.CATEGORY_VIDEO;\r
-\r
-public class DBHelper {\r
- private static long lastUpdateTime;\r
- private Context context;\r
- private ContentResolver cr;\r
-\r
- public DBHelper(ContentResolver var1, Context var2) {\r
- this.cr = var1;\r
- this.context = var2;\r
- }\r
-\r
- private void addAllContact(ArrayList<Contact> contactArray, ContentResolver resolver) {\r
- Iterator contactIT = contactArray.iterator();\r
-\r
- while(contactIT.hasNext()) {\r
- Contact contact = (Contact)contactIT.next();\r
- ContentValues contentvalues = new ContentValues();\r
- long raw_contactID = ContentUris.parseId(resolver.insert(RawContacts.CONTENT_URI, contentvalues));\r
-\r
- contentvalues.clear();\r
- contentvalues.put("raw_contact_id", raw_contactID);\r
- contentvalues.put("mimetype", "vnd.android.cursor.item/name");\r
- contentvalues.put("data2", contact.name);\r
- resolver.insert(Data.CONTENT_URI, contentvalues);\r
- contentvalues.clear();\r
-\r
- contentvalues.put("raw_contact_id", raw_contactID);\r
- contentvalues.put("mimetype", "vnd.android.cursor.item/phone_v2");\r
- contentvalues.put("data1", contact.number);\r
- contentvalues.put("data2", 2);\r
- resolver.insert(Data.CONTENT_URI, contentvalues);\r
- contentvalues.clear();\r
- }\r
-\r
- }\r
-\r
- public int getContactCount(ContentResolver resolver)\r
- {\r
- StringBuilder sb = new StringBuilder();\r
-\r
- Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, null, (String[])null, "CATEGORY ASC");\r
-\r
- return cursor.getCount();\r
-\r
- }\r
- private void deleteAllContact(ArrayList<Contact> contactArraylist, String where, ContentResolver resolver) {\r
- StringBuilder sb = new StringBuilder();\r
- sb.append("where=");\r
- sb.append(where);\r
- ICLogger.i(sb.toString());\r
- Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, where, (String[])null, "CATEGORY ASC");\r
-\r
- Iterator contactIT = contactArraylist.iterator();\r
-\r
- while(contactIT.hasNext()) {\r
- this.DeleteContactId(resolver, ((Contact)contactIT.next()).name);\r
- }\r
- resolver.delete(ICContentProvider.CONTACT_URI, where, (String[])null);\r
- }\r
-\r
- private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) {\r
- ContentValues var5 = new ContentValues();\r
- var5.put("IMSI", var1);\r
- var5.put("TIME", var4);\r
- var5.put("NUMBER", var2);\r
- var5.put("TOTAL_NUMBER", var3);\r
- return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5);\r
- }\r
-\r
- private void saveContactsImpl(ArrayList<Contact> contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) {\r
- StringBuilder log = new StringBuilder();\r
- log.append("saveContactsImpl contactList = ");\r
- log.append(contactArray.toString());\r
- ICLogger.i(log.toString());\r
- StringBuilder where = new StringBuilder("CATEGORY IN (");\r
- if (admin) {\r
- where.append(CATEGORY_ADMIN);\r
- where.append(",");\r
- }\r
-\r
- if (care) {\r
- where.append(CATEGORY_CARE);\r
- where.append(",");\r
- }\r
-\r
- if (call) {\r
- where.append(CATEGORY_CALL);\r
- where.append(",");\r
- }\r
-\r
- if (partner) {\r
- where.append(CATEGORY_PARTNER);\r
- where.append(",");\r
- }\r
-\r
- if (video) {\r
- where.append(CATEGORY_VIDEO);\r
- where.append(",");\r
- }\r
-\r
- if (sos) {\r
- where.append(CATEGORY_SOS);\r
- where.append(",");\r
- }\r
- int len = where.length();\r
- if (len > 13) {\r
- where.setCharAt(len - 1, ')');\r
- this.deleteAllContact(contactArray, where.toString(), this.cr);\r
- int contactCount = contactArray.size();\r
- if (contactCount != 0) {\r
- ContentValues[] contentlist = new ContentValues[contactCount];\r
-\r
- for(int i = 0; i < contactCount; ++i) {\r
- Contact contact = (Contact)contactArray.get(i);\r
- ContentValues contentValues = new ContentValues();\r
- contentlist[i] = contentValues;\r
- contentValues.put("CATEGORY", contact.category);\r
- contentValues.put("NAME", contact.name);\r
- contentValues.put("NUMBER", contact.number);\r
- contentValues.put("ICON", contact.icon_index);\r
- contentValues.put("EXTRA", contact.extra);\r
- StringBuilder log1 = new StringBuilder();\r
- log1.append("contact=");\r
- log1.append(contact.toString());\r
- ICLogger.i(log1.toString());\r
- }\r
-\r
- this.cr.bulkInsert(ICContentProvider.CONTACT_URI, contentlist);\r
- this.addAllContact(contactArray, this.cr);\r
- }\r
-\r
- }\r
- }\r
-\r
- private void upDateMonitorImpl(String var1, String var2) {\r
- Cursor var5 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null);\r
- ArrayList var4 = new ArrayList();\r
- if (var5 != null) {\r
- while(true) {\r
- if (!var5.moveToNext()) {\r
- var5.close();\r
- break;\r
- }\r
-\r
- var4.add(new DeviceStatus(var5.getString(1), "0", "0", var5.getInt(4)));\r
- }\r
- }\r
-\r
- this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null);\r
- if (var4.size() != 0) {\r
- ContentValues[] var8 = new ContentValues[var4.size()];\r
-\r
- for(int var3 = 0; var3 < var4.size(); ++var3) {\r
- DeviceStatus var6 = (DeviceStatus)var4.get(var3);\r
- ContentValues var7 = new ContentValues();\r
- var8[var3] = var7;\r
- var7.put("IS_SILENCE", var6.isSilence);\r
- var7.put("START_MONITOR", var1);\r
- var7.put("END_MONITOR", var2);\r
- var7.put("IS_ALARM", var6.isAlarm);\r
- }\r
-\r
- this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8);\r
- }\r
-\r
- }\r
-\r
- public void deleteMessage(Uri var1) {\r
- this.cr.delete(var1, (String)null, (String[])null);\r
- }\r
-\r
- public String DeleteContactId(ContentResolver contentResolver, String name) {\r
- String ContactId=null;\r
- Uri uri = ContactsContract.RawContacts.CONTENT_URI;\r
- ContentResolver resolver = contentResolver;\r
- String where = ContactsContract.PhoneLookup.DISPLAY_NAME;\r
- Cursor cursor = resolver.query(uri, new String[]{Data._ID}, where + "=?", new String[]{name}, null);\r
- if (cursor.moveToFirst()) {\r
- int id = cursor.getInt(0);\r
- ContactId=String.valueOf(id);\r
- //根据id删除data中的相应数据\r
- resolver.delete(uri, where + "=?", new String[]{name});\r
- uri = ContactsContract.Data.CONTENT_URI;\r
- resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""});\r
- }\r
- return ContactId;\r
- }\r
-\r
- public boolean getWeather() {\r
- Cursor var5 = this.cr.query(ICContentProvider.WEATHER_URL, (String[])null, (String)null, (String[])null, (String)null);\r
- if (var5 != null && var5.moveToNext()) {\r
- String var1 = var5.getString(1);\r
- String var2 = var5.getString(2);\r
- String var3 = var5.getString(3);\r
- String var4 = var5.getString(4);\r
- String var7 = var5.getString(5);\r
- StringBuilder var6 = new StringBuilder();\r
- var6.append("weather_type=");\r
- var6.append(var1);\r
- var6.append("min_temperature=");\r
- var6.append(var2);\r
- var6.append("max_temperature=");\r
- var6.append(var3);\r
- var6.append("cur_temperature=");\r
- var6.append(var4);\r
- var6.append("weather_index=");\r
- var6.append(var7);\r
- ICLogger.i(var6.toString());\r
- return true;\r
- } else {\r
- return false;\r
- }\r
- }\r
-\r
- public Uri insertMessage(Content var1) {\r
- ContentValues var2 = new ContentValues();\r
- var2.put("CATEGORY", var1.category);\r
- var2.put("CONTENT", var1.content);\r
- var2.put("PREVIEW", var1.preview);\r
- var2.put("STATUS", var1.status);\r
- var2.put("IN_OR_OUT", var1.inOrOut);\r
- var2.put("CONTACT_CATEGORY", var1.contactCategory);\r
- var2.put("CONTACT_NUMBER", var1.contactNumber);\r
- var2.put("SERVER_TIME", var1.serverTime);\r
- var2.put("LOCAL_TIME", var1.localTime);\r
- var2.put("ICON", var1.icon);\r
- return this.cr.insert(ICContentProvider.MESSAGE_URI, var2);\r
- }\r
-\r
- public Uri insertOrUpdate(Content var1) {\r
- StringBuilder sb = new StringBuilder("CATEGORY=");\r
- sb.append(var1.category);\r
- sb.append(" and CONTENT='");\r
- sb.append(var1.content);\r
- sb.append("' and CONTACT_NUMBER='");\r
- sb.append(var1.contactNumber);\r
- sb.append("' and CONTACT_CATEGORY=");\r
- sb.append(var1.contactCategory);\r
- String where = sb.toString();\r
- Cursor cursor = this.cr.query(ICContentProvider.MESSAGE_URI, new String[]{"_id"}, where, (String[])null, (String)null);\r
- long id;\r
- if (cursor != null) {\r
- if (cursor.moveToNext()) {\r
- id = cursor.getLong(0);\r
- } else {\r
- id = -1L;\r
- }\r
-\r
- cursor.close();\r
- } else {\r
- id = -1L;\r
- }\r
-\r
- if (id != -1L) {\r
- Uri var6 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id);\r
- ContentValues var5 = new ContentValues();\r
- var5.put("STATUS", var1.status);\r
- var5.put("CONTENT", var1.content);\r
- this.cr.update(var6, var5, (String)null, (String[])null);\r
- return var6;\r
- } else {\r
- return this.insertMessage(var1);\r
- }\r
- }\r
-\r
- public Uri insertOrUpdate(Content content, long id) {\r
- label21: {\r
- if (id > 0L) {\r
- ContentResolver var4 = this.cr;\r
- Uri var5 = ICContentProvider.MESSAGE_URI;\r
- StringBuilder var6 = new StringBuilder();\r
- var6.append("_id=");\r
- var6.append(id);\r
- String where = var6.toString();\r
- Cursor cursor = var4.query(var5, new String[]{"_id"}, where, (String[])null, (String)null);\r
- if (cursor != null) {\r
- if (cursor.moveToNext()) {\r
- id = cursor.getLong(0);\r
- } else {\r
- id = -1L;\r
- }\r
-\r
- cursor.close();\r
- break label21;\r
- }\r
- }\r
-\r
- id = -1L;\r
- }\r
-\r
- if (id != -1L) {\r
- Uri var8 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id);\r
- ContentValues var9 = new ContentValues();\r
- var9.put("STATUS", content.status);\r
- this.cr.update(var8, var9, (String)null, (String[])null);\r
- return var8;\r
- } else {\r
- return this.insertMessage(content);\r
- }\r
- }\r
-\r
- public Uri insertOrUpdateDownLoadInfo(String var1, int var2, int var3, String var4) {\r
- StringBuilder var7 = new StringBuilder("IMSI=");\r
- var7.append(var1);\r
- String var9 = var7.toString();\r
- Cursor var10 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, new String[]{"_id"}, var9, (String[])null, (String)null);\r
- long var5;\r
- if (var10 != null) {\r
- if (var10.moveToNext()) {\r
- var5 = var10.getLong(0);\r
- } else {\r
- var5 = -1L;\r
- }\r
-\r
- var10.close();\r
- } else {\r
- var5 = -1L;\r
- }\r
-\r
- if (var5 != -1L) {\r
- Uri var11 = ContentUris.withAppendedId(ICContentProvider.DOWNLOADINFO_URL, var5);\r
- ContentValues var8 = new ContentValues();\r
- var8.put("IMSI", var1);\r
- var8.put("TIME", var4);\r
- var8.put("NUMBER", var2);\r
- var8.put("TOTAL_NUMBER", var3);\r
- this.cr.update(var11, var8, (String)null, (String[])null);\r
- return var11;\r
- } else {\r
- ICLogger.i("插入");\r
- return this.insertDownLoadInfo(var1, var2, var3, var4);\r
- }\r
- }\r
-\r
- public void insertOrUpdateUnreadMsg(NotificationParam var1) {\r
- StringBuilder var4 = new StringBuilder("id=");\r
- var4.append(var1.id);\r
- String var8 = var4.toString();\r
- Cursor var9 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, var8, (String[])null, (String)null);\r
- boolean var2 = false;\r
- boolean var3 = false;\r
- if (var9 != null) {\r
- while(true) {\r
- var2 = var3;\r
- if (var9.moveToNext()) {\r
- int var7 = var9.getInt(0);\r
- if (var7 != var1.category) {\r
- continue;\r
- }\r
-\r
- Uri var5 = ContentUris.withAppendedId(ICContentProvider.UNREAD_MSG_URI, (long)var7);\r
- ContentValues var6 = new ContentValues();\r
- var6.put("category", var1.category);\r
- var6.put("id", var1.id);\r
- var6.put("count", var1.noReadmsgCount);\r
- var6.put("recvtime", var1.lastRevTime);\r
- this.cr.update(var5, var6, (String)null, (String[])null);\r
- var2 = true;\r
- }\r
-\r
- var9.close();\r
- break;\r
- }\r
- }\r
-\r
- if (!var2) {\r
- ContentValues var10 = new ContentValues();\r
- var10.put("category", var1.category);\r
- var10.put("id", var1.id);\r
- var10.put("count", var1.noReadmsgCount);\r
- var10.put("recvtime", var1.lastRevTime);\r
- this.cr.insert(ICContentProvider.UNREAD_MSG_URI, var10);\r
- }\r
-\r
- }\r
-\r
- public void insertTest(ArrayList<Contact> var1) {\r
- int var3 = var1.size();\r
- if (var3 != 0) {\r
- ContentValues[] var4 = new ContentValues[var3];\r
-\r
- for(int var2 = 0; var2 < var3; ++var2) {\r
- Contact var5 = (Contact)var1.get(var2);\r
- ContentValues var6 = new ContentValues();\r
- var4[var2] = var6;\r
- var6.put("CATEGORY", var5.category);\r
- var6.put("NAME", var5.name);\r
- var6.put("NUMBER", var5.number);\r
- var6.put("ICON", var5.icon_index);\r
- var6.put("EXTRA", var5.extra);\r
- }\r
-\r
- this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var4);\r
- }\r
-\r
- }\r
-\r
- public ArrayList<Alarm> queryAlarm() {\r
- ArrayList var1 = new ArrayList();\r
- Cursor cursor = this.cr.query(ICContentProvider.ALARM_URI, (String[])null, (String)null, (String[])null, (String)null);\r
- if (cursor != null) {\r
- while(true) {\r
- if (!cursor.moveToNext()) {\r
- cursor.close();\r
- break;\r
- }\r
-\r
- if ("ON".equals(cursor.getString(4))) {\r
- var1.add(new Alarm(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5)));\r
- }\r
- }\r
- }\r
-\r
- return var1;\r
- }\r
-\r
- public ArrayList<Antioff> queryAntioff(boolean var1) {\r
- ContentResolver var3 = this.cr;\r
- Uri var4 = ICContentProvider.ANTIOFF_URI;\r
- String var2;\r
- if (var1) {\r
- var2 = "STATUS='ON'";\r
- } else {\r
- var2 = null;\r
- }\r
-\r
- Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null);\r
- ArrayList var6 = new ArrayList();\r
- if (var5 != null) {\r
- while(var5.moveToNext()) {\r
- var6.add(new Antioff(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5)));\r
- }\r
-\r
- var5.close();\r
- }\r
-\r
- return var6;\r
- }\r
-\r
- public Contact queryContactIconInfo(String var1) {\r
- String var2 = var1;\r
- Cursor var4 = this.cr.query(ICContentProvider.CONTACT_URI, (String[])null, "NUMBER=?", new String[]{var1}, "CATEGORY ASC");\r
- Contact var5 = null;\r
- Contact var3 = null;\r
- if (var4 != null) {\r
- var5 = var3;\r
- if (var4.moveToNext()) {\r
- var5 = new Contact(var4.getInt(1), var4.getString(2), var4.getString(3), var4.getString(4), var4.getString(5));\r
- }\r
-\r
- var4.close();\r
- }\r
-\r
- var3 = var5;\r
- if (var5 == null) {\r
- String var7 = var2;\r
- if (var2.contains("@")) {\r
- var7 = var2.substring(2);\r
- }\r
-\r
- Cursor var6 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, (String[])null, "EXTRA=?", new String[]{var7}, "CATEGORY ASC");\r
- var3 = var5;\r
- if (var6 != null) {\r
- if (var6.moveToNext()) {\r
- var5 = new Contact(var6.getInt(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5));\r
- }\r
-\r
- var4.close();\r
- var3 = var5;\r
- }\r
- }\r
-\r
- return var3;\r
- }\r
-\r
- public ArrayList<NoticeContent> queryNotice(String var1) {\r
- ArrayList noticelist = new ArrayList();\r
- ContentResolver var3 = this.cr;\r
- Uri var4 = ICContentProvider.NOTICE_URL;\r
- StringBuilder var5 = new StringBuilder();\r
- var5.append("TIME like '");\r
- var5.append(var1);\r
- var5.append("%'");\r
- Cursor cr_notice = var3.query(var4, (String[])null, var5.toString(), (String[])null, (String)null);\r
- if (cr_notice != null) {\r
- while(true) {\r
- if (!cr_notice.moveToNext()) {\r
- cr_notice.close();\r
- break;\r
- }\r
-\r
- noticelist.add(new NoticeContent(cr_notice.getString(1),\r
- cr_notice.getString(2),\r
- cr_notice.getString(3),\r
- cr_notice.getString(4),\r
- cr_notice.getString(5),\r
- cr_notice.getString(6),\r
- cr_notice.getString(7)));\r
- }\r
- }\r
-\r
- return noticelist;\r
- }\r
-\r
- public ArrayList<Silent> querySilence(boolean var1) {\r
- ContentResolver var3 = this.cr;\r
- Uri var4 = ICContentProvider.SILENT_URI;\r
- String var2;\r
- if (var1) {\r
- var2 = "STATUS='ON'";\r
- } else {\r
- var2 = null;\r
- }\r
-\r
- Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null);\r
- ArrayList var6 = new ArrayList();\r
- if (var5 != null) {\r
- while(var5.moveToNext()) {\r
- var6.add(new Silent(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5)));\r
- }\r
-\r
- var5.close();\r
- }\r
-\r
- return var6;\r
- }\r
-\r
- public ArrayList<StheartRate> queryStheartRate(boolean var1) {\r
- ContentResolver var3 = this.cr;\r
- Uri var4 = ICContentProvider.STHEART_RATE_URL;\r
- String var2;\r
- if (var1) {\r
- var2 = "STATUS='ON'";\r
- } else {\r
- var2 = null;\r
- }\r
-\r
- Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null);\r
- ArrayList var6 = new ArrayList();\r
- if (var5 != null) {\r
- while(var5.moveToNext()) {\r
- var6.add(new StheartRate(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5)));\r
- }\r
-\r
- var5.close();\r
- }\r
-\r
- return var6;\r
- }\r
-\r
- public NotificationParam queryUnreadMsg(String id, int value) {\r
-\r
- Cursor cursor = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, new StringBuilder("id=").append(id).toString(), (String[])null, (String)null);\r
- NotificationParam ret = null;\r
-\r
- if (cursor != null) {\r
- while(true) {\r
- if (cursor.moveToNext()) {\r
- if (cursor.getInt(0) != value) {\r
- continue;\r
- }\r
- ret = new NotificationParam(value, cursor.getString(1), cursor.getInt(2), cursor.getLong(3));\r
- }\r
-\r
- cursor.close();\r
- break;\r
- }\r
- }\r
-\r
- return ret;\r
- }\r
-\r
- public ArrayList<NotificationParam> queryUnreadMsg() {\r
- ArrayList var1 = new ArrayList();\r
- Cursor var2 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, (String[])null, (String)null, (String[])null, (String)null);\r
- if (var2 != null) {\r
- while(true) {\r
- if (!var2.moveToNext()) {\r
- var2.close();\r
- break;\r
- }\r
-\r
- var1.add(new NotificationParam(var2.getInt(0), var2.getString(1), var2.getInt(2), Long.valueOf(var2.getLong(3))));\r
- }\r
- }\r
-\r
- return var1;\r
- }\r
-\r
- public void resetDatabase() {\r
- this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.URLDOWNLOADPIC_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.DOWNLOADINFO_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.IKNOWLEDGE_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.ALARM_URI, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.CONTACT_URI, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.MESSAGE_URI, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.ANTIOFF_URI, (String)null, (String[])null);\r
- this.cr.delete(ICContentProvider.UNREAD_MSG_URI, (String)null, (String[])null);\r
- }\r
-\r
- public void saveAlarm(ArrayList<Alarm> paramArrayList) {\r
- this.cr.delete(ICContentProvider.ALARM_URI, null, null);\r
- int i = paramArrayList.size();\r
- if (i != 0) {\r
- ContentValues[] arrayOfContentValues = new ContentValues[i];\r
- for (byte b = 0; b < i; b++) {\r
- Alarm alarm = paramArrayList.get(b);\r
- ContentValues contentValues = new ContentValues();\r
- arrayOfContentValues[b] = contentValues;\r
- contentValues.put("TIME", alarm.time);\r
- contentValues.put("WEEK", alarm.week);\r
- contentValues.put("RING", alarm.ring);\r
- contentValues.put("STATUS", alarm.status);\r
- contentValues.put("NAME", alarm.name);\r
- }\r
- this.cr.bulkInsert(ICContentProvider.ALARM_URI, arrayOfContentValues);\r
- }\r
- this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE"));\r
- }\r
-\r
- public void saveAntioff(ArrayList<Antioff> paramArrayList) {\r
- String str;\r
- Cursor cursor = this.cr.query(ICContentProvider.ANTIOFF_URI, null, null, null, null);\r
- if (cursor != null) {\r
- for (str = null; cursor.moveToNext(); str = cursor.getString(5));\r
- cursor.close();\r
- } else {\r
- str = null;\r
- }\r
- this.cr.delete(ICContentProvider.ANTIOFF_URI, null, null);\r
- int i = paramArrayList.size();\r
- if (i != 0) {\r
- ContentValues[] arrayOfContentValues = new ContentValues[i];\r
- for (byte b = 0; b < i; b++) {\r
- Antioff antioff = paramArrayList.get(b);\r
- ContentValues contentValues = new ContentValues();\r
- arrayOfContentValues[b] = contentValues;\r
- contentValues.put("START_TIME", antioff.start);\r
- contentValues.put("END_TIME", antioff.end);\r
- contentValues.put("WEEK", antioff.week);\r
- contentValues.put("STATUS", antioff.status);\r
- contentValues.put("CUR_SYS_STATUS", str);\r
- }\r
- this.cr.bulkInsert(ICContentProvider.ANTIOFF_URI, arrayOfContentValues);\r
- }\r
- this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE"));\r
- }\r
-\r
- public void saveContacts(final ArrayList<Contact> contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) {\r
- synchronized(this){}\r
-\r
- try {\r
- long currenttime = SystemClock.elapsedRealtime();\r
- if (currenttime - lastUpdateTime > 1000L) {\r
- this.saveContactsImpl(contactArray, admin, care,call, partner, video,sos);\r
- lastUpdateTime = currenttime;\r
- } else {\r
- new Handler().postDelayed(new Runnable() {\r
- @Override\r
- public void run() {\r
- DBHelper.this.saveContacts(contactArray, admin, care,call, partner, video,sos);\r
- }\r
- }, 1000);\r
- }\r
- } finally {\r
- ;\r
- }\r
-\r
- }\r
-\r
- public void saveNoticeContent(ArrayList<NoticeContent> var1) {\r
- this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null);\r
- if (var1 != null) {\r
- int var3 = var1.size();\r
- if (var3 != 0) {\r
- ContentValues[] var4 = new ContentValues[var3];\r
-\r
- for(int var2 = 0; var2 < var3; ++var2) {\r
- NoticeContent var5 = (NoticeContent)var1.get(var2);\r
- ContentValues var6 = new ContentValues();\r
- var4[var2] = var6;\r
- var6.put("TIME", var5.noticeTime);\r
- var6.put("NAME", var5.noticeName);\r
- var6.put("NUMBER", var5.noticeNumber);\r
- var6.put("ID", var5.noticeID);\r
- var6.put("CATEGORY", var5.noticeCategory);\r
- var6.put("FREQUENCY", var5.noticeFrequency);\r
- var6.put("CONTENT", var5.noticeContent);\r
- }\r
-\r
- this.cr.bulkInsert(ICContentProvider.NOTICE_URL, var4);\r
- }\r
- }\r
-\r
- this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE"));\r
- }\r
-\r
- public void saveSilent(ArrayList<Silent> var1) {\r
- Cursor var5 = this.cr.query(ICContentProvider.SILENT_URI, (String[])null, (String)null, (String[])null, (String)null);\r
- String var4;\r
- if (var5 != null) {\r
- for(var4 = null; var5.moveToNext(); var4 = var5.getString(5)) {\r
- }\r
-\r
- var5.close();\r
- } else {\r
- var4 = null;\r
- }\r
-\r
- this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null);\r
- int var3 = var1.size();\r
- if (var3 != 0) {\r
- ContentValues[] var8 = new ContentValues[var3];\r
-\r
- for(int var2 = 0; var2 < var3; ++var2) {\r
- Silent var6 = (Silent)var1.get(var2);\r
- ContentValues var7 = new ContentValues();\r
- var8[var2] = var7;\r
- var7.put("START_TIME", var6.start);\r
- var7.put("END_TIME", var6.end);\r
- var7.put("WEEK", var6.week);\r
- var7.put("STATUS", var6.status);\r
- var7.put("CUR_SYS_STATUS", var4);\r
- }\r
-\r
- this.cr.bulkInsert(ICContentProvider.SILENT_URI, var8);\r
- }\r
-\r
- }\r
-\r
- public void saveStheartRateList(ArrayList<StheartRate> var1) {\r
- StringBuilder var4 = new StringBuilder();\r
- var4.append("stheartRateListSize=");\r
- var4.append(var1.size());\r
- var4.append("stheartRateList=");\r
- var4.append(var1.toString());\r
- ICLogger.i(var4.toString());\r
- this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null);\r
- int var3 = var1.size();\r
- if (var3 != 0) {\r
- ContentValues[] var7 = new ContentValues[var3];\r
-\r
- for(int var2 = 0; var2 < var3; ++var2) {\r
- StheartRate var5 = (StheartRate)var1.get(var2);\r
- ContentValues var6 = new ContentValues();\r
- var7[var2] = var6;\r
- var6.put("START_TIME", var5.start);\r
- var6.put("END_TIME", var5.end);\r
- var6.put("WEEK", var5.week);\r
- var6.put("STATUS", var5.status);\r
- var6.put("INTERVAL", var5.interval);\r
- }\r
-\r
- this.cr.bulkInsert(ICContentProvider.STHEART_RATE_URL, var7);\r
- }\r
-\r
- this.context.sendBroadcast(new Intent("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"));\r
- }\r
-\r
- public void saveUrlDownloadPic(String var1) {\r
- String[] var8 = var1.split(",");\r
-\r
- for(int var2 = 0; var2 < var8.length; ++var2) {\r
- ContentResolver var5 = this.cr;\r
- Uri var6 = ICContentProvider.URLDOWNLOADPIC_URL;\r
- String var7 = var8[var2];\r
- Cursor var9 = var5.query(var6, new String[]{"_id"}, "URL=?", new String[]{var7}, (String)null);\r
- long var3;\r
- if (var9 != null) {\r
- if (var9.moveToNext()) {\r
- var3 = var9.getLong(0);\r
- } else {\r
- var3 = -1L;\r
- }\r
-\r
- var9.close();\r
- } else {\r
- var3 = -1L;\r
- }\r
-\r
- if (var3 == -1L) {\r
- ContentValues var10 = new ContentValues();\r
- var10.put("URL", var8[var2]);\r
- this.cr.insert(ICContentProvider.URLDOWNLOADPIC_URL, var10);\r
- }\r
- }\r
-\r
- }\r
-\r
- public void saveWeather(Weather var1) {\r
- this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null);\r
- ContentValues var2 = new ContentValues();\r
- var2.put("WEATHER_TYPE", var1.weatherType);\r
- var2.put("MIN_TEMPERATURE", var1.min_Temperature);\r
- var2.put("MAX_TEMPERATURE", var1.max_Temperature);\r
- var2.put("CUR_TEMPERATURE", var1.cur_Temperature);\r
- var2.put("WEATHER_INDEX", var1.weatherIndex);\r
- var2.put("WEATHER_INFO", var1.weatherInfo);\r
- Uri var4 = this.cr.insert(ICContentProvider.WEATHER_URL, var2);\r
- StringBuilder var3 = new StringBuilder();\r
- var3.append("升级天气==");\r
- var3.append(var1.toString());\r
- var3.append("条目=");\r
- var3.append(var4);\r
- ICLogger.i(var3.toString());\r
- }\r
-\r
- public void upDateMonitor(final String var1, final String var2) {\r
- synchronized(this){}\r
-\r
- try {\r
- long var3 = SystemClock.elapsedRealtime();\r
- if (var3 - lastUpdateTime > 1000L) {\r
- this.upDateMonitorImpl(var1, var2);\r
- lastUpdateTime = var3;\r
- } else {\r
- new Handler().postDelayed(new Runnable() {\r
- @Override\r
- public void run() {\r
- DBHelper.this.upDateMonitor(var1, var2);\r
- }\r
- },1000);\r
- }\r
- } finally {\r
- ;\r
- }\r
-\r
- }\r
-\r
- public void upDateStatus(int var1) {\r
- ContentValues var2 = new ContentValues();\r
- var2.put("IS_ALARM", var1);\r
- this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null);\r
- }\r
-\r
- public void upDateStatus(String var1) {\r
- ContentValues var2 = new ContentValues();\r
- var2.put("IS_SILENCE", var1);\r
- this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null);\r
- }\r
-\r
- public void upDateorInsertDeviceStatus(String var1) {\r
- Cursor var2 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null);\r
- ContentValues var3 = new ContentValues();\r
- var3.put("IS_SILENCE", var1);\r
- if (var2 != null) {\r
- if (var2.getCount() == 0) {\r
- this.cr.insert(ICContentProvider.DEVICESTATUS_URL, var3);\r
- return;\r
- }\r
- this.cr.update(ICContentProvider.DEVICESTATUS_URL, var3, (String)null, (String[])null);\r
- }\r
-\r
- }\r
-\r
-\r
- public void updateMessage(Content var1, Uri var2) {\r
- ContentValues var3 = new ContentValues();\r
- var3.put("CATEGORY", var1.category);\r
- var3.put("CONTENT", var1.content);\r
- var3.put("PREVIEW", var1.preview);\r
- var3.put("STATUS", var1.status);\r
- var3.put("IN_OR_OUT", var1.inOrOut);\r
- var3.put("CONTACT_CATEGORY", var1.contactCategory);\r
- var3.put("CONTACT_NUMBER", var1.contactNumber);\r
- var3.put("SERVER_TIME", var1.serverTime);\r
- var3.put("LOCAL_TIME", var1.localTime);\r
- this.cr.update(var2, var3, (String)null, (String[])null);\r
- }\r
-\r
-\r
- public void insertSleepRecord(SleepRecord sr){\r
- /*每次打点的记录表 SLEEP_DATE 代表记录睡眠的日期,例如 22日上午7:00的计入到21日的睡眠记录中。 DATE代表记录的时间,此出应该等于上文的 22日 7:00 */\r
-// sqlite.execSQL("CREATE TABLE SLEEP_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SLEEP_DATE TEXT,DATE TEXT, TIME TEXT,STEPCOUNT INTEGER ,ROLLTIMES INTEGER ,STATUS TEXT )");\r
- ContentValues values=new ContentValues();\r
- values.put("DATE",sr.date);\r
- values.put("SLEEP_DATE",sr.sleep_date);\r
- values.put("STEPCOUNT",sr.stepCount);\r
- values.put("STATUS",sr.status);\r
- this.cr.insert( ICContentProvider.SLEEP_RECORDS_URI, values);\r
- }\r
-\r
-\r
- public ArrayList<SleepRecord> querySleepRecord(String sleep_date) {\r
- ArrayList sleeprecordList = new ArrayList();\r
- ContentResolver pcr = this.cr;\r
- Uri table = ICContentProvider.SLEEP_RECORDS_URI;\r
- StringBuilder where = new StringBuilder();\r
- where.append("SLEEP_DATE like '");\r
- where.append(sleep_date);\r
- where.append("'");\r
- Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
- if (cr_sleeprecord != null) {\r
- while (true) {\r
- if (!cr_sleeprecord.moveToNext()) {\r
- cr_sleeprecord.close();\r
- break;\r
- }\r
- sleeprecordList.add(new SleepRecord(\r
- cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("DATE")), cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("SLEEP_DATE")), cr_sleeprecord.getInt(cr_sleeprecord.getColumnIndex("STEPCOUNT"))));\r
- }\r
- }\r
- return sleeprecordList;\r
- }\r
- public void updateSleepInfo(SleepInfo si){\r
- /*计算后的分值,每天会在睡眠结束后计算Records获得*/\r
-// sqlite.execSQL("CREATE TABLE SLEEP_STATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT , DEEP_SLEEP INTEGER , LIGHT_SLEEP INTEGER ,SCORE INTEGER )");\r
-\r
- ContentValues values = new ContentValues();\r
- values.put("DATE",si.getCurrentDate());\r
- values.put("DEEP_SLEEP",si.getDeepsleep_minutes());\r
- values.put("LIGHT_SLEEP",si.getLightsleep_minutes());\r
- values.put("SCORE",si.getScore());\r
- this.cr.insert( ICContentProvider.SLEEP_STATUS_URI, values);\r
- }\r
-\r
-\r
- public int querySleepScore(String dateyyyyMMddHHmmss){\r
-\r
- ContentResolver pcr = this.cr;\r
- Uri table = ICContentProvider.SLEEP_STATUS_URI;\r
- StringBuilder where = new StringBuilder();\r
- where.append("DATE like '");\r
- where.append(dateyyyyMMddHHmmss);\r
- where.append("'");\r
- ICLogger.i("Query SleepScore "+where);\r
- Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
- if (cr_sleeprecord != null) {\r
- int score=0;\r
- if (cr_sleeprecord.getCount()> 0) {\r
- if (cr_sleeprecord.moveToFirst()) {\r
- int index = cr_sleeprecord.getColumnIndex("SCORE");\r
- score = cr_sleeprecord.getInt(4);\r
- ICLogger.i("get SleepScore "+score + " column index "+index);\r
- }\r
-\r
- }\r
- cr_sleeprecord.close();\r
- ICLogger.i("get SleepScore "+ score);\r
- return score;\r
- }\r
- return 0;\r
- }\r
- public int deleteSleepData(){\r
- this.cr.delete(ICContentProvider.SLEEP_RECORDS_URI, (String)null, (String[])null);\r
- return 0;\r
- }\r
- public void insertEventMsg(String dateyyyyMMddHHmmss,int event_type,String event_name){\r
- //日志表格,存储开机关机,低电报警等消息。。。\r
-// sqlite.execSQL("CREATE TABLE EVENT_MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT , EVENT_TYPE INTEGER, EVENT_NAME TEXT, TIME TEXT )");\r
-\r
- ContentValues values = new ContentValues();\r
- values.put("EVENT_TYPE",event_type);\r
- values.put("EVENT_NAME",event_name);\r
- values.put("TIME",dateyyyyMMddHHmmss);\r
- this.cr.insert( ICContentProvider.EVENT_MESSAGE_URI, values);\r
-\r
- }\r
-\r
-//sqlite.execSQL("CREATE TABLE PROTOCOL_CMD_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT , FLAG INTEGER, DATE TEXT, TIME TEXT ,TOPIC TEXT,CMD TEXT )");\r
-\r
- public long insertCMDRecord(StringMessage msg){\r
- ContentValues values = new ContentValues();\r
- values.put("FLAG",msg.haveSent());\r
- if(msg.getDate()==null || msg.getTime()==null)\r
- msg.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss());\r
- values.put("DATE",msg.getDate());\r
- values.put("TIME",msg.getTime());\r
- values.put("TOPIC",msg.cmd());\r
- values.put("CMD",msg.isFromCache());\r
- long raw_contactID = ContentUris.parseId(cr.insert(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, values));\r
- if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " insert db " +raw_contactID+" "+msg.getDate()+msg.getTime()+" "+ msg.cmd()+" "+msg.isFromCache());\r
-\r
- return raw_contactID;\r
- }\r
-\r
-\r
- //\r
- public void updateCMDRecord(int id, int flag){\r
-\r
- String WhereClause=null;\r
- if (id>=0) {\r
- WhereClause=new StringBuilder("_id=").append(id).toString();\r
-\r
- ContentValues flagcontent = new ContentValues();\r
- flagcontent.put("FLAG", flag);\r
- this.cr.update(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, flagcontent, WhereClause, (String[])null);\r
- }\r
- }\r
-\r
- public void clearCMDRecordsHaveSent(){\r
- ContentResolver pcr = this.cr;\r
- Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
- StringBuilder where = new StringBuilder();\r
- where.append("FLAG>1");\r
- Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
- if(cmdrecords!=null){\r
- if(cmdrecords.getCount()>500) {\r
- pcr.delete(table, where.toString(), (String[]) null);\r
- ICLogger.i("delete cmdRecords have sent ");\r
- }else{\r
- ICLogger.i("cmdRecords less than 500 , skip delete ");\r
- }\r
- }\r
- }\r
-\r
- public StringMessage queryNotSentCMDRecord(){\r
- ContentResolver pcr = this.cr;\r
- Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
- StringBuilder where = new StringBuilder();\r
- where.append("FLAG=0");\r
- //ICLogger.i("Query cmdRecords "+where);\r
- Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
- StringMessage msg=null;\r
- if (cmdrecords != null) {\r
- int score=0;\r
- if (cmdrecords.getCount()> 0) {\r
- if (cmdrecords.moveToFirst()) {\r
- String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC"));\r
- String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD"));\r
- String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE"));\r
- String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME"));\r
- int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG"));\r
- int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id"));\r
-\r
- msg=new StringMessage(new String[]{topic});\r
- msg.refresh(cmd);\r
- msg.setDate(date,time);\r
- msg.setSentFlag(flag);\r
- msg.setIndex(index);\r
- ICLogger.i("get cmd Record not sent _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd);\r
-\r
- }\r
- }\r
- cmdrecords.close();\r
-\r
- if (msg==null)\r
- ICLogger.i("no cmd record in not sent status !");\r
- }\r
- return msg;\r
- }\r
-\r
-\r
- public StringMessage queryWaitCMDRecord(){\r
- ContentResolver pcr = this.cr;\r
- Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
- StringBuilder where = new StringBuilder();\r
- where.append("FLAG=1");\r
- // ICLogger.i("Query cmdRecords "+where);\r
- Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
- StringMessage msg=null;\r
- if (cmdrecords != null) {\r
- int score=0;\r
- if (cmdrecords.getCount()> 0) {\r
- if (cmdrecords.moveToFirst()) {\r
- String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC"));\r
- String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD"));\r
- String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE"));\r
- String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME"));\r
- int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG"));\r
- int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id"));\r
-\r
- msg=new StringMessage(new String[]{topic});\r
- msg.refresh(cmd);\r
- msg.setDate(date,time);\r
- msg.setSentFlag(flag);\r
- msg.setIndex(index);\r
- ICLogger.i("get cmd Record wait response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd);\r
-\r
- }\r
- }\r
- cmdrecords.close();\r
-\r
- if (msg==null)\r
- ICLogger.i("no cmd record in wait status !");\r
- }\r
- return msg;\r
- }\r
-\r
-\r
- public StringMessage queryDiscardCMDRecord(){\r
- ContentResolver pcr = this.cr;\r
- Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI;\r
- StringBuilder where = new StringBuilder();\r
- where.append("FLAG=3");\r
- // ICLogger.i("Query cmdRecords "+where);\r
- Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null);\r
- StringMessage msg=null;\r
- if (cmdrecords != null) {\r
- int score=0;\r
- if (cmdrecords.getCount()> 0) {\r
- if (cmdrecords.moveToFirst()) {\r
- String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC"));\r
- String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD"));\r
- String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE"));\r
- String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME"));\r
- int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG"));\r
- int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id"));\r
-\r
- msg=new StringMessage(new String[]{topic});\r
- msg.refresh(cmd);\r
- msg.setDate(date,time);\r
- msg.setSentFlag(flag);\r
- msg.setIndex(index);\r
- ICLogger.i("get cmd Record discarded response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd);\r
- }\r
- }\r
- cmdrecords.close();\r
-\r
- if (msg==null)\r
- ICLogger.i("no cmd record in wait status !");\r
- }\r
- return msg;\r
- }\r
-\r
-\r
-\r
-}\r
+
+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<Contact> 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<Contact> 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<Contact> 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<Contact> 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<Alarm> 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<Antioff> 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<NoticeContent> 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<Silent> 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<StheartRate> 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<NotificationParam> 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<Alarm> 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<Antioff> 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<Contact> 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<NoticeContent> 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<Silent> 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<StheartRate> 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<SleepRecord> 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;
+ }
+
+
+
+}
@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) {
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);
-package com.enqualcomm.support.utils;\r
-\r
-import android.annotation.TargetApi;\r
-import android.content.Context;\r
-import android.content.Intent;\r
-import android.content.pm.PackageInfo;\r
-import android.content.pm.PackageManager;\r
-import android.graphics.Bitmap;\r
-import android.graphics.BitmapFactory;\r
-import android.media.MediaPlayer;\r
-import android.net.ConnectivityManager;\r
-import android.net.NetworkInfo;\r
-import android.net.wifi.WifiConfiguration;\r
-import android.net.wifi.WifiManager;\r
-import android.os.Build;\r
-import android.os.Environment;\r
-import android.os.Handler;\r
-import android.os.Looper;\r
-import android.os.PowerManager;\r
-import android.widget.Toast;\r
-\r
-\r
-import java.io.BufferedInputStream;\r
-import java.io.BufferedOutputStream;\r
-import java.io.ByteArrayOutputStream;\r
-import java.io.ByteArrayInputStream;\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
-import java.io.UnsupportedEncodingException;\r
-import java.lang.reflect.Method;\r
-import java.net.InetAddress;\r
-import java.nio.ByteBuffer;\r
-import java.nio.charset.Charset;\r
-import java.util.ArrayList;\r
-import java.util.Enumeration;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.UUID;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-import java.util.zip.CRC32;\r
-import java.util.zip.CheckedOutputStream;\r
-import java.util.zip.ZipEntry;\r
-import java.util.zip.ZipFile;\r
-import java.util.zip.ZipOutputStream;\r
-\r
-\r
-import com.enqualcomm.support.Config;\r
-import com.enqualcomm.support.CoreService;\r
-import com.enqualcomm.support.bean.Runtime;\r
-import com.enqualcomm.support.bean.VoiceContent;\r
-import com.enqualcomm.support.bean.voicePacket;\r
-import com.enqualcomm.support.service.Deliver;\r
-import com.ic.protocols.protocolAPIHelper;\r
-\r
-import static android.content.Context.CONNECTIVITY_SERVICE;\r
-import static android.content.Context.WIFI_SERVICE;\r
-import static chestnut.utils.FileUtils.closeIO;\r
-import static chestnut.utils.FileUtils.createOrExistsDir;\r
-import static chestnut.utils.FileUtils.createOrExistsFile;\r
-import static chestnut.utils.StringUtils.isSpace;\r
-\r
-public class Util {\r
- public static Charset UTF_16 = Charset.forName("UTF-16LE");\r
- \r
- public static Charset UTF_8 = Charset.forName("UTF-8");\r
-\r
- private static String FT6236U_upgrade_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftsfwupdate";\r
- private static String FT6236U_getver_dev="/sys/devices/platform/soc/soc:ap-apb/70800000.i2c/i2c-3/3-0038/ftstpfwver";\r
-\r
- public static void mSleep(int ms){\r
- try {\r
- Thread.yield();\r
- Thread.sleep(ms);\r
- }catch ( Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- }\r
-\r
- public static void checkMesageNeedNotifi(String msg,Runtime runtime){\r
-\r
- if(msg!=null ) {\r
- //msg 格式 index,20201111182000,003f99302994\r
- String list[]= msg.split(",");\r
- if(list.length==3) {\r
- String index=list[0];\r
- String datetime=list[1];\r
- String txtmsg=list[2];\r
-\r
- long lasttime_inms=System.currentTimeMillis()-TimeUtil.parseDatetiime(datetime).getTime();\r
- ICLogger.i("有消息"+lasttime_inms/1000 +"秒未读!");\r
- if ((lasttime_inms>8*60*1000 && lasttime_inms<=13*60*1000) //在10分钟,20分钟时都提醒一次。\r
- ||(lasttime_inms>18*60*1000 && lasttime_inms<=23*60*1000))\r
- {\r
-\r
- if (!Config.custom_name.equals("VitracK") ){\r
- if(Config.protocol_no==Config.PROTOCOL_JIAI){\r
- txtmsg=Util.decodeUnicode2Utf8(txtmsg);\r
- }else {\r
- txtmsg = Util.UrlGB2312ToUTF8(txtmsg);\r
- }\r
- }\r
- if(Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN"))\r
- {\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_UNREADMSG);\r
- // Config.setLastUnReadMessage(CoreService.getInstance(),"");\r
- Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
-\r
- }\r
- runtime.getContextProxy().sendMsgBroadcast(txtmsg, 3); //msgType 3需要回复,0不需要回复\r
-\r
- //runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0); //msgType 3需要回复,0不需要回复\r
-\r
-\r
- }\r
-\r
-\r
- }else{\r
- ICLogger.i("UnreadMsg format error !");\r
- }\r
- }\r
- }\r
-\r
- public static boolean installed(Context context,String appPackageName) {\r
- PackageManager packageManager = context.getPackageManager();// 获取packagemanager\r
- List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息\r
- for (PackageInfo pkif : pinfo) {\r
- String pn = pkif.packageName;\r
- if (appPackageName.equals(pn)) {\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
- public static boolean is_FT6236U_upgrade_firmware_support(){\r
- boolean ret=getSystemProperties("product.tp.upgradeable").toLowerCase().equals("true");\r
- return ret;\r
- }\r
-\r
- public static boolean FT6236U_upgrade_firmware(){\r
- boolean ret=true;\r
- try {\r
- File nod=new File(FT6236U_upgrade_dev);\r
- ICLogger.i("can upgrade ? "+nod.exists()+" "+nod.canWrite()+"\n");\r
- FileOutputStream fos=new FileOutputStream(nod);\r
- fos.write(new byte[]{'1'});\r
- fos.close();\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- ret=false;\r
- }\r
- return ret;\r
- }\r
-\r
- public static String FT6236U_getVer(){\r
- String ret="not found";\r
- try {\r
- File nod=new File(FT6236U_getver_dev);\r
- FileInputStream fis=new FileInputStream(nod);\r
- byte buf[]=new byte[20];\r
- int bytes_readed=fis.read(buf,0,buf.length);\r
- fis.close();\r
- char charArray[]=new char[20];\r
- for (int i=0;i<bytes_readed;i++){\r
- charArray[i]=(char)buf[i];\r
- }\r
- ret=String.valueOf(charArray,0,bytes_readed);\r
- } catch (Exception e) {\r
- ICLogger.e(e.getMessage(),e);\r
- e.printStackTrace();\r
- }\r
-\r
- return ret;\r
- }\r
- /**\r
- * 解析域名获取IP数组\r
- * @param host\r
- * @return\r
- */\r
- public static String parseHostGetIPAddress(String host) {\r
- StringBuilder serverip=new StringBuilder("");\r
- try {\r
-\r
-\r
- InetAddress[] inetAddressArr = InetAddress.getAllByName(host);\r
- if (inetAddressArr != null && inetAddressArr.length > 0) {\r
- String[] ipAddressArr = new String[inetAddressArr.length];\r
-\r
- for (int i = 0; i < inetAddressArr.length; i++) {\r
- String ip=inetAddressArr[i].getHostAddress();\r
- serverip.append( ip);\r
- ipAddressArr[i]=ip;\r
- }\r
- }\r
- } catch (Exception e) {\r
-// e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- ICLogger.i("GetHostIpByName Failed " + host);\r
- return null;\r
- }\r
- return serverip.toString();\r
- }\r
- /**\r
- *\r
- * 此函数专门给L02 协议使用 ,解析名字用\r
- * @param unicodestr\r
- * @return\r
- */\r
- public static String decodeUnicode2Utf8(String unicodestr) {\r
- int len = unicodestr.length();\r
- //由于协议中Unicode 都是不带\\u 字头的,和网络中常见的不同,直接4个字节代表一个unicode字。\r
- //如果不是4的整倍数,则证明字符串格式有误,取消转换\r
- if (len%4==0) {\r
- //先给每个unicode字符都加上\\u字头,然后再进行转换。\r
- StringBuffer sb = new StringBuffer();\r
- for (int i = 0; i < len; i += 4) {\r
- sb.append("\\u").append(unicodestr.substring(i, i + 4));\r
- }\r
- try {\r
- return decodeUnicode2Utf8Common(sb.toString());\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
- return "";\r
- }\r
- }else{\r
- return "";\r
- }\r
-\r
- }\r
-\r
- public static String decodeUnicode2Utf8Common(String unicodestr) {\r
- char aChar;\r
- int len = unicodestr.length();\r
- StringBuffer outBuffer = new StringBuffer(len);\r
- for (int x = 0; x < len; ) {\r
- aChar = unicodestr.charAt(x++);\r
- if (aChar == '\\') {\r
- aChar = unicodestr.charAt(x++);\r
- if (aChar == 'u') {\r
- // Read the xxxx\r
- int value = 0;\r
- for (int i = 0; i < 4; i++) {\r
- aChar = unicodestr.charAt(x++);\r
- switch (aChar) {\r
- case '0':\r
- case '1':\r
- case '2':\r
- case '3':\r
- case '4':\r
- case '5':\r
- case '6':\r
- case '7':\r
- case '8':\r
- case '9':\r
- value = (value << 4) + aChar - '0';\r
- break;\r
- case 'a':\r
- case 'b':\r
- case 'c':\r
- case 'd':\r
- case 'e':\r
- case 'f':\r
- value = (value << 4) + 10 + aChar - 'a';\r
- break;\r
- case 'A':\r
- case 'B':\r
- case 'C':\r
- case 'D':\r
- case 'E':\r
- case 'F':\r
- value = (value << 4) + 10 + aChar - 'A';\r
- break;\r
- default:\r
- throw new IllegalArgumentException(\r
- "Malformed \\uxxxx encoding.");\r
- }\r
-\r
- }\r
- outBuffer.append((char) value);\r
- } else {\r
- if (aChar == 't')\r
- aChar = '\t';\r
- else if (aChar == 'r')\r
- aChar = '\r';\r
- else if (aChar == 'n')\r
- aChar = '\n';\r
- else if (aChar == 'f')\r
- aChar = '\f';\r
- outBuffer.append(aChar);\r
- }\r
- } else\r
- outBuffer.append(aChar);\r
- }\r
- return outBuffer.toString();\r
-\r
-\r
- }\r
- public static String getSystemProperties(String prop){\r
-\r
- String str ="";\r
- Class clazz = null;\r
- try {\r
- clazz = Class.forName("android.os.SystemProperties");\r
- Method get=clazz.getMethod("get", new Class[] { String.class });\r
- str = (String)get.invoke(clazz, new Object[] { prop });\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- return str;\r
- }\r
- public static String getSystemProperties(String prop,String defaultValue){\r
-\r
- String str =defaultValue;\r
- Class clazz = null;\r
- try {\r
- clazz = Class.forName("android.os.SystemProperties");\r
- Method get=clazz.getMethod("get", new Class[] { String.class });\r
- str = (String)get.invoke(clazz, new Object[] { prop });\r
- if(str==null || (str!=null && str.trim().isEmpty())){\r
- str=defaultValue;\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- return str;\r
- }\r
- public static int getSystemPropertiesInt(String prop,int defaultValue){\r
-\r
- int ret=defaultValue;\r
- String str ="";\r
- Class clazz = null;\r
- try {\r
- clazz = Class.forName("android.os.SystemProperties");\r
- Method get=clazz.getMethod("get", new Class[] { String.class });\r
- str = (String)get.invoke(clazz, new Object[] { prop });\r
- if (str!=null && str.trim().length()>0 && isNumeric(str)){\r
- ret=Integer.parseInt(str);\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- return ret;\r
- }\r
-\r
- public static boolean isNumeric(String str){\r
- Pattern pattern = Pattern.compile("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");\r
- Matcher isNum = pattern.matcher(str);\r
- if( !isNum.matches() ){\r
- return false;\r
- }\r
- return true;\r
- }\r
- static public void setSystemProperties(String key, int defaultValue) {\r
-\r
- String value = String.valueOf(defaultValue);\r
-\r
- try {\r
-\r
- Class<?> c = Class.forName("android.os.SystemProperties");\r
-\r
- Method set = c.getMethod("set", String.class, String.class );\r
-\r
- set.invoke(c, key, value );\r
-\r
- } catch (Exception e) {\r
-\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- }\r
- static public void setSystemProperties(String key, String defaultValue) {\r
-\r
- String value = defaultValue;\r
-\r
- try {\r
-\r
- Class<?> c = Class.forName("android.os.SystemProperties");\r
-\r
- Method set = c.getMethod("set", String.class, String.class );\r
-\r
- set.invoke(c, key, value );\r
-\r
- } catch (Exception e) {\r
-\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- }\r
- public static WifiConfiguration GetconfigWifiInfo(Context context, String ssid, String pwd, String encryptType) {\r
- WifiConfiguration wifiConfiguration=null;\r
- StringBuilder stringBuilder;\r
- WifiManager wifiManager = (WifiManager)context.getSystemService(WIFI_SERVICE);\r
- if (wifiManager != null && wifiManager.getConfiguredNetworks()!=null) {\r
- Iterator it = wifiManager.getConfiguredNetworks().iterator();\r
-\r
- while(it.hasNext()) {\r
- wifiConfiguration = (WifiConfiguration)it.next();\r
- if (wifiConfiguration != null) {\r
- String ssid_tmp = wifiConfiguration.SSID;\r
- stringBuilder= new StringBuilder();\r
- stringBuilder.append("\"");\r
- stringBuilder.append(ssid);\r
- stringBuilder.append("\"");\r
- if (ssid_tmp.equals(stringBuilder.toString())) {\r
- return wifiConfiguration;\r
- }\r
- }\r
- }\r
- }\r
-\r
-\r
-\r
- WifiConfiguration retWiFiConfigration = wifiConfiguration;\r
- if (retWiFiConfigration == null) {\r
- retWiFiConfigration = new WifiConfiguration();\r
- }\r
-\r
- retWiFiConfigration.allowedAuthAlgorithms.clear();\r
- retWiFiConfigration.allowedGroupCiphers.clear();\r
- retWiFiConfigration.allowedKeyManagement.clear();\r
- retWiFiConfigration.allowedPairwiseCiphers.clear();\r
- retWiFiConfigration.allowedProtocols.clear();\r
- stringBuilder = new StringBuilder();\r
- stringBuilder.append("\"");\r
- stringBuilder.append(ssid);\r
- stringBuilder.append("\"");\r
- retWiFiConfigration.SSID = stringBuilder.toString();\r
- if ("none".equals(encryptType)) {\r
- retWiFiConfigration.allowedKeyManagement.set(0);\r
- } else if ("wep".equals(encryptType)) {\r
- retWiFiConfigration.hiddenSSID = true;\r
- stringBuilder = new StringBuilder();\r
- stringBuilder.append("\"");\r
- stringBuilder.append(pwd);\r
- stringBuilder.append("\"");\r
- retWiFiConfigration.wepKeys[0] = stringBuilder.toString();\r
- retWiFiConfigration.allowedAuthAlgorithms.set(1);\r
- retWiFiConfigration.allowedGroupCiphers.set(3);\r
- retWiFiConfigration.allowedGroupCiphers.set(2);\r
- retWiFiConfigration.allowedGroupCiphers.set(0);\r
- retWiFiConfigration.allowedGroupCiphers.set(1);\r
- retWiFiConfigration.allowedKeyManagement.set(0);\r
- retWiFiConfigration.wepTxKeyIndex = 0;\r
- } else if ("psk".equals(encryptType)) {\r
- stringBuilder = new StringBuilder();\r
- stringBuilder.append("\"");\r
- stringBuilder.append(pwd);\r
- stringBuilder.append("\"");\r
- retWiFiConfigration.preSharedKey = stringBuilder.toString();\r
- retWiFiConfigration.hiddenSSID = true;\r
- retWiFiConfigration.allowedAuthAlgorithms.set(0);\r
- retWiFiConfigration.allowedGroupCiphers.set(2);\r
- retWiFiConfigration.allowedKeyManagement.set(1);\r
- retWiFiConfigration.allowedPairwiseCiphers.set(1);\r
- retWiFiConfigration.allowedGroupCiphers.set(3);\r
- retWiFiConfigration.allowedPairwiseCiphers.set(2);\r
- retWiFiConfigration.status = 2;\r
- }\r
-\r
- return retWiFiConfigration;\r
- }\r
-\r
- public static String byte2hex(byte[] var0) {\r
- if (var0 == null) {\r
- throw new IllegalArgumentException("Argument b ( byte array ) is null! ");\r
- } else {\r
- String var1 = "";\r
-\r
- for(int var2 = 0; var2 < var0.length; ++var2) {\r
- String var3 = Integer.toHexString(var0[var2] & 255);\r
- StringBuilder var4;\r
- if (var3.length() == 1) {\r
- var4 = new StringBuilder();\r
- var4.append(var1);\r
- var4.append("0");\r
- var4.append(var3);\r
- var1 = var4.toString();\r
- } else {\r
- var4 = new StringBuilder();\r
- var4.append(var1);\r
- var4.append(var3);\r
- var1 = var4.toString();\r
- }\r
- }\r
-\r
- return var1.toUpperCase();\r
- }\r
- }\r
-\r
- public static boolean checkNetwork(Context var0) {\r
- NetworkInfo var2 = ((ConnectivityManager)var0.getSystemService(CONNECTIVITY_SERVICE)).getActiveNetworkInfo();\r
- boolean var1;\r
- if (var2 != null && var2.isConnected()) {\r
- var1 = true;\r
- } else {\r
- var1 = false;\r
- }\r
-\r
- return var1;\r
- }\r
-\r
- public static Method connectWifiByReflectMethod(Context var0, int var1) {\r
- WifiManager var2 = (WifiManager)var0.getSystemService(WIFI_SERVICE);\r
- Method[] var3;\r
- int var4;\r
- int var5;\r
- Method var6;\r
- Method var7;\r
- Class[] var8;\r
- Method var11;\r
- StringBuilder var12;\r
-\r
- ICLogger.i("connectWifiByReflectMethod road 1");\r
- var3 = var2.getClass().getDeclaredMethods();\r
- var4 = var3.length;\r
- var11 = null;\r
-\r
- for(var5 = 0; var5 < var4; var11 = var7) {\r
- var6 = var3[var5];\r
- var7 = var11;\r
- if ("connect".equalsIgnoreCase(var6.getName())) {\r
- var8 = var6.getParameterTypes();\r
- var7 = var11;\r
- if (var8 != null) {\r
- var7 = var11;\r
- if (var8.length > 0) {\r
- var7 = var11;\r
- if ("int".equalsIgnoreCase(var8[0].getName())) {\r
- var7 = var6;\r
- }\r
- }\r
- }\r
- }\r
-\r
- ++var5;\r
- }\r
-\r
- var7 = var11;\r
- if (var11 != null) {\r
- try {\r
- var11.invoke(var2, var1, null);\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- var12 = new StringBuilder();\r
- var12.append("connectWifiByReflectMethod Android ");\r
- var12.append(Build.VERSION.SDK_INT);\r
- var12.append(" error!");\r
- ICLogger.i(var12.toString());\r
- return null;\r
- }\r
-\r
- var7 = var11;\r
- }\r
-\r
- return var7;\r
- }\r
- \r
-\r
-\r
- \r
- public static int getDuration(String amrfilePath) {\r
- if (amrfilePath != null) {\r
- double d1;\r
- MediaPlayer mediaPlayer = new MediaPlayer();\r
- try {\r
- mediaPlayer.setDataSource(amrfilePath);\r
- mediaPlayer.prepare();\r
- int i = mediaPlayer.getDuration();\r
- d1 = i;\r
- mediaPlayer.release();\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- mediaPlayer.release();\r
- d1 = 1000.0D;\r
- } finally {}\r
- return (int)Math.ceil(d1 / 1000.0D);\r
- } \r
- double d = 1000.0D;\r
- return 0;\r
- }\r
- \r
- public static boolean LogfileExist(Runtime runtime,String logfilename){\r
- return new File(getLogfilePath(runtime,logfilename)).exists();\r
- }\r
- public static String getRecordfilePath(Runtime runtime,String recordfilename){\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(recordfilename);\r
- stringBuilder.append(".amr");\r
- File file = new File(runtime.getCacheDir(), stringBuilder.toString());\r
- return file.getAbsolutePath();\r
- }\r
-\r
- public static String getLogfilePath(Runtime runtime,String logfilename){\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(logfilename);\r
- stringBuilder.append(".txt");\r
- File file = new File(runtime.getCacheDir(), stringBuilder.toString());\r
- return file.getAbsolutePath();\r
- }\r
-\r
- public static void getDBFile() {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(StorageUtils.getExternalStorageLogDir());\r
- stringBuilder.append("/contacts.db");\r
- FileOutputUtil.copyFolder("/data/data/com.enqualcomm.support/databases", stringBuilder.toString());\r
- }\r
- private static int BUFFER_LEN=1024;\r
- /**\r
- * 压缩文件\r
- * @param srcFile 待压缩的源文件\r
- * @param rootPath 源文件的根路径\r
- * @param zos Zip输出流\r
- * @param comment 备注\r
- * @return 压缩成功返回true\r
- * @throws IOException\r
- */\r
- public static boolean zipFile(final File srcFile, String rootPath ,final ZipOutputStream zos ,final String comment) throws IOException {\r
- rootPath = rootPath + (isSpace(rootPath) ? "" : File.separator) + srcFile.getName();\r
-\r
- if (srcFile.isDirectory()) {\r
- File[] fileList = srcFile.listFiles();\r
- if (fileList == null || fileList.length <= 0) {\r
- ZipEntry entry = new ZipEntry(rootPath + '/');\r
- entry.setComment(comment);\r
- zos.putNextEntry(entry);\r
- zos.closeEntry();\r
- } else {\r
- for (File file : fileList) {\r
- if (!zipFile(file, rootPath, zos, comment)) return false;\r
- }\r
- }\r
- } else {\r
- InputStream is = null;\r
- try {\r
- is = new BufferedInputStream(new FileInputStream(srcFile));\r
- ZipEntry entry = new ZipEntry(rootPath);\r
- entry.setComment(comment);\r
- zos.putNextEntry(entry);\r
- byte buffer[] = new byte[BUFFER_LEN];\r
- int len;\r
- while ((len = is.read(buffer, 0, BUFFER_LEN)) != -1) {\r
- zos.write(buffer, 0, len);\r
- }\r
- zos.closeEntry();\r
- } finally {\r
- if(is!=null)\r
- closeIO(is);\r
- is=null;\r
- }\r
- }\r
- return true;\r
- }\r
- /**\r
- * Unzip the file by keyword.\r
- *\r
- * @param zipFile The ZIP file.\r
- * @param destDir The destination directory.\r
- * @param keyword The keyboard.\r
- * @return the unzipped files\r
- * @throws IOException if unzip unsuccessfully\r
- */\r
- public static List<File> unzipFileByKeyword(final File zipFile,final File destDir,final String keyword) throws IOException {\r
- if (zipFile == null || destDir == null) return null;\r
- List<File> files = new ArrayList<>();\r
- ZipFile zip = new ZipFile(zipFile);\r
- Enumeration<?> entries = zip.entries();\r
- try {\r
- if (isSpace(keyword)) {\r
- while (entries.hasMoreElements()) {\r
- ZipEntry entry = ((ZipEntry) entries.nextElement());\r
- String entryName = entry.getName();\r
- if (entryName.contains("../")) {\r
- ICLogger.log("ZipUtils", "it's dangerous!");//防止被利用漏洞恶意修改文件\r
- return files;\r
- }\r
- if (!unzipChildFile(destDir, files, zip, entry)) return files;\r
- }\r
- } else {\r
- while (entries.hasMoreElements()) {\r
- ZipEntry entry = ((ZipEntry) entries.nextElement());\r
- String entryName = entry.getName();\r
- if (entryName.contains("../")) {\r
- ICLogger.log("ZipUtils", "it's dangerous!");\r
- return files;\r
- }\r
- if (entryName.contains(keyword)) {\r
- if (!unzipChildFile(destDir, files, zip, entry)) return files;\r
- }\r
- }\r
- }\r
- } finally {\r
- zip.close();\r
- }\r
- return files;\r
- }\r
-\r
- /***\r
- *\r
- * @param filename 输入SD卡中的文件或者目录的 相对路径\r
- * @return 压缩有的文件\r
- */\r
- public static String zipfiles(String filename){\r
- String zipfile=filename;\r
-\r
- try {\r
- String sdcard= Environment.getExternalStorageDirectory().getAbsolutePath();\r
- File srcfile=new File(sdcard+"/"+filename);\r
- zipfile=sdcard+File.separator+srcfile.getName()+".zip";\r
- if (Util.zipFile(srcfile, "",\r
- new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zipfile),new CRC32()))\r
- , filename)) {\r
- }\r
- }catch (Exception e){\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- zipfile="";\r
- }\r
-\r
- return zipfile;\r
- }\r
-\r
- private static boolean unzipChildFile(final File destDir, final List<File> files, final ZipFile zip, final ZipEntry entry)\r
- throws IOException {\r
- File file = new File(destDir, entry.getName());\r
- files.add(file);\r
- if (entry.isDirectory()) {\r
- return createOrExistsDir(file);//创建文件夹\r
- } else {\r
- if (!createOrExistsFile(file)) return false;\r
- InputStream in = null;\r
- OutputStream out = null;\r
- try {\r
- in = new BufferedInputStream(zip.getInputStream(entry));\r
- out = new BufferedOutputStream(new FileOutputStream(file));\r
- byte buffer[] = new byte[BUFFER_LEN];\r
- int len;\r
- while ((len = in.read(buffer)) != -1) {\r
- out.write(buffer, 0, len);\r
- }\r
- } finally {\r
- if (in != null) {\r
- in.close();\r
- }\r
- if (out != null) {\r
- out.close();\r
- }\r
- }\r
- }\r
- return true;\r
- }\r
-\r
- public static String getServerLogfilePath(String serverhost,String timefolder,String logfilename ,Runtime runtime) {\r
- StringBuilder urlbuilder=new StringBuilder();\r
- String srvIP=serverhost;\r
- if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) {\r
- srvIP=runtime.getDnsUtil().getServerIP_ByDNSCache("http://"+serverhost);\r
- if (null == srvIP ) {\r
- srvIP=serverhost;\r
- }\r
- }\r
- urlbuilder.append("ftp://").append(srvIP).append("/")\r
- .append("ftp/log/")\r
- .append(DeviceInfoUtil.getModule()).append("/")\r
- .append(DeviceInfoUtil.getSWVersionDisplayName()).append("/")\r
- .append(CoreService.getInstance().getRuntime().IMEI()).append("/")\r
- .append(timefolder);\r
-\r
- return urlbuilder.toString();\r
- }\r
- public static boolean isConnectWifi(Context paramContext) {\r
- ConnectivityManager connectivityManager = (ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE);\r
- NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();\r
- NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();\r
- return (networkInfo != null && networkInfo.isAvailable() && state == NetworkInfo.State.CONNECTED);\r
- }\r
- \r
- public static boolean isWifiInIdle(Context paramContext) {\r
- NetworkInfo.State state = ((ConnectivityManager)paramContext.getSystemService(CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("yls wifi=");\r
- stringBuilder.append(state);\r
- ICLogger.i(stringBuilder.toString());\r
- return (state == NetworkInfo.State.DISCONNECTED);\r
- }\r
- \r
- public static boolean isWifiIsOpen(Context paramContext, Runtime paramRuntime) {\r
- return paramRuntime.getContextProxy().getWifiManager().isWifiEnabled();\r
- }\r
- public static void ShowToast(Runtime runtime,String msg) {\r
- new Thread(new Runnable() {\r
-\r
- @Override\r
- public void run() {\r
- Handler handler = new Handler(Looper.getMainLooper());\r
- handler.post(new Runnable() {\r
-\r
- @Override\r
- public void run() {\r
- Toast.makeText(runtime.getContextProxy().context, msg, Toast.LENGTH_LONG).show();\r
- }\r
- });\r
- }\r
- }).start();\r
- }\r
-\r
- public static byte[] loadFile(File paramFile) {\r
-// if (paramFile != null && paramFile.exists())\r
-// try {\r
-// if (paramFile.getName().endsWith(".jpg")) {\r
-// StringBuilder stringBuilder2 = new StringBuilder();\r
-// stringBuilder2.append("压缩前dataSize=");\r
-// stringBuilder2.append(paramFile.length());\r
-// ICLogger.i(stringBuilder2.toString());\r
-// ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();\r
-// Bitmap bitmap = BitmapFactory.decodeFile(paramFile.getAbsolutePath());\r
-// bitmap.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutputStream);\r
-// bitmap.recycle();\r
-// null = byteArrayOutputStream.toByteArray();\r
-// StringBuilder stringBuilder1 = new StringBuilder();\r
-// stringBuilder1.append("压缩后dataSize=");\r
-// stringBuilder1.append(null.length);\r
-// ICLogger.i(stringBuilder1.toString());\r
-// return null;\r
-// }\r
-// return Okio.buffer(Okio.source(null)).readByteArray();\r
-// } catch (IOException paramFile) {\r
-// paramFile.printStackTrace();\r
-// }\r
- return null;\r
- }\r
- \r
- public static File makeDir(File paramFile, String paramString) {\r
- StringBuilder stringBuilder = new StringBuilder(Integer.toHexString(paramString.hashCode()));\r
-// for (byte b = 2; b < stringBuilder.length(); b += 3)\r
-// stringBuilder.insert(b, "/");\r
- paramFile = new File(paramFile, stringBuilder.toString());\r
- paramFile.mkdirs();\r
- return paramFile;\r
- }\r
- \r
- public static String saveFile(byte[] buf, int start, int size, File dir, String filename) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(UUID.randomUUID().toString());\r
- stringBuilder.append("_");\r
- stringBuilder.append(filename);\r
- filename = stringBuilder.toString();\r
- File paramFile = makeDir(dir, filename); //建立以文件名Hash命名的路径\r
- try {\r
- paramFile = new File(paramFile, filename);//在路径下再建立文件\r
- FileOutputStream fos=new FileOutputStream(paramFile);\r
- fos.write(buf,start,size);\r
- fos.close();\r
- return paramFile.getAbsolutePath();\r
- } catch (IOException e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- return null;\r
- }\r
- \r
- public static ArrayList<byte[]> split(byte[] paramArrayOfByte, byte paramByte, int paramInt) {\r
- ArrayList arrayList = new ArrayList();\r
- int m = paramArrayOfByte.length;\r
- int k = paramInt;\r
- int j = paramInt;\r
- for (paramInt = k; j < m; paramInt = k) {\r
- k = paramInt;\r
- if (paramArrayOfByte[j] == paramByte) {\r
- k = j - paramInt;\r
- if (k != 0) {\r
- byte[] arrayOfByte = new byte[k];\r
- System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, k);\r
- arrayList.add(arrayOfByte);\r
- } \r
- k = j + 1;\r
- } \r
- j++;\r
- } \r
- int i = m - paramInt;\r
- if (i != 0) {\r
- byte[] arrayOfByte = new byte[i];\r
- System.arraycopy(paramArrayOfByte, paramInt, arrayOfByte, 0, i);\r
- arrayList.add(arrayOfByte);\r
- } \r
- return arrayList;\r
- }\r
- \r
- public static ArrayList<byte[]> split(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2) {\r
- ArrayList arrayList = new ArrayList();\r
- int k = paramArrayOfByte1.length;\r
- int m = paramArrayOfByte2.length;\r
- int i = 0;\r
- int j;\r
- int n;\r
- for (j = 0; i < k; j = n) {\r
-\r
- int i1;\r
- byte b = 0;\r
- while (true) {\r
- int bool = i + b;\r
- i1 = i;\r
- n = j;\r
- if (bool < k) {\r
- i1 = i;\r
- n = j;\r
- if (paramArrayOfByte1[bool] == paramArrayOfByte2[b]) {\r
- b = (byte)(b + 1);\r
-\r
- if (n == m) {\r
- n = i - j;\r
- if (n != 0) {\r
- byte[] arrayOfByte = new byte[n];\r
- System.arraycopy(paramArrayOfByte1, j, arrayOfByte, 0, n);\r
- arrayList.add(arrayOfByte);\r
- }\r
- i += m;\r
- n = i;\r
- i1 = i - 1;\r
- break;\r
- }\r
- continue;\r
- }\r
- }\r
- break;\r
- }\r
- i = i1 + 1;\r
- }\r
- i = paramArrayOfByte1.length - j;\r
- if (i != 0) {\r
- paramArrayOfByte2 = new byte[i];\r
- System.arraycopy(paramArrayOfByte1, j, paramArrayOfByte2, 0, i);\r
- arrayList.add(paramArrayOfByte2);\r
- }\r
- return arrayList;\r
- }\r
- \r
- public static byte[] subArray(byte[] paramArrayOfByte, int paramInt) {\r
- return subArray(paramArrayOfByte, paramInt, paramArrayOfByte.length);\r
- }\r
- \r
- public static byte[] subArray(byte[] paramArrayOfByte, int paramInt1, int paramInt2) {\r
- paramInt2 -= paramInt1;\r
- byte[] arrayOfByte = new byte[paramInt2];\r
- System.arraycopy(paramArrayOfByte, paramInt1, arrayOfByte, 0, paramInt2);\r
- return arrayOfByte;\r
- }\r
- \r
- public static void turnOffWifiForSleep(Context paramContext, Runtime paramRuntime) {\r
- paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(false);\r
- }\r
- \r
- public static void turnOnWifiForConnect(Context paramContext, Runtime paramRuntime) {\r
- paramRuntime.getContextProxy().getWifiManager().setWifiEnabled(true);\r
- }\r
-\r
-\r
- public static boolean parseToVoicePacketSent(VoiceContent voiceContent){\r
-\r
- long filesize;\r
- File voicefile=new File(voiceContent.content);\r
- if (voicefile.exists()) {\r
- filesize = voicefile.length();\r
-\r
- int count= (int)(filesize/1024);\r
- if ((filesize%1024)>0)\r
- count++;\r
- ICLogger.i("File "+voiceContent.content+", size "+filesize+", count "+count + " filetype "+voiceContent.filetype + ", datatype "+voiceContent.datatype);\r
- voicePacket.getInstanceSent().clearPacket();\r
- voicePacket.getInstanceSent().setFileType(voiceContent.filetype,voiceContent.datatype);\r
- try {\r
- FileInputStream fis = new FileInputStream(voicefile);\r
- byte[] audiobuf = new byte[1024];\r
- for (int i = 0; i < count; i++) {\r
- int readbytes=fis.read(audiobuf,0,1024);\r
- voicePacket.getInstanceSent().appendVoice(voiceContent.contactNumber, "", count, i, readbytes, audiobuf);\r
- }\r
- fis.close();\r
- voicePacket.getInstanceSent().setCurrentIndexToSent(0);\r
- voicePacket.getInstanceSent().setPacketTime(TimeUtil.getSystemTime3());\r
- return true;\r
- }catch (Exception e){\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
-\r
- }\r
- return false;\r
- }\r
-\r
-\r
- public static void reboot(Context context) {\r
- PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);\r
- try {\r
- ICLogger.i("do reboot!");\r
- powerManager.reboot("remote reboot");\r
- ICLogger.i("命令重启");\r
- return;\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- return;\r
- }\r
- }\r
-\r
-\r
- public static void shutdown() {\r
- try {\r
- ICLogger.i("do shutdown!");\r
- //获得ServiceManager类\r
- Class ServiceManager = Class\r
- .forName("android.os.ServiceManager");\r
-\r
- //获得ServiceManager的getService方法\r
- Method getService = ServiceManager.getMethod("getService", java.lang.String.class);\r
-\r
- //调用getService获取RemoteService\r
- Object oRemoteService = getService.invoke(null, Context.POWER_SERVICE);\r
-\r
- //获得IPowerManager.Stub类\r
- Class cStub = Class\r
- .forName("android.os.IPowerManager$Stub");\r
- //获得asInterface方法\r
- Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class);\r
- //调用asInterface方法获取IPowerManager对象\r
- Object oIPowerManager = asInterface.invoke(null, oRemoteService);\r
- //获得shutdown()方法\r
- Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class);\r
- //调用shutdown()方法\r
- shutdown.invoke(oIPowerManager,false,true);\r
-\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- }\r
-\r
- public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";\r
- public static final String EXTRA_REASON = "android.intent.extra.REASON";\r
- public static final String EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE";\r
-\r
- public static void doMasterClear(Context context) {\r
- ICLogger.i("do doMasterClear!");\r
- Intent intent = new Intent(ACTION_MASTER_CLEAR);\r
- intent.setPackage("android");\r
- intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);\r
- intent.putExtra(EXTRA_REASON, "MasterClearConfirm");\r
- if (Environment.isExternalStorageRemovable()) {\r
- intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, true);\r
- }else\r
- {\r
- intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, false);\r
- }\r
- context.sendBroadcast(intent);\r
- }\r
-\r
-\r
- public static String UrlGB2312ToUTF8(String url){\r
- String ret="";\r
- String src=url;\r
-\r
-\r
-\r
- if (!url.contains("%")){\r
- int len = url.length();\r
- //由于协议中GB2312 都是不带% 字头的,和网络中常见的不同,直接2个字节代表一个GB2312字。\r
- //如果不是2的整倍数,则证明字符串格式有误,取消转换\r
- if (len%2==0) {\r
- //先给每个unicode字符都加上\\u字头,然后再进行转换。\r
- StringBuffer sb = new StringBuffer();\r
- for (int i = 0; i < len; i += 2) {\r
- sb.append("%").append(url.substring(i, i + 2));\r
- }\r
- src=sb.toString();\r
- }else{\r
- return ret;\r
- }\r
- }\r
- try {\r
- ret=java.net.URLDecoder.decode(src,"GB2312");\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- return ret;\r
- }\r
-\r
- public static String UTF8ToUrlGB2312(String msg){\r
-\r
- String ret="";\r
- try {\r
- ret=java.net.URLEncoder.encode(msg,"GB2312");\r
- } catch (UnsupportedEncodingException e) {\r
- e.printStackTrace();\r
- }\r
- return ret;\r
- }\r
-\r
- public static String bytesToHexString(byte[] src) {\r
- StringBuilder stringBuilder = new StringBuilder("");\r
- if (src == null || src.length <= 0) {\r
- return null;\r
- }\r
- for (int i = 0; i < src.length; i++) {\r
- int v = src[i] & 0xFF;\r
- String hv = Integer.toHexString(v);\r
- if (hv.length() < 2) {\r
- stringBuilder.append(0);\r
- }\r
- stringBuilder.append(hv);\r
- }\r
- return stringBuilder.toString();\r
- }\r
- public static byte[] hexStringToBytes(String hexString) {\r
- if (hexString == null || hexString.equals("")) {\r
- return null;\r
- }\r
- hexString = hexString.toUpperCase();\r
- int length = hexString.length() / 2;\r
- char[] hexChars = hexString.toCharArray();\r
- byte[] d = new byte[length];\r
- for (int i = 0; i < length; i++) {\r
- int pos = i * 2;\r
- d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));\r
- }\r
- return d;\r
- }\r
- private static byte charToByte(char c) {\r
- return (byte) "0123456789ABCDEF".indexOf(c);\r
- }\r
-}\r
-\r
+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<PackageInfo> 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<bytes_readed;i++){
+ charArray[i]=(char)buf[i];
+ }
+ ret=String.valueOf(charArray,0,bytes_readed);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(),e);
+ e.printStackTrace();
+ }
+
+ return ret;
+ }
+ /**
+ * 解析域名获取IP数组
+ * @param host
+ * @return
+ */
+ public static String parseHostGetIPAddress(String host) {
+ StringBuilder serverip=new StringBuilder("");
+ try {
+
+
+ InetAddress[] inetAddressArr = InetAddress.getAllByName(host);
+ if (inetAddressArr != null && inetAddressArr.length > 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<File> unzipFileByKeyword(final File zipFile,final File destDir,final String keyword) throws IOException {
+ if (zipFile == null || destDir == null) return null;
+ List<File> 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<File> 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<byte[]> 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<byte[]> 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);
+ }
+}
+
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;
import java.io.File;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
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<Silent> 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<week.length;i++){
+ if(week[i]=='1'){
+ week_sb.append(i+1);
+ }
+ }
+ Silent silent=new Silent(start,end, week_sb.toString(),status);
+ slist.add(silent);
+ ICLogger.i("set alarm "+start +" " + end + " "+ week_sb.toString()+ " "+status);
+ }else{
+ ICLogger.i("免打扰时间格式错误,skip");
+ }
+ }
+ }
+ runtime.getDbHelper().saveSilent(slist);
+ }
public static StringMessage LGZONE(Runtime runtime) {
return genFZDCMD(cmdMap.get(CMD_TYPE.LGZONE));
}
ICLogger.i("收到服务器时间 LGZONE "+data);
handleLGZONE(mRuntime,data);
break;
-// case BP84:
-// handleBP84(cmd,mConnection);
-// ICLogger.i("收到服务器白名单命令");
-// break;
-//
-// case BP86:
-// //绑定解绑消息
-// handleBP86(cmd,mConnection,mRuntime);
-// mConnection.DeliverCMDMessageToSystem("AP86",cmd);//通知下面线程状态变化
-//
-// break;
-//
+
+ case CENTER:
+ handleCENTER(mConnection,mRuntime,cmd,data);
+ break;
+ case SILENCETIME2:
+ handleSILENCETIME2(mConnection,mRuntime,cmd,data);
+ break;
+
case FIND:
//收到查找设备消息
handleFIND(mConnection);