動的ライティング

このトピックでは、Windows アプリで、オープン Human Interface Devices (HID)Lighting and Lighting standard を実装する接続デバイス間で動的な照明効果を提供する方法について説明します。 特に、1 つ以上のランプ (ライト、LED、電球など) を持つデバイスの LampArray 仕様。

重要な API

概要

動的照明を使用すると、Windowsアプリ開発者とエンド ユーザーの両方が、互換性のある周辺機器やその他の接続されたデバイス間で照明効果を制御および同期できます。 これらの機能を使用して、ユーザーを楽しませ、生産性を高め、Windows全体のエクスペリエンスをよりアクセシビリティの高いものにする、まとまりのあるエクスペリエンスを提供できます。

サポートされているアプリの種類とプラットフォーム

  • Win10 バージョン 1809 (2018 年 10 月) 以降。
    • フォアグラウンド UWP アプリと Win32 アプリに適用されます。
  • Windows 11 ビルド 23466 (プレビュー) 以降
    • フォアグラウンド アプリとバックグラウンド (アンビエント) UWP アプリと Win32 アプリに適用されます。
  • Xbox GDK March 2023 Update 1 以降。

サポートされているデバイスとデバイスの種類

  • キーボードまたはキーパッド
  • Mouse
  • ゲーム コントローラー (ゲームパッド、フライトスティック、ステアリング ホイールなど)。
  • 周辺機器 (スピーカー、マウス パッド、マイク、Web カメラなどの一般的なデバイス)。
  • シーン (電球、スポットライト、ストロブ ライト、ビルボード、カメラフラッシュなどの部屋/ステージ/エリア デバイス)。
  • 通知 (アラーム、音声アシスタントなどのユーザーアテンション デバイス)。
  • シャーシ (RAM、マザーボード、ファンなどの内部 PC コンポーネント)。
  • ウェアラブル (ヘッドセット、時計、フィットネス トラッカー、靴などのアクセサリ)。
  • 家具 (椅子、机、本棚など)。
  • アート (絵画や彫刻など)。
  • ヘッドセット (ヘッドフォンやマイクなど、頭部専用に設計されたアクセサリ)。

Windows アプリは、アプリがフォアグラウンドにある場合(Windows 10 以降)に HID LampArray デバイスを制御できます。また、バックグラウンドにある場合でも(アンビエント照明 とも呼ばれます。Windows 11 以降)、制御できます。

デバイスの優先順位付け

Windowsは、アプリの状態に基づいて動的な照明に優先順位を付けます。 既定では、ユーザーが [設定] で特に指定していない限り、フォアグラウンド アプリには常に LampArray デバイスの制御が割り当てられます。 2 つ以上のアンビエント バックグラウンド アプリが LampArray デバイスを制御しようとしている場合、システムは [設定] で優先されたコントロールをアプリに割り当てます。

間接(アンビエント)照明

Windows の "アンビエント" API。Devices.Lights を使用すると>バックグラウンド アプリケーションで LampArray デバイスを制御しながら、ユーザーがフォアグラウンドで関連のないアプリ (同期された照明効果を促進する音楽アプリなど) を操作できます。

アプリは、ユーザー設定に応じて LampArray.AvailabilityChanged イベントを受信できます。 DeviceWatcher クラスと組み合わせることで、アプリは、接続済みまたは切断されたすべての LampArray デバイスを追跡および管理し、ユーザーがアプリによる制御を想定しているデバイスを確認できます。 使用例の 1 つは、接続されている各デバイスのアイコンをレンダリングする UI、使用できないデバイスが灰色表示される、ユーザーがフォアグラウンド/バックグラウンド アプリの設定を変更できる 動的照明 設定ページへのリンクです。

ユーザー設定

[動的照明] 設定画面のスクリーンショット。

