package com.telpo.facenormal.utile; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.hardware.Camera; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.text.TextUtils; import android.util.Base64; import android.util.Log; import android.util.TypedValue; import android.widget.Toast; import com.alipay.iot.bpaas.api.BPaaSApi; import com.alipay.iot.bpaas.api.service.BPaaSCallback; import com.alipay.iot.bpaas.api.service.BPaaSResponse; import com.blankj.utilcode.util.FileUtils; import com.blankj.utilcode.util.ToastUtils; import com.common.pos.api.util.PosUtil; import com.telpo.facenormal.bean.AuthenticationBean; import com.telpo.facenormal.bean.CheckNumBean; import com.telpo.facenormal.bean.GetFederatedPlatformsBean; import com.telpo.facenormal.bean.SetFederatedPlatformsBean; import com.telpo.facenormal.bean.ZoloConfigBean; import com.telpo.facenormal.contract.ContractInterface; import com.telpo.facenormal.utile.Serial.SerialManage; import com.telpo.facenormal.utile.loacat.AppLogUtils; import com.zkteco.android.biometric.module.idcard.meta.IDCardInfo; import java.io.ByteArrayOutputStream; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import static android.content.Context.ACTIVITY_SERVICE; /** * 数据配置 */ public class Config { public static boolean doorStatus=false;//门磁信号状态 短接-true false-断开 public static String[] DevicesPath=new String[0]; public static String taskStatus = ""; //wait-等待 doing-执行对应操作 complete-得到结果并开始执行商户或联动平台接口请求 public static ScheduledExecutorService scheduledExecutor; public static int openTimes=0;//开门次数hen public static int PassableOpenTimes=0;//可通行人数 public static String taskFlag="noInfo";//noInfo or existInfo public static String SN= getDeviceSN();//设备sn号 getDeviceSN() public static String token="e69dade5b79ee888aae6b187"; public static String App_ID = "";//支付宝⽤⼾库ID public static String machineAppId = "";//设备appId public static String serviceAddress = "";//商户地址 public static String serviceAppId = "";//商户appid public static String trade = "";//场景参数(TRAFFIC) public static String userLibName = "";//⽤⼾库名称 --填写 A/B/C public static String sceneName = "";//场景名称(出⾏) public static String mode = "";//模式 mode: public/close/elasticity 三个参数分别代表 开放/封闭/弹性 public static String logicGroupID = "";// elasticity 时 逻辑⽤⼾库ID public static String GroupID = "";// elasticity 时 逻辑⽤⼾库ID public static String passWay="normal";//判断是否为机场 public static String APP_VERION = "1.0"; public static String mSessionId = ""; public static boolean bRepeatRead = true;//是否开始读卡 public static boolean checkBoxRepeatRead = true;//是否连续读卡 public static String linkageAds="";//联动平台地址 public static boolean isNavigationBarVisibility = false; public static boolean isNotificationBarVisibility = false; public static String checkWay=""; public static String name="";//姓名 public static String licid="";//身份证号 public static String QrData="";//二维码返回 public static Bitmap avatarBitmap=null;//身份证头像或者商户平台返回头像 public static AuthenticationBean authenticationBean; public static AuthenticationBean getAuthenticationBean() { if (authenticationBean==null){ authenticationBean=AuthenticationBeans(); } return authenticationBean; } public static AuthenticationBean AuthenticationBeans() { AuthenticationBean authenticationBean=new AuthenticationBean(); authenticationBean.setMsg("本地配置"); List dataDTOS=new ArrayList<>(); AuthenticationBean.DataDTO dataDTO=new AuthenticationBean.DataDTO(); dataDTO.setName(""); dataDTO.setMachineAppId(""); dataDTO.setServiceAppId(""); dataDTO.setServiceAddress(""); dataDTO.setThirdAuth(false); dataDTO.setSceneName(""); dataDTO.setTrade(""); dataDTO.setUserLibName(""); dataDTO.setGroupId(""); dataDTO.setLogicGroupID(""); dataDTO.setMode("close"); dataDTO.setUseAlipayFace(false); dataDTO.setLinkageAds(""); dataDTO.setSuccessPageTime(2); dataDTO.setFailPageTime(5); AuthenticationBean.DataDTO.ZoloConfigDTO zoloConfigBean=new AuthenticationBean.DataDTO.ZoloConfigDTO(); zoloConfigBean.setSupAlgorithmAngle(90); zoloConfigBean.setAlgorithmAngle(270); zoloConfigBean.setDisplayAngle(270); zoloConfigBean.setIsMirror(true); zoloConfigBean.setIsDisplayMirror(false); dataDTO.setZoloConfig(zoloConfigBean); dataDTO.setUseIdcard(true); dataDTO.setUsePersonCard(false); dataDTO.setUseQrcode(true); dataDTO.setUseLinkage(true); dataDTO.setFaceMode("auto"); dataDTO.setClickButtonText("点击开始刷脸核验"); dataDTO.setIsCaptureFace(false); dataDTO.setUseSerialPort("default"); dataDTO.setSignalNo(""); dataDTO.setLightMode("auto"); dataDTO.setVolume(80); dataDTO.setSucVoice("请通行"); dataDTO.setSucText("请通行"); dataDTO.setFailText("⽐对失败,请联系现场⼯作⼈员"); dataDTO.setFailVoice("⽐对失败,请联系现场⼯作⼈员"); dataDTO.setHideNavigationBar(false); dataDTO.setForbidPullDown(false); dataDTO.setHomePageUrl(""); dataDTO.setTransitionPageUrl(""); dataDTO.setIsNeed1V1(true); dataDTO.setHeartTrackingUrl(""); dataDTO.setTransitPushUrl(""); dataDTO.setShowTopBar(false); dataDTO.setLeftTopBarText(""); dataDTO.setRightTopBarText(""); dataDTO.setPassWay("normal"); dataDTO.setOpenAgeLimit(false); dataDTO.setLimitSectionEnd(0); dataDTO.setLimitSectionStart(1); dataDTO.setAgeForbidText("禁止进入"); dataDTO.setMpassword("142536"); dataDTO.setPushGm(false); dataDTO.setGMAddress(""); dataDTO.setGMFrequency(1000); dataDTO.setAutoLaunch(true); dataDTO.setEntryFaceMode("zero"); dataDTO.setCameraBrand("IR"); dataDTO.setCameraType("Normal"); dataDTOS.add(dataDTO); authenticationBean.setData(dataDTOS); return authenticationBean; } public static void setAuthenticationBean(AuthenticationBean authenticationBean) { Config.authenticationBean = authenticationBean; } public static GetFederatedPlatformsBean getFederatedPlatformsBean; public static GetFederatedPlatformsBean getGetFederatedPlatformsBean() { return getFederatedPlatformsBean; } public static void setGetFederatedPlatformsBean(GetFederatedPlatformsBean getFederatedPlatformsBean) { Config.getFederatedPlatformsBean = getFederatedPlatformsBean; } public static SetFederatedPlatformsBean setFederatedPlatformsBean; public static SetFederatedPlatformsBean getSetFederatedPlatformsBean() { return setFederatedPlatformsBean; } public static void setSetFederatedPlatformsBean(SetFederatedPlatformsBean setFederatedPlatformsBean) { Config.setFederatedPlatformsBean = setFederatedPlatformsBean; } public static String Url = "https://tx.hz-hanghui.com:8088/hanghui-server-platform/"; //申请三要素 public static String Urls = "https://tx.hz-hanghui.com:8088/hanghui-server-platform/"; //根据三要素返回最终结果url http://115.227.34.58:1832/ http://192.168.11.3:1832/ public static String FederatedPlatformsUrl1 = "";//115.227.34.58:1832 public static String FederatedPlatformsUrl = "http://"+FederatedPlatformsUrl1+"/"; //通用 public static String DeviceStateReportUrl = "https://tx.hz-hanghui.com:8088/"; //设备定时上报 public static String trackingUrl = ""; //设备记录上报 public static String EventRecordsUrl = ""; //将选中数据添加到数组中 public static List CheckList=new ArrayList<>(); //门磁信号地址 public static String GMAddress = "http://192.168.11.117:8080/index/test"; //门磁信号发送频率 public static int GMFrequency = 1000;//默认1s /** * 身份证阅读器 * @param bitmap * @return */ public static IDCardInfo setIDCardInfo; public static IDCardInfo getIDCardInfo() { return setIDCardInfo; } public static void setIDCardInfo(IDCardInfo setIDCardInfo) { Config.setIDCardInfo = setIDCardInfo; } public static String bitmapToString(Bitmap bitmap) { //将Bitmap转换成字符串 try { String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, bStream); byte[] bytes = bStream.toByteArray(); string = Base64.encodeToString(bytes, Base64.DEFAULT); return string; } catch (Exception e) { e.printStackTrace(); return ""; } } public static Bitmap stringToBitmap(String string) { // 将字符串转换成Bitmap类型 Bitmap bitmap = null; try { byte[] bitmapArray; bitmapArray = Base64.decode(string, Base64.DEFAULT); bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length); } catch (Exception e) { e.printStackTrace(); } return bitmap; } /** * Base64转Bitmap * * @return Bitmap 图片 */ public static Bitmap base642Bitmap(String base64String) { if (null == base64String) throw new NullPointerException(); byte[] decode = Base64.decode(base64String.split(",")[1], Base64.DEFAULT); Bitmap mBitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length); return mBitmap; } //获取设备SN码 public static String getDeviceSN(){ String serial = null; try { Class c =Class.forName("android.os.SystemProperties"); Method get =c.getMethod("get", String.class); if(Build.VERSION.SDK_INT < 28){//28 is andoird 9.0 24-7.0 22-5.1 serial = (String)get.invoke(c, "ro.serialno"); } else{ serial = (String)get.invoke(c, "persist.sys.hrSerial");//vendor.gsm.serial } } catch (Exception e) { e.printStackTrace(); } //紫鹏设备 if (TextUtils.isEmpty(serial)) { serial = Build.SERIAL; } return serial; } //获取版本号 public static String getVersionName(Context activity){ PackageInfo packageInfo = null; try { packageInfo = activity.getPackageManager() .getPackageInfo(activity.getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } //获取APP版本versionName String versionName = packageInfo.versionName; //获取APP版本versionCode int versionCode = packageInfo.versionCode; return versionName; } //获取版本code public static int getVersionCode(Activity activity){ PackageInfo packageInfo = null; try { packageInfo = activity.getPackageManager() .getPackageInfo(activity.getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } //获取APP版本versionName String versionName = packageInfo.versionName; //获取APP版本versionCode int versionCode = packageInfo.versionCode; return versionCode; } //判断是否有网络连接 public static boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mNetworkInfo != null) { return mNetworkInfo.isAvailable(); } } return false; } public static int getNumberOfTicketChecks(Activity activity) { Config.openTimes= (int) SharedPreferencesUtils.getParam(activity,"openTimesNum",0); Config.PassableOpenTimes= (int) SharedPreferencesUtils.getParam(activity, "PassableOpenTimes", 0); int NumberOfTicketChecks= (int) SharedPreferencesUtils.getParam(activity,"NumberOfTicketChecks",0); return NumberOfTicketChecks; } // 停止刷脸服务 public static void stopBpaasService(String mSessionId,FaceScenicUtile faceScenicUtile,Context context) { if (mSessionId == null || mSessionId.equals("")) { return; } BPaaSApi.getInstance().stopBPaaSService(Config.machineAppId, "BPaasVerifyID", new Bundle(), mSessionId, new BPaaSCallback() { @Override public void onResponse(BPaaSResponse bPaaSResponse) { if (bPaaSResponse == null || bPaaSResponse.getCode() == BPaaSResponse.RESULT_CODE_FAIL) { AppLogUtils.w(true,"停止刷脸服务失败 stopBPaaSService bPaaSResponse=" + bPaaSResponse); return; } String subCode = bPaaSResponse.getSubCode(); int code = bPaaSResponse.getCode(); setFaceScenicUtile(Config.getAuthenticationBean().getData().get(0).getLightMode(),faceScenicUtile,false,context); AppLogUtils.d(true,"成功 stopBPaaSService subCode=" + subCode + "code:" + code); } @Override public void onEvent(String s, String s1, Bundle bundle) { } }); mSessionId = null; Config.mSessionId=""; } public static void getToast(Activity activity){ Toast.makeText(activity,"配置更新成功",Toast.LENGTH_SHORT).show(); } // 服务是否运行 public static boolean isServiceRunning(Context context, String serviceName) { ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceName.equals(service.service.getClassName())) { return true; } } return false; } /** * 判断相机是否占用 */ public static boolean isCameraCanUse() { boolean canUse = false; Camera mCamera = null; try { mCamera = Camera.open(0); Camera.Parameters mParameters = mCamera.getParameters(); mCamera.setParameters(mParameters); } catch (Exception e) { canUse = false; } if (mCamera != null) { mCamera.release(); canUse = true; } return canUse; } /** * 删除文件夹及文件夹下所有内容 */ //删除文件夹和文件夹里面的文件 public static void deleteDirWihtFile(File dir) { if (dir == null || !dir.exists() || !dir.isDirectory()) return; for (File file : dir.listFiles()) { if (file.isFile()) file.delete(); // 删除所有文件 else if (file.isDirectory()) deleteDirWihtFile(file); // 递规的方式删除文件夹 } dir.delete();// 删除目录本身 } /** * 判断指定目录是否存在 */ public static void ExistsFile(){ String sdPath = Environment.getExternalStorageDirectory() + "/"; // 文件保存路径 String mSavePath = sdPath + "oil"; File file = new File(mSavePath); if (!file.exists()){// 判断当前目录是否存在,存在返回true,否则返回false deleteDirWihtFile(file); } } /** * 判断版本号更新 */ /** * 判断版本更新 * @param localVersion 本地app 版本号 * @param newVersion 最新版本号 * @return true 需要更新 false 不用 */ public static boolean updateApp(String localVersion, String newVersion) { String[] localVersionArray = localVersion.split("\\."); String[] newVersionArray = newVersion.split("\\."); if (localVersionArray.length < newVersionArray.length) { int cha = newVersionArray.length - localVersionArray.length; for (int i = 0; i < cha; i++) { localVersion = localVersion + ".0"; } localVersionArray = localVersion.split("\\."); } try { for (int i = 0; i < newVersionArray.length; i++) { int temp = Integer.parseInt(newVersionArray[i]); int compar = Integer.parseInt(localVersionArray[i]); if (temp > compar) { return true; } } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 判断刷脸utile是否存在 * @param faceScenicUtile * @param isLedLight */ public static void setFaceScenicUtile(String Type,FaceScenicUtile faceScenicUtile, boolean isLedLight,Context context){ if (faceScenicUtile!=null){ switch (Type){ case "open": faceScenicUtile.setLedLight(true); break; case "auto": faceScenicUtile.setLedLight(isLedLight); break; case "close": faceScenicUtile.setLedLight(false); break; } } } /** * 判断设备为f2 */ public static boolean IsF2(){ if (Build.MODEL.indexOf("F2")!=-1){ return true; }else { return false; } } /** * 非空判断 */ public static boolean IsStringNull(String string){ string=string+""; if (string.equals("")||string.equals("null")){ return true; }else { return false; } } public static SetFederatedPlatformsBean setFederatedPlatformsBeans(String sn, int Action, int Verifytype, String Cardid, String Name, String Phone) { SetFederatedPlatformsBean setFederatedPlatformsBean = new SetFederatedPlatformsBean(); setFederatedPlatformsBean.setSN(sn); setFederatedPlatformsBean.setAction(Action); SetFederatedPlatformsBean.DataDTO dataDTO = new SetFederatedPlatformsBean.DataDTO(); dataDTO.setExtend3(""); dataDTO.setExtend6(""); dataDTO.setExtend7(""); dataDTO.setHsStatus(""); dataDTO.setJkmStatus(""); dataDTO.setJkmType("0"); dataDTO.setVerifytype(Verifytype); dataDTO.setCardid(Cardid); dataDTO.setName(Name); dataDTO.setPhone(Phone); dataDTO.setTime(DateUtil.getTime("yyyy年MM月dd日 HH:mm:ss")); List list = new ArrayList<>(); list.add(dataDTO); setFederatedPlatformsBean.setData(list); Config.setSetFederatedPlatformsBean(setFederatedPlatformsBean); return setFederatedPlatformsBean; } /** * 根据身份证获取年龄 * @param idCard 身份证号码 * @return 年龄 */ /** *根据身份证号码计算年龄 * @param idNumber 考虑到了15位身份证,但不一定存在 */ /** * 通过身份证号码获取出生日期、性别、年龄 * @param certificateNo * @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男 */ public static Map getBirAgeSex(String certificateNo) { String birthday = ""; String age = ""; String sexCode = ""; int year = Calendar.getInstance().get(Calendar.YEAR); char[] number = certificateNo.toCharArray(); boolean flag = true; if (number.length == 15) { for (int x = 0; x < number.length; x++) { if (!flag) return new HashMap(); flag = Character.isDigit(number[x]); } } else if (number.length == 18) { for (int x = 0; x < number.length - 1; x++) { if (!flag) return new HashMap(); flag = Character.isDigit(number[x]); } } if (flag && certificateNo.length() == 15) { birthday = "19" + certificateNo.substring(6, 8); sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? "F" : "M"; age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + ""; } else if (flag && certificateNo.length() == 18) { birthday = certificateNo.substring(6, 10) ; sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? "F" : "M"; age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + ""; } Map map = new HashMap(); map.put("birthday", birthday); map.put("age", age); map.put("sexCode",sexCode); return map; } public static int getAge(String certificateNo){ if (IsStringNull(certificateNo)){ return -1; } Map map=getBirAgeSex(certificateNo); String age=map.get("age"); return Integer.parseInt(age); } /** * 更新配置项 */ public static AuthenticationBean UpdateConfiguration(AuthenticationBean o,Activity activity){ Config.App_ID = o.getData().get(0).getGroupId(); Config.machineAppId = o.getData().get(0).getMachineAppId(); Config.serviceAddress = o.getData().get(0).getServiceAddress(); Config.serviceAppId = o.getData().get(0).getServiceAppId(); Config.trade = o.getData().get(0).getTrade(); Config.userLibName = o.getData().get(0).getUserLibName(); Config.sceneName = o.getData().get(0).getSceneName(); Config.mode = o.getData().get(0).getMode(); Config.logicGroupID = o.getData().get(0).getLogicGroupID(); Config.linkageAds = "https://"+o.getData().get(0).getLinkageAds()+"/"; Config.trackingUrl=o.getData().get(0).getHeartTrackingUrl() ; Config.EventRecordsUrl=o.getData().get(0).getTransitPushUrl()+"/"; Config.FederatedPlatformsUrl1=o.getData().get(0).getLinkageAds(); Config.FederatedPlatformsUrl = "http://"+Config.FederatedPlatformsUrl1+"/"; Config.passWay=o.getData().get(0).getPassWay()+""; if (Config.passWay.equals("")||Config.passWay.equals("null")){ Config.passWay="normal"; } if (o.getData().get(0).getMode().equals("elasticity")) {//mode = elasticity 时用logicGroupID Config.GroupID = o.getData().get(0).getLogicGroupID(); } else { Config.GroupID = o.getData().get(0).getGroupId(); } Config.setAuthenticationBean(o); Config.Urls = o.getData().get(0).getServiceAddress(); if (Config.getAuthenticationBean().getData().get(0).isUsePersonCard()) {//人证一体 Config.checkWay = "personCard"; } else {//刷脸 Config.checkWay = "scanFace"; } if (o.getData().get(0).isUseIdcard()){ SharedPreferencesUtils.setParam(activity,"isIDCard",true); IDCardUtile.getInstance(activity).check_idcard(); }else { SharedPreferencesUtils.setParam(activity,"isIDCard",false); } PosUtil.setRs485Status(1); SerialManage.getInstance().open(activity); return o; } /** * 数据处理(剔除\r\n的情况) */ public static byte[] DeleteElement(byte[] arg0){ List list=new ArrayList<>(); for (int i = 0; i < arg0.length; i++) { if (arg0[i]!=13&&arg0[i]!=10){ list.add(arg0[i]); } } byte[] bytes=new byte[list.size()]; for (int i = 0; i < list.size(); i++) { bytes[i]=list.get(i); } return bytes; } /** * dp转px */ public static int dp2px(int dpValues, Context context) { return (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, dpValues, context.getResources().getDisplayMetrics()); } /** * 判断网络状态是否可用 */ public static boolean ping(){ Runtime runtime=Runtime.getRuntime(); try { Process process=runtime.exec("ping -c 3 www.baidu.com"); int ret=process.waitFor(); return ret==0; } catch (Exception e) { e.printStackTrace(); } return false; } /** * 在线配置更新 */ public static Map InternetUpdateConfiguration(){ AuthenticationBean.DataDTO dataDTO=getAuthenticationBean().getData().get(0); Map map=new HashMap<>(); map.put("clickButtonText",dataDTO.getClickButtonText()+""); map.put("faceMode",dataDTO.getFaceMode()+""); map.put("failPageTime",dataDTO.getFailPageTime()); map.put("failText",dataDTO.getFailText()+""); map.put("failVoice",dataDTO.getFailVoice()+""); map.put("forbidPullDown",dataDTO.isForbidPullDown()); map.put("hideNavigationBar",dataDTO.isHideNavigationBar()); map.put("homePageUrl",dataDTO.getHomePageUrl()+""); map.put("isCaptureFace",dataDTO.isIsCaptureFace()); map.put("isNeed1V1",dataDTO.isIsNeed1V1()); map.put("lightMode",dataDTO.getLightMode()+""); map.put("linkageAds",dataDTO.getLinkageAds()+""); map.put("signalNo",dataDTO.getSignalNo()+""); map.put("sucText",dataDTO.getSucText()+""); map.put("sucVoice",dataDTO.getSucVoice()+""); map.put("successPageTime",dataDTO.getSuccessPageTime()); map.put("sn", Config.SN); map.put("token",Config.token); map.put("transitionPageUrl",dataDTO.getTransitionPageUrl()); map.put("useAlipayFace",dataDTO.isUseAlipayFace()); map.put("useIdcard",dataDTO.isUseIdcard()); map.put("useLinkage",dataDTO.isUseLinkage()); map.put("usePersonCard",dataDTO.isUsePersonCard()); map.put("useQrcode",dataDTO.isUseQrcode()); map.put("useSerialPort",dataDTO.getUseSerialPort()+""); map.put("volume",dataDTO.getVolume()); ZoloConfigBean zoloConfigBean=new ZoloConfigBean(); zoloConfigBean.setMirror(dataDTO.getZoloConfig().isIsMirror()); zoloConfigBean.setDisplayMirror(dataDTO.getZoloConfig().isIsDisplayMirror()); zoloConfigBean.setAlgorithmAngle(dataDTO.getZoloConfig().getAlgorithmAngle()); zoloConfigBean.setDisplayAngle(dataDTO.getZoloConfig().getDisplayAngle()); zoloConfigBean.setSupAlgorithmAngle(dataDTO.getZoloConfig().getSupAlgorithmAngle()); map.put("zoloConfig",zoloConfigBean); map.put("isOpenAgeLimit",dataDTO.isOpenAgeLimit()); map.put("limitSectionStart",dataDTO.getLimitSectionStart()); map.put("limitSectionEnd",dataDTO.getLimitSectionEnd()); map.put("ageForbidText",dataDTO.getAgeForbidText()); map.put("mpassword",dataDTO.getMpassword()); map.put("autoLaunch",dataDTO.isAutoLaunch()); map.put("isPushGM",dataDTO.isPushGm()); map.put("GMAddress",dataDTO.getGMAddress()); map.put("GMFrequency",dataDTO.getGMFrequency()); map.put("entryFaceMode",dataDTO.getEntryFaceMode()+""); map.put("logPushUrl",dataDTO.getLogPushUrl()); map.put("cameraType",dataDTO.getCameraType()+""); map.put("cameraBrand",dataDTO.getCameraBrand()); return map; } /** * 日志上报 * @param pLogUploads * @param logType ⽇志类型Logcat/Error/Crash * @param logTag ⽇志标签 * @param logContent ⽇志内容 */ public static void setLogUploads(ContractInterface.PLogUploads pLogUploads, String logType, String logTag, String logContent){ Map map=new HashMap<>(); map.put("logContent",logContent); map.put("logTag",logTag); map.put("logType",logType); map.put("sn",getDeviceSN()); map.put("token","728a6f4f91d23c601d85906129a1647ca110f20f"); String LogPushUrl=""; if (getAuthenticationBean().getData()!=null||IsStringNull(getAuthenticationBean().getData().get(0).getLogPushUrl())){ LogPushUrl="https://hhomc.hz-hanghui.com:8096/middle-management/api/v1/app/log/push"; }else { LogPushUrl=getAuthenticationBean().getData().get(0).getLogPushUrl(); } pLogUploads.PLogUploads(map,LogPushUrl); } /** * 删除过期日志 */ /** * 根据日志类型删除day天前的日志 */ public static void deleteFileLog(String logType, int day) { String logcatDir = AppLogUtils.getLogcatDir(logType); if (TextUtils.isEmpty(logcatDir)) { ToastUtils.showShort("未查询到日志"); return; } int base = day * 86400000;//7天毫秒数 Calendar calendar = Calendar.getInstance(); File file = new File(logcatDir); File[] files = file.listFiles(); if (files != null) { for (File logFile : files) { //判断创建时间是否大于7天 long lastModified = logFile.lastModified(); long time = calendar.getTime().getTime(); long dif = time - lastModified; if (dif >= base) { FileUtils.delete(logFile); } } } else { Log.e("Config 830","未找到本地日志"); } } }