使用Youtube SDK for Android如何隐藏视频结尾处的相关视频?

3
我正在开发一个安卓应用程序,使用Youtube SDK来展示视频。我想隐藏在视频结束时出现的建议内容。我已经实现了YouTubePlayer.PlayerStyle.MINIMAL,这个样式会隐藏所有的按钮,但是仍然会有建议/推荐出现在视频的结尾处。我正在使用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>

请参考以下链接:https://dev59.com/31oV5IYBdhLWcg3wY976 - Ali
尝试这个解决方案,它是一种不同的方法。 https://stackoverflow.com/a/69764705/13432369 - Akshay Ashok
2个回答

2
你可以尝试添加一个YouTubePlayer。PlayerStateChangeListener,添加onVideoEnded()方法,并放置youtubePlayer.seekToMillis(0)。我不确定它是否有效,因为我从未在Android上使用过这个库。

2

正如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?) {}

            })
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接