Udostępnij przez


Dźwięk

obraz bohatera

Istnieje wiele sposobów używania dźwięku w celu ulepszenia aplikacji. Można użyć dźwięku, aby uzupełnić inne elementy interfejsu użytkownika, umożliwiając użytkownikom rozpoznawanie zdarzeń na podstawie dźwięku. Dźwięk może być skutecznym elementem interfejsu użytkownika dla osób niepełnosprawnych wzrokowo. Możesz użyć dźwięku, aby stworzyć atmosferę, która zanurza użytkownika; na przykład możesz zagrać kapryśną ścieżkę dźwiękową w tle gry puzzle lub użyć złowieszczych efektów dźwiękowych dla gry horroru/przetrwania.

Przykłady

Galeria WinUI 2
Galeria WinUI

Jeśli masz zainstalowaną aplikację WinUI 2 Galerii, kliknij tutaj, aby otworzyć aplikację i zobaczyć dźwięk w akcji.

Globalny interfejs API dźwięku

Platforma UWP udostępnia łatwo dostępny system dźwiękowy, który umożliwia po prostu "przerzucanie przełącznika" i uzyskiwanie immersyjnego środowiska audio w całej aplikacji.

ElementSoundPlayer jest zintegrowanym systemem dźwiękowym w języku XAML, a po włączeniu wszystkich domyślnych kontrolek automatycznie odtwarza dźwięki.

ElementSoundPlayer.State = ElementSoundPlayerState.On;

ElementSoundPlayer ma trzy różne stany: WłączonyWyłączony, oraz Automatyczny.

Jeśli ustawiono wartość Wyłączone, bez względu na to, gdzie jest uruchamiana aplikacja, dźwięk nigdy nie będzie odtwarzany. Jeśli ustawiono wartość na, dźwięki Twojej aplikacji będą odtwarzane na każdej platformie.

Włączenie ElementSoundPlayer spowoduje również automatyczne włączenie dźwięku przestrzennego (dźwięk 3D). Aby wyłączyć dźwięk 3D (przy zachowaniu dźwięku włączonego), wyłącz SpatialAudioMode elementu ElementSoundPlayer:

ElementSoundPlayer.SpatialAudioMode = ElementSpatialAudioMode.Off

Właściwość SpatialAudioMode może przyjmować następujące wartości:

  • auto: dźwięk przestrzenny zostanie włączony, gdy jest aktywowany.
  • Wyłączone: Audio przestrzenne jest zawsze wyłączone, nawet jeśli dźwięk jest włączony.
  • Włączone: dźwięk przestrzenny zawsze będzie odtwarzany.

Aby dowiedzieć się więcej na temat dźwięku przestrzennego i sposobu obsługi go przez język XAML, zobacz AudioGraph — Spatial Audio.

Dźwięk dla telewizora i konsoli Xbox

Dźwięk jest kluczową częścią doświadczenia 10 stóp, a domyślnie stan ElementSoundPlayerjest Auto, co oznacza, że otrzymasz dźwięk tylko wtedy, gdy aplikacja jest uruchomiona na Xbox. Aby uzyskać więcej informacji , zobacz Projektowanie dla konsoli Xbox i telewizora .

Przesłonięcia głośności dźwięku

Wszystkie dźwięki w aplikacji można przyciszyć za pomocą kontroli głośności . Jednak dźwięki w aplikacji nie mogą być głośniejsze niż głośność systemowa.

Aby ustawić poziom głośności aplikacji, wywołaj:

ElementSoundPlayer.Volume = 0.5;

Gdzie maksymalny wolumin (względem woluminu systemowego) wynosi 1,0, a minimalna wartość to 0,0 (zasadniczo dyskretna).

Stan poziomu kontroli

Jeśli domyślny dźwięk kontrolki nie jest wymagany, można go wyłączyć. Odbywa się to poprzez tryb ElementSoundMode na kontrolce.

ElementSoundMode ma dwa stany: Off i Default. Gdy nie jest ustawione, jest wartość domyślna. Jeśli zostanie ustawiona wartość Wyłączone, każdy dźwięk odtwarzany przez kontrolkę będzie wyciszony z wyjątkiem fokusu.

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

Czy to właściwy dźwięk?

Podczas tworzenia niestandardowej kontrolki lub zmiany dźwięku istniejącej kontrolki ważne jest, aby zrozumieć użycie wszystkich dźwięków zapewnianych przez system.

