1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hhhmoonhhh-wica

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Умное управление (WICA)

Иконка проекта (icon)

:sparkling_heart: Умное управление: реализация функционала управления смартфоном с помощью компьютера через модуль uiautomator2

:sparkling_heart: Управление Android с Windows (WICA)

:tw-1f4ce: Адрес проекта: https://gitee.com/hhhmoonhhh/wica

:memo: Описание проекта

Этот проект представляет собой дизайн приложения для ПК, основанного на Python-модуле uiautomator2, который позволяет использовать компьютер (система Windows) для управления смартфоном (система Android). Мы можем управлять любыми программами на смартфоне с компьютера и выполнять любые внутренние функции этих программ. Это ничем не отличается от обычного использования смартфона. Для реализации такой функции используется вышеупомянутый модуль, позволяющий получать информацию со смартфона и отправлять команды на него, что обеспечивает взаимодействие между компьютером и смартфоном.

Проект получен из источникаВ повседневной жизни нам часто приходится использовать компьютер и смартфон одновременно, например: мы можем нажать на подтверждение входа в приложение на смартфоне, использовать смартфон для сканирования QR-кодов, получать коды подтверждения через смартфон и так далее. Если постоянно переходить между компьютером и смартфоном, это будет довольно сложно и неэффективно. Поэтому, если бы можно было выполнять все эти функции с помощью одного устройства, это было бы очень удобно. В то же время, я заметил недостатки некоторых существующих аналогичных программ, таких как: некоторые программы могут только транслировать экран, но не позволяют контролировать смартфон с компьютера; некоторые программы предназначены только для Mac или iPhone; некоторые программы хотя бы позволяют контролировать смартфон с компьютера, но имеют значительную задержку; некоторые программы предлагают полный набор функций, но установка и использование этих программ сложны, что требует от пользователя много времени для изучения.На основе вышеупомянутых причин я решил создать программу для контроля смартфона с компьютера; именно поэтому был создан этот проект.### :star: Основные преимуществы проектаЭтот проект реализован с использованием Python-модуля uiautomator2 для управления мобильными устройствами с компьютера. В процессе реализации этого проекта были применены некоторые инновационные подходы и технологии. Во-первых, проект использует язык Python для установления соединения между компьютером и мобильным устройством через Android Debug Bridge (ADB) без необходимости ввода каких-либо команд, что позволяет автоматически подключаться к телефону. Во-вторых, при использовании модуля uiautomator2, вместо использования метода XPath для получения координат нажатия, используется пиксельная локализация, позволяющая юзеру кликать на любом месте экрана и передавать эти координаты на смартфон, который затем выполняет аналогичное действие. Это очень удобно и быстро, а также исключает возможность ошибок. Во-третьих, проект предлагает множество дополнительных функций, таких как использование YOLO (You Look Only Once) для расширения возможностей Android-устройств, передача файлов с компьютера на смартфон, создание музыкального проигрывателя с возможностью настройки воспроизведения и многое другое. Кроме того, с помощью библиотеки OpenCV обеспечивается динамическое отображение экрана телефона, что облегчает управление. Наконец, проект предлагает быстрые способы выполнения сложных операций с помощью нескольких кнопок, что делает его удобным и практичным.Эти пункты являются основными преимуществами данного проекта.### :globe_with_meridans: Требования к среде

Для обеспечения корректной работы всего проекта существуют определённые требования к среде. Поскольку данный проект предназначен для управления мобильными устройствами с Windows, требуется следующее:

На компьютере: Система Windows 10, работающий adb, Python версии 3.8.10 (или более новой, но не ниже 3.6), uiautomator2, opencv, weditor, wx и другие необходимые компоненты. (Если вы планируете запустить проект с помощью exe файла, то потребуется только первые два условия.)

На мобильном устройстве: Система Android (на самом деле это HarmonyOS, однако если не учитывать использование встроенной системы передачи данных Huawei, то Android и HarmonyOS практически не отличаются, так как они основаны на Linux.)

Примечание: Если ваша система не удовлетворяет указанным требованиям, она может работать некорректно, хотя иногда всё может функционировать нормально. Однако рекомендуется использовать систему, которая соответствует вышеописанным требованиям, чтобы гарантировать её корректную работу.

