diff --git a/QtScrcpy/adb/adbprocess.cpp b/QtScrcpy/adb/adbprocess.cpp index 2ca0b72..4039eb4 100644 --- a/QtScrcpy/adb/adbprocess.cpp +++ b/QtScrcpy/adb/adbprocess.cpp @@ -120,6 +120,18 @@ QStringList AdbProcess::getDevicesSerialFromStdOut() return serials; } +QString AdbProcess::getDeviceIPFromStdOut() +{ + QString ip = ""; + QString strIPExp = "inet [\\d.]*"; + QRegExp ipRegExp(strIPExp,Qt::CaseInsensitive); + if (ipRegExp.indexIn(m_standardOutput) != -1) { + ip = ipRegExp.cap(0); + ip = ip.right(ip.size() - 5); + } + return ip; +} + QString AdbProcess::getStdOut() { return m_standardOutput; diff --git a/QtScrcpy/adb/adbprocess.h b/QtScrcpy/adb/adbprocess.h index f09d098..aeb1b82 100644 --- a/QtScrcpy/adb/adbprocess.h +++ b/QtScrcpy/adb/adbprocess.h @@ -30,6 +30,7 @@ public: bool isRuning(); void setShowTouchesEnabled(const QString& serial, bool enabled); QStringList getDevicesSerialFromStdOut(); + QString getDeviceIPFromStdOut(); QString getStdOut(); QString getErrorOut(); diff --git a/QtScrcpy/dialog.cpp b/QtScrcpy/dialog.cpp index 47a835d..19bf617 100644 --- a/QtScrcpy/dialog.cpp +++ b/QtScrcpy/dialog.cpp @@ -27,6 +27,18 @@ Dialog::Dialog(QWidget *parent) : break; case AdbProcess::AER_SUCCESS_EXEC: log = m_adb.getStdOut(); + QStringList args = m_adb.arguments(); + if (args.contains("devices")) { + QStringList devices = m_adb.getDevicesSerialFromStdOut(); + if (!devices.isEmpty()) { + ui->serialEdt->setText(devices.at(0)); + } + } else if (args.contains("show") && args.contains("wlan0")) { + QString ip = m_adb.getDeviceIPFromStdOut(); + if (!ip.isEmpty()) { + ui->deviceIpEdt->setText(ip); + } + } break; } if (!log.isEmpty()) { @@ -70,10 +82,15 @@ void Dialog::on_wirelessConnectBtn_clicked() if (checkAdbRun()) { return; } + QString addr = ui->deviceIpEdt->text().trimmed(); + if (!ui->devicePortEdt->text().isEmpty()) { + addr += ":"; + addr += ui->devicePortEdt->text().trimmed(); + } outLog("wireless connect..."); QStringList adbArgs; adbArgs << "connect"; - adbArgs << ui->deviceIpEdt->text().trimmed(); + adbArgs << addr; m_adb.execute("", adbArgs); } @@ -87,7 +104,7 @@ void Dialog::on_startAdbdBtn_clicked() QStringList adbArgs; adbArgs << "tcpip"; adbArgs << "5555"; - m_adb.execute("", adbArgs); + m_adb.execute(ui->serialEdt->text().trimmed(), adbArgs); } void Dialog::outLog(const QString &log) @@ -102,3 +119,24 @@ bool Dialog::checkAdbRun() } return m_adb.isRuning(); } + +void Dialog::on_getIPBtn_clicked() +{ + if (checkAdbRun()) { + return; + } + + outLog("get ip..."); + // adb -s P7C0218510000537 shell ifconfig wlan0 + // or + // adb -s P7C0218510000537 shell ip -f inet addr show wlan0 + QStringList adbArgs; + adbArgs << "shell"; + adbArgs << "ip"; + adbArgs << "-f"; + adbArgs << "inet"; + adbArgs << "addr"; + adbArgs << "show"; + adbArgs << "wlan0"; + m_adb.execute(ui->serialEdt->text().trimmed(), adbArgs); +} diff --git a/QtScrcpy/dialog.h b/QtScrcpy/dialog.h index 29fb5b6..930210a 100644 --- a/QtScrcpy/dialog.h +++ b/QtScrcpy/dialog.h @@ -31,6 +31,8 @@ private slots: void on_startAdbdBtn_clicked(); + void on_getIPBtn_clicked(); + private: void outLog(const QString& log); bool checkAdbRun(); diff --git a/QtScrcpy/dialog.ui b/QtScrcpy/dialog.ui index cd7cdd8..283fdf8 100644 --- a/QtScrcpy/dialog.ui +++ b/QtScrcpy/dialog.ui @@ -41,38 +41,50 @@ Wireless - - - + + + - 192.168.0.1:5555 + + + + 5555 - + wireless connect - - + + - start device adbd + + + + 192.168.0.1 - + + + + 5 + 0 + + + + + 5 + 16777215 + + - run through USB line: - - - Qt::PlainText - - - false + : @@ -80,15 +92,11 @@ - + + + USB line + - - - - start server - - - @@ -96,6 +104,9 @@ + + + @@ -103,6 +114,13 @@ + + + + start server + + + @@ -110,8 +128,19 @@ - - + + + + start device adbd + + + + + + + get ip + +