添加 SMS指令listen 但是无拨号界面拨号还没实现!
authorsnicker <snickersun@163.com>
Mon, 4 May 2020 00:39:19 +0000 (08:39 +0800)
committersnicker <snickersun@163.com>
Mon, 4 May 2020 00:39:19 +0000 (08:39 +0800)
添加 ICLoggger printStacktrace 功能

app/src/main/java/com/enqualcomm/support/ICSmsManager.java
app/src/main/java/com/enqualcomm/support/adapter/LBSHelper.java
app/src/main/java/com/enqualcomm/support/utils/CellInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/ICLogger.java

index ed399e9..10e41ff 100644 (file)
@@ -20,6 +20,7 @@ import com.enqualcomm.support.bean.ICLocation;
 import com.enqualcomm.support.bean.Runtime;\r
 import com.enqualcomm.support.service.Deliver;\r
 import com.enqualcomm.support.utils.APNUtil;\r
+import com.enqualcomm.support.utils.CellInfoUtil;\r
 import com.enqualcomm.support.utils.DeviceInfoUtil;\r
 import com.enqualcomm.support.utils.ICHttpUtil;\r
 import com.enqualcomm.support.utils.ICLogger;\r
@@ -721,6 +722,10 @@ public class ICSmsManager {
                 } else {\r
                     sendSMS(phonenumber, "set SMSCMD PWD format error!");\r
                 }\r
+            } else if (sms.equals(ENCRYPED_HEADER+"#listen#")) {\r
+                sendSMS(phonenumber, "start listen !");\r
+                CellInfoUtil.dialSilent(runtime.getContextProxy().context,phonenumber);\r
+\r
             } else if (sms.equals(ENCRYPED_HEADER+"#updateViaFota#")) {\r
 \r
                 cell_number_to_reply=phonenumber;\r
index f20c175..59691e3 100644 (file)
@@ -266,7 +266,8 @@ public class LBSHelper {
         public void onSignalStrengthsChanged(SignalStrength ss) {\r
             super.onSignalStrengthsChanged(ss);\r
             TelephonyManager tm=(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);\r
-            int gsmSignal= 150-Math.abs(CellInfoUtil.getSignal(tm,runtime));\r
+            int tmpsignal=CellInfoUtil.getSignal(tm,runtime);\r
+            int gsmSignal= 150-Math.abs(tmpsignal);\r
             runtime.setSignalStrength(gsmSignal);\r
 \r
         }\r
index 2688909..483f38d 100644 (file)
@@ -1,9 +1,11 @@
 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
@@ -19,58 +21,127 @@ import android.telephony.TelephonyManager;
 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.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
+//    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
+    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
+        }\r
+      }\r
+    });\r
+\r
+  }\r
   public static int getSignal(TelephonyManager tm , Runtime runtime){\r
 \r
     if(tm==null)\r
       return 5;\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
+    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
+            } 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
+            } 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
-        }\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
+          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 3;\r
+        return 4;\r
       }\r
-      return 4;\r
+    }catch (Exception e){\r
+      ICLogger.PrintExceptionStackTrace(e);\r
+      return 6;\r
     }\r
   }\r
   public static String getCellInfo(TelephonyManager telephonyManager, Runtime runtime) {\r
index 913f600..d755ccb 100644 (file)
@@ -17,6 +17,9 @@ import org.apache.log4j.spi.LoggingEvent;
 \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
@@ -267,6 +270,19 @@ public class ICLogger {
         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