-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();
+ }
+
+
+}
-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);
+
+ }
+ }
+
+}
+