Динамическое освещение
В этом разделе описывается, как приложения Windows могут предоставлять динамические эффекты освещения на подключенных устройствах, реализующих открытый стандарт освещения и освещения устройств с интерфейсом человека (HID). В частности, спецификация LampArray для устройств с одним или несколькими лампами (свет, индикаторы, лампочки и т. д.).
Важные API
Обзор
Динамическое освещение позволяет разработчикам приложений Windows и конечным пользователям управлять и синхронизировать эффекты освещения между совместимыми периферийными устройствами и другими подключенными устройствами. Эти функции можно использовать для обеспечения согласованного взаимодействия, которые развлекают пользователей, делают их более продуктивными и даже делают их опыт работы в Windows более доступными.
Поддерживаемые типы приложений и платформы
- Win10 версии 1809 (октябрь 2018 г.) и более поздних версий.
- Применяется к приложениям UWP и Win32 переднего плана.
- Windows 11 Сборка 23466 (предварительная версия) и более поздние версии.
- Применяется к приложениям UWP и Win32 переднего плана и фона (окружающая среда).
- Xbox GDK за март 2023 г. с обновлением 1 и более поздних версий.
- См. API освещения в пакете средств разработки игр (GDK).
Поддерживаемые устройства и типы устройств
- Клавиатура или клавиатура
- Мышь
- Игровой контроллер (gamepad, flightstick, рулевая колесика и т. д.).
- Периферийные устройства (такие как динамики, панели мыши, микрофоны, веб-камеры и т. д.).
- Сцена (устройства комнаты или сцены/области, такие как лампочки, прожекторы, стробовые огни, рекламные щиты, вспышки камеры и т. д.).
- Уведомление (устройства с вниманием пользователей, такие как будильники, голосовые помощники и т. д.).
- Шасси (внутренние компоненты ПК, такие как ОЗУ, материнской платы, вентилятор и т. д.).
- Носимые (аксессуары, такие как гарнитуры, часы, фитнес-трекеры, обувь и т. д.).
- Мебель (например, стулья, столы, книжные шкафы и т. д.).
- Искусство (например, картина или скульптура).
- Гарнитура (аксессуары, разработанные специально для головы, такие как наушники или микрофоны).
Приложение Windows может управлять устройствами HID LampArray, когда приложение находится на переднем плане (начиная с Windows 10) и когда оно находится в фоновом режиме (также известное как внешнее освещение, начиная с Windows 11).
Определение приоритета устройства
Windows определяет динамическое освещение на основе состояния приложения. По умолчанию приложение переднего плана всегда назначается элементу управления устройством LampArray, если пользователь не указал иное в параметрах. В случаях, когда два или более фоновых приложений во внешней среде пытаются управлять устройством LampArray, система будет назначать управление приложению, приоритетом которого являются параметры.
Фоновое (окружающее) освещение
API-интерфейсы "внешний" в Windows.Devices.Lights позволяют фоновым приложениям управлять устройствами LampArray во время взаимодействия пользователя с не связанным приложением на переднем плане (например, музыкальные приложения, которые управляют синхронизированными эффектами освещения).
Приложения могут получать события LampArray.AvailabilityChanged в зависимости от параметров пользователя. В сочетании с классом DeviceWatcher приложения могут отслеживать и управлять всеми подключенными или отключенными устройствами LampArray и видеть, какой пользователь ожидает, что приложение будет контролировать. Один из примеров использования — это пользовательский интерфейс, который отображает значок для каждого подключенного устройства, недоступные выделены серым цветом, и ссылки на страницу настроек динамического освещения, где пользователь может вносить изменения в настройки предпочтений приложений переднего и фонового плана.
Параметры пользователя
Пользователи могут настроить опыт работы с устройством LampArray (как фона, так и переднего плана) с помощью параметров -> Персонализация -> Экран динамического освещения.
При подключении совместимые устройства будут отображаться в карточках устройств в верхней части страницы, где пользователи могут изменять отдельные параметры устройства.
Параметры глобального динамического освещения расположены под карточками устройств (изменения этих параметров влияют на все подключенные устройства).
- Переключатель "Использовать динамическое освещение" на моих устройствах позволяет пользователям включать или отключать динамическое освещение. При отключении динамического освещения устройства должны работать с их поведением по умолчанию, отличном от динамического освещения. Динамическое освещение включает встроенный набор основных эффектов.
- Совместимые приложения на переднем плане всегда управляют освещением, что позволяет пользователям включать или выключать поведение приложения динамического освещения по умолчанию. Если эта функция отключена, фоновое приложение может управлять связанными устройствами, даже если приложение переднего плана, которое хочет управлять активным элементом управления.
- В разделе " Фоновый свет" пользователи могут определить приоритет установленных приложений, которые зарегистрировались в качестве фоновых контроллеров окружающей среды. Перетащите приложение в верхнюю часть списка и убедитесь, что оно может контролировать устройства над другими приложениями в списке. Параметры фона окружения привязаны к устройству и порту, на который он подключен. Если вы отключите и подключите LampArray к другому порту (USB), оно будет отображаться как другое устройство.
- Ползунок "Яркость" позволяет пользователям устанавливать яркость светодиодных индикаторов на своих устройствах.
- Раскрывающийся список "Эффекты" позволяет пользователям выбирать цвета и эффекты для своих устройств.
Примечание.
Если устройство не выбрано для управления фоновым освещением, оно работает в автономном режиме.
Это определяется в спецификации HID в режиме, в котором оборудование возвращается к поведению по умолчанию, как определено его встроенное ПО. Например, устройство может иметь предварительно пропрограммированные визуальные эффекты, которые по умолчанию имеют значение по умолчанию, если ОС не активно управляет устройством или если пользователь отказался от участия в ОС для устройства. Устройство должно отвечать на команду HID, чтобы вернуться из автономного режима, чтобы обеспечить плавное взаимодействие с ожиданиями пользователей.
Упаковка и удостоверение приложения
Фоновые приложения среды должны объявлять AppExtension в манифесте приложения (дополнительные сведения о том, как это сделать, см. в статье "Создание и размещение расширения приложения"). Это требование применяется сервером AmbientLightingServer, который принимает подключения только из AmbientLightingClient в процессе с удостоверением пакета (упакованного приложения), поддерживающим расширение. Это требование необходимо, чтобы пользователь мог определить политику для установленных приложений, а затем сопоставить эту политику во время выполнения.
Удостоверение приложения требуется для внешних приложений, чтобы пользовательские предпочтения можно было определить во время выполнения. После установки приложения, если он использует внешние API, система должна сопоставить запущенный экземпляр приложения с предпочтениями пользователя. Кроме того, чтобы приложение было доступно пользователю в параметрах, требуется артефакт после установки, указывающий на то, что ваше приложение является законным пользователем API внешнего освещения.
Это требование удостоверения достигается с помощью упаковки MSIX (технология развертывания и упаковки Майкрософт, ранее известная как APPX).
Если вы уже используете упаковку MSIX для упаковки и установки, дополнительные требования отсутствуют.
Если у вас есть распаковка приложения, необходимо выполнить дополнительные действия для получения удостоверения приложения. Вы можете перенести установку в полную версию MSIX или использовать упрощенную функцию разреженной упаковки и внешнего расположения MSIX. Разреженная упаковка с внешним расположением предназначена для того, чтобы существующие установки приложений получили преимущество удостоверения приложения, не требуя полного преобразования установки или установки в MSIX. Это новый шаг установки или установки, использующий средства для создания пакета MSIX для представления установленного приложения.
Необходимо определить манифест упаковки AppXManifest.xml, описывающий установку. Пакет MSIX создается с помощью средства MakeAppXPackage. Во время установки пакет MSIX устанавливается с помощью API диспетчер пакетов, который указывает расположение установленного исполняемого файла. Для удобства скрипт PowerShell надстройки appxpackage также упаковывает это поведение API. Кроме того, AddPackageByUriAsync можно использовать во время установки пакета MSIX.
Для распаковки установок приложений также требуется параллельное требование манифеста приложения для исполняемого файла.
Дополнительные сведения о пакетных и распакованных приложениях см. в обзоре развертывания.
Примеры
Демонстрируется управление освещением RGB периферийных устройств с помощью API Windows.Devices.Lights и Windows.Devices.Lights.Effects.
Демонстрирует, как извлечь один репрезентативный цвет с экрана рабочего стола и использовать его для освещения светодиодных ламп на подключенном УСТРОЙСТВЕ RGB.