如何判断Android设备是否插入USB端口?我见过许多代码示例,可以检测到什么时候插入USB设备,但我无法使用它。我需要能够检测到Android设备。
答案 0 :(得分:3)
我不清楚问题,您是否必须检测每台Android设备,或者您只想检测您的私人设备?
尽管如此,这可能不是您要搜索的内容,但您可以尝试的最简单方法是在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调试才能检测到它。