1、修复 WiFi定位时有时BP16定位会不能返回wifi定位的情况。
authorsnickersun <scy@incartech.cn>
Sat, 21 Mar 2020 09:23:15 +0000 (17:23 +0800)
committersnickersun <scy@incartech.cn>
Sat, 21 Mar 2020 09:23:15 +0000 (17:23 +0800)
2、修复屏幕亮起时,WiFi定位还是会关闭WiFi的bug,解决亮屏时不能通过WiFi进行Fota升级,以及将来的视频通话的问题。

app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.java
app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java

index 6baeee4..8bac53f 100644 (file)
@@ -199,20 +199,27 @@ public class LocationClient {
   private static int checktimes=0;\r
   private static boolean timeout=false;\r
   private static boolean isLocating=false;\r
-\r
+  private static boolean isWifiScanning=false;\r
+  LBSHelper.OnWiFiInfoListener wifiinfoListener=new LBSHelper.OnWiFiInfoListener() {\r
+    public void getWifiInfoCallBack(String param1String) {\r
+      ICLogger.i("get wifi scan Callback " + param1String);\r
+      LocationClient.mHasWifiResult=true;\r
+      runtime.setWifiinfo(param1String==null?"":param1String);\r
+      isWifiScanning=false;\r
+    }\r
+  };\r
   public void startWifiScan(){\r
+\r
+    if (isWifiScanning==false) {\r
       ICLogger.i("开启wifi扫描");\r
+      isWifiScanning=true;\r
       runtime.setWifiinfo("");\r
       mHasWifiResult = false;\r
-//      this.mLbsHelper.registerWiFiBroadReceiver();\r
-      this.mLbsHelper.setOnWiFiInfoListener(new LBSHelper.OnWiFiInfoListener() {\r
-          public void getWifiInfoCallBack(String param1String) {\r
-              ICLogger.i("get wifi scan Callback " + param1String);\r
-              LocationClient.mHasWifiResult=true;\r
-              runtime.setWifiinfo(param1String==null?"":param1String);\r
-          }\r
-      });\r
-    this.mLbsHelper.getWifiInfo();\r
+      this.mLbsHelper.setOnWiFiInfoListener(wifiinfoListener);\r
+      this.mLbsHelper.getWifiInfo();\r
+    }else{\r
+      ICLogger.i("wifi扫描进行中,skip开启");\r
+    }\r
   }\r
     public void startGpsLocate() {\r
 \r
index 624b4ee..4b54faf 100644 (file)
@@ -79,6 +79,13 @@ public class LBSHelper {
                 if (msg.what == MsgWhat_GetWifiResult) {\r
                     //停止扫描\r
                     StringBuilder sb = handScanResults();\r
+                    if (sb != null){\r
+                        ICLogger.i("GetWifiScanResults "+sb.toString());\r
+                        if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", "GetWifiScanResults "+sb.toString());\r
+                    }else{\r
+                        ICLogger.i("GetWifiScanResults null");\r
+                        if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", "GetWifiScanResults null");\r
+                    }\r
                     if (sb == null) {\r
                         CurrentWiFiScanTimes++;\r
                         if (CurrentWiFiScanTimes< MaxWiFiScanRetryTimes) {\r
@@ -95,19 +102,23 @@ public class LBSHelper {
                     if (mMyWifiListener != null) {\r
                         mMyWifiListener.getWifiInfoCallBack(wifiInfoResult);\r
 \r
-                        if (runtime.isNoTurnOffWifiOnScreenOff() || DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context))\r
-                        {\r
-                            //如果 NoTurnOffWifiOnScreenOff 开关 开启,且是屏灭,或者是在工厂测试模式,则原来什么状态就什么状态。\r
-                            if (!IS_HASOPEN && IS_OPEN) {\r
+                        //由于wifi状态不好确认客户是如何设置的,干脆只有屏幕灭的时候才考虑关闭wifi ,防止在开启屏幕用来视频的时候被后台关掉\r
+                        if(SimSignalUtil.isScreenON(runtime.getContextProxy().context)==false) {\r
+                            if (runtime.isNoTurnOffWifiOnScreenOff() || DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context)) {\r
+                                //如果 NoTurnOffWifiOnScreenOff 开关 开启,且是屏灭,或者是在工厂测试模式,则原来什么状态就什么状态。\r
+                                if (!IS_HASOPEN && IS_OPEN) {\r
+                                    wifiManager.setWifiEnabled(false);\r
+                                    IS_OPEN = false;\r
+                                }\r
+                            } else if (!runtime.isNoTurnOffWifiOnScreenOff()) {\r
+                                //如果 NoTurnOffWifiOnScreenOff 开关 关闭,且是屏灭,则关闭wifi省电\r
                                 wifiManager.setWifiEnabled(false);\r
                                 IS_OPEN = false;\r
+                                IS_HASOPEN = false;\r
                             }\r
-                        }else if ( !runtime.isNoTurnOffWifiOnScreenOff()){\r
-                            //如果 NoTurnOffWifiOnScreenOff 开关 关闭,且是屏灭,则关闭wifi省电\r
-                            wifiManager.setWifiEnabled(false);\r
-                            IS_OPEN = false;\r
-                            IS_HASOPEN=false;\r
                         }\r
+                    }else{\r
+                        ICLogger.i("mMyWifiListener is null skip callback");\r
                     }\r
                 }\r
             }\r
@@ -143,7 +154,7 @@ public class LBSHelper {
                 }\r
             }\r
             if (sb.toString().startsWith("&"))  sb.deleteCharAt(0);\r
-            return sb;\r
+             return sb;\r
         }\r
     }\r
 \r
@@ -156,6 +167,7 @@ public class LBSHelper {
     }\r
 \r
     private void delayedStopScan() {\r
+        mHandler.removeMessages(MsgWhat_GetWifiResult);\r
         mHandler.sendEmptyMessageDelayed(MsgWhat_GetWifiResult,3000L);\r
     }\r
 \r
@@ -209,7 +221,7 @@ public class LBSHelper {
                      this.runtime.setCellinfo(gsmSb.toString());\r
                      this.runtime.setCdmaInfo(null);\r
                     ICLogger.i("GsmCellLocation "+ gsmSb.toString());\r
-                     if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "LBS", gsmSb.toString());\r
+                     if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", gsmSb.toString());\r
 \r
                      List neighboringCell_list = telephonyManager.getNeighboringCellInfo();\r
                      if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) {\r
@@ -258,7 +270,7 @@ public class LBSHelper {
                      this.runtime.setCellinfo(null);\r
                      this.runtime.setCdmaInfo(cdmaSB.toString());\r
 \r
-                     if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "LBS", var8.toString());\r
+                     if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", var8.toString());\r
                     return cdmaSB.toString();\r
 \r
                 }\r
index 021873d..47885d1 100644 (file)
@@ -135,7 +135,8 @@ public class CellInfoUtil {
                 stringBuilder.append(CellInfoUtil.BSSS);\r
                 runtime.cellinfo = stringBuilder.toString();\r
 //              EqcAlgorithmNative.native_EqcAlgorithmMethod4(1, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
-                if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "LBS", mRuntime.cellinfo);\r
+                if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", mRuntime.cellinfo);\r
+\r
                 CellInfoUtil.releaseWakeLock(mWakeLock);\r
                 ICLogger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
 \r