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
+
+