package com.basic.security.utils.socket.outdoor; import android.os.SystemClock; import com.basic.security.manager.BaseSettingManager; import com.basic.security.manager.DeviceManager; import com.basic.security.model.Outdoor; import com.basic.security.utils.Constants; import com.basic.security.utils.SocketUtil; import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; import java.util.Queue; public class OutdoorSendIpSocketClientFromBaseSetting extends Thread { public static final Object lock = new Object(); public static Queue queue = new PriorityQueue<>(); public String serverIp; public static void notifyChanged() { synchronized (OutdoorSendIpSocketClientFromBaseSetting.lock) { OutdoorSendIpSocketClientFromBaseSetting.queue.add("1"); OutdoorSendIpSocketClientFromBaseSetting.lock.notify(); } } public void run() { SocketUtil socketUtil = new SocketUtil(); while (true) { try { serverIp = BaseSettingManager.getIndoorDeviceIp(); // System1.out.println("OutdoorSocketClient.run getIndoorDeviceIp=" + serverIp); socketUtil.openSocket(serverIp, Constants.indoorServerPort); while (true) { synchronized (lock) { if (queue.peek() == null) { lock.wait(10 * 1000); if (queue.size() > 0) { queue.remove(); } } else { if (queue.size() > 0) { queue.remove(); } } } Map outdoorInfoMap = new HashMap<>(); outdoorInfoMap.put(Outdoor.outdoor_device_ip, DeviceManager.getDeviceIp()); outdoorInfoMap.put(Outdoor.outdoor_device_id, DeviceManager.getDeviceId()); String passMode = BaseSettingManager.getDevicePassMode(); String indoorDeviceIp = BaseSettingManager.getIndoorDeviceIp(); String valid = Constants.FALSE;//BaseSettingManager.getValid(); if ("确认通行".equals(passMode) && indoorDeviceIp.length() > 0) { valid = Constants.TRUE; } valid = Constants.TRUE; outdoorInfoMap.put(Outdoor.valid, valid); outdoorInfoMap.put(Outdoor.outdoor_device_name, DeviceManager.getDeviceName()); socketUtil.writeMap(outdoorInfoMap); // System1.out.println("OutdoorSocketClient.run " + outdoorInfoMap); } } catch (Exception e) { // e.printStackTrace(); System1.out.println("OutdoorSendIpSocketClientFromBaseSetting.run " + e.getMessage()); SystemClock.sleep(2 * 1000); } finally { socketUtil.close(); } } } }