我可以在C#中运行adb shell命令,并且在拔下USB电缆时不中断它吗?

nkhmeac6  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(245)

我使用下面描述的方法运行adb shell命令

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " + cmd);
procStartInfo.RedirectStandardInput = true;
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();

在安卓手机上,我启动了一个录制视频的应用程序,所以cmd =“adb shell am startservice -n com.xxx.xxx/.xxx“。
问题是我需要在开始录制视频后拔下USB线。如果我这样做,生成的视频文件将无法播放。有时它是0 KB。如果我保持USB线连接,那么视频是好的。
是否有办法执行adb命令,以便在我拔下USB电缆后继续录制视频?当我从命令提示符下输入命令并拔下USB电缆时,一切都很好。

bvjxkvbb

bvjxkvbb1#

请尝试以下方法:

string cmd = " shell am startservice -n com.xxx.xxx/.xxx";
using (Process proc = new process())
{
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");
procStartInfo.RedirectStandardInput = true;
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
proc.StartInfo = procStartInfo;
proc.Start();
proc.StandardInput.Writeline("adb devices");
proc.StandardInput.Writeline("adb shell getprop dhcp.wlan0.ipaddress"); // this will not work on some newer os
string deviceip = proc.StandardOutput.Readline();
proc.StandardInput.Writeline("adb tcpip 5555"); // this will turn on ADB to wifi on port 5555
proc.StandardInput.Writeline("adb connect " + deviceip + " 5555"); // this allows you to at this point unplug your device
proc.StandardInput.Writeline("adb -s " + deviceip + ":5555" +  cmd);  // this connects running the command on the specific ip address so when you disconnect usb it will continue creating movie
proc.WaitForExit();
} // this might not be correct wait command

我使用的主要语言是Visual Basic,所以这可能需要一点工作才能正常工作

相关问题