3

有没有办法以编程方式获取连接到 adb 的 android 设备列表?

我想在桌面应用程序上用 Java 来做。我有 adb.exe 的路径,但解析“adb devices”响应似乎不是最好的主意。

有没有更可靠的方法?

4

2 回答 2

5

这就是我的做法

try {
        Process process = Runtime.getRuntime().exec("adb devices");
        BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));  
        String line = null;  

        Pattern pattern = Pattern.compile("^([a-zA-Z0-9\\-]+)(\\s+)(device)");
        Matcher matcher;

        while ((line = in.readLine()) != null) {  
            if (line.matches(pattern.pattern())) {
                matcher = pattern.matcher(line);
                if (matcher.find())
                    System.out.println(matcher.group(1));
            }
        }  
    } catch (IOException e) {
        e.printStackTrace();
    }
于 2013-02-15T14:15:20.173 回答
4

最佳解决方案取决于您要对列表执行的操作。如果您要在您找到的设备上运行一些 adb 命令 - 解析adb devices输出是显而易见的选择。另一种选择是通过 USB 堆栈并收集具有 ADB 接口枚举的设备的序列号。或者我最喜欢的一个——在 Linux 下,我只是创建一个自定义 udev规则来跟踪所有连接的 ADB 设备。我正在使用数据库,但它可以像为每个 ADB 设备创建一个符号链接然后检查文件列表一样简单。

于 2013-02-14T18:07:12.803 回答