我正在使用YouTube API为Android编写一个简单的应用程序 - 我想实现我将在我的应用程序中选择的每个视频/直播流的自动恢复状态。我初始化时能够设置自动播放当前我遇到的问题是,当我尝试像下面的代码那样做时,它没有做我想要的事情(每次当我使用该应用程序进入后台并恢复显示时我播放按钮)
public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnFullscreenListener, YouTubePlayer.OnInitializedListener {
//private YouTubePlayer player = null;
private boolean isFullscreen;
private static final int RECOVERY_DIALOG_REQUEST = 1;
private YouTubePlayerView youTubePlayerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/** Initializing YouTube Player View for displaying YouTube video **/
youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
youTubePlayerView.initialize(DeveloperKey.DEVELOPER_KEY, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
player.setFullscreen(true);
player.setOnFullscreenListener(this);
if (!wasRestored) {
player.loadVideo(YouTubeVideoId.VIDEO_ID);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider,
YouTubeInitializationResult errorReason) {
if (errorReason.isUserRecoverableError()) {
errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
} else {
String errorMessage = String.format(getString(R.string.error_player), errorReason.toString());
Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
}
}
@Override
public void onFullscreen(boolean isFullscreen) {
this.isFullscreen = isFullscreen;
}
@Override
public void onResume() {
super.onResume();
youTubePlayerView.initialize(DeveloperKey.DEVELOPER_KEY, this);
}
}
提前感谢您的帮助和建议!
答案 0 :(得分:1)
我有解决方案:
我有完全相同的问题,在跳到官方提供的例子后,我发现,令我沮丧的是,他们有完全相同的问题。外部控制似乎无法以任何重要方式与玩家互动。更不用说获得一个新鲜的YoutubePlayer往往会有问题。然而,我设法通过测试和尝试不同的东西来发现一些东西:
即使您将静态引用保存到YoutubePlayer,此引用也无法以任何方式更改播放器。但您仍然可以检索视频暂停的位置。所以,对我来说,下一个合乎逻辑的步骤是试试这个:
在离开活动前从玩家获取位置:
Integer myMILLIS = yplayer.getCurrentTimeMillis();
然后,当重新加载视频时,将其移动到正确的位置:
// Reload the SAME VIDEO again (yplayer is the YoutubePlayer)
yplayer.cueVideo(mVideoURL);
// Get the position you saved back
yplayer.seekToMillis(myMILLIS);
// Start Playing the video from that position again
yplayer.play();
问题是,由于一些奇怪的原因,单独不起作用,但当我尝试调试以前的代码时......结束了工作的某些事情。
因此,经过一些测试后,我发现了之前解决方案的问题:调用
之后 yplayer.cueVideo(mVideoURL);
在WILL FAIL之后立即拨打任何其他电话。因此,这可能是一个奇怪的解决方案,但它确实有效:
在离开活动前从玩家获取位置:
Integer myMILLIS = yplayer.getCurrentTimeMillis();
然后,当重新加载视频时:
// Reload the SAME VIDEO again (yplayer is the YoutubePlayer)
yplayer.cueVideo(mVideoURL);
在做任何其他事情之前,我们必须稍等一下:
// The next pause is here to allow the video to load
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
// Do something here if you need to
}
再次将其移至正确位置,然后播放:
// Get the position you saved back
yplayer.seekToMillis(myMILLIS);
// Start Playing the video from that position again
yplayer.play();
这解决了我的问题。我希望它可以解决你的问题。
答案 1 :(得分:-1)
点击Android上的内容,但在浏览器(javascript / html)上,请使用:&#34; <EventTrigger RoutedEvent="MouseLeave">
<ResumeStoryboard BeginStoryboardName="Move"/>
</EventTrigger>
&#34;
它既启动又恢复了视频。