質問: YoutTube Android Player API を利用して、 `YouTubePlayerFragment` を埋め込んだ Activity を作っています。 `YouTubePlayerFragment` を初期化する `initialize()` に渡した匿名クラスの中で `YouTubePlayer.cueVideo()` を呼び出すと、バックグランドで再生している音楽やラジオなどが停止してしまいます。 `YouTubePlayer.loadVideo()` ならば動画再生が始まってしまうので音楽が停止するべきだと思いますが、`YouTubePlayer.cueVideo()` はプレイヤーの準備とサムネイルを用意するだけ、動画のローディングは行わないのでこの挙動は違和感を与えてしまうと感じました。 これを回避する方法はないでしょうか。 ``` youtubePlayerFragment.initialize("apiKey", object: YouTubePlayer.OnInitializedListener { override fun onInitializationSuccess(provider: YouTubePlayer.Provider?, player: YouTubePlayer?, wasRestored: Boolean) { if (wasRestored) return player?.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT) player?.cueVideo("videoId") // ここでバックグラウンドの音楽などが停止する。 } override fun onInitializationFailure(provider: YouTubePlayer.Provider?, error: YouTubeInitializationResult?) { // error handling } }) ```
回答: * YouTubePlayer | YouTube Android Player API | Google Developers) にある `setManageAudioFocus` を `false` にすることで、このアプリがオーディオフォーカスを自動処理しなくなる=他のプレイヤーに関与しない、となると思います。(以下は、`setManageAudioFocus` の説明) > > プレーヤーが、再生ライフサイクルの一部としてオーディオ フォーカスを処理するかどうかを指定します。 > > > true の場合、再生の開始および終了時に、プレーヤーはオーディオ フォーカスの要求および破棄を適宜実行します。また、オーディオ > > フォーカスを失った場合は再生を一時停止します。ダックした場合、プレーヤーは音量を下げます。 > > > オーディオ > > フォーカスを処理する場合、オーディオ出力の変化によってノイズが多くなると、必要に応じてプレーヤーが一時停止になります(AudioManager.ACTION_AUDIO_BECOMING_NOISY > > を参照)。 > > > デフォルト値は true です。 > > > ただしこの場合、マニュアルでオーディオフォーカスを制御する必要があります。あるいは `loadVideo()` の直前に `setManageAudioFocus(true)` をすれば良いのかもしれませんが、実際に試してはいないです。