package com.basic.security.utils.socket; import android.os.SystemClock; import com.basic.security.base.BaseApplication; import com.basic.security.manager.BaseSettingManager; import com.basic.security.utils.ExceptionUtil; import com.jaredrummler.android.shell.CommandResult; import com.jaredrummler.android.shell.Shell; import java.util.LinkedList; public class RelayServerUtil2 { public static LinkedList openDoorThreadQueue = new LinkedList<>(); public static long lastOpenDoorThread = System.currentTimeMillis(); public static void startOpenDoorThread() { BaseApplication.getApplication().executorService.execute(() -> { while (true) { try { synchronized (openDoorThreadQueue) { if (openDoorThreadQueue.size() > 0) { openDoorThreadQueue.clear(); lastOpenDoorThread = System.currentTimeMillis(); { CommandResult commandResult = Shell.SU.run("cd /sys/class/gpio/", "echo 12 > /sys/class/gpio/export", "echo out > /sys/class/gpio/gpio12/direction ", "echo 0 > /sys/class/gpio/gpio12/value " ); System1.out.println(commandResult); } { CommandResult commandResult = Shell.SU.run("cd /sys/class/gpio/", "echo 157 > /sys/class/gpio/export", "echo out > /sys/class/gpio/gpio157/direction ", "echo 1 > /sys/class/gpio/gpio157/value " ); System1.out.println(commandResult); } } } if (System.currentTimeMillis() - lastOpenDoorThread > BaseSettingManager.getOpenDoorDurationSeconds() * 1000) { { CommandResult commandResult = Shell.SU.run("cd /sys/class/gpio/", "echo 12 > /sys/class/gpio/export", "echo out > /sys/class/gpio/gpio12/direction ", "echo 1 > /sys/class/gpio/gpio12/value " ); } { CommandResult commandResult = Shell.SU.run("cd /sys/class/gpio/", "echo 157 > /sys/class/gpio/export", "echo out > /sys/class/gpio/gpio157/direction ", "echo 0 > /sys/class/gpio/gpio157/value " ); } } } catch (Exception e) { ExceptionUtil.printException(e); } SystemClock.sleep(1000); } }); } public static boolean open() { synchronized (openDoorThreadQueue) { openDoorThreadQueue.add(System.currentTimeMillis() + ""); } return true; } }