release V659
authorsnickersun <scy@incartech.cn>
Thu, 15 Oct 2020 12:05:44 +0000 (20:05 +0800)
committersnickersun <scy@incartech.cn>
Thu, 15 Oct 2020 12:10:25 +0000 (20:10 +0800)
蓝牙扫描单次6秒,如果未扫到重试2次,所以扫描次数最少1次,最多3次。
充电检测函数修改,
persist.sys.disableWiFiLocation=true 屏蔽wifi定位
确保每次扫描都有结果后再进行定位报警

app/release/ICSer_V659_2010151957_release.apk [moved from app/release/ICSer_V657_2010142343_release.apk with 78% similarity]
app/release/output.json
app/src/main/java/com/enqualcomm/support/Config.java
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/adapter/BTHelper.java
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/version_code.properties

similarity index 78%
rename from app/release/ICSer_V657_2010142343_release.apk
rename to app/release/ICSer_V659_2010151957_release.apk
index b191153..d90e8dc 100644 (file)
Binary files a/app/release/ICSer_V657_2010142343_release.apk and b/app/release/ICSer_V659_2010151957_release.apk differ
index fc5d719..3647a2c 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":657,"versionName":"2010142343","enabled":true,"outputFile":"ICSer_V657_2010142343_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V657_2010142343_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":659,"versionName":"2010151957","enabled":true,"outputFile":"ICSer_V659_2010151957_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V659_2010151957_release.apk","properties":{}}]
\ No newline at end of file
index 4867d9e..ff64e09 100644 (file)
@@ -55,8 +55,9 @@ public class Config {
   public static boolean noTempSensor=false;\r
   public static boolean noPPGSensor=false;\r
   public static boolean needBroadcastAntiAlarm=true;\r
+  public static boolean disableWiFiScan=false;\r
   static  {\r
-  \r
+    disableWiFiScan=Util.getSystemProperties("persist.sys.disableWiFiLocation","false").equals("true");\r
   }\r
   \r
   private static String make() {\r
index 149edff..65863d0 100644 (file)
@@ -686,8 +686,6 @@ public class CoreService extends Service {
             Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF,true);\r
             Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF,true);\r
             Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH,true);\r
-            Config.setNeedAntiOff(runtime.getContextProxy().context,true);\r
-            Config.setNeedCutOff(runtime.getContextProxy().context,true);\r
             if (Config.getConfigInitFlag(this)==0) {\r
                 Config.setLocationMode(this, CUSTOM_MOD8_GPS);\r
 //                Config.setLocationMode(this, CUSTOM_MOD8_WIFI);\r
@@ -722,7 +720,7 @@ public class CoreService extends Service {
         }\r
 \r
         Config.dumpAlarmConfig();\r
-        //初始化剪断,脱腕报警开关(这个开关是界面提示显示用的,上面的Config.ConfigAlarm 是上报服务器消息的开关)\r
+        //A9专用变量 初始化剪断,脱腕报警开关(这个开关是界面提示显示用的,上面的Config.ConfigAlarm 是上报服务器消息的开关)\r
         runtime.setNeddReportCutoff(Config.getNeedCutOff(this));\r
         runtime.setNeedAntioff(Config.getNeedAntiOff(this));\r
 \r
@@ -1469,6 +1467,7 @@ public class CoreService extends Service {
     public void onDestroy() {\r
         super.onDestroy();\r
 \r
+\r
         saveStepCount();\r
         this.connectionServiceChain.processDetach(this.connection, this.runtime);\r
         this.invokeHandlerServiceChain.processDetach(this.connection, this.runtime);\r
index 9eb2fb6..41b2194 100644 (file)
@@ -118,6 +118,12 @@ public class LocationClient {
   int preNetworkTypeNomber;\r
   private boolean scanBLEOnly=false;\r
 \r
+  //如果未扫到,重试扫描的次数。\r
+  private int  maxBLEScanTime=2;\r
+  private int ScanBLERetryCount=maxBLEScanTime;\r
+\r
+\r
+\r
   private static LocationClient gLocationCline=null;\r
 //  private BroadcastReceiver screenOnReceiver = new BroadcastReceiver() {\r
 //      public void onReceive(Context param1Context, Intent param1Intent) {\r
@@ -149,17 +155,32 @@ public class LocationClient {
                 break;\r
               }\r
             }\r
-            runtime.bleInfo.is_in_area = in_area;\r
+            if(in_area == false && ScanBLERetryCount-- > 0){\r
+                //如果没有扫描到,且扫描次数没有超限,则重新扫描一次。注意要delay 5秒\r
+              try{\r
+                Thread.sleep(5000);\r
+              }catch ( Exception e){}\r
+                //Do retry Scan\r
+                ICLogger.i("BT BLE not found retry Scan "+ ScanBLERetryCount);\r
+                btHelper.scanBLE();\r
+              return ;\r
+            }else {\r
+              runtime.bleInfo.is_in_area = in_area;\r
+              ScanBLERetryCount=maxBLEScanTime;\r
+            }\r
+\r
           }catch(Exception e){//如果出错,原来的状态不要变。防止误报,最多延迟一个周期报。\r
             e.printStackTrace();\r
             ICLogger.i(e.getMessage());\r
           }\r
         } else {\r
           runtime.bleInfo.is_in_area = false;\r
+          ScanBLERetryCount=maxBLEScanTime;\r
         }\r
         ICLogger.i("Bt Dev Is in Area " + runtime.bleInfo.is_in_area);\r
 \r
         if(scanBLEOnly==true){\r
+          //只扫描蓝牙,不做定位\r
           if (runtime.bleInfo.is_in_area == false ) {\r
             runtime.updateFZDDevStatusEscape(true);\r
             ICLogger.i("BT 不在区域内");\r
@@ -167,14 +188,10 @@ public class LocationClient {
               //只有上一次在区域内,这次出区域才需要报警\r
               ICLogger.i("BT 不在区域内,且上次在区域内,报警!");\r
               //如果需要报警定位,则强制进行sos定位,不能通过triggerSOS,因为函数中调用了BLEScan会造成循环调用\r
-              if (donotScanWiFi){\r
+\r
                 StringMessage AL_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
                 DeliverMessage(AL_CMD);\r
-              }else {\r
-                startSOSLocation = true;//启动SOS定位,为了快速响应,只要wifi定位即可。\r
-                forceLocation = 1;\r
-                startLocationProcess(ICLocation.NORMAL_MOD);\r
-              }\r
+\r
 \r
             }\r
           }else{\r
@@ -182,32 +199,26 @@ public class LocationClient {
             runtime.updateFZDDevStatusEscape(false);\r
           }\r
         }else {\r
+          //定位前的蓝牙扫描\r
           if (runtime.bleInfo.is_in_area == false) {\r
             ICLogger.i("BT 不在区域内,开启定位流程");\r
             runtime.updateFZDDevStatusEscape(true);\r
             if ( runtime.bleInfo.last_is_in_area==true) {\r
               //只有上一次在区域内,这次出区域才需要报警\r
               ICLogger.i("BT 不在区域内,且上次在区域内,报警!");\r
-              if (donotScanWiFi){\r
+\r
                 StringMessage AL_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
                 DeliverMessage(AL_CMD);\r
                 startSOSLocation=false;\r
-              }else {\r
-                //如果需要报警定位,则强制进行sos定位,不能通过triggerSOS,因为函数中调用了BLEScan会造成循环调用\r
-                startSOSLocation = true;//启动SOS定位,为了快速响应,只要wifi定位即可。\r
-                forceLocation = 1;\r
-                startLocationProcess(ICLocation.NORMAL_MOD);\r
-              }\r
+\r
             }else {\r
 \r
                 if (startSOSLocation) {\r
-                  if (donotScanWiFi) {\r
+\r
                     StringMessage AL_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
                     DeliverMessage(AL_CMD);\r
                     startSOSLocation=false;\r
-                  } else {\r
-                    startLocationProcess(ICLocation.NORMAL_MOD);\r
-                  }\r
+\r
                 } else {\r
                   startLocationProcess(runtime.getLocationInstance().getWorkingMod());\r
                 }\r
@@ -308,29 +319,38 @@ public class LocationClient {
     mhandler.sendEmptyMessage(msgWhat_StartBLEProcess);\r
   }\r
 \r
-  private static boolean donotScanWiFi=true;\r
   public void triggerSOSLocationProcess(){\r
 \r
 \r
-    if (donotScanWiFi){\r
-      updateCellInfo();\r
-      if (runtime.bleInfo.btMacList.size() > 0) {\r
-        //有蓝牙搜索要求则 先进行蓝牙扫描\r
-        startSOSLocation=true;//启动SOS定位,为了快速响应,只要wifi定位即可。\r
-        forceLocation=1;\r
-        if (needLocationForBT())\r
-          btHelper.scanBLE();\r
-      } else {\r
-        try{\r
-          Thread.sleep(1000);\r
-        }catch (Exception e){}\r
-        StringMessage waningmsg=protocolAPIHelper.getWarningMSG(runtime);\r
-        DeliverMessage(waningmsg);\r
-      }\r
 \r
-    }else {\r
-      mhandler.sendEmptyMessage(msgWhat_StartSOSLocationProcess);\r
-    }\r
+        (new Thread(new Runnable() {\r
+          public void run() {\r
+\r
+            if (runtime !=null) {\r
+              //更新lbs信息\r
+              CellInfoUtil.getCellInfo(runtime.getContextProxy().getTelephonyManager(),runtime);\r
+\r
+              if (runtime.bleInfo.btMacList.size() > 0) {\r
+                //有蓝牙搜索要求则 先进行蓝牙扫描\r
+                startSOSLocation=true;//启动SOS定位,为了快速响应,只要wifi定位即可。\r
+                forceLocation=1;\r
+                if (needLocationForBT())\r
+                  btHelper.scanBLE();\r
+              } else {\r
+                try{\r
+                  Thread.sleep(1000);\r
+                }catch (Exception e){}\r
+                StringMessage waningmsg=protocolAPIHelper.getWarningMSG(runtime);\r
+                DeliverMessage(waningmsg);\r
+              }\r
+            }\r
+\r
+          }\r
+        })).start();\r
+\r
+\r
+//      mhandler.sendEmptyMessage(msgWhat_StartSOSLocationProcess);\r
+\r
   }\r
 \r
   private static int checktimes=0;\r
@@ -801,7 +821,7 @@ public void updateCellInfo() {
     if ( ( forceLocation != 1 ) &&\r
             (Config.forceMoveCheck==true)  &&\r
             (NoMoveTimeout) && (skipMoveCheck ==false  )){\r
-      ICLogger.i("No Move ,skip location!");\r
+      ICLogger.i("No Move ,skip BT location!");\r
       return false;\r
     }\r
     return true;\r
@@ -843,7 +863,7 @@ public void updateCellInfo() {
 \r
     runtime.setLastStepCount(runtime.getTotalStepCount());\r
     updateCellInfo();\r
-    startWifiScan();\r
+    if(!Config.disableWiFiScan)   startWifiScan();\r
     switch(mod){\r
       case ICLocation.CUSTOM_MOD:\r
       case ICLocation.CUSTOM_MOD8_GPS:\r
index 61e9078..af923d7 100644 (file)
@@ -23,7 +23,7 @@ public class BTHelper {
     private Context mContext=null;\r
     private BTScanCallback mCallback=null;\r
     private static BTHelper mBThelper=null;\r
-\r
+    private int  BLETimeoutForOneScan=6;\r
     private static boolean btscanning=false;\r
     private boolean enabledBeforScan=false;\r
     BTHelper(){\r
@@ -218,7 +218,7 @@ public class BTHelper {
                     if (mCallback != null)\r
                         mCallback.OnScanFinished(mPairedDevicesArray, mNewDevicesArray);\r
                 }\r
-            }, 5000);\r
+            }, BLETimeoutForOneScan*1000);\r
         }else{\r
             ICLogger.i("BT Scanning skip Scan!");\r
         }\r
index f3ca395..18ef312 100644 (file)
@@ -261,10 +261,12 @@ public class BatteryUtil {
 \r
 // 是否在充电\r
     int status = batteryStatus.getIntExtra(EXTRA_STATUS, -1);\r
-    boolean isCharging = status == BATTERY_STATUS_CHARGING  ;//||     status == BatteryManager.BATTERY_STATUS_FULL;\r
-\r
-    return isCharging;\r
+    boolean isCharging = (status == BATTERY_STATUS_CHARGING)  ;//||     status == BatteryManager.BATTERY_STATUS_FULL;\r
+    boolean isCharging2 = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0;\r
+    ICLogger.d("isCharging = " +isCharging+" isCharging2 "+ isCharging2 );\r
+    return isCharging2;\r
   }\r
+\r
   public void unregisterBroadReceiver() { (this.mRuntime.getContextProxy()).context.unregisterReceiver(this.batteryChangedReceiver); }\r
 }\r
 \r
index ca27c45..f1ccb93 100644 (file)
@@ -1,2 +1,2 @@
-#Wed Oct 14 23:43:00 CST 2020\r
-VERSION_CODE=657\r
+#Thu Oct 15 19:57:42 CST 2020\r
+VERSION_CODE=659\r