BaseAudioContext.state

stateBaseAudioContext インターフェイスの読み取り専用プロパティで、現在の AudioContext の状態を返します。

文字列です。取りうる値は以下の通りです。

  • suspended: 音声コンテキストは(AudioContext.suspend() によって)一時停止中
  • running: 音声コンテキストは通常動作中
  • closed: 音声コンテキストは(AudioContext.close() によって)閉じられた

状態の変化の扱い

次のスニペットは AudioContext states のデモライブ実行で確認)の一部です。 onstatechange ハンドラーは、状態が変わるたびにコンソールにログを出力するために使われています。

js
audioCtx.onstatechange = function () {
  console.log(audioCtx.state);
};

iOS Safari における一時停止した再生の再開の状態

iOS の Safari では、ユーザーが(タブの切り替え、ブラウザの最小化、画面のオフなどで)ページを離れると、音声コンテキストの状態が "interrupted" に変わり、再開させる必要があります。例えば次のようにします。

js
function play() {
  if (audioCtx.state === "interrupted") {
    audioCtx.resume().then(() => play());
    return;
  }
  // ... rest of the play() function
}

仕様書

Specification
Web Audio API
# dom-baseaudiocontext-state

ブラウザーの互換性

BCD tables only load in the browser

関連情報