adbに接続されているAndroidデバイスのリストをプログラムで取得する方法はありますか?
デスクトップアプリケーションのJavaでやりたいです。私はadb.exeのパスを持っていますが、「adbdevices」応答の解析は最善のアイデアではないようです。
より信頼できる方法はありますか?
これが私がやった方法です
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();
}
最適なソリューションは、リストで何をするかによって異なります。見つけたデバイスでいくつかのadbコマンドを実行する場合adb devices
は、出力の解析が当然の選択です。もう1つのオプションは、USBスタックを調べて、ADBインターフェイスが列挙されたデバイスのシリアル番号を収集することです。または、私のお気に入りです。Linuxでは、 udev
接続されているすべてのADBデバイスを追跡するカスタムルールを作成するだけです。私はデータベースを使用していますが、すべてのADBデバイスのシンボリックリンクを作成してからファイルリストを確認するだけの簡単な方法である可能性があります。