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<String> 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<String, String> 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();
|
}
|
}
|
}
|
}
|