短信启动测试OK

修改Android11短信发送sim卡错位的bug
修改接收短信的bug
serial
liuguijing 1 year ago
parent 2030319491
commit f1945e07b4

@ -19,6 +19,8 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.List;
public class MicroPhotoContext {
@ -435,8 +437,7 @@ public class MicroPhotoContext {
public static String getVersionName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().
getPackageInfo(context.getPackageName(), 0).versionName;
verName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
@ -446,8 +447,7 @@ public class MicroPhotoContext {
public static int getVersionCode(Context context) {
int versionCode = 0;
try {
versionCode = context.getPackageManager().
getPackageInfo(context.getPackageName(), 0).versionCode;
versionCode = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
@ -455,4 +455,6 @@ public class MicroPhotoContext {
}
}

@ -42,8 +42,11 @@ import com.xypower.mpmaster.sms.SmsSendReceiver;
import org.json.JSONObject;
import java.io.File;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.logging.FileHandler;
@ -542,9 +545,8 @@ public class MpMasterService extends Service {
Arrays.sort(mAbsHeartbeatTimes);
for (int i = 0; i < mAbsHeartbeatTimes.length; i++) {
int mAbsHeartbeatTime = mAbsHeartbeatTimes[i];
int hour = mAbsHeartbeatTime / 3600;
int leftsecond = mAbsHeartbeatTime % 3600;
int minute = leftsecond / 3600;
int hour = mAbsHeartbeatTime / 60;
int minute = mAbsHeartbeatTime % 60;
if (hour >= 24) {
return;
}

@ -27,6 +27,7 @@ import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.TimeZone;
@ -55,7 +56,7 @@ public class SimUtil {
String content = smsInfo.getContent();
int slot = smsInfo.getSlot();//那张卡收到的短信
String sender = smsInfo.getSender();//收到的短信的手机号
String sendmessage = "";//要回复的短信
String sendmessage = "ERROR";//要回复的短信
String sendtype = "";//收到的短信类型
List<Integer> abslist = new ArrayList<>();//收到的短信内容拆分包装成数组
boolean ifmessageCorrect = false;//用来判断收到的短信内容是否正确
@ -97,13 +98,13 @@ public class SimUtil {
ifmessageCorrect = false;
break;
}
times = time * 3600;
times = time * 60;
} else {
if (time > 59) {
ifmessageCorrect = false;
break;
}
times += time * 60;
times += time;
abslist.add(times);
}
}
@ -135,9 +136,9 @@ public class SimUtil {
for (int i = 0; i < length; i++) {
int mAbsHeartbeatTime = 0;
mAbsHeartbeatTime = absHeartbeats.get(i);
int hour = mAbsHeartbeatTime / 3600;
int leftsecond = mAbsHeartbeatTime % 3600;
int minute = leftsecond / 3600;
int hour = mAbsHeartbeatTime / 60;
// int leftsecond = mAbsHeartbeatTime % 60;
int minute = mAbsHeartbeatTime % 60;
sendmessage += "," + hour + "," + minute;
}
}
@ -171,7 +172,7 @@ public class SimUtil {
String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length > 1) {
String s = split1[1];
String[] split2 = StringUtils.splitString1(s);
String[] split2 = StringUtils.splitString2(s);
if (split2 != null && split2.length == 2) {
String ipAddress = split2[0];
String port = split2[1];
@ -236,7 +237,7 @@ public class SimUtil {
String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length > 1) {
String s = split1[1];
String[] split2 = StringUtils.splitString1(s);
String[] split2 = StringUtils.splitString2(s);
if (split2 != null && (split2.length == 2 || split2.length == 4)) {
String server;
Integer integer;
@ -270,14 +271,12 @@ public class SimUtil {
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);
String[] split2 = StringUtils.splitString2(s);
if (split2 != null && split2.length == 2) {
// UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto);
}
}
String menssageBack = "";
@ -288,20 +287,15 @@ public class SimUtil {
}
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 水印功能待开发
} else if (content.contains(SmsTypeEnum.SET_PHOTO_SCHEDULE_LIST.value())) {
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 = "";
@ -311,12 +305,143 @@ public class SimUtil {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.GET_OSD.value())) {
//TODO 水印功能待开发
sendtype = SmsTypeEnum.GET_OSD.value();
} else if (content.contains(SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value())) {
sendtype = SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value();
ifmessageCorrect = true;
} else if (content.contains(SmsTypeEnum.SET_RESOLUTION.value())) {
sendtype = SmsTypeEnum.SET_RESOLUTION.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 == 5) {
Integer channel = StringUtils.convert2Int(split2[0]);
Integer resolutionCX = StringUtils.convert2Int(split2[1]);
Integer resolutionCY = StringUtils.convert2Int(split2[2]);
Integer videoCX = StringUtils.convert2Int(split2[3]);
Integer videoCY = StringUtils.convert2Int(split2[4]);
if (channel != null && resolutionCX != null && resolutionCY != null && videoCX != null && videoCY != null) {
ifmessageCorrect = true;
UpdateSysConfigUtil.setChannelResolution(packageName, channel, resolutionCX, resolutionCY, videoCX, videoCY);
}
}
}
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.GET_RESOLUTION.value())) {
sendtype = SmsTypeEnum.GET_RESOLUTION.value();
ifmessageCorrect = true;
String[] split = StringUtils.splitString1(content);
Integer channel = StringUtils.convert2Int(split[0]);
HashMap<String, Integer> hashMap = UpdateSysConfigUtil.getChannelResolution(packageName, channel);
Integer resolutionCX = hashMap.get("resolutionCX");
Integer resolutionCY = hashMap.get("resolutionCY");
Integer videoCX = hashMap.get("videoCX");
Integer videoCY = hashMap.get("videoCY");
sendmessage = SmsTypeEnum.GET_RESOLUTION.value() + "=" + resolutionCX + "," + resolutionCY + "," + videoCX + "," + videoCY;
} else if (content.contains(SmsTypeEnum.SET_HEART.value())) {
sendtype = SmsTypeEnum.SET_HEART.value();
String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length == 2) {
ifmessageCorrect = true;
// String ip = UpdateSysConfigUtil.getIP(context);
// sendmessage = SmsTypeEnum.GET_OSD + "=" + ip;
String s = split1[1];
Integer integer = StringUtils.convert2Int(s);
UpdateSysConfigUtil.setHB(context, integer);
}
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.GET_HEART.value())) {
sendtype = SmsTypeEnum.GET_HEART.value();
ifmessageCorrect = true;
int hb = UpdateSysConfigUtil.getHB(context);
sendmessage = SmsTypeEnum.GET_HEART.value() + "=" + hb;
} else if (content.contains(SmsTypeEnum.SET_TP.value())) {
sendtype = SmsTypeEnum.SET_TP.value();
String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length == 2) {
ifmessageCorrect = true;
String s = split1[1];
Integer integer = StringUtils.convert2Int(s);
UpdateSysConfigUtil.setTB(context, integer);
}
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.GET_TP.value())) {
sendtype = SmsTypeEnum.GET_TP.value();
ifmessageCorrect = true;
String[] split = StringUtils.splitString1(content);
int tb = UpdateSysConfigUtil.getTB(context);
sendmessage = SmsTypeEnum.GET_TP.value() + "=" + tb;
} else if (content.contains(SmsTypeEnum.SET_PACKAGE.value())) {
sendtype = SmsTypeEnum.SET_PACKAGE.value();
String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length == 2) {
ifmessageCorrect = true;
String s = split1[1];
Integer integer = StringUtils.convert2Int(s);
UpdateSysConfigUtil.setPackage(context, integer);
}
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.GET_PACKAGE.value())) {
sendtype = SmsTypeEnum.GET_PACKAGE.value();
ifmessageCorrect = true;
int aPackage = UpdateSysConfigUtil.getPackage(context);
sendmessage = SmsTypeEnum.GET_PACKAGE.value() + "=" + aPackage;
} else if (content.contains(SmsTypeEnum.CLEAR_PHOTO.value())) {
sendtype = SmsTypeEnum.CLEAR_PHOTO.value();
ifmessageCorrect = true;
UpdateSysConfigUtil.clearHistoryPic(context);
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.CLEAR_LOG.value())) {
sendtype = SmsTypeEnum.CLEAR_LOG.value();
ifmessageCorrect = true;
UpdateSysConfigUtil.clearHistoryLogs(context);
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
} else if (content.contains(SmsTypeEnum.CLEAR_ALL.value())) {
sendtype = SmsTypeEnum.CLEAR_ALL.value();
ifmessageCorrect = true;
UpdateSysConfigUtil.clearHistoryPic(context);
UpdateSysConfigUtil.clearHistoryLogs(context);
String menssageBack = "";
if (ifmessageCorrect) {
menssageBack = " OK";
} else {
menssageBack = " ERROR";
}
sendmessage = content + menssageBack;
}
sendSms(context, slot, sender, sendmessage, sendtype, ifmessageCorrect);
}
@ -330,7 +455,7 @@ public class SimUtil {
if (SMS_RECEIVED_ACTION.equals(action) || SMS_DELIVER_ACTION.equals(action)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
String content = "";
StringBuilder content = new StringBuilder();
String sender = "";
String dateContent = "";
Object[] pdus = (Object[]) bundle.get("pdus");
@ -341,7 +466,7 @@ public class SimUtil {
messages[i] = SmsMessage.createFromPdu(pdu);
}
for (SmsMessage message : messages) {
content = message.getMessageBody();// 得到短信内容
content.append(message.getMessageBody());// 得到短信内容
// 得到发信息的号码
sender = message.getOriginatingAddress();
Date date = new Date(message.getTimestampMillis());
@ -350,7 +475,7 @@ public class SimUtil {
dateContent = format.format(date);
}
int smsSlot = getSmsSlot(bundle);
smsMessageModel.setContent(content);
smsMessageModel.setContent(content.toString());
smsMessageModel.setSender(sender);
smsMessageModel.setDateContent(dateContent);
smsMessageModel.setSlot(smsSlot);
@ -387,6 +512,9 @@ public class SimUtil {
case "slotIdx":
slot = bundle.getInt("slotIdx", -1);
break;
case "android.telephony.extra.SLOT_INDEX":
slot = bundle.getInt("android.telephony.extra.SLOT_INDEX", -1);
break;
default:
if (key.toLowerCase().contains("slot") | key.toLowerCase().contains("sim")) {
String value = bundle.getString(key, "-1");

@ -26,16 +26,7 @@ public class SmsSendReceiver extends BroadcastReceiver {
SysApi.reboot(context);
} else if (type.contains(SmsTypeEnum.REBOOT2.value())) {
SysApi.reboot(context);
}
// else if (type.contains(SmsTypeEnum.SET_YW_SCHEDULE.value())) {
// if (jsonArray != null) {
// String packageName = context.getApplicationContext().getPackageName();
// UpdateSysConfigUtil.setAbsHeartbeats(packageName, jsonArray);
// }
// }
}
}

@ -1,8 +1,12 @@
package com.xypower.mpmaster.sms;
import static com.xypower.common.MicroPhotoContext.PACKAGE_NAME_MPAPP;
import static com.xypower.common.MicroPhotoContext.buildMpAppDir;
import android.content.Context;
import android.os.Environment;
import com.xypower.common.FileUtils;
import com.xypower.common.JSONUtils;
import com.xypower.common.MicroPhotoContext;
@ -13,10 +17,34 @@ import org.json.JSONObject;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class UpdateSysConfigUtil {
public static final String PACKAGE_NAME_MPAPP = "com.xypower.mpapp";
//创建运维配置文件文件夹
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 getChannelDir(int channel) {
String appPath = buildAppDir(PACKAGE_NAME_MPAPP);
String path = appPath + "data/channels/" + channel + ".json";
return path;
}
//修改运维时间表
public static void setAbsHeartbeats(Context context, List<Integer> list) {
@ -44,20 +72,20 @@ public class UpdateSysConfigUtil {
return list;
}
//修改运维状态 TODO
//修改运维状态
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(Context context) {
MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context);
return masterConfig.mntnMode;
}
//修改运维状态 TODO
//修改运维状态
public static void setMntnServer(Context context, String server, int port) {
MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context);
masterConfig.server = server;
@ -65,7 +93,7 @@ public class UpdateSysConfigUtil {
MicroPhotoContext.saveMasterConfig(context, masterConfig);
}
//查询运维状态 TODO
//查询运维状态
public static String getMntnServer(Context context) {
String server = "";
int port;
@ -76,7 +104,7 @@ public class UpdateSysConfigUtil {
}
//修改cmdid TODO
//修改cmdid
public static void setCmdid(Context context, String cmdid) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
mpAppConfig.cmdid = cmdid;
@ -84,13 +112,13 @@ public class UpdateSysConfigUtil {
}
//查询cmdid TODO
//查询cmdid
public static String getCmdid(Context context) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
return mpAppConfig.cmdid;
}
//修改app的ip TODO
//修改app的ip
public static void setIP(Context context, String server, int port, int utcp, int encrypto) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
mpAppConfig.server = server;
@ -105,7 +133,7 @@ public class UpdateSysConfigUtil {
}
//查询cmdid TODO
//查询cmdid
public static String getIP(Context context) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
String server = mpAppConfig.server;
@ -115,5 +143,122 @@ public class UpdateSysConfigUtil {
return server + "," + port + "," + networkProtocol + "," + encryption;
}
//修改app的心跳
public static void setHB(Context context, int heart) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
mpAppConfig.heartbeat = heart;
MicroPhotoContext.saveMpAppConfig(context, mpAppConfig);
}
//获取app的心跳
public static int getHB(Context context) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
int heartbeat = mpAppConfig.heartbeat;
return heartbeat;
}
//修改传输协议
public static void setTB(Context context, int tp) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
mpAppConfig.networkProtocol = tp;
MicroPhotoContext.saveMpAppConfig(context, mpAppConfig);
}
//获取传输协议
public static int getTB(Context context) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
int heartbeat = mpAppConfig.networkProtocol;
return heartbeat;
}
//设置传输包大小
public static void setPackage(Context context, int tp) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
mpAppConfig.packetSize = tp;
MicroPhotoContext.saveMpAppConfig(context, mpAppConfig);
}
//获取传输包大小
public static int getPackage(Context context) {
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
int heartbeat = mpAppConfig.packetSize;
return heartbeat;
}
//设置通道分辨率
public static boolean setChannelResolution(String packageurl, int channel, int resolutionCX, int resolutionCY, int videoCX, int videoCY) {
String path = getChannelDir(channel);
JSONObject jsonObject = JSONUtils.loadJson(path);
try {
jsonObject.put("resolutionCX", resolutionCX);
jsonObject.put("resolutionCY", resolutionCY);
jsonObject.put("videoCX", videoCX);
jsonObject.put("videoCY", videoCY);
} catch (Exception ex) {
ex.printStackTrace();
}
return JSONUtils.saveJson(path, jsonObject);
}
//查询通道分辨率
public static HashMap getChannelResolution(String packageurl, int channel) {
HashMap<String, Integer> hashMap = new HashMap<>();
String path = getChannelDir(channel);
JSONObject jsonObject = JSONUtils.loadJson(path);
try {
int resolutionCX = jsonObject.getInt("resolutionCX");
int resolutionCY = jsonObject.getInt("resolutionCY");
int videoCX = jsonObject.getInt("videoCX");
int videoCY = jsonObject.getInt("videoCY");
hashMap.put("resolutionCX", resolutionCX);
hashMap.put("resolutionCY", resolutionCY);
hashMap.put("videoCX", videoCX);
hashMap.put("videoCY", videoCY);
} catch (Exception ex) {
ex.printStackTrace();
}
return hashMap;
}
//清除历史图片和视频
public static void clearHistoryPic(Context context) {
String appPath = MicroPhotoContext.buildMpAppDir(context);
File path = new File(appPath + "photos/");
if (path.exists() && path.isDirectory()) {
FileUtils.DeleteFilesInPath(path.getAbsolutePath());
}
path = new File(appPath + "sentPhotos/");
if (path.exists() && path.isDirectory()) {
FileUtils.DeleteFilesInPath(path.getAbsolutePath());
}
}
//清除日志
public static void clearHistoryLogs(Context context) {
String appPath = MicroPhotoContext.buildMpAppDir(context);
String masterAppDir = MicroPhotoContext.buildMasterAppDir(context);
File path = new File(appPath + "logs/");
if (path.exists() && path.isDirectory()) {
FileUtils.DeleteFilesInPath(path.getAbsolutePath());
}
path = new File(masterAppDir + "logs/");
if (path.exists() && path.isDirectory()) {
FileUtils.DeleteFilesInPath(path.getAbsolutePath());
}
}
}

Loading…
Cancel
Save