拍照时间表功能新增

修复udp tcp  加解密短信字段错误
优化水印功能
新增全通到修改水印分辨率功能
serial
liuguijing 1 year ago
parent 7fdde50837
commit 6d831d3274

@ -8,6 +8,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
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) {
FileOutputStream fos = null;
OutputStreamWriter outputStreamWriter = null;

@ -41,11 +41,12 @@ public class MicroPhotoContext {
public String server;
public int port;
public int protocol;
public int networkProtocol;
public int networkProtocol; //0tcp 1:udp
public int network; // 0: SIM1 1: SIM2 2: WIFI
public int heartbeat;
public int packetSize;
public int encryption;
public int encryption; //0不加密 1明文 2加密
public int channelnum; //摄像头通道数目
}
public static class MasterConfig {
@ -220,6 +221,7 @@ public class MicroPhotoContext {
appConfig.heartbeat = jsonObject.optInt("heartbeat", 0);
appConfig.packetSize = jsonObject.optInt("packetSize", 0);
appConfig.encryption = jsonObject.optInt("encryption", 0);
appConfig.channelnum = jsonObject.optInt("channelnum", 4);
if (appConfig.protocol == 0) {
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.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.Manifest;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Switch;
@ -27,13 +23,11 @@ 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 com.xypower.mpmaster.sms.UpdateSysConfigUtil;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@ -212,6 +206,15 @@ public class MainActivity extends AppCompatActivity {
// intent1.putExtra(EXTRA_PARAM_TIME, 0);
// intent1.putExtra(EXTRA_PARAM_TAKING_TIME, ts);
// 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 com.dev.devapi.api.SysApi;
import com.xypower.common.MicroPhotoContext;
import com.xypower.common.RegexUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@ -156,7 +158,7 @@ public class SimUtil {
if (split1 != null && split1.length > 1) {
String s = split1[1];
String[] split2 = StringUtils.splitString2(s);
if (split2 != null && split2.length == 2) {
if (split2 != null && split2.length >= 2) {
String ipAddress = split2[0];
String port = split2[1];
boolean b = RegexUtil.checkIpAddress(ipAddress);
@ -197,7 +199,8 @@ public class SimUtil {
sendtype = SmsTypeEnum.GET_CMDID.value();
ifmessageCorrect = true;
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())) {
sendtype = SmsTypeEnum.SET_IP.value();
String[] split1 = StringUtils.splitString1(content);
@ -210,16 +213,23 @@ public class SimUtil {
server = split2[0];
String port = split2[1];
integer = StringUtils.convert2Int(port);
int utcp = -1;
int encrypto = -1;
Integer utcp = -1;
Integer encrypto = -1;
if (integer != null) {
ifmessageCorrect = true;
if (split2.length == 4) {
String s1 = split2[2];
utcp = StringUtils.convert2Int(s1);
utcp = getUtcp(utcp);
String s2 = split2[3];
encrypto = StringUtils.convert2Int(s2);
encrypto = getEncrypto(encrypto);
if (utcp == -1 || encrypto == -1) {
ifmessageCorrect = false;
}
}
}
if (ifmessageCorrect) {
UpdateSysConfigUtil.setIP(context, server, integer, utcp, encrypto);
}
}
@ -244,41 +254,51 @@ public class SimUtil {
String num = split2[0];
Integer integer = StringUtils.convert2Int(num);
if (integer != null) {
if (integer == 0) {//所有通道
ifmessageCorrect = true;
} else {
for (int i = 0; i < spilt2len; i++) {
if (i == 0) {
continue;
}
if (i % 2 == 1) {
if ((i + 1) <= spilt2len) {
String s1 = split2[i];
Integer position = StringUtils.convert2Int(s1);
if (position != null) {
if (position == 1) {
osdmap.put("leftTop", split2[i + 1]);
} else if (position == 2) {
osdmap.put("rightTop", split2[i + 1]);
} else if (position == 3) {
osdmap.put("leftBottom", split2[i + 1]);
} else if (position == 4) {
osdmap.put("rightBottom", split2[i + 1]);
} else {
ifmessageCorrect = false;
}
for (int i = 0; i < spilt2len; i++) {
if (i == 0) {
continue;
}
if (i % 2 == 1) {
if ((i + 1) <= spilt2len) {
String s1 = split2[i];
Integer position = StringUtils.convert2Int(s1);
if (position != null) {
if (position == 1) {
osdmap.put(UpdateSysConfigUtil.leftTop, split2[i + 1]);
} else if (position == 2) {
osdmap.put(UpdateSysConfigUtil.rightTop, split2[i + 1]);
} else if (position == 3) {
osdmap.put(UpdateSysConfigUtil.leftBottom, split2[i + 1]);
} else if (position == 4) {
osdmap.put(UpdateSysConfigUtil.rightBottom, split2[i + 1]);
} else {
ifmessageCorrect = false;
}
} else {
ifmessageCorrect = false;
}
} else {
ifmessageCorrect = false;
}
}
}
if (ifmessageCorrect) {
UpdateSysConfigUtil.setChannelOSD(integer, osdmap);
if (integer == 0) {//所有通道
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;
Integer channel = StringUtils.convert2Int(split[0]);
HashMap<String, String> channelOSD = UpdateSysConfigUtil.getChannelOSD(channel);
String leftTop = channelOSD.get("leftTop");
String rightTop = channelOSD.get("rightTop");
String leftBottom = channelOSD.get("leftBottom");
String rightBottom = channelOSD.get("rightBottom");
String leftTop = channelOSD.get(UpdateSysConfigUtil.leftTop);
String rightTop = channelOSD.get(UpdateSysConfigUtil.rightTop);
String leftBottom = channelOSD.get(UpdateSysConfigUtil.leftBottom);
String rightBottom = channelOSD.get(UpdateSysConfigUtil.rightBottom);
if (leftTop != null && StringUtils.isNotEmpty(leftTop)) {
sendmessage += "1," + leftTop;
}
@ -312,14 +332,26 @@ 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) {
Integer channel = StringUtils.convert2Int(split2[0]);
if (channel != null) {
ifmessageCorrect = true;
String msg = split2[1];
UpdateSysConfigUtil.setPhotoSchedules(channel, msg);
}
}
}
sendmessage = getSendString(content, ifmessageCorrect);
} else if (content.contains(SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value())) {
sendtype = SmsTypeEnum.GET_PHOTO_SCHEDULE_LIST.value();
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())) {
sendtype = SmsTypeEnum.SET_RESOLUTION.value();
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) {
String sendmessage;
@ -531,8 +590,7 @@ public class SimUtil {
}
//指定sim卡位置发送短信
public static void sendSms(Context mContext, int slot, String sender, String message, String
value, boolean ifmessageCorrect) {
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) {
@ -636,8 +694,7 @@ public class SimUtil {
//申请该权限
public static void requestOnePermission(Activity activity, String permission,
int permissionCode) {
public static void requestOnePermission(Activity activity, String permission, int permissionCode) {
if (activity != null) {
activity.requestPermissions(new String[]{permission}, permissionCode);
}

@ -3,20 +3,20 @@ package com.xypower.mpmaster.sms;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Environment;
import com.dev.devapi.api.SysApi;
import androidx.annotation.RequiresApi;
import com.xypower.common.FileUtils;
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.Base64;
import java.util.HashMap;
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_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) {
@ -59,6 +63,13 @@ public class UpdateSysConfigUtil {
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) {
MicroPhotoContext.MasterConfig masterConfig = MicroPhotoContext.getMasterConfig(context);
@ -244,10 +255,10 @@ public class UpdateSysConfigUtil {
String path = getChannelDir(channel);
JSONObject jsonObject = JSONUtils.loadJson(path);
try {
jsonObject.put("leftTop", hashMap.get("leftTop"));
jsonObject.put("rightTop", hashMap.get("rightTop"));
jsonObject.put("leftBottom", hashMap.get("leftBottom"));
jsonObject.put("rightBottom", hashMap.get("rightBottom"));
jsonObject.put(UpdateSysConfigUtil.leftTop, hashMap.get(UpdateSysConfigUtil.leftTop));
jsonObject.put(UpdateSysConfigUtil.rightTop, hashMap.get(UpdateSysConfigUtil.rightTop));
jsonObject.put(UpdateSysConfigUtil.leftBottom, hashMap.get(UpdateSysConfigUtil.leftBottom));
jsonObject.put(UpdateSysConfigUtil.rightBottom, hashMap.get(UpdateSysConfigUtil.rightBottom));
} catch (Exception ex) {
ex.printStackTrace();
}
@ -260,14 +271,14 @@ public class UpdateSysConfigUtil {
String path = getChannelDir(channel);
JSONObject jsonObject = JSONUtils.loadJson(path);
try {
String leftTop = jsonObject.getString("leftTop");
String rightTop = jsonObject.getString("rightTop");
String leftBottom = jsonObject.getString("leftBottom");
String rightBottom = jsonObject.getString("rightBottom");
hashMap.put("leftTop", leftTop);
hashMap.put("rightTop", rightTop);
hashMap.put("rightBottom", rightBottom);
hashMap.put("leftBottom", leftBottom);
String leftTop = jsonObject.getString(UpdateSysConfigUtil.leftTop);
String rightTop = jsonObject.getString(UpdateSysConfigUtil.rightTop);
String leftBottom = jsonObject.getString(UpdateSysConfigUtil.leftBottom);
String rightBottom = jsonObject.getString(UpdateSysConfigUtil.rightBottom);
hashMap.put(UpdateSysConfigUtil.leftTop, leftTop);
hashMap.put(UpdateSysConfigUtil.rightTop, rightTop);
hashMap.put(UpdateSysConfigUtil.leftBottom, leftBottom);
hashMap.put(UpdateSysConfigUtil.rightBottom, rightBottom);
} catch (Exception ex) {
ex.printStackTrace();
}
@ -348,4 +359,30 @@ public class UpdateSysConfigUtil {
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