Этот проект представляет собой дизайн приложения для ПК, основанного на Python-модуле uiautomator2, который позволяет использовать компьютер (система Windows) для управления смартфоном (система Android). Мы можем управлять любыми программами на смартфоне с компьютера и выполнять любые внутренние функции этих программ. Это ничем не отличается от обычного использования смартфона. Для реализации такой функции используется вышеупомянутый модуль, позволяющий получать информацию со смартфона и отправлять команды на него, что обеспечивает взаимодействие между компьютером и смартфоном.
Для обеспечения корректной работы всего проекта существуют определённые требования к среде. Поскольку данный проект предназначен для управления мобильными устройствами с Windows, требуется следующее:
На компьютере: Система Windows 10, работающий adb, Python версии 3.8.10 (или более новой, но не ниже 3.6), uiautomator2, opencv, weditor, wx и другие необходимые компоненты. (Если вы планируете запустить проект с помощью exe файла, то потребуется только первые два условия.)
На мобильном устройстве: Система Android (на самом деле это HarmonyOS, однако если не учитывать использование встроенной системы передачи данных Huawei, то Android и HarmonyOS практически не отличаются, так как они основаны на Linux.)
Примечание: Если ваша система не удовлетворяет указанным требованиям, она может работать некорректно, хотя иногда всё может функционировать нормально. Однако рекомендуется использовать систему, которая соответствует вышеописанным требованиям, чтобы гарантировать её корректную работу.
Чтобы реализовать управление телефоном с помощью компьютера, мне в первую очередь потребовалось организовать соединение между компьютером и телефоном. После изучения материалов по отладке мобильных устройств и связям с компьютером, я выбрал инструмент ADB (Android Debug Bridge) для установления связи между компьютером и телефоном. Этот инструмент очень прост в использовании — он запускается без необходимости предварительной установки, что делает его идеальным выбором для моего проекта. Таким образом, я использую ADB для подключения компьютера и телефона. Для получения дополнительной информации об этом инструменте можно обратиться к этой статье: https://developer.android.com/studio/command-line/adb.#### 2️⃣ Инициализация uiautomator2 После завершения первого шага требуется настроить среду Python и инициализировать модуль uiautomator2. Я использую версию Python 3.8.10, хотя любая версия выше 3.6 должна работать корректно. Однако использование самой последней версии Python не рекомендуется, так как это может вызвать проблемы при установке из-за неполной совместимости других модулей.Кроме того, стоит отметить несколько важных моментов:
После подключения мобильного устройства к компьютеру, последний может получить доступ к различной информации о нем. Например, к внутреннему IP-адресу мобильного устройства в локальной сети, модели устройства и так далее.Эти данные могут использоваться для удобства перехода от проводного соединения к беспроводному, а также для получения более подробной информации, такой как частота процессора мобильного устройства, уровень зарядки батареи, конфигурация устройства, запущенные приложения и процессы. Все это позволяет более эффективно управлять мобильным устройством и делает использование программы более простым.#### Отправка команды с компьютера на мобильное устройство
Для управления мобильным устройством с помощью компьютера требуется отправлять команды на устройство. После того как мобильное устройство получает команду, оно выполняет соответствующие действия согласно этой команде. В некоторых случаях после выполнения команды устройство отправляет обратную связь на компьютер, что помогает пользователям понять результат выполненной команды. Для отправки команд используется модуль
uiautomator2
на Python.
После получения команды от компьютера мобильное устройство начинает её выполнять. По завершении выполнения команды устройство отправляет обратную связь на компьютер с помощью модуля uiautomator2
, чтобы пользователи могли узнать результат выполнения команды. Затем этот цикл повторяется, обеспечивая постоянное управление мобильным устройством.#### Дизайн графического интерфейса
Чтобы проект выглядел привлекательно и был удобен в использовании, было решено создать подходящий графический интерфейс. Из двух возможных вариантов — Qt и wxWidgets — был выбран wxWidgets, поскольку он проще в использовании и быстрее в реализации дизайна интерфейса. Более того, производительность обоих модулей практически одинакова. Таким образом, дальнейшая разработка будет осуществляться с использованием модуля wxWidgets для создания графического интерфейса.
Сначала откройте страницу настроек
Затем найдите опцию "О телефоне"
После этого нажмите несколько раз на номер версии программного обеспечения (7–8 раз)
Итоговый экран покажет активацию сервиса (на моем телефоне уже включен, поэтому отображается как "Режим разработчика")
##### 2. Настройка USB-опций
Еще раз откройте страницу настроек, затем выберите "Система и обновление".
Далее выберите "Разработчик".
Затем найдите опцию отладки и настройте её согласно следующему изображению.
Важно отметить, что ваш компьютер и мобильное устройство должны находиться в одной локальной сети и подключены к одному 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, поэтому я выполняю следующий код:

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### Невозможность запуска 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. Я столкнулся с проблемой несовместимости между свойствами center
(центровка) и expand
(расширение). На самом деле мне требовалось использовать expand
, но при этом я также указывал center
для уверенности. Однако это вызвало ошибку. Исследование сообщения об ошибке показало, что эти два свойства не могут использоваться одновременно. Удаление свойства center
позволило恢复正常 работу.Таким образом, были успешно решены все проблемы с несовместимостью.### Архитектура программного обеспечения
Архитектурное описание проекта состоит в том, что графический интерфейс пользователя был упакован в отдельный класс. В главной функции main
этот класс переопределяется, чтобы внутри него появились конкретные методы, с помощью которых можно реализовать все необходимые функции. Чтобы сделать основной файл main
менее громоздким, многие функции были упакованы в других модулях, а затем вызваны из главной функции. Такой подход позволяет сделать структуру проекта более понятной и удобной для последующего обслуживания кода.
В целом, главная функция main
является основной точкой входа, которая вызывает класс дизайна интерфейса и функции реализации функционала. Благодаря такой архитектуре достигаются базовые функции управления смартфоном с компьютера, а также некоторые дополнительные возможности.
После выполнения вышеупомянутых шагов вы сможете запустить программу. Пожалуйста, следуйте указаниям, которые появятся при запуске программы. Это поможет вам быстро освоить программу и решить возникающие проблемы. Если вы столкнетесь с проблемами, которые невозможно решить самостоятельно, обратитесь к автору для исправления;
Наконец, во время использования программы вы можете воспользоваться справочной информацией, чтобы лучше узнать и использовать её. Также программа предлагает множество инструментов для пользователей, которые могут быть использованы и протестированы. Если у вас есть вопросы по использованию или возникли трудности, вы всегда можете обратиться к автору для решения этих вопросов. Наконец, спасибо за использование нашего продукта, мы желаем вам приятной работы!###
Инструкция по использованию
Первое объяснение состоит в том, что пользователи должны активировать режим разработчика на своём смартфоне. Без активации этого режима соединение с компьютером будет недоступно. Поэтому если вы планируете использовать эту программу, вам обязательно нужно активировать режим разработчика. Во-вторых, ATX также должен быть установлен. Хотя установка происходит автоматически на устройстве, пользователи всё равно должны подтвердить установку на своём смартфоне. Это важный момент, который следует учесть.
Второе объяснение: перед использованием убедитесь в версии вашего оборудования и других вопросах. Несоответствие версий может привести к невозможности использования программного обеспечения. В процессе использования следуйте правилам его использования; иначе это может вызвать замедление отклика программы и зависание устройства.#### Объяснение три Третье объяснение: во время использования, если вы заметили, что телефон стал медленнее реагировать, то есть две возможные причины. Первый вариант — текущее соединение с интернетом нестабильно. В этом случае проверьте свои сетевые настройки и подключение, чтобы убедиться, что они работают правильно и стабильно. Второй вариант — служба ATX работает медленнее. В этом случае нажмите кнопку "Перезапустить ATX" или "Обновить ATX", чтобы перезапустить или обновить службу ATX, тем самым увеличив скорость реакции. Кроме того, при отправке сообщений убедитесь, что вы сначала выбрали поле ввода на вашем устройстве, иначе это может привести к зависанию устройства. В конце хотелось бы поблагодарить вас за использование нашего продукта. Если у вас возникнут другие проблемы, которые невозможно решить самостоятельно, обратитесь к автору для решения.### Внимание
huyxpy
1134111908
https://m.weibo.cn/u/7555217530?from=10C1295060&wm=5311_4002&sourceType=qq
Прочитали до конца, не поставите звездочку ? Если нашли полезной информацию, поддержите проект пожертвованием
.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )