From ab7514518f89df9bcf9d0131ca120af32d97b211 Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Thu, 1 Jul 2021 20:55:46 +0800 Subject: [PATCH] =?utf8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4Gator=20?= =?utf8?q?=E5=8D=8F=E8=AE=AE=20=E4=BF=AE=E5=A4=8DBP30=E5=AE=9A=E4=BD=8D?= =?utf8?q?=E4=BF=A1=E6=81=AF=E4=B8=8D=E8=A2=AB=E8=AF=86=E5=88=AB=E9=97=AE?= =?utf8?q?=E9=A2=98=E3=80=82=20=E6=B7=BB=E5=8A=A0=E5=8D=8F=E8=AE=AE=20AP07?= =?utf8?q?=EF=BC=8CAP08=EF=BC=8CAP09=EF=BC=8CAP10=EF=BC=8CAp11=EF=BC=8CAP1?= =?utf8?q?2=EF=BC=8CAP15=EF=BC=8CAP16=EF=BC=8CAP18?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../com/enqualcomm/support/bean/Runtime.java | 2 +- .../enqualcomm/support/utils/AESCipher.java | 42 +- .../support/utils/CellInfoUtil.java | 1 - .../java/com/ic/protocols/protocol_gator.java | 414 ++++++++++++++---- 4 files changed, 355 insertions(+), 104 deletions(-) diff --git a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java index 98f6549c..d842bfcd 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -1323,7 +1323,7 @@ public class Runtime { sb.append(gpsp.getLBSdata().wifi_aps.size()); for (String mac : gpsp.getLBSdata().wifi_aps.keySet()) { String APName = "AP" + i; - sb.append(",").append(APName.length()).append(","); + sb.append(",").append(String.format("%1$02d",APName.length())).append(","); sb.append(APName).append(","); sb.append(mac).append(","); sb.append(gpsp.getLBSdata().wifi_aps.get(mac)); diff --git a/app/src/main/java/com/enqualcomm/support/utils/AESCipher.java b/app/src/main/java/com/enqualcomm/support/utils/AESCipher.java index 43490dbf..8dec109e 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/AESCipher.java +++ b/app/src/main/java/com/enqualcomm/support/utils/AESCipher.java @@ -236,32 +236,32 @@ public class AESCipher { public static void test2(){ //FastJson生成json数据 - String jsonData = "(003b0106357593061269893BP00,C42F-L56AAAD-EU-P3-BDS-V0.3.37.20210626.175406,7,46011)"; - ICLogger.e( "AES加密前json数据 ---->" + jsonData); - ICLogger.e("AES加密前json数据长度 ---->" + jsonData.length()); +// String jsonData = "(003b0106357593061269893BP00,C42F-L56AAAD-EU-P3-BDS-V0.3.37.20210626.175406,7,46011)"; +// ICLogger.e( "AES加密前json数据 ---->" + jsonData); +// ICLogger.e("AES加密前json数据长度 ---->" + jsonData.length()); //AES加密 - long start = System.currentTimeMillis(); - String encryStr = aesEncryptStringFixedKey(jsonData); - long end = System.currentTimeMillis(); - ICLogger.e("AES加密耗时 cost time---->" + (end - start)); - ICLogger.e( "AES加密后json数据 ---->" + encryStr); - ICLogger.e("AES加密后json数据长度 ---->" + encryStr.length()); - - //AES解密 - start = System.currentTimeMillis(); - String decryStr = aesDecryptStringFixedKey(encryStr); - end = System.currentTimeMillis(); - ICLogger.e( "AES解密耗时 cost time---->" + (end - start)); - ICLogger.e("AES解密后json数据 ---->" + decryStr); +// long start = System.currentTimeMillis(); +// String encryStr = aesEncryptStringFixedKey(jsonData); +// long end = System.currentTimeMillis(); +// ICLogger.e("AES加密耗时 cost time---->" + (end - start)); +// ICLogger.e( "AES加密后json数据 ---->" + encryStr); +// ICLogger.e("AES加密后json数据长度 ---->" + encryStr.length()); +// +// //AES解密 +// start = System.currentTimeMillis(); +// String decryStr = aesDecryptStringFixedKey(encryStr); +// end = System.currentTimeMillis(); +// ICLogger.e( "AES解密耗时 cost time---->" + (end - start)); +// ICLogger.e("AES解密后json数据 ---->" + decryStr); - String encriptedstr="/iM1BRd+pmjkYA44kYoqxIcT+h0xJsoRZJUG+cUrl0Wh5UuphJNDx3MaW1tNB3b4EJsh8SmhH0PiMlPeTqOfcQG9GxZXalbNO1hH9d4Qpbf/57LH"; - decryStr = aesDecryptStringFixedKey(encriptedstr); - ICLogger.e("AES解密后json数据sss -- "+encriptedstr+ " "+ encriptedstr.length()+" ---->" + decryStr); + String encriptedstr="/iM1Uhd+pmjkYA44kYoqxIcT+h0xJsoRZJUF+cUlj0fL+DesguIytgcbKyJRe3fkYuhC7VOgBUT5M1XcTr+ZdgG7GBFObFW+OFBHndkMobKL+rfYUD8zsaeRmoLHXMMa8L6t4n3S7lppPDrF6c/KHN+DaK4XsH7ywjBU3NNboI+SGzVUOqb66lYSlO3OSMcT5DTlYOSI7Qql34UmHia812OM8HEgAHNCtC2kRNXWSHK/rkZSze88qjMaX5yHQO4NYuAFIeuaSM4+u4KAYUwFZ3J5PpQoTJCt6mvG06/r2opPUEdMH7mFqYDeRnejx810u6zPBg=="; + String decryStr = aesDecryptStringFixedKey(encriptedstr); + ICLogger.e("AES解密后json数据sss -- "+encriptedstr+ " "+ encriptedstr.length()+" \n---->" + decryStr); - encryStr = aesEncryptStringFixedKey(decryStr); - ICLogger.e("AES加密后json数据sss -- "+decryStr+ " "+ decryStr.length()+" ---->" + encryStr + " " +encryStr.length()); + String encryStr = aesEncryptStringFixedKey(decryStr); + ICLogger.e("AES加密后json数据sss -- "+decryStr+ " "+ decryStr.length()+" \n---->" + encryStr + " " +encryStr.length()); } /*******************************************************/ diff --git a/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java b/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java index 0f606d26..32f775b5 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java @@ -321,7 +321,6 @@ public class CellInfoUtil { .append(String.format("%1$04X",gsmCell.getLac())) .append(String.format("%1$07X",gsmCell.getCid())) .append(String.format("%1$02X",150-Math.abs(getSignal(telephonyManager,runtime)))); - gsmSbMultiGator.append(","); gsmSbMultiGator.append(gsmSbMultiGator_data.toString()); ICLogger.i("LBS GsmCellLocation MultiStation "+ gsmSbMulti.toString()); diff --git a/app/src/main/java/com/ic/protocols/protocol_gator.java b/app/src/main/java/com/ic/protocols/protocol_gator.java index 90706dc9..e462c45a 100644 --- a/app/src/main/java/com/ic/protocols/protocol_gator.java +++ b/app/src/main/java/com/ic/protocols/protocol_gator.java @@ -321,19 +321,19 @@ public class protocol_gator { } for (int i = 0; i < listlen; i++) { for (CMD_TYPE key : cmdMap.keySet()) { - if (regexUtil.isGatorCMD(cmdMap.get(key),cmdlist[i]) ) { + if (cmdlist[i].length()>=24 && regexUtil.isGatorCMD(cmdMap.get(key),cmdlist[i].substring(0,24)) ) { ICLogger.d("found gator cmd keyid=" + key + " ,keyname=" + cmdMap.get(key) + " , " + cmdlist[i]); -// if (key == CMD_TYPE.BP28) { -// //如果是BP28则 后面的数据是音频,需要保留 + if (key == CMD_TYPE.AP12) { + //如果是BP12则 后面的数据是音频,需要保留 // byte[] amrBuf; // int amrLen = getBP28Amrlen(cmdlist[i]); // if (bytes.length > amrLen) { -// handleCmd(key, cmdlist[i], bytes); + handleCmd(key, cmdlist[i], bytes); // } -// } else { + } else { String cmdi=cmdlist[i].trim().replace(CMDHEADER,"").replace(CMDEND,""); handleCmd(key, cmdi); -// } + } } } } @@ -382,6 +382,16 @@ public class protocol_gator { return -1; } + //回复服务器专用通用接口 + public StringMessage BPXX_REPLY(Runtime ds,CMD_TYPE type,String index,boolean success){ + StringMessage ret=null; + if (success) { + ret = genStringMessage(cmdMap.get(type), AddHeader(ds, cmdMap.get(type) + index+"1")); + }else{ + ret = genStringMessage(cmdMap.get(type), AddHeader(ds, cmdMap.get(type) + index+"0")); + } + return ret; + } /*登录*/ public static StringMessage BP00(Runtime ds) { //示例数据:BP00,AAAA,BB,CC @@ -419,14 +429,6 @@ public class protocol_gator { return genStringMessage(cmdMap.get(CMD_TYPE.BP00), AddHeader(ds,msg)); } - //时间同步成功失败反馈 - public StringMessage BP03(Runtime ds,String index,boolean success){ - if (success){ - return genStringMessage(cmdMap.get(CMD_TYPE.BP03),AddHeader(ds,cmdMap.get(CMD_TYPE.BP03)+index+"1")); - }else{ - return genStringMessage(cmdMap.get(CMD_TYPE.BP03),AddHeader(ds,cmdMap.get(CMD_TYPE.BP03)+index+"0")); - } - } //时间同步,等同于登录成功回复 public void handleAP03(Runtime runtime, Connection connection, String cmd) { String[] msg = cmd.split(CMDSPLIT); @@ -447,14 +449,14 @@ public class protocol_gator { ICLogger.i("===" + TimeUtil.getDefaultTimeZone()); TimeUtil.setSysDateTime(runtime.getContextProxy().context, datetime, msg[3], true); ICLogger.i("===" + TimeUtil.getDefaultTimeZone()); - connection.send(BP03(runtime,index,true)); + connection.send(BPXX_REPLY(runtime,CMD_TYPE.BP03,index,true)); }else{ - connection.send(BP03(runtime,index,false)); + connection.send(BPXX_REPLY(runtime,CMD_TYPE.BP03,index,false)); } } catch (Exception e) { ICLogger.e(e.getMessage(), e); - connection.send(BP03(runtime,index,false)); + connection.send(BPXX_REPLY(runtime,CMD_TYPE.BP03,index,false)); } // Set Datetime 20200505112734 // Set TimeZone 8 @@ -463,6 +465,219 @@ public class protocol_gator { } } + //设置亲情号码 + public void handleAP06(Runtime ds,Connection connection,String cmd) { + log("AP06 设置亲情号码 "+cmd); +/* +消息内容 Type取值:0-4 +0表示:其他人 +1表示:爸爸 +2表示:妈妈 +3表示:奶奶 +4表示:爷爷 +(013612345678AP06#number1#name1#type1#number2#name2#type2#number3#name3#type3#number4#...)最多不超过13组电话号码 + +示例: +(0094357593060153353AP06#13141516171#father#1#13141516172#mother#2#13141516173#grandma#3#13141516174#grandpa#4#13141516175#uncle#0,0000000000000005) +设置控制号码为: +father:13141516171, +mother:13141516172, +grandma:13141516173, +grandpa:13141516174, +uncle:13141516175 +响应: 失败:(002E0106357593060153353BP0600000000000000050) +成功:(002E0106357593060153353BP0600000000000000051) + */ + StringBuffer sb=new StringBuffer(); + String cmdlist[]=cmd.split(","); + if (cmdlist.length==2){ + sb.append("server msg index "+cmdlist[1]+"\n"); + String cmdlist1[]=cmdlist[0].split("#"); + int index=0; + if(cmdlist1.length%3==1) { + for (int i = 1; i < cmdlist1.length; i += 3) { + String number= cmdlist1[i]; + String name=cmdlist1[i+1]; + String type=cmdlist1[i+2]; + index++; + sb.append(index+" "+name+" "+number + " " + type+"\n"); + } + + }else{ + ICLogger.e("AP06 format error1 !"); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP06,cmdlist[1],false)); + } + + ICLogger.d(sb.toString()); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP06,cmdlist[1],true)); + }else{ + ICLogger.e("AP06 format error!"); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP06,cmdlist[1],false)); + } + + + } + public void handleAP07(Runtime ds,Connection connection,String cmd) { +// (002A357593060153353AP07,0000000000000006) 平台向终端请求清空所有的亲情号码 + String cmdlist[]=cmd.split(CMDSPLIT); + if(cmdlist.length==2){ + log("AP07 清除亲情号码 " ); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP07,cmdlist[1],true)); + }else{ + ICLogger.e("AP07 format error!"); + } + } + //重启 + public void handleAP08(Runtime ds,Connection connection,String cmd) { +// (002A357593060153353AP08,0000000000000007) + String cmdlist[]=cmd.split(CMDSPLIT); + if(cmdlist.length==2){ + log("AP08 重启设备 " ); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP08,cmdlist[1],true)); + }else{ + ICLogger.e("AP08 format error!"); + } + } + + public void handleAP09(Runtime ds,Connection connection,String cmd) { + +// AP09,A,B,C,YYMMDD,HHMMSS +//A:表示删除、添加(修改)闹钟功能,分别用0、1表示(类型%d) +//B:闹铃索引(0-4) +//C:表示闹钟类型(0-0x7F),如下: +//0:一次,不重复;0x01:星期日;0x02:星期一;0x04:星期二;0x08:星期三;0x10:星期四;0x20:星期五;0x40星期六 +//如果每天闹钟:0x01|0x02|0x04|0x08|0x10|0x20|0x40=0x7F +// (0040357593060153353AP09,1,0,127,150728,152900,0000000000000008) +//增加(修改)一条索引为0的闹铃,每天15:29:00响铃 +//(002E357593060153353AP09,0,0,0000000000000008) +//删除一条索引为0的闹铃 + String cmdlist[]=cmd.split(CMDSPLIT); + if(cmdlist.length==7){ + + + log("AP09 设置闹铃 " ); + + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP09,cmdlist[6],true)); + }else if(cmdlist.length==4){ + + log("AP09 删除闹铃 " ); + + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP09,cmdlist[3],true)); + }else{ + ICLogger.e("AP09 format error!"); + } + } + + public void handleAP10(Runtime ds,Connection connection,String cmd) { + +// (002C357593060153353AP10,1,0000000000000009) +// 开启静音模式 +// (002C357593060153353AP10,0,0000000000000009) +// 关闭静音模式 + + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length==3){ + String index=cmdlist[2]; + boolean enableSilentMode=false; + if(cmdlist[1].equals("1")){ + enableSilentMode=true; + } + ICLogger.d(" enable SilentMode "+enableSilentMode); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP10,index,true)); + }else { + ICLogger.e("AP10 format error"); + } + } + + + public static StringMessage BP11(Runtime ds,String MSGType,String MSGCount){ + //(00250106357593060153353BP11,AP12,01) + //表示请求服务器下载1条微聊信息 + //(00250106357593060153353BP11,AP23,01) + //表示请求服务器下载1条亲情号码自拍图片信息 + StringMessage ret=null; + StringBuilder sb=new StringBuilder(cmdMap.get(CMD_TYPE.BP11) ); + sb.append(CMDSPLIT).append(MSGType).append(CMDSPLIT).append(MSGCount); + ret = genStringMessage(cmdMap.get(CMD_TYPE.BP11), AddHeader(ds, sb.toString())); + return ret; + } + //服务器通知有消息待发送 + public void handleAP11(Runtime ds,Connection connection,String cmd) { +// (0021357593060153353AP11,AP12,02) +// 表示当前服务器有2条新微聊信息待接收 +// +// (0021357593060153353AP11,AP23,01) +// 表示当前服务器有1条亲情号码自拍图片信息待接收 + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length==3){ + String msgcount=cmdlist[2]; + + String msgType=cmdlist[1]; + + ICLogger.d(" 服务器有 "+msgcount+"条 "+msgType+" 消息待接收。"); + + connection.send(BP11(ds,msgType,"01")); + }else { + ICLogger.e("AP11 format error"); + } + + + } + + public static StringMessage BP12(Runtime ds,String sourceNumber,int count, int index, String time,boolean success){ +// 失败: +// (00400106357593060153353BP12,13026618172,1704131633000000,6,1,0) +// (00410106357593060153353BP12,13026618172,1704131633000000,6,1,-1) +// 0:表示其它错误 +// -1:表示13026618172不是手表的情亲号码 +// 成功: +// (00400106357593060153353BP12,13026618172,1704131633000000,6,1,1) + StringMessage ret=null; + StringBuilder sb=new StringBuilder(cmdMap.get(CMD_TYPE.BP12) ); + + sb.append(CMDSPLIT).append(sourceNumber).append(CMDSPLIT).append(time); + sb.append(CMDSPLIT).append(count).append(CMDSPLIT).append(index).append(CMDSPLIT); + if(success){ + sb.append(1); + }else{ + sb.append(0); + } + ret = genStringMessage(cmdMap.get(CMD_TYPE.BP12), AddHeader(ds, sb.toString())); + return ret; + + } + //服务器下发微聊消息 + public void handleAP12(Runtime ds,Connection connection,byte[] bytes) { +// AP12,亲情号码,YYMMDDHHMMSSSSSS,分包总数(%d),当分包索引(%d),分包语音数据长度(%03d<=900)+数据 +// (03C3357593060153353AP12,13026618172,1704131633000000,6,1,700,数据) +// AP12:命令字符 +// 13026618172:亲情号码 +// 1704131633000000:YYMMDDHHMMSSSSSS格式的年月日时分秒,设备录音时间 +// 6:语音包分包总数 +// 1:当前包数,第一包为1,第二包为2,。。。。。。 同一个语音包的语音时间相同 +// 700:当前分包的语音数据长度,每个音频数据包大小为700字节,最后一包不足700的取实际字节数 + String cmd=new String(bytes); + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length>=7){ + String time=cmdlist[2]; + String sourceNumb=cmdlist[1]; + String packagescount=cmdlist[3]; + String packageindex=cmdlist[4]; + String packageslen=cmdlist[5]; + int index=0; + int count=0; + try { + index=Integer.parseInt(packageindex); + count=Integer.parseInt(packagescount); + }catch (Exception e){ + ICLogger.e(e.getMessage(),e); + } + ICLogger.d("receive msg from "+sourceNumb+" "+index+" of "+count + " len "+packageslen+" time "+time); + connection.send(BP12(ds,sourceNumb,count,index,time,true)); + }else { + ICLogger.e("AP12 format error"); + } + } public static StringMessage BP33(Runtime ds) { //(00520106357593060153353BP33,0,000000FF,5,46000024820000DE127,151028,163100,0,0,0) //报警类型:0x0 无报警;0x02 SOS报警;0x08 电池低电量报警;0x20 设备脱离 @@ -623,79 +838,87 @@ SOS报警上行WIFI、LBS混合定位数据,步数为255步,电量等级5,数 return ret; } - //只会成功不会失败 - public StringMessage BP14(Runtime ds){ - StringMessage ret = genStringMessage(cmdMap.get(CMD_TYPE.BP14), AddHeader(ds,cmdMap.get(CMD_TYPE.BP14)+"00000000000000101")); - return ret; - } //接收服务器定位后坐标 public void handleAP14(Runtime ds, Connection connection,String cmd){ ICLogger.d(cmd); - connection.send(BP14(ds)); + //(0056357593060153353AP1424.772816,121.022636,160,2015,11,12,08,00,00,0000000000000010) +// AP14+(Lat,Long,Alt,YYYY,MM,DD,hh,mm,ss) + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length==10){ + String index=cmdlist[9]; + String lat=cmdlist[0]; + String lon=cmdlist[1]; + String alt=cmdlist[2]; + String time=cmdlist[3]+"-"+cmdlist[4]+"-"+cmdlist[5]+" "+cmdlist[6]+":"+cmdlist[7]+":"+cmdlist[8]; + try { + lat = lat.substring(lat.indexOf("AP14")+4); + }catch (Exception e){ + ICLogger.e(e.getMessage(),e); + } + ICLogger.d("lat "+lat+" lon "+lon + " "+alt+" time "+time); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP14,index,true)); + }else { + ICLogger.e("AP14 format error"); + } } - public StringMessage BP06(Runtime ds,String index, boolean success){ - if (success){ - return genStringMessage(cmdMap.get(CMD_TYPE.BP06),AddHeader(ds,cmdMap.get(CMD_TYPE.BP06)+index+"1")); - }else{ - return genStringMessage(cmdMap.get(CMD_TYPE.BP06),AddHeader(ds,cmdMap.get(CMD_TYPE.BP06)+index+"0")); + //开关机控制设置消息 AP15 + public void handleAP15(Runtime ds, Connection connection,String cmd){ + ICLogger.d(cmd); + //(002C357593060153353AP15,1,0000000000000011) + //表示允许手表手动关机 + //(002C357593060153353AP15,0,0000000000000011) + //表示不允许手表手动关机 + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length==3){ + String index=cmdlist[2]; + boolean enableUserPoweroff=false; + if(cmdlist[1].equals("1")){ + enableUserPoweroff=true; + } + ICLogger.d(" enable UserPoweroff "+enableUserPoweroff); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP15,index,true)); + }else { + ICLogger.e("AP15 format error"); } - } - //设置亲情号码 - public void handleAP06(Runtime ds,Connection connection,String cmd) { - log("AP06 设置亲情号码 "+cmd); -/* -消息内容 Type取值:0-4 -0表示:其他人 -1表示:爸爸 -2表示:妈妈 -3表示:奶奶 -4表示:爷爷 -(013612345678AP06#number1#name1#type1#number2#name2#type2#number3#name3#type3#number4#...)最多不超过13组电话号码 - -示例: -(0094357593060153353AP06#13141516171#father#1#13141516172#mother#2#13141516173#grandma#3#13141516174#grandpa#4#13141516175#uncle#0,0000000000000005) -设置控制号码为: -father:13141516171, -mother:13141516172, -grandma:13141516173, -grandpa:13141516174, -uncle:13141516175 -响应: 失败:(002E0106357593060153353BP0600000000000000050) -成功:(002E0106357593060153353BP0600000000000000051) - */ - StringBuffer sb=new StringBuffer(); - String cmdlist[]=cmd.split(","); - if (cmdlist.length==2){ - sb.append("server msg index "+cmdlist[1]+"\n"); - String cmdlist1[]=cmdlist[0].split("#"); - if(cmdlist1.length%3==1) { - for (int i = 1; i < cmdlist1.length; i += 3) { - String number= cmdlist1[i]; - String name=cmdlist1[i+1]; - String type=cmdlist1[i+2]; - sb.append(name+" "+number + " " + type+"\n"); - } - - }else{ - ICLogger.e("AP06 format error1 !"); - connection.send(BP06(ds,cmdlist[1],false)); +// 服务器激活SOS模式消息 AP16 + public void handleAP16(Runtime ds, Connection connection,String cmd){ + ICLogger.d(cmd); + //服务器激活SOS模式: + //(002C357593060153353AP16,1,0000000000000012) + + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length==3){ + String index=cmdlist[2]; + boolean enableUserSOS=false; + if(cmdlist[1].equals("1")){ + enableUserSOS=true; } - - ICLogger.d(sb.toString()); - connection.send(BP06(ds,cmdlist[1],true)); - }else{ - ICLogger.e("AP06 format error!"); - connection.send(BP06(ds,cmdlist[1],false)); + ICLogger.d(" enable enable UserSOS "+enableUserSOS); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP16,index,true)); + }else { + ICLogger.e("AP16 format error"); } + } +// 手表名字设置消息 AP18 + public void handleAP18(Runtime ds, Connection connection,String cmd){ + ICLogger.d(cmd); + //(0031357593060153353AP18,BAOBAO,0000000000000013) + String cmdlist[]=cmd.split(CMDSPLIT); + if (cmdlist.length==3){ + String index=cmdlist[2]; + String watchName=cmdlist[1]; + ICLogger.d("set watchName "+watchName); + connection.send(BPXX_REPLY(ds,CMD_TYPE.BP18,index,true)); + }else { + ICLogger.e("AP18 format error"); + } } -// (0019357593060153353AP00) 下行一次location。 - public boolean handleCmd(CMD_TYPE type, String cmd) { //普通非二进制命令用此函数处理 @@ -729,6 +952,35 @@ uncle:13141516175 //收到设置亲情号码 handleAP06( mRuntime, mConnection,cmd); break; + case AP07://清除亲情号码 + handleAP07( mRuntime, mConnection,cmd); + break; + case AP08://重启设备 + handleAP08( mRuntime, mConnection,cmd); + break; + case AP15://开关机控制设置消息 + handleAP15(mRuntime,mConnection,cmd); + break; + + case AP16: + // 服务器激活SOS模式消息 + handleAP16(mRuntime,mConnection,cmd); + break; + + case AP18: + // 手表名字设置消息 + handleAP18(mRuntime,mConnection,cmd); + break; + case AP09: //闹钟 + handleAP09(mRuntime,mConnection,cmd); + break; + case AP10://情景模式 + handleAP10(mRuntime,mConnection,cmd); + break; + case AP11://服务器推送待接收消息 + handleAP11(mRuntime,mConnection,cmd); + break; + // case AP14:// wifi定位包 // handleBP02(cmd); // ICLogger.i("服务器收到定位AP02"); @@ -957,11 +1209,11 @@ uncle:13141516175 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 AP12: + handleAP12(mRuntime,mConnection, bytes); + ICLogger.i("收到服务器语音AP12"); + mConnection.DeliverCMDMessageToSystem("AP12", "");//通知下面线程状态变化 + break; } return ret; } -- 2.17.1