70 lines
2.9 KiB
C++
70 lines
2.9 KiB
C++
#pragma once
|
|
|
|
#include <QList>
|
|
#include <QObject>
|
|
|
|
class AdbUtils final : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit AdbUtils(QObject *parent = nullptr);
|
|
|
|
static QString adbPath();
|
|
|
|
static QList<QPair<QString, QString> > getListDevices();
|
|
|
|
static QString tryToGetRunningAppPid(const QString &deviceId, const QString &packageName);
|
|
|
|
static bool tryToStartApplication(const QString &deviceId, const QString &packageName);
|
|
|
|
static bool tryToKillApplication(const QString &deviceId, const QString &packageName);
|
|
|
|
static QString getScreenDumpAsXml(const QString &deviceId, int idx, bool screenshot = false);
|
|
|
|
// Сырой дамп без фильтра "useful UI" — для ручного превью оператора:
|
|
// отдаёт что есть на экране, даже если это PIN-пад / сплэш / WebView-shell.
|
|
static QString getRawScreenDumpAsXml(const QString &deviceId);
|
|
|
|
static bool takeScreenshot(const QString &deviceId, const QString &name);
|
|
|
|
// Захватывает скриншот напрямую в память (PNG-байты), без временного файла
|
|
static QByteArray captureScreenshotBytes(const QString &deviceId);
|
|
|
|
static bool takeXmlDump(const QString &deviceId, const QString &name);
|
|
|
|
static bool makeTap(const QString &deviceId, int x, int y);
|
|
|
|
static bool enableAdbIMEKeyboard(const QString &deviceId);
|
|
|
|
static bool inputAdbIMEText(const QString &deviceId, const QString &text);
|
|
|
|
static bool disableAdbIMEKeyboard(const QString &deviceId);
|
|
|
|
static bool makeSwipe(const QString &deviceId, int x1, int y1, int x2, int y2);
|
|
static bool makeSwipe(const QString &deviceId, int x1, int y1, int x2, int y2, int durationMs);
|
|
|
|
static bool inputText(const QString &deviceId, const QString &text);
|
|
|
|
static bool hideKeyboard(const QString &deviceId);
|
|
|
|
static bool goBack(const QString &deviceId);
|
|
|
|
static void unlockScreen(const QString &deviceId, int screenWidth, int screenHeight);
|
|
|
|
static QSet<QString> getListApps(const QString &deviceId);
|
|
|
|
// Возвращает таймзону устройства (напр. "Asia/Bangkok"), либо пустую строку при ошибке
|
|
static QString getDeviceTimezone(const QString &deviceId);
|
|
|
|
// Возвращает versionName установленного пакета (напр. "19.17.0"), либо пустую строку при ошибке/отсутствии
|
|
static QString getAppVersion(const QString &deviceId, const QString &packageName);
|
|
|
|
// Возвращает пакет приложения на переднем плане (foreground), либо пустую строку при ошибке
|
|
static QString getForegroundPackage(const QString &deviceId);
|
|
|
|
private:
|
|
static QString adbDir();
|
|
static bool startProcess(const QString &program, const QStringList &args,
|
|
QString *stdOut = nullptr, QString *stdErr = nullptr);
|
|
};
|