Gator
authorsnicker <snickersun@163.com>
Sun, 27 Jun 2021 16:34:23 +0000 (00:34 +0800)
committersnicker <snickersun@163.com>
Sun, 27 Jun 2021 16:34:23 +0000 (00:34 +0800)
协议完善,把所有涉及到的命令进行定义。
完成对命令的检测以及命令解析。
完成了登陆和心跳包,可以设置时间。

app/src/main/java/com/enqualcomm/support/bean/Runtime.java
app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java
app/src/main/java/com/enqualcomm/support/utils/regexUtil.java
app/src/main/java/com/ic/protocols/protocol_gator.java
local.properties

index 3d80642..550ebc3 100644 (file)
@@ -990,9 +990,12 @@ public class Runtime {
         this.lockSimInfo = paramBoolean;
     }
 
-
+    //Gator 使用
+    public void setmccmnc(String mccmnc){
+        this.mccAndMnc = mccmnc;
+    }
+    //实际上是分别设置MCC和MNC
     public void setMccAndMnc(String MccMnc) {
-        this.mccAndMnc = MccMnc;
 
         String[] list = MccMnc.split(",");
         if (list.length >= 2) {
index 6bcb7cb..15426c9 100644 (file)
@@ -182,6 +182,7 @@ public class CellInfoUtil {
       mccmnc=telephonyManager.getSimOperator();
     }
     ICLogger.i("LBS mccmnc "+mccmnc);
+    runtime.setmccmnc(mccmnc);
 
     if (mccmnc != null && mccmnc.length() > 3) {
 
index 153b017..ac88bf8 100644 (file)
@@ -10,6 +10,7 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
+import java.util.SimpleTimeZone;
 import java.util.TimeZone;
 
 import static android.content.Context.ALARM_SERVICE;
@@ -87,7 +88,21 @@ public class TimeUtil {
     public static String getUTCSystemTimeHHmmss() {
         return (new SimpleDateFormat("HHmmss")).format(new Date(System.currentTimeMillis() - TimeZone.getDefault().getRawOffset()));
     }
+    public static Date parsetiime( String time) {
+        SimpleDateFormat df1 = new SimpleDateFormat("HH:mm");//需要转化成的时间格式 08:00:00,2016-01-12
+        Date date1 = null;
+        try {
+            String dt = time;
+            ICLogger.i("parseDatetiime " + dt);
+            date1 = df1.parse(dt);
+            return date1;
+        } catch (ParseException e) {
+            e.printStackTrace();
+            ICLogger.e(e.getMessage(), e);
+            return null;
+        }
 
+    }
     public static Date parseDatetiime(String date, String time) {
 
 //    SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式
@@ -246,7 +261,62 @@ public class TimeUtil {
         android.provider.Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.AUTO_TIME, checked);
     }
+    public static void setSysDateTime(Context mContext, Date datetime, String timezoneStr, boolean addtimezoneToTime) {
+        AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
+        Locale.getDefault().getDisplayCountry();
+        String timezone_name = "";
+
+        if(timezoneStr.startsWith("e")||timezoneStr.startsWith("E")){
+            timezone_name = String.format("GMT+%1$s:%2$s",timezoneStr.substring(1,2),timezoneStr.substring(3,4));
+        }else{
+            timezone_name = String.format("GMT-%1$s:%2$s", timezoneStr.substring(1,2),timezoneStr.substring(3,4));
+        }
+        ICLogger.i("====set timezone " + timezone_name);
+        TimeZone tz = TimeZone.getTimeZone(timezone_name);
+        ICLogger.i("====set timezone " + tz.getDisplayName());
+
+        Calendar c = Calendar.getInstance();
+
+        ICLogger.i("====origin time " + c.getTime().toString() + " time zone " + c.getTimeZone());
+        c.setTime(datetime);
+        int timezonehours=0;
+        int timezoneminutes=0;
+        try {
+            timezonehours = Integer.parseInt(timezoneStr.substring(1, 2));
+            timezoneminutes = Integer.parseInt(timezoneStr.substring(3, 4));
+        }catch (Exception e){
+            ICLogger.e(e.getMessage(),e);
+        }
+        if (addtimezoneToTime) {
+            if (is24Hour(mContext)) {
+                c.add(Calendar.HOUR_OF_DAY, timezonehours);//24小时制
+                c.add(Calendar.MINUTE,timezoneminutes);
+            } else {
+                c.add(Calendar.HOUR, timezonehours);//12小时制
+                c.add(Calendar.MINUTE,timezoneminutes);
+            }
+            c.setTimeZone(tz);
+        }
 
+//    alarmManager.setTimeZone();
+        long when = c.getTimeInMillis();
+        if (when / 1000 < Integer.MAX_VALUE) {
+            //SystemClock.setCurrentTimeMillis(when);
+            alarmManager.setTime(when);
+        }
+
+        Calendar d = Calendar.getInstance();
+        long now = d.getTimeInMillis();
+        //Log.d(TAG, "set tm="+when + ", now tm="+now);
+
+        if (now - when > 1000) {
+            ICLogger.i("====set time failed now(" + now + ")-when(" + when + ") > 1000 !");
+        }
+
+        ICLogger.i("====set time to " + d.getTime().toString() + " time zone " + d.getTimeZone());
+
+
+    }
     public static void setSysDateTime(Context mContext, Date datetime, int timezone, boolean addtimezoneToTime) {
 
         AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
@@ -323,7 +393,19 @@ public class TimeUtil {
         TimeZone tz = TimeZone.getTimeZone(timeZone);
         now.setTimeZone(tz);
     }
-
+    //gator 使用,采用 e0800 格式
+    public static void setTimeZone(Context context, String timeZonedate) {
+        String timezone_name = "";
+        if(timeZonedate.startsWith("e")||timeZonedate.startsWith("E")){
+            timezone_name = String.format("GMT+%1$s:%2$s",timeZonedate.substring(1,2),timeZonedate.substring(3,4));
+        }else{
+            timezone_name = String.format("GMT-%1$s:%2$s", timeZonedate.substring(1,2),timeZonedate.substring(3,4));
+        }
+        ICLogger.i("====set timezone " + timezone_name);
+        //TimeZone tz = TimeZone.getTimeZone(timezone_name);
+        updateTimeZone(context, timezone_name);
+    }
+    //当前设置timezone的方式,与语言选择方法一致。
     public static void setTimeZone(Context context, int timeZone) {
 
         final Calendar now = Calendar.getInstance();
@@ -339,6 +421,7 @@ public class TimeUtil {
         updateTimeZone(context, timezone_name);
     }
 
+    //暂时不适用的方法和语言选择里不一致
     public static void setTimeZone(int timeZone) {
         final Calendar now = Calendar.getInstance();
         String timezone_name = "";
index 4a1f510..6170cd2 100644 (file)
@@ -12,6 +12,7 @@ import java.util.regex.Pattern;
 \r
 public class regexUtil {\r
 \r
+\r
         public static final Pattern PATTERN_FZD_CMD_HEADER= Pattern\r
                 .compile("IC\\*\\d{15}\\*\\d*\\*[a-zA-Z0-9]+$");\r
         /**\r
@@ -157,4 +158,11 @@ public class regexUtil {
            return Pattern.compile("IC\\*\\d{15}\\*[a-fA-F0-9]{4}\\*"+cmd).matcher(s).matches();\r
         }\r
 \r
+        public static boolean isGatorCMD(String s){\r
+            return  Pattern.compile("\\([a-fA-F0-9]{4}\\d{15}[a-zA-Z0-9]{4}.*").matcher(s).matches();\r
+        }\r
+        public static boolean isGatorCMD(String cmd, String s){\r
+            return  Pattern.compile("\\([a-fA-F0-9]{4}\\d{15}"+cmd+".*").matcher(s).matches();\r
+        }\r
+\r
 }\r
index bd2f5c7..097a119 100644 (file)
@@ -25,6 +25,7 @@ import com.enqualcomm.support.service.HeartRateManager;
 import com.enqualcomm.support.utils.AESCipher;
 import com.enqualcomm.support.utils.CameraUtil;
 import com.enqualcomm.support.utils.Connection;
+import com.enqualcomm.support.utils.DeviceInfoUtil;
 import com.enqualcomm.support.utils.ICAudioManager;
 import com.enqualcomm.support.utils.ICLogger;
 import com.enqualcomm.support.utils.TemperatureUtil;
@@ -32,6 +33,7 @@ import com.enqualcomm.support.utils.TimeUtil;
 import com.enqualcomm.support.utils.Util;
 import com.enqualcomm.support.utils.VibrateUtil;
 import com.enqualcomm.support.utils.WakeLockUtil;
+import com.enqualcomm.support.utils.regexUtil;
 import com.ic.view.msg.MsgMustReadDialog;
 
 import java.io.File;
@@ -42,6 +44,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 
+import chestnut.utils.RegexUtils;
+
 import static com.enqualcomm.support.Constants.DIALOG_ACTION;
 import static com.enqualcomm.support.Constants.FROM_SERVER;
 import static com.enqualcomm.support.LocationClient.LOCATION_MODE;
@@ -67,240 +71,133 @@ public class protocol_gator {
     private static final String CMDHEADER = "(";
     private static final String CMDEND = ")";
     private static final String CMDSPLIT = ",";
-    public static final String defaultServerIP = "13.59.36.164";
-    public static final int defaultServerPort = 7030;
+   // public static final String defaultServerIP = "13.59.36.164";
+   // public static final int defaultServerPort = 7030;
+    public static final String defaultServerIP = "snickersun.oicp.net";
+    public static final int defaultServerPort = 54944;
 
     public enum CMD_TYPE {
+         /* 服务器发起*/
+        AP00,//立即定位
+        AP01,//设置服务器地址和端口
+        AP02,//设置APN
+        AP03,//修改时区
+        AP04,//读取终端版本信息
+        AP05,//监听
+        AP06,//设置亲情号码
+        AP07,//清空亲情号码
+        AP08,//重启
+        AP09,//设置闹钟
+        AP10,//情景模式
+        AP11,//服务器通知
+        AP12,//下载微聊信息
+        AP14,//下载定位数据
+        AP15,//开关机控制
+        AP16,//服务器激活SOS模式
+        AP18,//手表名字设置
+        AP20,//设置手表语言
+        AP21,//铃声音量设置
+        AP22,//隐身时段
+        AP23,//亲情号码自拍图片设置
+        AP25,//删除亲情号码自拍图片
+        AP26,//下发APP Url消息
+        AP30,//BP30回复
+        AP31,//BP31回复
+        AP32,//BP32回复
+        AP34,//BP34回复
         /*终端发起*/
-        AP00,//登录包
-        BP00,
-        AP01,//混合定位
-        BP01,
-        AP02,//多基站定位
-        BP02,
-        AP92,//CDMA 混合定位
-        BP92,
-        AP94,
-        BP94,
-        AP03,//心跳包
-        BP03,
-        AP05,//语音查询接收
-        BP05,
-        AP07,//语音上行
-        BP07,
-        AP10,//报警与地址回复
-        BP10,
-        AP49,//心率上传
-        BP49,
-        APHT,//心率血压上传
-        BPHT,
-        APTM,//基站校时及获取定位
-        BPTM,
-        APCH,//充电提示
-        BPCH,
-        APBR,//上传蓝牙扫描结果
-        BPBR,
-        /* 服务器发起*/
-        AP12,
-        BP12,//SOS 号码设置
-        AP14,
-        BP14,//设置联系人白名单
-        AP15,
-        BP15,//设置定位周期
-        AP16,
-        BP16,//立即定位
-        AP17,
-        BP17,//恢复出厂设置
-        AP18,
-        BP18,//重启设备
-        AP21,
-        BP21,//设置计步开关
-        AP28,
-        BP28, //语音下行
-        AP31,
-        BP31,//关机
-        AP33,
-        BP33,//工作模式
-        AP34,
-        BP34,//自定义工作模式
-        AP40,
-        BP40,//下发文本
-        AP68,
-        BP68,//绑定解绑
-        APXL,
-        BPXL,//测量心率
-        APXY,
-        BPXY,//测量血压
-        APJZ,
-        BPJZ,//血压校准
-        AP84,
-        BP84,//白名单开关
-        AP85,
-        BP85,//设置闹钟
-        AP86,
-        BP86,//心率周期
-        AP87,
-        BP87,//二维码更新
-        AP88,
-        BP88,//查找手表
-        AP89,
-        BP89,//心率血压阀值设置
-        APTE,
-        BPTE,//体温间隔设置
-        APTP,
-        BPTP,//体温上行
-        APX1,
-        BPX1,//心率血压血氧修正
-        APS4,
-        BPS4,//提醒设置(时间段)
-        APHP,//上报心率血压血氧
-        BPHP,
-        APDE,//进出围栏通知
-        BPDE,
-        APDG,//体温阀值设置
-        BPDG,
-        APTU,//上传语音图片
-        BPTU,
-        APSL,//上传睡眠数据
-        BPSL,
-        AP46,//立即拍照
-        BP46,
-        APDH,//聆听
-        BPDH,
-        AP99,//监听电话
-        BP99,
-        APTQ,//天气
-        BPTQ,
-        APAT,//剪断消息开关
-        BPAT,
-        APBT,
-        BPBT,//设置蓝牙扫描间隔
-        APBS,
-        BPBS,//设置蓝牙绑定Major
-        APWL,
-        BPWL,//设置白名单
-        AP65,
-        BP65,//设置音量
-        AP47,
-        BP47,//设置震动
-        UNKNOWN_CMD,
+        BP00,//开机对时
+        BP01,//AP01返回
+        BP02,//AP02返回
+        BP03,//AP03返回
+        BP05,//AP05返回
+        BP06,//AP06返回
+        BP07,//AP07返回
+        BP08,//AP08返回
+        BP09,//AP09返回
+        BP10,//AP10返回
+        BP11,//AP11返回
+        BP12,//AP12返回
+        BP14,//AP14返回
+        BP15,//AP15返回
+        BP16,//AP16返回
+        BP18,//AP18返回
+        BP20,//AP20返回
+        BP21,//AP21返回
+        BP22,//AP22返回
+        BP23,//AP23返回
+        BP25,//AP25返回
+        BP26,//AP26返回
+        BP30,//上传定位数据
+        BP31,//登陆服务器消息
+        BP32,//查询服务器微聊消息
+        BP33,//发送状态包给服务器(心跳)
+        BP34,//上传微聊信息
+        BP35,//好友添加请求
+        UNKNOWN_CMD
     }
 
     private static HashMap<CMD_TYPE, String> cmdMap;
 
     static {
         cmdMap = new HashMap<CMD_TYPE, String>();
+        /* 服务器发起*/
         cmdMap.put(CMD_TYPE.AP00, "AP00");
-        cmdMap.put(CMD_TYPE.BP00, "BP00");
         cmdMap.put(CMD_TYPE.AP01, "AP01");
-        cmdMap.put(CMD_TYPE.BP01, "BP01");
         cmdMap.put(CMD_TYPE.AP02, "AP02");
-        cmdMap.put(CMD_TYPE.BP02, "BP02");
-        cmdMap.put(CMD_TYPE.AP92, "AP92");
-        cmdMap.put(CMD_TYPE.BP92, "BP92");
-        cmdMap.put(CMD_TYPE.AP94, "AP94");
-        cmdMap.put(CMD_TYPE.BP94, "BP94");
         cmdMap.put(CMD_TYPE.AP03, "AP03");
-        cmdMap.put(CMD_TYPE.BP03, "BP03");
+        cmdMap.put(CMD_TYPE.AP04, "AP04");
         cmdMap.put(CMD_TYPE.AP05, "AP05");
-        cmdMap.put(CMD_TYPE.BP05, "BP05");
+        cmdMap.put(CMD_TYPE.AP06, "AP06");
         cmdMap.put(CMD_TYPE.AP07, "AP07");
-        cmdMap.put(CMD_TYPE.BP07, "BP07");
+        cmdMap.put(CMD_TYPE.AP08, "AP08");
+        cmdMap.put(CMD_TYPE.AP09, "AP09");
         cmdMap.put(CMD_TYPE.AP10, "AP10");
-        cmdMap.put(CMD_TYPE.BP10, "BP10");
-        cmdMap.put(CMD_TYPE.AP49, "AP49");
-        cmdMap.put(CMD_TYPE.BP49, "BP49");
-        cmdMap.put(CMD_TYPE.APHT, "APHT");
-        cmdMap.put(CMD_TYPE.BPHT, "BPHT");
-        cmdMap.put(CMD_TYPE.APTM, "APTM");
-        cmdMap.put(CMD_TYPE.BPTM, "BPTM");
-        cmdMap.put(CMD_TYPE.APCH, "APCH");
-        cmdMap.put(CMD_TYPE.BPCH, "BPCH");
-        cmdMap.put(CMD_TYPE.APBR, "APBR");
-        cmdMap.put(CMD_TYPE.BPBR, "BPBR");
-        /* 服务器发起*/
+        cmdMap.put(CMD_TYPE.AP11, "AP11");
         cmdMap.put(CMD_TYPE.AP12, "AP12");
-        cmdMap.put(CMD_TYPE.BP12, "BP12");
         cmdMap.put(CMD_TYPE.AP14, "AP14");
-        cmdMap.put(CMD_TYPE.BP14, "BP14");
         cmdMap.put(CMD_TYPE.AP15, "AP15");
-        cmdMap.put(CMD_TYPE.BP15, "BP15");
         cmdMap.put(CMD_TYPE.AP16, "AP16");
-        cmdMap.put(CMD_TYPE.BP16, "BP16");
-        cmdMap.put(CMD_TYPE.AP17, "AP17");
-        cmdMap.put(CMD_TYPE.BP17, "BP17");
         cmdMap.put(CMD_TYPE.AP18, "AP18");
-        cmdMap.put(CMD_TYPE.BP18, "BP18");
+        cmdMap.put(CMD_TYPE.AP20, "AP20");
         cmdMap.put(CMD_TYPE.AP21, "AP21");
-        cmdMap.put(CMD_TYPE.BP21, "BP21");
-        cmdMap.put(CMD_TYPE.AP28, "AP28");
-        cmdMap.put(CMD_TYPE.BP28, "BP28");
+        cmdMap.put(CMD_TYPE.AP22, "AP22");
+        cmdMap.put(CMD_TYPE.AP23, "AP23");
+        cmdMap.put(CMD_TYPE.AP25, "AP25");
+        cmdMap.put(CMD_TYPE.AP26, "AP26");
+        cmdMap.put(CMD_TYPE.AP30, "AP30");
         cmdMap.put(CMD_TYPE.AP31, "AP31");
+        cmdMap.put(CMD_TYPE.AP32, "AP32");
+        cmdMap.put(CMD_TYPE.AP34, "AP34");
+        /* 终端发起*/
+        cmdMap.put(CMD_TYPE.BP00, "BP00");
+        cmdMap.put(CMD_TYPE.BP01, "BP01");
+        cmdMap.put(CMD_TYPE.BP02, "BP02");
+        cmdMap.put(CMD_TYPE.BP03, "BP03");
+        cmdMap.put(CMD_TYPE.BP05, "BP05");
+        cmdMap.put(CMD_TYPE.BP06, "BP06");
+        cmdMap.put(CMD_TYPE.BP07, "BP07");
+        cmdMap.put(CMD_TYPE.BP08, "BP08");
+        cmdMap.put(CMD_TYPE.BP09, "BP09");
+        cmdMap.put(CMD_TYPE.BP10, "BP10");
+        cmdMap.put(CMD_TYPE.BP11, "BP11");
+        cmdMap.put(CMD_TYPE.BP12, "BP12");
+        cmdMap.put(CMD_TYPE.BP14, "BP14");
+        cmdMap.put(CMD_TYPE.BP15, "BP15");
+        cmdMap.put(CMD_TYPE.BP16, "BP16");
+        cmdMap.put(CMD_TYPE.BP18, "BP18");
+        cmdMap.put(CMD_TYPE.BP20, "BP20");
+        cmdMap.put(CMD_TYPE.BP21, "BP21");
+        cmdMap.put(CMD_TYPE.BP22, "BP22");
+        cmdMap.put(CMD_TYPE.BP23, "BP23");
+        cmdMap.put(CMD_TYPE.BP25, "BP25");
+        cmdMap.put(CMD_TYPE.BP26, "BP26");
+        cmdMap.put(CMD_TYPE.BP30, "BP30");
         cmdMap.put(CMD_TYPE.BP31, "BP31");
-        cmdMap.put(CMD_TYPE.AP33, "AP33");
+        cmdMap.put(CMD_TYPE.BP32, "BP32");
         cmdMap.put(CMD_TYPE.BP33, "BP33");
-        cmdMap.put(CMD_TYPE.AP34, "AP34");
         cmdMap.put(CMD_TYPE.BP34, "BP34");
-        cmdMap.put(CMD_TYPE.AP40, "AP40");
-        cmdMap.put(CMD_TYPE.BP40, "BP40");
-        cmdMap.put(CMD_TYPE.AP68, "AP68");
-        cmdMap.put(CMD_TYPE.BP68, "BP68");
-        cmdMap.put(CMD_TYPE.APXL, "APXL");
-        cmdMap.put(CMD_TYPE.BPXL, "BPXL");
-        cmdMap.put(CMD_TYPE.APXY, "APXY");
-        cmdMap.put(CMD_TYPE.BPXY, "BPXY");
-        cmdMap.put(CMD_TYPE.APJZ, "APJZ");
-        cmdMap.put(CMD_TYPE.BPJZ, "BPJZ");
-        cmdMap.put(CMD_TYPE.AP84, "AP84");
-        cmdMap.put(CMD_TYPE.BP84, "BP84");
-        cmdMap.put(CMD_TYPE.AP85, "AP85");
-        cmdMap.put(CMD_TYPE.BP85, "BP85");
-        cmdMap.put(CMD_TYPE.AP86, "AP86");
-        cmdMap.put(CMD_TYPE.BP86, "BP86");
-        cmdMap.put(CMD_TYPE.AP87, "AP87");
-        cmdMap.put(CMD_TYPE.BP87, "BP87");
-        cmdMap.put(CMD_TYPE.AP88, "AP88");
-        cmdMap.put(CMD_TYPE.BP88, "BP88");
-        cmdMap.put(CMD_TYPE.AP89, "AP89");
-        cmdMap.put(CMD_TYPE.BP89, "BP89");
-        cmdMap.put(CMD_TYPE.APTE, "APTE");
-        cmdMap.put(CMD_TYPE.BPTE, "BPTE");
-        cmdMap.put(CMD_TYPE.APTP, "APTP");
-        cmdMap.put(CMD_TYPE.BPTP, "BPTP");
-        cmdMap.put(CMD_TYPE.APX1, "APX1");
-        cmdMap.put(CMD_TYPE.BPX1, "BPX1");
-        cmdMap.put(CMD_TYPE.APS4, "APS4");
-        cmdMap.put(CMD_TYPE.BPS4, "BPS4");
-        cmdMap.put(CMD_TYPE.APHP, "APHP");
-        cmdMap.put(CMD_TYPE.BPHP, "BPHP");
-        cmdMap.put(CMD_TYPE.APDE, "APDE");
-        cmdMap.put(CMD_TYPE.BPDE, "BPDE");
-        cmdMap.put(CMD_TYPE.APDG, "APDG");
-        cmdMap.put(CMD_TYPE.BPDG, "BPDG");
-        cmdMap.put(CMD_TYPE.APTU, "APTU");
-        cmdMap.put(CMD_TYPE.BPTU, "BPTU");
-        cmdMap.put(CMD_TYPE.APSL, "APSL");
-        cmdMap.put(CMD_TYPE.BPSL, "BPSL");
-        cmdMap.put(CMD_TYPE.AP46, "AP46");
-        cmdMap.put(CMD_TYPE.BP46, "BP46");
-        cmdMap.put(CMD_TYPE.APDH, "APDH");
-        cmdMap.put(CMD_TYPE.BPDH, "BPDH");
-        cmdMap.put(CMD_TYPE.AP99, "AP99");
-        cmdMap.put(CMD_TYPE.BP99, "BP99");
-        cmdMap.put(CMD_TYPE.APTQ, "APTQ");
-        cmdMap.put(CMD_TYPE.BPTQ, "BPTQ");
-        cmdMap.put(CMD_TYPE.APAT, "APAT");
-        cmdMap.put(CMD_TYPE.BPAT, "BPAT");
-        cmdMap.put(CMD_TYPE.APBT, "APBT");
-        cmdMap.put(CMD_TYPE.BPBT, "BPBT");
-        cmdMap.put(CMD_TYPE.APBS, "APBS");
-        cmdMap.put(CMD_TYPE.BPBS, "BPBS");
-        cmdMap.put(CMD_TYPE.APWL, "APWL");
-        cmdMap.put(CMD_TYPE.BPWL, "BPWL");
-        cmdMap.put(CMD_TYPE.AP65, "AP65");
-        cmdMap.put(CMD_TYPE.BP65, "BP65");
-        cmdMap.put(CMD_TYPE.AP47, "AP47");
-        cmdMap.put(CMD_TYPE.BP47, "BP47");
+        cmdMap.put(CMD_TYPE.BP35, "BP35");
     }
 
 
@@ -327,7 +224,7 @@ public class protocol_gator {
 
         int head_index = msg.indexOf(CMDHEADER);
         if (head_index >= 0) {
-            int end_index = msg.indexOf("#", head_index);
+            int end_index = msg.indexOf(CMDEND, head_index);
             if (end_index < 0) {
 
                 return "";
@@ -337,8 +234,8 @@ public class protocol_gator {
         }
 
         for (CMD_TYPE key : cmdMap.keySet()) {
-            if (msg.startsWith(CMDHEADER + cmdMap.get(key))) {
-                ICLogger.i("found cmd keyid=" + key + " ,keyname=" + cmdMap.get(key));
+            if (regexUtil.isGatorCMD(cmdMap.get(key),msg)) {
+                ICLogger.i("found gator cmd keyid=" + key + " ,keyname=" + cmdMap.get(key));
                 return cmdMap.get(key);
             }
         }
@@ -362,14 +259,15 @@ public class protocol_gator {
         String encreptionMSGHeader="GT";
         encreptedStr=AESCipher.aesEncryptStringFixedKey(msg);
         String len= String.format("%04x",encreptedStr.length());
-        return encreptionMSGHeader+len+encreptedStr;
+        return encreptionMSGHeader+len+"01"+encreptedStr;
     }
     /**/
     public static StringMessage genStringMessage(String cmdName, String msg) {
         //设置cmdName,在这里配置进去的msg没有实际用到
         StringMessage sm = new StringMessage(new String[]{cmdName, msg});
         //用此函数设置要发送的内容
-        sm.refresh(msg);
+        sm.refresh(encrepteMsg(msg));
+      //  sm.refresh((msg));
         //设置信息创建时间
         sm.setDate(TimeUtil.getSystemDateYYMMDD(), TimeUtil.getSystemTimeHHmmss());
         return sm;
@@ -396,7 +294,7 @@ public class protocol_gator {
         if (cmdbuf.toString().endsWith(CMDEND)) {
             iscmdComplete = true;
         }
-        String[] cmdlist = cmd_msgbuf.split(CMDEND);
+        String[] cmdlist = cmd_msgbuf.split("\\"+CMDEND);
         int listlen = cmdlist.length;
         ICLogger.d("listlen " + listlen);
         /**
@@ -409,18 +307,19 @@ public class protocol_gator {
         }
         for (int i = 0; i < listlen; i++) {
             for (CMD_TYPE key : cmdMap.keySet()) {
-                if (cmdlist[i].startsWith(CMDHEADER + cmdMap.get(key))) {
-                    ICLogger.d("found cmd keyid=" + key + " ,keyname=" + cmdMap.get(key) + " ,  " + cmdlist[i]);
-                    if (key == CMD_TYPE.BP28) {
-                        //如果是BP28则 后面的数据是音频,需要保留
-                        byte[] amrBuf;
-                        int amrLen = getBP28Amrlen(cmdlist[i]);
-                        if (bytes.length > amrLen) {
-                            handleCmd(key, cmdlist[i], bytes);
-                        }
-                    } else {
-                        handleCmd(key, cmdlist[i]);
-                    }
+                if (regexUtil.isGatorCMD(cmdMap.get(key),cmdlist[i]) ) {
+                    ICLogger.d("found gator cmd keyid=" + key + " ,keyname=" + cmdMap.get(key) + " ,  " + cmdlist[i]);
+//                    if (key == CMD_TYPE.BP28) {
+//                        //如果是BP28则 后面的数据是音频,需要保留
+//                        byte[] amrBuf;
+//                        int amrLen = getBP28Amrlen(cmdlist[i]);
+//                        if (bytes.length > amrLen) {
+//                            handleCmd(key, cmdlist[i], bytes);
+//                        }
+//                    } else {
+                        String cmdi=cmdlist[i].trim().replace(CMDHEADER,"").replace(CMDEND,"");
+                        handleCmd(key, cmdi);
+//                    }
                 }
             }
         }
@@ -469,34 +368,72 @@ public class protocol_gator {
         return -1;
     }
 
+    private static String AddHeader(Runtime runtime,String msg){
+        /*(  CHAR    1
+%04X   HEX_STRING      4
+0106   C_STRING        4
+       C_STRING        15*/
+        String len= String.format("%04x",msg.length());
+        return new StringBuffer(CMDHEADER).append(len).append("0106").append(runtime.IMEI()).append(msg).append(
+                CMDEND).toString();
+
+    }
+
     /*登录*/
     public static StringMessage BP00(Runtime ds) {
-        //示例数据:IWAP00867155030001063#
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP00),
-                new StringBuffer(CMDHEADER).append(
-                        cmdMap.get(CMD_TYPE.AP00)
-                ).append(ds.IMEI()).append(
-                        CMDEND).toString());
+        //示例数据:BP00,AAAA,BB,CC
+        //AAAA:终端软件版本信息
+        //BB:电池电量等级(0-7)
+        //0:低电关机
+        //1:呼叫限制
+        //2:低电报警
+        //3:   0格显示
+        //4:   1格显示
+        //5:2格显示
+        //6:   3格显示
+        //7:   4格显示
+        //CC:MCCMNC
+
+        int batstat=0;
+        int batlevel=ds.getBatterylevel();
+        if (batlevel>0 && batlevel<= 15){
+            batstat=3;
+        }else if (batlevel>15 && batlevel<= 35){
+            batstat=4;
+        }else if (batlevel>35 && batlevel<= 55){
+            batstat=5;
+        }else if (batlevel>55 && batlevel<= 85){
+            batstat=6;
+        }else {
+            batstat=7;
+        }
+        String msg=new StringBuffer(cmdMap.get(CMD_TYPE.BP00)).append(CMDSPLIT)
+                .append(DeviceInfoUtil.getSWVersionDisplayName()).append(CMDSPLIT)
+                .append(batstat).append(CMDSPLIT)
+                .append(ds.getMccAndMnc())
+                .toString();
+
+        return genStringMessage(cmdMap.get(CMD_TYPE.BP00), AddHeader(ds,msg));
     }
 
     //处理 登录 BP00
-    public void handleBP00(Runtime runtime, String cmd) {
+    public void handleAP03(Runtime runtime, String cmd) {
         String[] msg = cmd.split(CMDSPLIT);
-//        get Msg :IWBP00,20191229171933,8# (size)24
-//        12-30 01:19:33.861 6492-6492/com.enqualcomm.support I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 ,  IWBP00,20191229171933,8
-
-        if (msg.length >= 3) {
-            log("handleBP00", "Set Datetime " + msg[1]);
-            log("handleBP00", "Set TimeZone " + msg[2]);
+//       (003E357593060153353AP03,150728,152900,e0800,0000000000000003)
+//       表示当前UTC时间为2015年7月28日,15点29分00秒,时区是东8区,此时间用于手表时间同步
+        if (msg.length == 5) {
+            log("handleBP00", "Set Datetime " + msg[1] + msg[2]);
+            log("handleBP00", "Set TimeZone " + msg[3]);
             try {
-                Date datetime = TimeUtil.parseDatetiime(msg[1]);
-                int timezone = Integer.parseInt(msg[2]);
+                Date datetime = TimeUtil.parseDatetiime("20"+msg[1]+msg[2]);
+              //  Date timezone = TimeUtil.parsetiime(msg[3].substring(1));
+
                 if (datetime != null) {
                     ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
-                    TimeUtil.setTimeZone(runtime.getContextProxy().context, timezone);
+                    TimeUtil.setTimeZone(runtime.getContextProxy().context, msg[3]);
 
                     ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
-                    TimeUtil.setSysDateTime(runtime.getContextProxy().context, datetime, timezone, true);
+                    TimeUtil.setSysDateTime(runtime.getContextProxy().context, datetime, msg[3], true);
                     ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
 
                 }
@@ -507,17 +444,42 @@ public class protocol_gator {
 //            Set TimeZone 8
 
         } else {
-            log("handleBP00", "format Error");
+            log("handleAP03", "format Error");
         }
     }
 
     public static StringMessage BP33(Runtime ds) {
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP00),
-                new StringBuffer(CMDHEADER).append(
-                        cmdMap.get(CMD_TYPE.AP00)
-                ).append(ds.IMEI()).append(
-                        CMDEND).toString());
-    }
+//(00520106357593060153353BP33,0,000000FF,5,46000024820000DE127,151028,163100,0,0,0)
+//报警类型:0x0 无报警;0x02 SOS报警;0x08 电池低电量报警;0x20 设备脱离
+//总步数:000000FF
+//电量等级:5
+//基站接入点:46000024820000DE127
+//日期时间:151028,163100
+            int batstat=0;
+            int batlevel=ds.getBatterylevel();
+            if (batlevel>0 && batlevel<= 15){
+                batstat=0;
+            }else if (batlevel>15 && batlevel<= 35){
+                batstat=1;
+            }else if (batlevel>35 && batlevel<= 55){
+                batstat=2;
+            }else if (batlevel>55 && batlevel<= 85){
+                batstat=3;
+            }else {
+                batstat=4;
+            }
+            String netstat="46000024820000DE127";
+            String msg=new StringBuffer(cmdMap.get(CMD_TYPE.BP33)).append(CMDSPLIT)
+                    .append(0).append(CMDSPLIT)
+                    .append(String.format("%08X", ds.getTotalStepCount())).append(CMDSPLIT)
+                    .append(batstat).append(CMDSPLIT)
+                    .append(netstat).append(CMDSPLIT)
+                    .append(TimeUtil.getSystemDateYYMMDD()).append(CMDSPLIT)
+                    .append(TimeUtil.getSystemTimeHHmmss())
+                    .toString();
+
+            return genStringMessage(cmdMap.get(CMD_TYPE.BP33), AddHeader(ds,msg));
+        }
     public static StringMessage AP03(Runtime ds) {
         //示例数据:IWAP03,06000908000102,5555,30#  IWAP03,000000null00000,0,0#
         //IW: 标识符
@@ -540,10 +502,16 @@ public class protocol_gator {
                 .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());
     }
 
-    //处理 心跳 BP03
-    public void handleBP03(String cmd) {
-
-        log("BP03心跳接收成功");
+    public StringMessage BP03(boolean success){
+        if (success){
+            return genStringMessage(cmdMap.get(CMD_TYPE.BP03),cmdMap.get(CMD_TYPE.BP03)+"00000000000000031");
+        }else{
+            return genStringMessage(cmdMap.get(CMD_TYPE.BP03),cmdMap.get(CMD_TYPE.BP03)+"00000000000000030");
+        }
+    }
+    public void handleAP04(Runtime ds,Connection connection,String cmd) {
+        log("AP04读取版本,返回BP00");
+        connection.send(BP00(ds));
     }
 
 
@@ -635,7 +603,7 @@ public class protocol_gator {
     public static StringMessage APXL(String id) {
 //设备响应:      IWAPXL,080835#
         //080835:指令流水号
-        return genStringMessage(cmdMap.get(CMD_TYPE.APXL), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDEND).toString());
     }
@@ -670,7 +638,7 @@ public class protocol_gator {
     public static StringMessage APXY(String id) {
 //设备响应:      IWAPXY,080835#
         //080835:指令流水号
-        return genStringMessage(cmdMap.get(CMD_TYPE.APXY), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDEND).toString());
     }
@@ -707,7 +675,7 @@ public class protocol_gator {
         //设备响应:      IWAPJZ,792997,120,85,42,1#
         //792997:指令流水号
         // 高压120,低压85,年龄42,1 男性
-        return genStringMessage(cmdMap.get(CMD_TYPE.APJZ), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDSPLIT).append(BPH)
                 .append(CMDSPLIT).append(BPL)
@@ -778,7 +746,7 @@ public class protocol_gator {
     //恢复出厂设置
 
     public static StringMessage AP17(String index) {
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP17), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDEND).toString());
     }
@@ -798,7 +766,7 @@ public class protocol_gator {
 
 
     public static StringMessage AP31(String index) {
-        return genStringMessage("AP31", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))
+        return genStringMessage("AP31", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDEND).toString());
     }
@@ -966,7 +934,7 @@ public class protocol_gator {
 
     public static StringMessage AP85(Runtime ds, String cmddata) {
 //示例数据:IWAP49,68##
-        return genStringMessage("AP85", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))
+        return genStringMessage("AP85", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(cmddata)
                 .append(CMDEND).toString());
 
@@ -1167,7 +1135,7 @@ public class protocol_gator {
 //IWAP33,080835,1#
 //080835:指令流水号
 //1:设置信息,供服务器同步
-        return genStringMessage("AP33", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))
+        return genStringMessage("AP33", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(cmdindex)
                 .append(CMDSPLIT).append(workMode)
                 .append(CMDEND).toString());
@@ -1228,7 +1196,7 @@ public class protocol_gator {
 //IWAP34,588854,1#
 //080835:指令流水号
 //8:模式
-        return genStringMessage("AP34", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))
+        return genStringMessage("AP34", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(cmdindex)
                 .append(CMDSPLIT).append(workMode)
                 .append(CMDEND).toString());
@@ -1340,7 +1308,7 @@ public class protocol_gator {
 //        IWAP40,080835,1#
 //        080835:指令流水号
 //        1:表示设备接受数据成功,0表示设备接受数据失败
-        return genStringMessage("AP40", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))
+        return genStringMessage("AP40", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(cmdindex)
                 .append(CMDSPLIT).append(success)
                 .append(CMDEND).toString());
@@ -1355,7 +1323,7 @@ public class protocol_gator {
      */
     public static StringMessage AP49(Runtime ds) {
         //示例数据:IWAP49,68##
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP49), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())
                 .append(CMDEND).toString());
 
@@ -1378,7 +1346,7 @@ public class protocol_gator {
         //85 : 血压低压 [舒张压]
         //平台响应:      IWBPHT#
         //表示平台已接收,可不作响应
-        return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())
@@ -1395,7 +1363,7 @@ public class protocol_gator {
         //85 : 血压低压 [舒张压]
         //平台响应:      IWBPHT#
         //表示平台已接收,可不作响应
-        return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(ppg)
                 .append(CMDSPLIT).append(bph)
                 .append(CMDSPLIT).append(bpl)
@@ -1443,7 +1411,7 @@ public class protocol_gator {
         //9750: LAC
         //3613: CID
 
-        return genStringMessage(cmdMap.get(CMD_TYPE.APTM), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMCC())
                 .append(CMDSPLIT).append(ds.getLocationInstance().getMNC())
                 .append(CMDSPLIT).append(ds.getLocationInstance().getLAC())
@@ -1514,7 +1482,7 @@ public class protocol_gator {
     /*语音下行反馈*/
     public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {
         //示例数据:IWAP28,D3590D54,xxxx,6,1,1#
-        return genStringMessage("AP28", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))
+        return genStringMessage("AP28", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(name)
                 .append(CMDSPLIT).append(msg)
                 .append(CMDSPLIT).append(packagecount)
@@ -1623,7 +1591,7 @@ public class protocol_gator {
         //设备响应:      IWAP80,080835,1#
         //080835:指令流水号
         //1:表示设备执行成功,0 表示设备执行失败
-        return genStringMessage("AP84", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))
+        return genStringMessage("AP84", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDSPLIT).append(success)
                 .append(CMDEND).toString());
@@ -1664,7 +1632,7 @@ public class protocol_gator {
 
         //设备响应:      IWAP86, 080835,1#
         //080835:指令流水号
-        return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))
+        return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDSPLIT).append(cmd)
                 .append(CMDEND).toString());
@@ -1726,7 +1694,7 @@ public class protocol_gator {
 
         //设备响应:      IWAP86, 080835#
         //080835:指令流水号
-        return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))
+        return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDEND).toString());
     }
@@ -1774,7 +1742,7 @@ public class protocol_gator {
 
         //设备响应:      IWAP86, 080835#
         //080835:指令流水号
-        return genStringMessage("AP87", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP87))
+        return genStringMessage("AP87", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDEND).toString());
     }
 
@@ -1806,7 +1774,7 @@ public class protocol_gator {
     public static StringMessage AP88(String index) {
         //设备响应:      IWAP88, 080835#
         //080835:指令流水号
-        return genStringMessage("AP88", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))
+        return genStringMessage("AP88", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDEND).toString());
     }
@@ -1830,7 +1798,7 @@ public class protocol_gator {
 
         //设备响应:      IWAP89, 080835#
         //080835:指令流水号
-        return genStringMessage("AP89", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))
+        return genStringMessage("AP89", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDEND).toString());
     }
@@ -1875,7 +1843,7 @@ public class protocol_gator {
         //设备响应:      IWAPTE,080835,60#
         //080835:指令流水号
         //1:表示设备接受数据成功,0表示设备接受数据失败
-        return genStringMessage("APTE", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))
+        return genStringMessage("APTE", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDSPLIT).append(freq)
                 .append(CMDEND).toString());
