如何使用 YoutubePlayerSupportFragment 在 Android 中使用现代 UI 的 Youtube 播放器

How to use Youtube Player with modern UI in Android using YoutubePlayerSupportFragment

我正在尝试在我的 android 应用程序中使用 Youtube 播放器。它为播放器显示了旧的过时 UI,但在示例中它显示了现代的 UI。这两个应用程序之间的唯一区别是我使用的是 YoutubePlayerSupportFragment 而不是 YoutubePlayerFragment。这是因为我在 pre lollipop 设备中将 AppCompatActivity 用于 Material 主题。

我在日志中收到以下语句:

W/YouTubeAndroidPlayerAPI﹕ Cannot load modern controls UI. Upgrade to the latest version of the Android YouTube API.

如何克服这个问题?我需要使用 Appcompat 和 YoutubePlayerSupportFragment

的现代 UI

我的猜测是 YouTube API 尚未更新

考虑一下:

  • YouTube Android 播放器 API(找到 here)只是一堆 View 的远程 link 到官方 YouTube 应用程序,需要在设备上安装它才能工作
  • YouTube 应用现在是 minSdk 15,这意味着 Fragment 是原生支持的
  • 如您所述,一切都适用于 YouTubePlayerFragment,但不适用于 YouTubePlayerSupportFragment

我相信 YouTube 'SDK' 可以利用现代 UI 控件直接从 YouTube 应用导入播放器视图。但是,支持 Fragments 需要在 SDK 端执行更多操作,这些操作尚未以更新的形式执行。

TL;DR

您最好的选择是等待 YouTube API 更新到更新版本。


编辑

YouTube SDK 似乎刚刚更新到 1.2.2!前往 over here 下载它。

我找到了适合我的东西。

在 Activity 您的片段当前所在的 super.OnCreate() 之前设置此项:

getLayoutInflater().setFactory(this);