From: snickersun Date: Wed, 4 Nov 2020 11:24:59 +0000 (+0800) Subject: release V688 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=565b55bd2aea2e1a217b822f3eb6b01ef9b93ac5;p=protocol_srv.git release V688 1、移动检测 添加 区分心跳时的纯蓝牙扫描和定位时的蓝牙扫描 2、修改APBR上传格式,添加时间。 3、mqtt STATE_NONE时恢复 onMqttDisconnected调用,之前的修改造成了出错后不能恢复。 --- diff --git a/app/release/ICSer_V687_2011032007_release.apk b/app/release/ICSer_V688_2011041727_release.apk similarity index 78% rename from app/release/ICSer_V687_2011032007_release.apk rename to app/release/ICSer_V688_2011041727_release.apk index 689cbb78..1e3bbb34 100644 Binary files a/app/release/ICSer_V687_2011032007_release.apk and b/app/release/ICSer_V688_2011041727_release.apk differ diff --git a/app/release/output.json b/app/release/output.json index 9d3efb65..52963475 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":687,"versionName":"2011032007","enabled":true,"outputFile":"ICSer_V687_2011032007_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V687_2011032007_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":688,"versionName":"2011041727","enabled":true,"outputFile":"ICSer_V688_2011041727_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V688_2011041727_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 54033fd2..6763ff4f 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -471,6 +471,8 @@ public class CoreService extends Service { } this.runtime.setSaveStepCount(j); this.runtime.setTotalStepCount(i); + runtime.setLastStepCountForBT(runtime.getTotalStepCount()); + runtime.setLastStepCount(runtime.getTotalStepCount()); } public void saveStepCount(){ int i = runtime.getTotalStepCount(); diff --git a/app/src/main/java/com/enqualcomm/support/LocationClient.java b/app/src/main/java/com/enqualcomm/support/LocationClient.java index 8a839eda..c9aadbcc 100644 --- a/app/src/main/java/com/enqualcomm/support/LocationClient.java +++ b/app/src/main/java/com/enqualcomm/support/LocationClient.java @@ -2,6 +2,7 @@ package com.enqualcomm.support; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.IClipboard; import android.content.Intent; import android.content.IntentFilter; import android.os.Handler; @@ -250,7 +251,8 @@ public class LocationClient { runtime.bleInfo.last_is_in_area=runtime.bleInfo.is_in_area; //扫描结束就清掉scanBLEOnly,保证下次不会被误操作。 scanBLEOnly=false; - }else{ //Config.BLEScanProtocol==0 + }else{ + //Config.BLEScanProtocol == 1 if (btNewScanResult!=null && btNewScanResult.size() > 0) { StringBuilder sb = new StringBuilder(); sb.append("found bt mac ").append(btNewScanResult.size()); @@ -444,14 +446,15 @@ public class LocationClient { public void call(Object param1Object) { waitAndSendLocation(); } }); }else if (msg.what == msgWhat_StartLocationProcess) { - if (runtime.bleInfo.btMacList.size() > 0) { + if (Config.BLEScanProtocol == 0 && runtime.bleInfo.btMacList.size() > 0) { if(scanBLEOnly && btHelper.isBtscanning()){ //如果正在进行独立蓝牙扫描,则强制切换为正常扫描。 scanBLEOnly=false; }else { //有蓝牙搜索要求则 先进行蓝牙扫描 - if (needLocationForBT()) + if (needLocation()) { btHelper.scanBLE(); + } } } else { //没有蓝牙搜索要求,就正常定位 @@ -463,8 +466,10 @@ public class LocationClient { //有蓝牙搜索要求则 先进行蓝牙扫描 if (!btHelper.isBtscanning()) { scanBLEOnly = true; - if (needLocationForBT()) + if (needLocationForBT()) { + ICLogger.i("msgWhat_StartBLEProcess"); btHelper.scanBLE(); + } } else { ICLogger.i("BT Scanning skip ScanBLE only!"); } @@ -472,10 +477,12 @@ public class LocationClient { }else{ //有蓝牙搜索要求则 先进行蓝牙扫描 if (!btHelper.isBtscanning()) { - if (needLocationForBT()) + if (needLocationForBT()) { + ICLogger.i("msgWhat_StartBLEProcess2"); btHelper.scanBLE(); + } } else { - ICLogger.i("BT Scanning skip ScanBLE only!"); + ICLogger.i("BT Scanning skip ScanBLE only2!"); } } }else if (msg.what == msgWhat_StartSOSLocationProcess){ @@ -485,25 +492,25 @@ public class LocationClient { //更新lbs信息 CellInfoUtil.getCellInfo(runtime.getContextProxy().getTelephonyManager(),runtime); - if (runtime.bleInfo.btMacList.size() > 0) { - if(scanBLEOnly && btHelper.isBtscanning()) - { - //如果正在进行独立蓝牙扫描,则强制切换为正常扫描。 - scanBLEOnly = false; - }else { - //有蓝牙搜索要求则 先进行蓝牙扫描 + if (Config.BLEScanProtocol==0 && runtime.bleInfo.btMacList.size() > 0) { startSOSLocation = true;//启动SOS定位,为了快速响应,只要wifi定位即可。 - forceLocation = 1; - if (needLocationForBT()) - btHelper.scanBLE(); + if (scanBLEOnly && btHelper.isBtscanning()) { + //如果正在进行独立蓝牙扫描,则强制切换为正常扫描。 + scanBLEOnly = false; + } else { + //SOS location 有蓝牙搜索要求则 先进行蓝牙扫描 + forceLocation = 1; + if(!btHelper.isBtscanning()) + btHelper.scanBLE(); + } + } else { + Util.mSleep(1000); + StringMessage waningmsg = protocolAPIHelper.getWarningMSG(runtime); + DeliverMessage(waningmsg); } - } else { - Util.mSleep(1000); - StringMessage waningmsg=protocolAPIHelper.getWarningMSG(runtime); - DeliverMessage(waningmsg); - } } + // // startSOSLocation=true;//启动SOS定位,为了快速响应,只要wifi定位即可。 // forceLocation=1; @@ -824,7 +831,33 @@ public void updateCellInfo() { private static boolean last_noMove=false; private static final int MaxNoMoveTimeout=3*60*1000; //3分钟 private static long first_NoMove_timestamp=0; + private static long first_NoMove_timestampForBT=0; + private static boolean last_noMoveForBT=false; + + /*** + *noMove and timeout return true + * else return false + */ + private boolean checkNoMoveTimeoutForBT(){ + noMove=runtime.getLastStepCountForBT() == runtime.getTotalStepCount(); + runtime.updateFZDDevStatusMoving(!noMove); //设置当前运动状态 + ICLogger.i("BT checkNoMoveTimeout last_noMoveForBT "+last_noMoveForBT+" noMove "+noMove+ " lastStepCountForBT "+runtime.getLastStepCountForBT()+" StepCount "+runtime.getTotalStepCount()); + if (last_noMoveForBT==false&& noMove==true){ + first_NoMove_timestampForBT=System.currentTimeMillis(); + }else if (noMove==false){ + first_NoMove_timestampForBT=0; + } + last_noMoveForBT=noMove; + //属于 判断是否 不动的状态超时 + if (noMove==true&& first_NoMove_timestampForBT>0.01 && System.currentTimeMillis()-first_NoMove_timestampForBT > MaxNoMoveTimeout){ + ICLogger.i("BT checkNoMoveTimeout true "); + return true; + }else{ + ICLogger.i("BT checkNoMoveTimeout false"); + return false; + } + } /*** *noMove and timeout return true @@ -833,7 +866,7 @@ public void updateCellInfo() { private boolean checkNoMoveTimeout(){ noMove=runtime.getLastStepCount() == runtime.getTotalStepCount(); runtime.updateFZDDevStatusMoving(!noMove); //设置当前运动状态 - ICLogger.i(" checkNoMoveTimeout last_noMove "+last_noMove+" noMove "+noMove); + ICLogger.i("checkNoMoveTimeout last_noMove "+last_noMove+" noMove "+noMove+ " lastStepCount "+runtime.getLastStepCount()+" StepCount "+runtime.getTotalStepCount()); if (last_noMove==false&& noMove==true){ first_NoMove_timestamp=System.currentTimeMillis(); }else if (noMove==false){ @@ -854,7 +887,7 @@ public void updateCellInfo() { private boolean needLocationForBT(){ updateStepCount();//update StepCount,保证每次定位前,计步数据是最新的。防止丢数据。 //如果没有动,且超时。则跳过定位 - NoMoveTimeout=checkNoMoveTimeout(); + NoMoveTimeout=checkNoMoveTimeoutForBT(); ICLogger.i("BT NoMoveTimeout "+NoMoveTimeout+", forceLocation="+forceLocation+", Config.forceMoveCheck="+Config.forceMoveCheck+", skipMoveCheck="+skipMoveCheck); // 不强制定位 且 (WorkingMod 不是紧急模式 或者 强制进行移动检测),且 没有移动过 @@ -865,6 +898,26 @@ public void updateCellInfo() { return false; } + //以目前逻辑,每次检测必然跟随蓝牙扫描,因此可以在此直接更新上一次的计步次数,配合下次的运动检测 + runtime.setLastStepCountForBT(runtime.getTotalStepCount()); + return true; + } + + private boolean needLocation(){ + updateStepCount();//update StepCount,保证每次定位前,计步数据是最新的。防止丢数据。 + //如果没有动,且超时。则跳过定位 + NoMoveTimeout=checkNoMoveTimeout(); + ICLogger.i(" NoMoveTimeout "+NoMoveTimeout+", forceLocation="+forceLocation+", Config.forceMoveCheck="+Config.forceMoveCheck+", skipMoveCheck="+skipMoveCheck); + + // 不强制定位 且 (WorkingMod 不是紧急模式 或者 强制进行移动检测),且 没有移动过 + if ( ( forceLocation != 1 ) && + (Config.forceMoveCheck==true) && + (NoMoveTimeout) && (skipMoveCheck ==false )){ + ICLogger.i("No Move ,skip BT location2!"); + + return false; + } + //只做正常定位前是否运动的判断,给定位前蓝牙扫描专用的。和 NeedlocationFotBT 还不同。 return true; } public void startLocationProcess(int mod){ @@ -900,8 +953,7 @@ public void updateCellInfo() { forceLocation=0; isLocating=true; - - + //如果不动且超时,则意味着要进行定位,更新计步,配合下一次运动检查。 runtime.setLastStepCount(runtime.getTotalStepCount()); updateCellInfo(); if(!Config.disableWiFiScan) startWifiScan(); 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 d3c27c0f..dbce6d9b 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -550,6 +550,7 @@ public class Runtime { return dnsUtil; } private int lastStepCount=0; + private int lastStepCountForBT=0; private long timestamp; public int totalStepCount; @@ -577,6 +578,13 @@ public class Runtime { public void setLastStepCount(int st){ lastStepCount=st; } + public int getLastStepCountForBT(){ + return lastStepCountForBT; + } + public void setLastStepCountForBT(int st){ + lastStepCountForBT=st; + } + public String IMEI() { return this.imei; } public String IMEI_CID() { return this.imei_cid; } diff --git a/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java b/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java index d5be6434..11d0da77 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java @@ -33,8 +33,9 @@ public class TimeUtil { public static String getSystemTime2(long paramLong) { return (new SimpleDateFormat("yyyyMMdd;HHmmss")).format(new Date(paramLong)); } + public static String getSystemTimeyyyyMMddHHmmss() { return getSystemTime3(System.currentTimeMillis()); } public static String getSystemTime3() { return getSystemTime3(System.currentTimeMillis()); } - + public static String getSystemTime3(long paramLong) { return (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date(paramLong)); } public static String getSystemTime4() { return getSystemTime4(System.currentTimeMillis()); } diff --git a/app/src/main/java/com/ic/protocols/protocol_ic.java b/app/src/main/java/com/ic/protocols/protocol_ic.java index 1c58bc3e..6296d98b 100644 --- a/app/src/main/java/com/ic/protocols/protocol_ic.java +++ b/app/src/main/java/com/ic/protocols/protocol_ic.java @@ -2243,7 +2243,7 @@ public class protocol_ic { public static StringMessage APSL(String date,int deepsleep,int lightsleep,int score){ /*** * 示例: - * IWAPSL,202008003,240,120,90# + * IWAPSL,20200803,240,120,90# * 说明:睡眠计算时间 当日21:00至 次日 9:00, 睡眠时间记录为当日时间。如2020-8-3的睡眠时间段为 2020-8-3 21:00 ~ 2020-8-4 09:00 * IW:标识符 * APSL:命令字 @@ -2663,6 +2663,11 @@ public class protocol_ic { * @return */ public static StringMessage APBR(Runtime runtime) { + /** + * #IWAPBR,353456789012345,080835,1# + * + * #IWBPBR# + */ if (runtime.bleInfo.btScanResult.size() > 0) { StringBuffer sb=new StringBuffer(); sb.append(runtime.bleInfo.btScanResult.size()); @@ -2670,6 +2675,7 @@ public class protocol_ic { sb.append(CMDSPLIT).append(it); } return genStringMessage("APBR", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBR)) + .append(CMDSPLIT).append(TimeUtil.getSystemTimeyyyyMMddHHmmss()) .append(CMDSPLIT).append(sb.toString()) .append(CMDEND).toString()); diff --git a/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java b/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java index e5b61e33..fcbc8516 100644 --- a/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java +++ b/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java @@ -60,8 +60,8 @@ public class protocol_mqtt_client { switch (msg.arg1) { case MQTTConnectionConstants.STATE_NONE: -// if (mqttCallbackInterface!= null) -// mqttCallbackInterface.onMqttDisconnected(); + if (mqttCallbackInterface!= null) + mqttCallbackInterface.onMqttDisconnected(); break; case MQTTConnectionConstants.STATE_CONNECTING: break; diff --git a/app/version_code.properties b/app/version_code.properties index 0be0e949..7594c8cd 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Tue Nov 03 20:07:50 CST 2020 -VERSION_CODE=687 +#Wed Nov 04 17:27:07 CST 2020 +VERSION_CODE=688