🤔 Общий концепт проекта#### 1️⃣ Подключение компьютера и телефона

Чтобы реализовать управление телефоном с помощью компьютера, мне в первую очередь потребовалось организовать соединение между компьютером и телефоном. После изучения материалов по отладке мобильных устройств и связям с компьютером, я выбрал инструмент ADB (Android Debug Bridge) для установления связи между компьютером и телефоном. Этот инструмент очень прост в использовании — он запускается без необходимости предварительной установки, что делает его идеальным выбором для моего проекта. Таким образом, я использую ADB для подключения компьютера и телефона. Для получения дополнительной информации об этом инструменте можно обратиться к этой статье: https://developer.android.com/studio/command-line/adb.#### 2️⃣ Инициализация uiautomator2 После завершения первого шага требуется настроить среду Python и инициализировать модуль uiautomator2. Я использую версию Python 3.8.10, хотя любая версия выше 3.6 должна работать корректно. Однако использование самой последней версии Python не рекомендуется, так как это может вызвать проблемы при установке из-за неполной совместимости других модулей.Кроме того, стоит отметить несколько важных моментов:

  1. На телефоне необходимо установить программу ATX. При запуске программы она автоматически установит ATX, но требует подтверждения пользователя;
  2. Чтобы обеспечить более стабильное соединение между компьютером и телефоном, рекомендуется после установления соединения активировать плавающее окно в ATX на телефоне. Это гарантирует нормальную работу процесса и агента atx-agent, а также помогает проверять состояние работы ATX;
  3. В случае возникновения значительных задержек после установления соединения, причинами могут быть либо нестабильность сети, либо нестабильность службы ATX. В таких случаях следует проверить или перезапустить ATX для устранения проблем. Проблемы с сетью придется решать самостоятельно;
  4. При установке ATX могут появиться дополнительные приложения, которые тоже нужно будет установить. Эти приложения безопасны и необходимы для нормальной работы программы. Без их установки работа может оказаться невозможной, поэтому не стоит опасаться их установки.

:three: Получение компьютером информации с мобильного устройства

После подключения мобильного устройства к компьютеру, последний может получить доступ к различной информации о нем. Например, к внутреннему IP-адресу мобильного устройства в локальной сети, модели устройства и так далее.Эти данные могут использоваться для удобства перехода от проводного соединения к беспроводному, а также для получения более подробной информации, такой как частота процессора мобильного устройства, уровень зарядки батареи, конфигурация устройства, запущенные приложения и процессы. Все это позволяет более эффективно управлять мобильным устройством и делает использование программы более простым.#### :four: Отправка команды с компьютера на мобильное устройство Для управления мобильным устройством с помощью компьютера требуется отправлять команды на устройство. После того как мобильное устройство получает команду, оно выполняет соответствующие действия согласно этой команде. В некоторых случаях после выполнения команды устройство отправляет обратную связь на компьютер, что помогает пользователям понять результат выполненной команды. Для отправки команд используется модуль uiautomator2 на Python.

:five: Выполнение команды на мобильном устройстве

После получения команды от компьютера мобильное устройство начинает её выполнять. По завершении выполнения команды устройство отправляет обратную связь на компьютер с помощью модуля uiautomator2, чтобы пользователи могли узнать результат выполнения команды. Затем этот цикл повторяется, обеспечивая постоянное управление мобильным устройством.#### :six: Дизайн графического интерфейса Чтобы проект выглядел привлекательно и был удобен в использовании, было решено создать подходящий графический интерфейс. Из двух возможных вариантов — Qt и wxWidgets — был выбран wxWidgets, поскольку он проще в использовании и быстрее в реализации дизайна интерфейса. Более того, производительность обоих модулей практически одинакова. Таким образом, дальнейшая разработка будет осуществляться с использованием модуля wxWidgets для создания графического интерфейса.

:one: Соединение компьютера с мобильным устройством

1. Включение режима разработчика в смартфоне

