Как пользоваться удаленным дисплеем Rome

Обновлено: 21.11.2024

API сеанса удаленных систем (пример UWP-викторины)

Образец викторины в стиле паба для универсальной платформы Windows (UWP), демонстрирующий API сеанса удаленной системы (часть платформы Project Rome).

Примечание. Этот пример предназначен и протестирован для Windows 10 версии 2004 (10.0; сборка 19041) и Visual Studio 2019. При желании вы можете использовать свойства проекта, чтобы переориентировать проект(ы) на Windows. 10, версия 1903 (10.0; сборка 18362).

Project Rome – это платформа для создания общих интерфейсов, которая позволяет разработчикам распространять свое приложение на устройства, подключенные проксимально или через облако. API удаленного сеанса позволяет устройству размещать сеанс, доступный для обнаружения другими устройствами, находящимися поблизости. Затем они могут присоединиться к этому сеансу и отправлять сообщения организатору и другим участникам.

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

Примечание. Дополнительную информацию о платформе Project Rome, включая API сеанса удаленной системы, см. в разделе Подключенные приложения и устройства.

Разработка универсальной платформы Windows

  • Windows 10. Минимум: Windows 10 версии 1809 (10.0; сборка 17763), также известная как обновление Windows 10 за октябрь 2018 г. . Минимум: Windows SDK версии 10.0.17763.0 (Windows 10, версия 1809). (или Visual Studio 2017). Вы можете использовать бесплатную версию Visual Studio Community Edition для создания и запуска приложений универсальной платформы Windows (UWP).

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

Запуск примера

Чтобы запустить этот пример, вам необходимо:

Имейте как минимум два устройства с Windows 10, на которых установлено обновление Windows 10 Fall Creators Update (версия 16299).

Настройте следующие параметры:

  1. Bluetooth должен быть включен. Это можно сделать, выбрав «Настройки» | Bluetooth и другие устройства и включение Bluetooth.
  2. Совместное использование на разных устройствах также должно быть включено. Вам потребуется доступ к Изменить настройки общего доступа. Для функции "Общий доступ на разных устройствах" должно быть установлено значение "Вкл." и "Все рядом".
  3. Убедитесь, что в ваш проект добавлены возможности RemoteSystem, Bluetooth и Интернет (клиент и сервер). Он должен быть отмечен по умолчанию, но важно проверить это до начала работы над любым проектом Remote System Session API.

Разверните приложение как минимум на двух устройствах с Windows 10. На одном устройстве вам нужно стать организатором сеанса/организатором викторины, а на другом устройстве присоединиться к сеансу и ответить на вопросы игры.

Примечание. Bluetooth должен быть включен, а устройства, обменивающиеся сообщениями друг с другом, должны находиться в одной сети. Bluetooth используется для обнаружения сеансов, а затем соединение происходит с использованием сетевого подключения, например. Wi-Fi или локальная сеть (LAN). Обнаружение не будет работать в локальной сети, если вы присоединились к общедоступной сети, так как оно будет заблокировано брандмауэром. Это относится как к сеансу, так и к обнаружению устройств.

Краткий обзор кода

API Remote System Session предоставляет следующие функции:

  • Создать — возможность создать сеанс, к которому присоединятся участники.
  • Обнаружение — обнаружение сеансов
  • Участники — возможность присоединиться к сеансу, выйти из сеанса и пригласить сеансовые устройства.
  • Обмен сообщениями – широковещательные или целевые сообщения участников.

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

  • RemoteSystemSession — объект сеанса обмена с участниками. Сообщения транслируются всем участникам или направляются определенному участнику в зависимости от предпочтений.
  • RemoteSystemSessionWatcher — объект-наблюдатель, который уведомляется об удаленных сеансах, которые были добавлены или удалены.
  • RemoteSystemSessionMessageChannel. Канал представляет собой логическую конструкцию поверх RemoteSystemSession. Канал обеспечивает гибкость для создания именованных каналов для выделенной передачи данных. Каналы могут быть надежными и ненадежными. В обоих случаях порядок сообщений не гарантируется.
  • RemoteSystemSessionParticipant — представляет участника сеанса. В сеансе может участвовать один или несколько участников.

О нас

Пример Windows UWP, иллюстрирующий использование API сеансов удаленной системы в сценарии локальной многопользовательской игры-викторины.

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

Платформа Windows предназначена для самых разных устройств: от настольных ПК, ноутбуков и смартфонов до концентраторов с большим экраном, HoloLens, носимых устройств, IoT и Xbox. Ландшафт устройств еще больше диверсифицируется за счет устройств Android и iOS, новых решений VR/AR и новых продуктов IoT. Эта неоднородная среда предоставляет обычному пользователю множество вариантов выбора и устройств.

Однако задачи, которые мы выполняем ежедневно (будь то дома с семьей или на работе с коллегами), по своей сути ориентированы не на устройства, а на человека. По мере того, как мы увеличиваем количество наших устройств и все больше полагаемся на приложения в своей жизни, становится все сложнее добиваться поставленных целей.

Project Rome – это платформа для создания возможностей, выходящих за рамки одного устройства, чтобы они могли гармонизироваться между устройствами. Она позволяет разработчику создавать ориентированные на человека сценарии, которые перемещаются вместе с пользователем и стирают границы между их устройствами независимо от форм-фактора или платформы. . Это видение начинает обретать форму в юбилейном обновлении Windows 10 (Windows 10, версия 1607) с API удаленных систем, что позволяет разработчикам расширять возможности своих приложений на устройствах Windows, подключенных проксимально или через облако.

В этой записи блога рассказывается о функциональных возможностях Remote Systems API на примере приложения, созданного на основе Project Rome, и предлагается разработчикам устранить барьеры между устройствами, чтобы уменьшить трения и лучше удовлетворять потребности ваших пользователей.

