From: snickersun Date: Mon, 23 Mar 2020 09:24:20 +0000 (+0800) Subject: 添加 BP34 自定义定位时间支持。Wifi自定义时间进行运动检测,GPS自定义时间不进行检测。 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=282a15c8998cd9b3f55febd0628e654b4323be30;p=protocol_srv.git 添加 BP34 自定义定位时间支持。Wifi自定义时间进行运动检测,GPS自定义时间不进行检测。 GPS 1分钟以内,包括1分钟 则GPS常开。 --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 3d356fb8..cee6e305 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -785,16 +785,18 @@ public class CoreService extends Service { cycle=60*60; break; case CUSTOM_MOD: + case CUSTOM_MOD8_GPS: + case CUSTOM_MOD8_WIFI: cycle=runtime.getLocationInstance().getLocation_cycle(); break; } AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,cycle, ACTION_LOCATION_ALARM); sb.append(" setLocationAlarm "+ACTION_LOCATION_ALARM+" mod "+mod+", cycle in Seconds "+cycle); - locationClient.triggerLocationProcess(); - ICLogger.i(sb.toString()); if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + locationClient.triggerLocationProcess(); + } public void setHeartAlarm(){ diff --git a/app/src/main/java/com/enqualcomm/support/LocationClient.java b/app/src/main/java/com/enqualcomm/support/LocationClient.java index c2a0c77e..d2f739f9 100644 --- a/app/src/main/java/com/enqualcomm/support/LocationClient.java +++ b/app/src/main/java/com/enqualcomm/support/LocationClient.java @@ -223,7 +223,6 @@ public class LocationClient { } public void startGpsLocate() { - boolean FactryModeOpening=DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context); boolean needReOpenGPS=runtime.getFactoryTestingStat(); @@ -330,6 +329,7 @@ public class LocationClient { switch(mode){ case ICLocation.CUSTOM_MOD: + case ICLocation.CUSTOM_MOD8_GPS: case ICLocation.EMERGNECY_MOD: case ICLocation.REALTIME_MOD: @@ -394,6 +394,7 @@ public class LocationClient { case ICLocation.NORMAL_MOD: case ICLocation.LOWPOWER_MOD: + case ICLocation.CUSTOM_MOD8_WIFI: default: //wifi优先的话给20秒时间 @@ -527,7 +528,13 @@ public void updateCellInfo() { } // 不强制定位 且 WorkingMod 不是紧急模式,且 没有移动过 - if ( ( forceLocation != 1 ) && ( mod != ICLocation.REALTIME_MOD )&& ( mod != ICLocation.EMERGNECY_MOD ) && (mod != ICLocation.CUSTOM_MOD) && (runtime.getLastStepCount() == runtime.getTotalStepCount()) && (skipMoveCheck ==false )){ + if ( ( forceLocation != 1 ) && + ( mod != ICLocation.REALTIME_MOD )&& + ( mod != ICLocation.EMERGNECY_MOD ) && + (mod != ICLocation.CUSTOM_MOD8_GPS ) && +// (mod != ICLocation.CUSTOM_MOD8_WIFI ) && + (mod != ICLocation.CUSTOM_MOD ) && + (runtime.getLastStepCount() == runtime.getTotalStepCount()) && (skipMoveCheck ==false )){ ICLogger.i("No Move ,skip location!"); return ; } @@ -535,11 +542,14 @@ public void updateCellInfo() { forceLocation=0; isLocating=true; + + runtime.setLastStepCount(runtime.getTotalStepCount()); updateCellInfo(); startWifiScan(); switch(mod){ case ICLocation.CUSTOM_MOD: + case ICLocation.CUSTOM_MOD8_GPS: if(runtime.getLocationInstance().getLocation_cycle()<=60){ nmeaListener.setNoStop(true); }else{ @@ -555,6 +565,7 @@ public void updateCellInfo() { break; case ICLocation.LOWPOWER_MOD: case ICLocation.NORMAL_MOD: + case ICLocation.CUSTOM_MOD8_WIFI: default: clearGPSlocateStat(); //如果wifi优先,则确保gps关闭,防止切换回来gps状态错误,尤其是不NoStop模式下的gps切换回来有此风险。 @@ -582,6 +593,7 @@ public void updateCellInfo() { ICLogger.i("Set WorkMODE "+mod +" and reset Location AlarmCycle"); CoreService.getInstance().setLocationAlarm(mod); //默认设置好Alarm后会触发一次定位,无需后面再触发定位了。 forceLocation=1; //不管是什么模式,都强制定位一次,然后再说其他情况 + if(mod==ICLocation.EMERGNECY_MOD) CoreService.getInstance().setEmegencyLocationSTOPAlarm(5);//Emergency模式5分钟自动停止 // this.startLocationProcess(mod); diff --git a/app/src/main/java/com/enqualcomm/support/MainActivity.java b/app/src/main/java/com/enqualcomm/support/MainActivity.java index f05c0330..ced4dba3 100644 --- a/app/src/main/java/com/enqualcomm/support/MainActivity.java +++ b/app/src/main/java/com/enqualcomm/support/MainActivity.java @@ -109,7 +109,7 @@ public class MainActivity extends AppCompatActivity { TextView tv_version=(TextView)findViewById(R.id.textViewVersion); - tv_version.setText(DeviceInfoUtil.getVersionName(this)); + tv_version.setText(DeviceInfoUtil.getVersionCode(this)+"-"+DeviceInfoUtil.getVersionName(this)); } diff --git a/app/src/main/java/com/enqualcomm/support/NMEAListener.java b/app/src/main/java/com/enqualcomm/support/NMEAListener.java index 1ea9e8d8..d49dd2c1 100644 --- a/app/src/main/java/com/enqualcomm/support/NMEAListener.java +++ b/app/src/main/java/com/enqualcomm/support/NMEAListener.java @@ -82,6 +82,7 @@ public class NMEAListener implements NmeaListener, LocationListener { if (noStop == false) { switch (runtime.getLocationInstance().getWorkingMod()) { case ICLocation.CUSTOM_MOD: + case ICLocation.CUSTOM_MOD8_GPS: case ICLocation.EMERGNECY_MOD: case ICLocation.REALTIME_MOD: //GPS 定位模式不关闭GPS,防止 1分钟定位超时后,重新关闭开启GPS。 @@ -89,6 +90,7 @@ public class NMEAListener implements NmeaListener, LocationListener { break; case ICLocation.LOWPOWER_MOD: case ICLocation.NORMAL_MOD: + case ICLocation.CUSTOM_MOD8_WIFI: default: ICLogger.i("非GPS定位模式,关闭GPS"); //非GPS定位模式的话,需要关闭GPS。 diff --git a/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java b/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java index d4d72fd7..bb98343f 100644 --- a/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java +++ b/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java @@ -94,6 +94,8 @@ public class protocolAPIHelper { BP31,//关机 AP33, BP33,//工作模式 + AP34, + BP34,//自定义工作模式 APXL, BPXL,//测量心率 APXY, @@ -157,6 +159,8 @@ public class protocolAPIHelper { cmdMap.put(CMD_TYPE.BP31, "BP31"); cmdMap.put(CMD_TYPE.AP33, "AP33"); cmdMap.put(CMD_TYPE.BP33, "BP33"); + cmdMap.put(CMD_TYPE.AP34, "AP34"); + cmdMap.put(CMD_TYPE.BP34, "BP34"); cmdMap.put(CMD_TYPE.APXL, "APXL"); cmdMap.put(CMD_TYPE.BPXL, "BPXL"); cmdMap.put(CMD_TYPE.APXY, "APXY"); @@ -876,6 +880,7 @@ public class protocolAPIHelper { } + public static String AP33(String cmdindex,int workMode){ //IWAP33,080835,1# //080835:指令流水号 @@ -933,6 +938,55 @@ public class protocolAPIHelper { } + public static String AP34(String cmdindex,int workMode){ +//IWAP34,588854,1# +//080835:指令流水号 +//8:模式 + return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34)) + .append(CMDSPLIT).append(cmdindex) + .append(CMDSPLIT).append(workMode) + .append(CMDEND).toString(); + } + + //设置自定义工作模式 + public void handleBP34(Connection connection,Runtime runtime,String cmd){ + +// IWBP34,867155030001063,588854,8,900,1# +// IW:标识符 +// BP33 : 命令字符 +// 353456789012345:IMEI号,设备唯一ID +// 080835:指令流水号 +// 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式 + + String[] cmdlist=cmd.split(","); + if (cmdlist.length == 6){ + + + log("work mode "+cmdlist[3]); + int mod=Integer.valueOf(cmdlist[3]); + int Cycle=Integer.valueOf(cmdlist[4]); + int gpson=Integer.valueOf(cmdlist[5]); + + String msg=AP34(cmdlist[2],mod); + //设定当前工作模式及循环频率 + connection.send(genStringMessage("AP34",msg)); + + if(gpson==1){ + mod=ICLocation.CUSTOM_MOD8_GPS; + }else{ + mod=ICLocation.CUSTOM_MOD8_WIFI; + } + log("reply msg "+msg); + log("LOCATION_MODE "+LOCATION_MODE+" mod "+ mod + ", cycle = "+Cycle+", GPS On= "+gpson); + Config.setLocationMode(runtime.getContextProxy().context,mod); + Config.setLocationCycle(runtime.getContextProxy().context,Cycle); + runtime.getLocationInstance().setLocation_cycle(Cycle); + runtime.getLocationInstance().setWorkingMod(mod); +// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + //此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。 + } + + } /** * 心率上传,返回协议字串 @@ -1079,7 +1133,7 @@ public static String AP15(String index){ connection.send(protocolAPIHelper.genStringMessage("AP15",AP15(index))); ICLogger.i("BP15 , 定位周期="+time+"分钟"); - Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD); + Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS); Config.setLocationCycle(runtime.getContextProxy().context,Integer.valueOf(time)); runtime.getLocationInstance().setWorkingMod(Config.getLocationMode(runtime.getContextProxy().context)); runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(runtime.getContextProxy().context)); diff --git a/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java b/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java index 0afda2e8..7d45872f 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java +++ b/app/src/main/java/com/enqualcomm/support/bean/ICLocation.java @@ -78,7 +78,8 @@ public class ICLocation { public static final int REALTIME_MOD=3; //location rate 1 time per minutes public static final int EMERGNECY_MOD=4; //location rate 1 time per minutes work 5 minutes public static final int CUSTOM_MOD=5; //location rate 1 time per minutes - + public static final int CUSTOM_MOD8_GPS=8; //location rate 1 time per minutes + public static final int CUSTOM_MOD8_WIFI=9; //location rate 1 time per minutes private int mworkingMod; private int location_cycle; diff --git a/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java b/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java index 71bcde09..f2eeb4c7 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java @@ -63,6 +63,22 @@ public class DeviceInfoUtil { } return ""; } + public static String getVersionCode(Context context,String pkgName) { + // 获取packagemanager的实例 + PackageManager packageManager = context.getPackageManager(); + // getPackageName()是你当前类的包名 + try { + PackageInfo packInfo = packageManager.getPackageInfo(pkgName, 0); + String version = "V"+packInfo.versionCode; + return version; + + }catch (Exception e){ + e.printStackTrace(); + } + return ""; + } + + public static String getVersionCode(Context context) { // 获取packagemanager的实例 diff --git a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java index a52bd8ff..9143fd5a 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java +++ b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java @@ -88,6 +88,11 @@ public class NettyConnection implements Connection { API.handleBP33(NettyConnection.this,runtime,cmd); DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化 + break; + case BP34: + //设置工作模式 + API.handleBP34(NettyConnection.this,runtime,cmd); + DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化 break; case BP16: //立即定位指令(长链接有效)