Смартфон для работы с компьютером



Управляем компьютером с Android устройства

Начало

А началось все с того, что вызывает меня генеральный к себе, и говорит: «Вот видишь телефон? Хочу чтобы там была кнопка, я на нее нажимаю, и у меня в ноутбуке кино включается. Нажимаю другую – музыка играет.» И еще чего-то много наговорил, уж не помню. «Задача понятна? Выполняй!» Вот уж не знаю, с чего такая потребность у него возникла. То ли звезды не под тем углом встали, то ли сон какой приснился. Короче, не поймешь этих богатых… Ну да ладно.

Поначалу полез рыться в Гугл в поисках подходящей программы, а потом подумал – а какого черта? Напишу сам. Тем более, что задача не показалась сложной, да и “зов кода” уже давал о себе знать (этакая профессиональная it-ломка). Вот и решил соединить Windows и Android собственными силами.

То, что он просил, я сделал за пару дней. Но здесь я не хочу городить много кода, проверок и обработок исключений и т.п. Статья скорее предназначена для самых маленьких, как основа, опираясь на которую, можно построить что-то более масштабное. Ни в коем случае не претендую на оригинальность, явно кто-то что-то подобное писал, я просто предлагаю свой вариант. В общем, всем, кому интересно, посвящается.

Что мы имеем

Значит так. С одной стороны, у нас телефон с Android на борту, с другой — Windows с установленными программами, притом некоторые из этих программ нам надо запускать, подав команду с телефона.
Телефон и компьютер свяжем через локальную сеть, тут без вариантов (ну не смски же посылать). Таким образом, будем писать две программы. Первая — это сервер, работающий на компьютере, задача этой программы — открыть и слушать порт. Если на этот порт падает что-то полезное, то выполнить заданное нами действие. Вторая программа — это клиент, запущенный на телефоне, ее задача обработать действия пользователя, подключиться к серверу и передать информацию.

Немного о сокетах

Тема программирование сокетов до того уже заезженная, что и особо говорить нечего. Но все же в двух словах, для тех, кто не любит ходить по ссылкам.

Сокет — это программный интерфейс, который позволяет устанавливать связь между двумя процессами, используя протокол tcp/ip. Сокет ассоциирован с двумя аспектами: ip-адресом и портом. Где ip-адрес — это адрес хоста (компьютера) в сети, с ним работает протокол IP. Port — это идентификатор приложения, к которому адресовано соединение, тут работает протокол TCP. Порт может быть как TCP, так и UDP, в этой статье я буду использовать только TCP. Поскольку ip-адрес является уникальным как в сети интернет, так и в локальной сети, то он однозначно определяет адрес отправителя и адрес принимающего. Порт же является уникальным в пределах операционной системы, он определяет приложение, с которым мы хотим взаимодействовать. Порты могут быть стандартными, например, 80 закреплен за HTTP, или 3389 — RDP. Вы можете использовать любой незанятый порт, но стандартные лучше не трогать. Очень хорошо и с примерами о сокетах написано здесь.

Сервер. Начинаем хулиганить

Запускать Aimp, Windows Media Player и т.п. даже с телефона — это не интересно, да и на базе этой статьи вы сможете все это легко реализовать, немного переделав код. Давайте лучше побезобразничаем. Будим крутить-вертеть экран монитора как нам вздумается или выводит неожиданные сообщения (этакий однонаправленный ацкий мессенджер), и самое ужасное — выключим компьютер! Правда, за это могут и на вилы надеть. Ну да ладно, пускай сначала поймают.

Итак, приступим. В Visual Studio создаем новое Windows Form приложением с именем, скажем, FunnyJoke. Открываем файл Program.cs и удаляем весь код в теле функции Main. Этот код инициализирует главную форму приложения, нашему серверу никакие окна не нужны, он должен сидеть тихо мирно и ждать команд.

В классе Program определим следующие переменные:

Я взял порт 10000, именно его и будет слушать наш сервер, вместо ip адреса задал 0.0.0.0 это говорит о том, что будут обрабатываться все доступные сетевые интерфейсы. Это не совсем правильно, но для начала сойдет. Далее я определил три константы, которые задают коды команд, приходящие от клиента. В начале проекта не забываем подключить:

Теперь, вместо удаленного кода в функции Main вставляем следующий:

Пример хорошо комментирован. Но все же поясню. Сначала создаем локальную конечную точку и ассоциируем ее с нашим ip адресом и портом. Затем, определяем основной сокет, связываем его с конечной точкой, и переводим в режим прослушивания. После этого входим в бесконечный цикл, и начиная со строки:

наш сервер переходит в состояние ожидания соединения. При удачном соединении создастся новый экземпляр Socket, посредствам которого мы и будем общаться с нашим клиентом. После того как соединение установлено начинаем читать данные:

Команды клиента закодированы однобайтовым кодом (описаны в начале программы), сервер расшифровав код команды начинает ее выполнять, после этого снова переходит в режим ожидания. Исключением является codeMsg, т.к. после нее ожидается набор байт, содержащий строку сообщения. Поэтому, получив эту команду сервер снова читает данные с сокета:

Строка, приходящая от клиента, имеет кодировку символов UTF-8, поэтому прежде чем показать ее несчастному пользователю, необходимо привести ее к стандартному виду.

Что бы упростить программу, и не создавать лишние диалоги я использовал стандартный класс MessageBox, но у таков подхода есть один недостаток. MessageBox создает модальное окно, которое блокирует поток всего приложения. Другими словами, пока открыто окно с сообщением наш сервер ничего не делает. Минус конечно, но за простоту надо платить.

Процедуру, изменения ориентации экрана, расписывать не буду, ее код я выполнил так как рекомендует Microsoft вот тут. Как повернуть экран средствами .NET я не нашел. Это легко осуществимо для мобильных платформ, а вот для обычного PC оказалась неразрешимая проблема. Но, на помощь пришел старый добрый WINAPI и все разрулил.
Выключаем компьютер штатными средствами Windows, путем вызова команды shutdown с соответствующими флагами.

С сервером, пожалуй, все. Исходный код проекта я прикреплю в конце статьи.

Клиент

Клиент будем писать в Android Studio, поскольку мне эта IDE больше нравится чем Eclipse. Любителям последнего думаю не составит больших трудностей переделать проект. Для отладки я использовал VirtualBox с установленной виртуальной машиной Android, ибо родной эмулятор жутко тормозной, и жизни не хватить что бы с его помощью что-то отладить. Ну и периодически проверял на «живом» телефоне. Итак, создаем проект с именем FunnyJoke, задаем минимальную версию API, которую способен утянуть ваш телефон (у меня 16) и выбираем Empty Activity. Все остальное по умолчанию. Делаем разметку представления. С дизайном я шибко не извращался, кому надо пускай рисует красивые кнопки, размещает их по фен Шую и т.п. Я сделал просто: два поля типа EditText, первое для ввода ip адреса контролируемого компьютера, второе для текста сообщения, и кнопка, которая заставит поворачиваться рабочий стол. А вот кнопку завершения работы я сделал большую и угрожающее красную. Это чтоб случайно не нажать.

Тут стоит обратить внимание на поле edIPaddress, в нем стоит фильтрация на ввод только цифр и. (точка), так-как поле предназначено для ввода ip адреса. Надо сказать, что это единственная проверка на правильность введенных данных, все остальное остается на совести пользователя. Еще хочу cказать о кнопке btnPowerOff ее состояние отслеживает селектор, и в зависимости от того нажата она или нет меняет изображение (иначе, не понятно произошло ли нажатие, кнопка будет выглядеть как статичная картинка). Вот код селектора button_img.xml:

Соответственно в ресурсах должны быть две картинки одна для нажатого состояния, другая для обычного. Получится вот такой экран:

На этом с разметкой закончим. Переходим к файлу MainActivity.java. В первую очередь, так же, как и в сервере, определяем коды команд и некоторые переменные:

Далее переходим к обработчику нажатия кнопок. Обратите внимание, что обработчик один, и какая копка была нажата определяем по идентификатору. В первую очередь получаем строку с поля edIPaddress, если поле не заполнено, то выводим сообщение о необходимости ввода ip адреса, и больше ничего не делаем.

В Android не рекомендуется создавать долгоиграющие процессы в основном потоке, это связанно с тем, что возможно “подвисание” программы, и пользователь или система может просто закрыть приложение, не дождавшись ответа. К таким долгоиграющим процессам относится и работа с сетью. В этом случае необходимо создать дополнительный поток, в котором и выполнять “долгий” код. В java есть стандартный класс Thread, который позволяет управлять потоками но, его мы использовать не будем, т.к. в Android существует специально предназначенный для этого класс AsyncTask. Подробно можно почитать здесь или здесь.
Создаем класс, который будет заниматься отправкой сообщения, его родителем делаем AsyncTask, и переопределяем метод doInBackground в теле которого и будет находится основной код:

