我正在使用 Youtube Player api 在我的应用程序中播放 YouTube 视频。视频开始播放并在 1-2 秒后暂停
我创建了视频片段和视图组。随后我创建了一些 youtobe 视频视图。
视频片段
public static final class VideoFragment extends YouTubePlayerSupportFragment implements
OnInitializedListener
{
private YouTubePlayer player;
private String videoId;
public static VideoFragment newInstance()
{
return new VideoFragment();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initialize(Constants.DEVELOPER_KEY, this);
}
@Override
public void onDestroy()
{
if (player != null)
{
player.release();
}
super.onDestroy();
}
public void setVideoId(String videoId)
{
if (videoId != null && !videoId.equals(this.videoId))
{
this.videoId = videoId;
if (player != null)
{
player.cueVideo(videoId);
}
}
}
public void pause()
{
if (player != null)
{
player.pause();
}
}
@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player,
boolean restored)
{
this.player = player;
if (!restored && videoId != null)
{
player.cueVideo(videoId);
}
}
@Override
public void onInitializationFailure(Provider provider, YouTubeInitializationResult result)
{
this.player = null;
}
}
创建 Youtobe 视频视图的功能
private ViewGroup createYouTubePlayer(final VideoData data, final FrameLayout youTubePlayer)
{
youTubePlayer.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
FragmentManager fm = mActivity.getSupportFragmentManager();
if (v.getId() == mCurrentYouTubePlayer)
{
return;
}
VideoFragment fragment = (VideoFragment) fm.findFragmentById(mCurrentYouTubePlayer);
if (fragment == null)
{
fragment = VideoFragment.newInstance();
fragment.setVideoId(data.srcPath);
fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit();
mCurrentYouTubePlayer = v.getId();
}
else
{
fm.beginTransaction().remove(fragment).commit();
fragment = VideoFragment.newInstance();
fragment.setVideoId(data.srcPath);
fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit();
mCurrentYouTubePlayer = v.getId();
}
}
});
return youTubePlayer;
}
无法按照 Google 的规定在播放器上方添加按钮作为叠加层,否则播放器将停止:
https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView
请注意,在播放视频时,此视图的最小尺寸为
200x110 dp。如果您将视图缩小,视频就会
自动停止播放。另外,不允许叠加
播放视频时与其他视图一起查看。
该视图不支持填充。要达到相同的效果,请将
另一个 ViewGroup 中的视图或为其提供边距。
YouTubePlayer 也不支持填充。
要将您的视图叠加到视频上,我建议您使用外放播放器,
它不是 android sdk 的一部分,但由 google 推荐并包含在 android 开发人员文档中:
http://google.github.io/ExoPlayer/ http://google.github.io/ExoPlayer/
Exoplayer 允许您流式传输任何类型的视频,而不仅仅是 Youtube 视频。
值得一提的是,Exoplayer 用于 YouTube 应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)