From 2030319491d249a032920a027e1124e9fab07468 Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Fri, 10 May 2024 22:26:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=92=8C=E6=9B=B4=E6=96=B0ap?= =?UTF-8?q?p=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xypower/mpmaster/MainActivity.java | 3 + .../xypower/mpmaster/sms/DownloadUtils.java | 4 + .../com/xypower/mpmaster/sms/SimUtil.java | 141 ++++++++++++--- .../com/xypower/mpmaster/sms/SmsTypeEnum.java | 4 +- .../mpmaster/sms/UpdateSysConfigUtil.java | 160 +++++++++--------- 5 files changed, 211 insertions(+), 101 deletions(-) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java b/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java index 56b297c7..1675cea6 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java @@ -24,6 +24,7 @@ import android.widget.TextView; import com.dev.devapi.api.SysApi; import com.xypower.common.HotspotManager; import com.xypower.common.MicroPhotoContext; +import com.xypower.mpmaster.sms.DownloadUtils; import java.io.IOException; import java.text.SimpleDateFormat; @@ -171,6 +172,8 @@ public class MainActivity extends AppCompatActivity { // SysApi.reboot(MainActivity.this); + DownloadUtils downloadUtils = new DownloadUtils(getApplicationContext(), "http://180.166.218.222:40101/upgrades/20240509_upd_663c857dbfcf7.apk", "test.apk"); + } }); diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/sms/DownloadUtils.java b/mpmaster/src/main/java/com/xypower/mpmaster/sms/DownloadUtils.java index 004133fa..099d490e 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/sms/DownloadUtils.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/sms/DownloadUtils.java @@ -10,6 +10,8 @@ import android.net.Uri; import android.os.Environment; import android.widget.Toast; +import com.dev.devapi.api.SysApi; + import java.io.File; public class DownloadUtils { @@ -83,6 +85,8 @@ public class DownloadUtils { //下载完成安装APK // installAPK(); cursor.close(); + mContext.unregisterReceiver(receiver); + SysApi.installApk(mContext, name, mContext.getPackageName(), true); break; //下载失败 case DownloadManager.STATUS_FAILED: diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/sms/SimUtil.java b/mpmaster/src/main/java/com/xypower/mpmaster/sms/SimUtil.java index abbe452b..27cecfcc 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/sms/SimUtil.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/sms/SimUtil.java @@ -57,7 +57,7 @@ public class SimUtil { String sender = smsInfo.getSender();//收到的短信的手机号 String sendmessage = "";//要回复的短信 String sendtype = "";//收到的短信类型 - JSONArray jsonArray = new JSONArray();//收到的短信内容拆分包装成数组 + List abslist = new ArrayList<>();//收到的短信内容拆分包装成数组 boolean ifmessageCorrect = false;//用来判断收到的短信内容是否正确 if (StringUtils.isEmpty(content)) { return; @@ -104,14 +104,13 @@ public class SimUtil { break; } times += time * 60; - jsonArray.put(times); + abslist.add(times); } } - } } if (ifmessageCorrect) { - UpdateSysConfigUtil.setAbsHeartbeats(packageName, jsonArray); + UpdateSysConfigUtil.setAbsHeartbeats(context, abslist); } } } @@ -127,19 +126,15 @@ public class SimUtil { sendtype = SmsTypeEnum.SET_YW_SCHEDULE.value(); } else if (content.contains(SmsTypeEnum.GET_YW_SCHEDULE.value())) { ifmessageCorrect = true; - JSONArray absHeartbeats = UpdateSysConfigUtil.getAbsHeartbeats(packageName); - if (absHeartbeats == null || absHeartbeats.length() == 0) { + List absHeartbeats = UpdateSysConfigUtil.getAbsHeartbeats(context); + if (absHeartbeats == null || absHeartbeats.size() == 0) { sendmessage = SmsTypeEnum.GET_YW_SCHEDULE.value() + "=0"; } else { - int length = absHeartbeats.length(); + int length = absHeartbeats.size(); sendmessage = SmsTypeEnum.GET_YW_SCHEDULE.value() + "=" + length; for (int i = 0; i < length; i++) { int mAbsHeartbeatTime = 0; - try { - mAbsHeartbeatTime = absHeartbeats.getInt(i); - } catch (JSONException e) { - throw new RuntimeException(e); - } + mAbsHeartbeatTime = absHeartbeats.get(i); int hour = mAbsHeartbeatTime / 3600; int leftsecond = mAbsHeartbeatTime % 3600; int minute = leftsecond / 3600; @@ -155,7 +150,7 @@ public class SimUtil { if (integer != null) { if (integer == 0 || integer == 1) { ifmessageCorrect = true; - UpdateSysConfigUtil.setMntnMode(packageName, integer); + UpdateSysConfigUtil.setMntnMode(context, integer); } } } @@ -169,7 +164,7 @@ public class SimUtil { } else if (content.contains(SmsTypeEnum.GET_OPERATE.value())) { sendtype = SmsTypeEnum.GET_OPERATE.value(); ifmessageCorrect = true; - int mntnMode = UpdateSysConfigUtil.getMntnMode(packageName); + int mntnMode = UpdateSysConfigUtil.getMntnMode(context); sendmessage = SmsTypeEnum.GET_OPERATE + "=" + mntnMode; } else if (content.contains(SmsTypeEnum.SET_OPERATE_URL.value())) { sendtype = SmsTypeEnum.SET_OPERATE_URL.value(); @@ -185,7 +180,7 @@ public class SimUtil { Integer integer = StringUtils.convert2Int(port); if (integer != null) { ifmessageCorrect = true; - UpdateSysConfigUtil.setMntnServer(packageName, ipAddress, integer); + UpdateSysConfigUtil.setMntnServer(context, ipAddress, integer); } } } @@ -200,16 +195,67 @@ public class SimUtil { } else if (content.contains(SmsTypeEnum.GET_OPERATE_URL.value())) { sendtype = SmsTypeEnum.GET_OPERATE.value(); ifmessageCorrect = true; - String mntnServer = UpdateSysConfigUtil.getMntnServer(packageName); + String mntnServer = UpdateSysConfigUtil.getMntnServer(context); sendmessage = SmsTypeEnum.GET_OPERATE + "=" + mntnServer; } else if (content.contains(SmsTypeEnum.UPDATE.value())) { sendtype = SmsTypeEnum.UPDATE.value(); - String[] split1 = StringUtils.splitString1(content); if (split1 != null && split1.length == 2) { ifmessageCorrect = true; String s = split1[1]; - + DownloadUtils downloadUtils = new DownloadUtils(context.getApplicationContext(), s, "test.app"); + } + String menssageBack = ""; + if (ifmessageCorrect) { + menssageBack = " OK"; + } else { + menssageBack = " ERROR"; + } + sendmessage = content + menssageBack; + } else if (content.contains(SmsTypeEnum.SET_CMDID.value())) { + sendtype = SmsTypeEnum.SET_CMDID.value(); + String[] split1 = StringUtils.splitString1(content); + if (split1 != null && split1.length > 1) { + String cmdid = split1[1]; + UpdateSysConfigUtil.setCmdid(context, cmdid); + } + String menssageBack = ""; + if (ifmessageCorrect) { + menssageBack = " OK"; + } else { + menssageBack = " ERROR"; + } + sendmessage = content + menssageBack; + } else if (content.contains(SmsTypeEnum.GET_CMDID.value())) { + sendtype = SmsTypeEnum.GET_CMDID.value(); + ifmessageCorrect = true; + String cmdid = UpdateSysConfigUtil.getCmdid(context); + sendmessage = SmsTypeEnum.GET_OPERATE + "=" + cmdid; + } else if (content.contains(SmsTypeEnum.SET_IP.value())) { + sendtype = SmsTypeEnum.SET_IP.value(); + String[] split1 = StringUtils.splitString1(content); + if (split1 != null && split1.length > 1) { + String s = split1[1]; + String[] split2 = StringUtils.splitString1(s); + if (split2 != null && (split2.length == 2 || split2.length == 4)) { + String server; + Integer integer; + server = split2[0]; + String port = split2[1]; + integer = StringUtils.convert2Int(port); + int utcp = -1; + int encrypto = -1; + if (integer != null) { + ifmessageCorrect = true; + } + if (split2.length == 4) { + String s1 = split2[2]; + utcp = StringUtils.convert2Int(s1); + String s2 = split2[3]; + encrypto = StringUtils.convert2Int(s2); + } + UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto); + } } String menssageBack = ""; if (ifmessageCorrect) { @@ -218,8 +264,61 @@ public class SimUtil { menssageBack = " ERROR"; } sendmessage = content + menssageBack; + } else if (content.contains(SmsTypeEnum.GET_IP.value())) { + sendtype = SmsTypeEnum.GET_IP.value(); + ifmessageCorrect = true; + String ip = UpdateSysConfigUtil.getIP(context); + sendmessage = SmsTypeEnum.GET_IP + "=" + ip; + } else if (content.contains(SmsTypeEnum.SET_OSD.value())) { + //TODO 水印功能待开发 + sendtype = SmsTypeEnum.SET_OSD.value(); + String[] split1 = StringUtils.splitString1(content); + if (split1 != null && split1.length > 1) { + String s = split1[1]; + String[] split2 = StringUtils.splitString1(s); + if (split2 != null && split2.length == 2) { +// UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto); + } + } + String menssageBack = ""; + if (ifmessageCorrect) { + menssageBack = " OK"; + } else { + menssageBack = " ERROR"; + } + sendmessage = content + menssageBack; + } else if (content.contains(SmsTypeEnum.GET_OSD.value())) { + //TODO 水印功能待开发 + sendtype = SmsTypeEnum.GET_OSD.value(); + ifmessageCorrect = true; +// String ip = UpdateSysConfigUtil.getIP(context); +// sendmessage = SmsTypeEnum.GET_OSD + "=" + ip; + }else if (content.contains(SmsTypeEnum.SET_PHOTO_SCHEDULE_LIST.value())) { + //TODO 水印功能待开发 + sendtype = SmsTypeEnum.SET_OSD.value(); + String[] split1 = StringUtils.splitString1(content); + if (split1 != null && split1.length > 1) { + String s = split1[1]; + String[] split2 = StringUtils.splitString1(s); + if (split2 != null && split2.length == 2) { +// UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto); + } + } + String menssageBack = ""; + if (ifmessageCorrect) { + menssageBack = " OK"; + } else { + menssageBack = " ERROR"; + } + sendmessage = content + menssageBack; + } else if (content.contains(SmsTypeEnum.GET_OSD.value())) { + //TODO 水印功能待开发 + sendtype = SmsTypeEnum.GET_OSD.value(); + ifmessageCorrect = true; +// String ip = UpdateSysConfigUtil.getIP(context); +// sendmessage = SmsTypeEnum.GET_OSD + "=" + ip; } - sendSms(context, slot, sender, sendmessage, sendtype, ifmessageCorrect, jsonArray); + sendSms(context, slot, sender, sendmessage, sendtype, ifmessageCorrect); } } @@ -301,7 +400,7 @@ public class SimUtil { } //指定sim卡位置发送短信 - public static void sendSms(Context mContext, int slot, String sender, String message, String value, boolean ifmessageCorrect, JSONArray jsonArray) { + public static void sendSms(Context mContext, int slot, String sender, String message, String value, boolean ifmessageCorrect) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { SubscriptionManager localSubscriptionManager = SubscriptionManager.from(mContext); if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { @@ -321,7 +420,7 @@ public class SimUtil { Intent itSend = new Intent(SMS_SEND_ACTION); itSend.putExtra(SMSTYPE, value); itSend.putExtra(SMSIFCORRECT, ifmessageCorrect); - itSend.putExtra(SMSDATA, (Serializable) jsonArray); +// itSend.putExtra(SMSDATA, (Serializable) jsonArray); //sendIntent参数为传送后接受的广播信息PendingIntent PendingIntent sendPI = PendingIntent.getBroadcast(mContext, 0, itSend, 0); diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/sms/SmsTypeEnum.java b/mpmaster/src/main/java/com/xypower/mpmaster/sms/SmsTypeEnum.java index 170be531..7aa19dfa 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/sms/SmsTypeEnum.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/sms/SmsTypeEnum.java @@ -10,10 +10,10 @@ public enum SmsTypeEnum { GET_OPERATE_URL("yw+at+str53"), //查询运维地址 ADB("yw+at+ds"), //开关adb UPDATE("yw+at+update"), //远程升级 - READ_CMDID("at+str01"), //读取设备编号 + GET_CMDID("at+str01"), //读取设备编号 SET_CMDID("at+stw01"), //设置设备编号 SET_IP("at+stw05"), //设置主站IP - READ_IP("at+str05"), //读取主站IP端口 + GET_IP("at+str05"), //读取主站IP端口 SET_AI("yw+at+stw61"), //设置ai识别是否可用 0是不启用,1是启用 GET_AI("yw+at+stw62"), //查询ai识别是否可用 0是不启用,1是启用 SET_AI_BOARD("yw+at+stw63"), //设置ai画框是否可用 0是不启用,1是启用 diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/sms/UpdateSysConfigUtil.java b/mpmaster/src/main/java/com/xypower/mpmaster/sms/UpdateSysConfigUtil.java index 10739fc4..b1cbf6f9 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/sms/UpdateSysConfigUtil.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/sms/UpdateSysConfigUtil.java @@ -1,115 +1,119 @@ package com.xypower.mpmaster.sms; +import android.content.Context; import android.os.Environment; import com.xypower.common.JSONUtils; +import com.xypower.common.MicroPhotoContext; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class UpdateSysConfigUtil { - public static String SysConfigName = "data/Master.json"; - - //创建运维配置文件文件夹 - public static String buildAppDir(String packageurl) { - String path = Environment.getExternalStorageDirectory().getAbsolutePath(); - if (!path.endsWith(File.separator)) { - path += File.separator; - } - path += packageurl + File.separator; - File pathFile = new File(path); - if (!pathFile.exists() && !pathFile.mkdirs()) { - return null; - } - return path; - } - - //获取配置文件地址 - public static String getAppDir(String packageurl) { - String path = buildAppDir(packageurl); - path += SysConfigName; - return path; - } //修改运维时间表 - public static boolean setAbsHeartbeats(String packageurl, JSONArray jsonArray) { - String path = getAppDir(packageurl); - JSONObject jsonObject = JSONUtils.loadJson(path); - try { - jsonObject.put("absHeartbeats", jsonArray); - } catch (JSONException e) { - throw new RuntimeException(e); + public static void setAbsHeartbeats(Context context, List list) { + MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); + int[] array = new int[list.size()]; + if (list != null && list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + array[i] = list.get(i); + } } - return JSONUtils.saveJson(path, jsonObject); + masterConfig.absHeartbeats = array; + MicroPhotoContext.saveMasterConfig(context, masterConfig); } //获取运维时间表 - public static JSONArray getAbsHeartbeats(String packageurl) { - JSONArray absHeartbeats = new JSONArray(); - String path = getAppDir(packageurl); - JSONObject jsonObject = JSONUtils.loadJson(path); - try { - absHeartbeats = jsonObject.getJSONArray("absHeartbeats"); - } catch (JSONException e) { - throw new RuntimeException(e); + public static List getAbsHeartbeats(Context context) { + MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); + ArrayList list = new ArrayList<>(); + int[] absHeartbeats = masterConfig.absHeartbeats; + if (absHeartbeats != null && absHeartbeats.length > 0) { + for (int i = 0; i < absHeartbeats.length; i++) { + list.add(absHeartbeats[i]); + } } - return absHeartbeats; + return list; } //修改运维状态 TODO - public static boolean setMntnMode(String packageurl, int mntnMode) { - String path = getAppDir(packageurl); - JSONObject jsonObject = JSONUtils.loadJson(path); - try { - jsonObject.put("mntnMode", mntnMode); - } catch (Exception ex) { - ex.printStackTrace(); - } - return JSONUtils.saveJson(path, jsonObject); + public static void setMntnMode(Context context, int mntnMode) { + MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); + masterConfig.mntnMode = mntnMode; + MicroPhotoContext.saveMasterConfig(context, masterConfig); } //查询运维状态 TODO - public static int getMntnMode(String packageurl) { - int mntnMode = -1; - String path = getAppDir(packageurl); - JSONObject jsonObject = JSONUtils.loadJson(path); - try { - mntnMode = jsonObject.getInt("mntnMode"); - } catch (Exception ex) { - ex.printStackTrace(); - } - return mntnMode; + public static int getMntnMode(Context context) { + MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); + return masterConfig.mntnMode; } //修改运维状态 TODO - public static boolean setMntnServer(String packageurl, String server, int port) { - String path = getAppDir(packageurl); - JSONObject jsonObject = JSONUtils.loadJson(path); - try { - jsonObject.put("server", server); - jsonObject.put("port", port); - } catch (Exception ex) { - ex.printStackTrace(); - } - return JSONUtils.saveJson(path, jsonObject); + public static void setMntnServer(Context context, String server, int port) { + MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); + masterConfig.server = server; + masterConfig.port = port; + MicroPhotoContext.saveMasterConfig(context, masterConfig); } //查询运维状态 TODO - public static String getMntnServer(String packageurl) { + public static String getMntnServer(Context context) { String server = ""; - int port = 0; - String path = getAppDir(packageurl); - JSONObject jsonObject = JSONUtils.loadJson(path); - try { - server = jsonObject.getString("server"); - port = jsonObject.getInt("port"); - } catch (Exception ex) { - ex.printStackTrace(); - } + int port; + MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); + server = masterConfig.server; + port = masterConfig.port; return server + "," + port; } + + + //修改cmdid TODO + public static void setCmdid(Context context, String cmdid) { + MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context); + mpAppConfig.cmdid = cmdid; + MicroPhotoContext.saveMpAppConfig(context, mpAppConfig); + } + + + //查询cmdid TODO + public static String getCmdid(Context context) { + MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context); + return mpAppConfig.cmdid; + } + + //修改app的ip TODO + public static void setIP(Context context, String server, int port, int utcp, int encrypto) { + MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context); + mpAppConfig.server = server; + mpAppConfig.port = port; + if (utcp != -1) { + mpAppConfig.networkProtocol = utcp; + } + if (encrypto != -1) { + mpAppConfig.encryption = encrypto; + } + MicroPhotoContext.saveMpAppConfig(context, mpAppConfig); + } + + + //查询cmdid TODO + public static String getIP(Context context) { + MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context); + String server = mpAppConfig.server; + int port = mpAppConfig.port; + int networkProtocol = mpAppConfig.networkProtocol; + int encryption = mpAppConfig.encryption; + return server + "," + port + "," + networkProtocol + "," + encryption; + } + + }