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

标签 android kotlin android-youtube-api android-audiomanager

我正在处理 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

关于android - 避免另一个音频应用在 YouTubePlayerFragment init 上暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46909977/

相关文章:

java - 无法实例化一个或多个类?

java - Android - 无法运行、gradle 错误、重复条目

android - 跟随用户的 map View - Android Maps API v2 的 MyLocationOverlay 类型功能

kotlin - 如何只有Dagger @subcomponent的一个实例?

android - 无法为RecyclerView的DividerItemDecoration设置Custom Drawable

android - 访问未配置的 Android 谷歌 API key

android - YouTube 安卓 API : YouTubePlayerFragment loading spinner

android - 具有不同工具栏布局的单个 Activity 和多个 Fragment

android - 在 ReactNative 中调用 RCTDeviceEventEmitter.emit 时出错

android - Kotlin 推断类型不匹配