2016-12-02 337 views
4

我的应用程序具有播放Youtube视频的活动A(使用YoutubePlayerFragment)此活动A有一个自己的按钮B来控制播放。当活动加载并正在播放视频时,我可以使用B按钮来控制播放。然后我按下主页按钮。当我从最近的任务菜单中恢复活动A时,按钮B不再工作。我只能播放自己的播放按钮(位于YoutubePlayerFragment内)的视频。 目前我储存YoutubePlayer实例时onInitializationSuccess叫做:播放/暂停YoutubePlayer后活动从后台恢复活动

private val onInitializedListener = object : YouTubePlayer.OnInitializedListener { 
    override fun onInitializationSuccess(provider: YouTubePlayer.Provider, youTubePlayer: YouTubePlayer, wasRestored: Boolean) { 
     Log.d(DEBUG_TAG, "YoutubePlayer - onInitializationSuccess") 
     if (!wasRestored) { 
      mYoutubePlayer = youTubePlayer 
      mYoutubePlayer!!.setPlayerStateChangeListener(playerStateChangeListener) 
      mYoutubePlayer!!.setPlaybackEventListener(mPlaybackEventListener) 
      mYoutubePlayer!!.setShowFullscreenButton(false) 
      mYoutubePlayer!!.loadVideo(mCurrentVideoId) 
     } else { 
      Log.d(DEBUG_TAG, "Restored from a previously saved state") 
     } 
    } 

    override fun onInitializationFailure(provider: YouTubePlayer.Provider, youTubeInitializationResult: YouTubeInitializationResult) { 
     if (youTubeInitializationResult.isUserRecoverableError) { 
      youTubeInitializationResult.getErrorDialog([email protected], 1).show() 
     } else { 
      Toast.makeText([email protected], 
        "Failed to initialize video, please try again!", 
        Toast.LENGTH_LONG).show() 
     } 
    } 
} 

按钮B已经使用这个YoutubePlayer实例调用播放/根据请求暂停。但是当活动A进入后台并恢复时,这不再起作用。有谁能告诉我这里有什么问题吗?非常感谢你。

+1

嗨!我在同一个问题上苦苦挣扎,您是否找到了解决方案? – thunder413

回答

-1

我希望这会帮助你。

private final class MyPlaybackEventListener implements YouTubePlayer.PlaybackEventListener { 

    @Override 
    public void onPlaying() { 
     // Called when playback starts, either due to user action or call to play(). 

    } 

    @Override 
    public void onPaused() { 
     // Called when playback is paused, either due to user action or call to pause(). 

    } 

    @Override 
    public void onStopped() { 
     // Called when playback stops for a reason other than being paused. 

    } 

    @Override 
    public void onBuffering(boolean b) { 
     // Called when buffering starts or ends. 
    } 

    @Override 
    public void onSeekTo(int i) { 
     // Called when a jump in playback position occurs, either 
     // due to user scrubbing or call to seekRelativeMillis() or seekToMillis() 
    } 
} 
+0

我也注册PlaybackEventListener。活动恢复后,将自动调用“onStopped”。根据文档,这是“由于暂停以外的原因(例如视频结束或播放错误)而停止播放时调用。”我无法弄清楚这里有什么问题。顺便说一句,添加这将不会解决任何事情,因为我已经注册了这个监听器。 –