java中通过Adb判断PC是否连接了移动设备

最近用到PC端和移动端通过USB连接传输数据的方式,于是总在使用Adb命令,为了逻辑的严谨和代码容错,想在传输数据的之前,PC和移动端先建立一次会话,防止移动端还未连接就直接传输数据会报错,找了很久并未发现这类方法,于是自己在代码里面通过Adb实现了这个方法。供大家参考,欢迎大家有更好的实现方式多多交流。

直接上代码

	/**
     * @Description: 判断是否连接设备
     * @Param: []
     * @return: boolean  
     * @Author: Mengw9
     */
    public static boolean isLinkDevices(){
        String str = this.adbCmd("D:adbadb devices");
        assert str != null;
        str = str.replaceAll("List of devices attached", "").replaceAll("
", "");
        if (!str.isEmpty()){
            System.out.println("已连接设备,设备名为:"+str);
            return true;
        }
        System.out.println("未连接设备");
        return false;
    }

	/**
     * @Description: 执行cmd命令
     * @Param: [cmd]
     * @return: void
     * @Author: Mengw9
     */
	public static String adbCmd(String cmd){
        Process process;
        try {
            process=Runtime.getRuntime().exec(cmd);
            System.out.println(inputStream2String(process.getInputStream()));
            return inputStream2String(process.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

	/**
     * @Description: 返回流处理成字符串
     * @Param: [inputStream]
     * @return: java.lang.String
     * @Author: Mengw9
     */
    private static String inputStream2String(InputStream inputStream){
        String result="";
        BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
        try {
            String temp="";
            while ((temp=br.readLine())!=null){
                result+=temp+"
";
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

使用这个代码需要在本地下载有adb的驱动,我的是直接放在D盘

adb驱动分享一下 https://www.lanzous.com/b0bk4wlpe 密码: 8uz5

其他学习Adb命令链接:

Adb常用命令

Adb安装详解

原文地址:https://www.cnblogs.com/mengw/p/12073079.html