<分区>
如何判断 Android 设备是否已插入 USB 端口?我看过许多代码示例,它们可以检测何时插入了任何 USB 设备,但我无法使用它。我需要能够检测到 Android 设备。
<分区>
如何判断 Android 设备是否已插入 USB 端口?我看过许多代码示例,它们可以检测何时插入了任何 USB 设备,但我无法使用它。我需要能够检测到 Android 设备。
最佳答案
我不太清楚这个问题,您是必须检测每台 Android 设备,还是只想检测您的私有(private)设备?
尽管这可能不是您要搜索的内容,但您可以尝试的最简单方法是在 USB 设备连接事件上调用命令 adb devices 并解析输出。我现在不能给出太多代码,因为我的时间有限,但是看看 WinUSB C#
您可以启动进程并解析其输出。
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = @"C:\Windows\System32\cmd.exe";
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
System.Diagnostics.Process p = new Process();
p.StartInfo = psi;
p.OutputDataReceived += p_DataReceived;
p.EnableRaisingEvents = true;
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.StandardInput.WriteLine("adb devices");
p.StandardInput.WriteLine("exit");
p.WaitForExit();
static void p_DataReceived(object sender, DataReceivedEventArgs e)
{
// Manipulate received data here
Console.WriteLine(e.Data);
// if no devices, then there will be only "List of devices attached: "
}
再次声明,这只是一个快速示例,应该有更好的解决方案。您可以在连接时检查设备 ID,但这会带来另一个问题 - 如何知道此 ID 是 Android 设备的 ID?
编辑:您还必须将 ADB 可执行文件添加到您的 PATH 环境变量中。
EDIT2:如果您不想依赖 PATH,您可以为您的应用程序提供 ADB 并从应用程序的目录运行它,使用 Application.StartupPath
获取它
EDIT3:另一个缺点是您必须先在 Android 设备中启用 USB 调试,然后 ADB 才能检测到它。
关于c# - 如何知道 Android 设备何时插入 USB 端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222343/