Każdy dźwięk odnosi się do określonej podstawowej interakcji użytkownika i chociaż dźwięki można dostosować do odtwarzania w dowolnej interakcji, ta sekcja służy do zilustrowania scenariuszy, w których dźwięki powinny być używane do utrzymania spójnego środowiska we wszystkich aplikacjach platformy UWP.

Wywoływanie elementu

Najczęstszym dźwiękiem wyzwalanym przez kontrolkę w naszym systemie jest obecnie dźwięk Invoke . Ten dźwięk jest odtwarzany, gdy użytkownik wywołuje kontrolkę za pomocą dotknięcia/kliknięcia/naciśnięcia klawisza enter/spacji lub naciśnięcia przycisku "A" na gamepadzie.

Zazwyczaj ten dźwięk jest odtwarzany tylko wtedy, gdy użytkownik jawnie wybiera prostą kontrolkę lub część kontrolki za pośrednictwem urządzenia wejściowego.

Aby odtworzyć ten dźwięk z dowolnego zdarzenia kontrolnego, po prostu wywołaj metodę Play z ElementSoundPlayer i przekaż ElementSound.Invoke:

ElementSoundPlayer.Play(ElementSoundKind.Invoke);

Wyświetlanie i ukrywanie zawartości

Istnieje wiele wysuwanych, dialogowych i możliwych do zamknięcia interfejsów użytkownika w XAML, a każda akcja, która aktywuje jedną z tych nakładek, powinna wywołać dźwięk Pokaż lub dźwięk Ukryj.

Po wyświetleniu okna zawartości nakładki, należy wywołać dźwięk Pokaż.

ElementSoundPlayer.Play(ElementSoundKind.Show);

Z drugiej strony, gdy okno zawartości nakładki jest zamknięte (lub jest wyłączone), należy wywołać dźwięk Ukryj:

ElementSoundPlayer.Play(ElementSoundKind.Hide);

Podczas nawigowania między panelami lub widokami na stronie aplikacji (zobacz NavigationView) występuje zazwyczaj ruch dwukierunkowy. Oznacza to, że możesz przejść do następnego widoku/panelu lub poprzedniej, bez opuszczania bieżącej strony aplikacji.

Środowisko audio dotyczące tej koncepcji nawigacji jest obejmowane przez dźwięki MovePrevious i MoveNext.

Podczas przechodzenia do widoku/panelu, który jest uważany za następny element na liście, wywołaj następujące wywołanie:

ElementSoundPlayer.Play(ElementSoundKind.MoveNext);

A podczas przechodzenia do poprzedniego widoku/panelu na liście, który jest uznawany za poprzedni element, wywołaj metodę:

ElementSoundPlayer.Play(ElementSoundKind.MovePrevious);

Nawigacja wstecz

Podczas nawigowania z bieżącej strony do poprzedniej strony w aplikacji należy wywołać dźwięk GoBack :

ElementSoundPlayer.Play(ElementSoundKind.GoBack);

Skupienie się na elemecie

Dźwięk Focus jest jedynym ukrytym dźwiękiem w naszym systemie. Oznacza to, że użytkownik nie wchodzi bezpośrednio w interakcję z czymkolwiek, ale nadal słyszy dźwięk.

Skupienie następuje, gdy użytkownik nawiguje przez aplikację, co może się odbywać za pomocą gamepada, klawiatury, pilota lub Kinecta. Zazwyczaj dźwięk fokusu nie jest odtwarzany podczas zdarzeń PointerEntered lub najechania wskaźnikiem myszy.

Aby ustawić kontrolkę do odtwarzania dźwięku Focus, gdy kontrolka otrzymuje fokus, wywołaj:

ElementSoundPlayer.Play(ElementSoundKind.Focus);

Dźwięki skupienia podczas jazdy na rowerze

Dodatkowo, podczas wywoływania ElementSound.Focus, system dźwiękowy domyślnie będzie odtwarzał 4 różne dźwięki przy każdym wyzwoleniu nawigacji. Oznacza to, że żadne dwa dokładne dźwięki fokusu nie będą odtwarzane bezpośrednio po drugiej.

Celem tej funkcji cyklicznego odtwarzania jest zapobieganie, aby dźwięki skupienia stawały się monotonne lub były dostrzegane przez użytkownika; dźwięki skupienia będą odtwarzane najczęściej, dlatego powinny być najbardziej subtelne.

Pobieranie przykładowego kodu