Сначала откройте страницу настроек Откройте страницу настроек Затем найдите опцию "О телефоне" Найдите опцию "О телефоне" После этого нажмите несколько раз на номер версии программного обеспечения (7–8 раз) Нажмите несколько раз на номер версии программного обеспечения Итоговый экран покажет активацию сервиса (на моем телефоне уже включен, поэтому отображается как "Режим разработчика") Активация сервиса##### 2. Настройка USB-опций Еще раз откройте страницу настроек, затем выберите "Система и обновление". Выберите "Система и обновление" Далее выберите "Разработчик". Выберите "Разработчик" Затем найдите опцию отладки и настройте её согласно следующему изображению. Настройте её согласно следующему изображению

3. Подключение компьютера и телефона через Wi-Fi

Важно отметить, что ваш компьютер и мобильное устройство должны находиться в одной локальной сети и подключены к одному Wi-Fi, чтобы обеспечить беспроводное соединение.

Сначала используйте кабель для подключения компьютера и мобильного устройства. Откройте папку, содержащую adb.exe, затем запустите командную строку cmd и выполните следующий код:

adb devices

Если вы видите что-то похожее на следующее изображение, значит соединение установлено успешно: Успешное соединение

Далее выполните следующий код, который добавляет TCP-слушатель:

adb tcpip 5555

Затем выполните следующий код, который закрывает текущее USB-соединение между компьютером и мобильным устройством:

adb kill-server

Теперь отключите кабель и выполните следующий код:

(Здесь вам потребуется IP-адрес вашего мобильного устройства в локальной сети)

