1、修改#deviceinfo#分两条短信发送版本信息,和运行状态。
authorsnickersun <snickersun@qq.com>
Sat, 22 Feb 2020 20:36:18 +0000 (04:36 +0800)
committersnickersun <snickersun@qq.com>
Sat, 22 Feb 2020 20:36:18 +0000 (04:36 +0800)
2、添加wifi配置的短信命令,可以用adb配置。

app/src/main/java/com/enqualcomm/support/Config.java
app/src/main/java/com/enqualcomm/support/ICSmsManager.java
app/src/main/java/com/enqualcomm/support/bean/Runtime.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/Util.java

index c20d55d..fa27715 100644 (file)
@@ -191,7 +191,7 @@ public class Config {
 \r
   public static final String DefaultWiFiSSID="Xplay6";\r
   public static final String DefaultWiFiPWD="87654321";\r
-\r
+  public static final String DefaultWiFiEncryptType="psk";\r
   static  {\r
   \r
   }\r
@@ -312,7 +312,7 @@ public class Config {
 \r
   final static String KeyWiFiSSID="WiFiSSID";\r
   final static String KeyWiFiPasswd="WiFiPWD";\r
-\r
+  final static String KeyWiFiEncyptType="WiFiEncryptType";\r
 \r
   public static String getWiFiSSID(Context context){\r
     return SharPreferenceUtil.getPrefString(context,KeyWiFiSSID,DefaultWiFiSSID);\r
@@ -330,8 +330,16 @@ public class Config {
     SharPreferenceUtil.setPrefString(context,KeyWiFiPasswd,pwd);\r
   }\r
 \r
+    public static String getWiFiEncryptType(Context context){\r
+        return SharPreferenceUtil.getPrefString(context,KeyWiFiEncyptType,DefaultWiFiEncryptType);\r
+    }\r
+\r
+    public static void setWiFiEncryptType(Context context,String type){\r
+        SharPreferenceUtil.setPrefString(context,KeyWiFiEncyptType,type);\r
+    }\r
+\r
 \r
-  public static String getFtpUser(Context context){\r
+    public static String getFtpUser(Context context){\r
     return SharPreferenceUtil.getPrefString(context,KeyLogFtpUser,DefaultLogFtpUser);\r
   }\r
 \r
index 2e486a1..4912dc1 100644 (file)
@@ -16,6 +16,7 @@ import android.widget.Toast;
 \r
 import com.enqualcomm.support.bean.ICLocation;\r
 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.DeviceInfoUtil;\r
 import com.enqualcomm.support.utils.Logger;\r
@@ -36,6 +37,7 @@ import rx.Observable;
 import rx.functions.Action1;\r
 \r
 import static com.enqualcomm.support.Constants.DIALOG_ACTION;\r
+import static com.enqualcomm.support.utils.DeviceInfoUtil.getDeviceVersion;\r
 \r
 \r
 public class ICSmsManager {\r
@@ -164,6 +166,8 @@ public class ICSmsManager {
 \r
                 }\r
             } else if (sms.startsWith("#deviceinfo#")) {\r
+                Logger.i("SMS " + sms + " reply " + DeviceInfoUtil.getDeviceVersion(runtime));\r
+                sendSMS(phonenumber, DeviceInfoUtil.getDeviceVersion(runtime));\r
                 Logger.i("SMS " + sms + " reply " + DeviceInfoUtil.getShortDeviceInfo(runtime));\r
                 sendSMS(phonenumber, DeviceInfoUtil.getShortDeviceInfo(runtime));\r
             } else if (sms.startsWith("#status#")) {\r
@@ -305,21 +309,41 @@ public class ICSmsManager {
                 } else {\r
                     sendSMS(phonenumber, "skipmovecheck format error!");\r
                 }\r
-            }else if(sms.startsWith("#connectwifi#=")){\r
+            }else if(sms.startsWith("#wifictl#=")){\r
                 String tmp[] = sms.split("=");\r
                 if (tmp.length == 2) {\r
                     if (tmp[1].equals("current")) {\r
-                        sendSMS(phonenumber, "SkipMoveCheck " + LocationClient.getSkipMoveCheck() + "!");\r
+                        sendSMS(phonenumber, "Current Wifi Setting SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ "!");\r
                     } else if (tmp[1].equals("reset")) {\r
-                        LocationClient.setSkipMoveCheck(true);\r
-                        sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!");\r
-                    } else {\r
+                        Config.setWiFiSSID(mContext,Config.DefaultWiFiSSID);\r
+                        Config.setWiFiPasswd(mContext,Config.DefaultWiFiPWD);\r
+                        sendSMS(phonenumber, "reset Wifi Setting to SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ "!");\r
+                    } else if (tmp[1].startsWith("connect,")) {\r
+\r
+                        String tmplist[]=tmp[1].split(",");\r
+                        if (tmplist.length==4){\r
+                            String SSID=tmplist[1];\r
+                            String PWD=tmplist[2];\r
+                            String encyptType=tmplist[3];\r
+                            Config.setWiFiSSID(mContext,SSID);\r
+                            Config.setWiFiPasswd(mContext,PWD);\r
+                            sendSMS(phonenumber, "set and connect to Wifi SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ ", encryptType "+encyptType+"!");\r
+                            //connect to wifi\r
+                            Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+                                public void call(Long param1Long) {\r
+                                    Deliver.connectToWifi(SSID,PWD,encyptType);\r
+                                }\r
+                            });\r
 \r
+                        }else {\r
 \r
-                        sendSMS(phonenumber, "skipmovecheck format error!");\r
+                            sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!");\r
+                        }\r
+                    } else {\r
+                        sendSMS(phonenumber, "WiFi Control format error!");\r
                     }\r
                 } else {\r
-                    sendSMS(phonenumber, "skipmovecheck format error!");\r
+                    sendSMS(phonenumber, "WiFi Control format error!");\r
                 }\r
             }else if(sms.startsWith("#logctl#=")){\r
                 String tmp[] = sms.split("=");\r
index 7cdea9d..dc33187 100644 (file)
@@ -20,7 +20,8 @@ public class Runtime {
   public int SignalStrength;\r
   \r
   private String battery="000";\r
-  \r
+\r
+  private int batteryVoltage=0;\r
   private boolean batteryLow;\r
   \r
   private boolean batterychanging;\r
@@ -208,7 +209,11 @@ public class Runtime {
   public boolean getAntioffStatus() { return this.isNeedAntioff; }\r
   \r
   public String getBattery() { return this.battery; }\r
-  \r
+\r
+  public int getBatteryVotage(){ return this.batteryVoltage;}\r
+  public void setBatteryVoltage(int voltage){\r
+      this.batteryVoltage=voltage;\r
+  }\r
   public boolean getBatteryLow() { return this.batteryLow; }\r
   \r
   public boolean getBatterychanging() { return this.batterychanging; }\r
index 9782885..fa8d55c 100644 (file)
@@ -41,6 +41,7 @@ import com.enqualcomm.support.utils.NettyConnection;
 import com.enqualcomm.support.utils.ServiceUtil;\r
 import com.enqualcomm.support.utils.SharPreferenceUtil;\r
 import com.enqualcomm.support.utils.SimSignalUtil;\r
+import com.enqualcomm.support.utils.Util;\r
 \r
 import java.util.ArrayList;\r
 import java.util.concurrent.LinkedBlockingDeque;\r
@@ -84,7 +85,7 @@ public class Deliver extends AbstractConnectionService {
 \r
   public static boolean is_active_location = false;\r
   \r
-  private PowerManager.WakeLock ReceiveWakeLock;\r
+  private static PowerManager.WakeLock ReceiveWakeLock;\r
   \r
   private Handler delayHandler;\r
   \r
@@ -96,14 +97,14 @@ public class Deliver extends AbstractConnectionService {
   \r
   private static Runtime mRuntime;\r
   \r
-  private boolean wakeLockWifiList = false;\r
+  private static boolean wakeLockWifiList = false;\r
   \r
-  private boolean wakeLockWifiSet = false;\r
+  private static boolean wakeLockWifiSet = false;\r
   \r
   private String wifiDataForCm;\r
 \r
 \r
-  private boolean wifiEnabled;\r
+  private static  boolean wifiEnabled;\r
 \r
   public static Runnable delaySendMSG;\r
 //  public static boolean sendingMsg=false;\r
@@ -409,14 +410,14 @@ public static void sendLocationMSG( String Msg){
     return false;\r
   }\r
   \r
-  public void releaseOneWakeLock() {\r
-    if (this.ReceiveWakeLock == null) {\r
+  public static void releaseOneWakeLock() {\r
+    if (ReceiveWakeLock == null) {\r
       Logger.i("ReceiveWakeLock 没有加锁");\r
       return;\r
     } \r
-    if (!this.wakeLockWifiList && !this.wakeLockWifiSet && this.ReceiveWakeLock.isHeld()) {\r
-      this.ReceiveWakeLock.release();\r
-      this.ReceiveWakeLock = null;\r
+    if (!wakeLockWifiList && !wakeLockWifiSet && ReceiveWakeLock.isHeld()) {\r
+      ReceiveWakeLock.release();\r
+      ReceiveWakeLock = null;\r
     } \r
   }\r
   \r
@@ -432,7 +433,36 @@ public static void sendLocationMSG( String Msg){
       this.ReceiveWakeLock = null;\r
     } \r
   }\r
-  \r
+  public static void connectToWifi(String ssid,String pwd,String encryptType){\r
+    int networkid;\r
+    final WifiManager wifiManager = mRuntime.getContextProxy().getWifiManager();\r
+    wifiEnabled = wifiManager.isWifiEnabled();\r
+    if (Util.isConnectWifi(mRuntime.getContextProxy().context)) {\r
+      networkid = wifiManager.getConnectionInfo().getNetworkId();\r
+      wifiManager.disconnect();\r
+      wifiManager.removeNetwork(networkid);\r
+      wifiManager.saveConfiguration();\r
+    }\r
+\r
+    Deliver.isAppSetWifi = 1;\r
+    WifiConfiguration wifiConfiguration = Util.GetconfigWifiInfo(mRuntime.getContextProxy().context, ssid, pwd, encryptType);\r
+    networkid = wifiConfiguration.networkId;\r
+    wifiManager.removeNetwork(networkid);\r
+    wifiManager.saveConfiguration();\r
+    networkid = wifiManager.addNetwork(wifiConfiguration);\r
+    if (Util.connectWifiByReflectMethod(mRuntime.getContextProxy().context, networkid) == null && !wifiManager.enableNetwork(networkid, true)) {\r
+      Logger.i("连接失败 3");\r
+      SystemClock.sleep(3000L);\r
+\r
+      wifiManager.setWifiEnabled(false);\r
+       wakeLockWifiSet = false;\r
+      releaseOneWakeLock();\r
+      WifiListWakeLock = Deliver.WakeLockForGetWifiList(mRuntime);\r
+\r
+      return;\r
+    }\r
+\r
+  }\r
   public void setWakeupAlarm(Runtime paramRuntime) {\r
     AlarmManager alarmManager = (AlarmManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE);\r
     Intent intent = new Intent((paramRuntime.getContextProxy()).context, CoreService.class);\r
index 1737bcd..8698d54 100644 (file)
@@ -33,6 +33,7 @@ public class BatteryUtil {
           int i = param1Intent.getIntExtra(EXTRA_LEVEL, 0) * 100 / param1Intent.getIntExtra(EXTRA_SCALE, 100);\r
           // 当前电池电压\r
           int batteryVolt = param1Intent.getIntExtra(EXTRA_VOLTAGE, -1);\r
+          BatteryUtil.this.mRuntime.setBatteryVoltage(batteryVolt);\r
           Logger.i("BatteryLevel "+i + " BatteryVotage "+batteryVolt);\r
           if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(),"Battery","BatteryLevel "+i + " BatteryVotage "+batteryVolt);\r
           if (i >= 100) {\r
index 3a03e4c..37968af 100644 (file)
@@ -196,7 +196,7 @@ public class DeviceInfoUtil {
             .append(" [").append(runtime.getSignalStrength()).append(",Mini:").append(SimSignalUtil.getMinSignalStrength(sim.getNetworkType())).append("]")\r
             .append("\n KeepAlive ").append(KeepAlive.isConnected).append(" , HBcycle ").append(runtime.getHeartBeatCycle())\r
             .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
-            .append(" \n Bat ").append(runtime.getBattery())\r
+            .append(" \n Bat ").append(runtime.getBattery()).append(",").append(runtime.getBatteryVotage())\r
             .append(" StepCount ").append(runtime.getTotalStepCount())\r
             .append( "\n Working Mode ").append(runtime.getLocationInstance().getWorkingMod())\r
             .append(" \n Location Cycle ").append(runtime.getLocationInstance().getLocation_cycle())\r
@@ -212,14 +212,12 @@ public class DeviceInfoUtil {
   public static String getShortDeviceInfo(Runtime runtime){\r
 \r
     SimSignalUtil sim=SimSignalUtil.getInstance(runtime.getContextProxy().context);\r
-    return new StringBuilder()\r
-            .append(DeviceInfoUtil.getSWVersionDisplayName()).append("\n")\r
-            .append(DeviceInfoUtil.getVersionCode(runtime.getContextProxy().context))\r
+    return new StringBuilder("Network ")\r
             .append(SimSignalUtil.hasSimCard(runtime.getContextProxy().context)?" ":" NoSIM ")\r
             .append(sim.getNetworkType()==SimSignalUtil.IS_2G?"2G":(sim.getNetworkType()==SimSignalUtil.IS_3G)?"3G":(sim.getNetworkType()==SimSignalUtil.IS_4G?"4G":"unknown"))\r
             .append("[").append(runtime.getSignalStrength()).append("]")\r
             .append("\nHeartbeat[").append(runtime.getSrvIP()).append(":").append(runtime.getPort()).append(",").append(runtime.isServerProtocolConnected()).append(",").append(runtime.getHeartBeatCycle())\r
-            .append("]\nBat").append(runtime.getBattery())\r
+            .append("]\nBat").append(runtime.getBattery()).append(",").append(runtime.getBatteryVotage())\r
             .append(",Step").append(runtime.getTotalStepCount())\r
             .append( "\nLocation[M").append(runtime.getLocationInstance().getWorkingMod())\r
             .append(",C").append(runtime.getLocationInstance().getLocation_cycle())\r
@@ -233,6 +231,13 @@ public class DeviceInfoUtil {
             .toString();\r
   }\r
 \r
+  public static String getDeviceVersion(Runtime runtime){\r
+    return new StringBuilder("Firmware ")\r
+            .append(DeviceInfoUtil.getSWVersionDisplayName()).append("\nProtocol ")\r
+            .append(DeviceInfoUtil.getVersionCode(runtime.getContextProxy().context))\r
+            .append("\nIMEI ").append(runtime.IMEI())\r
+            .toString();\r
+  }\r
   public static void setLockSimInfo(Context paramContext) {\r
     Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); }\r
 }\r
index 5bf8471..7d0a299 100644 (file)
@@ -172,80 +172,78 @@ public class Util {
     return str;\r
   }\r
 \r
-  public static WifiConfiguration GetconfigWifiInfo(Context context, String var1, String var2, String var3) {\r
-    WifiConfiguration var8;\r
-    label36: {\r
-      WifiManager var7 = (WifiManager)context.getSystemService(WIFI_SERVICE);\r
-      if (var7 != null) {\r
-        Iterator var4 = var7.getConfiguredNetworks().iterator();\r
-\r
-        while(var4.hasNext()) {\r
-          var8 = (WifiConfiguration)var4.next();\r
-          if (var8 != null) {\r
-            String var5 = var8.SSID;\r
-            StringBuilder var6 = new StringBuilder();\r
-            var6.append("\"");\r
-            var6.append(var1);\r
-            var6.append("\"");\r
-            if (var5.equals(var6.toString())) {\r
-              break label36;\r
+  public static WifiConfiguration GetconfigWifiInfo(Context context, String ssid, String pwd, String encryptType) {\r
+    WifiConfiguration wifiConfiguration=null;\r
+    StringBuilder stringBuilder;\r
+      WifiManager wifiManager = (WifiManager)context.getSystemService(WIFI_SERVICE);\r
+      if (wifiManager != null && wifiManager.getConfiguredNetworks()!=null) {\r
+        Iterator it = wifiManager.getConfiguredNetworks().iterator();\r
+\r
+        while(it.hasNext()) {\r
+          wifiConfiguration = (WifiConfiguration)it.next();\r
+          if (wifiConfiguration != null) {\r
+            String ssid_tmp = wifiConfiguration.SSID;\r
+            stringBuilder= new StringBuilder();\r
+            stringBuilder.append("\"");\r
+            stringBuilder.append(ssid);\r
+            stringBuilder.append("\"");\r
+            if (ssid_tmp.equals(stringBuilder.toString())) {\r
+              return wifiConfiguration;\r
             }\r
           }\r
         }\r
       }\r
 \r
-      var8 = null;\r
-    }\r
 \r
-    WifiConfiguration var12 = var8;\r
-    if (var8 == null) {\r
-      var12 = new WifiConfiguration();\r
+\r
+    WifiConfiguration retWiFiConfigration = wifiConfiguration;\r
+    if (retWiFiConfigration == null) {\r
+      retWiFiConfigration = new WifiConfiguration();\r
     }\r
 \r
-    var12.allowedAuthAlgorithms.clear();\r
-    var12.allowedGroupCiphers.clear();\r
-    var12.allowedKeyManagement.clear();\r
-    var12.allowedPairwiseCiphers.clear();\r
-    var12.allowedProtocols.clear();\r
-    StringBuilder var10 = new StringBuilder();\r
-    var10.append("\"");\r
-    var10.append(var1);\r
-    var10.append("\"");\r
-    var12.SSID = var10.toString();\r
-    if ("none".equals(var3)) {\r
-      var12.allowedKeyManagement.set(0);\r
-    } else if ("wep".equals(var3)) {\r
-      var12.hiddenSSID = true;\r
-      String[] var11 = var12.wepKeys;\r
-      StringBuilder var9 = new StringBuilder();\r
-      var9.append("\"");\r
-      var9.append(var2);\r
-      var9.append("\"");\r
-      var11[0] = var9.toString();\r
-      var12.allowedAuthAlgorithms.set(1);\r
-      var12.allowedGroupCiphers.set(3);\r
-      var12.allowedGroupCiphers.set(2);\r
-      var12.allowedGroupCiphers.set(0);\r
-      var12.allowedGroupCiphers.set(1);\r
-      var12.allowedKeyManagement.set(0);\r
-      var12.wepTxKeyIndex = 0;\r
-    } else if ("psk".equals(var3)) {\r
-      var10 = new StringBuilder();\r
-      var10.append("\"");\r
-      var10.append(var2);\r
-      var10.append("\"");\r
-      var12.preSharedKey = var10.toString();\r
-      var12.hiddenSSID = true;\r
-      var12.allowedAuthAlgorithms.set(0);\r
-      var12.allowedGroupCiphers.set(2);\r
-      var12.allowedKeyManagement.set(1);\r
-      var12.allowedPairwiseCiphers.set(1);\r
-      var12.allowedGroupCiphers.set(3);\r
-      var12.allowedPairwiseCiphers.set(2);\r
-      var12.status = 2;\r
+    retWiFiConfigration.allowedAuthAlgorithms.clear();\r
+    retWiFiConfigration.allowedGroupCiphers.clear();\r
+    retWiFiConfigration.allowedKeyManagement.clear();\r
+    retWiFiConfigration.allowedPairwiseCiphers.clear();\r
+    retWiFiConfigration.allowedProtocols.clear();\r
+    stringBuilder = new StringBuilder();\r
+    stringBuilder.append("\"");\r
+    stringBuilder.append(ssid);\r
+    stringBuilder.append("\"");\r
+    retWiFiConfigration.SSID = stringBuilder.toString();\r
+    if ("none".equals(encryptType)) {\r
+      retWiFiConfigration.allowedKeyManagement.set(0);\r
+    } else if ("wep".equals(encryptType)) {\r
+      retWiFiConfigration.hiddenSSID = true;\r
+      stringBuilder = new StringBuilder();\r
+      stringBuilder.append("\"");\r
+      stringBuilder.append(pwd);\r
+      stringBuilder.append("\"");\r
+      retWiFiConfigration.wepKeys[0] = stringBuilder.toString();\r
+      retWiFiConfigration.allowedAuthAlgorithms.set(1);\r
+      retWiFiConfigration.allowedGroupCiphers.set(3);\r
+      retWiFiConfigration.allowedGroupCiphers.set(2);\r
+      retWiFiConfigration.allowedGroupCiphers.set(0);\r
+      retWiFiConfigration.allowedGroupCiphers.set(1);\r
+      retWiFiConfigration.allowedKeyManagement.set(0);\r
+      retWiFiConfigration.wepTxKeyIndex = 0;\r
+    } else if ("psk".equals(encryptType)) {\r
+      stringBuilder = new StringBuilder();\r
+      stringBuilder.append("\"");\r
+      stringBuilder.append(pwd);\r
+      stringBuilder.append("\"");\r
+      retWiFiConfigration.preSharedKey = stringBuilder.toString();\r
+      retWiFiConfigration.hiddenSSID = true;\r
+      retWiFiConfigration.allowedAuthAlgorithms.set(0);\r
+      retWiFiConfigration.allowedGroupCiphers.set(2);\r
+      retWiFiConfigration.allowedKeyManagement.set(1);\r
+      retWiFiConfigration.allowedPairwiseCiphers.set(1);\r
+      retWiFiConfigration.allowedGroupCiphers.set(3);\r
+      retWiFiConfigration.allowedPairwiseCiphers.set(2);\r
+      retWiFiConfigration.status = 2;\r
     }\r
 \r
-    return var12;\r
+    return retWiFiConfigration;\r
   }\r
 \r
   public static String byte2hex(byte[] var0) {\r