以编程方式获取连接到adb的Android设备列表

时间:2013-02-14 17:05:11

标签: android adb

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

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

有更可靠的方法吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

这就是我做的方式

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();
    }