Dynamisk belysning

I det här avsnittet beskrivs hur dina Windows appar kan ge dynamiska ljuseffekter på anslutna enheter som implementerar öppna Human Interface Devices (HID)Lighting and Illumination standard. I synnerhet LampArray-specifikationen för enheter som har en eller flera lampor (lampor, lysdioder, glödlampor och så vidare).

Note

Klassen Lamp gäller inte för HID LampArray-funktioner och är inte relevant för det här ämnet.

Overview

Med dynamisk belysning kan både Windows apputvecklare och slutanvändare styra och synkronisera belysningseffekter mellan kompatibla kringutrustningar och andra anslutna enheter. Dessa funktioner kan användas för att leverera sammanhängande upplevelser som underhåller användare, gör dem mer produktiva och till och med gör deras upplevelser över Windows mer tillgängliga.

Apptyper och plattformar som stöds

  • Win10 version 1809 (oktober 2018) och senare.
    • Gäller för förgrundsappar för UWP och Win32.
  • Windows 11 Build 23466 (förhandsversion) och senare.
    • Gäller för förgrunds- och bakgrundsappar (omgivande) UWP och Win32.
  • Xbox GDK mars 2023 Uppdatering 1 och senare.

Enheter och enhetstyper som stöds

  • Tangentbord eller knappsats
  • Mouse
  • Spelkontroll (gamepad, flightstick, ratt och så vidare).
  • Kringutrustning (allmänna enheter som högtalare, musknappar, mikrofoner, webbkameror och så vidare).
  • Scen (rum/scen/områdesenheter som glödlampor, strålkastare, stroboskopljus, skyltar, kamerablixtar och så vidare).
  • Meddelande (enheter för användarvarning, till exempel larm, röstassistenter och så vidare).
  • Chassi (interna PC-komponenter som RAM, moderkort, fläkt och så vidare).
  • Bärbar (tillbehör som headset, klockor, fitness trackers, skor och så vidare).
  • Möbler (till exempel stolar, skrivbord, bokhyllor och så vidare).
  • Konst (till exempel en målning eller skulptur).
  • Headset (tillbehör som är särskilt utformade för huvudet, till exempel hörlurar eller mikrofoner).

En Windows-app kan styra HID LampArray-enheter när appen är i förgrunden (från och med Windows 10) och när den finns i bakgrunden (kallas även ambient belysning, från och med Windows 11).

Enhetsprioritering

Windows prioriterar dynamisk belysning baserat på apptillstånd. Som standard tilldelas en förgrundsapp alltid kontroll över en LampArray-enhet om inte användaren har angett något annat i Inställningar. Om två eller flera omgivande bakgrundsappar försöker styra en LampArray-enhet tilldelar systemet kontroll till appen som prioriteras i Inställningar.

Bakgrundsbelysning (omgivande)

De "omgivande" API:erna i Windows. Devices.Lights aktivera bakgrundsprogram för att styra LampArray-enheter medan användaren interagerar med en orelaterad app i förgrunden (till exempel musikappar som ger synkroniserade ljuseffekter).

Appar kan ta emot LampArray.AvailabilityChanged-händelser , beroende på användarinställningar. Tillsammans med klassen DeviceWatcher kan appar spåra och hantera alla anslutna/frånkopplade LampArray-enheter och se vilka användaren förväntar sig att appen ska styra. Ett exempel på användning är ett användargränssnitt som renderar en ikon för varje ansluten enhet, otillgängliga som är nedtonade och länkar till sidan Inställningar för dynamisk belysning där användaren kan göra ändringar i appinställningar för förgrund/bakgrund.

Användarinställningar

Skärmbild av skärmen Inställningar för dynamisk belysning.

Användare kan anpassa sin LampArray-enhetsupplevelse (både förgrund och bakgrund) via skärmen Inställningar –> Anpassning –> Dynamisk belysning .

  1. När de är anslutna visas kompatibla enheter i enhetskorten längst upp på sidan där användare kan ändra enskilda enhetsinställningar.

  2. Globala inställningar för dynamisk belysning finns under enhetskorten (ändringar i de här inställningarna påverkar alla anslutna enheter).

    1. Med växlingsknappen Använd dynamisk belysning på mina enheter kan användarna aktivera eller inaktivera dynamisk belysning. När dynamisk belysning är avstängd bör enheterna fungera med sitt standardbeteende för icke-dynamisk belysning. Dynamisk belysning innehåller en inbyggd uppsättning grundläggande effekter.
    2. Kompatibla appar i förgrunden styr alltid belysningen så att användarna kan aktivera eller inaktivera standardbeteendet för dynamisk belysningsapp. När den här funktionen inaktiveras kan en bakgrundsapp styra sina associerade enheter även när en förgrundsapp som vill ha kontroll är aktiv.
    3. I avsnittet Bakgrundsljuskontroll kan användare prioritera installerade appar som själva har registrerats som omgivande bakgrundskontrollanter. Om du drar en app överst i listan prioriteras den och ser till att den kan styra enheter över andra appar i listan. Inställningar för omgivande bakgrund är kopplade till en enhet och porten den är ansluten till. Om du kopplar från och sedan ansluter LampArray till en annan port (USB) visas den som en annan enhet.
    4. Med skjutreglaget Ljusstyrka kan användarna ställa in LED-ljusstyrkan på sina enheter.
    5. I listrutan Effekter kan användarna välja färger och effekter för sina enheter.

    Skärmbild av skärmen Dynamiska belysningsinställningar Effekter.

Note

När en enhet inte har valts för bakgrundsljuskontroll fungerar den i "autonomt läge".

Detta definieras i HID-specifikationen som ett läge där maskinvaran återgår till standardbeteendet enligt definitionen i den inbyggda programvaran. En enhet kan till exempel ha en förprogrammerad visuell effekt som är standard när operativsystemet inte aktivt styr enheten eller om användaren har valt att inte delta i operativsystemet för enheten. Enheten måste svara på HID-kommandot för att återgå från autonomt läge för att säkerställa en smidig interaktion med användarens förväntningar.

Paketering och appidentitet

Program med omgivande bakgrund måste deklarera appextensionen "com.microsoft.windows.lighting" i appmanifestet (mer information om hur du gör detta finns i Skapa och vara värd för ett apptillägg). Det här kravet tillämpas av AmbientLightingServer, som endast accepterar anslutningar från en AmbientLightingClient i en process med paketidentitet (paketerad app) som stöder tillägget. Det här kravet är nödvändigt för att göra det möjligt för användaren att definiera en princip för installerade appar och sedan korrelera principen vid körning.

Appidentitet krävs för omgivande program så att användarinställningar kan fastställas vid körning. När ett program har installerats måste systemet, om det använder de omgivande API:erna, korrelera den instans av en app som körs med användarens inställningar. För att göra appen tillgänglig för användaren i inställningarna krävs dessutom en artefakt efter installationen som anger för systemet att din app är en legitim användare av API:erna för omgivande belysning.

Det här identitetskravet uppnås via MSIX-paketering (en Microsoft distributions- och paketeringsteknik som tidigare kallades APPX).

Om du redan använder MSIX-paketering för paketering och installation finns det inga ytterligare krav.

Om du har en opaketerad app krävs ytterligare steg för att få appidentiteten. Du kan antingen migrera installationen till fullständig MSIX eller använda den förenklade funktionen Sparse Packaging och External Location i MSIX. Glespaketering med extern plats har utformats för att låta befintliga appinstallationer dra nytta av appidentitet utan att installationsprogrammet/installationen måste konverteras fullt ut till MSIX. Det är ett nytt steg i konfigurationen/installationen som använder verktyg för att skapa ett MSIX-paket som representerar den app som du installerar.

Du måste definiera ett AppXManifest.xml paketeringsmanifest som beskriver installationen. MSIX-paketet skapas med verktyget MakeAppXPackage. Vid installationen installerar du MSIX-paketet med hjälp av ett Správca balíkov API som anger platsen för den installerade körbara filen. PowerShell-skriptet add-appxpackage omsluter även det här API-beteendet för enkelhetens skull. Du kan också använda AddPackageByUriAsync vid installationstillfället för att installera MSIX-paketet.

För opaketerade appinstallationer finns det också ett krav på ett programmanifest för sida vid sida-användning för din körbara fil.

Se distributionsöversikten för en mer detaljerad förklaring av paketerade och uppackade appar.

Examples

LampArray-exempel

Visar hur du styr RGB-belysning av kringutrustning med hjälp av Windows. Devices.Lights och Windows. Devices.Lights.Effects API:er.

AutoRGB-exempel

Visar hur du extraherar en enda representativ färg från en skrivbordsskärm och använder den för att belysa LED-lampor på en ansluten RGB-enhet.

Se även