package com.daxiang.core.mobile.android;

import com.android.ddmlib.AndroidDebugBridge;
import com.daxiang.utils.Terminal;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

import java.io.File;
import java.io.IOException;

/**
 * Created by jiangyitao.
 */
@Slf4j
public class ADB {

    public static void addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener deviceChangeListener) {
        AndroidDebugBridge.init(false);
        AndroidDebugBridge.createBridge(getPath(), false);
        AndroidDebugBridge.addDeviceChangeListener(deviceChangeListener);
    }

    public static void killServer() throws IOException {
        Terminal.execute("adb kill-server");
    }

    public static void startServer() throws IOException {
        Terminal.execute("adb start-server");
    }

    /**
     * 获取adb路径
     *
     * @return
     */
    private static String getPath() {
        String androidHome = System.getenv("ANDROID_HOME");
        log.info("环境变量ANDROID_HOME: {}", androidHome);

        if (StringUtils.isEmpty(androidHome)) {
            throw new RuntimeException("未获取到ANDROID_HOME,请配置ANDROID_HOME环境变量");
        }

        String adbPath = androidHome + File.separator + "platform-tools" + File.separator;
        if (Terminal.IS_WINDOWS) {
            adbPath = adbPath + "adb.exe";
        } else {
            adbPath = adbPath + "adb";
        }
        log.info("adb路径: {}", adbPath);
        return adbPath;
    }
}