Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
旋转屏幕或隐藏播放器时Android YouTube API视频暂停_Android_Youtube_Youtube Api_Android Youtube Api - Fatal编程技术网

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

旋转屏幕或隐藏播放器时Android YouTube API视频暂停,android,youtube,youtube-api,android-youtube-api,Android,Youtube,Youtube Api,Android Youtube Api,我正在使用Android的YouTube API。视频正常播放,但当我打开屏幕时,播放机停止播放视频,视频从头开始播放,就像没有播放一样。滚动屏幕并隐藏播放器时也会发生同样的情况。我已经研究了很多,也测试了一些我发现的东西,但是没有任何效果=( 这是我声明我的类的方式: public class PlayerTest extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener { 这是我在onCr

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

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

public class PlayerTest extends YouTubeBaseActivity implements
    YouTubePlayer.OnInitializedListener {
这是我在onCreate()中输入的内容:

这就是我实施的方法:

@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);
}
问题:

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


提前感谢您的帮助!

当您翻转屏幕时,播放视频的活动将被销毁,并在所有内容重置后创建一个新活动。这是一个功能,而不是一个bug。:)


有几种方法可以解决这个问题;您可能需要保存一些状态,然后在创建任何新活动时检查保存的数据,管理数据等。签出:。

有一种方法可以使视频在设备旋转期间不暂停播放。查看createVideoIntent()API,其中“lightboxMode”参数设置为true

如果设置为true,它将在当前活动上方的对话框视图中播放视频,并且在设备旋转期间不会暂停。


<activity 
android:label="YoursActivityName" 
android:configChanges="keyboardHidden|orientation|screenSize"
android:name="com.example.naren.YoursActivityName" /> 

将其添加到您的清单文件中。

我的诀窍是添加:

android:configChanges="keyboardHidden|orientation|screenSize"
到你的android清单


干杯。

添加
player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN\u FLAG\u自定义\u布局)

文件


避免默认全屏行为中出现的回绝

正如sqrfv所指出的,当设备方向改变时,Android
活动将被销毁并重新创建。我建议您使用
getCurrentTimeMillis()
方法查找当前播放位置(可能在
活动中
onPause()
方法中)并保存它,当
活动重新创建时,使用
seekToMillis()
方法在最后一个位置重新开始播放。谢谢您的回答。正如我对@Squonk说的,我曾想过做类似的事情,但我不知道这个特性。我会试着像你说的那样做。这种情况下的屏幕旋转它的ok,我明白这是一个功能。但在滚动屏幕并隐藏播放器的情况下,为什么视频也会停止?为什么当屏幕处于横向时,视频会立即播放并暂停?对于滚动问题,我们需要更多信息,滚动事件中的活动显然不会被破坏。我注意到一件事:当我缓慢滚动屏幕并隐藏播放器,然后返回查看播放器时,播放器会暂停,而不是停止,只是暂停。但如果我快速滚动并返回,播放器将继续播放。它表明,活动似乎知道组件是否正在显示,以及组件是否已损坏。如果滚动屏幕以查看组件,“活动”将再次创建该组件。但如果是这样的话,玩家不是为了暂停而是为了停止。你同意吗?如果视图从屏幕上移开,我高度怀疑滚动事件会破坏活动。您可以将一些日志记录到活动的onCreate方法中,以准确地查看调用它的时间。YoutubeAPI可能足够聪明,可以在视频不再出现在屏幕上时暂停或停止观看,但如果是这种情况,则stop命令会将播放器重置为start,而pause命令则不会。是的,我在这里进行了测试。该组件未被破坏,是youtube API,它告诉播放器在播放器离开屏幕时暂停,视频仅暂停,不返回开始。我做了一个测试,我改变了我的xml布局,让播放器固定在屏幕上,滚动到剩下的内容,现在他不再停顿。这是一个替代方法=)简单并解决了问题如果我使用您的解决方案,那么当我旋转屏幕时,它将继续使用纵向布局xml文件,而不是切换到横向布局文件
android:configChanges="keyboardHidden|orientation|screenSize"

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