使用 Youtube sdk 在 youtube 视频末尾隐藏相关视频 android

Hide related videos at the end of youtube video using Youtube sdk android

我正在开发 android 应用程序,我在其中使用 youtube sdk 显示 Youtube 视频。我想隐藏视频末尾的建议。我已经实现了 YouTubePlayer.PlayerStyle.MINIMAL,它隐藏了所有按钮,但 recommendations/suggestions 仍然出现在视频的末尾。我正在使用 YouTubeAndroidPlayerApi.jar.

我的代码如下,请指导我解决这个问题。谢谢

class YoutubeActivity : AppCompatActivity(), YouTubePlayer.OnInitializedListener {

    private var videoId: String = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_youtube)

        videoId = intent.getStringExtra("videoId")

        val youTubePlayerFragment = supportFragmentManager.findFragmentById(R.id.official_player_view) as YouTubePlayerSupportFragment?
        youTubePlayerFragment?.initialize(getString(R.string.youtube_apikey), this)
    }

    override fun onInitializationSuccess(provider: YouTubePlayer.Provider, youTubePlayer: YouTubePlayer, wasRestored: Boolean) {
        if (!wasRestored) {
            youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL)
            youTubePlayer.setFullscreen(true)
            youTubePlayer.loadVideo(videoId, 1)
            youTubePlayer.setShowFullscreenButton(false)
        }
    }

    override fun onInitializationFailure(provider: YouTubePlayer.Provider, youTubeInitializationResult: YouTubeInitializationResult) {
        if (youTubeInitializationResult.isUserRecoverableError) {
            youTubeInitializationResult.getErrorDialog(this, YouTube.RECOVERY_DIALOG_REQUEST).show()
        } else {
            val errorMessage = String.format(
                    "There was an error initializing the YouTubePlayer (%1$s)",
                    youTubeInitializationResult.toString()
            )
            Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
        }
    }
}

我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    tools:context=".components.tutorial.fragments.YoutubeActivity">

    <fragment
        android:id="@+id/official_player_view"
        android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

您可以尝试添加 YouTubePlayer。 PlayerStateChangeListener,添加onVideoEnded()方法,放置youtubePlayer.seekToMillis(0) 我不确定它是否会起作用,我从未在 Android.

上使用过这个库

正如 770grappenmaker 在回答中建议的那样,我尝试了解决方法。所以无论如何有人找不到任何解决方案,他们可以尝试这个解决方法。

在你的 onInitializationSuccess 方法中实现 PlayerStateChangeListener 并在 onVideoEnded 方法中将视频带回起点并暂停。(以下是我在 Kotlin 语言中的实现)

override fun onInitializationSuccess(
            p0: YouTubePlayer.Provider?,
            p1: YouTubePlayer?,
            p2: Boolean) {
            p1!!.loadVideo(videoData.videolink)
            p1.setPlayerStateChangeListener(object:YouTubePlayer.PlayerStateChangeListener{
                override fun onLoading() {}
                override fun onLoaded(p0: String?) {}
                override fun onAdStarted() {}
                override fun onVideoStarted() {}
                override fun onVideoEnded() {
                    p1.seekToMillis(0)
                    p1.pause()
                }
                override fun onError(p0: YouTubePlayer.ErrorReason?) {}

            })
        }