Start · Sprachen · JavaScript · Referenz · AudioSession.type

AudioSession.type

Eigenschaft

Liest oder setzt den Typ der Audio-Sitzung einer Seite, z. B. <code>"playback"</code> oder <code>"ambient"</code>. Der Typ steuert, wie sich deren Audio gegenüber anderen Apps verhält.

seit JavaScript Safari 16.4+ / iOS 16.4+ (nicht in Chrome/Firefox) Kategorie: webapi

Signatur

navigator.audioSession.type

Beschreibung

Die Eigenschaft type der Schnittstelle AudioSession legt fest, welche Art von Audio eine Webseite erzeugt. Das Betriebssystem entscheidet anhand dieses Typs, ob die Wiedergabe andere Audioquellen unterbricht, sich mit ihnen mischt oder sie kurz leiser stellt („Ducking“). Außerdem hängt davon ab, ob der Stummschalter eines Geräts (z. B. beim iPhone) beachtet wird. Man erreicht die Sitzung über navigator.audioSession.

Die Eigenschaft ist les- und schreibbar. Erlaubte Werte sind:

  • "auto" – Standardwert. Der Browser wählt den Typ anhand der verwendeten Audio-APIs.
  • "playback" – Medienwiedergabe wie Musik oder Podcasts. Andere Audioquellen werden unterbrochen, der Stummschalter wird in der Regel ignoriert.
  • "transient" – kurze Töne, z. B. Hinweise oder Navigationsansagen. Andere Audioquellen werden währenddessen leiser gestellt.
  • "transient-solo" – kurze Töne, bei denen andere Audioquellen vollständig pausieren, z. B. Sprachansagen.
  • "ambient" – Hintergrundklänge, die sich mit anderem Audio mischen, etwa Spiel-Soundeffekte. Der Stummschalter wird beachtet.
  • "play-and-record" – gleichzeitige Aufnahme und Wiedergabe, z. B. bei Videokonferenzen mit getUserMedia().

Setzen Sie den Typ am besten, bevor die Wiedergabe startet. Dann gilt das passende Verhalten schon für den ersten Ton. Den aktuellen Zustand der Sitzung ("active", "interrupted", "inactive") liefert die Eigenschaft state. Änderungen daran meldet das Ereignis statechange.

Parameter

Name Typ Default Beschreibung
$value "auto" | "playback" | "transient" | "transient-solo" | "ambient" | "play-and-record" "auto" Nur beim Schreiben: der neue Sitzungstyp. Ein ungültiger String wird stillschweigend ignoriert, wie bei WebIDL-Enums üblich.

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Sitzungstyp als einer der Enum-Werte "auto", "playback", "transient", "transient-solo", "ambient" oder "play-and-record".

Beispiele

Unterstützung prüfen und aktuellen Typ auslesen

if ('audioSession' in navigator) {
  console.log('Aktueller Typ:', navigator.audioSession.type);
} else {
  console.log('Audio Session API wird nicht unterstützt');
}
Aktueller Typ: auto

Spiel-Soundeffekte mit anderer Musik mischen

// Hintergrundmusik anderer Apps soll weiterlaufen
if ('audioSession' in navigator) {
  navigator.audioSession.type = 'ambient';
}

const ctx = new AudioContext();
const playClick = () => {
  const osc = ctx.createOscillator();
  osc.frequency.value = 880;
  osc.connect(ctx.destination);
  osc.start();
  osc.stop(ctx.currentTime + 0.05);
};

document.querySelector('#spielfeld')
  .addEventListener('click', playClick);

Podcast-Player: Wiedergabe-Typ vor dem Abspielen setzen

const audio = document.querySelector('audio');

document.querySelector('#play').addEventListener('click', async () => {
  if ('audioSession' in navigator) {
    // Andere Audioquellen unterbrechen, Stummschalter ignorieren
    navigator.audioSession.type = 'playback';
  }
  await audio.play();
  console.log('Typ:', navigator.audioSession?.type);
});

navigator.audioSession?.addEventListener('statechange', () => {
  console.log('Sitzungszustand:', navigator.audioSession.state);
});
Typ: playback Sitzungszustand: active

Videokonferenz: Aufnahme und Wiedergabe

const startCall = async () => {
  if ('audioSession' in navigator) {
    navigator.audioSession.type = 'play-and-record';
  }
  const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
  console.log('Mikrofon aktiv, Typ:', navigator.audioSession?.type);
  return stream;
};

startCall();
Mikrofon aktiv, Typ: play-and-record

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Die Audio Session API ist ein W3C-Entwurf. Bisher unterstützt nur Safari sie (macOS und iOS ab 16.4). Chrome und Firefox kennen navigator.audioSession nicht. Prüfen Sie die Unterstützung deshalb immer vorher, z. B. mit 'audioSession' in navigator oder mit optionaler Verkettung (navigator.audioSession?.type).
  • Die Auswirkungen sind plattformabhängig und vor allem auf Mobilgeräten spürbar, etwa beim Stummschalter und beim Mischen mit anderen Apps. Auf dem Desktop ändert sich oft wenig.
  • Ein Wechsel des Typs während einer laufenden Wiedergabe wird eventuell erst beim nächsten Start wirksam. Setzen Sie den Typ deshalb vor play() bzw. vor dem Start des AudioContext.
  • Ungültige Werte lösen keinen Fehler aus. Die Zuweisung wird einfach ignoriert, und type behält den alten Wert.
  • Auch mit "playback" gelten weiterhin die Autoplay-Richtlinien. Die Wiedergabe braucht meist eine Nutzerinteraktion.