Matthew 1 year ago
commit a00ce881ac

@ -8,6 +8,7 @@ import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -75,6 +76,65 @@ public class JSONUtils {
} }
public static byte[] loadByte(String path) {
ByteArrayOutputStream out = null;
byte[] outbyte = null;
FileInputStream fis = null;
try {
File appCfgFile = new File(path);
if (appCfgFile.exists()) {
fis = new FileInputStream(appCfgFile);
byte[] bytes = new byte[1024 * 4];
int line = 0;
out = new ByteArrayOutputStream();
while ((line = fis.read(bytes)) != -1) {
out.write(bytes, 0, line);
// System.out.println("dfsdaf:" + bytes);
}
outbyte = out.toByteArray();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
return outbyte;
}
public static boolean saveByte(String path, byte[] jsonObject) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File(path));
fos.write(jsonObject);
return true;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
return false;
}
public static boolean saveJson(String path, JSONObject jsonObject) { public static boolean saveJson(String path, JSONObject jsonObject) {
FileOutputStream fos = null; FileOutputStream fos = null;
OutputStreamWriter outputStreamWriter = null; OutputStreamWriter outputStreamWriter = null;

@ -41,11 +41,12 @@ public class MicroPhotoContext {
public String server; public String server;
public int port; public int port;
public int protocol; public int protocol;
public int networkProtocol; public int networkProtocol; //0tcp 1:udp
public int network; // 0: SIM1 1: SIM2 2: WIFI public int network; // 0: SIM1 1: SIM2 2: WIFI
public int heartbeat; public int heartbeat;
public int packetSize; public int packetSize;
public int encryption; public int encryption; //0不加密 1明文 2加密
public int channelnum; //摄像头通道数目
} }
public static class MasterConfig { public static class MasterConfig {
@ -220,6 +221,7 @@ public class MicroPhotoContext {
appConfig.heartbeat = jsonObject.optInt("heartbeat", 0); appConfig.heartbeat = jsonObject.optInt("heartbeat", 0);
appConfig.packetSize = jsonObject.optInt("packetSize", 0); appConfig.packetSize = jsonObject.optInt("packetSize", 0);
appConfig.encryption = jsonObject.optInt("encryption", 0); appConfig.encryption = jsonObject.optInt("encryption", 0);
appConfig.channelnum = jsonObject.optInt("channelnum", 4);
if (appConfig.protocol == 0) { if (appConfig.protocol == 0) {
appConfig.protocol = DEFAULT_PROTOCOL; appConfig.protocol = DEFAULT_PROTOCOL;
@ -455,6 +457,4 @@ public class MicroPhotoContext {
} }
} }

@ -4,20 +4,16 @@ package com.xypower.mpmaster;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.Manifest; import android.Manifest;
import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.StrictMode; import android.os.StrictMode;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.widget.Switch; import android.widget.Switch;
@ -27,13 +23,11 @@ import android.widget.TextView;
import com.dev.devapi.api.SysApi; import com.dev.devapi.api.SysApi;
import com.xypower.common.HotspotManager; import com.xypower.common.HotspotManager;
import com.xypower.common.MicroPhotoContext; import com.xypower.common.MicroPhotoContext;
import com.xypower.mpmaster.sms.DownloadUtils; import com.xypower.mpmaster.sms.UpdateSysConfigUtil;
import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.Base64;
import java.util.Date; import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
@ -212,6 +206,15 @@ public class MainActivity extends AppCompatActivity {
// intent1.putExtra(EXTRA_PARAM_TIME, 0); // intent1.putExtra(EXTRA_PARAM_TIME, 0);
// intent1.putExtra(EXTRA_PARAM_TAKING_TIME, ts); // intent1.putExtra(EXTRA_PARAM_TAKING_TIME, ts);
// sendBroadcast(intent1); // sendBroadcast(intent1);
// UpdateSysConfigUtil.getScheduless(1);
byte[] bytes = {1, 1, 2, 0, 0, 0, 23, 59};
String photoSchedules = UpdateSysConfigUtil.getPhotoSchedules(1);
byte[] decode = Base64.getDecoder().decode(photoSchedules);
System.out.println(decode);
} }
}); });

@ -18,10 +18,12 @@ import android.text.TextUtils;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import com.dev.devapi.api.SysApi; import com.dev.devapi.api.SysApi;
import com.xypower.common.MicroPhotoContext;
import com.xypower.common.RegexUtil; import com.xypower.common.RegexUtil;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Base64;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -156,7 +158,7 @@ public class SimUtil {
if (split1 != null && split1.length > 1) { if (split1 != null && split1.length > 1) {
String s = split1[1]; String s = split1[1];
String[] split2 = StringUtils.splitString2(s); String[] split2 = StringUtils.splitString2(s);
if (split2 != null && split2.length == 2) { if (split2 != null && split2.length >= 2) {
String ipAddress = split2[0]; String ipAddress = split2[0];
String port = split2[1]; String port = split2[1];
boolean b = RegexUtil.checkIpAddress(ipAddress); boolean b = RegexUtil.checkIpAddress(ipAddress);
@ -197,7 +199,8 @@ public class SimUtil {
sendtype = SmsTypeEnum.GET_CMDID.value(); sendtype = SmsTypeEnum.GET_CMDID.value();
ifmessageCorrect = true; ifmessageCorrect = true;
String cmdid = UpdateSysConfigUtil.getCmdid(context); String cmdid = UpdateSysConfigUtil.getCmdid(context);
sendmessage = SmsTypeEnum.GET_CMDID.value() + "=" + cmdid; String serialNo = SysApi.getSerialNo(context);
sendmessage = SmsTypeEnum.GET_CMDID.value() + "=" + serialNo + "," + cmdid;
} else if (content.contains(SmsTypeEnum.SET_IP.value())) { } else if (content.contains(SmsTypeEnum.SET_IP.value())) {
sendtype = SmsTypeEnum.SET_IP.value(); sendtype = SmsTypeEnum.SET_IP.value();
String[] split1 = StringUtils.splitString1(content); String[] split1 = StringUtils.splitString1(content);
@ -210,16 +213,23 @@ public class SimUtil {
server = split2[0]; server = split2[0];
String port = split2[1]; String port = split2[1];
integer = StringUtils.convert2Int(port); integer = StringUtils.convert2Int(port);
int utcp = -1; Integer utcp = -1;
int encrypto = -1; Integer encrypto = -1;
if (integer != null) { if (integer != null) {
ifmessageCorrect = true; ifmessageCorrect = true;
if (split2.length == 4) { if (split2.length == 4) {
String s1 = split2[2]; String s1 = split2[2];
utcp = StringUtils.convert2Int(s1); utcp = StringUtils.convert2Int(s1);
utcp = getUtcp(utcp);
String s2 = split2[3]; String s2 = split2[3];
encrypto = StringUtils.convert2Int(s2); encrypto = StringUtils.convert2Int(s2);
encrypto = getEncrypto(encrypto);
if (utcp == -1 || encrypto == -1) {
ifmessageCorrect = false;
}
} }
}
if (ifmessageCorrect) {
UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto); UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto);
} }
} }
@ -244,41 +254,51 @@ public class SimUtil {
String num = split2[0]; String num = split2[0];
Integer integer = StringUtils.convert2Int(num); Integer integer = StringUtils.convert2Int(num);
if (integer != null) { if (integer != null) {
if (integer == 0) {//所有通道 for (int i = 0; i < spilt2len; i++) {
ifmessageCorrect = true; if (i == 0) {
} else { continue;
for (int i = 0; i < spilt2len; i++) { }
if (i == 0) { if (i % 2 == 1) {
continue; if ((i + 1) <= spilt2len) {
} String s1 = split2[i];
if (i % 2 == 1) { Integer position = StringUtils.convert2Int(s1);
if ((i + 1) <= spilt2len) { if (position != null) {
String s1 = split2[i]; if (position == 1) {
Integer position = StringUtils.convert2Int(s1); osdmap.put(UpdateSysConfigUtil.leftTop, split2[i + 1]);
if (position != null) { } else if (position == 2) {
if (position == 1) { osdmap.put(UpdateSysConfigUtil.rightTop, split2[i + 1]);
osdmap.put("leftTop", split2[i + 1]); } else if (position == 3) {
} else if (position == 2) { osdmap.put(UpdateSysConfigUtil.leftBottom, split2[i + 1]);
osdmap.put("rightTop", split2[i + 1]); } else if (position == 4) {
} else if (position == 3) { osdmap.put(UpdateSysConfigUtil.rightBottom, split2[i + 1]);
osdmap.put("leftBottom", split2[i + 1]);
} else if (position == 4) {
osdmap.put("rightBottom", split2[i + 1]);
} else {
ifmessageCorrect = false;
}
} else { } else {
ifmessageCorrect = false; ifmessageCorrect = false;
} }
} else { } else {
ifmessageCorrect = false; ifmessageCorrect = false;
} }
} else {
ifmessageCorrect = false;
} }
} }
} }
if (ifmessageCorrect) { if (integer == 0) {//所有通道
UpdateSysConfigUtil.setChannelOSD(integer, osdmap); ifmessageCorrect = true;
MicroPhotoContext.AppConfig mpAppConfig = MicroPhotoContext.getMpAppConfig(context);
int channelnum = mpAppConfig.channelnum;
if (channelnum != 0) {
if (ifmessageCorrect) {
for (int i = 1; i <= channelnum; i++) {
UpdateSysConfigUtil.setChannelOSD(i, osdmap);
}
}
}
} else {
if (ifmessageCorrect) {
UpdateSysConfigUtil.setChannelOSD(integer, osdmap);
}
} }
} }
} }
} }
@ -290,10 +310,10 @@ public class SimUtil {
ifmessageCorrect = true; ifmessageCorrect = true;
Integer channel = StringUtils.convert2Int(split[0]); Integer channel = StringUtils.convert2Int(split[0]);
HashMap<String, String> channelOSD = UpdateSysConfigUtil.getChannelOSD(channel); HashMap<String, String> channelOSD = UpdateSysConfigUtil.getChannelOSD(channel);
String leftTop = channelOSD.get("leftTop"); String leftTop = channelOSD.get(UpdateSysConfigUtil.leftTop);
String rightTop = channelOSD.get("rightTop"); String rightTop = channelOSD.get(UpdateSysConfigUtil.rightTop);
String leftBottom = channelOSD.get("leftBottom"); String leftBottom = channelOSD.get(UpdateSysConfigUtil.leftBottom);
String rightBottom = channelOSD.get("rightBottom"); String rightBottom = channelOSD.get(UpdateSysConfigUtil.rightBottom);
if (leftTop != null && StringUtils.isNotEmpty(leftTop)) { if (leftTop != null && StringUtils.isNotEmpty(leftTop)) {
sendmessage += "1," + leftTop; sendmessage += "1," + leftTop;
} }
@ -312,14 +332,26 @@ public class SimUtil {
String[] split1 = StringUtils.splitString1(content); String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length > 1) { if (split1 != null && split1.length > 1) {
String s = split1[1]; String s = split1[1];
String[] split2 = StringUtils.splitString1(s); String[] split2 = StringUtils.splitString2(s);
if (split2 != null && split2.length == 2) { if (split2 != null && split2.length == 2) {
Integer channel = StringUtils.convert2Int(split2[0]);
if (channel != null) {
ifmessageCorrect = true;
String msg = split2[1];
UpdateSysConfigUtil.setPhotoSchedules(channel, msg);
}
} }
} }
sendmessage = getSendString(content, ifmessageCorrect); sendmessage = getSendString(content, ifmessageCorrect);
} else if (content.contains(SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value())) { } else if (content.contains(SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value())) {
sendtype = SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value(); sendtype = SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value();
ifmessageCorrect = true; ifmessageCorrect = true;
String[] split1 = StringUtils.splitString1(content);
if (split1 != null && split1.length == 2) {
Integer channel = StringUtils.convert2Int(split1[1]);
String photoSchedules = UpdateSysConfigUtil.getPhotoSchedules(channel);
sendmessage = SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value() + "=" + photoSchedules;
}
} else if (content.contains(SmsTypeEnum.SET_RESOLUTION.value())) { } else if (content.contains(SmsTypeEnum.SET_RESOLUTION.value())) {
sendtype = SmsTypeEnum.SET_RESOLUTION.value(); sendtype = SmsTypeEnum.SET_RESOLUTION.value();
String[] split1 = StringUtils.splitString1(content); String[] split1 = StringUtils.splitString1(content);
@ -438,6 +470,33 @@ public class SimUtil {
} }
private static int getUtcp(Integer utcp) {
int apputcp = -1;
//短信文档中 0udp 1:tcp app应用中 0tcp 1:udp 所以需要转换一下
if (utcp != null && (utcp == 0 || utcp == 1)) {
if (utcp == 0) {
apputcp = 1;
} else if (utcp == 1) {
apputcp = 0;
}
}
return apputcp;
}
private static int getEncrypto(Integer encrypto) {
int appencrypto = -1;
//短信文档中 1密文,2明文 3不加密 app应用中 0不加密 1明文 2加密 所以需要转换一下
if (encrypto != null && (encrypto == 1 || encrypto == 2 || encrypto == 3)) {
if (encrypto == 1) {
appencrypto = 2;
} else if (encrypto == 2) {
appencrypto = 1;
} else if (encrypto == 3) {
appencrypto = 0;
}
}
return appencrypto;
}
private static String getSendString(String content, boolean ifmessageCorrect) { private static String getSendString(String content, boolean ifmessageCorrect) {
String sendmessage; String sendmessage;
@ -531,8 +590,7 @@ public class SimUtil {
} }
//指定sim卡位置发送短信 //指定sim卡位置发送短信
public static void sendSms(Context mContext, int slot, String sender, String message, String public static void sendSms(Context mContext, int slot, String sender, String message, String value, boolean ifmessageCorrect) {
value, boolean ifmessageCorrect) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
SubscriptionManager localSubscriptionManager = SubscriptionManager.from(mContext); SubscriptionManager localSubscriptionManager = SubscriptionManager.from(mContext);
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
@ -636,8 +694,7 @@ public class SimUtil {
//申请该权限 //申请该权限
public static void requestOnePermission(Activity activity, String permission, public static void requestOnePermission(Activity activity, String permission, int permissionCode) {
int permissionCode) {
if (activity != null) { if (activity != null) {
activity.requestPermissions(new String[]{permission}, permissionCode); activity.requestPermissions(new String[]{permission}, permissionCode);
} }

@ -3,20 +3,20 @@ package com.xypower.mpmaster.sms;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Environment; import android.os.Environment;
import com.dev.devapi.api.SysApi; import androidx.annotation.RequiresApi;
import com.xypower.common.FileUtils; import com.xypower.common.FileUtils;
import com.xypower.common.JSONUtils; import com.xypower.common.JSONUtils;
import com.xypower.common.MicroPhotoContext; import com.xypower.common.MicroPhotoContext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Base64;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -35,6 +35,10 @@ public class UpdateSysConfigUtil {
public static final String EXTRA_PARAM_TAKING_TIME = "TakingTime"; public static final String EXTRA_PARAM_TAKING_TIME = "TakingTime";
public static final String EXTRA_PARAM_TIME = "Time"; public static final String EXTRA_PARAM_TIME = "Time";
public static String leftTop = "leftTop";
public static String rightTop = "rightTop";
public static String leftBottom = "leftBottom";
public static String rightBottom = "rightBottom";
//创建运维配置文件文件夹 //创建运维配置文件文件夹
public static String buildAppDir(String packageurl) { public static String buildAppDir(String packageurl) {
@ -59,6 +63,13 @@ public class UpdateSysConfigUtil {
return path; return path;
} }
//获取配置文件地址
public static String getScheduleDir(int channel) {
String appPath = buildAppDir(PACKAGE_NAME_MPAPP);
String path = appPath + "data/schedules/" + channel;
return path;
}
//修改运维时间表 //修改运维时间表
public static void setAbsHeartbeats(Context context, List<Integer> list) { public static void setAbsHeartbeats(Context context, List<Integer> list) {
MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context); MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context);
@ -244,10 +255,10 @@ public class UpdateSysConfigUtil {
String path = getChannelDir(channel); String path = getChannelDir(channel);
JSONObject jsonObject = JSONUtils.loadJson(path); JSONObject jsonObject = JSONUtils.loadJson(path);
try { try {
jsonObject.put("leftTop", hashMap.get("leftTop")); jsonObject.put(UpdateSysConfigUtil.leftTop, hashMap.get(UpdateSysConfigUtil.leftTop));
jsonObject.put("rightTop", hashMap.get("rightTop")); jsonObject.put(UpdateSysConfigUtil.rightTop, hashMap.get(UpdateSysConfigUtil.rightTop));
jsonObject.put("leftBottom", hashMap.get("leftBottom")); jsonObject.put(UpdateSysConfigUtil.leftBottom, hashMap.get(UpdateSysConfigUtil.leftBottom));
jsonObject.put("rightBottom", hashMap.get("rightBottom")); jsonObject.put(UpdateSysConfigUtil.rightBottom, hashMap.get(UpdateSysConfigUtil.rightBottom));
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
@ -260,14 +271,14 @@ public class UpdateSysConfigUtil {
String path = getChannelDir(channel); String path = getChannelDir(channel);
JSONObject jsonObject = JSONUtils.loadJson(path); JSONObject jsonObject = JSONUtils.loadJson(path);
try { try {
String leftTop = jsonObject.getString("leftTop"); String leftTop = jsonObject.getString(UpdateSysConfigUtil.leftTop);
String rightTop = jsonObject.getString("rightTop"); String rightTop = jsonObject.getString(UpdateSysConfigUtil.rightTop);
String leftBottom = jsonObject.getString("leftBottom"); String leftBottom = jsonObject.getString(UpdateSysConfigUtil.leftBottom);
String rightBottom = jsonObject.getString("rightBottom"); String rightBottom = jsonObject.getString(UpdateSysConfigUtil.rightBottom);
hashMap.put("leftTop", leftTop); hashMap.put(UpdateSysConfigUtil.leftTop, leftTop);
hashMap.put("rightTop", rightTop); hashMap.put(UpdateSysConfigUtil.rightTop, rightTop);
hashMap.put("rightBottom", rightBottom); hashMap.put(UpdateSysConfigUtil.leftBottom, leftBottom);
hashMap.put("leftBottom", leftBottom); hashMap.put(UpdateSysConfigUtil.rightBottom, rightBottom);
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
@ -348,4 +359,30 @@ public class UpdateSysConfigUtil {
context.sendBroadcast(intent1); context.sendBroadcast(intent1);
} }
//拍照时间表修改
public static void setPhotoSchedules(int channel, String msg) {
if (StringUtils.isNotEmpty(msg)) {
byte[] decode = new byte[0];
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
decode = Base64.getDecoder().decode(msg);
}
if (decode != null && decode.length > 0) {
String path = getScheduleDir(channel);
JSONUtils.saveByte(path, decode);
}
}
}
//获取拍照时间表
public static String getPhotoSchedules(int channel) {
String msg = "";
String path = getScheduleDir(channel);
byte[] bytes = JSONUtils.loadByte(path);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
msg = Base64.getEncoder().encodeToString(bytes);
}
return msg;
}
} }

Loading…
Cancel
Save