相关文章推荐
性感的鸵鸟  ·  curl命令 CURL命令 测试 ...·  2 月前    · 
逼格高的蛋挞  ·  Self-Host ASP.NET Web ...·  2 月前    · 
另类的香蕉  ·  curl_easy_perform() ...·  2 月前    · 
体贴的板凳  ·  android ...·  2 月前    · 
干练的甜瓜  ·  将 Web API 与 ASP.NET ...·  2 月前    · 
低调的葡萄酒  ·  Shadow DOM | ...·  1 年前    · 
闷骚的冲锋衣  ·  maven - CAS Apereo ...·  1 年前    · 

旋转屏幕或隐藏播放器时安卓YouTube API视频暂停

7 人关注

我正在使用Android的YouTube API。视频正在正常播放,但当我转动屏幕时,播放器停止了视频,并从头开始播放,好像没有播放过一样。当滚动屏幕并隐藏播放器时也会发生同样的情况。我研究了很多,也测试了一些我发现的东西,但没有任何效果=(

这是我声明我的类的方式。

public class PlayerTest extends YouTubeBaseActivity implements
    YouTubePlayer.OnInitializedListener {

这是我在onCreate()中的内容。

 YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
    youTubeView.initialize(DEVELOPER_KEY, this);

这就是我实施的方法。

@Override
public void onInitializationFailure(Provider provider,
        YouTubeInitializationResult error) {
    Toast.makeText(this, "Error :( " + error.toString(), Toast.LENGTH_LONG)
            .show();
@Override
public void onInitializationSuccess(Provider provider,
        YouTubePlayer player, boolean wasRestored) {
    player.cueVideo(video);

question:

我想在滚动或翻转屏幕时继续播放视频。这可能吗? 我实施的方式是否正确?如果不是,什么才是最好的方法?

提前感谢您的帮助!

1 个评论
正如sqrfv所指出的,安卓的 Activity 在设备方向改变时被销毁并重新创建。我建议你使用 getCurrentTimeMillis() 方法找到当前的播放位置(也许在 Activity onPause() 方法中)并保存它。当 Activity 被重新创建时,使用 seekToMillis() 方法在最后的位置重新开始播放。
android
youtube
youtube-api
android-youtube-api
bertelli.deris
bertelli.deris
发布于 2013-12-05
6 个回答
Sindri Þór
Sindri Þór
发布于 2021-06-25
已采纳
0 人赞同

对我有帮助的是添加。

android:configChanges="keyboardHidden|orientation|screenSize"

到你的安卓清单。

Cheers..

简单并解决这个问题
SUXA
如果我使用你的解决方案,那么当我旋转屏幕时,它将继续使用纵向布局xml文件而不是切换到横向布局文件。
Narendra
Narendra
发布于 2021-06-25
0 人赞同
<activity 
android:label="YoursActivityName" 
android:configChanges="keyboardHidden|orientation|screenSize"
android:name="com.example.naren.YoursActivityName" /> 

在你的清单文件中添加它。

Noah
Noah
发布于 2021-06-25
0 人赞同

当你翻转屏幕时,正在播放视频的活动被破坏,而一个新的活动被创建,所有的东西都被重置。 这是一个特点,不是一个错误。)

有少量的方法来处理这个问题;你可能要保存掉一些状态,然后在任何新活动被创建时检查任何保存的数据,管理数据,等等。 请看。 在屏幕旋转/活动破坏后保持安卓系统中的数据视图/布局 .

谢谢你的回答。正如我对@Squonk所说,我曾想过做这样的事情,但我不知道有这个功能。我会尝试像你说的那样做一些事情。 在旋转屏幕的情况下,这很好,我知道这是一个功能。但是在滚动屏幕和隐藏播放器的情况下,为什么视频也会停止?还有,为什么当屏幕处于横向时,视频的播放会立即暂停?
Noah
对于滚动的问题,我们需要更多的信息,活动显然不会在滚动事件中被销毁。
我注意到一件事:当我慢慢滚动屏幕并隐藏播放器,然后返回查看播放器时,播放器会暂停而不是停止,只是暂停。但如果我快速滚动并返回,播放器就会继续播放。这表明,似乎活动知道组件是否被显示,如果他不显示,就会被破坏。如果滚动屏幕来查看组件,活动就会再次创建它。但如果是这样,播放器就不是为了暂停而是为了停止。你同意吗?
Noah
如果视图移出屏幕,我非常怀疑该活动会在一个滚动事件中被销毁。 你可以在活动的onCreate方法中加入一些日志记录,看看它到底是什么时候被调用的。 YoutubeAPI可能足够聪明,如果视频不再在屏幕上,就会暂停或停止视图,但如果是这样的话,STOP命令会将播放器重置到开始状态,而PAUSE命令则不会。
是的,我在这里测试过。这个组件没有被破坏,是youtube的API告诉播放器暂停,当播放器移出屏幕时,视频只是暂停,不会返回到开始。我做了一个测试,我改变了我的xml布局,让播放器固定在屏幕上,只滚动到其余的内容,现在他不再暂停了。这是一个备选方案 =)
Alan
Alan
发布于 2021-06-25
0 人赞同

有一种方法可以使视频在设备旋转时没有任何停顿地播放。请看 YouTubeStandalonePlayer createVideoIntent() API的'lightboxMode'参数设置为true。

如果它被设置为 "真",它会在你当前活动上方的对话视图中播放视频,并且在设备旋转时不会暂停。

changhao cui
changhao cui
发布于 2021-06-25
0 人赞同

add player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT)

override fun onInitializationSuccess(provider: YouTubePlayer.Provider, player: YouTubePlayer, wasRestored: Boolean) { player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT) if (!wasRestored) { player.loadVideo(videoId)

document https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayer#FULLSCREEN_FLAG_CUSTOM_LAYOUT

avoiding the rebuffering that occurs in the default fullscreen behavior