添加 BP34 自定义定位时间支持。Wifi自定义时间进行运动检测,GPS自定义时间不进行检测。
authorsnickersun <scy@incartech.cn>
Mon, 23 Mar 2020 09:24:20 +0000 (17:24 +0800)
committersnickersun <scy@incartech.cn>
Mon, 23 Mar 2020 09:24:20 +0000 (17:24 +0800)
GPS 1分钟以内,包括1分钟 则GPS常开。

app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/MainActivity.java
app/src/main/java/com/enqualcomm/support/NMEAListener.java
app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java
app/src/main/java/com/enqualcomm/support/bean/ICLocation.java
app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java

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