我的应用程序有用于播放YouTube视频的活动A(使用YouTubePlayerFragment)此活动A有自己的按钮B来控制播放。当活动加载并正在播放视频时,我可以使用b按钮控制播放。然后我按Home键。当我从最近的任务菜单恢复活动A时,按钮B不再工作。我只能从它自己的播放按钮(在YouTubePlayerFragment中)播放视频。
当前我在调用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(this@KActivityPlayVideo, 1).show()
        } else {
            Toast.makeText(this@KActivityPlayVideo,
                    "Failed to initialize video, please try again!",
                    Toast.LENGTH_LONG).show()
        }
    }
}

按钮b使用这个youtubeplayer实例根据请求调用play/pause。但当活动a转到后台并继续时,这就不再起作用了。有人能告诉我这里有什么问题吗?非常感谢你。

最佳答案

我希望这对你有帮助。

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()
    }
}

10-07 19:33
查看更多