我正在使用Youtube Player api在我的应用程序中播放youtube视频.视频在1-2秒后开始播放和暂停
我创建了Video Fragment和ViewGroup.随后我创建了一些youtobe视频.
VideoFragment
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;
}
}
Run Code Online (Sandbox Code Playgroud)
用于创建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;
}
Run Code Online (Sandbox Code Playgroud)
根据Google的指定,无法在播放器上方添加按钮作为叠加层,否则播放器将停止:
请注意,在播放视频时,此视图的最小尺寸为200x110 dp.如果您将视图设置得更小,视频将自动停止播放.此外,在播放视频时,不允许将视图与其他视图重叠.
此视图不支持填充.要获得相同的效果,请将视图包装在另一个ViewGroup中或为其赋予边距.
YouTubePlayer也不支持填充.
为了覆盖你对视频的看法,我建议你使用ExoPlayer,它不是android sdk的一部分,但它是由谷歌推荐并包含在android开发者文档中:
http://google.github.io/ExoPlayer/
Exoplayer允许您流式传输任何类型的视频,而不仅仅是Youtubes视频.
还可以提到Exoplayer用于youtube应用程序.
| 归档时间: |
|
| 查看次数: |
3940 次 |
| 最近记录: |