vitrack n123 设置 ppg 默认测试时间错误,
authorsnickersun <scy@incartech.cn>
Sat, 9 Jan 2021 02:40:03 +0000 (10:40 +0800)
committersnickersun <scy@incartech.cn>
Sat, 9 Jan 2021 02:47:55 +0000 (10:47 +0800)
修改参数名称,更清晰分辨单位。

app/src/main/java/com/enqualcomm/support/Config.java
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/bean/Runtime.java

index e5c6c7a..036845b 100644 (file)
-package com.enqualcomm.support;\r
-\r
-import android.content.Context;\r
-import android.provider.Settings;\r
-import android.text.TextUtils;\r
-\r
-import com.enqualcomm.support.bean.ICLocation;\r
-import com.enqualcomm.support.bean.Runtime;\r
-import com.enqualcomm.support.utils.ICAudioManager;\r
-import com.enqualcomm.support.utils.ICLogger;\r
-import com.enqualcomm.support.utils.SharPreferenceUtil;\r
-import com.enqualcomm.support.utils.TimeUtil;\r
-import com.enqualcomm.support.utils.Util;\r
-import com.enqualcomm.support.utils.VibrateUtil;\r
-import com.ic.jni.ICJniUtils;\r
-import com.ic.protocols.protocolAPIHelper;\r
-\r
-import org.json.JSONException;\r
-import org.json.JSONStringer;\r
-\r
-import java.util.HashMap;\r
-\r
-import static com.enqualcomm.support.utils.Util.getSystemProperties;\r
-\r
-public class Config {\r
-  public static final boolean LOG_TOFILE=true;\r
-  public static int antioff = 0;\r
-  public static int heart_rate = 0;\r
-  private static String json;\r
-  public static int defaultHeartbeatCycle=5;\r
-  public static int sw_release_no = -1;\r
-\r
-\r
-  //如果重试都失败,则丢弃命令不进行盲点续传\r
-  public static boolean discard_cmd_after_retryfailed=true;\r
-\r
-  public static boolean forceMoveCheck=true;\r
-  public static boolean forceWearCheck=true;\r
-\r
-  private static final String KEYDurationOfVibration = "DurationVib";\r
-  private static final String KeyMasterVolume = "MasterVolume";\r
-\r
-  public static final String DefaultLogFtpServer="icfota.snicker.com.cn";\r
-  public static final String DefaultLogFtpUser="ftpuser";\r
-  public static final String DefaultLogFtpPWD="iclog";\r
-\r
-\r
-  public static final String DefaultWiFiSSID="Xplay6";\r
-  public static final String DefaultWiFiPWD="87654321";\r
-  public static final String DefaultWiFiEncryptType="psk";\r
-\r
-  public static final int GPSLocationTimeoutInSeconds=50;\r
-  public static final int WiFiLocationTimeoutInSeconds=12;\r
-\r
-  public static String c43_branch_name="none";\r
-  public static String custom_name="none";\r
-\r
-  //配置是否广播提示框信息给外部应用显示\r
-  public static boolean noBroadCastSMSNotify=false;\r
-  public static boolean noBroadCastPushTxtNotify=false;\r
-\r
-\r
-  //protocol内部Dialog配置,true表示用外部提示窗,false表示用协议内部提示窗\r
-  public static boolean noSMSNotifyDialog=false;\r
-  public static boolean noPushTxtNotifyDialog=false;\r
-  public static boolean noVoiceNotifyDialog=false;\r
-\r
-  //是否SOS拨号的开关,false表示只发送系统sosalarm,不发起SOS拨号\r
-  public static boolean SOSNoNeedDial=false;\r
-\r
-  //ic68只有体温没有腕温,它开启代表原来的腕温函数取出的就是体温,不需要再进行换算了。\r
-  public static boolean disableWristTemp=false;\r
-  //配置是否有温度传感器\r
-  public static boolean noTempSensor=false;\r
-  //配置是否有心率传感器\r
-  public static boolean noPPGSensor=false;\r
-  //配置脱腕报警是否需要弹出脱腕提示 默认关闭\r
-  public static boolean needBroadcastAntiAlarm=false;\r
-  //配置脱腕报警是否需要弹出剪断提示 默认开启\r
-  public static boolean needBroadcastCutoffAlarm=true;\r
-\r
-\r
-  //定位是否使用wifi的配置。\r
-  public static boolean disableWiFiScan=false;\r
-\r
-  public static int BLEScanProtocol=0; /** 0 代表扫描beacon后 自行判断是否在指定区域,需要协议绑定beacon地址。\r
-                                        *  1  代表扫描beacon后,直接把扫描结果上报即可。\r
-                                        **/\r
-\r
-  public static boolean UsePolingCheckWeared=false;\r
-\r
-  static  {\r
-    disableWiFiScan=Util.getSystemProperties("persist.sys.disableWiFiLocation","false").equals("true");\r
-    disableWristTemp=Util.getSystemProperties("persist.sys.disableWristTemp","false").equals("true");\r
-    BLEScanProtocol=Util.getSystemPropertiesInt("persist.sys.BLEScanProtocol",0);\r
-    UsePolingCheckWeared=Util.getSystemProperties("persist.sys.PolingCheckAnti","false").equals("true");\r
-  }\r
-  \r
-  private static String make() {\r
-    try {\r
-      return (new JSONStringer()).object()\r
-              .key("cmd").value("Init")\r
-              .key("sw_version").value("eiot_V1.0.0")\r
-              .key("protocol_version").value("2.0")\r
-              .key("product").value(2L)\r
-              .key("swReleaseNo").value(sw_release_no)\r
-              .endObject().toString();\r
-    } catch (JSONException jSONException) {\r
-      jSONException.printStackTrace();\r
-      return "";\r
-    } \r
-  }\r
-  \r
-  public static String toJson() {\r
-    if (TextUtils.isEmpty(json))\r
-      json = make(); \r
-    return json;\r
-  }\r
-\r
-\r
-  public final static boolean isL03Tracker=getIsL03tracker();\r
-  public final  static boolean upload_logs_via_ftp=false;\r
-  final static String KeyProtocolServerIP="ProtocolServerIP";\r
-  final static String KeyProtocolServerHOST="ProtocolServerHOST";\r
-  final static String KeyProtocolServerPort="ProtoclServerPort";;\r
-  final static String KeyLogServerIP="LogServerIP";\r
-  final static String KeyLogServerPort="LogServerPort";\r
-  final static String KeyFotaServerUrl="FotaServerUrl";\r
-\r
-\r
-  final static String KeyPpgTestCycle="PPGTestCycle";\r
-  final static String KeyLocationCycle="LocationCycle";\r
-  final static String  KeyLocationMode="LocationMode";;\r
-\r
-  final static String KeyAlarmCycle="HeartBeatCycle";\r
-\r
-  final static String  KeyContactsList="ContactsList";\r
-  final static String  KeySOSNumbersList="SOSNumbersList";\r
-\r
-  final static String KeyIMEI = "persist.sys.protocol_IMEI";\r
-  public final static String KeyQRURIFILE = "persist.sys.qrUriFile";\r
-\r
-  final static String KeyPractiseState = "persist.sys.practising";\r
-\r
-  final static String KeyHeartBeatCycle="ServerHeartBeatCycle";\r
-\r
-\r
-  final static String KeyLogFtpServer="FtpServerHost";\r
-  final static String KeyLogFtpUser="FtpServerUser";\r
-  final static String KeyLogFtpPWD="FtpServerPWD";\r
-\r
-\r
-  final static String KeyWiFiSSID="WiFiSSID";\r
-  final static String KeyWiFiPasswd="WiFiPWD";\r
-  final static String KeyWiFiEncyptType="WiFiEncryptType";\r
-\r
-  final static String KeySMSPassword="SMSPWD";\r
-  final static String DefaultSMSPassword="non";\r
-\r
-  final static String KeyTempTestCycle="TempTestCycle";\r
-\r
-\r
-  final static String KeyPPGadust="KeyPPGAdjust";\r
-  final static String KeyBPHadust="KeyBPHAdjust";\r
-  final static String KeyBPLadust="KeyBPLAdjust";\r
-  final static String KeySPo2adust="KeySPo2Adjust";\r
-\r
-  final static String KeyPolingCycleCheckAnti="PolingCycleCheckAnti";\r
-  final static String KeyBleScanCycle="BleScanCycle";\r
-\r
-  final static String KeyLastUnReadMessage="UnreadMsg";\r
-\r
-\r
-  public static void setDurationOfVibration(Context context, int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KEYDurationOfVibration,cycle);\r
-  }\r
-\r
-  public static int getDurationOfVibration(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KEYDurationOfVibration,1);\r
-  }\r
-\r
-  public static void setMasterVolume(Context context, int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KeyMasterVolume,cycle);\r
-  }\r
-\r
-  public static int getMasterVolume(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyMasterVolume,15);\r
-  }\r
-\r
-\r
-  public static void setCheckAntiPolingCycle(Context context, int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KeyPolingCycleCheckAnti,cycle);\r
-  }\r
-\r
-  public static int getCheckAntiPolingCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyPolingCycleCheckAnti,0);\r
-  }\r
-\r
-  public static void setBleScanCycle(Context context, int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KeyBleScanCycle,cycle);\r
-  }\r
-\r
-  public static int getBleScanCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyBleScanCycle,0);\r
-  }\r
-\r
-  public static String getLastUnReadMessage(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyLastUnReadMessage,"");\r
-  }\r
-\r
-  public static void setLastUnReadMessage(Context context,String smsPWD){\r
-    SharPreferenceUtil.setPrefString(context,KeyLastUnReadMessage,smsPWD);\r
-  }\r
-\r
-  public static String getSMSPwd(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeySMSPassword,DefaultSMSPassword);\r
-  }\r
-\r
-  public static void setSMSPwd(Context context,String smsPWD){\r
-    SharPreferenceUtil.setPrefString(context,KeySMSPassword,smsPWD);\r
-  }\r
-  public static boolean getIsL03tracker(){\r
-    boolean ret=getSystemProperties("persist.sys.isL03tracker").toLowerCase().equals("true");\r
-    return ret;\r
-  }\r
-  public static String getWiFiSSID(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyWiFiSSID,DefaultWiFiSSID);\r
-  }\r
-\r
-  public static void setWiFiSSID(Context context,String ssid){\r
-    SharPreferenceUtil.setPrefString(context,KeyWiFiSSID,ssid);\r
-  }\r
-\r
-  public static String getWiFiPasswd(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyWiFiPasswd,DefaultWiFiPWD);\r
-  }\r
-\r
-  public static void setWiFiPasswd(Context context,String pwd){\r
-    SharPreferenceUtil.setPrefString(context,KeyWiFiPasswd,pwd);\r
-  }\r
-\r
-    public static String getWiFiEncryptType(Context context){\r
-        return SharPreferenceUtil.getPrefString(context,KeyWiFiEncyptType,DefaultWiFiEncryptType);\r
-    }\r
-\r
-    public static void setWiFiEncryptType(Context context,String type){\r
-        SharPreferenceUtil.setPrefString(context,KeyWiFiEncyptType,type);\r
-    }\r
-\r
-  public static String getFotaServerUrl(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyFotaServerUrl,"");\r
-  }\r
-\r
-  public static void setFotaServerUrl(Context context,String url){\r
-    SharPreferenceUtil.setPrefString(context,KeyFotaServerUrl,url);\r
-  }\r
-    public static String getFtpUser(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyLogFtpUser,DefaultLogFtpUser);\r
-  }\r
-\r
-  public static void setFtpUser(Context context,String user){\r
-    SharPreferenceUtil.setPrefString(context,KeyLogFtpUser,user);\r
-  }\r
-\r
-  public static String getFtpServer(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyLogFtpServer,DefaultLogFtpServer);\r
-  }\r
-\r
-  public static void setFtpServer(Context context,String host){\r
-    SharPreferenceUtil.setPrefString(context,KeyLogFtpServer,host);\r
-  }\r
-\r
-  public static String getFtpPWD(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyLogFtpPWD,DefaultLogFtpPWD);\r
-  }\r
-  public static void setFtpPWD(Context context,String PWD){\r
-    SharPreferenceUtil.setPrefString(context,KeyLogFtpPWD,PWD);\r
-  }\r
-\r
-  public static void setAlarmCycle(Context context, int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KeyAlarmCycle,cycle);\r
-  }\r
-\r
-  //默认3分钟,刚刚wakeup的时候1分钟\r
-  public static int getAlarmCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyAlarmCycle,3);\r
-  }\r
-\r
-  public static void setProtocolServerPort(Context context, int serverPort){\r
-//    SharPreferenceUtil.setPrefString(context,KeyProtocolServerIP,serverIP);\r
-    SharPreferenceUtil.setPrefInt(context,KeyProtocolServerPort,serverPort);\r
-  }\r
-\r
-  public static void setProtocolServerHost(Context context,String host){\r
-    SharPreferenceUtil.setPrefString(context,KeyProtocolServerHOST,host);\r
-  }\r
-  //public static String getProtocolServerIP(Context context){\r
- //   return SharPreferenceUtil.getPrefString(context,KeyProtocolServerIP,"118.178.155.223");\r
- // }\r
-\r
-  public static void loadModCycleSettings(Runtime runtime){\r
-    Context context=runtime.getContextProxy().context;\r
-    ICLogger.i("current Cycles PPG "+ runtime.getPpgTestCycle()+" , LocationCycle "+runtime.getLocationInstance().getLocation_cycle()+" LocationMode "+runtime.getLocationInstance().getWorkingMod());\r
-    runtime.setPpgTestCycle(Config.getPPGTestCycle(context));\r
-    runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(context));\r
-    runtime.getLocationInstance().setWorkingMod(Config.getLocationMode(context));\r
-    ICLogger.i("current Cycles PPG "+ runtime.getPpgTestCycle()+" , LocationCycle "+runtime.getLocationInstance().getLocation_cycle()+" LocationMode "+runtime.getLocationInstance().getWorkingMod());\r
-\r
-    int mastervolume = getMasterVolume(context);\r
-    ICAudioManager.setMasterVolumn(context,mastervolume);\r
-\r
-    int duration= getDurationOfVibration(context);\r
-    VibrateUtil.setVibPattern(duration*1000);\r
-\r
-  }\r
-\r
-  public static void loadHearBeatSetting(Runtime runtime){\r
-    runtime.setHeartBeatCycle(Config.getHeartBeatCycle(runtime.getContextProxy().context));\r
-  }\r
-  public static void loadServerSettings(Runtime runtime){\r
-    runtime.setHostAndPort(Config.getProtocolServerHost(runtime.getContextProxy().context),Config.getProtocolServerPort(runtime.getContextProxy().context));\r
-  }\r
-\r
-  public static void setIMEI(Context context, String imei){\r
-    Util.setSystemProperties(KeyIMEI,imei);\r
-  }\r
-\r
-  public static String getIMEI(Context context){\r
-    return Util.getSystemProperties(KeyIMEI,"");\r
-  }\r
-\r
-  public static String getProtocolServerHost(Context context){\r
-    String host;\r
-    host= SharPreferenceUtil.getPrefString(context,KeyProtocolServerHOST,protocolAPIHelper.getDefaultServerIP());\r
-    return host;\r
-   }\r
-\r
-\r
-  public static int getProtocolServerPort(Context context){\r
-      int port;\r
-      port= SharPreferenceUtil.getPrefInt(context,KeyProtocolServerPort,protocolAPIHelper.getDefaultServerPort());\r
-      return port;\r
-  }\r
-\r
-  public static void setConfigInitFlag(Context context,int flag){\r
-    SharPreferenceUtil.setPrefInt(context,"ConfigInitFlag",flag);\r
-  }\r
-\r
-  public static int getConfigInitFlag(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,"ConfigInitFlag",0);\r
-  }\r
-  public static void setLogServerIP(Context context,String serverIP,int serverPort){\r
-\r
-    SharPreferenceUtil.setPrefString(context,KeyLogServerIP,serverIP);\r
-    SharPreferenceUtil.setPrefInt(context,KeyLogServerPort,serverPort);\r
-\r
-  }\r
-  public static String getLogServerIP(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyLogServerIP,"http://icfota.snicker.com.cn:8089/UploadFile.jsp");\r
-  }\r
-\r
-  public static int getLogServerPort(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyLogServerPort,8089);\r
-  }\r
-\r
-\r
-  public static void setPPGTestCycle(Context context,int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KeyPpgTestCycle,cycle);\r
-  }\r
-\r
-  public static int getPPGTestCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyPpgTestCycle,0);\r
-  }\r
-\r
-\r
-  public static int getHeartBeatCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyHeartBeatCycle,5);\r
-  }\r
-\r
-  public static void setHeartBeatCycle(Context context,int cycle){\r
-    SharPreferenceUtil.setPrefInt(context,KeyHeartBeatCycle,cycle);\r
-  }\r
-  public static void setLocationCycle(Context context,int cycle_second){\r
-    SharPreferenceUtil.setPrefInt(context,KeyLocationCycle,cycle_second);\r
-  }\r
-\r
-  public static int getLocationCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyLocationCycle,900);\r
-  }\r
-\r
-  public static void setLocationMode(Context context,int mode){\r
-    ICLogger.i("setLocationMode "+mode);\r
-    SharPreferenceUtil.setPrefInt(context,KeyLocationMode,mode);\r
-  }\r
-\r
-\r
-  public static int getLocationMode(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyLocationMode, ICLocation.NORMAL_MOD);\r
-  }\r
-\r
-    private static final String KeyBootUpDate = "bootupdate";\r
-  public static boolean logBootDate(Context context){\r
-  //如果时间和最后一次时间不同,则重置,否则启动次数+1\r
-    if (isFirstBootToday(context)) {\r
-      SharPreferenceUtil.setPrefString(context, KeyBootUpDate, TimeUtil.getSystemTime4());\r
-      return true;\r
-    }else{\r
-      return false;\r
-    }\r
-  }\r
-\r
-  private static String getLastBootupDate(Context context){\r
-    return SharPreferenceUtil.getPrefString(context,KeyBootUpDate,"");\r
-  }\r
-  private static boolean isFirstBootToday(Context context){\r
-      //第一次启动记录的日期,当前日期只要相同,就认为有启动过。\r
-      //如果手表一直没有重启过,则每次resetStepCount的时候把启动时间更新到当天,\r
-      //从而解决第二天重启就会被重置的问题!\r
-    String currentDate=TimeUtil.getSystemTime4();\r
-    String lastDate=getLastBootupDate(context);\r
-    boolean ret=false;\r
-    if (currentDate.equals(lastDate)) {\r
-      ret= false;\r
-    }else\r
-    {\r
-      ret= true;\r
-    }\r
-    ICLogger.i("Current BootDate="+currentDate+", Last BootDate="+lastDate+", ret="+ret);\r
-    return ret;\r
-  }\r
-\r
-  //收到语音微聊广播消息给外部窗口\r
-  public static boolean do_broadCast_message=false;\r
-\r
-  //每次心跳时都检测逃逸并报警\r
-  public static boolean needAllwaysAlarmFenceOut=false;\r
-  //每次心跳时都检测剪断并报警,只报警\r
-  public static boolean needAllwaysAlarmCutOff=false;\r
-\r
-  //体温非正常报警\r
-  public static boolean needTemperature_abnormal_alarm=false;\r
-  public static boolean A9_noBroadCastActionStrip=false;\r
-  public static boolean C5_noBroadCastActionStrip=false;\r
-  public static boolean L004_BroadCastActionStrip=false;\r
-\r
-  //停止系统NTP时钟同步标志\r
-  public static boolean disable_ntp_server=false;\r
-\r
-  //需要系统发送已阅读消息的标志\r
-  public static boolean noPushTxtReadReply=true;\r
-  //蓝牙定位扫描 协议0模式,扫到beacon信标时,如果属于第一次扫到的进入状态(解除逃逸状态),发送服务器的标志位,主要由于C5客户只要逃逸,不要解除逃逸消息。\r
-  public static boolean noBLE_RelaseEscapeAlarm=true;\r
-\r
-  public static void enable_NTP_Server(Context context,boolean enable){\r
-    try {\r
-      int autotime = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME);\r
-      int autotimezone = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME_ZONE);\r
-\r
-      ICLogger.i("get NTP Settings AutoTime "+autotime+" AutoTimeZone "+autotimezone);\r
-\r
-      if(enable)\r
-      {\r
-        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);\r
-        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME, 1);\r
-      }else {\r
-        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);\r
-        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME, 0);\r
-      }\r
-      autotime = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME);\r
-      autotimezone = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME_ZONE);\r
-      ICLogger.i("get NTP Settings AutoTime "+autotime+" AutoTimeZone "+autotimezone);\r
-    } catch (Settings.SettingNotFoundException e) {\r
-      e.printStackTrace();\r
-      ICLogger.e(e.getMessage(),e);\r
-    }\r
-  }\r
-  public static void LoadMessageConfigs(){\r
-\r
-    String tmp=Util.getSystemProperties("persist.sys.doBroadcastMSG");\r
-    boolean ret=false;\r
-    if (tmp.equals("true"))\r
-      ret=true;\r
-\r
-    do_broadCast_message = ret;\r
-\r
-    noPPGSensor=(ICJniUtils.isPPGavailable()==0);\r
-    noTempSensor=(ICJniUtils.isTemperatureDevAvailable()==0);\r
-\r
-    //默认关闭NTP\r
-    disable_ntp_server=Util.getSystemProperties("persist.sys.disableNTP","false").equals("true");\r
-\r
-    c43_branch_name=Util.getSystemProperties("persist.sys.c43.branch");\r
-\r
-    if ((c43_branch_name.equals("l03")) ||(c43_branch_name.equals("l05"))){\r
-        noPushTxtNotifyDialog=true;\r
-        noSMSNotifyDialog=true;\r
-        noVoiceNotifyDialog=true;\r
-        noTempSensor=true;\r
-        if (c43_branch_name.equals("l05")) {\r
-          SOSNoNeedDial=true;//采用新写的SOS,协议只需要发送消息,无需控制拨号。\r
-          noPPGSensor=false;\r
-        }else{\r
-          noPPGSensor=true;\r
-        }\r
-    }\r
-    custom_name=Util.getSystemProperties("persist.sys.customname");\r
-    ICLogger.i("get CUSTOMNAME "+custom_name);\r
-    if (custom_name.equals("H88")||custom_name.equals("H88A") ){\r
-      noPushTxtNotifyDialog=true;\r
-      noSMSNotifyDialog=false;\r
-      noVoiceNotifyDialog=false;\r
-      noPPGSensor=false;\r
-      noTempSensor=false;\r
-      needBroadcastAntiAlarm=false;\r
-    }else if  ((custom_name.equals("AK")) ){\r
-        noPushTxtNotifyDialog=true;\r
-        noSMSNotifyDialog=true;\r
-        noVoiceNotifyDialog=true;\r
-      noPPGSensor=false;\r
-      noTempSensor=true;\r
-      SOSNoNeedDial=true; //采用新写的SOS,协议只需要发送消息,无需控制拨号。\r
-    }else if  ((custom_name.equals("YT")) ){\r
-      noPushTxtNotifyDialog=false;\r
-      noSMSNotifyDialog=false;\r
-      noVoiceNotifyDialog=false;\r
-      noPPGSensor=false;\r
-      noTempSensor=true;\r
-    }else if ((custom_name.equals("l004")) ) {\r
-      noPushTxtNotifyDialog=true;\r
-      noSMSNotifyDialog=true;\r
-      noVoiceNotifyDialog=true;\r
-      needBroadcastAntiAlarm=false;\r
-      needBroadcastCutoffAlarm=true;\r
-      needAllwaysAlarmCutOff=false;\r
-      needAllwaysAlarmFenceOut=false;\r
-      needTemperature_abnormal_alarm=false;\r
-      noPPGSensor=false;\r
-      noTempSensor=false;\r
-      L004_BroadCastActionStrip=true;\r
-    }else if (custom_name.equals("YQ") ||custom_name.equals("YQ_EN")  ) { //A9-YQ\r
-      noPushTxtNotifyDialog=false;\r
-      noSMSNotifyDialog=true;\r
-      noVoiceNotifyDialog=true;\r
-      noBroadCastPushTxtNotify=true;\r
-      noBroadCastSMSNotify=true;\r
-      needBroadcastAntiAlarm=false;\r
-      needBroadcastCutoffAlarm=true;\r
-      needAllwaysAlarmCutOff=true;\r
-      needAllwaysAlarmFenceOut=true;\r
-      needTemperature_abnormal_alarm=true;\r
-      noPushTxtReadReply=false;//A9需要阅读反馈\r
-      noPPGSensor=false;\r
-      noTempSensor=false;\r
-      A9_noBroadCastActionStrip=true;\r
-    }else if (custom_name.equals("SGL"))\r
-    {\r
-      noPushTxtNotifyDialog=false;\r
-      noSMSNotifyDialog=false;\r
-      noVoiceNotifyDialog=true;\r
-      needBroadcastAntiAlarm=true;\r
-      needBroadcastCutoffAlarm=true;\r
-      needAllwaysAlarmCutOff=true;\r
-      needAllwaysAlarmFenceOut=false;\r
-      needTemperature_abnormal_alarm=false;\r
-      noPPGSensor=true;\r
-      noTempSensor=true;\r
-      C5_noBroadCastActionStrip=true;\r
-    }else if(custom_name.equals("L02")){\r
-      noPushTxtReadReply=false;//即爱需要阅读反馈\r
-    }else{\r
-      noBroadCastPushTxtNotify=true;\r
-    }\r
-\r
-\r
-  }\r
-\r
-  public static void loadTemperatureSettings(Runtime runtime){\r
-    runtime.temp_test_Cycle = SharPreferenceUtil.getPrefInt(runtime.getContextProxy().context, KeyTempTestCycle, 60*60);\r
-  }\r
-\r
-  public static void setTemperatureTestCycle(Runtime runtime,int cycle_seconds) {\r
-    SharPreferenceUtil.setPrefInt(runtime.getContextProxy().context,KeyTempTestCycle,cycle_seconds);\r
-    loadTemperatureSettings(runtime);\r
-  }\r
-    public static boolean isUsingCustomServer=false;\r
-\r
-  public static void setCustomServer(Context context,boolean isusingCutomerServer,String serverip,int serverport) {\r
-\r
-      if (isusingCutomerServer)\r
-          Util.setSystemProperties("persist.sys.UsingCustomServer","true");\r
-      else\r
-          Util.setSystemProperties("persist.sys.UsingCustomServer","false");\r
-\r
-\r
-    Util.setSystemProperties("persist.sys.customserverip",serverip);\r
-    Util.setSystemProperties("persist.sys.customserverport",String.valueOf(serverport));\r
-    setProtocolServerHost(context,serverip);\r
-    setProtocolServerPort(context,serverport);\r
-\r
-    loadCustomServerAddr(context);\r
-\r
-  }\r
-  public static void loadCustomServerAddr(Context context){\r
-    String tmp=Util.getSystemProperties("persist.sys.UsingCustomServer");\r
-    boolean ret=false;\r
-    if (tmp.equals("true"))\r
-      ret=true;\r
-\r
-    isUsingCustomServer=ret;\r
-\r
-    String serverip="";\r
-    int serverport=0;\r
-    if(isUsingCustomServer){\r
-      serverip= Util.getSystemProperties("persist.sys.customserverip");\r
-      serverport= Integer.valueOf(Util.getSystemProperties("persist.sys.customserverport"));\r
-      setProtocolServerHost(context,serverip);\r
-      setProtocolServerPort(context,serverport);\r
-\r
-    }else{\r
-      setProtocolServerHost(context, protocolAPIHelper.getDefaultServerIP());\r
-      setProtocolServerPort(context,protocolAPIHelper.getDefaultServerPort());\r
-    }\r
-    ICLogger.i("current protocol_no="+protocol_no+" , isUsingCustomServier="+isUsingCustomServer+", server host="+\r
-            getProtocolServerHost(context)+", server port="+getProtocolServerPort(context));\r
-  }\r
-\r
-  public static boolean noLocationCycle=getNoLocationCycleFlag();\r
-  public static boolean getNoLocationCycleFlag(){\r
-      String tmp=Util.getSystemProperties("persist.sys.NoLocationCycle");\r
-      boolean ret=false;\r
-      if (tmp.equals("true"))\r
-          ret=true;\r
-\r
-      noLocationCycle=ret;\r
-     return ret;\r
-  }\r
-\r
-  public static final int PROTOCOL_JIAI=0;\r
-  public static final int PROTOCOL_BEEHOME=1;\r
-  public static final int PROTOCOL_IC=2;\r
-  public static final int PROTOCOL_FZD=3;\r
-  public static final int PROTOCOL_MQTT=4;\r
-\r
-  public static int protocol_no=getProtocolNumber();\r
-  public static int getProtocolNumber(){\r
-    String tmp=Util.getSystemProperties("persist.sys.protocol_no");\r
-    int ret=0;\r
-    if (tmp!=null && !tmp.isEmpty()&& Util.isNumeric(tmp)) {\r
-      ret = Integer.parseInt(tmp);\r
-      switch(ret){\r
-        case PROTOCOL_JIAI:\r
-          ICLogger.i("协议 JIAI");\r
-          break;\r
-        case PROTOCOL_BEEHOME:\r
-          ICLogger.i("协议 BEEHOME");\r
-          break;\r
-        case PROTOCOL_IC:\r
-          ICLogger.i("协议 IC");\r
-          break;\r
-        case PROTOCOL_FZD:\r
-          ICLogger.i("协议 FZD");\r
-          break;\r
-        case PROTOCOL_MQTT:\r
-          ICLogger.i("协议 MQTT");\r
-          break;\r
-        default:\r
-          ICLogger.i("协议版本 目前支持0,1,2,3,4 。");\r
-          break;\r
-      }\r
-    }else{\r
-      ICLogger.i("协议版本要是数字,目前支持0,1,2,3,4 。");\r
-    }\r
-    protocol_no=ret;\r
-    return ret;\r
-  }\r
-\r
-\r
-  public static void setPPGAdjust(Context context,int adjust){\r
-    SharPreferenceUtil.setPrefInt(context,KeyPPGadust,adjust);\r
-  }\r
-\r
-\r
-  public static int getPPGAdjust(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyPPGadust, 0);\r
-  }\r
-\r
-  public static void setBPHAdjust(Context context,int adjust){\r
-    SharPreferenceUtil.setPrefInt(context,KeyBPHadust,adjust);\r
-  }\r
-\r
-\r
-  public static int getBPHAdjust(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyBPHadust, 0);\r
-  }\r
-\r
-\r
-\r
-  public static int getBPLAdjust(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyBPLadust, 0);\r
-  }\r
-\r
-  public static void setBPLAdjust(Context context,int adjust){\r
-    SharPreferenceUtil.setPrefInt(context,KeyBPLadust,adjust);\r
-  }\r
-\r
-  public static void setSPo2Adjust(Context context,int adjust){\r
-    SharPreferenceUtil.setPrefInt(context,KeySPo2adust,adjust);\r
-  }\r
-\r
-  public static int getSPo2Adjust(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeySPo2adust, 0);\r
-  }\r
-\r
-  public static void loadPPG_BPH_BPL_SPO2_adjustvalue(Context context,Runtime runtime){\r
-    int ppgadj,bphadj,bpladj,spo2adj;\r
-    ppgadj=getPPGAdjust(context);\r
-    bphadj=getBPHAdjust(context);\r
-    bpladj=getBPLAdjust(context);\r
-    spo2adj=getSPo2Adjust(context);\r
-    runtime.getHRS().setAdjust(ppgadj,bphadj,bpladj,spo2adj);\r
-    ICLogger.i("Load Health adjust value  ppg "+ppgadj+", bph "+bphadj+", bpl "+bpladj+", spo2 "+spo2adj);\r
-  }\r
-\r
-\r
-\r
-  //心率血压血氧校准值\r
-  public static String getPPG_ECG_adjustValue(){\r
-    return Util.getSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_PPG_ECG_ADJUST,"0,0,0,0");\r
-  }\r
-\r
-  public static void setPPG_ECG_adjustValue(String adjvalue){\r
-    Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_PPG_ECG_ADJUST,adjvalue);\r
-  }\r
-\r
-  //久坐时间获取\r
-  public static int getKeepSitRangeInMinutes(Context context ){\r
-    return Util.getSystemPropertiesInt("persist.sys."+Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,0);\r
-//    return SharPreferenceUtil.getPrefIntPublic(context,Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,0);\r
-  }\r
-\r
-  //久坐时间设置\r
-  public static void setKeepSitRangeInMinutes(Context context, int RangeInMinutes){\r
-      Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,RangeInMinutes);\r
-//    SharPreferenceUtil.setPrefIntPublic(context,Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,RangeInMinutes);\r
-  }\r
-\r
-  public static void setSleepDate(Context context,String dateyyyyMMddHHmmss){\r
-    Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE_DATE,dateyyyyMMddHHmmss);\r
-//    SharPreferenceUtil.setPrefStringPublic(context,Constants.SHAREKEY_SETTING_SLEEP_SCORE_DATE,dateyyyyMMddHHmmss);\r
-  }\r
-\r
-\r
-  public static void setSleepScore(Context context,int score){\r
-//    SharPreferenceUtil.setPrefIntPublic(context,Constants.SHAREKEY_SETTING_SLEEP_SCORE,score);\r
-    Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE,score);\r
-\r
-  }\r
-\r
-    public static String getSleepDate(Context context){\r
-        return Util.getSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE_DATE,"");\r
-    }\r
-\r
-\r
-    public static int getSleepScore(Context context){\r
-\r
-        return Util.getSystemPropertiesInt("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE,0);\r
-\r
-    }\r
-  public static void setNeedCutOff(Context context,boolean enAnti){\r
-    SharPreferenceUtil.setPrefBoolean(context,"NeedCutOff",enAnti);\r
-  }\r
-\r
-  public static boolean getNeedCutOff(Context context){\r
-    return SharPreferenceUtil.getPrefBoolean(context,"NeedCutOff", false);\r
-  }\r
-    public static void setNeedAntiOff(Context context,boolean enAnti){\r
-      SharPreferenceUtil.setPrefBoolean(context,"NeedAntiOff",enAnti);\r
-    }\r
-\r
-    public static boolean getNeedAntiOff(Context context){\r
-      return SharPreferenceUtil.getPrefBoolean(context,"NeedAntiOff", false);\r
-    }\r
-    public static boolean enableSleep=false;\r
-  /**\r
-   * 参考数据,平均每分钟步数来判断,大于 KeepSitJudgementRefValue 认为没有坐着。小于等于这个值认为坐着。\r
-   */\r
-  public static int  KeepSitJudgementRefValue=30;\r
-\r
-  /***\r
-   * persist.sys.alarmConfig=ALARM_SOS,ALARM_LOWBATTERY,ALARM_ANTIOFF,ALARM_WEARED,ALARM_CUTOFF,ALARM_FALL,ALARM_ABNORMAL_HEART_RATE,ALARM_HEART_RATE_HIGH,ALARM_HEART_RATE_LOW,ALARM_BPH_HIGH,ALARM_BPH_LOW,ALARM_BPL_HIGH,ALARM_BPL_LOW,ALARM_SEDENTARY,ALARM_ILLEGAL_CUTOFF,ALARM_LOCK_WATCH,ALARM_TEMP_HIGH,ALARM_TEMP_LOW,ALARM_POWER_OFF,ALARM_ESCAPE,ALARM_NONE\r
-   * 配在里面的表示开启,没配的表示关闭。 默认ALARM_SOS,ALARM_LOWBATTERY,ALARM_POWER_OFF开启\r
-   * ALARM_ILLEGAL_CUTOFF,ALARM_FALL,ALARM_ABNORMAL_HEART_RATE 没有使用,设置了也没有用\r
-   */\r
-  public static void loadAlarmConfig(){\r
-    String configvalues=Util.getSystemProperties("persist.sys.alarmConfig","");\r
-    String[] values=configvalues.split(",");\r
-    if (values.length>0){\r
-      for (int i=0; i< values.length;i++)\r
-      {\r
-        for (Runtime.AlarmType at: Runtime.AlarmType.values()) {\r
-          if (values[i].trim().equals(at.name())){\r
-            ConfigAlarm(at,true);\r
-            break;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    dumpAlarmConfig();\r
-  }\r
-\r
-  public static void ConfigAlarm(Runtime.AlarmType alarmType,boolean enabled){\r
-    AlarmConfiglist.put(alarmType.ordinal(),enabled);\r
-  }\r
-  public static void dumpAlarmConfig(){\r
-    for (int i=0;i<AlarmConfiglist.size();i++) {\r
-      ICLogger.i(Runtime.AlarmType.values()[i].name()+" "+AlarmConfiglist.get(i));\r
-    }\r
-  }\r
-  private static HashMap<Integer,Boolean> AlarmConfiglist;\r
-  static {\r
-    AlarmConfiglist=new HashMap<Integer,Boolean>();\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_SOS.ordinal(),true);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_LOWBATTERY.ordinal(),true);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ANTIOFF.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_WEARED.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_CUTOFF.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_FALL.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ABNORMAL_HEART_RATE.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_HEART_RATE_HIGH.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_HEART_RATE_LOW.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPH_HIGH.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPH_LOW.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPL_HIGH.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPL_LOW.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_SEDENTARY.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_LOCK_WATCH.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_TEMP_HIGH.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_TEMP_LOW.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_POWER_OFF.ordinal(),true);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ESCAPE.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_NONE.ordinal(),false);\r
-    AlarmConfiglist.put(Runtime.AlarmType.ALARM_REMOVE_SOS.ordinal(),true);\r
-  }\r
-\r
-  public static boolean isAlarmTypeEnabled(Runtime.AlarmType alarmType){\r
-\r
-    boolean en=false;\r
-    if (AlarmConfiglist.containsKey(alarmType.ordinal())){\r
-      en=AlarmConfiglist.get(alarmType.ordinal());\r
-    }\r
-    return en;\r
-  }\r
-  public static boolean needWaterMark(){\r
-    String customname=getSystemProperties("persist.sys.needWaterMark","true");\r
-    if(customname.trim().equals("true")){\r
-      return true;\r
-    }else\r
-      return false;\r
-  }\r
-}\r
-\r
+package com.enqualcomm.support;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import com.enqualcomm.support.bean.ICLocation;
+import com.enqualcomm.support.bean.Runtime;
+import com.enqualcomm.support.utils.ICAudioManager;
+import com.enqualcomm.support.utils.ICLogger;
+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 com.ic.jni.ICJniUtils;
+import com.ic.protocols.protocolAPIHelper;
+
+import org.json.JSONException;
+import org.json.JSONStringer;
+
+import java.util.HashMap;
+
+import static com.enqualcomm.support.utils.Util.getSystemProperties;
+
+public class Config {
+  public static final boolean LOG_TOFILE=true;
+  public static int antioff = 0;
+  public static int heart_rate = 0;
+  private static String json;
+  public static int defaultHeartbeatCycle=5;
+  public static int sw_release_no = -1;
+
+
+  //如果重试都失败,则丢弃命令不进行盲点续传
+  public static boolean discard_cmd_after_retryfailed=true;
+
+  public static boolean forceMoveCheck=true;
+  public static boolean forceWearCheck=true;
+
+  private static final String KEYDurationOfVibration = "DurationVib";
+  private static final String KeyMasterVolume = "MasterVolume";
+
+  public static final String DefaultLogFtpServer="icfota.snicker.com.cn";
+  public static final String DefaultLogFtpUser="ftpuser";
+  public static final String DefaultLogFtpPWD="iclog";
+
+
+  public static final String DefaultWiFiSSID="Xplay6";
+  public static final String DefaultWiFiPWD="87654321";
+  public static final String DefaultWiFiEncryptType="psk";
+
+  public static final int GPSLocationTimeoutInSeconds=50;
+  public static final int WiFiLocationTimeoutInSeconds=12;
+
+  public static String c43_branch_name="none";
+  public static String custom_name="none";
+
+  //配置是否广播提示框信息给外部应用显示
+  public static boolean noBroadCastSMSNotify=false;
+  public static boolean noBroadCastPushTxtNotify=false;
+
+
+  //protocol内部Dialog配置,true表示用外部提示窗,false表示用协议内部提示窗
+  public static boolean noSMSNotifyDialog=false;
+  public static boolean noPushTxtNotifyDialog=false;
+  public static boolean noVoiceNotifyDialog=false;
+
+  //是否SOS拨号的开关,false表示只发送系统sosalarm,不发起SOS拨号
+  public static boolean SOSNoNeedDial=false;
+
+  //ic68只有体温没有腕温,它开启代表原来的腕温函数取出的就是体温,不需要再进行换算了。
+  public static boolean disableWristTemp=false;
+  //配置是否有温度传感器
+  public static boolean noTempSensor=false;
+  //配置是否有心率传感器
+  public static boolean noPPGSensor=false;
+  //配置脱腕报警是否需要弹出脱腕提示 默认关闭
+  public static boolean needBroadcastAntiAlarm=false;
+  //配置脱腕报警是否需要弹出剪断提示 默认开启
+  public static boolean needBroadcastCutoffAlarm=true;
+
+
+  //定位是否使用wifi的配置。
+  public static boolean disableWiFiScan=false;
+
+  public static int BLEScanProtocol=0; /** 0 代表扫描beacon后 自行判断是否在指定区域,需要协议绑定beacon地址。
+                                        *  1  代表扫描beacon后,直接把扫描结果上报即可。
+                                        **/
+
+  public static boolean UsePolingCheckWeared=false;
+
+  static  {
+    disableWiFiScan=Util.getSystemProperties("persist.sys.disableWiFiLocation","false").equals("true");
+    disableWristTemp=Util.getSystemProperties("persist.sys.disableWristTemp","false").equals("true");
+    BLEScanProtocol=Util.getSystemPropertiesInt("persist.sys.BLEScanProtocol",0);
+    UsePolingCheckWeared=Util.getSystemProperties("persist.sys.PolingCheckAnti","false").equals("true");
+  }
+  
+  private static String make() {
+    try {
+      return (new JSONStringer()).object()
+              .key("cmd").value("Init")
+              .key("sw_version").value("eiot_V1.0.0")
+              .key("protocol_version").value("2.0")
+              .key("product").value(2L)
+              .key("swReleaseNo").value(sw_release_no)
+              .endObject().toString();
+    } catch (JSONException jSONException) {
+      jSONException.printStackTrace();
+      return "";
+    } 
+  }
+  
+  public static String toJson() {
+    if (TextUtils.isEmpty(json))
+      json = make(); 
+    return json;
+  }
+
+
+  public final static boolean isL03Tracker=getIsL03tracker();
+  public final  static boolean upload_logs_via_ftp=false;
+  final static String KeyProtocolServerIP="ProtocolServerIP";
+  final static String KeyProtocolServerHOST="ProtocolServerHOST";
+  final static String KeyProtocolServerPort="ProtoclServerPort";;
+  final static String KeyLogServerIP="LogServerIP";
+  final static String KeyLogServerPort="LogServerPort";
+  final static String KeyFotaServerUrl="FotaServerUrl";
+
+
+  final static String KeyPpgTestCycle="PPGTestCycle";
+  final static String KeyLocationCycle="LocationCycle";
+  final static String  KeyLocationMode="LocationMode";;
+
+  final static String KeyAlarmCycle="HeartBeatCycle";
+
+  final static String  KeyContactsList="ContactsList";
+  final static String  KeySOSNumbersList="SOSNumbersList";
+
+  final static String KeyIMEI = "persist.sys.protocol_IMEI";
+  public final static String KeyQRURIFILE = "persist.sys.qrUriFile";
+
+  final static String KeyPractiseState = "persist.sys.practising";
+
+  final static String KeyHeartBeatCycle="ServerHeartBeatCycle";
+
+
+  final static String KeyLogFtpServer="FtpServerHost";
+  final static String KeyLogFtpUser="FtpServerUser";
+  final static String KeyLogFtpPWD="FtpServerPWD";
+
+
+  final static String KeyWiFiSSID="WiFiSSID";
+  final static String KeyWiFiPasswd="WiFiPWD";
+  final static String KeyWiFiEncyptType="WiFiEncryptType";
+
+  final static String KeySMSPassword="SMSPWD";
+  final static String DefaultSMSPassword="non";
+
+  final static String KeyTempTestCycle="TempTestCycle";
+
+
+  final static String KeyPPGadust="KeyPPGAdjust";
+  final static String KeyBPHadust="KeyBPHAdjust";
+  final static String KeyBPLadust="KeyBPLAdjust";
+  final static String KeySPo2adust="KeySPo2Adjust";
+
+  final static String KeyPolingCycleCheckAnti="PolingCycleCheckAnti";
+  final static String KeyBleScanCycle="BleScanCycle";
+
+  final static String KeyLastUnReadMessage="UnreadMsg";
+
+
+  public static void setDurationOfVibration(Context context, int cycle){
+    SharPreferenceUtil.setPrefInt(context,KEYDurationOfVibration,cycle);
+  }
+
+  public static int getDurationOfVibration(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KEYDurationOfVibration,1);
+  }
+
+  public static void setMasterVolume(Context context, int cycle){
+    SharPreferenceUtil.setPrefInt(context,KeyMasterVolume,cycle);
+  }
+
+  public static int getMasterVolume(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyMasterVolume,15);
+  }
+
+
+  public static void setCheckAntiPolingCycle(Context context, int cycle){
+    SharPreferenceUtil.setPrefInt(context,KeyPolingCycleCheckAnti,cycle);
+  }
+
+  public static int getCheckAntiPolingCycle(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyPolingCycleCheckAnti,0);
+  }
+
+  public static void setBleScanCycle(Context context, int cycle){
+    SharPreferenceUtil.setPrefInt(context,KeyBleScanCycle,cycle);
+  }
+
+  public static int getBleScanCycle(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyBleScanCycle,0);
+  }
+
+  public static String getLastUnReadMessage(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyLastUnReadMessage,"");
+  }
+
+  public static void setLastUnReadMessage(Context context,String smsPWD){
+    SharPreferenceUtil.setPrefString(context,KeyLastUnReadMessage,smsPWD);
+  }
+
+  public static String getSMSPwd(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeySMSPassword,DefaultSMSPassword);
+  }
+
+  public static void setSMSPwd(Context context,String smsPWD){
+    SharPreferenceUtil.setPrefString(context,KeySMSPassword,smsPWD);
+  }
+  public static boolean getIsL03tracker(){
+    boolean ret=getSystemProperties("persist.sys.isL03tracker").toLowerCase().equals("true");
+    return ret;
+  }
+  public static String getWiFiSSID(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyWiFiSSID,DefaultWiFiSSID);
+  }
+
+  public static void setWiFiSSID(Context context,String ssid){
+    SharPreferenceUtil.setPrefString(context,KeyWiFiSSID,ssid);
+  }
+
+  public static String getWiFiPasswd(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyWiFiPasswd,DefaultWiFiPWD);
+  }
+
+  public static void setWiFiPasswd(Context context,String pwd){
+    SharPreferenceUtil.setPrefString(context,KeyWiFiPasswd,pwd);
+  }
+
+    public static String getWiFiEncryptType(Context context){
+        return SharPreferenceUtil.getPrefString(context,KeyWiFiEncyptType,DefaultWiFiEncryptType);
+    }
+
+    public static void setWiFiEncryptType(Context context,String type){
+        SharPreferenceUtil.setPrefString(context,KeyWiFiEncyptType,type);
+    }
+
+  public static String getFotaServerUrl(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyFotaServerUrl,"");
+  }
+
+  public static void setFotaServerUrl(Context context,String url){
+    SharPreferenceUtil.setPrefString(context,KeyFotaServerUrl,url);
+  }
+    public static String getFtpUser(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyLogFtpUser,DefaultLogFtpUser);
+  }
+
+  public static void setFtpUser(Context context,String user){
+    SharPreferenceUtil.setPrefString(context,KeyLogFtpUser,user);
+  }
+
+  public static String getFtpServer(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyLogFtpServer,DefaultLogFtpServer);
+  }
+
+  public static void setFtpServer(Context context,String host){
+    SharPreferenceUtil.setPrefString(context,KeyLogFtpServer,host);
+  }
+
+  public static String getFtpPWD(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyLogFtpPWD,DefaultLogFtpPWD);
+  }
+  public static void setFtpPWD(Context context,String PWD){
+    SharPreferenceUtil.setPrefString(context,KeyLogFtpPWD,PWD);
+  }
+
+  public static void setAlarmCycle(Context context, int cycle){
+    SharPreferenceUtil.setPrefInt(context,KeyAlarmCycle,cycle);
+  }
+
+  //默认3分钟,刚刚wakeup的时候1分钟
+  public static int getAlarmCycle(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyAlarmCycle,3);
+  }
+
+  public static void setProtocolServerPort(Context context, int serverPort){
+//    SharPreferenceUtil.setPrefString(context,KeyProtocolServerIP,serverIP);
+    SharPreferenceUtil.setPrefInt(context,KeyProtocolServerPort,serverPort);
+  }
+
+  public static void setProtocolServerHost(Context context,String host){
+    SharPreferenceUtil.setPrefString(context,KeyProtocolServerHOST,host);
+  }
+  //public static String getProtocolServerIP(Context context){
+ //   return SharPreferenceUtil.getPrefString(context,KeyProtocolServerIP,"118.178.155.223");
+ // }
+
+  public static void loadModCycleSettings(Runtime runtime){
+    Context context=runtime.getContextProxy().context;
+    ICLogger.i("current Cycles PPG "+ runtime.getPpgTestCycle()+" , LocationCycle "+runtime.getLocationInstance().getLocation_cycle()+" LocationMode "+runtime.getLocationInstance().getWorkingMod());
+    runtime.setPpgTestCycle(Config.getPPGTestCycle(context));
+    runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(context));
+    runtime.getLocationInstance().setWorkingMod(Config.getLocationMode(context));
+    ICLogger.i("current Cycles PPG "+ runtime.getPpgTestCycle()+" , LocationCycle "+runtime.getLocationInstance().getLocation_cycle()+" LocationMode "+runtime.getLocationInstance().getWorkingMod());
+
+    int mastervolume = getMasterVolume(context);
+    ICAudioManager.setMasterVolumn(context,mastervolume);
+
+    int duration= getDurationOfVibration(context);
+    VibrateUtil.setVibPattern(duration*1000);
+
+  }
+
+  public static void loadHearBeatSetting(Runtime runtime){
+    runtime.setHeartBeatCycle(Config.getHeartBeatCycle(runtime.getContextProxy().context));
+  }
+  public static void loadServerSettings(Runtime runtime){
+    runtime.setHostAndPort(Config.getProtocolServerHost(runtime.getContextProxy().context),Config.getProtocolServerPort(runtime.getContextProxy().context));
+  }
+
+  public static void setIMEI(Context context, String imei){
+    Util.setSystemProperties(KeyIMEI,imei);
+  }
+
+  public static String getIMEI(Context context){
+    return Util.getSystemProperties(KeyIMEI,"");
+  }
+
+  public static String getProtocolServerHost(Context context){
+    String host;
+    host= SharPreferenceUtil.getPrefString(context,KeyProtocolServerHOST,protocolAPIHelper.getDefaultServerIP());
+    return host;
+   }
+
+
+  public static int getProtocolServerPort(Context context){
+      int port;
+      port= SharPreferenceUtil.getPrefInt(context,KeyProtocolServerPort,protocolAPIHelper.getDefaultServerPort());
+      return port;
+  }
+
+  public static void setConfigInitFlag(Context context,int flag){
+    SharPreferenceUtil.setPrefInt(context,"ConfigInitFlag",flag);
+  }
+
+  public static int getConfigInitFlag(Context context){
+    return SharPreferenceUtil.getPrefInt(context,"ConfigInitFlag",0);
+  }
+  public static void setLogServerIP(Context context,String serverIP,int serverPort){
+
+    SharPreferenceUtil.setPrefString(context,KeyLogServerIP,serverIP);
+    SharPreferenceUtil.setPrefInt(context,KeyLogServerPort,serverPort);
+
+  }
+  public static String getLogServerIP(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyLogServerIP,"http://icfota.snicker.com.cn:8089/UploadFile.jsp");
+  }
+
+  public static int getLogServerPort(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyLogServerPort,8089);
+  }
+
+
+  public static void setPPGTestCycle(Context context,int cycle_ninutes){
+    SharPreferenceUtil.setPrefInt(context,KeyPpgTestCycle,cycle_ninutes);
+  }
+
+  public static int getPPGTestCycle(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyPpgTestCycle,0);
+  }
+
+
+  public static int getHeartBeatCycle(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyHeartBeatCycle,5);
+  }
+
+  public static void setHeartBeatCycle(Context context,int cycle){
+    SharPreferenceUtil.setPrefInt(context,KeyHeartBeatCycle,cycle);
+  }
+  public static void setLocationCycle(Context context,int cycle_second){
+    SharPreferenceUtil.setPrefInt(context,KeyLocationCycle,cycle_second);
+  }
+
+  public static int getLocationCycle(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyLocationCycle,900);
+  }
+
+  public static void setLocationMode(Context context,int mode){
+    ICLogger.i("setLocationMode "+mode);
+    SharPreferenceUtil.setPrefInt(context,KeyLocationMode,mode);
+  }
+
+
+  public static int getLocationMode(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyLocationMode, ICLocation.NORMAL_MOD);
+  }
+
+    private static final String KeyBootUpDate = "bootupdate";
+  public static boolean logBootDate(Context context){
+  //如果时间和最后一次时间不同,则重置,否则启动次数+1
+    if (isFirstBootToday(context)) {
+      SharPreferenceUtil.setPrefString(context, KeyBootUpDate, TimeUtil.getSystemTime4());
+      return true;
+    }else{
+      return false;
+    }
+  }
+
+  private static String getLastBootupDate(Context context){
+    return SharPreferenceUtil.getPrefString(context,KeyBootUpDate,"");
+  }
+  private static boolean isFirstBootToday(Context context){
+      //第一次启动记录的日期,当前日期只要相同,就认为有启动过。
+      //如果手表一直没有重启过,则每次resetStepCount的时候把启动时间更新到当天,
+      //从而解决第二天重启就会被重置的问题!
+    String currentDate=TimeUtil.getSystemTime4();
+    String lastDate=getLastBootupDate(context);
+    boolean ret=false;
+    if (currentDate.equals(lastDate)) {
+      ret= false;
+    }else
+    {
+      ret= true;
+    }
+    ICLogger.i("Current BootDate="+currentDate+", Last BootDate="+lastDate+", ret="+ret);
+    return ret;
+  }
+
+  //收到语音微聊广播消息给外部窗口
+  public static boolean do_broadCast_message=false;
+
+  //每次心跳时都检测逃逸并报警
+  public static boolean needAllwaysAlarmFenceOut=false;
+  //每次心跳时都检测剪断并报警,只报警
+  public static boolean needAllwaysAlarmCutOff=false;
+
+  //体温非正常报警
+  public static boolean needTemperature_abnormal_alarm=false;
+  public static boolean A9_noBroadCastActionStrip=false;
+  public static boolean C5_noBroadCastActionStrip=false;
+  public static boolean L004_BroadCastActionStrip=false;
+
+  //停止系统NTP时钟同步标志
+  public static boolean disable_ntp_server=false;
+
+  //需要系统发送已阅读消息的标志
+  public static boolean noPushTxtReadReply=true;
+  //蓝牙定位扫描 协议0模式,扫到beacon信标时,如果属于第一次扫到的进入状态(解除逃逸状态),发送服务器的标志位,主要由于C5客户只要逃逸,不要解除逃逸消息。
+  public static boolean noBLE_RelaseEscapeAlarm=true;
+
+  public static void enable_NTP_Server(Context context,boolean enable){
+    try {
+      int autotime = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME);
+      int autotimezone = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME_ZONE);
+
+      ICLogger.i("get NTP Settings AutoTime "+autotime+" AutoTimeZone "+autotimezone);
+
+      if(enable)
+      {
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+      }else {
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+      }
+      autotime = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME);
+      autotimezone = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME_ZONE);
+      ICLogger.i("get NTP Settings AutoTime "+autotime+" AutoTimeZone "+autotimezone);
+    } catch (Settings.SettingNotFoundException e) {
+      e.printStackTrace();
+      ICLogger.e(e.getMessage(),e);
+    }
+  }
+  public static void LoadMessageConfigs(){
+
+    String tmp=Util.getSystemProperties("persist.sys.doBroadcastMSG");
+    boolean ret=false;
+    if (tmp.equals("true"))
+      ret=true;
+
+    do_broadCast_message = ret;
+
+    noPPGSensor=(ICJniUtils.isPPGavailable()==0);
+    noTempSensor=(ICJniUtils.isTemperatureDevAvailable()==0);
+
+    //默认关闭NTP
+    disable_ntp_server=Util.getSystemProperties("persist.sys.disableNTP","false").equals("true");
+
+    c43_branch_name=Util.getSystemProperties("persist.sys.c43.branch");
+
+    if ((c43_branch_name.equals("l03")) ||(c43_branch_name.equals("l05"))){
+        noPushTxtNotifyDialog=true;
+        noSMSNotifyDialog=true;
+        noVoiceNotifyDialog=true;
+        noTempSensor=true;
+        if (c43_branch_name.equals("l05")) {
+          SOSNoNeedDial=true;//采用新写的SOS,协议只需要发送消息,无需控制拨号。
+          noPPGSensor=false;
+        }else{
+          noPPGSensor=true;
+        }
+    }
+    custom_name=Util.getSystemProperties("persist.sys.customname");
+    ICLogger.i("get CUSTOMNAME "+custom_name);
+    if (custom_name.equals("H88")||custom_name.equals("H88A") ){
+      noPushTxtNotifyDialog=true;
+      noSMSNotifyDialog=false;
+      noVoiceNotifyDialog=false;
+      noPPGSensor=false;
+      noTempSensor=false;
+      needBroadcastAntiAlarm=false;
+    }else if  ((custom_name.equals("AK")) ){
+        noPushTxtNotifyDialog=true;
+        noSMSNotifyDialog=true;
+        noVoiceNotifyDialog=true;
+      noPPGSensor=false;
+      noTempSensor=true;
+      SOSNoNeedDial=true; //采用新写的SOS,协议只需要发送消息,无需控制拨号。
+    }else if  ((custom_name.equals("YT")) ){
+      noPushTxtNotifyDialog=false;
+      noSMSNotifyDialog=false;
+      noVoiceNotifyDialog=false;
+      noPPGSensor=false;
+      noTempSensor=true;
+    }else if ((custom_name.equals("l004")) ) {
+      noPushTxtNotifyDialog=true;
+      noSMSNotifyDialog=true;
+      noVoiceNotifyDialog=true;
+      needBroadcastAntiAlarm=false;
+      needBroadcastCutoffAlarm=true;
+      needAllwaysAlarmCutOff=false;
+      needAllwaysAlarmFenceOut=false;
+      needTemperature_abnormal_alarm=false;
+      noPPGSensor=false;
+      noTempSensor=false;
+      L004_BroadCastActionStrip=true;
+    }else if (custom_name.equals("YQ") ||custom_name.equals("YQ_EN")  ) { //A9-YQ
+      noPushTxtNotifyDialog=false;
+      noSMSNotifyDialog=true;
+      noVoiceNotifyDialog=true;
+      noBroadCastPushTxtNotify=true;
+      noBroadCastSMSNotify=true;
+      needBroadcastAntiAlarm=false;
+      needBroadcastCutoffAlarm=true;
+      needAllwaysAlarmCutOff=true;
+      needAllwaysAlarmFenceOut=true;
+      needTemperature_abnormal_alarm=true;
+      noPushTxtReadReply=false;//A9需要阅读反馈
+      noPPGSensor=false;
+      noTempSensor=false;
+      A9_noBroadCastActionStrip=true;
+    }else if (custom_name.equals("SGL"))
+    {
+      noPushTxtNotifyDialog=false;
+      noSMSNotifyDialog=false;
+      noVoiceNotifyDialog=true;
+      needBroadcastAntiAlarm=true;
+      needBroadcastCutoffAlarm=true;
+      needAllwaysAlarmCutOff=true;
+      needAllwaysAlarmFenceOut=false;
+      needTemperature_abnormal_alarm=false;
+      noPPGSensor=true;
+      noTempSensor=true;
+      C5_noBroadCastActionStrip=true;
+    }else if(custom_name.equals("L02")){
+      noPushTxtReadReply=false;//即爱需要阅读反馈
+    }else{
+      noBroadCastPushTxtNotify=true;
+    }
+
+
+  }
+
+  public static void loadTemperatureSettings(Runtime runtime){
+    runtime.temp_test_Cycle_Seconds = SharPreferenceUtil.getPrefInt(runtime.getContextProxy().context, KeyTempTestCycle, 60*60);
+  }
+
+  public static void setTemperatureTestCycle(Runtime runtime,int cycle_seconds) {
+    SharPreferenceUtil.setPrefInt(runtime.getContextProxy().context,KeyTempTestCycle,cycle_seconds);
+    loadTemperatureSettings(runtime);
+  }
+    public static boolean isUsingCustomServer=false;
+
+  public static void setCustomServer(Context context,boolean isusingCutomerServer,String serverip,int serverport) {
+
+      if (isusingCutomerServer)
+          Util.setSystemProperties("persist.sys.UsingCustomServer","true");
+      else
+          Util.setSystemProperties("persist.sys.UsingCustomServer","false");
+
+
+    Util.setSystemProperties("persist.sys.customserverip",serverip);
+    Util.setSystemProperties("persist.sys.customserverport",String.valueOf(serverport));
+    setProtocolServerHost(context,serverip);
+    setProtocolServerPort(context,serverport);
+
+    loadCustomServerAddr(context);
+
+  }
+  public static void loadCustomServerAddr(Context context){
+    String tmp=Util.getSystemProperties("persist.sys.UsingCustomServer");
+    boolean ret=false;
+    if (tmp.equals("true"))
+      ret=true;
+
+    isUsingCustomServer=ret;
+
+    String serverip="";
+    int serverport=0;
+    if(isUsingCustomServer){
+      serverip= Util.getSystemProperties("persist.sys.customserverip");
+      serverport= Integer.valueOf(Util.getSystemProperties("persist.sys.customserverport"));
+      setProtocolServerHost(context,serverip);
+      setProtocolServerPort(context,serverport);
+
+    }else{
+      setProtocolServerHost(context, protocolAPIHelper.getDefaultServerIP());
+      setProtocolServerPort(context,protocolAPIHelper.getDefaultServerPort());
+    }
+    ICLogger.i("current protocol_no="+protocol_no+" , isUsingCustomServier="+isUsingCustomServer+", server host="+
+            getProtocolServerHost(context)+", server port="+getProtocolServerPort(context));
+  }
+
+  public static boolean noLocationCycle=getNoLocationCycleFlag();
+  public static boolean getNoLocationCycleFlag(){
+      String tmp=Util.getSystemProperties("persist.sys.NoLocationCycle");
+      boolean ret=false;
+      if (tmp.equals("true"))
+          ret=true;
+
+      noLocationCycle=ret;
+     return ret;
+  }
+
+  public static final int PROTOCOL_JIAI=0;
+  public static final int PROTOCOL_BEEHOME=1;
+  public static final int PROTOCOL_IC=2;
+  public static final int PROTOCOL_FZD=3;
+  public static final int PROTOCOL_MQTT=4;
+
+  public static int protocol_no=getProtocolNumber();
+  public static int getProtocolNumber(){
+    String tmp=Util.getSystemProperties("persist.sys.protocol_no");
+    int ret=0;
+    if (tmp!=null && !tmp.isEmpty()&& Util.isNumeric(tmp)) {
+      ret = Integer.parseInt(tmp);
+      switch(ret){
+        case PROTOCOL_JIAI:
+          ICLogger.i("协议 JIAI");
+          break;
+        case PROTOCOL_BEEHOME:
+          ICLogger.i("协议 BEEHOME");
+          break;
+        case PROTOCOL_IC:
+          ICLogger.i("协议 IC");
+          break;
+        case PROTOCOL_FZD:
+          ICLogger.i("协议 FZD");
+          break;
+        case PROTOCOL_MQTT:
+          ICLogger.i("协议 MQTT");
+          break;
+        default:
+          ICLogger.i("协议版本 目前支持0,1,2,3,4 。");
+          break;
+      }
+    }else{
+      ICLogger.i("协议版本要是数字,目前支持0,1,2,3,4 。");
+    }
+    protocol_no=ret;
+    return ret;
+  }
+
+
+  public static void setPPGAdjust(Context context,int adjust){
+    SharPreferenceUtil.setPrefInt(context,KeyPPGadust,adjust);
+  }
+
+
+  public static int getPPGAdjust(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyPPGadust, 0);
+  }
+
+  public static void setBPHAdjust(Context context,int adjust){
+    SharPreferenceUtil.setPrefInt(context,KeyBPHadust,adjust);
+  }
+
+
+  public static int getBPHAdjust(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyBPHadust, 0);
+  }
+
+
+
+  public static int getBPLAdjust(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeyBPLadust, 0);
+  }
+
+  public static void setBPLAdjust(Context context,int adjust){
+    SharPreferenceUtil.setPrefInt(context,KeyBPLadust,adjust);
+  }
+
+  public static void setSPo2Adjust(Context context,int adjust){
+    SharPreferenceUtil.setPrefInt(context,KeySPo2adust,adjust);
+  }
+
+  public static int getSPo2Adjust(Context context){
+    return SharPreferenceUtil.getPrefInt(context,KeySPo2adust, 0);
+  }
+
+  public static void loadPPG_BPH_BPL_SPO2_adjustvalue(Context context,Runtime runtime){
+    int ppgadj,bphadj,bpladj,spo2adj;
+    ppgadj=getPPGAdjust(context);
+    bphadj=getBPHAdjust(context);
+    bpladj=getBPLAdjust(context);
+    spo2adj=getSPo2Adjust(context);
+    runtime.getHRS().setAdjust(ppgadj,bphadj,bpladj,spo2adj);
+    ICLogger.i("Load Health adjust value  ppg "+ppgadj+", bph "+bphadj+", bpl "+bpladj+", spo2 "+spo2adj);
+  }
+
+
+
+  //心率血压血氧校准值
+  public static String getPPG_ECG_adjustValue(){
+    return Util.getSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_PPG_ECG_ADJUST,"0,0,0,0");
+  }
+
+  public static void setPPG_ECG_adjustValue(String adjvalue){
+    Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_PPG_ECG_ADJUST,adjvalue);
+  }
+
+  //久坐时间获取
+  public static int getKeepSitRangeInMinutes(Context context ){
+    return Util.getSystemPropertiesInt("persist.sys."+Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,0);
+//    return SharPreferenceUtil.getPrefIntPublic(context,Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,0);
+  }
+
+  //久坐时间设置
+  public static void setKeepSitRangeInMinutes(Context context, int RangeInMinutes){
+      Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,RangeInMinutes);
+//    SharPreferenceUtil.setPrefIntPublic(context,Constants.SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES,RangeInMinutes);
+  }
+
+  public static void setSleepDate(Context context,String dateyyyyMMddHHmmss){
+    Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE_DATE,dateyyyyMMddHHmmss);
+//    SharPreferenceUtil.setPrefStringPublic(context,Constants.SHAREKEY_SETTING_SLEEP_SCORE_DATE,dateyyyyMMddHHmmss);
+  }
+
+
+  public static void setSleepScore(Context context,int score){
+//    SharPreferenceUtil.setPrefIntPublic(context,Constants.SHAREKEY_SETTING_SLEEP_SCORE,score);
+    Util.setSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE,score);
+
+  }
+
+    public static String getSleepDate(Context context){
+        return Util.getSystemProperties("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE_DATE,"");
+    }
+
+
+    public static int getSleepScore(Context context){
+
+        return Util.getSystemPropertiesInt("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE,0);
+
+    }
+  public static void setNeedCutOff(Context context,boolean enAnti){
+    SharPreferenceUtil.setPrefBoolean(context,"NeedCutOff",enAnti);
+  }
+
+  public static boolean getNeedCutOff(Context context){
+    return SharPreferenceUtil.getPrefBoolean(context,"NeedCutOff", false);
+  }
+    public static void setNeedAntiOff(Context context,boolean enAnti){
+      SharPreferenceUtil.setPrefBoolean(context,"NeedAntiOff",enAnti);
+    }
+
+    public static boolean getNeedAntiOff(Context context){
+      return SharPreferenceUtil.getPrefBoolean(context,"NeedAntiOff", false);
+    }
+    public static boolean enableSleep=false;
+  /**
+   * 参考数据,平均每分钟步数来判断,大于 KeepSitJudgementRefValue 认为没有坐着。小于等于这个值认为坐着。
+   */
+  public static int  KeepSitJudgementRefValue=30;
+
+  /***
+   * persist.sys.alarmConfig=ALARM_SOS,ALARM_LOWBATTERY,ALARM_ANTIOFF,ALARM_WEARED,ALARM_CUTOFF,ALARM_FALL,ALARM_ABNORMAL_HEART_RATE,ALARM_HEART_RATE_HIGH,ALARM_HEART_RATE_LOW,ALARM_BPH_HIGH,ALARM_BPH_LOW,ALARM_BPL_HIGH,ALARM_BPL_LOW,ALARM_SEDENTARY,ALARM_ILLEGAL_CUTOFF,ALARM_LOCK_WATCH,ALARM_TEMP_HIGH,ALARM_TEMP_LOW,ALARM_POWER_OFF,ALARM_ESCAPE,ALARM_NONE
+   * 配在里面的表示开启,没配的表示关闭。 默认ALARM_SOS,ALARM_LOWBATTERY,ALARM_POWER_OFF开启
+   * ALARM_ILLEGAL_CUTOFF,ALARM_FALL,ALARM_ABNORMAL_HEART_RATE 没有使用,设置了也没有用
+   */
+  public static void loadAlarmConfig(){
+    String configvalues=Util.getSystemProperties("persist.sys.alarmConfig","");
+    String[] values=configvalues.split(",");
+    if (values.length>0){
+      for (int i=0; i< values.length;i++)
+      {
+        for (Runtime.AlarmType at: Runtime.AlarmType.values()) {
+          if (values[i].trim().equals(at.name())){
+            ConfigAlarm(at,true);
+            break;
+          }
+        }
+      }
+    }
+    dumpAlarmConfig();
+  }
+
+  public static void ConfigAlarm(Runtime.AlarmType alarmType,boolean enabled){
+    AlarmConfiglist.put(alarmType.ordinal(),enabled);
+  }
+  public static void dumpAlarmConfig(){
+    for (int i=0;i<AlarmConfiglist.size();i++) {
+      ICLogger.i(Runtime.AlarmType.values()[i].name()+" "+AlarmConfiglist.get(i));
+    }
+  }
+  private static HashMap<Integer,Boolean> AlarmConfiglist;
+  static {
+    AlarmConfiglist=new HashMap<Integer,Boolean>();
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_SOS.ordinal(),true);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_LOWBATTERY.ordinal(),true);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ANTIOFF.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_WEARED.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_CUTOFF.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_FALL.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ABNORMAL_HEART_RATE.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_HEART_RATE_HIGH.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_HEART_RATE_LOW.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPH_HIGH.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPH_LOW.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPL_HIGH.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPL_LOW.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_SEDENTARY.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_LOCK_WATCH.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_TEMP_HIGH.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_TEMP_LOW.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_POWER_OFF.ordinal(),true);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_ESCAPE.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_NONE.ordinal(),false);
+    AlarmConfiglist.put(Runtime.AlarmType.ALARM_REMOVE_SOS.ordinal(),true);
+  }
+
+  public static boolean isAlarmTypeEnabled(Runtime.AlarmType alarmType){
+
+    boolean en=false;
+    if (AlarmConfiglist.containsKey(alarmType.ordinal())){
+      en=AlarmConfiglist.get(alarmType.ordinal());
+    }
+    return en;
+  }
+  public static boolean needWaterMark(){
+    String customname=getSystemProperties("persist.sys.needWaterMark","true");
+    if(customname.trim().equals("true")){
+      return true;
+    }else
+      return false;
+  }
+}
+
index 361084b..ec44f95 100644 (file)
@@ -681,7 +681,7 @@ public class CoreService extends Service {
             Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED, true);
             if (Config.getConfigInitFlag(this) == 0) {
                 Config.setLocationMode(this, CUSTOM_MOD8_GPS);
-                Config.setLocationCycle(this, 3600);
+                Config.setLocationCycle(this, 60*60);
                 Config.setPPGTestCycle(this, 60);
                 Config.setTemperatureTestCycle(runtime, 60 * 60);
                 Config.setConfigInitFlag(this, 1);
@@ -693,7 +693,7 @@ public class CoreService extends Service {
 
             if (Config.getConfigInitFlag(this) == 0) {
                 Config.setLocationMode(this, CUSTOM_MOD8_GPS);
-                Config.setLocationCycle(this, 600);
+                Config.setLocationCycle(this, 10*60);
                 Config.setPPGTestCycle(this, 0);
                 Config.setTemperatureTestCycle(runtime, 0);
                 Config.setConfigInitFlag(this, 1);
@@ -801,7 +801,7 @@ public class CoreService extends Service {
             if (Config.getConfigInitFlag(this) == 0) {
                 Config.setLocationMode(this, CUSTOM_MOD8_GPS);
                 Config.setLocationCycle(this, 15 * 60);
-                Config.setPPGTestCycle(this, 15 * 60);
+                Config.setPPGTestCycle(this, 15 );
                 Config.setTemperatureTestCycle(runtime, 15 * 60);
                 Config.setConfigInitFlag(this, 1);
             }
@@ -955,8 +955,8 @@ public class CoreService extends Service {
 
 
         //初始化佩戴检测
-        runtime.anti_test_cycle = Config.getCheckAntiPolingCycle(this);
-        if (runtime.anti_test_cycle > 0) {
+        runtime.anti_test_cycle_minutes = Config.getCheckAntiPolingCycle(this);
+        if (runtime.anti_test_cycle_minutes > 0) {
             //   setAntiAlarm();
         }
 
@@ -1365,14 +1365,14 @@ public class CoreService extends Service {
 //        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,paramInt,ACTION_ALARM);
     }
 
-    public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycle) {
+    public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycleMinutes) {
         if (Config.noPPGSensor) {
             ICLogger.i("setHeartRateDetectAlarm oPPGSensor");
             return;
         }
         StringBuilder sb = new StringBuilder();
-        if (heartRateDetectAlarmCycle > 1) {
-            AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, heartRateDetectAlarmCycle, ACTION_HEATR_RATE_START);
+        if (heartRateDetectAlarmCycleMinutes > 1) {
+            AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, heartRateDetectAlarmCycleMinutes, ACTION_HEATR_RATE_START);
         }
 
         if (runtime.check_stat_do_ppg_test()) {
@@ -1380,7 +1380,7 @@ public class CoreService extends Service {
                 sb.append("自由锻炼中,跳过原有的循环心率检测!");
                 ICLogger.i("自由锻炼中,跳过原有的循环心率检测!");
             } else {
-                sb.append("setHeartRateDetectAlarm " + heartRateDetectAlarmCycle);
+                sb.append("setHeartRateDetectAlarm " + heartRateDetectAlarmCycleMinutes+" minutes");
                 if (!server_starting)
                     HeartRateManager.triggerPPGtest();
             }
@@ -1463,7 +1463,7 @@ public class CoreService extends Service {
 
         //心跳指令默认设置
         AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, HEART_ALARM);
-        sb.append(" setHeartAlarm  " + HEART_ALARM + ", cycle " + cycle);
+        sb.append(" setHeartAlarm  " + HEART_ALARM + ", cycle " + cycle +" minutes");
 //        locationClient.triggerLocationProcess();
         ICLogger.i(sb.toString());
         FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString());
@@ -1474,11 +1474,11 @@ public class CoreService extends Service {
     public void setAntiAlarm() {
 //        int mod=runtime.getLocationInstance().getWorkingMod();
         StringBuilder sb = new StringBuilder();
-        int cycle = runtime.anti_test_cycle;
+        int cycle = runtime.anti_test_cycle_minutes;
         if (cycle > 1) {
             AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, ANTI_ALARM);
         }
-        sb.append(" setHeartAlarm  " + ANTI_ALARM + ", cycle " + cycle);
+        sb.append(" setHeartAlarm  " + ANTI_ALARM + ", cycle " + cycle+" minutes");
 
         ICLogger.i(sb.toString());
         FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString());
@@ -1487,7 +1487,7 @@ public class CoreService extends Service {
     public void setTempAlarm() {
 //        int mod=runtime.getLocationInstance().getWorkingMod();
         StringBuilder sb = new StringBuilder();
-        int cycle = runtime.temp_test_Cycle;
+        int cycle = runtime.temp_test_Cycle_Seconds;
 
         if (Config.noTempSensor) {
             ICLogger.i("setTempAlarm noTempSensor");
@@ -1495,9 +1495,9 @@ public class CoreService extends Service {
         }
         if (cycle > 1) {
             AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, cycle, TEMP_ALARM);
-            sb.append(" setTempAlarm  " + TEMP_ALARM + ", cycle " + cycle);
+            sb.append(" setTempAlarm  " + TEMP_ALARM + ", cycle " + cycle + " seconds");
         } else {
-            sb.append(" setTempAlarm  " + TEMP_ALARM + ", cycle " + cycle + "<=1 skip!");
+            sb.append(" setTempAlarm  " + TEMP_ALARM + ", cycle " + cycle + "<=1 second skip!");
         }
 //        locationClient.triggerLocationProcess();
         ICLogger.i(sb.toString());
index 65874f8..d2456c3 100644 (file)
@@ -16,8 +16,8 @@ import java.io.File;
 public class Runtime {
     private boolean debugflag = false;
 
-    public int temp_test_Cycle = 60 * 60;
-    public int anti_test_cycle = 30;
+    public int temp_test_Cycle_Seconds = 60 * 60;
+    public int anti_test_cycle_minutes = 30;
 
     public static String PushtxtMsg_srv_index = "";