From: snickersun Date: Wed, 26 Aug 2020 13:03:15 +0000 (+0800) Subject: 1、添加mqtt 协议,并在toolActivity初步验证通讯 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=3c60bdc54b310c62d4007557c6b135959d42117a;p=protocol_srv.git 1、添加mqtt 协议,并在toolActivity初步验证通讯 2、修改久坐检测一设置就开始报警的问题。每次设置重置当前久坐计算数据。 --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 7a40d49d..78fadad6 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -739,7 +739,8 @@ public class CoreService extends Service { } public void checkKeepSitting(){ String dateyyyyMMDDhhmmss=TimeUtil.getSystemTime3(); - String sleepdate=TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); + //为了更新 isInSleepRange, 下面的语句必须执行 + TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); if(TimeUtil.isInSleepRange == false) { //不在睡眠时间就是久坐时间段。 if (Runtime.lastSitCheckStepCount == -1){ Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); diff --git a/app/src/main/java/com/enqualcomm/support/toolActivity.java b/app/src/main/java/com/enqualcomm/support/toolActivity.java index e88fe551..637c58a4 100644 --- a/app/src/main/java/com/enqualcomm/support/toolActivity.java +++ b/app/src/main/java/com/enqualcomm/support/toolActivity.java @@ -9,6 +9,7 @@ import android.widget.Button; import com.enqualcomm.support.utils.SimSignalUtil; import com.enqualcomm.support.utils.Util; +//import com.ic.protocols.protocol_mqtt_client; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; @@ -25,7 +26,8 @@ public class toolActivity extends AppCompatActivity { Button btnmod1=(Button)findViewById(R.id.btn_location1); Button btnmod3=(Button)findViewById(R.id.btn_location3); Button btnmod530=(Button)findViewById(R.id.btn_location530); - +// protocol_mqtt_client mqttClient=new protocol_mqtt_client(toolActivity.this); +// mqttClient.connectservice(); btnmod1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -43,9 +45,10 @@ public class toolActivity extends AppCompatActivity { intent.putExtra("smsCmd","#setlocation#=3,30#"); CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent); Util.ShowToast(CoreService.getInstance().runtime,"设置模式3 , 间隔60秒定位。"); + +// mqttClient.attemptConnectMqtt(protocol_mqtt.defaultServerIP,"IC_H88_1063",60); } }); - btnmod530.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -53,6 +56,13 @@ public class toolActivity extends AppCompatActivity { intent.putExtra("smsCmd","#setlocation#=5,30#"); CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent); Util.ShowToast(CoreService.getInstance().runtime,"设置模式5 , 间隔30秒定位。"); + + +// mqttClient.sendMessage("WBG100/v1/BREQ/1","[0016,QWER15WTF156OQRT1230]"); +// mqttClient.sendMessage("WBG100/v1/KA/1","[001B,120414,50,100,100, 123456789]"); + + + } }); btnSim.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java index e1aa44a0..35eb9a44 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java @@ -26,6 +26,7 @@ import com.enqualcomm.support.CoreService; import com.enqualcomm.support.LocationClient; import com.enqualcomm.support.R; import com.enqualcomm.support.bean.NotificationParam; +import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.VoiceContent; import com.enqualcomm.support.service.Deliver; import com.ic.jni.ICJniUtils; @@ -397,6 +398,9 @@ public class ProcessReceiver extends BroadcastReceiver { int sitrange=paramIntent.getIntExtra(Constants.KEY_SIT_RANGE,0); Config.setKeepSitRangeInMinutes(paramContext,sitrange); ICLogger.i("set KeepSitRange int "+sitrange+" minutes!"); + ICLogger.i("则重置 lastCheckSitTime 以及 lastSitCheckStepCount"); + Runtime.lastSitCheckStepCount=CoreService.getInstance().getRuntime().getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); } } else { //如果来电了,还有未读的消息,干脆关掉,防止影响接电话。 diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index 5d0c6e28..f1d52dec 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -111,7 +111,7 @@ public class protocolAPIHelper { ret=protocol_fzd.PING(); break; case Config.PROTOCOL_MQTT: - ret=protocol_mqtt.PING(); + ret=""; break; } return ret; @@ -182,7 +182,7 @@ public class protocolAPIHelper { ret=protocol_fzd.LK(); break; case Config.PROTOCOL_MQTT: - ret=protocol_mqtt.LK(); + ret=""; break; } return ret; diff --git a/app/src/main/java/com/ic/protocols/protocol_mqtt.java b/app/src/main/java/com/ic/protocols/protocol_mqtt.java index 6175da4b..02c30f86 100644 --- a/app/src/main/java/com/ic/protocols/protocol_mqtt.java +++ b/app/src/main/java/com/ic/protocols/protocol_mqtt.java @@ -29,61 +29,41 @@ import static java.lang.Math.abs; public class protocol_mqtt { private static final String TAG = "ICSrv." + protocol_mqtt.class.getSimpleName(); - private static final String PrivKEY = "XMQcHi0lGIdru6xzW7lygBwBT8N0c09P"; private static final String CMDHEADER = "["; private static final String CMDCOMPANY="IC"; private static final String CMDEND = "]"; private static final String CMDHEADERSPLIT = "*"; private static final String CMDSPLIT = ","; - public static final String defaultServerIP="api.xcloudtech.com"; - public static final int defaultServerPort=9000; + public static final String defaultServerIP="47.106.237.76"; + public static final int defaultServerPort=1883; + public static final String projName="WBG100"; + public static final String protocolVersion="v1"; + public static final String mqttKey="QWER15WTF156OQRT1230"; public enum CMD_TYPE { - /*终端发起*/ - //链路保持数据 - LK,//登录 - PING,//绑定查询 - KA,//心跳包 - UD,//位置上传 - UD2,//盲点位置上传 - AL,//报警数据上传 - Time,//获取服务器时间 - WT,//获取天气 - img,//上传图片 - VOICE,//上传语音 - WG,//请求位置信息 - DLT,//解绑 - temp,//体温上传 - /* 服务器发起*/ - UPLOAD,//数据上传间隔设置 - CENTER,//中心号码设置 - CALL, //拨打电话 - MONITOR,//监听 - SOS,//SOS 号码设置 - FACTORY,//恢复出厂设置 - SOSSMS,//SOS 短信报警开关 - LOWBAT,//低电短信报警开关 - VERNO,//版本查询 - CR,//定位指令 - POWEROFF,//关机指令 - REMOVE,//取下手环报警开关 - REMOVESMS,//取下手表短信报警开关 - PEDO,//计步功能开关 - SILENCETIME,//免打扰时间段设置 - SILENCETIME2, //免打扰时间段设置 - SLEEPTIME,//翻转检测时间段设置 - FIND,//找手表指令 - REMIND,//闹钟设置指令 - TK,//对讲功能(微聊发送语音) - PHL,//设置电话本+白名单(最多 50 条) - wdstart,//远程测温 - bldstart,//远程测血压 - hrtstart,//远程测量心率 - BOOTOFF,//定时关机 - oxygen,//血氧上传 - blood,//血压上传 - heart,//心率上传 + // cmd_type 含义 + // 终端主动上传 + BREQ, // 手表请求绑定(新增) + KA, // 心跳连接 + LGZONE, // 获取服务器端时间 + UD, // 位置数据上报 + AL, // 报警数据上报 + temp, // 上传体温数据 + heart, // 终端心率上传 + blood, // 上传血压数据 + oxygen, // 上传血氧数据 + // 平台主动下发 + UPLOAD, // 数据上传间隔设置 + hrtstart, // 设置心率、血氧、血压上传频率 + wdstart, // 设置体温上传频率 + CENTER, // 中心号码设置 + MONITOR, // 监听 + SOS, // 设置SOS 号码 + FACTORY, // 恢复出厂设置 + REMOVE, // 取下手环报警开关 + PEDO, // 计步功能开关 + MSGDOWN, // 消息下发到指定手表(新增) UNKNOWN_CMD, } @@ -91,47 +71,27 @@ public class protocol_mqtt { static { cmdMap = new HashMap(); - cmdMap.put(CMD_TYPE.LK, "LK"); - cmdMap.put(CMD_TYPE.PING, "PING"); + cmdMap.put(CMD_TYPE.BREQ, "BREQ"); cmdMap.put(CMD_TYPE.KA, "KA"); + cmdMap.put(CMD_TYPE.LGZONE, "LGZONE"); cmdMap.put(CMD_TYPE.UD, "UD"); - cmdMap.put(CMD_TYPE.UD2, "UD2"); cmdMap.put(CMD_TYPE.AL, "AL"); - cmdMap.put(CMD_TYPE.Time, "Time"); - cmdMap.put(CMD_TYPE.WT, "WT"); - cmdMap.put(CMD_TYPE.img, "img"); - cmdMap.put(CMD_TYPE.VOICE, "VOICE"); - cmdMap.put(CMD_TYPE.WG, "WG"); - cmdMap.put(CMD_TYPE.DLT, "DLT"); cmdMap.put(CMD_TYPE.temp, "temp"); + cmdMap.put(CMD_TYPE.heart, "heart"); + cmdMap.put(CMD_TYPE.blood, "blood"); + cmdMap.put(CMD_TYPE.oxygen, "oxygen"); + //下发 cmdMap.put(CMD_TYPE.UPLOAD, "UPLOAD"); + cmdMap.put(CMD_TYPE.hrtstart, "hrtstart"); + cmdMap.put(CMD_TYPE.wdstart, "wdstart"); cmdMap.put(CMD_TYPE.CENTER, "CENTER"); - cmdMap.put(CMD_TYPE.CALL, "CALL"); cmdMap.put(CMD_TYPE.MONITOR, "MONITOR"); cmdMap.put(CMD_TYPE.SOS, "SOS"); cmdMap.put(CMD_TYPE.FACTORY, "FACTORY"); - cmdMap.put(CMD_TYPE.SOSSMS, "SOSSMS"); - cmdMap.put(CMD_TYPE.LOWBAT, "LOWBAT"); - cmdMap.put(CMD_TYPE.VERNO, "VERNO"); - cmdMap.put(CMD_TYPE.CR, "CR"); - cmdMap.put(CMD_TYPE.POWEROFF, "POWEROFF"); cmdMap.put(CMD_TYPE.REMOVE, "REMOVE"); - cmdMap.put(CMD_TYPE.REMOVESMS, "REMOVESMS"); cmdMap.put(CMD_TYPE.PEDO, "PEDO"); - cmdMap.put(CMD_TYPE.SILENCETIME, "SILENCETIME"); - cmdMap.put(CMD_TYPE.SILENCETIME2, "SILENCETIME2"); - cmdMap.put(CMD_TYPE.SLEEPTIME, "SLEEPTIME"); - cmdMap.put(CMD_TYPE.FIND, "FIND"); - cmdMap.put(CMD_TYPE.REMIND, "REMIND"); - cmdMap.put(CMD_TYPE.TK, "TK"); - cmdMap.put(CMD_TYPE.PHL, "PHL"); - cmdMap.put(CMD_TYPE.wdstart, "wdstart"); - cmdMap.put(CMD_TYPE.bldstart, "bldstart"); - cmdMap.put(CMD_TYPE.hrtstart, "hrtstart"); - cmdMap.put(CMD_TYPE.BOOTOFF, "BOOTOFF"); - cmdMap.put(CMD_TYPE.oxygen, "oxygen"); - cmdMap.put(CMD_TYPE.blood, "blood"); - cmdMap.put(CMD_TYPE.heart, "heart"); + cmdMap.put(CMD_TYPE.MSGDOWN, "MSGDOWN"); + } private NettyConnection mConnection=null; @@ -145,26 +105,6 @@ public class protocol_mqtt { private StringBuffer cmdbuf = new StringBuffer(); -// /* -// 输入的字符串,如果有完整命令,返回 true -// 否则返回 false -// */ -// public boolean isCmdStr(String msg) { -// /*** -// * IC*334588000000156*LEN*FALLDOWN -// */ -// String cmd; -// int index=msg.indexOf(CMDSPLIT); -// if (index > 0){ -// cmd = msg.substring(0,index); -// }else{ -// cmd = msg; -// } -// if (regexUtil.isFZDCMD(cmd) ) { -// return true; -// } -// return false; -// } private void log(String msg) { ICLogger.log(TAG, msg); @@ -294,7 +234,7 @@ public class protocol_mqtt { private static String keyheader(String cmd,int len){ String header=genHeader(len,cmd); - String key= MD5.getCMDStringMD5(header+PrivKEY); + String key= MD5.getCMDStringMD5(header); return key; } @@ -315,22 +255,18 @@ public class protocol_mqtt { sb.append(CMDHEADER).append(keyheader).append(header).append(CMDSPLIT).append(data).append(CMDEND); return sb.toString(); } - /*登录*/ - public static String LK() { - /*IC*YYYYYYYYYYYYYYY*LEN*LK*/ - return genFZDCMD(cmdMap.get(CMD_TYPE.LK)); - } + /** * 绑定 * */ - public static String PING(){ + public static String BREQ(){ // IC*YYYYYYYYYYYYYYY*LEN*PING - return genFZDCMD(cmdMap.get(CMD_TYPE.PING)); + return genFZDCMD(cmdMap.get(CMD_TYPE.BREQ)); } - public static void handlePing(Runtime runtime,String data){ + public static void handleBREQ(Runtime runtime,String data){ // [IC*YYYYYYYYYYYYYYY*LEN*PING,是否绑定(0 表示未绑定,1 表示绑定)] // 实例:[IC*334588000000156*0006*PING,0]或[IC*334588000000156*0006*PING,1] int bind=Integer.parseInt(data); @@ -409,42 +345,6 @@ public class protocol_mqtt { } - /*LBS+WiFi混合定位*/ - public static String UD2(Runtime ds) { - //示例数据:IWAP02, - // zh_cn, - // 0, - // 7, - // 460,0, - // 9520|3671|13,9520|3672|12,9520|3673|11,9520|3674|10,9520|3675|9,9520|3676|8,9520|3677|7, - // 4, - // 1|D8-24-BD-79-FA-1F|59&2|3C-46-D8-6D-CE-01|81&3|0C-4C-39-1A-7C-65|69&4|70-A8-E3-5D-D7-C0|65# -// IW标识符 -// AP02:命令字 -// zh_cn: 语言标志 -// 0:回复标识,为0时不回复地址,为 1 时,服务器回复地址信息 -// 7: 表示共有7组基站 -// 460: MCC 国家码 -// 0: MNC运营商代码 -// 9520|3671|10: LAC|CID|dbm表示一组基站信息,后面数量需和基站组数地应 10:dbm为信号强度多基站信号强度建议从高到低排列后上传,信号强度转正数:150 – abs(dbm) -// 4: 表示WIFI组数, -// 1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度) - - int apsum=0; - String wifiinfo=ds.getWifiInfo(); - if (!wifiinfo.isEmpty()) { - String[] list = wifiinfo.split("&"); - apsum = list.length; - } - - ICLogger.i("Wifi ap sum "+apsum); - return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.LK)).append(CMDSPLIT) - .append(ds.getLanguage()).append(CMDSPLIT) - .append(0).append(CMDSPLIT) //为0时不回复地址 - .append(ds.getLBSMultiStationData()).append(CMDSPLIT) //基站信息数据 - .append(apsum).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString(); //wifi信息数据 - } - //处理 定位 BP01 public void handleUD2(String cmd){ log("BP02定位接收成功"); @@ -485,27 +385,7 @@ public class protocol_mqtt { public static String temp(double temp){ return genFZDCMD(cmdMap.get(CMD_TYPE.temp),String.format("%.1f",temp)); } - public static String POWEROFF(){ - return genFZDCMD(cmdMap.get(CMD_TYPE.POWEROFF)); - } - public void handlePOWEROFF(Connection connection) { - - connection.send(genStringMessage("POWEROFF",POWEROFF())); - } - public static String CR(){ - return genFZDCMD(cmdMap.get(CMD_TYPE.CR)); - } - public void handleCR(Connection connection) { - connection.send(genStringMessage("CR",CR())); - } - public static String bldstart(){ - return genFZDCMD(cmdMap.get(CMD_TYPE.bldstart)); - } - public void handleBldstart(Connection connection) { - - connection.send(genStringMessage("bldstart",bldstart())); - } public static String wdstart(){ return genFZDCMD(cmdMap.get(CMD_TYPE.wdstart)); } @@ -533,13 +413,7 @@ public class protocol_mqtt { connection.send(genStringMessage("hrtstart",hrtstart())); } - public static String FIND(){ - return genFZDCMD(cmdMap.get(CMD_TYPE.FIND)); - } - public void handleFIND(Connection connection) { - connection.send(genStringMessage("FIND",FIND())); - } public static String SOS(){ return genFZDCMD(cmdMap.get(CMD_TYPE.SOS)); } @@ -578,42 +452,6 @@ public class protocol_mqtt { } - public static String PHL(){ - return genFZDCMD(cmdMap.get(CMD_TYPE.PHL)); - } - - public void handlePHL(Connection connection,Runtime runtime,String cmd,String data){ - /*** - * [IC*334588000000156*len*PHL,号码,名字,号码,名字,号码,名字,号码,名字,号码,名字] len:发送长度 16 进制表示 占用 2 个字节 - * 号码:ascii 字符 名字:Unicode 编码 - * 该接口融合了白名单和电话本的功能,最多对应 50 组号码与名字,号码不超过 20 个 ascii 字符, 姓名不超过 10 个 Unicode 字符。 - * 示 例 : [IC*334588000000156*0010*PHL,110,5F204E09] - * 5F204E09--->张三,是使用 unicode 编码 - * 终端回复:[IC*334588000000156*0003*PHL] - */ - - String list[]=data.split(CMDSPLIT); - int listlen=list.length; - boolean ispared= (( listlen >0) && (listlen%2 == 0)); - if (ispared){ - ArrayList contactArray=new ArrayList(); - for(int i=0; i(); mMqttIdentifierHelper = new MQTTIdentifierHelper(); + } @Override @@ -282,7 +283,7 @@ public class QatjaService extends Service { } connect.setCleanSession(cleanSession); - + connect.setKeepAlive(60); connect.setWillFlag(willFlag); if (willFlag) { connect.setWillTopic(willTopic); @@ -458,11 +459,11 @@ public class QatjaService extends Service { // // connect(host, port); // } - private synchronized void sendMessage(MQTTMessage msg) { + public synchronized void sendMessage(MQTTMessage msg) { sendMessage(msg, true); } - private synchronized void sendMessage(MQTTMessage msg, boolean mustBeConnected) { + public synchronized void sendMessage(MQTTMessage msg, boolean mustBeConnected) { if (DEBUG) Log.d(TAG, "Sending message: " + MQTTHelper.decodePackageName(msg)); @@ -884,7 +885,10 @@ public class QatjaService extends Service { sendMessage(msg); } } + private synchronized void handlePubmesage(MQTTPuback msg) { + Log.d(TAG, "Success handlePubmesage to " + new String(msg.getPayload())); + } /** * Manages subscription messages * @@ -1116,6 +1120,7 @@ public class QatjaService extends Service { case PUBACK: MQTTPuback puback = MQTTPuback.fromBuffer(buffer); mMqttIdentifierHelper.removeSentPackage(puback); + handlePubmesage(puback); break; case PUBREC: