#pragma once #include #include class AdbUtils final : public QObject { Q_OBJECT public: explicit AdbUtils(QObject *parent = nullptr); static QString adbPath(); static QList > 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 getListApps(const QString &deviceId); // Возвращает таймзону устройства (напр. "Asia/Bangkok"), либо пустую строку при ошибке static QString getDeviceTimezone(const QString &deviceId); private: static QString adbDir(); static bool startProcess(const QString &program, const QStringList &args, QString *stdOut = nullptr, QString *stdErr = nullptr); };