release L02ProtocolV2 V739
authorsnickersun <scy@incartech.cn>
Fri, 25 Dec 2020 04:50:33 +0000 (12:50 +0800)
committersnickersun <scy@incartech.cn>
Fri, 25 Dec 2020 04:50:33 +0000 (12:50 +0800)
S123 Vitrack 默认 15分钟 定位、检测心率、检测体温
增加温度日志

app/release/ICSer_V739_2012251247_release.apk [moved from app/release/ICSer_V738_2012221145_release.apk with 78% similarity]
app/release/output.json
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/ICLogger.java
app/src/main/java/com/enqualcomm/support/utils/TempAlgUtil.java
app/src/main/java/com/enqualcomm/support/utils/TemperatureUtil.java
app/version_code.properties

similarity index 78%
rename from app/release/ICSer_V738_2012221145_release.apk
rename to app/release/ICSer_V739_2012251247_release.apk
index 81415d3..e4a6f9e 100644 (file)
Binary files a/app/release/ICSer_V738_2012221145_release.apk and b/app/release/ICSer_V739_2012251247_release.apk differ
index 617ce71..705860d 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":738,"versionName":"2012221145","enabled":true,"outputFile":"ICSer_V738_2012221145_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V738_2012221145_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":739,"versionName":"2012251247","enabled":true,"outputFile":"ICSer_V739_2012251247_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V739_2012251247_release.apk","properties":{}}]
\ No newline at end of file
index 98e942b..67e1352 100644 (file)
@@ -788,9 +788,9 @@ public class CoreService extends Service {
             Config.enableSleep=false;
             if (Config.getConfigInitFlag(this)==0) {
                 Config.setLocationMode(this, CUSTOM_MOD8_GPS);
-                Config.setLocationCycle(this, 30*60);
-                Config.setPPGTestCycle(this, 0);
-                Config.setTemperatureTestCycle(runtime, 0);
+                Config.setLocationCycle(this, 15*60);
+                Config.setPPGTestCycle(this, 15*60);
+                Config.setTemperatureTestCycle(runtime, 15*60);
                 Config.setConfigInitFlag(this, 1);
             }
 
index a778dac..450ac7e 100644 (file)
-package com.enqualcomm.support.utils;\r
-\r
-import android.content.Context;\r
-import android.os.Build;\r
-import android.os.Handler;\r
-import android.os.Message;\r
-import android.os.PowerManager;\r
-import android.provider.ContactsContract;\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.android.internal.telephony.CallManager;\r
-import com.android.internal.telephony.CallStateException;\r
-import com.android.internal.telephony.Phone;\r
-import com.android.internal.telephony.PhoneFactory;\r
-import com.enqualcomm.support.Config;\r
-import com.enqualcomm.support.GSensorListener;\r
-import com.enqualcomm.support.adapter.LBSHelper;\r
-import com.enqualcomm.support.bean.Runtime;\r
-import com.sprd.internal.telephony.SprdCallManager;\r
-\r
-import java.lang.reflect.Method;\r
-import java.util.Collections;\r
-import java.util.Comparator;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import rx.Single;\r
-import rx.android.schedulers.AndroidSchedulers;\r
-import rx.functions.Action1;\r
-\r
-public class CellInfoUtil {\r
-\r
-\r
-  public static void dialSilent(Context context,String dialnumber){\r
-//    Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
-//      public void call(Object param1Object) {\r
-//\r
-//        try {\r
-//          Class phoneFactoryClass = Class.forName("com.android.internal.telephony.PhoneFactory");\r
-//\r
-//          Method makeDefaultPhones = phoneFactoryClass.getMethod("makeDefaultPhones", Context.class);\r
-//\r
-//          makeDefaultPhones.invoke(null, context);\r
-//\r
-//          Method getDefaultPhone = phoneFactoryClass.getMethod("getDefaultPhone");\r
-//\r
-//          Object p = getDefaultPhone.invoke(null);\r
-//\r
-//          Class classCallManager = Class.forName("com.sprd.internal.telephony.SprdCallManager");\r
-//\r
-//          Object CallManagerInstance = classCallManager.getDeclaredMethod("getInstance");\r
-//\r
-//          classCallManager.getMethod("registerPhone", Object.class).invoke(CallManagerInstance, p);\r
-//\r
-//          Method newGetDefaultPhone = classCallManager.getMethod("getDefaultPhone");\r
-//\r
-//          Object phone = newGetDefaultPhone.invoke(CallManagerInstance);\r
-//\r
-//          String phoneName = "com.android.internal.telephony.Phone";\r
-//\r
-//          Class phoneClass = Class.forName(phoneName);\r
-//\r
-//          phoneClass.getMethod("dial", String.class).invoke(phone, dialnumber);\r
-//        }catch (Exception e){\r
-//          ICLogger.PrintExceptionStackTrace(e);\r
-//        }\r
-//      }\r
-//    });\r
-    Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
-      public void call(Object param1Object) {\r
-\r
-        PhoneFactory.makeDefaultPhones(context);\r
-\r
-        Phone p = PhoneFactory.getDefaultPhone();\r
-\r
-        SprdCallManager cm = (SprdCallManager)SprdCallManager.getInstance();\r
-\r
-        cm.registerPhone(p);\r
-\r
-        Phone phone = cm.getDefaultPhone();\r
-\r
-        try {\r
-          phone.dial(dialnumber);\r
-        } catch (Exception e) {\r
-          ICLogger.PrintExceptionStackTrace(e);\r
-          ICLogger.e(e.getMessage(),e);\r
-        }\r
-      }\r
-    });\r
-\r
-  }\r
-  public static int getSignal(TelephonyManager tm , Runtime runtime){\r
-\r
-    if(tm==null)\r
-      return 5;\r
-    try {\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
-        return 4;\r
-      }\r
-    }catch (Exception e){\r
-      ICLogger.e(e.getMessage(),e);ICLogger.PrintExceptionStackTrace(e);\r
-      ICLogger.e(e.getMessage(),e);\r
-      return 6;\r
-    }\r
-  }\r
-  public static String getCellInfo(TelephonyManager telephonyManager, Runtime runtime) {\r
-    ICLogger.i("LBS 延时获取基站信息");\r
-    /***\r
-     * MCC,Mobile Country Code,移动国家代码(中国的为460)。\r
-     * MNC,Mobile Network Code,移动网络号码(中国移动为0,中国联通为1,中国电信为2)。\r
-     * LAC,Location Area Code,位置区域码。\r
-     * CID,Cell Identity,基站编号。\r
-     * BSSS,Base station signal strength,基站信号强度。\r
-     */\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
-      mccmnc = telephonyManager.getNetworkOperator();\r
-    }\r
-\r
-    if(mccmnc==null|| (mccmnc!=null && mccmnc.trim().isEmpty()))\r
-    {\r
-      ICLogger.i("LBS retry get MCCMNC");\r
-      telephonyManager=((TelephonyManager) runtime.getContextProxy().context.getSystemService(Context.TELEPHONY_SERVICE));\r
-      Util.mSleep(5000);\r
-      mccmnc=telephonyManager.getSimOperator();\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
-        gsmSb.insert(3, ",");\r
-\r
-        StringBuilder cdmaSB = new StringBuilder();\r
-        runtime.setMccAndMnc(gsmSb.toString());\r
-\r
-        if (celllocation instanceof GsmCellLocation) {\r
-          GsmCellLocation gsmCell = (GsmCellLocation)celllocation;\r
-            runtime.setCdmaInfo(null);\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
-\r
-          StringBuilder gsmSbMultiFZD = new StringBuilder();\r
-          StringBuilder gsmSbMulti_data = new StringBuilder();\r
-\r
-          StringBuilder gsmSbMultiFZD_data = new StringBuilder();\r
-          int size=1;\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_data.append(",");\r
-                gsmSbMulti_data.append(mNeighboringCellInfo.getLac());\r
-                gsmSbMulti_data.append("|");\r
-                gsmSbMulti_data.append(mNeighboringCellInfo.getCid());\r
-                gsmSbMulti_data.append("|");\r
-                gsmSbMulti_data.append( 150-Math.abs(mNeighboringCellInfo.getRssi()));\r
-\r
-                gsmSbMultiFZD_data.append(",");\r
-                gsmSbMultiFZD_data.append(mNeighboringCellInfo.getLac());\r
-                gsmSbMultiFZD_data.append(",");\r
-                gsmSbMultiFZD_data.append(mNeighboringCellInfo.getCid());\r
-                gsmSbMultiFZD_data.append(",");\r
-                gsmSbMultiFZD_data.append( 150-Math.abs(mNeighboringCellInfo.getRssi()));\r
-\r
-                maxstationCount ++;\r
-                if (maxstationCount == 5) {\r
-//                break;\r
-                }\r
-              }\r
-              size += maxstationCount;\r
-            }\r
-\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
-            gsmSbMulti.append(gsmSbMulti_data.toString());\r
-\r
-\r
-          gsmSbMultiFZD.append(size);\r
-          gsmSbMultiFZD.append(",");\r
-          gsmSbMultiFZD.append(1);\r
-          gsmSbMultiFZD.append(",");\r
-          gsmSbMultiFZD.append(mmcmnc1);\r
-          gsmSbMultiFZD.append(",");\r
-          gsmSbMultiFZD.append(gsmCell.getLac());\r
-          gsmSbMultiFZD.append(",");\r
-          gsmSbMultiFZD.append(gsmCell.getCid());\r
-          gsmSbMultiFZD.append(",");\r
-          gsmSbMultiFZD.append(150-Math.abs(getSignal(telephonyManager,runtime)));\r
-          gsmSbMultiFZD.append(gsmSbMultiFZD_data.toString());\r
-\r
-\r
-          ICLogger.i("LBS GsmCellLocation MultiStation "+ gsmSbMulti.toString());\r
-          ICLogger.i("FZD LBS GsmCellLocation MultiStation "+ gsmSbMultiFZD.toString());\r
-          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", "LBS GsmCellLocation MultiStation "+ gsmSbMulti.toString());\r
-          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", "FZD LBS GsmCellLocation MultiStation "+ gsmSbMultiFZD.toString());\r
-\r
-          runtime.setLBSMultiStationData(gsmSbMulti.toString());\r
-          runtime.setFZDLBSMultiStationData(gsmSbMultiFZD.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
-  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 (dev !=null) {\r
-              //更新lbs信息\r
-              getCellInfo(dev.getContextProxy().getTelephonyManager(),dev);\r
-\r
-            }\r
-\r
-          }\r
-        })).start();\r
-  }\r
-\r
-\r
-}\r
+package com.enqualcomm.support.utils;
+
+import android.content.Context;
+import android.os.Build;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PowerManager;
+import android.provider.ContactsContract;
+import android.telephony.CellInfo;
+import android.telephony.CellInfoCdma;
+import android.telephony.CellInfoGsm;
+import android.telephony.CellInfoLte;
+import android.telephony.CellInfoWcdma;
+import android.telephony.CellLocation;
+import android.telephony.CellSignalStrengthCdma;
+import android.telephony.CellSignalStrengthGsm;
+import android.telephony.CellSignalStrengthLte;
+import android.telephony.CellSignalStrengthWcdma;
+import android.telephony.NeighboringCellInfo;
+import android.telephony.TelephonyManager;
+import android.telephony.cdma.CdmaCellLocation;
+import android.telephony.gsm.GsmCellLocation;
+
+import com.android.internal.telephony.CallManager;
+import com.android.internal.telephony.CallStateException;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
+import com.enqualcomm.support.Config;
+import com.enqualcomm.support.GSensorListener;
+import com.enqualcomm.support.adapter.LBSHelper;
+import com.enqualcomm.support.bean.Runtime;
+import com.sprd.internal.telephony.SprdCallManager;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import rx.Single;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+
+public class CellInfoUtil {
+
+
+  public static void dialSilent(Context context,String dialnumber){
+//    Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {
+//      public void call(Object param1Object) {
+//
+//        try {
+//          Class phoneFactoryClass = Class.forName("com.android.internal.telephony.PhoneFactory");
+//
+//          Method makeDefaultPhones = phoneFactoryClass.getMethod("makeDefaultPhones", Context.class);
+//
+//          makeDefaultPhones.invoke(null, context);
+//
+//          Method getDefaultPhone = phoneFactoryClass.getMethod("getDefaultPhone");
+//
+//          Object p = getDefaultPhone.invoke(null);
+//
+//          Class classCallManager = Class.forName("com.sprd.internal.telephony.SprdCallManager");
+//
+//          Object CallManagerInstance = classCallManager.getDeclaredMethod("getInstance");
+//
+//          classCallManager.getMethod("registerPhone", Object.class).invoke(CallManagerInstance, p);
+//
+//          Method newGetDefaultPhone = classCallManager.getMethod("getDefaultPhone");
+//
+//          Object phone = newGetDefaultPhone.invoke(CallManagerInstance);
+//
+//          String phoneName = "com.android.internal.telephony.Phone";
+//
+//          Class phoneClass = Class.forName(phoneName);
+//
+//          phoneClass.getMethod("dial", String.class).invoke(phone, dialnumber);
+//        }catch (Exception e){
+//          ICLogger.PrintExceptionStackTrace(e);
+//        }
+//      }
+//    });
+    Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {
+      public void call(Object param1Object) {
+
+        PhoneFactory.makeDefaultPhones(context);
+
+        Phone p = PhoneFactory.getDefaultPhone();
+
+        SprdCallManager cm = (SprdCallManager)SprdCallManager.getInstance();
+
+        cm.registerPhone(p);
+
+        Phone phone = cm.getDefaultPhone();
+
+        try {
+          phone.dial(dialnumber);
+        } catch (Exception e) {
+          ICLogger.PrintExceptionStackTrace(e);
+          ICLogger.e(e.getMessage(),e);
+        }
+      }
+    });
+
+  }
+  public static int getSignal(TelephonyManager tm , Runtime runtime){
+
+    if(tm==null)
+      return 5;
+    try {
+      CellLocation celllocation = tm.getCellLocation();
+      if (celllocation == null) {
+        ICLogger.i("cellLocation = null");
+        return 1;
+      } else {
+        if (celllocation instanceof GsmCellLocation) {
+          for (CellInfo cinfo : tm.getAllCellInfo()) {
+            if (cinfo instanceof CellInfoGsm) {
+              CellSignalStrengthGsm cigsm = ((CellInfoGsm) cinfo).getCellSignalStrength();
+              ICLogger.i("gsm signal dbm =" + cigsm.getDbm() + ",level=" + cigsm.getLevel());
+              runtime.setSignalInfo("gsm signal dbm =" + cigsm.getDbm() + ",level=" + cigsm.getLevel());
+              return cigsm.getDbm();
+            } else if (cinfo instanceof CellInfoLte) {
+              CellSignalStrengthLte cigsm = ((CellInfoLte) cinfo).getCellSignalStrength();
+              ICLogger.i("lte signal dbm =" + cigsm.getDbm() + ",level=" + cigsm.getLevel());
+              runtime.setSignalInfo("lte signal dbm =" + cigsm.getDbm() + ",level=" + cigsm.getLevel());
+              return cigsm.getDbm();
+            } else if (cinfo instanceof CellInfoWcdma) {
+              CellSignalStrengthWcdma cicdma = ((CellInfoWcdma) cinfo).getCellSignalStrength();
+              ICLogger.i("wcdma signal dbm =" + cicdma.getDbm() + ",level=" + cicdma.getLevel());
+              runtime.setSignalInfo("wcdma signal dbm =" + cicdma.getDbm() + ",level=" + cicdma.getLevel());
+              return cicdma.getDbm();
+            }
+          }
+          return 2;
+        } else if (celllocation instanceof CdmaCellLocation) {
+          for (CellInfo cinfo : tm.getAllCellInfo()) {
+            if (cinfo instanceof CellInfoCdma) {
+              CellSignalStrengthCdma cicdma = ((CellInfoCdma) cinfo).getCellSignalStrength();
+              ICLogger.i("cdma signal dbm =" + cicdma.getDbm() + ",level=" + cicdma.getLevel());
+              runtime.setSignalInfo("cdma signal dbm =" + cicdma.getDbm() + ",level=" + cicdma.getLevel());
+              return cicdma.getDbm();
+            }
+          }
+          return 3;
+        }
+        return 4;
+      }
+    }catch (Exception e){
+      ICLogger.e(e.getMessage());
+      ICLogger.PrintExceptionStackTrace(e);
+      return 6;
+    }
+  }
+  public static String getCellInfo(TelephonyManager telephonyManager, Runtime runtime) {
+    ICLogger.i("LBS 延时获取基站信息");
+    /***
+     * MCC,Mobile Country Code,移动国家代码(中国的为460)。
+     * MNC,Mobile Network Code,移动网络号码(中国移动为0,中国联通为1,中国电信为2)。
+     * LAC,Location Area Code,位置区域码。
+     * CID,Cell Identity,基站编号。
+     * BSSS,Base station signal strength,基站信号强度。
+     */
+    int maxstationCount = 0;
+    String mccmnc;
+    if (Build.VERSION.SDK_INT > 23) {
+      mccmnc = telephonyManager.getSimOperator();
+      if (mccmnc == null) {
+        ICLogger.i("LBS operator == null");
+        return null;
+      }
+
+      mccmnc = mccmnc.substring(0, 5);
+    } else {
+      mccmnc = telephonyManager.getNetworkOperator();
+    }
+
+    if(mccmnc==null|| (mccmnc!=null && mccmnc.trim().isEmpty()))
+    {
+      ICLogger.i("LBS retry get MCCMNC");
+      telephonyManager=((TelephonyManager) runtime.getContextProxy().context.getSystemService(Context.TELEPHONY_SERVICE));
+      Util.mSleep(5000);
+      mccmnc=telephonyManager.getSimOperator();
+    }
+    ICLogger.i("LBS mccmnc "+mccmnc);
+
+    if (mccmnc != null && mccmnc.length() > 3) {
+
+      CellLocation celllocation = telephonyManager.getCellLocation();
+      if (celllocation == null) {
+        ICLogger.i("LBS cellLocation = null");
+        return null;
+      } else {
+        StringBuilder gsmSb = new StringBuilder(mccmnc);
+        gsmSb.insert(3, ",");
+
+        StringBuilder cdmaSB = new StringBuilder();
+        runtime.setMccAndMnc(gsmSb.toString());
+
+        if (celllocation instanceof GsmCellLocation) {
+          GsmCellLocation gsmCell = (GsmCellLocation)celllocation;
+            runtime.setCdmaInfo(null);
+          //AP01 Single GSM Station
+          gsmSb.append(",");
+          gsmSb.append(gsmCell.getLac());
+          gsmSb.append(",");
+          gsmSb.append(gsmCell.getCid());
+          gsmSb.append(",");
+          gsmSb.append(150-Math.abs(getSignal(telephonyManager,runtime)));
+          runtime.setCellinfo(gsmSb.toString());
+
+          runtime.getLocationInstance().setCID(gsmCell.getCid());
+          runtime.getLocationInstance().setLAC(gsmCell.getLac());
+
+          ICLogger.i("LBS GsmCellLocation "+ gsmSb.toString());
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", gsmSb.toString());
+
+          List neighboringCell_list = telephonyManager.getNeighboringCellInfo();
+            //AP02 Multi GSM Station
+            StringBuilder gsmSbMulti = new StringBuilder();
+
+          StringBuilder gsmSbMultiFZD = new StringBuilder();
+          StringBuilder gsmSbMulti_data = new StringBuilder();
+
+          StringBuilder gsmSbMultiFZD_data = new StringBuilder();
+          int size=1;
+            if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) {
+              sortByRssi(neighboringCell_list);
+
+              Iterator cell = neighboringCell_list.iterator();
+
+
+              while(cell.hasNext()) {
+                NeighboringCellInfo mNeighboringCellInfo = (NeighboringCellInfo)cell.next();
+                if (mNeighboringCellInfo.getLac() == -1) {
+                  break;
+                }
+                gsmSbMulti_data.append(",");
+                gsmSbMulti_data.append(mNeighboringCellInfo.getLac());
+                gsmSbMulti_data.append("|");
+                gsmSbMulti_data.append(mNeighboringCellInfo.getCid());
+                gsmSbMulti_data.append("|");
+                gsmSbMulti_data.append( 150-Math.abs(mNeighboringCellInfo.getRssi()));
+
+                gsmSbMultiFZD_data.append(",");
+                gsmSbMultiFZD_data.append(mNeighboringCellInfo.getLac());
+                gsmSbMultiFZD_data.append(",");
+                gsmSbMultiFZD_data.append(mNeighboringCellInfo.getCid());
+                gsmSbMultiFZD_data.append(",");
+                gsmSbMultiFZD_data.append( 150-Math.abs(mNeighboringCellInfo.getRssi()));
+
+                maxstationCount ++;
+                if (maxstationCount == 5) {
+//                break;
+                }
+              }
+              size += maxstationCount;
+            }
+
+            StringBuilder mmcmnc1 = new StringBuilder(mccmnc);
+            mmcmnc1.insert(3, ",");
+            gsmSbMulti.append(size);
+            gsmSbMulti.append(",");
+            gsmSbMulti.append(mmcmnc1);
+            gsmSbMulti.append(",");
+            gsmSbMulti.append(gsmCell.getLac());
+            gsmSbMulti.append("|");
+            gsmSbMulti.append(gsmCell.getCid());
+            gsmSbMulti.append("|");
+            gsmSbMulti.append(150-Math.abs(getSignal(telephonyManager,runtime)));
+            gsmSbMulti.append(gsmSbMulti_data.toString());
+
+
+          gsmSbMultiFZD.append(size);
+          gsmSbMultiFZD.append(",");
+          gsmSbMultiFZD.append(1);
+          gsmSbMultiFZD.append(",");
+          gsmSbMultiFZD.append(mmcmnc1);
+          gsmSbMultiFZD.append(",");
+          gsmSbMultiFZD.append(gsmCell.getLac());
+          gsmSbMultiFZD.append(",");
+          gsmSbMultiFZD.append(gsmCell.getCid());
+          gsmSbMultiFZD.append(",");
+          gsmSbMultiFZD.append(150-Math.abs(getSignal(telephonyManager,runtime)));
+          gsmSbMultiFZD.append(gsmSbMultiFZD_data.toString());
+
+
+          ICLogger.i("LBS GsmCellLocation MultiStation "+ gsmSbMulti.toString());
+          ICLogger.i("FZD LBS GsmCellLocation MultiStation "+ gsmSbMultiFZD.toString());
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", "LBS GsmCellLocation MultiStation "+ gsmSbMulti.toString());
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", "FZD LBS GsmCellLocation MultiStation "+ gsmSbMultiFZD.toString());
+
+          runtime.setLBSMultiStationData(gsmSbMulti.toString());
+          runtime.setFZDLBSMultiStationData(gsmSbMultiFZD.toString());
+
+          return gsmSb.toString();
+        } else if (celllocation instanceof CdmaCellLocation) {
+          CdmaCellLocation cdmaCelllocation = (CdmaCellLocation)celllocation;
+          cdmaSB.append(cdmaCelllocation.getSystemId());
+          cdmaSB.append(",");
+          cdmaSB.append(cdmaCelllocation.getNetworkId());
+          cdmaSB.append(",");
+          cdmaSB.append(cdmaCelllocation.getBaseStationId());
+          cdmaSB.append(",");
+          cdmaSB.append("");
+          cdmaSB.append(",");
+          cdmaSB.append("");
+          cdmaSB.append(",");
+          cdmaSB.append(getSignal(telephonyManager,runtime));
+          ICLogger.i("CdmaCellLocation");
+          StringBuilder var8 = new StringBuilder();
+          var8.append("CDMA_info=");
+          var8.append(cdmaSB.toString());
+          ICLogger.i(var8.toString());
+          runtime.setCellinfo(null);
+          runtime.setCdmaInfo(cdmaSB.toString());
+
+          if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", var8.toString());
+          return cdmaSB.toString();
+
+        }
+
+        return null;
+      }
+    } else {
+      ICLogger.i("operator == null || operator.length() <= 3");
+      return null;
+    }
+  }
+  private static void sortByRssi(List<NeighboringCellInfo> var1) {
+    Collections.sort(var1, new Comparator<NeighboringCellInfo>() {
+      public int compare(NeighboringCellInfo var1, NeighboringCellInfo var2) {
+        return var2.getRssi() - var1.getRssi();
+      }
+    });
+  }
+  public static void setCurrentAttachCellInfo(Runtime dev) {
+
+    (new Thread(new Runnable() {
+          public void run() {
+
+            if (dev !=null) {
+              //更新lbs信息
+              getCellInfo(dev.getContextProxy().getTelephonyManager(),dev);
+
+            }
+
+          }
+        })).start();
+  }
+
+
+}
index 89682b3..6072ec3 100644 (file)
-package com.enqualcomm.support.utils;\r
-\r
-import android.content.Context;\r
-\r
-import com.enqualcomm.support.ICApplication;\r
-\r
-import org.apache.log4j.Appender;\r
-import org.apache.log4j.FileAppender;\r
-import org.apache.log4j.Layout;\r
-import org.apache.log4j.Level;\r
-import org.apache.log4j.Logger;\r
-import org.apache.log4j.PatternLayout;\r
-import org.apache.log4j.RollingFileAppender;\r
-import org.apache.log4j.spi.ErrorHandler;\r
-import org.apache.log4j.spi.Filter;\r
-import org.apache.log4j.spi.LoggingEvent;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.io.OutputStream;\r
-import java.io.OutputStreamWriter;\r
-import java.io.PrintStream;\r
-\r
-import de.mindpipe.android.logging.log4j.LogConfigurator;\r
-\r
-\r
-\r
-public class ICLogger {\r
-\r
-    private static boolean isInitConfig = false;\r
-    private static Context mContext=null;\r
-\r
-  private static Logger Log = null;\r
-  private static Logger GPS = null;\r
-  private static Logger Nmea = null;\r
-  private static Logger APILog = null;\r
-  private static Logger alarmCycle = null;\r
-  private static Logger Battery = null;\r
-  private static Logger LBS = null;\r
-  //  private static java.util.logging.Logger originLog= java.util.logging.Logger.getLogger(ICLogger.class.getSimpleName());\r
-  private static final boolean DEBUG = true;   //BuildConfig.DEBUG;\r
-\r
-  public static void setContext(Context context){\r
-    mContext=context;\r
-  }\r
-  private static String getFunctionName() {\r
-    StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();\r
-    if (currentStack == null) {\r
-      return null;\r
-    } else {\r
-      int stackLen = currentStack.length;\r
-\r
-      for(int i = 0; i < stackLen; ++i) {\r
-        StackTraceElement stackElement = currentStack[i];\r
-        if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(ICLogger.class.getName())) {\r
-          StringBuilder sb = new StringBuilder();\r
-          sb.append("[ ");\r
-          sb.append(Thread.currentThread().getName());\r
-          sb.append(": ");\r
-          sb.append(stackElement.getFileName());\r
-          sb.append(":");\r
-          sb.append(stackElement.getLineNumber());\r
-          sb.append(" ");\r
-          sb.append(stackElement.getMethodName());\r
-          sb.append(" ]");\r
-          return sb.toString();\r
-        }\r
-      }\r
-\r
-      return null;\r
-    }\r
-  }\r
-\r
-  /**\r
-   初始化与配置Logger   Log4j\r
-   日志信息格式中符号所代表的含义\r
-   (1)-X号: X信息输出时左对齐。\r
-   (2)%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL。\r
-   (3)%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921。\r
-   (4)%r: 输出自应用启动到输出该log信息耗费的毫秒数。\r
-   (5)%c: 输出日志信息所属的类目,通常就是所在类的全名。\r
-   (6)%t: 输出产生该日志事件的线程名。\r
-   (7)%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。\r
-   (8)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。\r
-   (9)%%: 输出一个"%"字符。\r
-   (10)%F: 输出日志消息产生时所在的文件名称。\r
-   (11)%L: 输出代码中的行号。\r
-   (12)%m: 输出代码中指定的消息,产生的日志具体信息。\r
-   (13)%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行。\r
-   可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:\r
-   (1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。\r
-   (2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。\r
-   (3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。\r
-   (4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。\r
-   */\r
-    private static void initConfig() {\r
-      if (!isInitConfig) {\r
-\r
-        LogConfigurator logConfigurator = new LogConfigurator();\r
-\r
-        String filename=StorageUtils.getExternalStorageLogDir()+ File.separator + "log.txt";\r
-        logConfigurator.setFileName(filename);                         // 日志存储路径,如果该路径没有会自动创建文件\r
-        logConfigurator.setRootLevel(Level.ALL);\r
-\r
-        logConfigurator.setLevel("log", Level.ALL);\r
-//        logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");// 设置文件输出模式\r
-        logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式\r
-//        02-29 16:28:38.195 4629-4658/com.enqualcomm.support E/com.enqualcomm.support.utils.ICLogger:\r
-        logConfigurator.setMaxBackupSize(2); // 设置最大备份数量\r
-        logConfigurator.setMaxFileSize(1024 * 1024 * 20);// 设置最大文件大小  20MB\r
-        logConfigurator.setImmediateFlush(true);// 设置是否立即刷新\r
-        logConfigurator.setUseFileAppender(true); // 设置用户文件输出器\r
-        logConfigurator.setInternalDebugging(false); //控制console是否输出\r
-        logConfigurator.setUseLogCatAppender(true);\r
-        logConfigurator.setLogCatPattern("%m%n");\r
-        logConfigurator.configure();// 设置提交\r
-\r
-\r
-//        String logfilelist[]={"Log","GPS","Nmea","APILog","alarmCycle","Battery","LBS"};\r
-\r
-        //Log 和log目前是同一个配置\r
-        Log = Logger.getLogger("log");\r
-        Log.info("init Logger "+Log.getName());\r
-//        Log.addAppender( getRollingFileAppender("log","%d %m%n "));\r
-//        Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());\r
-\r
-        GPS = Logger.getLogger("GPS");\r
-        GPS.addAppender( getRollingFileAppender("GPS","%d %m%n "));\r
-        GPS.info("init Logger "+GPS.getName()+" "+((RollingFileAppender)GPS.getAppender("GPS")).getFile());\r
-\r
-        Nmea = Logger.getLogger("Nmea");\r
-        Nmea.addAppender( getRollingFileAppender("Nmea","%m%n"));\r
-        Nmea.info("init Logger "+Nmea.getName()+" "+((RollingFileAppender)Nmea.getAppender("Nmea")).getFile());\r
-\r
-        APILog = Logger.getLogger("APILog");\r
-        APILog.addAppender( getRollingFileAppender("APILog","%d %m%n "));\r
-        APILog.info("init Logger "+APILog.getName()+" "+((RollingFileAppender)APILog.getAppender("APILog")).getFile());\r
-\r
-        alarmCycle = Logger.getLogger("alarmCycle");\r
-        alarmCycle.addAppender( getRollingFileAppender("alarmCycle","%d %m%n "));\r
-        alarmCycle.info("init Logger "+alarmCycle.getName()+" "+((RollingFileAppender)alarmCycle.getAppender("alarmCycle")).getFile());\r
-\r
-        Battery = Logger.getLogger("Battery");\r
-        Battery.addAppender( getRollingFileAppender("Battery","%d %m%n "));\r
-        Battery.info("init Logger "+Battery.getName()+" "+((RollingFileAppender)Battery.getAppender("Battery")).getFile());\r
-\r
-\r
-        LBS = Logger.getLogger("LBS");\r
-        LBS.addAppender( getRollingFileAppender("LBS","%d %m%n "));\r
-        LBS.info("init Logger "+LBS.getName()+" "+((RollingFileAppender)LBS.getAppender("LBS")).getFile());\r
-        isInitConfig = true;\r
-      }\r
-    }\r
-\r
-    public static void logRAWtoFile(String filename,String msg){\r
-      if (filename.equals("Nmea")){\r
-        Nmea.info(msg);\r
-      }else if  (filename.equals("LBS")) {\r
-        LBS.info(msg);\r
-      }else if  (filename.equals("GPS")) {\r
-        GPS.info(msg);\r
-      }else if  (filename.equals("APILog")) {\r
-        APILog.info(msg);\r
-      }else if  (filename.equals("alarmCycle")) {\r
-        alarmCycle.info(msg);\r
-      }else if  (filename.equals("Battery")) {\r
-        Battery.info(msg);\r
-      }else {\r
-        Log.info(msg);\r
-      }\r
-    }\r
-  public static void logToFile(String filename,String msg){\r
-    if (filename.equals("Nmea")){\r
-      Nmea.info(msg);\r
-    }else if  (filename.equals("LBS")) {\r
-      LBS.info(msg);\r
-    }else if  (filename.equals("GPS")) {\r
-      GPS.info(msg);\r
-    }else if  (filename.equals("APILog")) {\r
-      APILog.info(msg);\r
-    }else if  (filename.equals("alarmCycle")) {\r
-      alarmCycle.info(msg);\r
-    }else if  (filename.equals("Battery")) {\r
-      Battery.info(msg);\r
-    }else {\r
-      Log.info(msg);\r
-    }\r
-  }\r
-    private static  RollingFileAppender getRollingFileAppender(String name,String layoutpattern){\r
-      PatternLayout fileLayout = new PatternLayout(layoutpattern);\r
-      String filename=StorageUtils.getExternalStorageLogDir()+ File.separator + name+".txt";\r
-      RollingFileAppender rollingFileAppender= null;\r
-      try {\r
-        rollingFileAppender = new RollingFileAppender(fileLayout,filename);\r
-      } catch (IOException e) {\r
-        e.printStackTrace();\r
-        ICLogger.e(e.getMessage(),e);\r
-        return null;\r
-      }\r
-      rollingFileAppender.setName(name);\r
-      rollingFileAppender.setMaxBackupIndex(2);  //最多3个备份文件\r
-      rollingFileAppender.setMaximumFileSize(10*1024*1024); //10M 大小\r
-      rollingFileAppender.setImmediateFlush(true);\r
-\r
-      return rollingFileAppender;\r
-    }\r
-\r
-    public static void v(String msg) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.debug(buildMessage(msg));\r
-    }\r
-\r
-    public static void v(String msg, Throwable thr) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.debug(buildMessage(msg), thr);\r
-    }\r
-\r
-    public static void d(String msg) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.debug(buildMessage(msg));\r
-    }\r
-\r
-    public static void d(String msg, Throwable thr) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.debug(buildMessage(msg), thr);\r
-    }\r
-\r
-    public static void i(String msg) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.info(buildMessage(msg));\r
-    }\r
-\r
-    public static void i(String msg, Throwable thr) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.info(buildMessage(msg), thr);\r
-    }\r
-\r
-    public static void w(String msg) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.warn(buildMessage(msg));\r
-    }\r
-\r
-    public static void w(String msg, Throwable thr) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.warn(buildMessage(msg), thr);\r
-    }\r
-\r
-    public static void w(Throwable thr) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.warn(buildMessage(""), thr);\r
-    }\r
-\r
-    public static void e(String msg) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.error(buildMessage(msg));\r
-    }\r
-\r
-    public static void e(String msg, Throwable thr) {\r
-      initConfig();\r
-      if (Log!=null)\r
-        Log.error(buildMessage(msg), thr);\r
-    }\r
-\r
-    public static void PrintExceptionStackTrace(Exception e){\r
-\r
-      StringBuffer sb=new StringBuffer();\r
-      sb.append(e.getMessage()).append("\n");\r
-      e.printStackTrace(new PrintStream(new OutputStream() {\r
-        @Override\r
-        public void write(int b) throws IOException {\r
-          sb.append((char)b);\r
-        }\r
-      }));\r
-      i(sb.toString());\r
-    }\r
-\r
-    /**\r
-     * 生成消息\r
-     * @param msg\r
-     * @return\r
-     */\r
-    protected static String buildMessage(String msg) {\r
-      initConfig();\r
-      if (DEBUG && msg !=null) {\r
-        String var1 = getFunctionName();\r
-        if (var1 != null) {\r
-          StringBuilder sb = new StringBuilder();\r
-          sb.append(var1);\r
-          sb.append(" - ");\r
-          sb.append(msg);\r
-          return sb.toString();\r
-        }else{\r
-          return "msg is null";\r
-        }\r
-      }else{\r
-        return "msg is null";\r
-      }\r
-    }\r
-  public static  void log(String TAG, String msg) {\r
-    if (DEBUG) {\r
-      if (Log!=null)Log.debug(TAG+ " "+msg);\r
-\r
-    }\r
-  }\r
-\r
-  public static void log(String TAG,String funcName, String msg) {\r
-    if (DEBUG) {\r
-      if (Log!=null)\r
-        Log.debug(TAG + " [" + funcName + "]" + msg);\r
-\r
-    }\r
-  }\r
-\r
-}\r
-\r
+package com.enqualcomm.support.utils;
+
+import android.content.Context;
+
+import com.enqualcomm.support.ICApplication;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.FileAppender;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.RollingFileAppender;
+import org.apache.log4j.spi.ErrorHandler;
+import org.apache.log4j.spi.Filter;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintStream;
+
+import de.mindpipe.android.logging.log4j.LogConfigurator;
+
+
+
+public class ICLogger {
+
+    private static boolean isInitConfig = false;
+    private static Context mContext=null;
+
+  private static Logger Log = null;
+  private static Logger GPS = null;
+  private static Logger Nmea = null;
+  private static Logger APILog = null;
+  private static Logger alarmCycle = null;
+  private static Logger Battery = null;
+  private static Logger LBS = null;
+  //  private static java.util.logging.Logger originLog= java.util.logging.Logger.getLogger(ICLogger.class.getSimpleName());
+  private static final boolean DEBUG = true;   //BuildConfig.DEBUG;
+
+  public static void setContext(Context context){
+    mContext=context;
+  }
+  private static String getFunctionName() {
+    StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();
+    if (currentStack == null) {
+      return null;
+    } else {
+      int stackLen = currentStack.length;
+
+      for(int i = 0; i < stackLen; ++i) {
+        StackTraceElement stackElement = currentStack[i];
+        if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(ICLogger.class.getName())) {
+          StringBuilder sb = new StringBuilder();
+          sb.append("[ ");
+          sb.append(Thread.currentThread().getName());
+          sb.append(": ");
+          sb.append(stackElement.getFileName());
+          sb.append(":");
+          sb.append(stackElement.getLineNumber());
+          sb.append(" ");
+          sb.append(stackElement.getMethodName());
+          sb.append(" ]");
+          return sb.toString();
+        }
+      }
+
+      return null;
+    }
+  }
+
+  /**
+   初始化与配置Logger   Log4j
+   日志信息格式中符号所代表的含义
+   (1)-X号: X信息输出时左对齐。
+   (2)%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
+   (3)%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921。
+   (4)%r: 输出自应用启动到输出该log信息耗费的毫秒数。
+   (5)%c: 输出日志信息所属的类目,通常就是所在类的全名。
+   (6)%t: 输出产生该日志事件的线程名。
+   (7)%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)。
+   (8)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
+   (9)%%: 输出一个"%"字符。
+   (10)%F: 输出日志消息产生时所在的文件名称。
+   (11)%L: 输出代码中的行号。
+   (12)%m: 输出代码中指定的消息,产生的日志具体信息。
+   (13)%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行。
+   可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
+   (1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
+   (2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
+   (3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
+   (4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。
+   */
+    private static void initConfig() {
+      if (!isInitConfig) {
+
+        LogConfigurator logConfigurator = new LogConfigurator();
+
+        String filename=StorageUtils.getExternalStorageLogDir()+ File.separator + "log.txt";
+        logConfigurator.setFileName(filename);                         // 日志存储路径,如果该路径没有会自动创建文件
+        logConfigurator.setRootLevel(Level.ALL);
+
+        logConfigurator.setLevel("log", Level.ALL);
+//        logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");// 设置文件输出模式
+        logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式
+//        02-29 16:28:38.195 4629-4658/com.enqualcomm.support E/com.enqualcomm.support.utils.ICLogger:
+        logConfigurator.setMaxBackupSize(2); // 设置最大备份数量
+        logConfigurator.setMaxFileSize(1024 * 1024 * 20);// 设置最大文件大小  20MB
+        logConfigurator.setImmediateFlush(true);// 设置是否立即刷新
+        logConfigurator.setUseFileAppender(true); // 设置用户文件输出器
+        logConfigurator.setInternalDebugging(false); //控制console是否输出
+        logConfigurator.setUseLogCatAppender(true);
+        logConfigurator.setLogCatPattern("%m%n");
+        logConfigurator.configure();// 设置提交
+
+
+//        String logfilelist[]={"Log","GPS","Nmea","APILog","alarmCycle","Battery","LBS"};
+
+        //Log 和log目前是同一个配置
+        Log = Logger.getLogger("log");
+        Log.info("init Logger "+Log.getName());
+//        Log.addAppender( getRollingFileAppender("log","%d %m%n "));
+//        Log.info("init Logger "+Log.getName()+" "+((RollingFileAppender)Log.getAppender("log")).getFile());
+
+        GPS = Logger.getLogger("GPS");
+        GPS.addAppender( getRollingFileAppender("GPS","%d %m%n "));
+        GPS.info("init Logger "+GPS.getName()+" "+((RollingFileAppender)GPS.getAppender("GPS")).getFile());
+
+        Nmea = Logger.getLogger("Nmea");
+        Nmea.addAppender( getRollingFileAppender("Nmea","%m%n"));
+        Nmea.info("init Logger "+Nmea.getName()+" "+((RollingFileAppender)Nmea.getAppender("Nmea")).getFile());
+
+        APILog = Logger.getLogger("APILog");
+        APILog.addAppender( getRollingFileAppender("APILog","%d %m%n "));
+        APILog.info("init Logger "+APILog.getName()+" "+((RollingFileAppender)APILog.getAppender("APILog")).getFile());
+
+        alarmCycle = Logger.getLogger("alarmCycle");
+        alarmCycle.addAppender( getRollingFileAppender("alarmCycle","%d %m%n "));
+        alarmCycle.info("init Logger "+alarmCycle.getName()+" "+((RollingFileAppender)alarmCycle.getAppender("alarmCycle")).getFile());
+
+        Battery = Logger.getLogger("Battery");
+        Battery.addAppender( getRollingFileAppender("Battery","%d %m%n "));
+        Battery.info("init Logger "+Battery.getName()+" "+((RollingFileAppender)Battery.getAppender("Battery")).getFile());
+
+
+        LBS = Logger.getLogger("LBS");
+        LBS.addAppender( getRollingFileAppender("LBS","%d %m%n "));
+        LBS.info("init Logger "+LBS.getName()+" "+((RollingFileAppender)LBS.getAppender("LBS")).getFile());
+        isInitConfig = true;
+      }
+    }
+
+    public static void logRAWtoFile(String filename,String msg){
+      if (filename.equals("Nmea")){
+        Nmea.info(msg);
+      }else if  (filename.equals("LBS")) {
+        LBS.info(msg);
+      }else if  (filename.equals("GPS")) {
+        GPS.info(msg);
+      }else if  (filename.equals("APILog")) {
+        APILog.info(msg);
+      }else if  (filename.equals("alarmCycle")) {
+        alarmCycle.info(msg);
+      }else if  (filename.equals("Battery")) {
+        Battery.info(msg);
+      }else {
+        Log.info(msg);
+      }
+    }
+  public static void logToFile(String filename,String msg){
+    if (filename.equals("Nmea")){
+      Nmea.info(msg);
+    }else if  (filename.equals("LBS")) {
+      LBS.info(msg);
+    }else if  (filename.equals("GPS")) {
+      GPS.info(msg);
+    }else if  (filename.equals("APILog")) {
+      APILog.info(msg);
+    }else if  (filename.equals("alarmCycle")) {
+      alarmCycle.info(msg);
+    }else if  (filename.equals("Battery")) {
+      Battery.info(msg);
+    }else {
+      Log.info(msg);
+    }
+  }
+    private static  RollingFileAppender getRollingFileAppender(String name,String layoutpattern){
+      PatternLayout fileLayout = new PatternLayout(layoutpattern);
+      String filename=StorageUtils.getExternalStorageLogDir()+ File.separator + name+".txt";
+      RollingFileAppender rollingFileAppender= null;
+      try {
+        rollingFileAppender = new RollingFileAppender(fileLayout,filename);
+      } catch (IOException e) {
+        e.printStackTrace();
+        ICLogger.e(e.getMessage(),e);
+        return null;
+      }
+      rollingFileAppender.setName(name);
+      rollingFileAppender.setMaxBackupIndex(2);  //最多3个备份文件
+      rollingFileAppender.setMaximumFileSize(10*1024*1024); //10M 大小
+      rollingFileAppender.setImmediateFlush(true);
+
+      return rollingFileAppender;
+    }
+
+    public static void v(String msg) {
+      initConfig();
+      if (Log!=null)
+        Log.debug(buildMessage(msg));
+    }
+
+    public static void v(String msg, Throwable thr) {
+      initConfig();
+      if (Log!=null)
+        Log.debug(buildMessage(msg), thr);
+    }
+
+    public static void d(String msg) {
+      initConfig();
+      if (Log!=null)
+        Log.debug(buildMessage(msg));
+    }
+
+    public static void d(String msg, Throwable thr) {
+      initConfig();
+      if (Log!=null)
+        Log.debug(buildMessage(msg), thr);
+    }
+
+    public static void i(String msg) {
+      initConfig();
+      if (Log!=null)
+        Log.info(buildMessage(msg));
+    }
+
+    public static void i(String msg, Throwable thr) {
+      initConfig();
+      if (Log!=null)
+        Log.info(buildMessage(msg), thr);
+    }
+
+    public static void w(String msg) {
+      initConfig();
+      if (Log!=null)
+        Log.warn(buildMessage(msg));
+    }
+
+    public static void w(String msg, Throwable thr) {
+      initConfig();
+      if (Log!=null)
+        Log.warn(buildMessage(msg), thr);
+    }
+
+    public static void w(Throwable thr) {
+      initConfig();
+      if (Log!=null)
+        Log.warn(buildMessage(""), thr);
+    }
+
+    public static void e(String msg) {
+      initConfig();
+      if (Log!=null)
+        Log.error(buildMessage(msg));
+    }
+
+    public static void e(String msg, Throwable thr) {
+      initConfig();
+      if (Log!=null)
+        Log.error(buildMessage(msg), thr);
+    }
+
+    public static void PrintExceptionStackTrace(Exception e){
+
+      StringBuffer sb=new StringBuffer();
+      sb.append(e.getMessage()).append("\n");
+      e.printStackTrace(new PrintStream(new OutputStream() {
+        @Override
+        public void write(int b) throws IOException {
+          sb.append((char)b);
+        }
+      }));
+      i(sb.toString());
+    }
+
+    /**
+     * 生成消息
+     * @param msg
+     * @return
+     */
+    protected static String buildMessage(String msg) {
+      initConfig();
+      if (DEBUG && msg !=null) {
+        String var1 = getFunctionName();
+        if (var1 != null) {
+          StringBuilder sb = new StringBuilder();
+          sb.append(var1);
+          sb.append(" - ");
+          sb.append(msg);
+          return sb.toString();
+        }else{
+          return "functionName is null";
+        }
+      }else{
+        return "msg is null";
+      }
+    }
+  public static  void log(String TAG, String msg) {
+    if (DEBUG) {
+      if (Log!=null)Log.debug(TAG+ " "+msg);
+
+    }
+  }
+
+  public static void log(String TAG,String funcName, String msg) {
+    if (DEBUG) {
+      if (Log!=null)
+        Log.debug(TAG + " [" + funcName + "]" + msg);
+
+    }
+  }
+
+}
+
index 2618fcf..95b6031 100644 (file)
@@ -14,13 +14,13 @@ public class TempAlgUtil {
 
     public static double get_tempOut_value_origin() {
         tempOut_value = ICJniUtils.getTemperatureOrigin();
-        Log.i(TAG, "测量环境温度 原始值 " + tempOut_value);
+        ICLogger.i( "测量环境温度 原始值 " + tempOut_value);
         return tempOut_value;
     }
 
     public static double get_temp_value_adjusted() {
         temp_value_orig = ICJniUtils.getTemperature();
-        Log.i(TAG, "测量体温 原始值 " + temp_value_orig);
+        ICLogger.i("测量体温 原始值 " + temp_value_orig);
         return temp_value_orig;
     }
 
@@ -91,7 +91,7 @@ public class TempAlgUtil {
                 String boardTempType = TempFileUtils.readFile(CMD_BOARD_TYPE);
                 String boardTempStr = TempFileUtils.readFile(CMD_BOARD_TEM);
                 //cpuTempType == >  cpu-thmzone cpuTempStr == >  45295 gpuTempType == >  gpu-thmzone gpuTempStr == >  43910
-                Log.d(TAG, " cpuTempType == >  " + cpuTempType +
+                ICLogger.d( " cpuTempType == >  " + cpuTempType +
                         " cpuTempStr == >  " + cpuTempStr +
                         "\n | " +
                         " gpuTempType == >  " + gpuTempType +
index 7a4df3d..891dcde 100644 (file)
@@ -157,6 +157,7 @@ public class TemperatureUtil {
                     break;
                 }
             }
+            ICLogger.i("Temperature done!");
             if (Runtime.practising == true) {
                 ICLogger.i("自由锻炼中,设置测量体温!" + String.format("%.1f", body_temp));
                 Runtime.healthInfo.setTemperatureData(body_temp);
index 5d97b96..a5b91ff 100644 (file)
@@ -1,2 +1,2 @@
-#Tue Dec 22 11:45:50 CST 2020
-VERSION_CODE=738
+#Fri Dec 25 12:47:34 CST 2020
+VERSION_CODE=739