parallel_operations/
parallel_operations.rs1use adb_kit::{ADB, prelude::*};
2
3fn main() -> ADBResult<()> {
4 let adb = ADB::new(None);
5
6 let devices = adb.list_devices()?;
8 println!("发现 {} 个设备", devices.len());
9
10 if devices.len() < 2 {
11 println!("此示例需要至少 2 个设备");
12 return Ok(());
13 }
14
15 let device_ids: Vec<&str> = devices.iter().map(|d| d.id.as_str()).collect();
17
18 println!("并行执行 shell 命令...");
20 let shell_results = adb.parallel_shell(&device_ids, "getprop ro.product.model");
21
22 for (id, result) in &shell_results {
23 match result {
24 Ok(output) => println!("设备 {}: 型号 = {}", id, output.trim()),
25 Err(e) => println!("设备 {}: 错误 = {}", id, e),
26 }
27 }
28
29 println!("检查设备在线状态...");
31 let online_devices = adb.filter_online_devices(&device_ids)?;
32 println!("在线设备: {}", online_devices.join(", "));
33
34 println!("获取所有设备的电池信息...");
36 let battery_results = adb.on_all_online_devices(|device_id| {
37 adb.shell(device_id, "dumpsys battery")
38 })?;
39
40 for (id, result) in battery_results {
41 match result {
42 Ok(_) => println!("设备 {}: 已获取电池信息", id),
43 Err(e) => println!("设备 {}: 获取电池信息失败 = {}", id, e),
44 }
45 }
46
47 Ok(())
48}