开发车机测试软件,需要控制android中的UI,借助adb 指令来完成,调试了一下QProcess 发送adb 指令中间有一些小的细节需要注意。
- 首先需要保证你的PC设置好adb 的环境有能够执行的adb工具
通 adb 指令来验证自己的环境。
2:使用QProcess 来调用adb 指令
QProcess *process = new QProcess(this);
process->start("adb",QStringList()<<"shell"<<"input"<<" keyevent"<<" KEYCODE_HOME");
if (!process->waitForStarted())
return ;
if (!process->waitForFinished())
return ;
QString strTemp=QString::fromLocal8Bit(process->readAllStandardOutput());
ui->textBrowser->append(strTemp);
QProcess 中start 有两种模式来开始,带入的参数不同
void start(const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite);
#if !defined(QT_NO_PROCESS_COMBINED_ARGUMENT_START)
void start(const QString &command, OpenMode mode = ReadWrite);
#endif
我这边使用的第一种,需要注意的是参数,如果使用下面的方式就无法执行。
process->start("adb",QStringList()<<"adb shell input keyevent KEYCODE_HOME");
但是可以写成下面的方式
process->start("adb shell input keyevent KEYCODE_HOME");