Sound

Herobild

Es gibt viele Möglichkeiten, Ihre App mit Sound zu verbessern. Sie können Sound zur Ergänzung von Benutzeroberflächenelementen einsetzen, um Benutzer akustisch auf Ereignisse aufmerksam zu machen. Sound ist beispielsweise für Menschen mit Sehbehinderungen ein hilfreiches Benutzeroberflächenelement. Mit Sound können Sie den Benutzer in das Geschehen einbeziehen, beispielsweise, wenn Sie ein Puzzlespiel mit einer beruhigenden Hintergrundmelodie und ein Horror-/Survivalspiel mit bedrohlichen Soundeffekten unterlegen.

Beispiele

WinUI 2-Katalog
WinUI-Katalog

Wenn Sie die WinUI 2-Katalog-App installiert haben, klicken Sie hier, um die App zu öffnen und Sound in Aktion zu sehen.

Globale Sound-API

UWP bietet ein einfach zugängliches Soundsystem, bei dem Sie einfach „einen Schalter umlegen“ können und ein beeindruckendes Audioerlebnis für Ihre gesamte App erhalten.

Der ElementSoundPlayer ist ein integriertes Soundsystem innerhalb von XAML, und wenn es aktiviert ist, spielen alle Standardsteuerelemente automatisch Sounds ab.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

Der ElementSoundPlayer weist drei unterschiedliche Zustände auf: "Aus" und "Auto".

In der Einstellung Aus wird unabhängig davon, wo Ihre App ausgeführt wird, niemals Sound wiedergegeben. In der Einstellung Ein werden Sounds für Ihre App auf jeder Plattform wiedergegeben.

Das Aktivieren des ElementSoundPlayer ermöglicht zudem automatisch räumliches Audio (3D-Sound). Um den 3D-Sound (während weiterhin der Sound eingeschaltet ist) zu deaktivieren, deaktivieren Sie den SpatialAudioMode des ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

Die SpatialAudioMode-Eigenschaft kann folgende Werte annehmen:

  • Auto (Automatisch): Räumliches Audio wird eingeschaltet, wenn Sound eingeschaltet ist.
  • Off (Aus): Räumliches Audio ist immer ausgeschaltet, selbst wenn Sound eingeschaltet ist.
  • On (Ein): Räumliches Audio wird immer wiedergegeben.

Weitere Informationen zu räumlichem Audio und dessen Behandlung durch XAML finden Sie unter AudioGraph – räumliches Audio.

Sound für TV und Xbox

Sound ist ein wesentlicher Bestandteil der 10-Fuß-Schnittstelle. Standardmäßig verwendet der ElementSoundPlayer den Zustand Auto, was bedeutet, dass Sound nur dann wiedergegeben wird, wenn Ihre App auf Xbox ausgeführt wird. Weitere Details finden Sie unter Design für Xbox und TV .

Lautstärkeüberschreibung

Mit dem Volume-Steuerelement kann die Lautstärke aller Sounds innerhalb der App verringert werden. Allerdings können Sounds innerhalb der App nicht lauter als die Systemlautstärke werden.

Rufen Sie zum Festlegen der Lautstärke der App Folgendes auf:

ElementSoundPlayer.Volume = 0.5;

Wobei die maximale Lautstärke (relativ zur Systemlautstärke) 1,0 und die minimale Lautstärke 0,0 ist (im Wesentlichen stumm).

Zustand des Steuerungsgrads

Wenn der Standardsound eines Steuerelements nicht erwünscht ist, kann er deaktiviert werden. Dies erfolgt über die ElementSoundMode-Option für das Steuerelement.

ElementSoundMode hat zwei Zustände: Aus und Standard. Wenn nichts festgelegt wird, hat sie den Zustand Standard. In der Einstellung Aus wird jeder Sound, der durch das Steuerelement wiedergegeben werden soll, stumm geschaltet, außer der Fokus.

<Button Name="ButtonName" Content="More Info" ElementSoundMode="Off"/>
ButtonName.ElementSoundState = ElementSoundMode.Off;

Ist das der richtige Sound?

Beim Erstellen eines benutzerdefinierten Steuerelements oder Ändern des Sounds eines vorhandenen Steuerelements ist es wichtig zu verstehen, wie alle Sounds, die das System bietet, verwendet werden.

