release V665
authorsnickersun <scy@incartech.cn>
Tue, 20 Oct 2020 10:08:30 +0000 (18:08 +0800)
committersnickersun <scy@incartech.cn>
Tue, 20 Oct 2020 10:08:30 +0000 (18:08 +0800)
优化蓝牙扫描,解决扫描有时扫不到beacon的问题。

app/release/ICSer_V665_2010201758_release.apk [moved from app/release/ICSer_V664_2010192321_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/MainActivity.java
app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java
app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java
app/src/main/java/com/ic/protocols/protocolAPIHelper.java
app/src/main/java/com/ic/protocols/protocol_mqtt.java
app/version_code.properties

similarity index 78%
rename from app/release/ICSer_V664_2010192321_release.apk
rename to app/release/ICSer_V665_2010201758_release.apk
index ad509c6..f00316c 100644 (file)
Binary files a/app/release/ICSer_V664_2010192321_release.apk and b/app/release/ICSer_V665_2010201758_release.apk differ
index 0c0f357..c57fa4c 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":664,"versionName":"2010192321","enabled":true,"outputFile":"ICSer_V664_2010192321_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V664_2010192321_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":665,"versionName":"2010201758","enabled":true,"outputFile":"ICSer_V665_2010201758_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V665_2010201758_release.apk","properties":{}}]
\ No newline at end of file
index 35fdd1c..091b001 100644 (file)
@@ -27,7 +27,7 @@ public class Config {
   private static String json;\r
   public static int defaultHeartbeatCycle=5;\r
   public static int sw_release_no = -1;\r
-  public static int bleScanTimeout=10;\r
+\r
   public static boolean forceMoveCheck=true;\r
   public static boolean forceWearCheck=true;\r
 \r
index 505db86..52d32b6 100644 (file)
@@ -708,7 +708,7 @@ public class CoreService extends Service {
             if (Config.getConfigInitFlag(this)==0) {\r
                 Config.setPPGTestCycle(this, 0);\r
                 Config.setTemperatureTestCycle(runtime, 0);\r
-                Config.forceMoveCheck=false;\r
+                Config.forceMoveCheck=false; //即爱对gps不进行运动检测,此变量专门为了给其他协议进行强制运动检测用的。\r
                 Config.setConfigInitFlag(this, 1);\r
             }\r
         }else{\r
index 31cdb68..14d0320 100644 (file)
@@ -119,10 +119,9 @@ public class LocationClient {
   private boolean scanBLEOnly=false;\r
 \r
   //如果未扫到,重试扫描的次数。\r
-  private int  maxBLEScanTime=2;\r
+  private int  maxBLEScanTime=1;\r
   private int ScanBLERetryCount=maxBLEScanTime;\r
-\r
-\r
+  private int OneBLEScanTimeOUT=15;\r
 \r
   private static LocationClient gLocationCline=null;\r
 //  private BroadcastReceiver screenOnReceiver = new BroadcastReceiver() {\r
@@ -138,7 +137,7 @@ public class LocationClient {
   public LocationClient(Connection paramNettyConnection, Runtime paramRuntime) {\r
     connection = paramNettyConnection;\r
     runtime = paramRuntime;\r
-    btHelper=BTHelper.getInstance(paramRuntime.getContextProxy().context, new BTHelper.BTScanCallback() {\r
+    btHelper=BTHelper.CreateInstance(paramRuntime, new BTHelper.BTScanCallback() {\r
       @Override\r
       public void OnScanFinished(ArrayList<String> btPairedScanResult, ArrayList<String> btNewScanResult) {\r
 \r
@@ -250,6 +249,8 @@ public class LocationClient {
 \r
       }\r
     });\r
+\r
+    btHelper.setBLEScanTimeout(OneBLEScanTimeOUT);\r
     gLocationCline=this;\r
     //GPS 监听管理初始化\r
     this.nmeaListener = new NMEAListener(paramRuntime.getContextProxy().getLocationManager(), paramRuntime);\r
@@ -833,6 +834,7 @@ public void updateCellInfo() {
             (Config.forceMoveCheck==true)  &&\r
             (NoMoveTimeout) && (skipMoveCheck ==false  )){\r
       ICLogger.i("No Move ,skip BT location!");\r
+\r
       return false;\r
     }\r
     ICLogger.i("BT NoMoveTimeout "+NoMoveTimeout+", forceLocation="+forceLocation+", Config.forceMoveCheck="+Config.forceMoveCheck+", skipMoveCheck="+skipMoveCheck);\r
index a20bb6e..658df9e 100644 (file)
@@ -124,7 +124,7 @@ public class MainActivity extends Activity {
 
 
     private void testBLE(){
-        btHelper= BTHelper.getInstance(MainActivity.this, new BTHelper.BTScanCallback() {
+        btHelper= BTHelper.CreateInstance(CoreService.getInstance().runtime, new BTHelper.BTScanCallback() {
                     @Override
                     public void OnScanFinished(ArrayList<String> btPairedScanResult, ArrayList<String> btNewScanResult) {
 
index eb8146c..87efb59 100644 (file)
@@ -8,7 +8,7 @@ import android.content.Context;
 import android.content.Intent;\r
 import android.content.IntentFilter;\r
 import android.os.Handler;\r
-\r
+import com.enqualcomm.support.bean.Runtime;\r
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.utils.ICLogger;\r
 \r
@@ -23,13 +23,34 @@ public class BTHelper {
     private Context mContext=null;\r
     private BTScanCallback mCallback=null;\r
     private static BTHelper mBThelper=null;\r
-    private int  BLETimeoutForOneScan=6;\r
+    private int  BLETimeoutForOneScan=10;\r
     private static boolean btscanning=false;\r
+    private static Runtime mRuntime;\r
     private boolean enabledBeforScan=false;\r
+    private Handler mHandler=null;\r
     BTHelper(){\r
 \r
     }\r
 \r
+    public void setBLEScanTimeout(int timeout){\r
+        BLETimeoutForOneScan=timeout;\r
+    }\r
+    private boolean isBeaconFounded(String beaconAddr){\r
+\r
+        String tmp = beaconAddr.replace(":", "").toLowerCase();\r
+        if(tmp.contains(","))\r
+            tmp = tmp.substring(0, tmp.indexOf(","));\r
+\r
+        for (String beacon:mRuntime.bleInfo.btMacList){\r
+//            ICLogger.i(beacon +" ==? "+tmp);\r
+           if (tmp.equals(beacon)) {\r
+               ICLogger.i("bt mac " + tmp + "  " + beaconAddr.toLowerCase());\r
+               return true;\r
+           }\r
+        }\r
+//        ICLogger.i(" false ");\r
+        return false;\r
+    }\r
     //enableBT\r
     public void enableBT() {\r
         ICLogger.i("BT enableBT()");\r
@@ -54,12 +75,12 @@ public class BTHelper {
     //disableBT\r
     public void disableBT(){\r
         ICLogger.i( "BT disableBT()");\r
-        btscanning=false;\r
-        if (mBtAdapter.isEnabled()) {\r
+         if (mBtAdapter.isEnabled()) {\r
             mBtAdapter.disable();\r
 //            Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);\r
 //            mContext.startActivity(enableIntent);\r
         }\r
+        btscanning=false;\r
     }\r
 \r
     //初始化 BTHlper\r
@@ -78,19 +99,24 @@ public class BTHelper {
 \r
         // Get the local Bluetooth adapter\r
         mBtAdapter = BluetoothAdapter.getDefaultAdapter();\r
+        mHandler = new Handler();\r
+        lecallback = new BLeScanCallback();\r
 \r
     }\r
 \r
+\r
     //获取实例\r
-    public static BTHelper getInstance(Context context , BTScanCallback callback){\r
+    public static BTHelper CreateInstance(Runtime runtime , BTScanCallback callback){\r
+        mRuntime=runtime;\r
         if (mBThelper==null) {\r
             ICLogger.i( "BT getInstance ");\r
             mBThelper = new BTHelper();\r
-            mBThelper.Init(context,callback);\r
+            mBThelper.Init(runtime.getContextProxy().context,callback);\r
         }\r
         return mBThelper;\r
     }\r
 \r
+\r
 //    // The BroadcastReceiver that listens for discovered devices and\r
 //    // changes the title when discovery is finished\r
 //    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {\r
@@ -159,6 +185,12 @@ public class BTHelper {
 //\r
 //    }\r
 \r
+\r
+    private  BLeScanCallback lecallback =null;\r
+\r
+    private RunableStopBleScan mRunable_stopBleScan=new RunableStopBleScan();\r
+\r
+    private static boolean hasStopedByFoundBT=false;\r
     public boolean isBtscanning(){\r
         return btscanning;\r
     }\r
@@ -184,44 +216,12 @@ public class BTHelper {
 \r
 //        mBtAdapter.startDiscovery();\r
 \r
-\r
-            mBtAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE, Config.bleScanTimeout);\r
-            LeScanCallback lecallback = new LeScanCallback() {\r
-\r
-                @Override\r
-                public void onLeScan(BluetoothDevice bluetoothDevice, int rssi, byte[] scanRecode) {\r
-//                ICLogger.i( "BT onLeScan "+bluetoothDevice.getName()+" "+bluetoothDevice.getAddress()+" rssi "+rssi);\r
-//                ICLogger.logToFile("LBS","BT onLeScan "+bluetoothDevice.getName()+" "+bluetoothDevice.getAddress()+" rssi "+rssi );\r
-                    boolean found = false;\r
-                    for (String dev : mNewDevicesArray) {\r
-                        if (dev.contains(bluetoothDevice.getAddress())) {\r
-                            found = true;\r
-                            break;\r
-                        }\r
-                    }\r
-                    if (!found)\r
-                        mNewDevicesArray.add(bluetoothDevice.getAddress() + "," + rssi);\r
-                }\r
-            };\r
+//            mBtAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE, BLETimeoutForOneScan);\r
 \r
             ICLogger.i("BT startLeScan");\r
             mBtAdapter.startLeScan(lecallback);\r
+            mHandler.postDelayed(mRunable_stopBleScan, BLETimeoutForOneScan*1000);\r
 \r
-\r
-            new Handler().postDelayed(new Runnable() {\r
-                @Override\r
-                public void run() {\r
-                    ICLogger.i("BT stopLeScan");\r
-                    mBtAdapter.stopLeScan(lecallback);\r
-\r
-                    //开始扫描前是关闭的,就关闭它\r
-//                if(!enabledBeforScan)\r
-                    disableBT();\r
-\r
-                    if (mCallback != null)\r
-                        mCallback.OnScanFinished(mPairedDevicesArray, mNewDevicesArray);\r
-                }\r
-            }, BLETimeoutForOneScan*1000);\r
         }else{\r
             ICLogger.i("BT Scanning skip Scan!");\r
         }\r
@@ -271,8 +271,64 @@ public class BTHelper {
 \r
         }\r
     }\r
+    private class BLeScanCallback  implements  LeScanCallback{\r
+\r
+        @Override\r
+        public void onLeScan(BluetoothDevice bluetoothDevice, int rssi, byte[] scanRecode) {\r
+//                ICLogger.i( "BT onLeScan "+bluetoothDevice.getName()+" "+bluetoothDevice.getAddress()+" rssi "+rssi);\r
+//                ICLogger.logToFile("LBS","BT onLeScan "+bluetoothDevice.getName()+" "+bluetoothDevice.getAddress()+" rssi "+rssi );\r
+            boolean found = false;\r
+            for (String dev : mNewDevicesArray) {\r
+                if (dev.contains(bluetoothDevice.getAddress())) {\r
+                    found = true;\r
+                    break;\r
+                }\r
+            }\r
+\r
+            if (!found) {\r
+                mNewDevicesArray.add(bluetoothDevice.getAddress() + "," + rssi);\r
+            }\r
+\r
+            if(isBeaconFounded(bluetoothDevice.getAddress())){\r
+\r
+                hasStopedByFoundBT=true;\r
+                mHandler.removeCallbacks(mRunable_stopBleScan);\r
+\r
+                ICLogger.i("BT stopLeScan");\r
+                mBtAdapter.stopLeScan(this);\r
+\r
+                //开始扫描前是关闭的,就关闭它\r
+                //                if(!enabledBeforScan)\r
+                disableBT();\r
+\r
+                if (mCallback != null)\r
+                    mCallback.OnScanFinished(mPairedDevicesArray, mNewDevicesArray);\r
+            }\r
+        }\r
+    }\r
+\r
+    private class RunableStopBleScan implements   Runnable{\r
+\r
+        @Override\r
+        public void run() {\r
+            ICLogger.i("BT stopLeScan");\r
+\r
+            if(hasStopedByFoundBT) {\r
+                hasStopedByFoundBT=false;\r
+                ICLogger.i(" BT has Stoped !");\r
+\r
+            }else{\r
+                mBtAdapter.stopLeScan(lecallback);\r
+                //开始扫描前是关闭的,就关闭它\r
+                //                if(!enabledBeforScan)\r
+                disableBT();\r
+                if (mCallback != null)\r
+                    mCallback.OnScanFinished(mPairedDevicesArray, mNewDevicesArray);\r
+            }\r
+        }\r
+    }\r
+\r
     public interface BTScanCallback{\r
         void OnScanFinished(ArrayList<String> btPairedScanResult,ArrayList<String> btNewScanResult);\r
-\r
     }\r
 }\r
index 2f253a4..d13dbc3 100644 (file)
@@ -242,6 +242,7 @@ public class DeviceInfoUtil {
             .append("\n Srv [P").append(Config.protocol_no).append(" ").append(runtime.getHost()).append(":").append(runtime.getPort()).append("]").append(KeepAlive.isConnected).append(" , HBcycle ").append(runtime.getHeartBeatCycle())\r
             .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
 //            .append(",Temp ").append(String.format("%1$.2f",wrist_temp)).append(",Body ").append(String.format("%1$.2f",TemperatureUtil.getBodyTemp(wrist_temp,26.0f)))\r
+            .append(",BTIn ").append(runtime.bleInfo.is_in_area)\r
             .append(" \n Bat ").append(runtime.getBattery()).append(",").append(runtime.getBatteryVotage())\r
             .append(" charged ").append(runtime.isPowerConnected())\r
             .append(" StepCount ").append(runtime.getTotalStepCount())\r
@@ -279,6 +280,7 @@ public class DeviceInfoUtil {
             .append(",C").append(runtime.getLocationInstance().getLocation_cycle())\r
             .append(",T").append(runtime.getLocationInstance().getLocationType())\r
             .append(",").append(runtime.getLocationInstance().getLocationTime())\r
+            .append(",BTIn").append(runtime.bleInfo.is_in_area)\r
             .append("]\nPPG[C").append(runtime.getPpgTestCycle())\r
 //            .append(",P").append(runtime.getHRS().getPPG())\r
 //            .append(",H").append(runtime.getHRS().getBPH())\r
index 0ec4627..3e1b295 100644 (file)
@@ -175,14 +175,7 @@ public class protocolAPIHelper {
                 ret=protocol_beehome.APTP(temp_adusted,body_temp);\r
                 break;\r
             case Config.PROTOCOL_IC:\r
-                if(Config.getProtocolServerHost(runtime.getContextProxy().context).equals(protocol_jiai.defaultServerIP))\r
-                {\r
-                    //为了兼容即爱的服务器而设定。\r
-                    ret=null;\r
-                }else {\r
-                    ret=protocol_ic.APTP(temp_adusted,body_temp);\r
-                }\r
-\r
+                ret=protocol_ic.APTP(temp_adusted,body_temp);\r
                 break;\r
             case Config.PROTOCOL_FZD:\r
                 ret=protocol_fzd.temp(body_temp);\r
index 190abd5..c656afd 100644 (file)
@@ -6,6 +6,7 @@ import android.text.TextUtils;
 \r
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.CoreService;\r
+import com.enqualcomm.support.adapter.BTHelper;\r
 import com.enqualcomm.support.bean.Contact;\r
 import com.enqualcomm.support.bean.Runtime;\r
 import com.enqualcomm.support.bean.StringMessage;\r
index efdcf2d..a887826 100644 (file)
@@ -1,2 +1,2 @@
-#Mon Oct 19 23:21:23 CST 2020\r
-VERSION_CODE=664\r
+#Tue Oct 20 17:58:06 CST 2020\r
+VERSION_CODE=665\r