避免另一个音频应用在 YouTubePlayerFragment init 上暂停

Avoid another audio app pausing on YouTubePlayerFragment init

我正在处理 YouTubePlayerFragment 集成。 在 YouTubePlayerFragment 中初始化 YouTubePlayer 时,它从另一个应用程序获取音频,并且该特定应用程序停止播放音频,即。播放音乐。

由于用户没有触摸我应用程序的 youtube 播放器中的播放按钮,因此它不会从其他应用程序获取音频。那么如何避免此类问题并让另一个应用程序播放音频?

这是我的 Fragment 代码,用 Kotlin 编写。

class MyVideoFragment : YouTubePlayerFragment() {
    lateinit var mPlayer: YouTubePlayer

    companion object {

    fun newInstance(url: String): TutorialVideoFragment {

        val v = TutorialVideoFragment()
        val b = Bundle()
        b.putString("url", url)
        v.init()
        v.arguments = b
        return v
    }
}


private fun init() {
    initialize(DEVELOPER_KEY,
            object : YouTubePlayer.OnInitializedListener {

                override fun onInitializationSuccess(arg0: YouTubePlayer.Provider,
                                                     player: YouTubePlayer, wasRestored: Boolean) {
                    if (!wasRestored) {
                        player.cueVideo(arguments.getString("url"))
                        if (player.isPlaying) {
                            player.pause();
                        }

                        player.setShowFullscreenButton(true)
                        mPlayer = player
                    }
                }

                override fun onInitializationFailure(provider: YouTubePlayer.Provider,
                                                     errorReason: YouTubeInitializationResult) {
                    if (errorReason.isUserRecoverableError) {
                        //                            errorReason.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST).show();
                    } else {
                        val errorMessage = String.format(
                                getString(R.string.error_player), errorReason.toString())
                        toast(errorMessage)
                    }
                }
            })
    }
}

我遇到了同样的问题。 setManageAudioFocus(false) 正是您所需要的。 您可以通过 player.setManageAudioFocus(false)onInitializationSuccess 中禁用自动获取音频焦点,但请记住您需要手动管理音频焦点。您可以阅读有关管理音频焦点的内容 here