ユーザーは 、[設定] -> [個人用設定] -> [動的照明 ] 画面を使用して、LampArray デバイスエクスペリエンス (フォアグラウンドとバックグラウンドの両方) をカスタマイズできます。

  1. 接続すると、互換性のあるデバイスがページの上部にあるデバイス カードに表示され、ユーザーは個々のデバイス設定を変更できます。

  2. グローバル動的照明設定は、デバイス カードの下にあります (これらの設定の変更は、接続されているすべてのデバイスに影響します)。

    1. [デバイスで動的照明を使用する] トグルを使用すると、ユーザーは動的照明のオンとオフを切り替えることができます。 動的照明がオフの場合、デバイスは既定の非動的照明動作で機能する必要があります。 動的照明には、基本効果の組み込みセットが含まれています。
    2. フォアグラウンドの互換性のあるアプリは常に照明を制御し、ユーザーは既定の動的照明アプリの動作をオンまたはオフにすることができます。 この機能をオフにすると、制御を必要とするフォアグラウンド アプリがアクティブな場合でも、バックグラウンド アプリは関連付けられているデバイスを制御できます。
    3. [バックグラウンド ライトコントロール] セクションを使用すると、環境背景コントローラーとして登録されているインストール済みアプリに優先順位を付けられます。 アプリをリストの一番上にドラッグすると、優先順位が設定され、リスト内の他のアプリに対してデバイスを制御できるようになります。 アンビエント背景設定は、デバイスと接続されているポートに関連付けられます。 LampArray を取り外して別の (USB) ポートに接続すると、別のデバイスとして表示されます。
    4. 明るさスライダーを使用すると、ユーザーはデバイスで LED の明るさを設定できます。
    5. [ 効果] ドロップダウンでは、ユーザーはデバイスの色と効果を選択できます。

    動的照明設定の [効果] 画面のスクリーンショット。

Note

デバイスがバックグラウンドライト制御用に選択されていない場合は、"自律モード" で動作します。

これは、ハードウェアがファームウェアで定義されている既定の動作にフォールバックするモードとして HID 仕様で定義されています。 たとえば、OS がデバイスをアクティブに制御していない場合や、ユーザーがデバイスの OS の関与をオプトアウトした場合に、デバイスに事前プログラミングされた視覚効果が既定で設定されている場合があります。 デバイスは、ユーザーの期待と円滑な対話を確保するために、自律モードから戻るために HID コマンドに応答する必要があります。

パッケージ化とアプリ ID

アンビエント バックグラウンド アプリケーションでは、アプリ マニフェストで "com.microsoft.windows.lighting" AppExtension を宣言する必要があります (これを行う方法の詳細については、「 アプリ拡張機能の作成とホスト」を参照してください)。 この要件は、拡張機能をサポートするパッケージ ID (パッケージ アプリ) を持つプロセスで AmbientLightingClient からの接続のみを受け入れる AmbientLightingServer によって適用されます。 この要件は、ユーザーがインストールされているアプリのポリシーを定義し、実行時にそのポリシーを関連付けるために必要です。

アプリ ID は、実行時にユーザー設定を決定できるようにアンビエント アプリケーションに必要です。 アプリケーションがインストールされたら、アンビエント API を使用している場合、システムはアプリの実行中のインスタンスをユーザーの設定に関連付ける必要があります。 さらに、設定でユーザーがアプリを使用できるようにするには、アプリがアンビエント照明 API の正当なユーザーであることをシステムに示すインストール後の成果物が必要です。

この ID 要件は、MSIX パッケージ化 (旧 APPX と呼ばれるMicrosoft展開およびパッケージ化テクノロジ) によって実現されます。

パッケージ化とインストールに MSIX パッケージを既に使用している場合は、それ以上の要件はありません。

パッケージ化されていないアプリがある場合は、アプリケーション ID を取得するために追加の手順が必要です。 インストールを完全な MSIX に移行することも、MSIX の簡易な スパース パッケージと外部の場所 機能を使用することもできます。 外部の場所を使用したスパース パッケージは、セットアップ/インストールを MSIX に完全に変換しなくても、既存のアプリのインストールでアプリ ID の利点を得られるよう設計されています。 これは、インストールするアプリを表す MSIX パッケージを作成するツールを使用する、セットアップ/インストールの新しい手順です。

インストールを記述する AppXManifest.xml パッケージ マニフェスト を定義する必要があります。 MSIX パッケージは、MakeAppXPackage ツールを使用して作成されます。 インストール時に、インストールされている実行可能ファイルの場所を指定するパッケージ マネージャー API を使用して MSIX パッケージをインストールします。 便宜上、 add-appxpackage PowerShell スクリプト は、この API の動作もラップします。 または、インストール時に AddPackageByUriAsync を使用して MSIX パッケージをインストールすることもできます。

パッケージ化されていないアプリのインストールでは、実行可能ファイルに 対するサイド バイ サイド アプリケーション マニフェスト の要件もあります。

パッケージ化されたアプリとパッケージ化されていないアプリの詳細については、「 デプロイの概要」 を参照してください。

Examples

LampArray サンプル

Windows.Devices.Lights API および Windows.Devices.Lights.Effects API を使用して周辺機器の RGB 照明を制御する方法を示します。

AutoRGB サンプル

デスクトップ画面から 1 つの代表的な色を抽出し、それを使用して、接続された RGB デバイス上の LED ランプを照らす方法を示します。

こちらも参照ください