添加防走丢静默时间段控制(防打扰)SILENCETIME2
authorsnickersun <scy@incartech.cn>
Thu, 3 Dec 2020 17:29:21 +0000 (01:29 +0800)
committersnickersun <scy@incartech.cn>
Thu, 3 Dec 2020 17:29:21 +0000 (01:29 +0800)
13 files changed:
app/src/main/AndroidManifest.xml
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/ParseUpdate.java [deleted file]
app/src/main/java/com/enqualcomm/support/PassData.java [deleted file]
app/src/main/java/com/enqualcomm/support/bean/Silent.java
app/src/main/java/com/enqualcomm/support/bean/Update.java [deleted file]
app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java
app/src/main/java/com/enqualcomm/support/service/SilentManager.java
app/src/main/java/com/enqualcomm/support/utils/DBHelper.java
app/src/main/java/com/enqualcomm/support/utils/IBeaconUtil.java
app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java
app/src/main/java/com/enqualcomm/support/utils/Util.java
app/src/main/java/com/ic/protocols/protocol_fzd.java

index 4392864..98fa0b8 100644 (file)
                 <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>
index 1fe12be..2361659 100644 (file)
@@ -76,6 +76,7 @@ import java.util.concurrent.TimeUnit;
 
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
 import static com.enqualcomm.support.Constants.ACTION_ALARM_ADD_DATAPOINTS;
+import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE;
 import static com.enqualcomm.support.Constants.ACTION_ALARM_BLE_SCAN;
 import static com.enqualcomm.support.Constants.ACTION_ALARM_CHECK_ANTI;
 import static com.enqualcomm.support.Constants.ACTION_CHECK_ANTIOFF_EVENT;
@@ -113,7 +114,7 @@ public class CoreService extends Service {
 
     private static final String MY_WAKE_LOCKTAG =CoreService.class.getSimpleName();
 
-    public static int alarmCycle = 1;
+    public static int alarmCycle = 5;
 
     public static final int interval = 60000;
 
@@ -175,7 +176,7 @@ public class CoreService extends Service {
 //            setHeartAlarm();
 //           setHeartRateDetectAlarm(runtime.getPpgTestCycle());
             setWeatherAlarm();
-            runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE",runtime); //更新Alarm
+            runtime.getContextProxy().sendBroadcast(ACTION_ALARM_ALARM_CHANGE,runtime); //更新Alarm
            // setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
             if (cmcm_call_eiot_into_powersave_mode() == 0)
                 AlarmWakeUp.isNeedWakeUpAlarm(runtime);
@@ -808,7 +809,7 @@ public class CoreService extends Service {
 
 
 
-        Config.setHeartBeatCycle(this,5); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。
+        Config.setHeartBeatCycle(this,alarmCycle); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。
         //初始化ServerHeartBeat Cycle
         Config.loadHearBeatSetting(runtime);
         //初始化PPG,LocationMod,LocationCycle
@@ -957,7 +958,7 @@ public class CoreService extends Service {
         }
 
         //设置来电模式
-        SimSignalUtil.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true);
+        Util.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true);
 
         //备份DB数据到sd cache目录,为调试方便
         Util.getDBFile();
@@ -1139,7 +1140,46 @@ public class CoreService extends Service {
             stringBuilder.append(paramInt2);
             ICLogger.i(stringBuilder.toString());
 //            if (ACTION_ALARM.equals(paramIntent.getAction())) {
-            if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())) {
+
+            if (HEART_ALARM.equals(paramIntent.getAction())) {
+                //发送心跳间隔广播给其他应用
+                this.runtime.getContextProxy().sendBroadcast(ACTION_EQC_ALARM, this.runtime);
+                this.connectionServiceChain.processAlarmClock(this.connection, this.runtime);
+                this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime);
+//                if (SystemClock.elapsedRealtime() - this.mWeatherTime > 60000L && this.mHaveSetWeatherAlarm) {
+//                    setWeatherAlarm();
+//                    this.mHaveSetWeatherAlarm = false;
+//                    return Service.START_NOT_STICKY;
+//                }
+
+                locationClient.updateStepCount();
+                updateSleepDate(); //检查睡眠
+                checkKeepSitting();//检查久坐
+                checkAlarmMessage();//检测是否有报警消息需要显示
+                checkUnreadMessage();//检查未读消息
+                if (this.mKeepAlive != null) {
+                    if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {
+                        this.mKeepAlive.onHeartAlarm(this.connection, this.runtime);
+                        ICLogger.i("triggerBLEProcess ");
+                        locationClient.triggerBLEProcess();//每次心跳检测一次BLE
+                        Deliver.triggerSendThread();
+                    } else {
+                        // if (this.mKeepAlive.is_retry_time_above_limit()) {
+                        ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!");
+                        connection.disconnectServer();
+                        this.startConnectionRetryTimer();
+                        // }else{
+                        //      ICLogger.i("");
+                        //  }
+                    }
+                    //检测电池电量 并上报低电报警
+                    batteryUtil.getBatteryLevel(this);
+                    setHeartAlarm();
+                    if (Config.LOG_TOFILE)
+                        ICLogger.logToFile("alarmCycle", "HEART_ALARM alarmCycle  ");
+                    return Service.START_STICKY;
+                }
+            }else if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())) {
 
 
 //                    if (cmcm_call_eiot_into_powersave_mode() == 1) {
@@ -1166,16 +1206,8 @@ public class CoreService extends Service {
 //                setAlarm(alarmCycle);
 //                if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "ALARM alarmCycle");
 
-                //发送心跳间隔广播给其他应用
-                this.runtime.getContextProxy().sendBroadcast(ACTION_EQC_ALARM, this.runtime);
+
                 this.locationClient.onAlarm(getWakeLock(1));
-                this.connectionServiceChain.processAlarmClock(this.connection, this.runtime);
-                this.invokeHandlerServiceChain.processAlarmClock(this.connection, this.runtime);
-//                if (SystemClock.elapsedRealtime() - this.mWeatherTime > 60000L && this.mHaveSetWeatherAlarm) {
-//                    setWeatherAlarm();
-//                    this.mHaveSetWeatherAlarm = false;
-//                    return Service.START_NOT_STICKY;
-//                }
 
 
                 //收到定时定位消息
@@ -1186,6 +1218,12 @@ public class CoreService extends Service {
                 if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString());
 //                this.locationClient.triggerLocationProcess();
 
+            }else if (Constants.OTHER_ALARM_END.equals(paramIntent.getAction())) {
+                ICLogger.i("OTHER_ALARM_END set Ringmode Normal vib true");
+               SilentManager.setSilentConfig(this,false);
+            }else if (Constants.OTHER_ALARM_START.equals(paramIntent.getAction())) {
+                ICLogger.i("OTHER_ALARM_START set Ringmode Silent vib false");
+                SilentManager.setSilentConfig(this,true);
             }else if (Constants.ACTION_ALARM_BLE_SCAN.equals(paramIntent.getAction())) {
                     //循环蓝牙扫描
                 setBleScanAlarm(runtime.bleInfo.bleScanCycle);
@@ -1251,35 +1289,6 @@ public class CoreService extends Service {
                 setTempAlarm();
 
                return Service.START_STICKY;
-            } else if (HEART_ALARM.equals(paramIntent.getAction())) {
-
-                locationClient.updateStepCount();
-                updateSleepDate(); //检查睡眠
-                checkKeepSitting();//检查久坐
-                checkAlarmMessage();//检测是否有报警消息需要显示
-                checkUnreadMessage();//检查未读消息
-                if (this.mKeepAlive != null) {
-                    if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {
-                        this.mKeepAlive.onHeartAlarm(this.connection, this.runtime);
-                        ICLogger.i("triggerBLEProcess ");
-                        locationClient.triggerBLEProcess();//每次心跳检测一次BLE
-                        Deliver.triggerSendThread();
-                    } else {
-                       // if (this.mKeepAlive.is_retry_time_above_limit()) {
-                            ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!");
-                            connection.disconnectServer();
-                            this.startConnectionRetryTimer();
-                       // }else{
-                      //      ICLogger.i("");
-                      //  }
-                    }
-                    //检测电池电量 并上报低电报警
-                    batteryUtil.getBatteryLevel(this);
-                    setHeartAlarm();
-                    if (Config.LOG_TOFILE)
-                        ICLogger.logToFile("alarmCycle", "HEART_ALARM alarmCycle  ");
-                    return Service.START_STICKY;
-                }
             } else if (STEP_COUNT_ALARM_ACTION.equals(paramIntent.getAction())) {
                 ICLogger.i("Reset Count At 00:00 ");
                 //update stepCount and broadcast before reset
diff --git a/app/src/main/java/com/enqualcomm/support/ParseUpdate.java b/app/src/main/java/com/enqualcomm/support/ParseUpdate.java
deleted file mode 100644 (file)
index b2bf87a..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-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
diff --git a/app/src/main/java/com/enqualcomm/support/PassData.java b/app/src/main/java/com/enqualcomm/support/PassData.java
deleted file mode 100644 (file)
index 1588bdc..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-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
index 7cfb951..b8df079 100644 (file)
@@ -1,62 +1,62 @@
-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();
+  }
+}
diff --git a/app/src/main/java/com/enqualcomm/support/bean/Update.java b/app/src/main/java/com/enqualcomm/support/bean/Update.java
deleted file mode 100644 (file)
index 8bba67d..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-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
index 1324a1b..d1eb639 100644 (file)
@@ -255,6 +255,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
             //throw new UnsupportedOperationException("设备不支持");
         }
 
+
         boolean isRegister = mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
         if (!isRegister) {
             ICLogger.i("Proximity 设备不支持2");
index 241e0f7..ae86325 100644 (file)
@@ -8,6 +8,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.database.ContentObserver;
+import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Message;
@@ -37,6 +38,7 @@ import com.enqualcomm.support.utils.MissedCallContentObserver;
 import com.enqualcomm.support.utils.SharPreferenceUtil;
 import com.enqualcomm.support.utils.TimeUtil;
 import com.enqualcomm.support.utils.Util;
+import com.enqualcomm.support.utils.VibrateUtil;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -47,9 +49,14 @@ import java.util.concurrent.TimeUnit;
 import static android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED;
 import static android.telephony.TelephonyManager.CALL_STATE_OFFHOOK;
 import static android.telephony.TelephonyManager.CALL_STATE_RINGING;
+import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE;
+import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE;
 import static com.enqualcomm.support.Constants.ACTION_CARE_ALARM;
 import static com.enqualcomm.support.Constants.ACTION_CLOSE_UNREAD_MSG;
 import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;
+import static com.enqualcomm.support.Constants.ACTION_NOTICE_ALARM_CHANGE;
+import static com.enqualcomm.support.Constants.OTHER_ALARM_END;
+import static com.enqualcomm.support.Constants.OTHER_ALARM_START;
 import static com.enqualcomm.support.Constants.SERVICE_CLS_NAME;
 import static com.enqualcomm.support.Constants.SERVICE_PKG_NAME;
 
@@ -278,22 +285,22 @@ public class SilentManager extends AbstractInvokeHandlerService {
   }
 
   private void getSilentListStartAndEndTime() {
-    Calendar var1 = Calendar.getInstance();
-    this.mTodayWeek = var1.get(Calendar.DAY_OF_WEEK);
-
-    Silent var3;
-    for(Iterator var2 = this.silentList.iterator(); var2.hasNext(); var3.endTimeMillis = var1.getTimeInMillis()) {
-      var3 = (Silent)var2.next();
-      var1.set(Calendar.SECOND, 0);
-      int var4 = Integer.parseInt(var3.start.substring(2, 4));
-      int var5 = Integer.parseInt(var3.start.substring(5, 7));
-      var1.set(Calendar.HOUR_OF_DAY, var4);
-      var1.set(Calendar.MINUTE, var5);
-      var3.startTimeMillis = var1.getTimeInMillis();
-      var5 = Integer.parseInt(var3.end.substring(2, 4));
-      var4 = Integer.parseInt(var3.end.substring(5, 7));
-      var1.set(Calendar.HOUR_OF_DAY, var5);
-      var1.set(Calendar.MINUTE, var4);
+    Calendar calendar = Calendar.getInstance();
+    this.mTodayWeek = calendar.get(Calendar.DAY_OF_WEEK);
+
+    Silent silent;
+    for(Iterator it = this.silentList.iterator() ; it.hasNext(); silent.endTimeMillis = calendar.getTimeInMillis()) {
+      silent = (Silent)it.next();
+      calendar.set(Calendar.SECOND, 0);
+      int hour = Integer.parseInt(silent.start.substring(2, 4));
+      int minutes = Integer.parseInt(silent.start.substring(5, 7));
+      calendar.set(Calendar.HOUR_OF_DAY, hour);
+      calendar.set(Calendar.MINUTE, minutes);
+      silent.startTimeMillis = calendar.getTimeInMillis();
+      minutes = Integer.parseInt(silent.end.substring(2, 4));
+      hour = Integer.parseInt(silent.end.substring(5, 7));
+      calendar.set(Calendar.HOUR_OF_DAY, minutes);
+      calendar.set(Calendar.MINUTE, hour);
     }
 
   }
@@ -340,8 +347,28 @@ public class SilentManager extends AbstractInvokeHandlerService {
 
   }
 
+  public static void setSilentConfig(Context context,boolean silent){
+
+    if(silent){
+      VibrateUtil.setVibPattern(0);
+      ICAudioManager.setMasterVolumn(context,0);
+      Util.SetRingMode(context,AudioManager.RINGER_MODE_SILENT,false);
+    }else{
+      int mastervolume = Config.getMasterVolume(context);
+      ICAudioManager.setMasterVolumn(context,mastervolume);
+      int duration=Config.getDurationOfVibration(context);
+      VibrateUtil.setVibPattern(duration*1000);
+      Util.SetRingMode(context, AudioManager.MODE_NORMAL,true);
+    }
+
+
+
+  }
   private void handSilence(Context var1, boolean var2) {
     this.mValue_isSilence = var2;
+
+    setSilentConfig(var1,var2);
+
     if (this.isCalling) {
       this.haveHandSilence = true;
     } else {
@@ -351,37 +378,38 @@ public class SilentManager extends AbstractInvokeHandlerService {
       var3.setAction("com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE");
       var3.putExtra("KEY_ISSILENCE", var2);
       var1.sendBroadcast(var3);
-      ComponentName var4 = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME);
-      Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4);
-      this.mRuntime.getContextProxy().context.startService(var5);
+
+     // ComponentName var4 = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME);
+     // Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4);
+     // this.mRuntime.getContextProxy().context.startService(var5);
     }
   }
 
-  private void handleSilent(Runtime var1, boolean var2) {
-    int var3 = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
-    if (var3 != this.mTodayWeek && (var3 != 1 || this.mTodayWeek != 8)) {
+  private void handleSilent(Runtime runtime, boolean silent) {
+    int dayofweek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
+    if (dayofweek != this.mTodayWeek && (dayofweek != 1 || this.mTodayWeek != 8)) {
       this.getSilentListStartAndEndTime();
       this.queryNotice();
     }
 
-    boolean var4 = this.isSilentTime();
+    boolean isSilent = this.isSilentTime();
     StringBuilder var5 = new StringBuilder();
     var5.append("inSilent=");
-    var5.append(var4);
+    var5.append(isSilent);
     ICLogger.i(var5.toString());
-    if (!this.mInSilent && var4) {
+    if (!this.mInSilent && isSilent) {
       this.onSilentStateChange(true);
       this.handSilence(this.mContext, true);
       this.mDbHelper.upDateStatus("ON");
-    } else if (this.mInSilent && !var4) {
+    } else if (this.mInSilent && !isSilent) {
       this.onSilentStateChange(false);
       this.mDbHelper.upDateStatus("OFF");
       this.handSilence(this.mContext, false);
     }
 
-    this.mInSilent = var4;
-    this.getStartAndEndStheartRateTime();
-    this.isStheartRateTime(var2);
+    this.mInSilent = isSilent;
+   // this.getStartAndEndStheartRateTime();
+   // this.isStheartRateTime(var2);
   }
 
   private boolean isIdle(Context context) {
@@ -424,7 +452,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
         if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) {
           var11 = Integer.parseInt(var6.start.substring(2, 4));
           var5 = Integer.parseInt(var6.start.substring(5, 7));
-          AlarmHelper.setTimeAlarm(this.mContext, var11, var5, "com.enqualcomm.support.OTHER_ALARM_START");
+          AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_START);
           var8 = new StringBuilder();
           var8.append("设置起始时间=hour");
           var8.append(var11);
@@ -437,7 +465,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
         if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) {
           var11 = Integer.parseInt(var6.end.substring(2, 4));
           var5 = Integer.parseInt(var6.end.substring(5, 7));
-          AlarmHelper.setTimeAlarm(this.mContext, var11, var5, "com.enqualcomm.support.OTHER_ALARM_END");
+          AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_END);
           var8 = new StringBuilder();
           var8.append("设置结束时间=hour");
           var8.append(var11);
@@ -457,63 +485,66 @@ public class SilentManager extends AbstractInvokeHandlerService {
   }
 
   private boolean isSilentTime() {
-    long var1 = System.currentTimeMillis();
-    ArrayList var3 = this.silentList;
-    int var4 = this.mTodayWeek;
-    boolean var5 = false; //默认不在silent时间段
-    if (var4 == 1) {
+    long currenttime = System.currentTimeMillis();
+    ArrayList slist = this.silentList;
+    int todayWeek = this.mTodayWeek;
+    boolean isSilent = false; //默认不在silent时间段
+    if (todayWeek == 1) {
       this.mTodayWeek += 7;
     }
 
-    Iterator var6 = var3.iterator();
+    Iterator it = slist.iterator();
 
     while(true) {
-      if (!var6.hasNext()) {
-        var5 = false;
+      if (!it.hasNext()) {
+        isSilent = false;
         break;
       }
 
-      Silent var12 = (Silent)var6.next();
-      String var7 = var12.week;
-      StringBuilder var8 = new StringBuilder();
-      var8.append(this.mTodayWeek - 1);
-      var8.append("");
-      if (var7.contains(var8.toString())) {
-        long var9 = var12.startTimeMillis - var1;
-        int var11;
-        StringBuilder var13;
+      Silent silent = (Silent)it.next();
+      String week = silent.week;
+      StringBuilder sb = new StringBuilder();
+      sb.append(this.mTodayWeek - 1);
+      sb.append("");
+      if (week.contains(sb.toString())) {
+        long var9 = silent.startTimeMillis - currenttime;
+        int hour,minutes;
+        StringBuilder sblog;
+
         if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) {
-          var11 = Integer.parseInt(var12.start.substring(2, 4));
-          var4 = Integer.parseInt(var12.start.substring(5, 7));
-          AlarmHelper.setTimeAlarm(this.mContext, var11, var4, "com.enqualcomm.support.OTHER_ALARM_START");
-          var13 = new StringBuilder();
-          var13.append("设置起始时间=hour");
-          var13.append(var11);
-          var13.append("minute+");
-          var13.append(var4);
-          ICLogger.i(var13.toString());
+          hour = Integer.parseInt(silent.start.substring(2, 4));
+          minutes = Integer.parseInt(silent.start.substring(5, 7));
+          AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_START);
+          sblog = new StringBuilder();
+          sblog.append("设置起始时间=hour");
+          sblog.append(hour);
+          sblog.append("minute+");
+          sblog.append(minutes);
+          ICLogger.i(sblog.toString());
         }
 
-        var9 = var12.endTimeMillis - var1;
+        var9 = silent.endTimeMillis - currenttime;
         if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) {
-          var11 = Integer.parseInt(var12.end.substring(2, 4));
-          var4 = Integer.parseInt(var12.end.substring(5, 7));
-          AlarmHelper.setTimeAlarm(this.mContext, var11, var4, "com.enqualcomm.support.OTHER_ALARM_END");
-          var13 = new StringBuilder();
-          var13.append("设置结束时间=hour");
-          var13.append(var11);
-          var13.append("minute+");
-          var13.append(var4);
-          ICLogger.i(var13.toString());
+          hour = Integer.parseInt(silent.end.substring(2, 4));
+          minutes = Integer.parseInt(silent.end.substring(5, 7));
+          AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_END);
+          sblog = new StringBuilder();
+          sblog.append("设置结束时间=hour");
+          sblog.append(hour);
+          sblog.append("minute+");
+          sblog.append(minutes);
+          ICLogger.i(sblog.toString());
         }
 
-        if (var12.startTimeMillis <= var1 && var12.endTimeMillis > var1) {
+        //刚好在silent时段,则直接退出
+        if (silent.startTimeMillis <= currenttime && silent.endTimeMillis > currenttime) {
+          isSilent=true;
           break;
         }
       }
     }
 
-    return var5;
+    return isSilent;
   }
 
   private boolean isStheartRateTime(boolean var1) {
@@ -733,16 +764,17 @@ public class SilentManager extends AbstractInvokeHandlerService {
 
   }
 
-  public void onAlarmClock(Connection var1, Runtime var2) {
-    this.handleSilent(var2, true);
+  public void onAlarmClock(Connection var1, Runtime runtime) {
+    //每个心跳检查静默消息状态
+    this.handleSilent(runtime, true);
   }
 
-  public void onAttach(Connection var1, Runtime var2) {
-    this.mRuntime = var2;
+  public void onAttach(Connection var1, Runtime runtime) {
+    this.mRuntime = runtime;
     this.mConnection = var1;
-    this.mContext = var2.getContextProxy().context;
+    this.mContext = runtime.getContextProxy().context;
     this.mAlarmManager = (AlarmManager)this.mContext.getSystemService(Context.ALARM_SERVICE);
-    this.mDbHelper = var2.getDbHelper();
+    this.mDbHelper = runtime.getDbHelper();
     this.silentList = this.querySilent();
     this.getSilentListStartAndEndTime();
     this.mInSilent = this.isSilentTime();
@@ -756,20 +788,22 @@ public class SilentManager extends AbstractInvokeHandlerService {
 
     var3.upDateorInsertDeviceStatus(var4);
     this.handSilence(this.mContext, this.mInSilent);
+    /*
     this.stheartRateList = this.queryStheartRate();
     this.getStartAndEndStheartRateTime();
     this.mIsStheartRate = this.isStheartRateTime(false);
+     */
     this.alarms = this.queryAlarm();
     this.voiceNotice = this.queryNotice();
-    var2.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver);
+    runtime.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver);
     this.mAlramReceiver = new SilentManager.AlramReceiver();
     IntentFilter var5 = new IntentFilter();
-    var5.addAction("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE");
-    var5.addAction("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE");
-    var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE");
-    var5.addAction("com.eqc.heartrate.action.RESULT");
+    var5.addAction(ACTION_NOTICE_ALARM_CHANGE);
+    var5.addAction(ACTION_ALARM_ALARM_CHANGE);
+  //  var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE");
+   // var5.addAction("com.eqc.heartrate.action.RESULT");
     this.mContext.registerReceiver(this.mAlramReceiver, var5);
-    var2.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32);
+    runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32);
   }
 
   public void onDetach(Connection var1, Runtime var2) {
@@ -778,7 +812,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
   }
 
   @Override
-  public boolean onUserRequest(Intent var1, Connection var2, Runtime var3) {
+  public boolean onUserRequest(Intent var1, Connection var2, Runtime runtime) {
     String action = var1.getAction();
     if (ACTION_CARE_ALARM.equals(action)) {
       String alarmTime = var1.getDataString();  //alarm:ST00.43,W,CON,闹铃,2
@@ -826,7 +860,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
         var4 = true;
       }
 
-      this.handleSilent(var3, var4 ^ true);
+      this.handleSilent(runtime, var4 ^ true);
     }
 
     return false;
@@ -842,34 +876,34 @@ public class SilentManager extends AbstractInvokeHandlerService {
     }
 
     public void onReceive(Context var1, Intent var2) {
-      String var6 = var2.getAction();
+      String action = var2.getAction();
       StringBuilder var3 = new StringBuilder();
       var3.append("action = ");
-      var3.append(var6);
+      var3.append(action);
       ICLogger.i(var3.toString());
-      if ("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE".equals(var6)) {
+      if (ACTION_NOTICE_ALARM_CHANGE.equals(action)) {
         SilentManager.this.voiceNotice = SilentManager.this.queryNotice();
-      } else if ("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE".equals(var6)) {
+      } else if (ACTION_ALARM_ALARM_CHANGE.equals(action)) {
         SilentManager.this.alarms = SilentManager.this.queryAlarm();
-      } else if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(var6)) {
+      } else if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(action)) {
         SilentManager.this.stheartRateList = SilentManager.this.queryStheartRate();
         SilentManager.this.getStartAndEndStheartRateTime();
         SilentManager.this.isStheartRateTime(false);
-      } else if ("com.eqc.heartrate.action.RESULT".equals(var6)) {
-        var6 = var2.getStringExtra("time");
+      } else if ("com.eqc.heartrate.action.RESULT".equals(action)) {
+        String time = var2.getStringExtra("time");
         int var4 = var2.getIntExtra("value", 0);
         int var5 = var2.getIntExtra("type", 0);
         StringBuilder var7 = new StringBuilder();
         var7.append("(");
-        var7.append(var6);
+        var7.append(time);
         var7.append("@");
         var7.append(var4);
         var7.append("@");
         var7.append(var5);
         var7.append(")");
-        var6 = var7.toString();
+        time = var7.toString();
 //        SilentManager.this.mConnection.send(API.H60(SilentManager.this.mRuntime, var6));
-      } else if ("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE".equals(var6)) {
+      } else if (ACTION_ANTIOFF_ALARM_CHANGE.equals(action)) {
         SilentManager.this.sAntioffList = SilentManager.this.queryAntioff();
         SilentManager.this.getStartAndEndSantioffTime();
         SilentManager.this.mIsNeedAntioff = SilentManager.this.isAntioffTime(false);
index 848b2d6..2a498e7 100644 (file)
-\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;
+  }
+
+
+
+}
index 114519d..f50dcfa 100644 (file)
@@ -11,7 +11,7 @@ public class IBeaconUtil {
 
         @Override
         public String toString() {
-            return major+","+minor+","+bluetoothAddress+","+rssi;
+            return major+","+minor+","+bluetoothAddress.replace(":","")+","+rssi;
         }
     }
     public static iBeacon fromScanData(String name,String mac, int rssi, byte[] scanData) {
index b1c469b..03b0e2e 100644 (file)
@@ -170,26 +170,7 @@ public class SimSignalUtil {
     this.mNetworkType = ((TelephonyManager)this.context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType();
   }
 
-  public static void SetRingMode(Context context,int mod,boolean vibmod){
-    AudioManager am= (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
-    int currentRingmod=am.getRingerMode();
-    am.setRingerMode(mod);
-    ICLogger.i("Current OldRingMod="+currentRingmod+", Set To RingMod="+mod+", check RingMod="+am.getRingerMode());
-
-    int curretnVibmod=am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);
-
-    if(vibmod){
-      Settings.System.putInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,1);
-      am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
-      am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON);
-    } else {
-      Settings.System.putInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING,0);
-      am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
-      am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);
-    }
-    ICLogger.i("Current OldVibRingMod="+curretnVibmod+", check VibRingMod="+am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER)+" , shoudl Vib "+am.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER));
 
-  }
   public static boolean isScreenON(Context context) {
       // If you use less than API20:
       PowerManager powerManager = (PowerManager) context.getSystemService(POWER_SERVICE);
index e494ce8..2594970 100644 (file)
-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);
+  }
+}
+
index 5d396c9..5e49880 100644 (file)
@@ -15,11 +15,13 @@ import com.enqualcomm.support.bean.Content;
 import com.enqualcomm.support.bean.HealthInfo;
 import com.enqualcomm.support.bean.ICLocation;
 import com.enqualcomm.support.bean.Runtime;
+import com.enqualcomm.support.bean.Silent;
 import com.enqualcomm.support.bean.StringMessage;
 import com.enqualcomm.support.bean.VoiceContent;
 import com.enqualcomm.support.bean.voicePacket;
 import com.enqualcomm.support.service.HeartRateManager;
 import com.enqualcomm.support.utils.Connection;
+import com.enqualcomm.support.utils.DBHelper;
 import com.enqualcomm.support.utils.ICLogger;
 import com.enqualcomm.support.utils.MD5;
 import com.enqualcomm.support.utils.TemperatureUtil;
@@ -29,6 +31,7 @@ import com.enqualcomm.support.utils.regexUtil;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 
@@ -378,8 +381,71 @@ public class protocol_fzd {
     public void handleKA(Runtime runtime,String data){
 
     }
+    public static StringMessage CENTER(Runtime runtime){
+        return genFZDCMD(cmdMap.get(CMD_TYPE.CENTER));
+    }
+
+
+    public void handleCENTER(Connection connection,Runtime runtime,String cmd,String data){
+            connection.send(CENTER(runtime));
+    }
+
+
+
+
+    public static StringMessage SILENCETIME2(Runtime runtime){
+        return genFZDCMD(cmdMap.get(CMD_TYPE.SILENCETIME2));
+    }
+
+
+    public void handleSILENCETIME2(Connection connection,Runtime runtime,String cmd,String data){
+        /**
+         * 上课禁用时间段设置 2
+         *size 60 [IC*860314001000466*0022*SILENCETIME2,10:03-16:00-1-0111110]
+         * IC*860314001000466*0022*SILENCETIME2 10:03-16:00-1-0111110
+         * 平台发送:
+         * [IC*YYYYYYYYYYYYYYY*LEN*SILENCETIME2,时间段-开关-自定义日期,时间段-开关-自定义日期,时   间段-开关-自定义日期]
+         * 实
+         * 例 :[IC*334588000000156*0038*SILENCETIME2,7:30-21:10-1-0111110,7:30-21:10-1-0111110,7:30-21:10-0-0111110]
+         * 终端回复:
+         * [IC*YYYYYYYYYYYYYYY*LEN*SILENCETIME2]
+         * 实例:[IC*334588000000156*000C*SILENCETIME2]
+         * 说明:
+         * 设置上课禁用时间段范围,拦截终端的任何来电。格式为“起始时间-结束时间-自定义星期几”,   比如上面的 7:30-21:00-0111110,则表示周一到周五 7:30 到 21:00 之间上课禁用生效,起始时间默认大于结束时间。
+         * 总开关:0 为关,1 为开
+         * 关于自定义星期几的规则:最左边是周日,最右边是周六,即 0111110 的顺序是:周日,周一,周二,周三,周四,周五,周六(1 为打开,0 为关闭),所以上面的意思是周一至周五打开上课禁用。
+         */
+        connection.send(SILENCETIME2(runtime));
+        String[] silent_items=data.split(",");
+        ArrayList<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));
     }
@@ -873,18 +939,14 @@ public class protocol_fzd {
                 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);