Музыкальное приложение Contoso

Пол – разработчик, создавший приложение UWP для потоковой передачи музыки. У него растет пользовательская база, и он наблюдает за использованием различных устройств с Windows 10. Его телеметрия показывает установки, происходящие на телефонах, ПК и даже Xbox. Определив возможность, Пол намеревается: а) уменьшить трудности при прослушивании музыки на разных устройствах и б) упростить установку своего приложения на другие устройства. В целом, он хочет, чтобы его пользователи могли наслаждаться прекрасными мелодиями весь день, где бы они ни находились.

Пол решает создать сценарий, в котором пользователи смогут перенести текущую песню, которую они транслируют, на новое устройство. Примеры сценариев включают прослушивание музыки на вашем телефоне, а затем, после возвращения домой, перенос на ваш Xbox; прослушивание на рабочем ПК, затем передача на телефон для прогулки и т. д. Все необходимые ему инструменты доступны в Project Rome, а именно — Remote Systems API.

Обнаружение устройств

Первый шаг Пола к эффективному взаимодействию между устройствами — это обнаружение других устройств с хост-устройства и последующее подключение к целевому устройству.

Пол может реализовать обнаружение устройств через Wi-Fi и Bluetooth с низким энергопотреблением (BLE), когда целевое устройство находится поблизости, или через облако. Это обнаружение обеспечивается классом RemoteSystemWatcher, который выбирает оптимальный транспорт с учетом сценария; целевые устройства не требуют реализации какого-либо специального кода, чтобы их можно было обнаружить. Если ему нужны расширенные функции для более целенаправленного обнаружения, Пол может внедрить в RemoteSystemWatcher фильтры для типа обнаружения, типа устройства и статуса доступности обнаруженного объекта. устройства. Он также может подключаться к устройству напрямую по IP-адресу.

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

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

private async void DiscoverDevices()
var accessStatus = await RemoteSystem.RequestAccessAsync();
if (accessStatus == RemoteSystemAccessStatus.Разрешено)
_remoteSystemWatcher = RemoteSystem.CreateWatcher();

Подключение и запуск опыта

Запуск приложения на удаленном устройстве осуществляется с помощью RemoteLauncher.LaunchUriAsync API (существующий API, который был расширен для работы на разных устройствах). Перед запуском соединение устанавливается путем передачи объекта RemoteSystem в RemoteSystemConnectionRequest(). Пол использует эти API-интерфейсы для указания устройства, которое пользователь выбрал для подключения, а также для предоставления полезной нагрузки, необходимой для запуска текущей воспроизводимой песни (используя его активацию протокола «contosoapp:», также определенную в манифесте приложения).

public static async Task LaunchAndConnect(RemoteSystem remoteSystem)
//Запуск приложения на удаленном устройстве
RemoteLaunchUriStatus launchUriStatus =
await RemoteLauncher.LaunchUriAsync(
new RemoteSystemConnectionRequest(remoteSystem), < br />новый Uri("contosoapp:listen?http://Music/Playlist.pls?trackID=5"),
new FallbackUri("http://contoso.com/musicapp/"));
>

Он также предоставляет URI своего веб-сайта, рекламируя установку своего приложения в качестве запасного варианта, если на целевом устройстве не установлено его приложение. Менее чем через час после начала работы Пол завершает кодирование и начинает подготовку обновления к отправке своим пользователям.

Обмен сообщениями между подключенными устройствами

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

В приложении Пола уже есть локальная служба приложений, которая позволяет другим приложениям управлять воспроизведением музыки. чтобы включить удаленную функциональность для своей службы, он просто добавляет к своему элементу AppService в манифесте appx. Затем в своем коде приложения, которое подключается к удаленным устройствам и запускается на них, он создает экземпляр объекта AppServiceConnection и создает объект RemoteSystemConnectionRequest для целевого устройства, тем самым открывая подключение к службе приложений на удаленном целевом устройстве.

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

public static async Task SendMessageToRemoteSystemAsync (RemoteSystem remoteSystem, string messageString)
if (wait OpenAppServiceConnectionAsync(remoteSystem) == AppServiceConnectionStatus.Success)
var inputs = new ValueSet <["message"] = messageString > ;
var response = await _appServiceConnection.SendMessageAsync(inputs);
if (response.Status == AppServiceResponseStatus.Success)
if (response.Message.ContainsKey("result"))
var resultText = response.Message["result"].ToString( );

StatusWrite("Отправлено сообщение: "" + messageString + "" на устройство: " + remoteSystem.DisplayName +
" response: " + resultText);
>
>
else
StatusWrite("Ошибка: " + response.Status);
>

if (KeepConnectionOpen == false)
CloseAppServiceConnection();
>
>
>

Подведение итогов

Project Rome разрушает барьеры для всех устройств Windows и создает возможности, которые больше не ограничиваются одним устройством. API удаленных систем, доступный в Windows 10, является ключевой частью Project Rome, которая обеспечивает доступ к графику устройств и возможность подключения и управления — это имеет основополагающее значение для повышения вовлеченности пользователей и повышения производительности приложений на всех устройствах.

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

Чтобы узнать больше и просмотреть примеры кода, включая показанные выше фрагменты, ознакомьтесь со следующими статьями и сообщениями в блогах:

Для начала загрузите Visual Studio.

Команда Windows будет рада вашим отзывам. Продолжайте оставлять отзывы на нашем сайте Windows Developer UserVoice. Если у вас есть прямая ошибка, воспользуйтесь инструментом обратной связи Windows, встроенным непосредственно в Windows 10.

Читайте также: