release V398
authorsnickersun <scy@incartech.cn>
Sat, 11 Apr 2020 07:12:59 +0000 (15:12 +0800)
committersnickersun <scy@incartech.cn>
Sat, 11 Apr 2020 07:12:59 +0000 (15:12 +0800)
1、WiFi扫描直接采用检测结果的alarm,取消系统messageHandler。应该可以保证时序。
2、增加#packagevers#命令获取各个软件版本号
3、添加AP02 定位协议。在GPS定位失败,或者WiFi定位模式时采用AP02 定位。
4、为AP02协议增加 多基站扫描方法,并根据  协议里的要求把信号转为正整数上报。(150-abs(rssi))

13 files changed:
app/app.iml
app/release/ICSer_V397_2004101116_release.apk [deleted file]
app/src/main/java/com/enqualcomm/support/ICSmsManager.java
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/adapter/protocolAPIHelper.java
app/src/main/java/com/enqualcomm/support/bean/Runtime.java
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java
app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java
app/version_code.properties

index bbe6c1d..855b73f 100644 (file)
     <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar" level="project" />\r
     <orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\android-logging-log4j-1.0.3.jar:unspecified@jar" level="project" />\r
     <orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\ftp4j-1.7.2.jar:unspecified@jar" level="project" />\r
-    <orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\LauncherCtrl.jar:unspecified@jar" level="project" />\r
     <orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\log4j-1.2.17.jar:unspecified@jar" level="project" />\r
     <orderEntry type="library" name="Gradle: __local_aars__:D.\workspace\icsupport\app\libs\okio-2.4.3.jar:unspecified@jar" level="project" />\r
     <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" />\r
     <orderEntry type="library" name="Gradle: com.kymjs.rxvolley:rxvolley:1.1.3@aar" level="project" />\r
     <orderEntry type="library" name="Gradle: io.reactivex:rxandroid:1.1.0@aar" level="project" />\r
     <orderEntry type="module" module-name="dNSCache" />\r
+    <orderEntry type="module" module-name="dNSCache" />\r
+    <orderEntry type="module" module-name="dNSCache" />\r
+    <orderEntry type="module" module-name="dNSCache" />\r
+    <orderEntry type="module" module-name="dNSCache" />\r
   </component>\r
 </module>
\ No newline at end of file
diff --git a/app/release/ICSer_V397_2004101116_release.apk b/app/release/ICSer_V397_2004101116_release.apk
deleted file mode 100644 (file)
index f32c78c..0000000
Binary files a/app/release/ICSer_V397_2004101116_release.apk and /dev/null differ
index af8ff33..43ffc3b 100644 (file)
@@ -623,6 +623,8 @@ public class ICSmsManager {
             }else if (sms.startsWith("#poweroff#")) {\r
                 sendSMS(phonenumber, "do poweroff!");\r
                 CoreService.DevliverStringMessage("poweroff");\r
+            }else if (sms.startsWith("#packagevers#")) {\r
+                sendSMS(phonenumber, DeviceInfoUtil.getPackageVersions(mContext));\r
             } else if (sms.startsWith("#showui#")) {\r
                 Intent intent=new Intent();\r
 //                intent.setClassName(MainActivity.class.getPackage().getName(),MainActivity.class.getName());\r
index 6b23714..038d197 100644 (file)
@@ -104,8 +104,6 @@ public class LocationClient {
 \r
 \r
   private LBSHelper mLbsHelper;\r
-\r
-//  private ScheduledThreadPoolExecutor mTimer=null;\r
   \r
   private int mPedometer2;\r
   \r
@@ -182,11 +180,11 @@ public class LocationClient {
   }\r
 \r
   private void performAlarm(PowerManager.WakeLock paramWakeLock) {\r
-    if (!runtime.isAirMode) {\r
+//    if (!runtime.isAirMode) {\r
       updateStepCount();//update StepCount\r
      // CellInfoUtil.triggerUpdateCellinfo();  //这个在locationClinet中也会执行更新\r
-      sendBatteryNotification();\r
-    }\r
+//      sendBatteryNotification();\r
+//    }\r
   }\r
   public void triggerLocationProcess(){\r
     mhandler.sendEmptyMessage(msgWhat_StartLocationProcess);\r
@@ -268,26 +266,9 @@ public class LocationClient {
       timeout=false;\r
       startCheckTime= System.currentTimeMillis();\r
       needCheckAgain=true;\r
-      //延时2秒执行发送“读取定位”消息\r
-//      if (mTimer==null) {\r
-//        mTimer = new ScheduledThreadPoolExecutor(1);\r
-//      }\r
-\r
       ICLogger.i("startCheckResult " );\r
 \r
-//      mTimer.scheduleAtFixedRate(new Runnable() {\r
-//        @Override\r
-//        public void run() {\r
-//          try {\r
-//            waitAndSendLocation();\r
-//          }catch (Exception e){\r
-//            e.printStackTrace();\r
-//          }\r
-//          //mhandler.sendEmptyMessage(msgWhat_WaitAndSendLocation);\r
-//        }\r
-//      }, 1000L, 1000L,TimeUnit.MILLISECONDS);\r
-\r
-    AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,1,ACTION_CHECK_LOCATION_RESULT);\r
+      AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,1,ACTION_CHECK_LOCATION_RESULT);\r
 \r
   }\r
 \r
@@ -320,12 +301,13 @@ public class LocationClient {
   private static boolean needCheckAgain=false;\r
   public void waitAndSendLocation(){\r
 \r
+        this.mLbsHelper.getWifiResult();\r
+\r
         long timeCost=0L;\r
         wifi_ok=false;\r
         gps_ok=false;\r
         lbs_ok=false;\r
         gps_nosignal=false;\r
-\r
         checktimes++;\r
         int mode=runtime.getLocationInstance().getWorkingMod();\r
         if (runtime.getWifiInfo().length()>0  ) wifi_ok =true;\r
@@ -371,8 +353,15 @@ public class LocationClient {
                 Deliver.sendLocationMSG(AP10_CMD);\r
                 startSOSLocation=false;\r
               }else {\r
-                String AP01_CMD = protocolAPIHelper.AP01(runtime);\r
-                Deliver.sendLocationMSG(AP01_CMD);\r
+\r
+                if (gps_ok) {\r
+                  String AP01_CMD = protocolAPIHelper.AP01(runtime);\r
+                  Deliver.sendLocationMSG(AP01_CMD);\r
+                }else{\r
+                  String AP02_CMD = protocolAPIHelper.AP02(runtime);\r
+                  Deliver.sendLocationMSG(AP02_CMD);\r
+                }\r
+\r
               }\r
 \r
 \r
@@ -431,8 +420,8 @@ public class LocationClient {
                 startSOSLocation=false;\r
 \r
               }else {\r
-                String AP01_CMD = protocolAPIHelper.AP01(runtime);\r
-                Deliver.sendLocationMSG(AP01_CMD);\r
+                String AP02_CMD = protocolAPIHelper.AP02(runtime);\r
+                Deliver.sendLocationMSG(AP02_CMD);\r
               }\r
 \r
               stopCheckLocationResult();\r
@@ -529,9 +518,7 @@ public class LocationClient {
   \r
 \r
 public void updateCellInfo() {\r
-//   this.mLbsHelper.getAttchCellInfo(runtime.getContextProxy().getTelephonyManager());\r
-//    CellInfoUtil.triggerUpdateCellinfo();\r
-    CellInfoUtil.setCurrentAttachCellInfo(runtime, getLocationWakeLock());\r
+    CellInfoUtil.setCurrentAttachCellInfo(runtime);\r
   }\r
 \r
 \r
index e09917f..e66fab5 100644 (file)
@@ -13,6 +13,8 @@ import android.os.Build;
 import android.os.Handler;\r
 import android.os.Message;\r
 import android.os.SystemClock;\r
+import android.support.annotation.RequiresApi;\r
+import android.telephony.CellInfo;\r
 import android.telephony.CellLocation;\r
 import android.telephony.NeighboringCellInfo;\r
 import android.telephony.PhoneStateListener;\r
@@ -23,6 +25,7 @@ import android.telephony.gsm.GsmCellLocation;
 \r
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.utils.CellInfoUtil;\r
 import com.enqualcomm.support.utils.DeviceInfoUtil;\r
 import com.enqualcomm.support.utils.FileOutputUtil;\r
 import com.enqualcomm.support.utils.ICLogger;\r
@@ -63,7 +66,6 @@ public class LBSHelper {
         this.wifiManager = _wifiManager;\r
         this.context = _context;\r
         this.runtime = dev;\r
-        initHelper();\r
 //        registerWiFiBroadReceiver();\r
         this.mMyPhoneListener = new LBSHelper.MyPhoneStateListener();\r
         TelephonyManager tm = ((TelephonyManager) LBSHelper.this.context.getSystemService(Context.TELEPHONY_SERVICE));\r
@@ -71,62 +73,82 @@ public class LBSHelper {
         this.mNetworkType = tm.getNetworkType();\r
     }\r
 \r
-    private void initHelper() {\r
-        this.mHandler = new Handler() {\r
-            @Override\r
-            public void handleMessage(Message msg) {\r
-                super.handleMessage(msg);\r
-                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
-                            ICLogger.i("WiFi Scan get Result failed , retry scan "+CurrentWiFiScanTimes+ " times");\r
-                            wifiManager.startScan();\r
-                            delayedStopScan();\r
-                            return;\r
-                        }else {\r
-                            wifiInfoResult = null;\r
-                        }\r
-                    } else {\r
-                        wifiInfoResult = sb.toString();\r
-                    }\r
-                    if (mMyWifiListener != null) {\r
-                        mMyWifiListener.getWifiInfoCallBack(wifiInfoResult);\r
-\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
-                        }\r
-                    }else{\r
-                        ICLogger.i("mMyWifiListener is null skip callback");\r
-                    }\r
+\r
+\r
+\r
+    public void getWifiResult(){\r
+\r
+\r
+        //检查是否已经得到结果。\r
+        if(runtime.getWifiInfo().length()==0){\r
+            //还没有结果\r
+            if (wifiManager.isWifiEnabled()){\r
+                //wifi开着,可以开始检测扫描结果\r
+                wait_count++;\r
+                if ( wait_count  == 3){\r
+                    //3秒检查一次!\r
+                    wait_count=0;\r
+                    ICLogger.i("get WiFi Scan result !");\r
+                }else{\r
+                    ICLogger.i("WiFi Wait "+wait_count+"!");\r
+                    return ;\r
                 }\r
+\r
+            }else{\r
+              //  ICLogger.i("WiFi is Not Open, skip check scan result!");\r
+                return ;\r
             }\r
-        };\r
-    }\r
+        }else{\r
 \r
+          //  ICLogger.i("WiFiScan is done, skip check scan result!");\r
+            return;\r
+        }\r
+        //停止扫描\r
+        StringBuilder sb = handleScanResults();\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
+                ICLogger.i("WiFi Scan get Result failed , retry scan "+CurrentWiFiScanTimes+ " times");\r
+                wifiManager.startScan();\r
+                delayedStopScan();\r
+                return;\r
+            }else {\r
+                wifiInfoResult = null;\r
+            }\r
+        } else {\r
+            wifiInfoResult = sb.toString();\r
+        }\r
+        if (mMyWifiListener != null) {\r
+            mMyWifiListener.getWifiInfoCallBack(wifiInfoResult);\r
+\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
+            }\r
+        }else{\r
+            ICLogger.i("mMyWifiListener is null skip callback");\r
+        }\r
 \r
-    private StringBuilder handScanResults() {\r
+    }\r
+    private StringBuilder handleScanResults() {\r
         List aplist = this.wifiManager.getScanResults();\r
         ICLogger.i("get Wifi Result "+aplist.size());\r
         if (aplist.size() < 1) {\r
@@ -169,121 +191,10 @@ public class LBSHelper {
     }\r
 \r
     private void delayedStopScan() {\r
-        mHandler.removeMessages(MsgWhat_GetWifiResult);\r
-        mHandler.sendEmptyMessageDelayed(MsgWhat_GetWifiResult,3000L);\r
-    }\r
 \r
-//    public void unRegisterWiFiBroadReceiver() {\r
-//        this.context.unregisterReceiver(this.wifiChangedReceiver);\r
-//    }\r
-\r
-    public String getAttchCellInfo(TelephonyManager tm) {\r
-        return this.getCellInfo(tm);\r
     }\r
 \r
-    public String getCellInfo(TelephonyManager telephonyManager) {\r
-//        int var3 = Build.VERSION.SDK_INT;\r
-        int var2 = 0;\r
-        String var4;\r
-        if (Build.VERSION.SDK_INT > 23) {\r
-            var4 = telephonyManager.getSimOperator();\r
-            if (var4 == null) {\r
-                ICLogger.i("operator == null");\r
-                return null;\r
-            }\r
-\r
-            var4 = var4.substring(0, 5);\r
-        } else {\r
-            var4 = telephonyManager.getNetworkOperator();\r
-        }\r
-\r
-        if (var4 != null && var4.length() > 3) {\r
-\r
-            CellLocation celllocation = telephonyManager.getCellLocation();\r
-            if (celllocation == null) {\r
-                ICLogger.i("cellLocation = null");\r
-                return null;\r
-            } else {\r
-                StringBuilder gsmSb = new StringBuilder(var4);\r
-                StringBuilder mccmnc = new StringBuilder(var4);\r
-                StringBuilder cdmaSB = new StringBuilder();\r
-                gsmSb.insert(3, "@");\r
-                mccmnc.insert(3, "@");\r
-                this.runtime.setMccAndMnc(mccmnc.toString());\r
-                 if (celllocation instanceof GsmCellLocation) {\r
-                    GsmCellLocation gsmCell = (GsmCellLocation)celllocation;\r
-                    gsmSb.append("@");\r
-                    gsmSb.append(gsmCell.getLac());\r
-                    gsmSb.append("@");\r
-                    gsmSb.append(gsmCell.getCid());\r
-                    gsmSb.append("@");\r
-                    gsmSb.append(this.mLastSignal);\r
-//                     this.runtime.setCid(String.format("%03d",gsmCell.getCid()));\r
-//                     this.runtime.setLAC(gsmCell.getLac());\r
-                     this.runtime.setCellinfo(gsmSb.toString());\r
-                     this.runtime.setCdmaInfo(null);\r
-                    ICLogger.i("GsmCellLocation "+ 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
-                         Iterator cell = neighboringCell_list.iterator();\r
-\r
-                         while(cell.hasNext()) {\r
-                             NeighboringCellInfo mNeighboringCellInfo = (NeighboringCellInfo)cell.next();\r
-                             if (mNeighboringCellInfo.getLac() == -1) {\r
-                                 break;\r
-                             }\r
-\r
-                             gsmSb.append("+");\r
-                             gsmSb.append(mccmnc);\r
-                             gsmSb.append("@");\r
-                             gsmSb.append(mNeighboringCellInfo.getLac());\r
-                             gsmSb.append("@");\r
-                             gsmSb.append(mNeighboringCellInfo.getCid());\r
-                             gsmSb.append("@");\r
-                             gsmSb.append(mNeighboringCellInfo.getRssi() + 110);\r
-                             var2 ++;\r
-                             if (var2 == 5) {\r
-                                 break;\r
-                             }\r
-                         }\r
-                     }\r
-                     ICLogger.i("return "+ gsmSb.toString());\r
-                     return gsmSb.toString();\r
-                } else if (celllocation instanceof CdmaCellLocation) {\r
-                    CdmaCellLocation cdmaCelllocation = (CdmaCellLocation)celllocation;\r
-                    cdmaSB.append(cdmaCelllocation.getSystemId());\r
-                    cdmaSB.append(",");\r
-                    cdmaSB.append(cdmaCelllocation.getNetworkId());\r
-                    cdmaSB.append(",");\r
-                    cdmaSB.append(cdmaCelllocation.getBaseStationId());\r
-                    cdmaSB.append(",");\r
-                    cdmaSB.append("");\r
-                    cdmaSB.append(",");\r
-                    cdmaSB.append("");\r
-                    cdmaSB.append(",");\r
-                    cdmaSB.append(this.mLastSignal);\r
-                    ICLogger.i("CdmaCellLocation");\r
-                    StringBuilder var8 = new StringBuilder();\r
-                    var8.append("CDMA_info=");\r
-                    var8.append(cdmaSB.toString());\r
-                    ICLogger.i(var8.toString());\r
-                     this.runtime.setCellinfo(null);\r
-                     this.runtime.setCdmaInfo(cdmaSB.toString());\r
-\r
-                     if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", var8.toString());\r
-                    return cdmaSB.toString();\r
-\r
-                }\r
-\r
-                return null;\r
-            }\r
-        } else {\r
-            ICLogger.i("operator == null || operator.length() <= 3");\r
-            return null;\r
-        }\r
-    }\r
+    private static int wait_count=0;\r
 \r
     public void getWifiInfo() {\r
         if (this.wifiManager.isWifiEnabled()) {\r
@@ -297,10 +208,10 @@ public class LBSHelper {
                 e.printStackTrace();\r
             }\r
         }\r
-\r
+        //wait_count=0;\r
         CurrentWiFiScanTimes=0;\r
         wifiManager.startScan();\r
-        delayedStopScan();\r
+//        delayedStopScan();\r
 \r
     }\r
 \r
@@ -320,17 +231,12 @@ public class LBSHelper {
         private MyPhoneStateListener() {\r
         }\r
 \r
+        @RequiresApi(api = Build.VERSION_CODES.M)\r
         public void onSignalStrengthsChanged(SignalStrength ss) {\r
             super.onSignalStrengthsChanged(ss);\r
-            if (((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType() == NETWORK_TYPE_LTE) {\r
-                String[] siglist = ss.toString().split(" ");\r
-                mLastSignal = Integer.parseInt(siglist[9]) + 110;\r
-            } else {\r
-                mLastSignal = ss.getGsmSignalStrength() * 2 - 113 + 110;\r
-            }\r
-            runtime.setSignalStrength(mLastSignal - 110);\r
-//            mLastSignal = ss.getGsmSignalStrength();//ss.getDbm();\r
-//            runtime.setSignalStrength(mLastSignal);\r
+            TelephonyManager tm=(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);\r
+            int gsmSignal= 150-Math.abs(CellInfoUtil.getSignal(tm,runtime));\r
+            runtime.setSignalStrength(gsmSignal);\r
 \r
         }\r
     }\r
index b3842f4..e3933c4 100644 (file)
@@ -401,11 +401,11 @@ public class protocolAPIHelper {
 //        9520|3671|10: LAC|CID|dbm表示一组基站信息,后面数量需和基站组数地应  10:dbm为信号强度多基站信号强度建议从高到低排列后上传,信号强度转正数:150 – abs(dbm)\r
 //        4: 表示WIFI组数,\r
 //                1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度)\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(TimeUtil.getShortDate())\r
-                .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
-                .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
-                .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
-                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
+                .append(ds.getLanguage()).append(CMDSPLIT)\r
+                .append(0).append(CMDSPLIT) //为0时不回复地址\r
+                .append(ds.getLBSMultiStationData()).append(CMDSPLIT)  //基站信息数据\r
+                .append(4).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();  //wifi信息数据\r
     }\r
 \r
     //处理 定位 BP01\r
index c6d820b..38c9aa9 100644 (file)
@@ -290,7 +290,11 @@ public class Runtime {
   \r
   public int getSignalStrength() { return this.SignalStrength; }\r
 \r
-  \r
+  private String SignalInfo="";\r
+  public void setSignalInfo(String info){\r
+      this.SignalInfo=info;\r
+  }\r
+  public String getSignalInfo() { return this.SignalInfo; }\r
   public long getTimestamp() { return this.timestamp; }\r
   \r
   public int getTotalStepCount() { return this.totalStepCount; }\r
@@ -502,6 +506,19 @@ public class Runtime {
     return gpsStr;\r
   }\r
 \r
+  private static String mLBSMultiStationData="";\r
+  public void setLBSMultiStationData(String data){\r
+      mLBSMultiStationData=data;\r
+  }\r
+  //AP03 用的多基站定位数据\r
+  public String getLBSMultiStationData(){\r
+      //        7: 表示共有7组基站\r
+//        460: MCC 国家码\r
+//        0: MNC运营商代码\r
+//        9520|3671|10: LAC|CID|dbm表示一组基站信息,后面数量需和基站组数地应  10:dbm为信号强度多基站信号强度建议从高到低排列后上传,信号强度转正数:150 – abs(dbm)\r
+     return mLBSMultiStationData;\r
+  }\r
+\r
 \r
   public String getLBSData(){\r
 \r
index b50756a..4e0ad43 100644 (file)
@@ -15,100 +15,94 @@ import com.enqualcomm.support.adapter.protocolAPIHelper;
 import com.enqualcomm.support.bean.Runtime;\r
 \r
 import static android.content.Context.BATTERY_SERVICE;\r
+import static android.os.BatteryManager.BATTERY_STATUS_CHARGING;\r
+import static android.os.BatteryManager.BATTERY_STATUS_DISCHARGING;\r
+import static android.os.BatteryManager.BATTERY_STATUS_FULL;\r
+import static android.os.BatteryManager.BATTERY_STATUS_NOT_CHARGING;\r
+import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;\r
 import static android.os.BatteryManager.EXTRA_LEVEL;\r
 import static android.os.BatteryManager.EXTRA_SCALE;\r
+import static android.os.BatteryManager.EXTRA_STATUS;\r
 import static android.os.BatteryManager.EXTRA_VOLTAGE;\r
 import static com.enqualcomm.support.Constants.ACTION_BATTERY_LOW_MSG;\r
 \r
 public class BatteryUtil {\r
   private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() {\r
-      public void onReceive(Context param1Context, Intent param1Intent) {\r
-        if (Intent.ACTION_BATTERY_CHANGED.equals(param1Intent.getAction())) {\r
-          if (param1Intent.getIntExtra("status", 1) == 2) {\r
-            BatteryUtil.this.mRuntime.setBatterychanging(true);\r
-            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
+      public void onReceive(Context param1Context, Intent intent) {\r
+        if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {\r
+          int extra_status = intent.getIntExtra(EXTRA_STATUS , BATTERY_STATUS_UNKNOWN );\r
+          StringBuilder msg=new StringBuilder("EXTRA_STATUS = ");\r
+          switch (extra_status){\r
+            case BATTERY_STATUS_CHARGING:\r
+              msg.append("BATTERY_STATUS_CHARGING ");\r
+              break;\r
+            case BATTERY_STATUS_UNKNOWN:\r
+              msg.append("BATTERY_STATUS_UNKNOWN ");\r
+              break;\r
+            case BATTERY_STATUS_DISCHARGING:\r
+              msg.append("BATTERY_STATUS_DISCHARGING ");\r
+              break;\r
+            case BATTERY_STATUS_FULL:\r
+              msg.append("BATTERY_STATUS_FULL ");\r
+              break;\r
+            case BATTERY_STATUS_NOT_CHARGING:\r
+              msg.append("BATTERY_STATUS_NOT_CHARGING ");\r
+              break;\r
+\r
+          }\r
+          msg.append("; ");\r
+          if (extra_status == BATTERY_STATUS_CHARGING) {\r
+            mRuntime.setBatterychanging(true);\r
+            mRuntime.setBatteryLow(false);\r
           } else {\r
-            BatteryUtil.this.mRuntime.setBatterychanging(false);\r
+            mRuntime.setBatterychanging(false);\r
           }\r
-          int i = param1Intent.getIntExtra(EXTRA_LEVEL, 0) * 100 / param1Intent.getIntExtra(EXTRA_SCALE, 100);\r
+          int batLevel = intent.getIntExtra(EXTRA_LEVEL, 0) * 100 / intent.getIntExtra(EXTRA_SCALE, 100);\r
           // 当前电池电压\r
-          int batteryVolt = param1Intent.getIntExtra(EXTRA_VOLTAGE, -1);\r
-          BatteryUtil.this.mRuntime.setBatteryVoltage(batteryVolt);\r
-          ICLogger.i("BatteryLevel "+i + " BatteryVotage "+batteryVolt);\r
-          if (Config.LOG_TOFILE)ICLogger.logToFile("Battery","BatteryLevel "+i + " BatteryVotage "+batteryVolt);\r
-          if (i >= 100) {\r
-            Runtime runtime = BatteryUtil.this.mRuntime;\r
-            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
-            stringBuffer.append("005");\r
-            stringBuffer.append(100);\r
-            runtime.setBattery(String.format("%03d",100));\r
-            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
-            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
-          } else if (i >= 75) {\r
-            Runtime runtime = BatteryUtil.this.mRuntime;\r
-            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
-//            stringBuffer.append("050");\r
-//            stringBuffer.append(i);\r
-//            runtime.setBattery(stringBuffer.toString());\r
-            runtime.setBattery(String.format("%03d",i));\r
-            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
-            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
-          } else if (i >= 50) {\r
-            Runtime runtime = BatteryUtil.this.mRuntime;\r
-            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
-//            stringBuffer.append("040");\r
-//            stringBuffer.append(i);\r
-//            runtime.setBattery(stringBuffer.toString());\r
-            runtime.setBattery(String.format("%03d",i));\r
-            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
-            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
-          } else if (i >= 25) {\r
-            Runtime runtime = BatteryUtil.this.mRuntime;\r
-            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
-//            stringBuffer.append("030");\r
-//            stringBuffer.append(i);\r
-//            runtime.setBattery(stringBuffer.toString());\r
-            runtime.setBattery(String.format("%03d",i));\r
-            BatteryUtil.this.mRuntime.setHaveBatteryChange(false);\r
-            BatteryUtil.this.mRuntime.setBatteryLow(false);\r
-          } else if (i >= 10) {\r
-            Runtime runtime = BatteryUtil.this.mRuntime;\r
-            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
-//            stringBuffer.append("020");\r
-//            stringBuffer.append(i);\r
-//            runtime.setBattery(stringBuffer.toString());\r
-            runtime.setBattery(String.format("%03d",i));\r
-            BatteryUtil.this.mRuntime.setHaveBatteryChange(true);\r
+          int batteryVolt = intent.getIntExtra(EXTRA_VOLTAGE, -1);\r
+          mRuntime.setBatteryVoltage(batteryVolt);\r
+          msg.append("BatteryLevel "+batLevel + " BatteryVotage "+batteryVolt+"; ");\r
+          if (Config.LOG_TOFILE)ICLogger.logToFile("Battery",msg.toString());\r
+          ICLogger.i(msg.toString());\r
+          if (batLevel >= 100) {\r
+            mRuntime.setBattery(String.format("%03d",100));\r
+            mRuntime.setHaveBatteryChange(false);\r
+            mRuntime.setBatteryLow(false);\r
+          } else if (batLevel<100 && batLevel >= 25) {\r
+            mRuntime.setBattery(String.format("%03d",batLevel));\r
+            mRuntime.setHaveBatteryChange(false);\r
+            mRuntime.setBatteryLow(false);\r
+          } else if (batLevel<25 && batLevel >= 5) {\r
+            mRuntime.setBattery(String.format("%03d",batLevel));\r
+            mRuntime.setHaveBatteryChange(true);\r
           } else {\r
-            Runtime runtime = BatteryUtil.this.mRuntime;\r
-            StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
-//            stringBuffer.append("100");\r
-//            stringBuffer.append(i);\r
-//            runtime.setBattery(stringBuffer.toString());\r
-            runtime.setBattery(String.format("%03d",i));\r
-            BatteryUtil.this.mRuntime.setHaveBatteryChange(true);\r
+            mRuntime.setBattery(String.format("%03d",batLevel));\r
+            mRuntime.setHaveBatteryChange(true);\r
+            mRuntime.setBatteryLow(true);\r
+\r
+            if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow !");\r
+            mRuntime.setAlarmType(false,mRuntime.getBatteryLow(),false,false);\r
+            //trigger AP10 报警定位\r
+            connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.AP10(mRuntime)));\r
           }\r
-          BatteryUtil.this.mBuffer.setLength(0);\r
-        }else if (Intent.ACTION_BATTERY_LOW.equals(param1Intent.getAction())) {\r
-          BatteryUtil.this.mRuntime.setBatteryLow(true);\r
-          ICLogger.i("lowbattery finish video_end_call");\r
-          if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow !");\r
 \r
+        }else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) {\r
+          mRuntime.setBatteryLow(true);\r
+          if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow !");\r
           mRuntime.setAlarmType(false,mRuntime.getBatteryLow(),false,false);\r
           //trigger AP10 报警定位\r
           connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.AP10(mRuntime)));\r
 \r
-        }else if (Intent.ACTION_BATTERY_OKAY.equals(param1Intent.getAction())){\r
-\r
+        }else if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())){\r
           ICLogger.i("Battery OKAY !");\r
           if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","Battery OKAY !");\r
 \r
-        }else if (Intent.ACTION_POWER_CONNECTED.equals(param1Intent.getAction())){\r
+        }else if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())){\r
           ICLogger.i("ACTION_POWER_CONNECTED !");\r
           mRuntime.setPowerConnected(true);\r
           if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","ACTION_POWER_CONNECTED!");\r
 \r
-        }else if (Intent.ACTION_POWER_DISCONNECTED.equals(param1Intent.getAction())){\r
+        }else if (Intent.ACTION_POWER_DISCONNECTED.equals(intent.getAction())){\r
           ICLogger.i("ACTION_POWER_DISCONNECTED!");\r
           mRuntime.setPowerConnected(false);\r
           if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","ACTION_POWER_DISCONNECTED !");\r
@@ -127,10 +121,10 @@ public class BatteryUtil {
   }\r
   \r
   public void registerBroadReceiver() {\r
-    this.mBuffer = new StringBuffer();\r
     IntentFilter intentFilter = new IntentFilter();\r
     intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);\r
     intentFilter.addAction(Intent.ACTION_BATTERY_LOW);\r
+    intentFilter.addAction(Intent.ACTION_BATTERY_OKAY);\r
     intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);\r
     intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);\r
     (this.mRuntime.getContextProxy()).context.registerReceiver(this.batteryChangedReceiver, intentFilter);\r
@@ -155,8 +149,8 @@ public class BatteryUtil {
 //你可以读到充电状态,如果在充电,可以读到是usb还是交流电\r
 \r
 // 是否在充电\r
-    int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);\r
-    boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING  ;//||     status == BatteryManager.BATTERY_STATUS_FULL;\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
   }\r
index 67e6513..a30ff01 100644 (file)
 package com.enqualcomm.support.utils;\r
 \r
+import android.os.Build;\r
 import android.os.Handler;\r
 import android.os.Message;\r
 import android.os.PowerManager;\r
+import android.telephony.CellInfo;\r
+import android.telephony.CellInfoCdma;\r
+import android.telephony.CellInfoGsm;\r
+import android.telephony.CellInfoLte;\r
+import android.telephony.CellInfoWcdma;\r
+import android.telephony.CellLocation;\r
+import android.telephony.CellSignalStrengthCdma;\r
+import android.telephony.CellSignalStrengthGsm;\r
+import android.telephony.CellSignalStrengthLte;\r
+import android.telephony.CellSignalStrengthWcdma;\r
+import android.telephony.NeighboringCellInfo;\r
+import android.telephony.TelephonyManager;\r
+import android.telephony.cdma.CdmaCellLocation;\r
+import android.telephony.gsm.GsmCellLocation;\r
 \r
 import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.GSensorListener;\r
 import com.enqualcomm.support.bean.Runtime;\r
 \r
-public class CellInfoUtil {\r
-  static int BSSS = 0;\r
-  \r
-  static int CELL_ID = 0;\r
-  \r
-  private static int IS2SECOND = 2;\r
-  \r
-  static int LAC = 0;\r
-  \r
-  static int MCC = 0;\r
-  \r
-  static int MNC = 0;\r
-\r
-\r
-  public static int getLAC(){return LAC;};\r
-  public static int getBSSS(){return BSSS;};\r
-  public static int getCELL_ID(){return CELL_ID;};\r
-  public static int getMCC(){return MCC;};\r
-  public static int getMNC(){return MNC;};\r
-  public static boolean getCellInfoOver = false;\r
-  \r
-  private static String mCellInfo;\r
-\r
-  public static String getCellInfo(){return mCellInfo;}\r
-  public static Handler mHandler = new Handler() {\r
-      public void handleMessage(Message param1Message) {\r
-        super.handleMessage(param1Message);\r
-        if (param1Message.what != 100)\r
-          return; \r
-        ICLogger.i("延时获取基站信息");\r
-\r
-        CellInfoUtil.setCurrentAttachCellInfo(mRuntime, mWakeLock);\r
+import java.util.Collections;\r
+import java.util.Comparator;\r
+import java.util.Iterator;\r
+import java.util.List;\r
 \r
+public class CellInfoUtil {\r
 \r
+  public static int getSignal(TelephonyManager tm , Runtime runtime){\r
+    CellLocation celllocation = tm.getCellLocation();\r
+    if (celllocation == null) {\r
+      ICLogger.i("cellLocation = null");\r
+      return 1;\r
+    } else {\r
+      if (celllocation instanceof GsmCellLocation) {\r
+        for (CellInfo cinfo : tm.getAllCellInfo()) {\r
+          if (cinfo instanceof CellInfoGsm){\r
+            CellSignalStrengthGsm cigsm=((CellInfoGsm)cinfo).getCellSignalStrength();\r
+            ICLogger.i("gsm signal dbm ="+cigsm.getDbm()+",level="+cigsm.getLevel());\r
+              runtime.setSignalInfo("gsm signal dbm ="+cigsm.getDbm()+",level="+cigsm.getLevel());\r
+              return cigsm.getDbm();\r
+          }else if (cinfo instanceof CellInfoLte){\r
+            CellSignalStrengthLte cigsm=((CellInfoLte)cinfo).getCellSignalStrength();\r
+            ICLogger.i("lte signal dbm ="+cigsm.getDbm()+",level="+cigsm.getLevel());\r
+              runtime.setSignalInfo("lte signal dbm ="+cigsm.getDbm()+",level="+cigsm.getLevel());\r
+              return cigsm.getDbm();\r
+          }else if (cinfo instanceof CellInfoWcdma) {\r
+            CellSignalStrengthWcdma cicdma = ((CellInfoWcdma) cinfo).getCellSignalStrength();\r
+            ICLogger.i("wcdma signal dbm ="+cicdma.getDbm()+",level="+cicdma.getLevel());\r
+                runtime.setSignalInfo("wcdma signal dbm ="+cicdma.getDbm()+",level="+cicdma.getLevel());\r
+                return cicdma.getDbm();\r
+          }\r
+        }\r
+        return 2;\r
+      }else if (celllocation instanceof CdmaCellLocation) {\r
+        for (CellInfo cinfo : tm.getAllCellInfo()) {\r
+          if (cinfo instanceof CellInfoCdma) {\r
+            CellSignalStrengthCdma cicdma = ((CellInfoCdma) cinfo).getCellSignalStrength();\r
+            ICLogger.i("cdma signal dbm ="+cicdma.getDbm()+",level="+cicdma.getLevel());\r
+              runtime.setSignalInfo("cdma signal dbm ="+cicdma.getDbm()+",level="+cicdma.getLevel());\r
+            return cicdma.getDbm();\r
+          }\r
+        }\r
+        return 3;\r
       }\r
-    };\r
-\r
-\r
-  public static void triggerUpdateCellinfo(){\r
-    mHandler.sendEmptyMessageDelayed(100,2000);\r
+      return 4;\r
+    }\r
   }\r
-  private static Runtime mRuntime;\r
-  \r
-  private static PowerManager.WakeLock mWakeLock;\r
-  \r
-  private static void releaseWakeLock(PowerManager.WakeLock paramWakeLock) {\r
-    if (paramWakeLock == null) {\r
-      ICLogger.i("cellInfo 没有加锁");\r
-      return;\r
-    } \r
-    if (GSensorListener.getStepCountOver) {\r
-      if (paramWakeLock.isHeld()) {\r
-        getCellInfoOver = false;\r
-        GSensorListener.getStepCountOver = false;\r
-        paramWakeLock.release();\r
-        return;\r
-      } \r
+  public static String getCellInfo(TelephonyManager telephonyManager, Runtime runtime) {\r
+    ICLogger.i("LBS 延时获取基站信息");\r
+    int maxstationCount = 0;\r
+    String mccmnc;\r
+    if (Build.VERSION.SDK_INT > 23) {\r
+      mccmnc = telephonyManager.getSimOperator();\r
+      if (mccmnc == null) {\r
+        ICLogger.i("LBS operator == null");\r
+        return null;\r
+      }\r
+\r
+      mccmnc = mccmnc.substring(0, 5);\r
     } else {\r
-      getCellInfoOver = true;\r
-    } \r
+      mccmnc = telephonyManager.getNetworkOperator();\r
+    }\r
+    ICLogger.i("LBS mccmnc "+mccmnc);\r
+\r
+    if (mccmnc != null && mccmnc.length() > 3) {\r
+\r
+      CellLocation celllocation = telephonyManager.getCellLocation();\r
+      if (celllocation == null) {\r
+        ICLogger.i("LBS cellLocation = null");\r
+        return null;\r
+      } else {\r
+        StringBuilder gsmSb = new StringBuilder(mccmnc);\r
+\r
+        StringBuilder cdmaSB = new StringBuilder();\r
+        gsmSb.insert(3, ",");\r
+        runtime.setMccAndMnc(gsmSb.toString());\r
+        if (celllocation instanceof GsmCellLocation) {\r
+          GsmCellLocation gsmCell = (GsmCellLocation)celllocation;\r
+            runtime.setCdmaInfo(null);\r
+\r
+\r
+          //AP01 Single GSM Station\r
+          gsmSb.append(",");\r
+          gsmSb.append(gsmCell.getLac());\r
+          gsmSb.append(",");\r
+          gsmSb.append(gsmCell.getCid());\r
+          gsmSb.append(",");\r
+          gsmSb.append(150-Math.abs(getSignal(telephonyManager,runtime)));\r
+          runtime.setCellinfo(gsmSb.toString());\r
+\r
+          runtime.getLocationInstance().setCID(gsmCell.getCid());\r
+          runtime.getLocationInstance().setLAC(gsmCell.getLac());\r
+\r
+          ICLogger.i("LBS GsmCellLocation "+ gsmSb.toString());\r
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", gsmSb.toString());\r
+\r
+          List neighboringCell_list = telephonyManager.getNeighboringCellInfo();\r
+            //AP02 Multi GSM Station\r
+            StringBuilder gsmSbMulti = new StringBuilder();\r
+            int size=1;\r
+            if (neighboringCell_list != null && !neighboringCell_list.isEmpty())\r
+                size +=neighboringCell_list.size();\r
+            StringBuilder mmcmnc1 = new StringBuilder(mccmnc);\r
+            mmcmnc1.insert(3, ",");\r
+            gsmSbMulti.append(size);\r
+            gsmSbMulti.append(",");\r
+            gsmSbMulti.append(mmcmnc1);\r
+            gsmSbMulti.append(",");\r
+            gsmSbMulti.append(gsmCell.getLac());\r
+            gsmSbMulti.append("|");\r
+            gsmSbMulti.append(gsmCell.getCid());\r
+            gsmSbMulti.append("|");\r
+            gsmSbMulti.append(150-Math.abs(getSignal(telephonyManager,runtime)));\r
+            if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) {\r
+              sortByRssi(neighboringCell_list);\r
+\r
+              Iterator cell = neighboringCell_list.iterator();\r
+\r
+\r
+            while(cell.hasNext()) {\r
+              NeighboringCellInfo mNeighboringCellInfo = (NeighboringCellInfo)cell.next();\r
+              if (mNeighboringCellInfo.getLac() == -1) {\r
+                break;\r
+              }\r
+                gsmSbMulti.append(",");\r
+                gsmSbMulti.append(mNeighboringCellInfo.getLac());\r
+                gsmSbMulti.append("|");\r
+                gsmSbMulti.append(mNeighboringCellInfo.getCid());\r
+                gsmSbMulti.append("|");\r
+                gsmSbMulti.append( 150-Math.abs(mNeighboringCellInfo.getRssi()));\r
+                maxstationCount ++;\r
+              if (maxstationCount == 5) {\r
+//                break;\r
+              }\r
+            }\r
+          }\r
+          ICLogger.i("LBS GsmCellLocation MultiStation "+ gsmSbMulti.toString());\r
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", gsmSbMulti.toString());\r
+\r
+            runtime.setLBSMultiStationData(gsmSbMulti.toString());\r
+\r
+          return gsmSb.toString();\r
+        } else if (celllocation instanceof CdmaCellLocation) {\r
+          CdmaCellLocation cdmaCelllocation = (CdmaCellLocation)celllocation;\r
+          cdmaSB.append(cdmaCelllocation.getSystemId());\r
+          cdmaSB.append(",");\r
+          cdmaSB.append(cdmaCelllocation.getNetworkId());\r
+          cdmaSB.append(",");\r
+          cdmaSB.append(cdmaCelllocation.getBaseStationId());\r
+          cdmaSB.append(",");\r
+          cdmaSB.append("");\r
+          cdmaSB.append(",");\r
+          cdmaSB.append("");\r
+          cdmaSB.append(",");\r
+          cdmaSB.append(getSignal(telephonyManager,runtime));\r
+          ICLogger.i("CdmaCellLocation");\r
+          StringBuilder var8 = new StringBuilder();\r
+          var8.append("CDMA_info=");\r
+          var8.append(cdmaSB.toString());\r
+          ICLogger.i(var8.toString());\r
+          runtime.setCellinfo(null);\r
+          runtime.setCdmaInfo(cdmaSB.toString());\r
+\r
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", var8.toString());\r
+          return cdmaSB.toString();\r
+\r
+        }\r
+\r
+        return null;\r
+      }\r
+    } else {\r
+      ICLogger.i("operator == null || operator.length() <= 3");\r
+      return null;\r
+    }\r
   }\r
-  \r
-  public static void removeMessage() { mHandler.removeCallbacksAndMessages(null); }\r
-  \r
-  public static void setCurrentAttachCellInfo(Runtime dev, PowerManager.WakeLock paramWakeLock) {\r
-    mWakeLock = paramWakeLock;\r
-    mRuntime = dev;\r
+  private static void sortByRssi(List<NeighboringCellInfo> var1) {\r
+    Collections.sort(var1, new Comparator<NeighboringCellInfo>() {\r
+      public int compare(NeighboringCellInfo var1, NeighboringCellInfo var2) {\r
+        return var2.getRssi() - var1.getRssi();\r
+      }\r
+    });\r
+  }\r
+  public static void setCurrentAttachCellInfo(Runtime dev) {\r
+\r
     (new Thread(new Runnable() {\r
           public void run() {\r
 \r
-            if (mRuntime !=null) {\r
-\r
+            if (dev !=null) {\r
               //更新lbs信息\r
-              CellInfoUtil.mCellInfo = mRuntime.getLbsHelper().getAttchCellInfo(mRuntime.getContextProxy().getTelephonyManager());\r
-\r
-              if (mCellInfo != null) {\r
-                String str1 = mRuntime.getCdmaInfo();\r
-                String str2 = mRuntime.getMccAndMnc();\r
-                if (str1 != null) {\r
-                  String[] arrayOfString2 = str2.split("@");\r
-                  String[] arrayOfString1 = str1.split(",");\r
-                  CellInfoUtil.MCC = Integer.parseInt(arrayOfString2[0]);\r
-                  CellInfoUtil.MNC = Integer.parseInt(arrayOfString2[1]);\r
-                  int i = Integer.parseInt(arrayOfString1[0]);\r
-                  int j = Integer.parseInt(arrayOfString1[1]);\r
-                  int k = Integer.parseInt(arrayOfString1[2]);\r
-                  CellInfoUtil.BSSS = Integer.parseInt(arrayOfString1[5]);\r
-\r
-                  CellInfoUtil.releaseWakeLock(mWakeLock);\r
-                } else {\r
-\r
-                  String[] stationlist = mCellInfo.split("\\+");\r
-                  if (stationlist.length>0 ) {\r
-                    String[] arrayOfString = stationlist[0].split("@");\r
-                    CellInfoUtil.MCC = Integer.parseInt(arrayOfString[0]);\r
-                    CellInfoUtil.MNC = Integer.parseInt(arrayOfString[1]);\r
-                    CellInfoUtil.LAC = Integer.parseInt(arrayOfString[2]);\r
-                    CellInfoUtil.CELL_ID = Integer.parseInt(arrayOfString[3]);\r
-                    CellInfoUtil.BSSS = Integer.parseInt(arrayOfString[4]);\r
-                    CellInfoUtil.IS2SECOND = 2;\r
-                  }\r
-                }\r
-                if (Config.LOG_TOFILE)ICLogger.logToFile("LBS", mCellInfo);\r
-                CellInfoUtil.releaseWakeLock(mWakeLock);\r
-                ICLogger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
-\r
-              }\r
-              if (IS2SECOND <= 0) {\r
-                CellInfoUtil.MCC = 0;\r
-                CellInfoUtil.MNC = 0;\r
-                CellInfoUtil.LAC = 0;\r
-                CellInfoUtil.CELL_ID = -1;\r
-                CellInfoUtil.BSSS = 0;\r
-//              CellInfoUtil.access$002(2);\r
-                CellInfoUtil.IS2SECOND = 2;\r
-                Runtime runtime = mRuntime;\r
-                StringBuilder stringBuilder = new StringBuilder();\r
-                stringBuilder.append(CellInfoUtil.MCC);\r
-                stringBuilder.append("@");\r
-                stringBuilder.append(CellInfoUtil.MNC);\r
-                stringBuilder.append("@");\r
-                stringBuilder.append(CellInfoUtil.LAC);\r
-                stringBuilder.append("@");\r
-                stringBuilder.append(CellInfoUtil.CELL_ID);\r
-                stringBuilder.append("@");\r
-                stringBuilder.append(CellInfoUtil.BSSS);\r
-\r
-                runtime.setCurrentCellInfo(stringBuilder.toString());\r
-\r
-//              EqcAlgorithmNative.native_EqcAlgorithmMethod4(1, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
-                if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", mRuntime.getCurrentCellInfo());\r
-\r
-                CellInfoUtil.releaseWakeLock(mWakeLock);\r
-                ICLogger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
+              getCellInfo(dev.getContextProxy().getTelephonyManager(),dev);\r
 \r
-              }\r
-              mRuntime.getLocationInstance().setMNC(String.valueOf(CellInfoUtil.getMNC()));\r
-              mRuntime.getLocationInstance().setCID(CellInfoUtil.getCELL_ID());\r
-              mRuntime.getLocationInstance().setMCC(String.valueOf(CellInfoUtil.getMCC()));\r
-              mRuntime.getLocationInstance().setLAC(CellInfoUtil.getLAC());\r
-              mRuntime.preCellInfo = CellInfoUtil.getCellInfo();\r
             }\r
+\r
           }\r
         })).start();\r
   }\r
index 471b852..66ad5ba 100644 (file)
@@ -226,7 +226,7 @@ public class DeviceInfoUtil {
             .append(DeviceInfoUtil.getVersionCode(runtime.getContextProxy().context))\r
             .append(SimSignalUtil.hasSimCard(runtime.getContextProxy().context)?" SIM ":" NoSIM ")\r
             .append(sim.getNetworkType()==SimSignalUtil.IS_2G?"2G":(sim.getNetworkType()==SimSignalUtil.IS_3G)?"3G":(sim.getNetworkType()==SimSignalUtil.IS_4G?"4G":"unknown"))\r
-            .append(" [").append(runtime.getSignalStrength()).append(",Mini:").append(SimSignalUtil.getMinSignalStrength(sim.getNetworkType())).append("] ")\r
+            .append(" [").append(runtime.getSignalStrength()).append(",").append(runtime.getSignalInfo()).append("] ")\r
             .append(runtime.IMEI())\r
             .append("\n SocketConnection ").append(KeepAlive.isConnected).append(" , HBcycle ").append(runtime.getHeartBeatCycle())\r
             .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
@@ -243,6 +243,7 @@ public class DeviceInfoUtil {
             .append(",bpl ").append(runtime.getHRS().getBPL())\r
             .append(" at ").append(runtime.getHRS().getTestTime())\r
             .append("\nrealimei:").append(PhoneUtils.getIMEI(runtime.getContextProxy().context))\r
+            .append("\n").append(runtime.getLBSMultiStationData())\r
             .toString();\r
   }\r
   public static String getShortDeviceInfo(Runtime runtime){\r
@@ -277,4 +278,43 @@ public class DeviceInfoUtil {
   }\r
   public static void setLockSimInfo(Context paramContext) {\r
     Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); }\r
+\r
+  private static String[][] packagelist={\r
+          {"com.enqualcomm.support","Protocol"},\r
+          {"com.ic.blood","BLood"},\r
+          {"com.ic.launcher","Launcher"},\r
+          {"com.ic.work","Work"},\r
+          {"com.ic.weather","Weather"},\r
+          {"com.ic.hardware","Hardware"},\r
+          {"mobile.miki","FactoryMode"},\r
+          {"com.ic.dial","Dialer"},\r
+          {"android.rockchip.update.service","Fota"}\r
+  };\r
+\r
+  public static String getPackageVersionName(Context context , String packagename) {\r
+    String versionName = "";\r
+    try {\r
+      PackageManager pm = context.getPackageManager();\r
+      PackageInfo pi = pm.getPackageInfo(packagename, 0);\r
+      versionName = "V"+pi.versionCode;\r
+      if (versionName == null || versionName.length() <= 0) {\r
+        return "";\r
+      }\r
+    } catch (Exception e) {\r
+      e.printStackTrace();\r
+    }\r
+    return versionName;\r
+  }\r
+\r
+  public static String getPackageVersions(Context context){\r
+      StringBuilder versions=new StringBuilder();\r
+      versions.append(getSWVersionDisplayName()).append(",");\r
+      for (String[] packagename: packagelist){\r
+        versions.append(packagename[1]);\r
+        versions.append("-");\r
+        versions.append( getPackageVersionName(context,packagename[0]));\r
+        versions.append(",");\r
+      }\r
+      return versions.toString();\r
+    }\r
 }\r
index 0d248c1..fcc4cc5 100644 (file)
@@ -63,6 +63,10 @@ public class NettyConnection implements Connection {
                                 API.handleBP01(cmd);\r
                                 ICLogger.i("服务器收到定位AP01");\r
                                 break;\r
+                            case BP02:\r
+                                API.handleBP02(cmd);\r
+                                ICLogger.i("服务器收到定位AP02");\r
+                                break;\r
                             case BP03:\r
                                 API.handleBP03(cmd);\r
                                 ICLogger.i("服务器收到心跳包AP03");\r
index c5d0a9e..0572ac8 100644 (file)
@@ -64,20 +64,7 @@ public class SimSignalUtil {
     stringBuilder.append(paramInt2);\r
     ICLogger.i(stringBuilder.toString());\r
   }\r
-  public static int getMinSignalStrength(int NetworkType) {\r
-    byte b2 = -105;\r
-    switch (NetworkType) {\r
-      case SimSignalUtil.IS_2G:\r
-      case SimSignalUtil.IS_3G:\r
-        break;\r
-      case SimSignalUtil.IS_4G:\r
-        b2 = -100;\r
-        break;\r
-      default:\r
-        break;\r
-    }\r
-    return b2;\r
-  }\r
+\r
    public static boolean hasSimCard(Context context) {\r
 \r
     TelephonyManager telMgr = (TelephonyManager)\r
index 69d4d43..5129984 100644 (file)
@@ -1,2 +1,2 @@
-#Fri Apr 10 11:16:37 CST 2020\r
-VERSION_CODE=397\r
+#Sat Apr 11 15:09:19 CST 2020\r
+VERSION_CODE=398\r