7

私の HTML5 ゲームには、「html5」モードで Howler.js を使用するバックグラウンド ミュージックがいくつかあります。これにより、Chrome for Android のメディア再生通知がトリガーされるようです。これは、ユーザーが任意のタブでゲームを開いている間に通知が表示されることを意味します。

ゲームは善良な市民であり、タブがフォーカスされていない間は音楽を一時停止するため、この通知は不要です。ユーザーはゲームに参加しなくてもゲームのバックグラウンド ミュージックを一時停止および再開できるため、混乱を招くことさえあります。しかし、通知を取り除く方法が見つかりません。

stop()音楽オブジェクトの代わりに、pause()または音楽オブジェクトで呼び出してみmute()ましたが、これは通知を削除しません。

もう少し詳しく調べてみると、通知を制御するために使用できると思われる実験的なMediaSessionAPI ( W3C ドラフト) を発見しました。しかし、私の理解が正しければ、完全に無効にする方法はありません。

アプリケーションの開始時にこれを試しました:

if (typeof navigator.mediaSession == 'object') {
  navigator.mediaSession.playbackState = 'none'
}

ただし、これは宣言された再生状態を設定するだけです(仕様用語で)。そして、それをに設定し'none'ても効果はありません:

実際の再生状態は、次の方法で計算されます。

  • 宣言された再生状態が「再生中」の場合は、「再生中」を返します。
  • それ以外の場合は、推測された再生状態を返します。

そして、推測された再生状態は、私が制御できないものです。<audio>ページ上の要素の状態に基づいてブラウザによって導出されます。

私が見落としている可能性はありますか、それとも現在の MediaSession 仕様の単なる見落としですか?

4

1 に答える 1