Сначала создаем экземпляр класса InetAddress, который будет содержать в себе ip сервера. Потом создаем сокет, связываем его с удаленным адресом и портом, и запрашиваем стандартный поток ввода/вывода (вернее только вывода, потому что наш клиент ничего не получает). И наконец, в зависимости от значения переменной codeCommand, посылаем сообщение серверу.

Теперь вернемся к нашему обработчику нажатия кнопок, создадим экземпляр класса SenderThread, затем в зависимости от того какая кнопка была нажата инициализируем переменную codeCommand, по ней наш поток будет определять что мы от него хотим. И наконец, активируем, вызвав метод execute().

Немного поправим манифест приложения, дадим разрешение на использование сети и wi-fi, без этого ничего работать не будет:

Все! Можно собирать и проверять. Вот результат:

Источник

8 приложений для управления компьютером со смартфона

Chrome Remote Desktop

Chrome Remote Desktop – один из самых простых вариантов управления компьютером с телефона. Его преимущества заключаются в том, что для работы на большинство ПК даже не придется ничего устанавливать – у многих пользователей уже и так стоит браузер Chrome. Кроме того, для приложения не имеет значения платформа – это приложение будет работать при наличии любого телефона и компьютера с Windows, macOS и даже Unix-подобной системой. Среди других заметных преимуществ – полностью бесплатное распространение и отсутствие необходимости в дополнительной установке серверного ПО.

В то же время функциональность приложения сравнительно небольшая. Все, что может сделать пользователь – выполнение действий в браузере Chrome. И все, что может сделать пользователь – заниматься интернет-серфингом, читать книги, запускать аудио и видео в режиме онлайн. Доступ к файлам на компьютере отсутствует. Зато благодаря такому приложению, можно просматривать данные сразу на нескольких ПК, синхронизированных с телефоном с помощью профиля Google.

Microsoft Remote Desktop

Еще одно приложение, обеспечивающее управление компьютером с телефона, создано компанией Microsoft. Поэтому вполне логично, что работает оно только с компьютерами на ОС Windows. Зато его работа основана на использовании RDP-подключения, не требующего никакой оплаты. Правда, из-за такого способа синхронизации настройка становится сложнее, и пользователю приходится выполнять следующие действия:

  1. Перейти к системным настройкам компьютера, открыв панель управления, найти каталог «Система», а затем – «Настройка удаленного доступа».
  2. Разрешить подключение к удаленному рабочему столу.
  3. Создать новое подключение в приложении на смартфоне, указав IP-адрес компьютера (если он не известен, следует открыть командную строку и ввести команду ipconfig).
  4. Ввести на смартфоне логин и пароль учетной записи на ПК с Windows.

После синхронизации с телефоном компьютер блокируется, а его рабочий стол отображается на устройстве с Андроид или iOS – примечательно, что приложение есть не только в Play Market, но и в App Store. При необходимости изменения масштаба следует нажимать на специальную кнопку. А после перехода к режиму Mouse Pointer можно имитировать действия компьютерной мыши нажатиями на сенсорный экран смартфона. Виртуальная клавиатура утилиты отличается от стандартной телефонной версии – здесь есть специальные клавиши для работы с ОС Windows.

Среди минусов Microsoft Remote Desktop – отсутствие мультиплатформенности и сравнительно невысокая скорость подключения. Например, через приложение можно запускать видео максимум в разрешении HD.

TeamViewer – Удаленный доступ

Приложение Team Viewer – не только популярное, но и практически самое функциональное среди всех похожих утилит. Работать оно может на разных операционных системах и имеет неплохой рейтинг. Однако перед использованием понадобится довольно сложная настройка и инициализация. Не исключено, что не слишком опытному пользователю придется воспользоваться для работы с приложением инструкцией или посторонней помощью.

Среди плюсов этого ПО – поддержка передачи аудио и видеороликов с высоким разрешением, возможность отправки и получения файлов с любыми расширениями в любом направлении. Еще одна особенность – чат в реальном времени для общения пользователя смартфона с тем человеком, который работает за компьютером.

Соединение зашифровано с помощью кодировки AES (256 бит), что делает передачу данных достаточно безопасной. Благодаря этой особенности Team Viewer применяется не только отдельными пользователями, но и крупными компаниями – например, Philips или Microsoft. Впрочем, у приложения есть и минус – для его использования придется платить. Стоимость лицензии на программу зависит от числа подключенных компьютеров и выбранного пакета и стартует с 15600 рублей в год за бизнес-версию.

Unified Remote

