使用 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?) {}
})
}
我正在开发 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?) {}
})
}