Библиотека PAARC поможет превратить телефон в пульт дистанционного управления ПК

 

Грэг Дункан

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

У вас есть Windows-приложение. У вас есть Windows Phone 7. Не правда, было бы клёво, если бы можно было управлять Windows-приложением с телефона? Превратить его в удаленный пульт управления Windows-приложением? Но как это сделать? Как соединить телефон с приложением? Посылать команды и получать обратно статус?

В этом всё дело. Вам не требуется писать его! Петер Кухн (Peter Kuhn или Mister Goodcat) уже сделал это за вас и предоставил открытый доступ к исходнику!

Объявление: телефон как пульт дистанционного управления

Вскоре после того, как я приобрел свой Windows Phone, у меня появилась идея создать приложение, которое позволяло бы удаленно управлять настольным компьютером. Причина заключалась в том, что мне было лень использовать неуклюжую и ошибающуюся полноразмерную беспроводную клавиатуру и мышь, когда я хотел полазить по вебу лежа на диване, используя компактный медиаПК, соединенный с телевизором. Не правда, было бы удобнее использовать в качестве управляющего устройства более удобный мобильный телефон. К сожалению, в RTM-версии Windows Phone отсутствовали сетевые возможности для этого – использование веб-сервисов или http не было, сколько я не искал. Всё изменилось с выходом версии Mango, так как к платформе была добавлена поддержка сокетов TCP/UDP.

После начала работы над приложением я быстро понял, что было бы действительно здорово не просто реализовать эти возможности, но и создать общую библиотеку, которую можно интегрировать в ваши собственные приложения, как на стороне телефона, так и настольного ПК. Это был момент, когда я решил создать PAARC (Phone as a Remote Control) – извините за скучное имя, мне не пришло в голову ничего лучшего или более вдохновляющего clip_image002.

PAARC имеет следующие возможности:

  • Использует сокеты TCP и UDP для максимальной производительности и реактивности (посмотрите демонстрационное видео и убедитесь сами), но все сетевое управление и потоки остаются для вас за сценой.
  • Требует минимальных технических знаний от конечных пользователей, т.е. используется механизм обнаружения сервера – нет криптографии в сети, возможность подсоединения «одним щелчком».
  • Поддержка исходных (множественных) касаний, встроенных жестов вроде постукиваний, щелчков, нажатий и перетаскиваний, получение данных всех сенсоров (акселерометра, компаса, гироскопа, комбинированных движений) и текстового ввода.
  • Идет со ссылками на WP7-клиента с поддержкой закрытия/деактивации и всеми поддерживаемыми типами данных, поэтому вам не обязательно создавать отдельное приложение для начала работы (но вы, конечно, можете это сделать или включить библиотеку клиента в собственное существующее приложение).
  • Допускает полную настройку и управление со стороны главного приложения (вашего настольного .NET-приложения)
  • Имеет встроенные возможности трассировки для отслеживания проблем.
  • Идет с несколькими демонстрационными полностью документированными приложениями, которые можно изучить.

PAARC : достижения

Уже с первого анонса моего проекта «Телефон, как ПДУ» его целью была разработка выпуска референсного приложения для Windows Phone Marketplace. За последний месяц я добавил некоторые улучшения и исправил ошибки, и сейчас рад представить принятую первую версию, которая теперь доступна для всех – бесплатно и без рекламы. Сейчас вы имеете возможность найти приложение по ключевому слову "PAARC" Marketplace со своего мобильного телефона или зайти сюда. В этом сообщении я расскажу о том, что это достижение означает для вас, как разработчика и что есть в коробке для обычного пользователя.

Контроллер на WindowsPhoneдля ПК

Одним из аспектов доступного теперь референсного клиента является, конечно, его работа в качестве демонстрационного образца для библиотеки с открытым исходным кодом. Чтобы довести его до показательного состояния, один из примеров, включенных в проект, был расширен и эволюционировал в нечто более содержательное: контроллер на Windows Phone для ПК. Это настольное приложение на основе.NET, позволяющее отправлять телефонный ввод от датчиков и касаний на настольный компьютер и преобразовывать в команды мыши уровня ОС, что фактически превращает ваш телефон в пульт дистанционного управления любого компьютера. И опять, исходный код этого приложения является частью открытого проекта; для удобства, скомпилированный установщик для него доступен обычному пользователю на этой странице (также содержащей полезную информацию и ответы на часто задаваемые вопросы):

clip_image004

Контроллер на WindowsPhone для ПК

Что?

Проект контроллера на Windows Phone для ПК позволяет управлять любым настольным или медийным ПК, используя в качестве устройства ввода Windows Phone. Подсоедините ваш телефон к ПК одним щелчком, используя Wi-Fi, и все касания, жесты и даже данные акселерометра при желании будут переданы на ПК, где преобразуются в действия мыши. Также можно набирать на телефоне текст, который будет преобразован во ввод клавиатуры на ПК – диванный серфинг никогда не был проще!

Где?

Чтобы реализовать этот проект, нужны две вещи:

1. Приложение для настольного ПК

2. Приложение, работающее на телефоне

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

Windows Phone PC Controller 1.0 (пакет MSI, ~640 KBytes)
(Windows 7 32/64-bit)

Приложение для телефона называется PAARC ("Phone as a Remote Controller" – Телефон как ПДУ) и его можно скачать и установить с Marketplace прямо на телефон, или используя следующую ссылку:

PAARC на Marketplace
(Требует устройства, совместимого с Windows Phone 7.5 "Mango")

Как?

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

Теперь запустите приложение на телефоне и нажмите на кнопку автосоединения. Телефон должен соединиться с ПК и вы сможете использовать касания для управления ПК! Если автоматическое соединение не установится, можно попробовать ввести IP-адрес вашего ПК вручную. Этот адрес для удобства выводится приложением на ПК.

Телефон как пульт управления

Библиотека PAARC – это проект, нацеленный на разработчиков, желающих использовать Windows Phone в качестве устройства ввода для любого.NET-приложения, работающего на удаленном или настольном компьютере. Он состоит из различных частей, начиная от библиотеки ядра, референсной реалзации на телефоне и нескольких примеров для ПК (подробности ниже). Библиотека сама по себе не делает никаких предположений об удаленном.NET-приложении, что позволяет подсоединить телефон к любому типу настольных приложений или игр, например, для использования его как датчика, как устройства ввода касаний, игрового контроллера, удаленной клавиатуры или чего-то еще.

Чтобы быстро взглянуть на пример библиотеки в действии и услышать основные объяснения, поглядите эти семиминутные видео:

от Vimeo.

от Vimeo.

Составные части

PAARC состоит из следующих частей:

  • Ядро библиотеки: ключевые компоненты делятся на следующие четыре части:
    • Две клиентские сборки для Windows Phone, одна из которых получает данные из разных частей телефона, а другая подсоединяются к удаленному серверу, используя сокеты. Коммуникационная сборка может получать настройки и команды управления от сервера, посылать ему данные и использовать широковещательные запросы для автоматического поиска в сети сервера. Сборка, получающая данные включает в себя следующие возможные источники:
      • Все API встроенных в Windows Phone датчиков: акселерометра компаса, гироскопа, и API комбинированного движения (частично ограничено набором поддерживаемых аппаратных устройств)
      • Исходные данные о прикосновениях от сенсорной панели, включая множественные одновременные касания
      • Все встроенные высокоуровневые жесты (постукивания, щелчки, нажатия, удержания, вертикальные и горизонтальные перетаскивания и т.п.)
      • Настраиваемый режим перетаскивания для его упрощения
      • Текстовый ввод с использованием SIP-клавиатуры.
    • Сборка.NET 4 серверной стороны, прослушивающая входящие широковещательные запросы клиента или прямые соединения и способная как к отправке команд управления и настройки подсоединенному телефону, так и к получению данных, собранных им.
    • Разделяемая сборка используемых типов данных, интерфейсов и т. п.

