Config.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763
  1. package com.telpo.facenormal.utile;
  2. import android.app.Activity;
  3. import android.app.ActivityManager;
  4. import android.content.Context;
  5. import android.content.pm.PackageInfo;
  6. import android.content.pm.PackageManager;
  7. import android.graphics.Bitmap;
  8. import android.graphics.BitmapFactory;
  9. import android.hardware.Camera;
  10. import android.net.ConnectivityManager;
  11. import android.net.NetworkInfo;
  12. import android.os.Build;
  13. import android.os.Bundle;
  14. import android.os.Environment;
  15. import android.text.TextUtils;
  16. import android.util.Base64;
  17. import android.util.Log;
  18. import android.util.TypedValue;
  19. import android.widget.Toast;
  20. import com.alipay.iot.bpaas.api.BPaaSApi;
  21. import com.alipay.iot.bpaas.api.service.BPaaSCallback;
  22. import com.alipay.iot.bpaas.api.service.BPaaSResponse;
  23. import com.blankj.utilcode.util.FileUtils;
  24. import com.blankj.utilcode.util.ToastUtils;
  25. import com.common.pos.api.util.PosUtil;
  26. import com.telpo.facenormal.bean.AuthenticationBean;
  27. import com.telpo.facenormal.bean.CheckNumBean;
  28. import com.telpo.facenormal.bean.GetFederatedPlatformsBean;
  29. import com.telpo.facenormal.bean.SetFederatedPlatformsBean;
  30. import com.telpo.facenormal.bean.ZoloConfigBean;
  31. import com.telpo.facenormal.contract.ContractInterface;
  32. import com.telpo.facenormal.utile.Serial.SerialManage;
  33. import com.telpo.facenormal.utile.loacat.AppLogUtils;
  34. import com.zkteco.android.biometric.module.idcard.meta.IDCardInfo;
  35. import java.io.ByteArrayOutputStream;
  36. import java.io.File;
  37. import java.lang.reflect.Method;
  38. import java.util.ArrayList;
  39. import java.util.Calendar;
  40. import java.util.HashMap;
  41. import java.util.List;
  42. import java.util.Map;
  43. import java.util.concurrent.ScheduledExecutorService;
  44. import static android.content.Context.ACTIVITY_SERVICE;
  45. /**
  46. * 数据配置
  47. */
  48. public class Config {
  49. public static boolean doorStatus=false;//门磁信号状态 短接-true false-断开
  50. public static String[] DevicesPath=new String[0];
  51. public static String taskStatus = ""; //wait-等待 doing-执行对应操作 complete-得到结果并开始执行商户或联动平台接口请求
  52. public static ScheduledExecutorService scheduledExecutor;
  53. public static int openTimes=0;//开门次数hen
  54. public static int PassableOpenTimes=0;//可通行人数
  55. public static String taskFlag="noInfo";//noInfo or existInfo
  56. public static String SN= getDeviceSN();//设备sn号 getDeviceSN()
  57. public static String token="e69dade5b79ee888aae6b187";
  58. public static String App_ID = "";//支付宝⽤⼾库ID
  59. public static String machineAppId = "";//设备appId
  60. public static String serviceAddress = "";//商户地址
  61. public static String serviceAppId = "";//商户appid
  62. public static String trade = "";//场景参数(TRAFFIC)
  63. public static String userLibName = "";//⽤⼾库名称 --填写 A/B/C
  64. public static String sceneName = "";//场景名称(出⾏)
  65. public static String mode = "";//模式 mode: public/close/elasticity 三个参数分别代表 开放/封闭/弹性
  66. public static String logicGroupID = "";// elasticity 时 逻辑⽤⼾库ID
  67. public static String GroupID = "";// elasticity 时 逻辑⽤⼾库ID
  68. public static String passWay="normal";//判断是否为机场
  69. public static String APP_VERION = "1.0";
  70. public static String mSessionId = "";
  71. public static boolean bRepeatRead = true;//是否开始读卡
  72. public static boolean checkBoxRepeatRead = true;//是否连续读卡
  73. public static String linkageAds="";//联动平台地址
  74. public static boolean isNavigationBarVisibility = false;
  75. public static boolean isNotificationBarVisibility = false;
  76. public static String checkWay="";
  77. public static String name="";//姓名
  78. public static String licid="";//身份证号
  79. public static String QrData="";//二维码返回
  80. public static Bitmap avatarBitmap=null;//身份证头像或者商户平台返回头像
  81. public static AuthenticationBean authenticationBean;
  82. public static AuthenticationBean getAuthenticationBean() {
  83. if (authenticationBean==null){
  84. authenticationBean=AuthenticationBeans();
  85. }
  86. return authenticationBean;
  87. }
  88. public static AuthenticationBean AuthenticationBeans() {
  89. AuthenticationBean authenticationBean=new AuthenticationBean();
  90. authenticationBean.setMsg("本地配置");
  91. List<AuthenticationBean.DataDTO> dataDTOS=new ArrayList<>();
  92. AuthenticationBean.DataDTO dataDTO=new AuthenticationBean.DataDTO();
  93. dataDTO.setName("");
  94. dataDTO.setMachineAppId("");
  95. dataDTO.setServiceAppId("");
  96. dataDTO.setServiceAddress("");
  97. dataDTO.setThirdAuth(false);
  98. dataDTO.setSceneName("");
  99. dataDTO.setTrade("");
  100. dataDTO.setUserLibName("");
  101. dataDTO.setGroupId("");
  102. dataDTO.setLogicGroupID("");
  103. dataDTO.setMode("close");
  104. dataDTO.setUseAlipayFace(false);
  105. dataDTO.setLinkageAds("");
  106. dataDTO.setSuccessPageTime(2);
  107. dataDTO.setFailPageTime(5);
  108. AuthenticationBean.DataDTO.ZoloConfigDTO zoloConfigBean=new AuthenticationBean.DataDTO.ZoloConfigDTO();
  109. zoloConfigBean.setSupAlgorithmAngle(90);
  110. zoloConfigBean.setAlgorithmAngle(270);
  111. zoloConfigBean.setDisplayAngle(270);
  112. zoloConfigBean.setIsMirror(true);
  113. zoloConfigBean.setIsDisplayMirror(false);
  114. dataDTO.setZoloConfig(zoloConfigBean);
  115. dataDTO.setUseIdcard(true);
  116. dataDTO.setUsePersonCard(false);
  117. dataDTO.setUseQrcode(true);
  118. dataDTO.setUseLinkage(true);
  119. dataDTO.setFaceMode("auto");
  120. dataDTO.setClickButtonText("点击开始刷脸核验");
  121. dataDTO.setIsCaptureFace(false);
  122. dataDTO.setUseSerialPort("default");
  123. dataDTO.setSignalNo("");
  124. dataDTO.setLightMode("auto");
  125. dataDTO.setVolume(80);
  126. dataDTO.setSucVoice("请通行");
  127. dataDTO.setSucText("请通行");
  128. dataDTO.setFailText("⽐对失败,请联系现场⼯作⼈员");
  129. dataDTO.setFailVoice("⽐对失败,请联系现场⼯作⼈员");
  130. dataDTO.setHideNavigationBar(false);
  131. dataDTO.setForbidPullDown(false);
  132. dataDTO.setHomePageUrl("");
  133. dataDTO.setTransitionPageUrl("");
  134. dataDTO.setIsNeed1V1(true);
  135. dataDTO.setHeartTrackingUrl("");
  136. dataDTO.setTransitPushUrl("");
  137. dataDTO.setShowTopBar(false);
  138. dataDTO.setLeftTopBarText("");
  139. dataDTO.setRightTopBarText("");
  140. dataDTO.setPassWay("normal");
  141. dataDTO.setOpenAgeLimit(false);
  142. dataDTO.setLimitSectionEnd(0);
  143. dataDTO.setLimitSectionStart(1);
  144. dataDTO.setAgeForbidText("禁止进入");
  145. dataDTO.setMpassword("142536");
  146. dataDTO.setPushGm(false);
  147. dataDTO.setGMAddress("");
  148. dataDTO.setGMFrequency(1000);
  149. dataDTO.setAutoLaunch(true);
  150. dataDTO.setEntryFaceMode("zero");
  151. dataDTO.setCameraBrand("IR");
  152. dataDTO.setCameraType("Normal");
  153. dataDTOS.add(dataDTO);
  154. authenticationBean.setData(dataDTOS);
  155. return authenticationBean;
  156. }
  157. public static void setAuthenticationBean(AuthenticationBean authenticationBean) {
  158. Config.authenticationBean = authenticationBean;
  159. }
  160. public static GetFederatedPlatformsBean getFederatedPlatformsBean;
  161. public static GetFederatedPlatformsBean getGetFederatedPlatformsBean() {
  162. return getFederatedPlatformsBean;
  163. }
  164. public static void setGetFederatedPlatformsBean(GetFederatedPlatformsBean getFederatedPlatformsBean) {
  165. Config.getFederatedPlatformsBean = getFederatedPlatformsBean;
  166. }
  167. public static SetFederatedPlatformsBean setFederatedPlatformsBean;
  168. public static SetFederatedPlatformsBean getSetFederatedPlatformsBean() {
  169. return setFederatedPlatformsBean;
  170. }
  171. public static void setSetFederatedPlatformsBean(SetFederatedPlatformsBean setFederatedPlatformsBean) {
  172. Config.setFederatedPlatformsBean = setFederatedPlatformsBean;
  173. }
  174. public static String Url = "https://tx.hz-hanghui.com:8088/hanghui-server-platform/";
  175. //申请三要素
  176. public static String Urls = "https://tx.hz-hanghui.com:8088/hanghui-server-platform/";
  177. //根据三要素返回最终结果url http://115.227.34.58:1832/ http://192.168.11.3:1832/
  178. public static String FederatedPlatformsUrl1 = "";//115.227.34.58:1832
  179. public static String FederatedPlatformsUrl = "http://"+FederatedPlatformsUrl1+"/";
  180. //通用
  181. public static String DeviceStateReportUrl = "https://tx.hz-hanghui.com:8088/";
  182. //设备定时上报
  183. public static String trackingUrl = "";
  184. //设备记录上报
  185. public static String EventRecordsUrl = "";
  186. //将选中数据添加到数组中
  187. public static List<CheckNumBean> CheckList=new ArrayList<>();
  188. //门磁信号地址
  189. public static String GMAddress = "http://192.168.11.117:8080/index/test";
  190. //门磁信号发送频率
  191. public static int GMFrequency = 1000;//默认1s
  192. /**
  193. * 身份证阅读器
  194. * @param bitmap
  195. * @return
  196. */
  197. public static IDCardInfo setIDCardInfo;
  198. public static IDCardInfo getIDCardInfo() {
  199. return setIDCardInfo;
  200. }
  201. public static void setIDCardInfo(IDCardInfo setIDCardInfo) {
  202. Config.setIDCardInfo = setIDCardInfo;
  203. }
  204. public static String bitmapToString(Bitmap bitmap) {
  205. //将Bitmap转换成字符串
  206. try {
  207. String string = null;
  208. ByteArrayOutputStream bStream = new ByteArrayOutputStream();
  209. bitmap.compress(Bitmap.CompressFormat.PNG, 100, bStream);
  210. byte[] bytes = bStream.toByteArray();
  211. string = Base64.encodeToString(bytes, Base64.DEFAULT);
  212. return string;
  213. } catch (Exception e) {
  214. e.printStackTrace();
  215. return "";
  216. }
  217. }
  218. public static Bitmap stringToBitmap(String string) {
  219. // 将字符串转换成Bitmap类型
  220. Bitmap bitmap = null;
  221. try {
  222. byte[] bitmapArray;
  223. bitmapArray = Base64.decode(string, Base64.DEFAULT);
  224. bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,
  225. bitmapArray.length);
  226. } catch (Exception e) {
  227. e.printStackTrace();
  228. }
  229. return bitmap;
  230. }
  231. /**
  232. * Base64转Bitmap
  233. *
  234. * @return Bitmap 图片
  235. */
  236. public static Bitmap base642Bitmap(String base64String) {
  237. if (null == base64String) throw new NullPointerException();
  238. byte[] decode = Base64.decode(base64String.split(",")[1], Base64.DEFAULT);
  239. Bitmap mBitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);
  240. return mBitmap;
  241. }
  242. //获取设备SN码
  243. public static String getDeviceSN(){
  244. String serial = null;
  245. try {
  246. Class<?> c =Class.forName("android.os.SystemProperties");
  247. Method get =c.getMethod("get", String.class);
  248. if(Build.VERSION.SDK_INT < 28){//28 is andoird 9.0 24-7.0 22-5.1
  249. serial = (String)get.invoke(c, "ro.serialno");
  250. } else{
  251. serial = (String)get.invoke(c, "persist.sys.hrSerial");//vendor.gsm.serial
  252. }
  253. } catch (Exception e) {
  254. e.printStackTrace();
  255. }
  256. //紫鹏设备
  257. if (TextUtils.isEmpty(serial)) {
  258. serial = Build.SERIAL;
  259. }
  260. return serial;
  261. }
  262. //获取版本号
  263. public static String getVersionName(Context activity){
  264. PackageInfo packageInfo = null;
  265. try {
  266. packageInfo = activity.getPackageManager()
  267. .getPackageInfo(activity.getPackageName(), 0);
  268. } catch (PackageManager.NameNotFoundException e) {
  269. e.printStackTrace();
  270. }
  271. //获取APP版本versionName
  272. String versionName = packageInfo.versionName;
  273. //获取APP版本versionCode
  274. int versionCode = packageInfo.versionCode;
  275. return versionName;
  276. }
  277. //获取版本code
  278. public static int getVersionCode(Activity activity){
  279. PackageInfo packageInfo = null;
  280. try {
  281. packageInfo = activity.getPackageManager()
  282. .getPackageInfo(activity.getPackageName(), 0);
  283. } catch (PackageManager.NameNotFoundException e) {
  284. e.printStackTrace();
  285. }
  286. //获取APP版本versionName
  287. String versionName = packageInfo.versionName;
  288. //获取APP版本versionCode
  289. int versionCode = packageInfo.versionCode;
  290. return versionCode;
  291. }
  292. //判断是否有网络连接
  293. public static boolean isNetworkConnected(Context context) {
  294. if (context != null) {
  295. ConnectivityManager mConnectivityManager = (ConnectivityManager) context
  296. .getSystemService(Context.CONNECTIVITY_SERVICE);
  297. NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
  298. if (mNetworkInfo != null) {
  299. return mNetworkInfo.isAvailable();
  300. }
  301. }
  302. return false;
  303. }
  304. public static int getNumberOfTicketChecks(Activity activity) {
  305. Config.openTimes= (int) SharedPreferencesUtils.getParam(activity,"openTimesNum",0);
  306. Config.PassableOpenTimes= (int) SharedPreferencesUtils.getParam(activity, "PassableOpenTimes", 0);
  307. int NumberOfTicketChecks= (int) SharedPreferencesUtils.getParam(activity,"NumberOfTicketChecks",0);
  308. return NumberOfTicketChecks;
  309. }
  310. // 停止刷脸服务
  311. public static void stopBpaasService(String mSessionId,FaceScenicUtile faceScenicUtile,Context context) {
  312. if (mSessionId == null || mSessionId.equals("")) {
  313. return;
  314. }
  315. BPaaSApi.getInstance().stopBPaaSService(Config.machineAppId, "BPaasVerifyID", new Bundle(), mSessionId, new BPaaSCallback() {
  316. @Override
  317. public void onResponse(BPaaSResponse bPaaSResponse) {
  318. if (bPaaSResponse == null || bPaaSResponse.getCode() == BPaaSResponse.RESULT_CODE_FAIL) {
  319. AppLogUtils.w(true,"停止刷脸服务失败 stopBPaaSService bPaaSResponse=" + bPaaSResponse);
  320. return;
  321. }
  322. String subCode = bPaaSResponse.getSubCode();
  323. int code = bPaaSResponse.getCode();
  324. setFaceScenicUtile(Config.getAuthenticationBean().getData().get(0).getLightMode(),faceScenicUtile,false,context);
  325. AppLogUtils.d(true,"成功 stopBPaaSService subCode=" + subCode + "code:" + code);
  326. }
  327. @Override
  328. public void onEvent(String s, String s1, Bundle bundle) {
  329. }
  330. });
  331. mSessionId = null;
  332. Config.mSessionId="";
  333. }
  334. public static void getToast(Activity activity){
  335. Toast.makeText(activity,"配置更新成功",Toast.LENGTH_SHORT).show();
  336. }
  337. // 服务是否运行
  338. public static boolean isServiceRunning(Context context, String serviceName) {
  339. ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
  340. for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
  341. if (serviceName.equals(service.service.getClassName())) {
  342. return true;
  343. }
  344. }
  345. return false;
  346. }
  347. /**
  348. * 判断相机是否占用
  349. */
  350. public static boolean isCameraCanUse() {
  351. boolean canUse = false;
  352. Camera mCamera = null;
  353. try {
  354. mCamera = Camera.open(0);
  355. Camera.Parameters mParameters = mCamera.getParameters();
  356. mCamera.setParameters(mParameters);
  357. } catch (Exception e) {
  358. canUse = false;
  359. }
  360. if (mCamera != null) {
  361. mCamera.release();
  362. canUse = true;
  363. }
  364. return canUse;
  365. }
  366. /**
  367. * 删除文件夹及文件夹下所有内容
  368. */
  369. //删除文件夹和文件夹里面的文件
  370. public static void deleteDirWihtFile(File dir) {
  371. if (dir == null || !dir.exists() || !dir.isDirectory())
  372. return;
  373. for (File file : dir.listFiles()) {
  374. if (file.isFile())
  375. file.delete(); // 删除所有文件
  376. else if (file.isDirectory())
  377. deleteDirWihtFile(file); // 递规的方式删除文件夹
  378. }
  379. dir.delete();// 删除目录本身
  380. }
  381. /**
  382. * 判断指定目录是否存在
  383. */
  384. public static void ExistsFile(){
  385. String sdPath = Environment.getExternalStorageDirectory() + "/";
  386. // 文件保存路径
  387. String mSavePath = sdPath + "oil";
  388. File file = new File(mSavePath);
  389. if (!file.exists()){// 判断当前目录是否存在,存在返回true,否则返回false
  390. deleteDirWihtFile(file);
  391. }
  392. }
  393. /**
  394. * 判断版本号更新
  395. */
  396. /**
  397. * 判断版本更新
  398. * @param localVersion 本地app 版本号
  399. * @param newVersion 最新版本号
  400. * @return true 需要更新 false 不用
  401. */
  402. public static boolean updateApp(String localVersion, String newVersion) {
  403. String[] localVersionArray = localVersion.split("\\.");
  404. String[] newVersionArray = newVersion.split("\\.");
  405. if (localVersionArray.length < newVersionArray.length) {
  406. int cha = newVersionArray.length - localVersionArray.length;
  407. for (int i = 0; i < cha; i++) {
  408. localVersion = localVersion + ".0";
  409. }
  410. localVersionArray = localVersion.split("\\.");
  411. }
  412. try {
  413. for (int i = 0; i < newVersionArray.length; i++) {
  414. int temp = Integer.parseInt(newVersionArray[i]);
  415. int compar = Integer.parseInt(localVersionArray[i]);
  416. if (temp > compar) {
  417. return true;
  418. }
  419. }
  420. } catch (Exception e) {
  421. e.printStackTrace();
  422. }
  423. return false;
  424. }
  425. /**
  426. * 判断刷脸utile是否存在
  427. * @param faceScenicUtile
  428. * @param isLedLight
  429. */
  430. public static void setFaceScenicUtile(String Type,FaceScenicUtile faceScenicUtile, boolean isLedLight,Context context){
  431. if (faceScenicUtile!=null){
  432. switch (Type){
  433. case "open":
  434. faceScenicUtile.setLedLight(true);
  435. break;
  436. case "auto":
  437. faceScenicUtile.setLedLight(isLedLight);
  438. break;
  439. case "close":
  440. faceScenicUtile.setLedLight(false);
  441. break;
  442. }
  443. }
  444. }
  445. /**
  446. * 判断设备为f2
  447. */
  448. public static boolean IsF2(){
  449. if (Build.MODEL.indexOf("F2")!=-1){
  450. return true;
  451. }else {
  452. return false;
  453. }
  454. }
  455. /**
  456. * 非空判断
  457. */
  458. public static boolean IsStringNull(String string){
  459. string=string+"";
  460. if (string.equals("")||string.equals("null")){
  461. return true;
  462. }else {
  463. return false;
  464. }
  465. }
  466. public static SetFederatedPlatformsBean setFederatedPlatformsBeans(String sn, int Action, int Verifytype, String Cardid,
  467. String Name, String Phone) {
  468. SetFederatedPlatformsBean setFederatedPlatformsBean = new SetFederatedPlatformsBean();
  469. setFederatedPlatformsBean.setSN(sn);
  470. setFederatedPlatformsBean.setAction(Action);
  471. SetFederatedPlatformsBean.DataDTO dataDTO = new SetFederatedPlatformsBean.DataDTO();
  472. dataDTO.setExtend3("");
  473. dataDTO.setExtend6("");
  474. dataDTO.setExtend7("");
  475. dataDTO.setHsStatus("");
  476. dataDTO.setJkmStatus("");
  477. dataDTO.setJkmType("0");
  478. dataDTO.setVerifytype(Verifytype);
  479. dataDTO.setCardid(Cardid);
  480. dataDTO.setName(Name);
  481. dataDTO.setPhone(Phone);
  482. dataDTO.setTime(DateUtil.getTime("yyyy年MM月dd日 HH:mm:ss"));
  483. List<SetFederatedPlatformsBean.DataDTO> list = new ArrayList<>();
  484. list.add(dataDTO);
  485. setFederatedPlatformsBean.setData(list);
  486. Config.setSetFederatedPlatformsBean(setFederatedPlatformsBean);
  487. return setFederatedPlatformsBean;
  488. }
  489. /**
  490. * 根据身份证获取年龄
  491. * @param idCard 身份证号码
  492. * @return 年龄
  493. */
  494. /**
  495. *根据身份证号码计算年龄
  496. * @param idNumber 考虑到了15位身份证,但不一定存在
  497. */
  498. /**
  499. * 通过身份证号码获取出生日期、性别、年龄
  500. * @param certificateNo
  501. * @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男
  502. */
  503. public static Map<String, String> getBirAgeSex(String certificateNo) {
  504. String birthday = "";
  505. String age = "";
  506. String sexCode = "";
  507. int year = Calendar.getInstance().get(Calendar.YEAR);
  508. char[] number = certificateNo.toCharArray();
  509. boolean flag = true;
  510. if (number.length == 15) {
  511. for (int x = 0; x < number.length; x++) {
  512. if (!flag) return new HashMap<String, String>();
  513. flag = Character.isDigit(number[x]);
  514. }
  515. } else if (number.length == 18) {
  516. for (int x = 0; x < number.length - 1; x++) {
  517. if (!flag) return new HashMap<String, String>();
  518. flag = Character.isDigit(number[x]);
  519. }
  520. }
  521. if (flag && certificateNo.length() == 15) {
  522. birthday = "19" + certificateNo.substring(6, 8);
  523. sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? "F" : "M";
  524. age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + "";
  525. } else if (flag && certificateNo.length() == 18) {
  526. birthday = certificateNo.substring(6, 10) ;
  527. sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? "F" : "M";
  528. age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";
  529. }
  530. Map<String, String> map = new HashMap<String, String>();
  531. map.put("birthday", birthday);
  532. map.put("age", age);
  533. map.put("sexCode",sexCode);
  534. return map;
  535. }
  536. public static int getAge(String certificateNo){
  537. if (IsStringNull(certificateNo)){
  538. return -1;
  539. }
  540. Map<String ,String > map=getBirAgeSex(certificateNo);
  541. String age=map.get("age");
  542. return Integer.parseInt(age);
  543. }
  544. /**
  545. * 更新配置项
  546. */
  547. public static AuthenticationBean UpdateConfiguration(AuthenticationBean o,Activity activity){
  548. Config.App_ID = o.getData().get(0).getGroupId();
  549. Config.machineAppId = o.getData().get(0).getMachineAppId();
  550. Config.serviceAddress = o.getData().get(0).getServiceAddress();
  551. Config.serviceAppId = o.getData().get(0).getServiceAppId();
  552. Config.trade = o.getData().get(0).getTrade();
  553. Config.userLibName = o.getData().get(0).getUserLibName();
  554. Config.sceneName = o.getData().get(0).getSceneName();
  555. Config.mode = o.getData().get(0).getMode();
  556. Config.logicGroupID = o.getData().get(0).getLogicGroupID();
  557. Config.linkageAds = "https://"+o.getData().get(0).getLinkageAds()+"/";
  558. Config.trackingUrl=o.getData().get(0).getHeartTrackingUrl() ;
  559. Config.EventRecordsUrl=o.getData().get(0).getTransitPushUrl()+"/";
  560. Config.FederatedPlatformsUrl1=o.getData().get(0).getLinkageAds();
  561. Config.FederatedPlatformsUrl = "http://"+Config.FederatedPlatformsUrl1+"/";
  562. Config.passWay=o.getData().get(0).getPassWay()+"";
  563. if (Config.passWay.equals("")||Config.passWay.equals("null")){
  564. Config.passWay="normal";
  565. }
  566. if (o.getData().get(0).getMode().equals("elasticity")) {//mode = elasticity 时用logicGroupID
  567. Config.GroupID = o.getData().get(0).getLogicGroupID();
  568. } else {
  569. Config.GroupID = o.getData().get(0).getGroupId();
  570. }
  571. Config.setAuthenticationBean(o);
  572. Config.Urls = o.getData().get(0).getServiceAddress();
  573. if (Config.getAuthenticationBean().getData().get(0).isUsePersonCard()) {//人证一体
  574. Config.checkWay = "personCard";
  575. } else {//刷脸
  576. Config.checkWay = "scanFace";
  577. }
  578. if (o.getData().get(0).isUseIdcard()){
  579. SharedPreferencesUtils.setParam(activity,"isIDCard",true);
  580. IDCardUtile.getInstance(activity).check_idcard();
  581. }else {
  582. SharedPreferencesUtils.setParam(activity,"isIDCard",false);
  583. }
  584. PosUtil.setRs485Status(1);
  585. SerialManage.getInstance().open(activity);
  586. return o;
  587. }
  588. /**
  589. * 数据处理(剔除\r\n的情况)
  590. */
  591. public static byte[] DeleteElement(byte[] arg0){
  592. List<Byte> list=new ArrayList<>();
  593. for (int i = 0; i < arg0.length; i++) {
  594. if (arg0[i]!=13&&arg0[i]!=10){
  595. list.add(arg0[i]);
  596. }
  597. }
  598. byte[] bytes=new byte[list.size()];
  599. for (int i = 0; i < list.size(); i++) {
  600. bytes[i]=list.get(i);
  601. }
  602. return bytes;
  603. }
  604. /**
  605. * dp转px
  606. */
  607. public static int dp2px(int dpValues, Context context) {
  608. return (int) TypedValue.applyDimension(
  609. TypedValue.COMPLEX_UNIT_DIP, dpValues,
  610. context.getResources().getDisplayMetrics());
  611. }
  612. /**
  613. * 判断网络状态是否可用
  614. */
  615. public static boolean ping(){
  616. Runtime runtime=Runtime.getRuntime();
  617. try {
  618. Process process=runtime.exec("ping -c 3 www.baidu.com");
  619. int ret=process.waitFor();
  620. return ret==0;
  621. } catch (Exception e) {
  622. e.printStackTrace();
  623. }
  624. return false;
  625. }
  626. /**
  627. * 在线配置更新
  628. */
  629. public static Map<String ,Object> InternetUpdateConfiguration(){
  630. AuthenticationBean.DataDTO dataDTO=getAuthenticationBean().getData().get(0);
  631. Map<String ,Object> map=new HashMap<>();
  632. map.put("clickButtonText",dataDTO.getClickButtonText()+"");
  633. map.put("faceMode",dataDTO.getFaceMode()+"");
  634. map.put("failPageTime",dataDTO.getFailPageTime());
  635. map.put("failText",dataDTO.getFailText()+"");
  636. map.put("failVoice",dataDTO.getFailVoice()+"");
  637. map.put("forbidPullDown",dataDTO.isForbidPullDown());
  638. map.put("hideNavigationBar",dataDTO.isHideNavigationBar());
  639. map.put("homePageUrl",dataDTO.getHomePageUrl()+"");
  640. map.put("isCaptureFace",dataDTO.isIsCaptureFace());
  641. map.put("isNeed1V1",dataDTO.isIsNeed1V1());
  642. map.put("lightMode",dataDTO.getLightMode()+"");
  643. map.put("linkageAds",dataDTO.getLinkageAds()+"");
  644. map.put("signalNo",dataDTO.getSignalNo()+"");
  645. map.put("sucText",dataDTO.getSucText()+"");
  646. map.put("sucVoice",dataDTO.getSucVoice()+"");
  647. map.put("successPageTime",dataDTO.getSuccessPageTime());
  648. map.put("sn", Config.SN);
  649. map.put("token",Config.token);
  650. map.put("transitionPageUrl",dataDTO.getTransitionPageUrl());
  651. map.put("useAlipayFace",dataDTO.isUseAlipayFace());
  652. map.put("useIdcard",dataDTO.isUseIdcard());
  653. map.put("useLinkage",dataDTO.isUseLinkage());
  654. map.put("usePersonCard",dataDTO.isUsePersonCard());
  655. map.put("useQrcode",dataDTO.isUseQrcode());
  656. map.put("useSerialPort",dataDTO.getUseSerialPort()+"");
  657. map.put("volume",dataDTO.getVolume());
  658. ZoloConfigBean zoloConfigBean=new ZoloConfigBean();
  659. zoloConfigBean.setMirror(dataDTO.getZoloConfig().isIsMirror());
  660. zoloConfigBean.setDisplayMirror(dataDTO.getZoloConfig().isIsDisplayMirror());
  661. zoloConfigBean.setAlgorithmAngle(dataDTO.getZoloConfig().getAlgorithmAngle());
  662. zoloConfigBean.setDisplayAngle(dataDTO.getZoloConfig().getDisplayAngle());
  663. zoloConfigBean.setSupAlgorithmAngle(dataDTO.getZoloConfig().getSupAlgorithmAngle());
  664. map.put("zoloConfig",zoloConfigBean);
  665. map.put("isOpenAgeLimit",dataDTO.isOpenAgeLimit());
  666. map.put("limitSectionStart",dataDTO.getLimitSectionStart());
  667. map.put("limitSectionEnd",dataDTO.getLimitSectionEnd());
  668. map.put("ageForbidText",dataDTO.getAgeForbidText());
  669. map.put("mpassword",dataDTO.getMpassword());
  670. map.put("autoLaunch",dataDTO.isAutoLaunch());
  671. map.put("isPushGM",dataDTO.isPushGm());
  672. map.put("GMAddress",dataDTO.getGMAddress());
  673. map.put("GMFrequency",dataDTO.getGMFrequency());
  674. map.put("entryFaceMode",dataDTO.getEntryFaceMode()+"");
  675. map.put("logPushUrl",dataDTO.getLogPushUrl());
  676. map.put("cameraType",dataDTO.getCameraType()+"");
  677. map.put("cameraBrand",dataDTO.getCameraBrand());
  678. return map;
  679. }
  680. /**
  681. * 日志上报
  682. * @param pLogUploads
  683. * @param logType ⽇志类型Logcat/Error/Crash
  684. * @param logTag ⽇志标签
  685. * @param logContent ⽇志内容
  686. */
  687. public static void setLogUploads(ContractInterface.PLogUploads pLogUploads, String logType,
  688. String logTag, String logContent){
  689. Map<String ,Object> map=new HashMap<>();
  690. map.put("logContent",logContent);
  691. map.put("logTag",logTag);
  692. map.put("logType",logType);
  693. map.put("sn",getDeviceSN());
  694. map.put("token","728a6f4f91d23c601d85906129a1647ca110f20f");
  695. String LogPushUrl="";
  696. if (getAuthenticationBean().getData()!=null||IsStringNull(getAuthenticationBean().getData().get(0).getLogPushUrl())){
  697. LogPushUrl="https://hhomc.hz-hanghui.com:8096/middle-management/api/v1/app/log/push";
  698. }else {
  699. LogPushUrl=getAuthenticationBean().getData().get(0).getLogPushUrl();
  700. }
  701. pLogUploads.PLogUploads(map,LogPushUrl);
  702. }
  703. /**
  704. * 删除过期日志
  705. */
  706. /**
  707. * 根据日志类型删除day天前的日志
  708. */
  709. public static void deleteFileLog(String logType, int day) {
  710. String logcatDir = AppLogUtils.getLogcatDir(logType);
  711. if (TextUtils.isEmpty(logcatDir)) {
  712. ToastUtils.showShort("未查询到日志");
  713. return;
  714. }
  715. int base = day * 86400000;//7天毫秒数
  716. Calendar calendar = Calendar.getInstance();
  717. File file = new File(logcatDir);
  718. File[] files = file.listFiles();
  719. if (files != null) {
  720. for (File logFile : files) {
  721. //判断创建时间是否大于7天
  722. long lastModified = logFile.lastModified();
  723. long time = calendar.getTime().getTime();
  724. long dif = time - lastModified;
  725. if (dif >= base) {
  726. FileUtils.delete(logFile);
  727. }
  728. }
  729. } else {
  730. Log.e("Config 830","未找到本地日志");
  731. }
  732. }
  733. }