package com.mumux.androidtesting.actions.impl; import com.android.uiautomator.testrunner.UiAutomatorTestCase; import com.mumux.androidtesting.actions.OnOffAction; import java.io.IOException; import static com.mumux.androidtesting.actions.impl.ActionUtils.readFile; public class WifiAction extends OnOffAction { private final static int TIMEOUT = 3000; public WifiAction() { super("WIFI", true, "turn on/off wifi", Category.SYSTEM, "Setting not changed"); } private boolean isSatisfied(String current) { return (status && "up".equals(current)) || (!status && "dormant".equals(current)); } @Override public String run(UiAutomatorTestCase uiAutomatorTestCase, Runtime runtime) { String current = readFile("/sys/class/net/wlan0/operstate").trim(); if (isSatisfied(current)) { return null; } String command = "su -c svc wifi " + (status ? "enable" : "disable"); try { runtime.exec(command); } catch (IOException e) { e.printStackTrace(); } long start = System.currentTimeMillis(); while ((System.currentTimeMillis() - start) < TIMEOUT) { current = readFile("/sys/class/net/wlan0/operstate").trim(); if (isSatisfied(current)) { return null; } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } return "Wifi setting not updated"; } }