Специализированное ПО для компьютеров и смартфонов на iOS и Android включает серверный агент и мобильное приложение. Первая часть устанавливается на ПК, вторая – на телефон. Возможностей приложения достаточно для запуска видео и музыки, которые автоматически останавливаются на время поступления вызова. А еще такое программное обеспечение поможет управлять включением ПК и его громкостью, выполняя задачи пульта управления.

Для работы с утилитой на компьютере должен быть установлен NET Framework версии 4 и выше. Зато последние версии поддерживают не только Windows, но и другие операционные системы. У бесплатной версии возможностей меньше, для получения доступа ко всем функциям пользователю придется заплатить 339 рублей за версию Full (для Android) или $3,99 для iPhone.

WiFi Mouse HD

Это достаточно функциональное и бесплатное приложение для удаленного управления ПК со смартфона. Правда, разработчик предлагает и расширенную версию с большим количеством функций – за нее придется заплатить около $2. Соединение смартфона и компьютера выполняется с помощью беспроводной сети после установки на первом устройстве приложения, а на втором – сервера.

В списке функций, которые есть у WiFi Mouse HD:

  • имитация клавиатуры компьютера на экране телефона;
  • выполнение задач беспроводной мыши, включая управление жестами;
  • управление презентациями, медиа-плеером, браузерами, «Проводником» и выключением ПК.

Утилита совместима с телефонами на iOS и Андроид, а также с ПК с любой современной платформой – от Windows и macOS до Ubuntu. Но есть и минус – для использования телефон и компьютер должны находиться в одной сети.

Splashtop 2 Remote Desktop

Еще одно популярное ПО, которым можно пользоваться бесплатно. Правда, обычная версия обеспечивает синхронизацию только между ПК и смартфоном, которые находятся в одной сети. Для удаленного управления по интернету понадобится покупка полной версии Splashtop 2 Remote Desktop – ее стоимость составляет $2 в месяц и $17 в год.

Среди особенностей программы – необходимость создания учетной записи в сервисе Splashtop. Для этого придется установить на ПК утилиту Splashtop Streamer и зарегистрироваться в ней. После подключения на экране смартфона появятся подсказки по поводу управления жестами и использования панели управления.

По умолчанию действия выполняются прикосновениями к нужной точке экрана, имитирующими клики левой кнопки мыши. Но есть возможность переключиться в режим тачпада, управляя ПК так же, как с помощью сенсорной панели ноутбука.

KiwiMote

В отличие от большинства приложений для управления компьютером с телефона, этим можно пользоваться совершенно бесплатно. Нет никаких дополнительных и имеющих расширенную функциональность версий. Правда, и работать с ПО могут только владельцы смартфонов на Android.

Среди причин для выбора именно этой программы стоит выделить:

  • совместимость с ПК практически с любой ОС – Windows, macOS или Linux;
  • клавиатура в приложении, полностью совпадающая с компьютерной;
  • возможность использования телефона в качестве мыши или игрового манипулятора;
  • простая настройка (хотя для работы понадобится загрузка с официального сайтаразработчиков) и использование;
  • управление презентациями, плеерами, читалками, программами для просмотра фото;
  • стабильная, благодаря использованию Java, работа.

Раскладка клавиатуры может настраиваться пользователем так, как ему удобно. При желании можно выбрать фон, цвета символов и границы. Кнопки регулировки громкости телефона могут применяться для прокрутки информации на экране, обновления страницы или смены слайдов.

AccessToGo RDP

При использовании программного обеспечения AccessToGo RDP можно выбрать два варианта протокола. Первый – собственный и платный. Второй – бесплатный RDP. С помощью этой программы можно настраивать качество передаваемой картинки, изменять вид клавиатуры (для ПК или стандартная смартфонная), устанавливать управление двухпальцевыми или трехпальцевыми жестами. Есть возможность настройки использования телефона в качестве мыши или тачпада, что позволяет управлять курсором нажатиями или движениями пальцев по экрану.

Среди других особенностей программы – поддержка нескольких языков и отдельный режим прокрутки. А еще – возможность использовать не только виртуальную, но и физическую клавиатуру, которая подключена к смартфону или планшету по USB (при наличии поддержки технологии OTG) или Bluetooth. Звук с компьютера может воспроизводиться динамиками самого ПК или на телефоне, есть защита от стороннего доступа при помощи шифрования.

Единственный недостаток утилиты по сравнению с другими программами – меньшая скорость доступа, которая вряд ли позволит нормально воспроизводить на телефоне Full HD или 2K видео, даже если такой формат поддерживается гаджетом.

Источник

You may also like...

Adblock
detector