adb connect IP_вашего_устройства:5555
```Пример: IP-адрес моего мобильного устройства в тестовой среде — 192.168.0.104, поэтому я выполняю следующий код:
![IP-адрес](pictures/showing9.jpg)

adb connect 192.168.0.104:55555


После выполнения указанного выше кода компьютер и телефон успешно соединятся через Wi-Fi, что позволит нам удобно выполнять последующие операции. Таким образом, все вышеперечисленные шаги представляют собой полный процесс использования Wi-Fi для соединения компьютера с телефоном, а также демонстрацию конкретного метода подключения. В будущем я буду программировать эти действия, чтобы можно было автоматически установить соединение путём нажатия одной кнопки, что сделает процесс быстрым и удобным.####   :two: Инициализация uiautomator2
Для корректной работы программы требуется установка программы ATX на смартфон, то есть инициализация uiautomator2. На самом деле, при установке ATX достаточно иметь соединение между компьютером и телефоном; затем откройте командную строку `cmd` и выполните следующую команду:

python -m uiautomator2 init

После выполнения указанной команды компьютер автоматически установит программу ATX на телефон, пользователю остаётся только подтвердить установку на устройстве. Конечно, в реальных условиях для удобства пользователя нет необходимости запускать установку через командную строку; мы заключаем этот процесс в Python-коде, что позволяет пользователю просто нажать одну кнопку для автоматической установки ATX, что улучшает опыт использования продукта и делает его более удобным для всех пользователей.####   :four: Компьютер отправляет команды мобильному устройству

####   :three: Получение информации о телефоне на компьютере
Получение информации о телефоне на компьютере довольно простое. После завершения предыдущего шага, если компьютер и телефон были успешно подключены через модуль `uiautomator2`, компьютер может автоматически получать некоторые данные о телефоне без необходимости дополнительных действий. Автоматически получаемая информация включает IP-адрес устройства в локальной сети (`wlan_ip`), базовую информацию о телефоне (`info`), подробную информацию о телефоне (`device_info`) и настройки подключения телефона к компьютеру (`settings`) и так далее. Хотя эта информация кажется ограниченной, она достаточна для реализации всех необходимых функций, поэтому дополнительное отдельное получение информации не требуется.После подключения компьютера к мобильному устройству, чтобы контролировать телефон, сначала требуется отправить команды от компьютера к телефону. Я использовал модуль uiautomator2 для реализации этой функции. После подключения телефона через uiautomator2, компьютер может использовать это соединение для отправки команд на телефон, такие как device.click(x_position, y_position) — клик по определённой координате, device.press("back") — нажатие кнопки "Назад", device.press("home") — переход на главный экран, device.open_quick_settings() — открытие быстрой панели управления, device(text="QQ").click() — клик по приложению QQ и так далее.Здесь мы предоставляем несколько ссылок на руководства по использованию команд uiautomator2, заинтересованным читателям рекомендуется обратиться к этим источникам:

[https://www.cnblogs.com/hwllovelq/p/11847658.html](https://www.cnblogs.com/hwllovelq/p/11847658.html)

[https://www.jianshu.com/p/28c298abfd15](https://www.jianshu.com/p/28c298abfd15)

[https://segmentfault.com/a/1190000040015703](https://segmentfault.com/a/1190000040015703)

[https://blog.csdn.net/damao528/article/details/105936359](https://blog.csdn.net/damao528/article/details/105936359)

[https://blog.csdn.net/m0_60126160/article/details/119087945](https://blog.csdn.net/m0_60126160/article/details/119087945)

[https://blog.csdn.net/Master724/article/details/107962349](https://blog.csdn.net/Master724/article/details/107962349)

[https://blog.csdn.net/jhui123456/article/details/103789236](https://blog.csdn.net/jhui123456/article/details/103789236)

#### Выполнение команд на смартфоне
После того как компьютер отправляет команды на смартфон, устройство автоматически выполняет указанные команды. После выполнения команд на смартфоне возвращается некоторое значение, которое мы передаем компьютеру. Это позволяет компьютеру получать информацию о выполнении команд и отображать ее пользователю, что помогает ему лучше контролировать смартфон. После завершения выполнения команд на смартфоне и отправки обратной связи на компьютер, процесс снова переходит в состояние ожидания новых команд. Таким образом, через постоянный цикл повторения достигается непрерывное управление смартфоном с помощью компьютера.####   :six: Графический интерфейс
Для удобства использования проекта был создан графический интерфейс с использованием модуля wxPython, который был упомянут ранее. Этот модуль позволяет создавать кнопки, диалоговые окна, поля ввода данных, справочные сообщения, а также выполнять другие действия, характерные для графического интерфейса. С его помощью был создан эстетичный графический интерфейс, где все функции представлены в виде кнопок, что делает использование этих функций простым и быстрым. При создании графического интерфейса весь интерфейс определяется как класс, затем этот класс расширяется при реализации конкретных функций путём переопределения методов этого класса, что обеспечивает работу всех функций. Эти шаги представляют собой основные операции по созданию графического интерфейса.


###   :interrobang: Проблемы, возникшие в ходе проекта

####   :one: Неспособность установить беспроводное соединение ADB между компьютером и смартфоном
На начальной стадии работы компьютер не мог установить беспроводное соединение с смартфоном, хотя проводное соединение работало корректно. Я просмотрел соответствующую литературу и сначала решил, что требуется административные права доступа, но позже выяснилось, что это не обязательно.Хотя административные права здесь не используются, можно рекомендовать несколько сайтов для скачивания программ, требующих таких прав:

[https://www.magisk.cool/](https://www.magisk.cool/)
[https://mintimate.cn/2020/03/08/Magisk/](https://mintimate.cn/2020/03/08/Magisk/)
[https://wwa.lanzoux.com/i0xyum62auf](https://wwa.lanzoux.com/i0xyum62auf)

И один сайт, где программа ADB WiFi может запускаться только с административными правами:

[https://coolapk.com/apk/com.rair.adbwifi](https://coolapk.com/apk/com.rair.adbwifi)

Далее мы рассмотрим, как установить беспроводное соединение без использования прав root-администратора:

Сначала требуется проводное соединение. Для этого введите следующие команды:
```bash
adb devices
adb tcpip 5555
adb kill-server
adb connect IP:5555

После выполнения указанных действий будет установлено беспроводное соединение, что решает данную проблему.

Метод был получен мной путём изучения соответствующих материалов. Ниже приведены ссылки на некоторые источники, которые могут заинтересовать читателей: https://www.jianshu.com/p/9c28d76bd587 https://developer.android.google.cn/studio/command-line/adb https://blog.csdn.net/qq_25992437/article/details/106444225 https://lookcos.cn/archives/665.html### :two: Невозможность запуска ATX-agent После установления соединения между компьютером и телефоном, ATX-agent (или же ATX-software) не мог быть запущен непосредственно через это соединение. В связи с этим, я изучил соответствующую информацию и узнал необходимые команды для решения проблемы:

adb shell
``````bash
chmod 775 /data/local/tmp/atx-agent
/data/local/tmp/atx-agent server -d

Используя вышеуказанные команды, удалось запустить службу ATX. В последующем при написании Python-кода, я также упаковал этот процесс, что позволило решить эту задачу.

Дополнительные материалы можно найти по следующим ссылкам: https://www.cnblogs.com/testerabner/p/13533068.html

Несоответствие модуля wxpython

При проектировании пользовательского интерфейса возникли проблемы с неполной совместимостью в wxPython. Эти проблемы связаны как с языковыми ограничениями, так и с внутренними конфликтами внутри самого wxPython. Чтобы решить эти две проблемы, я изучил соответствующие материалы и нашел решение.

Сначала был решен вопрос с языковой несовместимостью. Проблема заключалась в том, что в проекте использовались пути с кириллическими символами. После изменения путей проблема была устранена.

Вторым шагом было решение внутренних конфликтов в wxPython. Я столкнулся с проблемой несовместимости между свойствами center (центровка) и expand (расширение). На самом деле мне требовалось использовать expand, но при этом я также указывал center для уверенности. Однако это вызвало ошибку. Исследование сообщения об ошибке показало, что эти два свойства не могут использоваться одновременно. Удаление свойства center позволило恢复正常 работу.Таким образом, были успешно решены все проблемы с несовместимостью.### :package: Архитектура программного обеспечения

Архитектурное описание проекта состоит в том, что графический интерфейс пользователя был упакован в отдельный класс. В главной функции main этот класс переопределяется, чтобы внутри него появились конкретные методы, с помощью которых можно реализовать все необходимые функции. Чтобы сделать основной файл main менее громоздким, многие функции были упакованы в других модулях, а затем вызваны из главной функции. Такой подход позволяет сделать структуру проекта более понятной и удобной для последующего обслуживания кода.

В целом, главная функция main является основной точкой входа, которая вызывает класс дизайна интерфейса и функции реализации функционала. Благодаря такой архитектуре достигаются базовые функции управления смартфоном с компьютера, а также некоторые дополнительные возможности.

:computer: Установка>1. Для начала вам потребуется скачать папку проекта, содержащую все Python-файлы и исполняемые файлы .exe. Вы можете выбрать запуск Python-файлов или .exe-файлов. Если вы выбрали использование Python-файлов, то вам потребуются все необходимые модули Python; иначе они не будут работать. Если вы хотите быстрее начать работу, вы можете запустить .exe-файл. Кроме того, для удобства использования вы можете создать ярлык для .exe-файла;

  1. После выполнения вышеупомянутых шагов вы сможете запустить программу. Пожалуйста, следуйте указаниям, которые появятся при запуске программы. Это поможет вам быстро освоить программу и решить возникающие проблемы. Если вы столкнетесь с проблемами, которые невозможно решить самостоятельно, обратитесь к автору для исправления;

  2. Наконец, во время использования программы вы можете воспользоваться справочной информацией, чтобы лучше узнать и использовать её. Также программа предлагает множество инструментов для пользователей, которые могут быть использованы и протестированы. Если у вас есть вопросы по использованию или возникли трудности, вы всегда можете обратиться к автору для решения этих вопросов. Наконец, спасибо за использование нашего продукта, мы желаем вам приятной работы!### :page_facing_up: Инструкция по использованию

:one: Объяснение 1

Первое объяснение состоит в том, что пользователи должны активировать режим разработчика на своём смартфоне. Без активации этого режима соединение с компьютером будет недоступно. Поэтому если вы планируете использовать эту программу, вам обязательно нужно активировать режим разработчика. Во-вторых, ATX также должен быть установлен. Хотя установка происходит автоматически на устройстве, пользователи всё равно должны подтвердить установку на своём смартфоне. Это важный момент, который следует учесть.

:two: Объяснение 2