@@ -1919,7 +1887,7 @@ public class protocol_gator {
         //APTP : 命令字符
         //35.3:测量体温 (摄氏度)
         //33,132:温补用的参数,此处不用,可以用0 来代替。 目前是代表的腕温,室外温度
-        return genStringMessage(cmdMap.get(CMD_TYPE.APTP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(String.format("%1$.1f", body_temp))
                 .append(CMDSPLIT).append(String.format("%1$.1f", wrist_temp))
                 .append(CMDSPLIT).append(String.format("%1$.1f", tempout))
@@ -1936,7 +1904,7 @@ public class protocol_gator {
     public static StringMessage APX1(String id) {
         //设备响应:      IWAPX1, 080835#
         //080835:指令流水号
-        return genStringMessage("APX1", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))
+        return genStringMessage("APX1", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDEND).toString());
     }
@@ -1998,7 +1966,7 @@ public class protocol_gator {
     public static StringMessage APS4(String id) {
         //设备响应:      IWAPS4,080835#
         //080835:指令流水号
-        return genStringMessage("APS4", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))
+        return genStringMessage("APS4", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDEND).toString());
     }
@@ -2069,7 +2037,7 @@ public class protocol_gator {
         //95:血氧
         //90:血糖
 //        本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空
-        return genStringMessage(cmdMap.get(CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(ds.getHRS().getPPG())
                 .append(CMDSPLIT).append(ds.getHRS().getBPH())
                 .append(CMDSPLIT).append(ds.getHRS().getBPL())
@@ -2096,7 +2064,7 @@ public class protocol_gator {
         //95:血氧
         //90:血糖
 //        本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空
-        return genStringMessage(cmdMap.get(CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(ppg)
                 .append(CMDSPLIT).append(bph)
                 .append(CMDSPLIT).append(bpl)
@@ -2127,7 +2095,7 @@ public class protocol_gator {
          * 080835:指令流水号
          * 说明:   本消息适用所有终端
          */
-        return genStringMessage("APDE", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDE))
+        return genStringMessage("APDE", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDEND).toString());
     }
@@ -2176,7 +2144,7 @@ public class protocol_gator {
     }
 
     public static StringMessage APDG(String id) {
-        return genStringMessage("APDG", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDG))
+        return genStringMessage("APDG", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDEND).toString());
     }
@@ -2256,7 +2224,7 @@ public class protocol_gator {
          * 收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。
          * 如果设备回复确认数据包接收失败状态,则重复发送上一个数据包
          */
-        String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTU))
+        String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT)
                 .append(CMDSPLIT).append(packetTime)
                 .append(CMDSPLIT).append(filetype)
@@ -2338,18 +2306,18 @@ public class protocol_gator {
  * 换算分数后发送到服务器
  * #:结束符
  */
-        String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APSL))
+        String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(date)
                 .append(CMDSPLIT).append(deepsleep)
                 .append(CMDSPLIT).append(lightsleep)
                 .append(CMDSPLIT).append(score)
                 .append(CMDEND).toString();
