package com.layernet.adbwifi; import com.google.common.collect.Iterables; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.WindowManager; import org.jetbrains.android.sdk.AndroidSdkUtils; import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static com.developerphil.adbidea.ui.NotificationHelper.error; import static com.developerphil.adbidea.ui.NotificationHelper.info; public class AdbUSBRestart { private static final ExecutorService EXECUTOR = Executors.newCachedThreadPool(new ThreadFactoryBuilder().setNameFormat("AdbWifi-%d").build()); public static void restart(final Project project){ EXECUTOR.submit(new Runnable() { @Override public void run() { String androidSdkPath; if (AndroidSdkUtils.getAndroidSdkPathsFromExistingPlatforms().size() > 0) { androidSdkPath = Iterables.get(AndroidSdkUtils.getAndroidSdkPathsFromExistingPlatforms(), 0); androidSdkPath = androidSdkPath + "/platform-tools/"; } else { error("Android SDK path not found"); return; } try { WindowManager.getInstance().getStatusBar(project).setInfo("adb kill-server..."); Runtime.getRuntime().exec(androidSdkPath + "adb kill-server"); WindowManager.getInstance().getStatusBar(project).setInfo("adb start-server..."); Runtime.getRuntime().exec(androidSdkPath + "adb start-server"); info("restart successfully"); } catch (IOException e) { e.printStackTrace(); error(e.getMessage()); } } }); } }