Jeder Sound bezieht sich auf eine bestimmte grundlegende Benutzerinteraktion. Obwohl Sounds angepasst werden können, um bei einer Interaktion wiedergegeben zu werden, werden in diesem Abschnitt die Szenarien erläutert, in denen mithilfe von Sounds die Einheitlichkeit aller UWP-Apps gewährleistet werden sollte.

Aufrufen eines Elements

Der häufigste durch ein Steuerelement ausgelöste Sound in unserem System ist der Invoke-Sound. Dieser Sound wird wiedergegeben, wenn ein Benutzer mittels Tippen/Klicken/Eingabe/Leertaste oder Drücken der Taste „A“ auf einem Gamepad ein Steuerelement aufruft.

In der Regel wird dieser Sound nur wiedergegeben, wenn ein Benutzer explizit ein einfaches Steuerelement oder ein Steuerelementteil über ein Eingabegerät aufruft.

Um diesen Sound über ein Steuerelementereignis wiederzugeben, rufen Sie einfach die Play-Methode von ElementSoundPlayer auf und übergeben sie an ElementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Anzeigen und Ausblenden von Inhalten

In XAML gibt es viele Flyouts, Dialogfelder und leicht ausblendbare Benutzeroberflächen, und jede Aktion, die eine dieser Überlagerungen auslöst, sollte einen Show- oder Hide-Sound aufrufen.

Wenn ein Überlagerungsinhaltsfenster eingeblendet wird, sollte der Show-Sound aufgerufen werden:

ElementSoundPlayer.Play(ElementSoundKind.Show);

Wenn dagegen ein Überlagerungsinhaltsfenster geschlossen wird (oder einfach ausgeblendet wird), sollte der Hide-Sound aufgerufen werden:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Beim Navigieren zwischen Bereichen oder Ansichten innerhalb einer App-Seite (siehe NavigationView) gibt es in der Regel eine bidirektionale Bewegung. Das bedeutet, dass Sie zur nächsten Ansicht bzw. zum nächsten Bereich (oder zur/zum vorherigen) wechseln können, ohne die aktuelle App-Seite zu verlassen, auf der Sie sich befinden.

Das Audioerlebnis für dieses Navigationskonzept wird durch den MovePrevious- und MoveNext-Sound umgesetzt.

Beim Wechsel zu einer Ansicht bzw. zu einem Bereich, die/der als das nächste Element in einer Liste gilt, rufen Sie Folgendes auf:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

Und beim Wechsel zu einer vorherigen Ansicht bzw. zu einem vorherigen Bereich in einer Liste, die/der als das vorherige Element gilt, rufen Sie Folgendes auf:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Rückwärtsnavigation

Beim Navigieren von der aktuellen Seite zur vorherigen Seite innerhalb einer App sollte der GoBack-Sound aufgerufen werden:

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Fokussieren auf ein Element

Der Focus-Sound ist der einzige implizite Sound in unserem System. Das heißt, dass ein Benutzer nicht mit irgendetwas direkt interagiert, jedoch trotzdem einen Sound hört.

Das Fokussieren geschieht, wenn ein Benutzer durch eine App navigiert – dies kann mit dem Gamepad, der Tastatur, der Fernbedienung oder mit Kinect geschehen. In der Regel wird der Focus-Sound bei PointerEntered- oder Mauszeigeereignissen nicht wiedergegeben.

Um ein Steuerelement zur Wiedergabe des Focus-Sounds einzurichten, wenn Ihr Steuerelement den Fokus erhält, rufen Sie Folgendes auf:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Wechseln zwischen Focus-Sounds

Als zusätzliche Funktion zum Aufrufen von ElementSound.Focus wechselt das Soundsystem standardmäßig bei jedem Navigationsaufruf zwischen 4 unterschiedlichen Sounds. Das bedeutet, dass keine zwei genau gleichen Focus-Sounds direkt nacheinander wiedergegeben werden.

Diese Wechselfunktion soll verhindern, dass die Focus-Sounds monoton werden und vom Benutzer nicht mehr wahrgenommen werden. Denn Focus-Sounds werden am häufigsten wiedergegeben und sollten daher möglichst unaufdringlich sein.

Beispielcode herunterladen