package com.basic.security.utils; import android.os.SystemClock; import android.text.TextUtils; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.manager.AlarmManager; import com.basic.security.utils.Constants; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonParser; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.net.Socket; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class SocketAcceptedClient extends Thread { Socket mSocket; byte[] buff = new byte[1*1024*1024]; ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); public static boolean needRestart = false; List> newRemoteAlarmList = null; private static final int MAX_BUFFER = 15; private static LinkedList mRgbCameraQueue = new LinkedList(); public SocketAcceptedClient(Socket client) { mSocket = client; } public Comparator> mapComparator = new Comparator>() { public int compare(Map m1, Map m2) { try { double score1 = Double.parseDouble(m1.get("likePer")); double score2 = Double.parseDouble(m2.get("likePer")); return (int)(score1 - score2); } catch (Exception e) { e.printStackTrace(); } return 0; } }; public void parseJson(String msg) { JsonParser parser = new JsonParser(); boolean isJSON = true; JsonElement element = null; try { element = parser.parse(msg); } catch (JsonParseException e) { System.out.println("exception: "+ msg + " " + e); isJSON = false; } newRemoteAlarmList = new ArrayList<>(); if (isJSON && element != null) { Object obj = element.getAsJsonObject(); JsonArray dataList = (JsonArray) ((JsonObject) obj).get("datalist"); for (int i = 0; i < dataList.size(); i++) { JsonObject je = (JsonObject)dataList.get(i); Map newRemoteAlarm = new HashMap<>(); for(Map.Entry entry : je.entrySet()) { Object value = entry.getValue(); String key = entry.getKey(); if (value != null) { if ("baseInfo".equals(key)) { List> matchPersonMapList = new ArrayList<>(); List matchPersonStrList = new ArrayList<>(); String matchPersonListStr = ""; if (value instanceof JsonArray) { JsonArray matchPersonList = (JsonArray)value; for (int ii = 0; ii < matchPersonList.size(); ii++ ) { JsonObject matchPerson = (JsonObject)matchPersonList.get(ii); Map matchPersonMap = new HashMap<>(); for(Map.Entry matchPersonEntry : matchPerson.entrySet()) { String matchPersonKey = matchPersonEntry.getKey(); Object matchPersonValue = matchPersonEntry.getValue(); if (matchPersonValue != null) { String matchPersonValueStr = matchPersonValue.toString(); if (matchPersonValueStr.startsWith("\"")) { matchPersonValueStr = matchPersonValueStr.substring(1); } if (matchPersonValueStr.endsWith("\"")) { matchPersonValueStr = matchPersonValueStr.substring(0, matchPersonValueStr.length() - 1); } matchPersonMap.put(matchPersonKey, matchPersonValueStr); } else { matchPersonMap.put(matchPersonKey, ""); } } matchPersonMap.put("mathPersonStr", matchPersonMap.get("tableName")+ " " + matchPersonMap.get("personName")); matchPersonMapList.add(matchPersonMap); } Collections.sort(matchPersonMapList, mapComparator); for (Map matchPersonMap : matchPersonMapList) { matchPersonStrList.add(matchPersonMap.get("mathPersonStr")); } matchPersonListStr = TextUtils.join("`", matchPersonStrList); } newRemoteAlarm.put("matchPersonListStr", matchPersonListStr); } else { newRemoteAlarm.put(entry.getKey(), value.toString()); } } } newRemoteAlarmList.add(newRemoteAlarm); } // if (newRemoteAlarmList != null && newRemoteAlarmList.size() > 0) { // System.out.println("receive"); // if (1==1) { // return; // } AlarmManager.renameKeys(newRemoteAlarmList); if (AlarmManager.saveRemoteAlarmListToSqlite(newRemoteAlarmList) > 0) { ((MainActivity) BaseApplication.getApplication().activity).fragment_home.refreshGridView(); } } else { if (((MainActivity)BaseApplication.getApplication().activity).currentFragment == ((MainActivity)BaseApplication.getApplication().activity).fragment_home) { ToastUtil.show("获取报警数据失败"); } } } } @Override public void run() { try { BufferedOutputStream outputStream = new BufferedOutputStream(mSocket.getOutputStream()); BufferedInputStream inputStream = new BufferedInputStream(mSocket.getInputStream()); String msg = ""; int len = 0; while ((len = inputStream.read(buff)) != -1) { for (int i1 = 0; i1