· Референтное клиентское приложение для Windows Phone: оно использует сборки Windows Phone ядра библиотеки. Интерфейс пользователя позволяет подсоединяться к удаленному серверу и обеспечивает обработку всех вышеупомянутых жестов, исходного сенсорного ввода, датчиков и текста. Оно предназначена для разработчиков, которые не хотят или не требуют создания пользовательских приложений для телефона, единственная цель которых – опубликовать эти приложения для публичного использования в Marketplace, как только они достигнут стабильного состояния.

  • Пример настольных приложений: проект включает несколько примеров приложений для демонстрации использования библиотеки. В частности, включены следующие приложения:
    • Cube: демонстрирует как использовать датчики (акселерометр), жесты и исходный сенсорный ввод для управления содержимым приложения. Повороты 3D-куба управляются акселерометром, масштабированием управляют жесты сжатия, а перемещения выполняются с помощью исходного сенсорного ввода. Хорошая исходная точка для быстрого обучения разработчиков.NET-приложений использованию библиотеки.
    • ConsoleApplication: простой сервер командной строки, позволяющий посылать телефону небольшие наборы команд и отображать данные, полученные от него. Удобен для быстрой проверки и изучения основ, легко расширяется для собственных нужд.
    • PCController: наиболее изощренный пример и естественная мотивация для начала разработки этой библиотеки. Пример преобразует команды, полученные от телефона в команды операционной системы для манипулирования курсором мыши. Это позволяет эффективно управлять настольным компьютером, используя жесты, необработанные касания, акселерометр и текстовый ввод, включая такие возможности как щелчки по левой и правой клавишам мыши, двойные щелчки, перемещение курсора в относительном и абсолютном режимах, перетаскивание и эмуляцию колесика мыши. Пример не предназначался служить простой демонстрацией или способом легкого обучения, это пример из реальной жизни для более сложного применения.
    • LogService: вспомогательное приложение для отладки и диагностики.

Это сообщение не попало бы в Coding4Fun, если бы в нем не было чуток кода…

Примечание. Если вы действительно хотите поиграть с кодом, взглянуть на исходники в Visual Studio, то вам понадобятся установленные Windows Phone SDK 7.1(5) и Portable Library Tools. Если возникнет ошибка Project cannot be loaded/Project Type Not Supported, то причина, скорее всего, кроется в том, что пропущен один из них (я забыл про Portable Library Tools...ох!)

Пара других замечаний, связанных с исходниками в Visual Studio. A) Nuget – ваш друг. Я встретился с рядом ссылок, которые отсутствовали на моей машине. Чтобы исправить ситуацию я просто применил "Manage Nuget Packages" и добавил все необходимое (кстати, последний диалог About/Options можно найти по строке "YLAD" и "YLOD" соответственно).

B) Если вы столкнулись с ошибкой "cannot find nuget.exe" (не могу найти nuget.exe) скачайте его отсюда и поместите файл .exe в папку "PAARC_0.9_src\.nuget" (или испр»вьте все проекты и удалите целевую сборку…для меня скачивание оказалось проще).

Подробнее про компиляцию кода можно узнать в разделе Compile the Code.

Вот фрагмент решения версии 0.9;

clip_image006

Как можно видеть, есть ряд примеров, с которыми можно заняться.

Вот снимок приложения примера, запущенного на моем ноутбуке.

clip_image008

  • Если вы столкнулись с проблемами, то проверьте раздел Troubleshooting problems (решение проблем)
  • И наконец, если вы интересуетесь, как можно использовать это в собственных проектах, загляните в раздел Use the library in your own projects (Использование библиотеки в собственных проектах)
  • Также, если вы натолкнулись на сетевую ошибку при использовании эмулятора, загляните сюда https://vimeo.com/31514282 @ 24:06 (это помогло мне запустить пример…)

Если все ваши мысли посвящены тому, как использовать ваш Windows Phone в качестве пульта дистанционного управления компьютером, то этот проект и библиотека ждут вас…