-        return genStringMessage(cmdMap.get(CMD_TYPE.APSL), sb);
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14), sb);
     }
 
     public static StringMessage AP46(String id, String cmd) {
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP46),
-                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14),
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                         .append(CMDSPLIT).append(id)
                         .append(CMDSPLIT).append(cmd)
                         .append(CMDEND).toString());
@@ -2411,8 +2379,8 @@ public class protocol_gator {
 
 
     public static StringMessage APDH(String id, String cmd) {
-        return genStringMessage(cmdMap.get(CMD_TYPE.APDH),
-                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDH))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14),
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                         .append(CMDSPLIT).append(id)
                         .append(CMDSPLIT).append(cmd)
                         .append(CMDEND).toString());
@@ -2472,7 +2440,7 @@ public class protocol_gator {
         if (!lang.contains("zh")) {
             language = 1;
         }
-        return genStringMessage("APTQ", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTQ))
+        return genStringMessage("APTQ", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(runtime.getLocationInstance().getMCC())
                 .append(CMDSPLIT).append(runtime.getLocationInstance().getMNC())
                 .append(CMDSPLIT).append(runtime.getLocationInstance().getLAC())
@@ -2607,7 +2575,7 @@ public class protocol_gator {
          */
 
         //在UI逻辑中,只要有处理就都是已经阅读。所以不存在取消阅读的说法。
-        return genStringMessage(cmdMap.get(protocol_gator.CMD_TYPE.AP94), new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_gator.CMD_TYPE.AP94))
+        return genStringMessage(cmdMap.get(protocol_gator.CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_gator.CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(Runtime.PushtxtMsg_srv_index)
                 .append(CMDSPLIT).append("1")
                 .append(CMDEND).toString());
@@ -2616,7 +2584,7 @@ public class protocol_gator {
 
 
     public static StringMessage APAT(String id, String cmd) {
-        return genStringMessage("APAT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APAT))
+        return genStringMessage("APAT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDSPLIT).append(cmd)
                 .append(CMDEND).toString());
@@ -2673,15 +2641,15 @@ public class protocol_gator {
 
 
     public static StringMessage APCH(int charging) {
-        return genStringMessage(cmdMap.get(CMD_TYPE.APCH),
-                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APCH))
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP14),
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                         .append(CMDSPLIT).append(charging)
                         .append(CMDEND).toString());
     }
 
 
     public static StringMessage APBT(String id, String cycle) {
-        return genStringMessage("APBT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBT))
+        return genStringMessage("APBT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDSPLIT).append(cycle)
                 .append(CMDEND).toString());
@@ -2745,7 +2713,7 @@ public class protocol_gator {
             for (String it : runtime.bleInfo.btScanResult) {
                 sb.append(CMDSPLIT).append(it);
             }
-            return genStringMessage("APBR", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBR))
+            return genStringMessage("APBR", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                     .append(CMDSPLIT).append(runtime.IMEI())
                     .append(CMDSPLIT).append(TimeUtil.getSystemTimeyyyyMMddHHmmss())
                     .append(CMDSPLIT).append(sb.toString())
@@ -2757,7 +2725,7 @@ public class protocol_gator {
     }
 
     public static StringMessage APBS(String id, String cycle) {
-        return genStringMessage("APBS", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBS))
+        return genStringMessage("APBS", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDSPLIT).append(cycle)
                 .append(CMDEND).toString());
@@ -2810,7 +2778,7 @@ public class protocol_gator {
      * 说明:       本消息适用所有终端
      */
     public static StringMessage APWL(String index, String[] phnumbs) {
-        return genStringMessage("APWL", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APWL))
+        return genStringMessage("APWL", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(index)
                 .append(CMDSPLIT).append(phnumbs[0])
                 .append(CMDSPLIT).append(phnumbs[1])
@@ -2915,7 +2883,7 @@ public class protocol_gator {
 
 
     public static StringMessage AP65(String id, String cy) {
-        return genStringMessage("AP65", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP65))
+        return genStringMessage("AP65", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDSPLIT).append(cy)
                 .append(CMDEND).toString());
@@ -2965,7 +2933,7 @@ public class protocol_gator {
     }
 
     public static StringMessage AP47(String id, String cycle) {
-        return genStringMessage("AP47", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP47))
+        return genStringMessage("AP47", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
                 .append(CMDSPLIT).append(id)
                 .append(CMDSPLIT).append(cycle)
                 .append(CMDEND).toString());
@@ -3018,237 +2986,240 @@ public class protocol_gator {
         if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + cmd);
         cmd = cmd.replace(" ", "");
         switch (type) {
-            case BP00: //登录包
-                handleBP00(mRuntime, cmd);
-                ICLogger.i("服务器收到登录包AP00");
+            case AP03: //登录包
+                handleAP03(mRuntime, cmd);
+                ICLogger.i("服务器收到登录包");
                 mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化
                 break;
-            case BP01: //gps定位包
+            case AP14: //gps定位包
                 handleBP01(cmd);
                 ICLogger.i("服务器收到定位AP01");
                 mConnection.DeliverCMDMessageToSystem("AP01", cmd);//通知下面线程状态变化
                 break;
-            case BP02:// wifi定位包
-                handleBP02(cmd);
-                ICLogger.i("服务器收到定位AP02");
-                mConnection.DeliverCMDMessageToSystem("AP02", cmd);//通知下面线程状态变化
-                break;
-            case BP03: //心跳包
-                handleBP03(cmd);
-                ICLogger.i("服务器收到心跳包AP03");
-                mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);//通知下面线程状态变化
-                break;
-
-            case BP07:
-                //收到发送的语音包
-                handleBP07(cmd, mConnection);
-                break;
-            case BP10:
-                //报警包
-                mConnection.DeliverCMDMessageToSystem("AP10", cmd);//通知下面线程状态变化
-                break;
-            case BPBR:
-                mConnection.DeliverCMDMessageToSystem("APBR", cmd);//通知下面线程状态变化
-                break;
-            case BPTM:
-                //校时命令
-                handleBPTM(cmd);
-                ICLogger.i("服务器收到校时命令APTM");
-                mConnection.DeliverCMDMessageToSystem("APTM", cmd);//通知下面线程状态变化
-                break;
-            case BP85://设置闹钟
-                handleBP85(cmd, mConnection, mRuntime);
-                ICLogger.i("收到服务器设置闹钟命令BP85");
-                mConnection.DeliverCMDMessageToSystem("AP85", cmd);//通知下面线程状态变化
-                break;
-
-            case BP87:
-                handleBP87(cmd, mConnection, mRuntime);
-                ICLogger.i("收到服务器 QRCode uri BP87");
-                break;
-            case BP33:
-                //设置工作模式
-                handleBP33(mConnection, mRuntime, cmd);
-                mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
-
-                break;
-            case BP34:
-                //设置工作模式
-                handleBP34(mConnection, mRuntime, cmd);
-                mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
-                break;
-            case BP16:
-                //立即定位指令(长链接有效)
-                handleBP16(mConnection, mRuntime, cmd);
-                mConnection.DeliverCMDMessageToSystem("StartLocate", cmd);//通知下面线程状态变化
-                break;
-
-            case BP46: //立即拍照
-                ICLogger.i("立即拍照!");
-                handleBP46(cmd, mConnection, mRuntime);
-                break;
-
-            case BP12:
-                //收到设置SOS号码
-                handleBP12(mConnection, cmd, mRuntime);
-                ICLogger.i("收到服务器设置SOS号码命令BP12");
+            case AP04://查询终端版本消息
+                handleAP04(mRuntime,mConnection,cmd);
                 break;
-            case BP14:
-                //收到设置白名单号码
-                handleBP14(mConnection, cmd, mRuntime);
-                ICLogger.i("收到服务器设置白名单号码命令BP14");
-                break;
-            case BPWL:
-                //收到设置白名单号码
-                handleBPWL(mConnection, cmd, mRuntime);
-                ICLogger.i("收到服务器设置白名单号码命令BPWL");
-                break;
-            case BP15:
-                handleBP15(cmd, mConnection, mRuntime);
-                ICLogger.i("收到服务器设置定位命令BP15");
-                break;
-            case BP17:
-                //收到恢复出厂设置
-                handleBP17(mConnection, cmd);
-                ICLogger.i("收到服务器恢复出厂设置命令BP17");
-                mConnection.DeliverCMDMessageToSystem("FactoryReset", cmd);//通知下面线程状态变化
-                break;
-
-            case BP18:
-                //收到重启
-                handleBP18(mConnection, cmd);
-                ICLogger.i("收到服务器重启命令BP18");
-                mConnection.DeliverCMDMessageToSystem("Reboot", cmd);//通知下面线程状态变化
-                break;
-
-            case BP31:
-                //收到关机
-                handleBP31(mConnection, cmd);
-                ICLogger.i("收到服务器关机命令BP31");
-                mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化
-                break;
-            case BP40:
-                //服务器推送文本
-                handleBP40(mConnection, mRuntime, cmd);
-                ICLogger.i("收到服务器推送文本消息");
-                mConnection.DeliverCMDMessageToSystem("showTxt", cmd);//通知下面线程状态变化
-                break;
-
-            case BPXL:
-                handleBPXL(cmd, mConnection);
-                ICLogger.i("收到服务器心率检测命令");
-                if (mRuntime.check_stat_do_ppg_test())
-                    HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
-                break;
-            case BPXY:
-                handleBPXY(cmd, mConnection);
-                ICLogger.i("收到服务器血压检测命令");
-                if (mRuntime.check_stat_do_ppg_test())
-                    HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
-                break;
-            case BPJZ:
-                handleBPJZ(cmd, mConnection, mRuntime);
-                ICLogger.i("收到服务器血压校准命令");
-                break;
-            case BPHT:
-                ICLogger.i("服务器收到上传的心率血压");
-                mConnection.DeliverCMDMessageToSystem("APHT", cmd);//通知下面线程状态变化
-                break;
-            case BP84:
-                handleBP84(cmd, mConnection);
-                ICLogger.i("收到服务器白名单命令");
-                break;
-
-            case BP86:
-                //心率周期
-                handleBP86(cmd, mConnection, mRuntime);
-                mConnection.DeliverCMDMessageToSystem("AP86", cmd);//通知下面线程状态变化
-
-                break;
-            case BP68: //绑定解绑
-                handleBP68(cmd, mConnection, mRuntime);
-                break;
-            case BP88:
-                //收到查找设备消息
-                handleBP88(cmd, mConnection);
-                mConnection.DeliverCMDMessageToSystem("findDev", cmd);//通知下面线程状态变化
-                break;
-            case BP89:
-                //心率/血压阀值
-                handleBP89(cmd, mConnection);
-                mConnection.DeliverCMDMessageToSystem("AP89", cmd);//通知下面线程状态变化
-                break;
-
-            case BPTE: //设置测试体温
-                handleBPTE(cmd, mConnection, mRuntime);
-                mConnection.DeliverCMDMessageToSystem("APTE", cmd);//通知下面线程状态变化
-                break;
-            case BPTP:
-                handleBPTP();
-                mConnection.DeliverCMDMessageToSystem("APTP", cmd);//通知下面线程状态变化
-                break;
-            case BPHP:
-                handleBPHP();
-                mConnection.DeliverCMDMessageToSystem("APHP", cmd);//通知下面线程状态变化
-                break;
-            case BPX1://设置 心率血压血氧修正值
-                handleBPX1(cmd, mConnection, mRuntime);
-                ICLogger.i("收到服务器设置 心率血压血氧修正值BPX1");
-                mConnection.DeliverCMDMessageToSystem("APX1", cmd);//通知下面线程状态变化
-                break;
-
-            case BPS4: //提醒设置(时间段) 主要为久坐设置提醒时长。
-                handleBPS4(cmd, mConnection, mRuntime);
-                ICLogger.i("收到 提醒设置(时间段)");
-                mConnection.DeliverCMDMessageToSystem("APS4", cmd);//通知下面线程状态变化
-                break;
-            case BPDE:
-                handleBPDE(mConnection, cmd, mRuntime);
-                ICLogger.i(" 收到 进出围栏通知!");
-                mConnection.DeliverCMDMessageToSystem("APDE", cmd);//通知下面线程状态变化
-                break;
-
-            case BPTU:
-                handleBPTU(cmd, mConnection);
-                ICLogger.i("收到服务器 图片语音 消息 BPTU");
-                //    mConnection.DeliverCMDMessageToSystem("APTU", "");//通知下面线程状态变化
-                break;
-            case BPDG:
-                handleBPDG(mConnection, cmd, mRuntime);
-                ICLogger.i(" 收到 体温阈值设置!");
-                mConnection.DeliverCMDMessageToSystem("APDG", cmd);//通知下面线程状态变化
-                break;
-            case BPSL:
-                ICLogger.i("睡眠数据上传完毕!");
-                mConnection.DeliverCMDMessageToSystem("APSL", cmd);//通知下面线程状态变化
-                break;
-
-            case BPDH:
-                ICLogger.i("聆听");
-                handleBPDH(mConnection, mRuntime, cmd);
-                break;
-
-            case BPTQ: //天气下发
-                handleBPTQ(mConnection, mRuntime, cmd);
-                break;
-            case BPAT://剪断开关设定
-                handleBPAT(mConnection, mRuntime, cmd);
-                break;
-
-            case BPBT://蓝牙扫描设置
-                handleBPBT(mConnection, mRuntime, cmd);
-                break;
-            case BPBS://蓝牙扫描设置Majorlist
-                handleBPBS(mConnection, mRuntime, cmd);
-                break;
-
-            case BP65://声音设置
-                handleBP65(mConnection, mRuntime, cmd);
-                break;
-            case BP47://震动设置
-                handleBP47(mConnection, mRuntime, cmd);
-                break;
-
+//            case AP14:// wifi定位包
+//                handleBP02(cmd);
+//                ICLogger.i("服务器收到定位AP02");
+//                mConnection.DeliverCMDMessageToSystem("AP02", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14: //心跳包
+//                handleBP03(cmd);
+//                ICLogger.i("服务器收到心跳包AP03");
+//                mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14:
+//                //收到发送的语音包
+//                handleBP07(cmd, mConnection);
+//                break;
+//            case AP14:
+//                //报警包
+//                mConnection.DeliverCMDMessageToSystem("AP10", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                mConnection.DeliverCMDMessageToSystem("APBR", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                //校时命令
+//                handleBPTM(cmd);
+//                ICLogger.i("服务器收到校时命令APTM");
+//                mConnection.DeliverCMDMessageToSystem("APTM", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14://设置闹钟
+//                handleBP85(cmd, mConnection, mRuntime);
+//                ICLogger.i("收到服务器设置闹钟命令BP85");
+//                mConnection.DeliverCMDMessageToSystem("AP85", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14:
+//                handleBP87(cmd, mConnection, mRuntime);
+//                ICLogger.i("收到服务器 QRCode uri BP87");
+//                break;
+//            case BP33:
+//                //设置工作模式
+//                handleBP33(mConnection, mRuntime, cmd);
+//                mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
+//
+//                break;
+//            case BP34:
+//                //设置工作模式
+//                handleBP34(mConnection, mRuntime, cmd);
+//                mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                //立即定位指令(长链接有效)
+//                handleBP16(mConnection, mRuntime, cmd);
+//                mConnection.DeliverCMDMessageToSystem("StartLocate", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14: //立即拍照
+//                ICLogger.i("立即拍照!");
+//                handleBP46(cmd, mConnection, mRuntime);
+//                break;
+//
+//            case AP14:
+//                //收到设置SOS号码
+//                handleBP12(mConnection, cmd, mRuntime);
+//                ICLogger.i("收到服务器设置SOS号码命令BP12");
+//                break;
+//            case AP14:
+//                //收到设置白名单号码
+//                handleBP14(mConnection, cmd, mRuntime);
+//                ICLogger.i("收到服务器设置白名单号码命令BP14");
+//                break;
+//            case AP14:
+//                //收到设置白名单号码
+//                handleBPWL(mConnection, cmd, mRuntime);
+//                ICLogger.i("收到服务器设置白名单号码命令BPWL");
+//                break;
+//            case AP14:
+//                handleBP15(cmd, mConnection, mRuntime);
+//                ICLogger.i("收到服务器设置定位命令BP15");
+//                break;
+//            case AP14:
+//                //收到恢复出厂设置
+//                handleBP17(mConnection, cmd);
+//                ICLogger.i("收到服务器恢复出厂设置命令BP17");
+//                mConnection.DeliverCMDMessageToSystem("FactoryReset", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14:
+//                //收到重启
+//                handleBP18(mConnection, cmd);
+//                ICLogger.i("收到服务器重启命令BP18");
+//                mConnection.DeliverCMDMessageToSystem("Reboot", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case BP31:
+//                //收到关机
+//                handleBP31(mConnection, cmd);
+//                ICLogger.i("收到服务器关机命令BP31");
+//                mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                //服务器推送文本
+//                handleBP40(mConnection, mRuntime, cmd);
+//                ICLogger.i("收到服务器推送文本消息");
+//                mConnection.DeliverCMDMessageToSystem("showTxt", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14:
+//                handleBPXL(cmd, mConnection);
+//                ICLogger.i("收到服务器心率检测命令");
+//                if (mRuntime.check_stat_do_ppg_test())
+//                    HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
+//                break;
+//            case AP14:
+//                handleBPXY(cmd, mConnection);
+//                ICLogger.i("收到服务器血压检测命令");
+//                if (mRuntime.check_stat_do_ppg_test())
+//                    HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
+//                break;
+//            case AP14:
+//                handleBPJZ(cmd, mConnection, mRuntime);
+//                ICLogger.i("收到服务器血压校准命令");
+//                break;
+//            case AP14:
+//                ICLogger.i("服务器收到上传的心率血压");
+//                mConnection.DeliverCMDMessageToSystem("APHT", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                handleBP84(cmd, mConnection);
+//                ICLogger.i("收到服务器白名单命令");
+//                break;
+//
+//            case AP14:
+//                //心率周期
+//                handleBP86(cmd, mConnection, mRuntime);
+//                mConnection.DeliverCMDMessageToSystem("AP86", cmd);//通知下面线程状态变化
+//
+//                break;
+//            case AP14: //绑定解绑
+//                handleBP68(cmd, mConnection, mRuntime);
+//                break;
+//            case AP14:
+//                //收到查找设备消息
+//                handleBP88(cmd, mConnection);
+//                mConnection.DeliverCMDMessageToSystem("findDev", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                //心率/血压阀值
+//                handleBP89(cmd, mConnection);
+//                mConnection.DeliverCMDMessageToSystem("AP89", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14: //设置测试体温
+//                handleBPTE(cmd, mConnection, mRuntime);
+//                mConnection.DeliverCMDMessageToSystem("APTE", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                handleBPTP();
+//                mConnection.DeliverCMDMessageToSystem("APTP", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                handleBPHP();
+//                mConnection.DeliverCMDMessageToSystem("APHP", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14://设置 心率血压血氧修正值
+//                handleBPX1(cmd, mConnection, mRuntime);
+//                ICLogger.i("收到服务器设置 心率血压血氧修正值BPX1");
+//                mConnection.DeliverCMDMessageToSystem("APX1", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14: //提醒设置(时间段) 主要为久坐设置提醒时长。
+//                handleBPS4(cmd, mConnection, mRuntime);
+//                ICLogger.i("收到 提醒设置(时间段)");
+//                mConnection.DeliverCMDMessageToSystem("APS4", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                handleBPDE(mConnection, cmd, mRuntime);
+//                ICLogger.i(" 收到 进出围栏通知!");
+//                mConnection.DeliverCMDMessageToSystem("APDE", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14:
+//                handleBPTU(cmd, mConnection);
+//                ICLogger.i("收到服务器 图片语音 消息 BPTU");
+//                //    mConnection.DeliverCMDMessageToSystem("APTU", "");//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                handleBPDG(mConnection, cmd, mRuntime);
+//                ICLogger.i(" 收到 体温阈值设置!");
+//                mConnection.DeliverCMDMessageToSystem("APDG", cmd);//通知下面线程状态变化
+//                break;
+//            case AP14:
+//                ICLogger.i("睡眠数据上传完毕!");
+//                mConnection.DeliverCMDMessageToSystem("APSL", cmd);//通知下面线程状态变化
+//                break;
+//
+//            case AP14:
+//                ICLogger.i("聆听");
+//                handleBPDH(mConnection, mRuntime, cmd);
+//                break;
+//
+//            case AP14: //天气下发
+//                handleBPTQ(mConnection, mRuntime, cmd);
+//                break;
+//            case AP14://剪断开关设定
+//                handleBPAT(mConnection, mRuntime, cmd);
+//                break;
+//
+//            case AP14://蓝牙扫描设置
+//                handleBPBT(mConnection, mRuntime, cmd);
+//                break;
+//            case AP14://蓝牙扫描设置Majorlist
+//                handleBPBS(mConnection, mRuntime, cmd);
+//                break;
+//
+//            case AP14://声音设置
+//                handleBP65(mConnection, mRuntime, cmd);
+//                break;
+//            case AP14://震动设置
+//                handleBP47(mConnection, mRuntime, cmd);
+//                break;
+//
 
         }
 
@@ -3264,11 +3235,11 @@ public class protocol_gator {
         ICLogger.i("handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length);
         if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + new String(bytes));
         switch (type) {
-            case BP28:
-                handleBP28(mConnection, cmd, mRuntime, bytes);
-                ICLogger.i("收到服务器语音BP28");
-//                mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化
-                break;
+//            case BP28:
+//                handleBP28(mConnection, cmd, mRuntime, bytes);
+//                ICLogger.i("收到服务器语音BP28");
+////                mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化
+//                break;
         }
         return ret;
     }
index 0cdc2a6..38ddae0 100644 (file)
@@ -4,5 +4,5 @@
 # Location of the SDK. This is only used by Gradle.\r
 # For customization when using a Version Control System, please read the\r
 # header note.\r
-#Sat Jun 26 13:03:49 CST 2021\r
-sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk\r
+#Sun Jun 27 19:54:51 CST 2021\r
+sdk.dir=E\:\\Android\\sdk\r