Второе объяснение: перед использованием убедитесь в версии вашего оборудования и других вопросах. Несоответствие версий может привести к невозможности использования программного обеспечения. В процессе использования следуйте правилам его использования; иначе это может вызвать замедление отклика программы и зависание устройства.#### Объяснение три Третье объяснение: во время использования, если вы заметили, что телефон стал медленнее реагировать, то есть две возможные причины. Первый вариант — текущее соединение с интернетом нестабильно. В этом случае проверьте свои сетевые настройки и подключение, чтобы убедиться, что они работают правильно и стабильно. Второй вариант — служба ATX работает медленнее. В этом случае нажмите кнопку "Перезапустить ATX" или "Обновить ATX", чтобы перезапустить или обновить службу ATX, тем самым увеличив скорость реакции. Кроме того, при отправке сообщений убедитесь, что вы сначала выбрали поле ввода на вашем устройстве, иначе это может привести к зависанию устройства. В конце хотелось бы поблагодарить вас за использование нашего продукта. Если у вас возникнут другие проблемы, которые невозможно решить самостоятельно, обратитесь к автору для решения.### Внимание

  1. Убедитесь, что вы включили режим разработчика на вашем устройстве;
  2. При первом подключении используйте USB-кабель для соединения компьютера и телефона;
  3. Убедитесь, что компьютер и телефон находятся в одной локальной сети; иначе могут возникнуть значительные задержки или даже невозможность управления;
  4. После каждого выключения устройства вам потребуется снова использовать USB-кабель для соединения компьютера и телефона перед тем, как можно будет восстановить беспроводное управление;
  5. Проверьте работу службы ATX;
  6. При отправке текстовых сообщений убедитесь, что вы сначала выбрали поле ввода на своём устройстве;
  7. Во время использования беспроводной связи не поддерживайте подключение USB-кабеля между компьютером и телефоном, иначе это может вызвать конфликты с несколькими подключенными устройствами.### 🌟 Участие в проекте
  8. Автор: Jiang Yue (hhhmoonhhh) (Hu Yuxuan (Y.X.Hu));
  9. Ветка: master;
  10. Количество коммитов: около 400;
  11. Создание Pull Request: None. ### 📚 Проектный отчет
  12. В рамках данного проекта были использованы модули uiautomator2, wxpython и cv2, что позволило успешно реализовать соединение компьютера с мобильным устройством и управление смартфоном с помощью компьютера. Также были добавлены дополнительные функции, обеспечивающие достижение намеченных целей и выполнение необходимых задач;
  13. Во время работы над проектом возникли некоторые проблемы, связанные с adb, uiautomator2 и wxpython. Однако все они были решены путём изучения соответствующих материалов;
  14. Было завершено несколько версий проекта, при этом он постоянно совершенствовался и оптимизировался, что привело к его окончательному идеальному состоянию;
  15. Из-за ошибки при публикации некоторые изменения были одобрены дважды, что вызвало увеличение количества пушей. Тем не менее это никак не повлияло на общую структуру проекта;
  16. Дополнительные функции имеют сложную структуру, но в использовании они достаточно удобны;
  17. В целом, данный проект хорошо выполнил свои цели, является практически идеальным и полностью соответствует нашим ожиданиям. Это первый проект, который был завершен мной самостоятельно. ### Поддержка проекта Вы можете сделать пожертвование, нажав на кнопку ниже или используя QR-коды.#### QR-код для Alipay Alipay

QR-код для WeChat Pay

WeChat Pay

Контакты с автором

WeChat

huyxpy

QQ

1134111908

Электронная почта

1134111908@qq.com
hyxmoon@sina.cn

GitHub

https://github.com/Huyuxuan-github

Блог на CSDN

https://hyxmoon.blog.csdn.net/

Weibo

https://m.weibo.cn/u/7555217530?from=10C1295060&wm=5311_4002&sourceType=qq

QR-код информации

QR-код информации

Прочитали до конца, не поставите звездочку :star:? Если нашли полезной информацию, поддержите проект пожертвованием :moneybag:.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Интеллектуальное управление: реализация функций управления мобильным устройством с помощью компьютера на основе модуля uiautomator2. Развернуть Свернуть
MIT
Отмена

Обновления (3)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hhhmoonhhh-wica.git
git@api.gitlife.ru:oschina-mirror/hhhmoonhhh-wica.git
oschina-mirror
hhhmoonhhh-wica
hhhmoonhhh-wica
master