Как стать автором
Обновить

Комментарии 32

Все это здорово конечно, но я бы teamviewer'ом ограничился.

Для отладки я использовал VirtualBox с установленной виртуальной машиной Android, ибо родной эмулятор жутко тормозной, и жизни не хватить что бы с его помощью что-то отладить.

Справедливости ради стоит отметить, что в последнее время эмуляторы на x86 в плане скорости стали гораздо приятнее. Да, с ними очень много других проблем, но хотя бы они стали быстрыми и отзывчивыми.
Безусловно они стали приятнее, но, к сожалению, новые эммуляторы требуют аппаратной поддержки от ПК.
требования
For accelerated emulator: 64-bit operating system and Intel® processor with support for Intel® VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality
Из того, чем пользовался, лучший эмулятор это Xamarin Android Player. Да, бывает подглючивает, но скорость работы нормальная и для работы вполне можно использовать.
Имхо намного более удобный и современный способ общения между устройствами если уж используется .NET WCF.
Ожидал в статье увидеть управление устройством не находящимся в той же локальной сети, сам хочу себе подобное сделать aka TeamViewer только без рабочего стола, а лишь с нужными кнопками
В данном примере вовсе и не обязательно что бы клиент и сервер были в одной подсети. Все будет работать, если сети маршрутизируемы, т.е «видят» друг друга. Более того можно подключатся из интернета, правда для этого нужно будет сделать проброс порта (в данном случае это порт 10000) в NAT-е Вашего роутера.
Я думаю более интересный вариант с двумя серыми ip адресами и сервера посредника.
Пришел в голову вариант с использованием Google Drive, на машине с win пишем скрипты, которые отрабатывают при появлении файла в папке и всё
Для отладки я использовал VirtualBox с установленной виртуальной машиной Android, ибо родной эмулятор жутко тормозной, и жизни не хватить что бы с его помощью что-то отладить


Genymotion попробуйте, основана на VirtualBox, с готовыми шаблонами устройств, можно настраивать всякие параметры. Устройство создается практически в пару кликов. Есть плагин интеграции для студии. Бесплатная версия урезана, но для разработки и тестов вполне хватает.
«В Visual Studio создаем новое Windows Form приложением с именем, скажем, FunnyJoke. Открываем файл Program.cs и удаляем весь код в теле функции Main.» — Думаю в следующий раз стоит сразу создать консольное приложение или службу.
Правильнее конечно служба, просто не хотелось усложнять.
Почему AsyncTask, а не Service? Есть аргументация выбора?
Необходимо было разработать приложение, которое нужно запустить, нажать на кнопку и закрыть. В фоне не надо что бы оно работало. Может быть вы имели в виду Thread?
Я представил это как: запустил приложение, ввел ip, стартовал сервис(внутри сокет соединился), затем я могу 20 раз отправить сообщение, затем повернуть экран и потом выключить — в таком случае было бы не логично на каждое событие разрывать и устанавливать сокет соединение, достаточно было бы onBind к сервису и передать какие-то коды.
Возможно, в описанном Вами сценарии, AsyncTask и имеет смысл, хотя я бы лучше использовал Thread, т.к. ответ в UI Вы не получаете.
Ну это смотря от поставленной задачи, если часто надо посылать сообщения, то думаю — да, каждый раз разрывать соединение смысла нет.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А чем, собственно, «виндовый» сервис выигрывает у .NET службы?
Все равно не платформонезависимый код, а программировать на C# быстрее и проще, все из коробки есть.
НЛО прилетело и опубликовало эту надпись здесь
Аргументировано!
Извращение — это в 2016 году использовать WinApi. C++ хороший язык, но раскрывается он точно не в сервисах. Гораздо удобнее юзать тот же .Net для таких вещей.

Я бы лучше взял за основу Android версию KDE Connect, там очень удобный UI для управления компьютером, разобрался с её протоколом, и написал бы клиентскую версию для Windows.

Можно ли реализовать клиент не в виде приложения для Android, а скажем на вебсайте?

Делал такое когда разбирался в Go, сейчас пока в состоянии стагнации — https://github.com/vblazhnov/RemoteControl. К сожалению, ничего не понимаю в frontend, поэтому с интерфейсом все плохо. Пытался проектировать так, что бы получилась система "плагинов" времени компиляции, сейчас реализовано управление мышью, клавиатурой, громкостью, вызов команды shutdown.
Буду рад пул-реквестам, особенно по интерфейсу.

В развитие вопроса keslo прошу сообщить о возможности реализации клиент — Айphone, сервер под Windows, а связь по кабелю USB?
Как раз недавно реализовывал подобную штуку. ПК часть писал на java. C помощью библиотеки Roboto можно эмулировать нажатие клавиш и клики мышкой. В ответ ПК постоянно слал скриншоты. Получалось что то около 2 скриншотов в секунду. Фильм конечно не посмотришь с такой скоростью, но управлять курсором получалось вполне комфортно.
А почему бы не описать в статье что-то более полезное и интересное, чем бесполезную затею вращать экран?

Я пишу аналогичную программу, но реализация оказалась невозможной в связи с тем, что перед тем, как управлять компом с телефона, нужно комп разблокировать, а программно это невозможно. Или возможно? Может автор знает как? ;)
На счет разблокирования — не знаю. Если система при этом запросит пароль на вход, то скорее всего не получится. А почему обязательно нужно разблокировать?
Ну потому что если писать полноценную программу дистанционного управления компом с телефона, то это подразумевает под собой весь набор функций — включение компьютера, запуск приложений, управление приложеними, отключение монитора, включение монитора, выключение компа (режим сна). Я реализовал почти всё, но когда дело дошло до необходимости разблокировки компа после выхода из режима сна — тут я и понял, что проделал всю эту немаленькую работу абсолютно напрасно. Windows не позволяет программно разблокировать систему. Только интерактивно, то есть все такие программы заведомо бесполезны. Вот так, спасибо компании микрософт. Хотя наверно у них есть на то причины.
На самом деле, это должно быть возможно.
Для WinXP через GINA, для Vista и более поздних, через механизм Credential Providers
Конечно, это не так тривиально.
Вроде бы, софт logmein такое умеет.
GINA вроде как для W7 уже нету, а вот насчёт Credential Providers… читал об этом, но говорят что решения всё же нету. Неуверен, почитаю ещё раз, когда в тот раз копал, решения найти не смог.
а можно все это выложить в готовых файлах, типа поставил на винду, поставил на андроид, привязал к друг другу и пользовать?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории