使用YouTube播放器API中后台播放YouTube视频 [英] Play Youtube video in background using youtube player api

查看:821
本文介绍了使用YouTube播放器API中后台播放YouTube视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经用成功地扮演了YouTube视频 YouTube播放器API 。但我需要在背景上后退按钮press.I运行用Google搜索了很多,但什么也没找到,请帮我实现提前this.Thanks

这是我的code -

 公共类FullscreenDemoActivity扩展YouTubeFailureRecoveryActivity
        实现View.OnClickListener,

        YouTubePlayer.OnFullscreenListener {
//私人MyPlaybackEventListener myPlaybackEventListener;
    私有静态最终诠释PORTRAIT_ORIENTATION = Build.VERSION.SDK_INT< 9? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
            :ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;

    私人的LinearLayout的baselayout;
    私人YouTubePlayerView playerView;
    公共YouTubePlayer播放器;
    私人按钮fullscreenButton;
    私人CompoundButton复选框;
    私人查看otherViews;

    私人布尔全屏;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);

        的setContentView(R.layout.fullscreen_demo);
        在baselayout =(的LinearLayout)findViewById(R.id.layout);
        playerView =(YouTubePlayerView)findViewById(R.id.player);
        fullscreenButton =(按钮)findViewById(R.id.fullscreen_button);
        复选框=(CompoundButton)findViewById(R.id.landscape_fullscreen_checkbox);
        otherViews = findViewById(R.id.other_views);
        playerView.initialize(DeveloperKey.DEVELOPER_KEY,这一点);

    }

    @覆盖
    公共无效onInitializationSuccess(YouTubePlayer.Provider供应商,
            YouTubePlayer球员,布尔wasRestored){
        this.player =播放器;
        setControlsEnabled();
        //指定我们要处理全屏行为自己。
        player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT);
        player.setOnFullscreenListener(本);
        如果(!wasRestored){
            player.cueVideo(avP5d16wEp0);
        }
        INT controlFlags = player.getFullscreenControlFlags();
        setRequestedOrientation(PORTRAIT_ORIENTATION);
        controlFlags | = YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE;
        player.setFullscreenControlFlags(controlFlags);
        player.play();


    }

    @覆盖
    保护YouTubePlayer.Provider getYouTubePlayerProvider(){
        返回playerView;
    }

    @覆盖
    公共无效的onClick(视图v){
        player.setFullscreen(全屏!);
    }



    私人无效的doLayout(){
        LinearLayout.LayoutParams playerParams =(LinearLayout.LayoutParams)playerView
                .getLayoutParams();
        如果(全屏){
            //当全屏,比所有其他观点的知名度
            //播放器应设置为
            //走了,球员应布置在整个屏幕上。
            playerParams.width = LayoutParams.MATCH_PARENT;
            playerParams.height = LayoutParams.MATCH_PARENT;

            otherViews.setVisibility(View.GONE);
        } 其他 {
            otherViews.setVisibility(View.VISIBLE);
            ViewGroup.LayoutParams otherViewsParams = otherViews
                    .getLayoutParams();
            如果(getResources()。getConfiguration()。方向== Configuration.ORIENTATION_LANDSCAPE){
                playerParams.width = otherViewsParams.width = 0;
                playerParams.height = WRAP_CONTENT;
                otherViewsParams.height = MATCH_PARENT;
                playerParams.weight = 1;
                baseLayout.setOrientation(LinearLayout.HORIZONTAL);
            } 其他 {
                playerParams.width = otherViewsParams.width = MATCH_PARENT;
                playerParams.height = WRAP_CONTENT;
                playerParams.weight = 0;
                otherViewsParams.height = 0;
                baseLayout.setOrientation(LinearLayout.VERTICAL);
            }
            setControlsEnabled();
        }
    }

    私人无效setControlsEnabled(){
        checkbox.setEnabled(玩家!= NULL
                &功放;&安培; 。getResources()getConfiguration()方向== Configuration.ORIENTATION_PORTRAIT)。
        fullscreenButton.setEnabled(玩家!= NULL);
    }

    @覆盖
    公共无效onFullscreen(布尔isFullscreen){
        全屏= isFullscreen;
        的doLayout();
    }

    @覆盖
    公共无效onConfigurationChanged(配置NEWCONFIG){
        super.onConfigurationChanged(NEWCONFIG);
        //的System.out.println(getScreenOrientation());
        的doLayout();
    }

    私人final类MyPlaybackEventListener实现PlaybackEventListener {

          私人无效updateLog(字符串提示){
        的System.out.println(提示);
          };

          @覆盖
          公共无效onBuffering(布尔为arg0){
           updateLog(onBuffering():+将String.valueOf(arg0中));
          }

          @覆盖
          公共无效onPaused(){

           updateLog(onPaused());
          }

          @覆盖
          公共无效onPlaying(){
           updateLog(onPlaying());

          }

          @覆盖
          公共无效onSeekTo(INT为arg0){
           updateLog(onSeekTo():+将String.valueOf(arg0中));
          }

          @覆盖
          公共无效onStopped(){
              player.loadVideo(avP5d16wEp0);

              player.cueVideo(avP5d16wEp0);
              player.play();
           updateLog(onStopped());
          }

         }

}
 

解决方案

我搜索该主题,我发现没有一个正式的方式,不会根据的在谷歌code此页面

在这,他们建议你创建一个播放器。

隐藏播放器。

静音的玩家。

呼叫seekTo()与您的VIDEOID和可选的偏移量。

等待状态更改为打。

preSS暂停。

呼叫seekTo(originalOffset,假的)。

取消静音的玩家。

显示播放器。 (或其他)。

这也许并没有你所需要的,但也许你可以改变你需要使用此方法来实现自己的目标。

I have successfully played youtube video using youtube player api. But I need to run it in background on back button press.I have googled a lot but found nothing Please help me to achieve this.Thanks in advance

here is my code-

public class FullscreenDemoActivity extends YouTubeFailureRecoveryActivity
        implements View.OnClickListener,

        YouTubePlayer.OnFullscreenListener {
//  private MyPlaybackEventListener myPlaybackEventListener;
    private static final int PORTRAIT_ORIENTATION = Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
            : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;

    private LinearLayout baseLayout;
    private YouTubePlayerView playerView;
    public YouTubePlayer player;
    private Button fullscreenButton;
    private CompoundButton checkbox;
    private View otherViews;

    private boolean fullscreen;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fullscreen_demo);
        baseLayout = (LinearLayout) findViewById(R.id.layout);
        playerView = (YouTubePlayerView) findViewById(R.id.player);
        fullscreenButton = (Button) findViewById(R.id.fullscreen_button);
        checkbox = (CompoundButton) findViewById(R.id.landscape_fullscreen_checkbox);
        otherViews = findViewById(R.id.other_views);
        playerView.initialize(DeveloperKey.DEVELOPER_KEY, this);

    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
            YouTubePlayer player, boolean wasRestored) {
        this.player = player;
        setControlsEnabled();
        // Specify that we want to handle fullscreen behavior ourselves.
        player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT);
        player.setOnFullscreenListener(this);
        if (!wasRestored) {
            player.cueVideo("avP5d16wEp0");
        }
        int controlFlags = player.getFullscreenControlFlags();
        setRequestedOrientation(PORTRAIT_ORIENTATION);
        controlFlags |= YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE;
        player.setFullscreenControlFlags(controlFlags);
        player.play();


    }

    @Override
    protected YouTubePlayer.Provider getYouTubePlayerProvider() {
        return playerView;
    }

    @Override
    public void onClick(View v) {
        player.setFullscreen(!fullscreen);
    }



    private void doLayout() {
        LinearLayout.LayoutParams playerParams = (LinearLayout.LayoutParams) playerView
                .getLayoutParams();
        if (fullscreen) {
            // When in fullscreen, the visibility of all other views than the
            // player should be set to
            // GONE and the player should be laid out across the whole screen.
            playerParams.width = LayoutParams.MATCH_PARENT;
            playerParams.height = LayoutParams.MATCH_PARENT;

            otherViews.setVisibility(View.GONE);
        } else {
            otherViews.setVisibility(View.VISIBLE);
            ViewGroup.LayoutParams otherViewsParams = otherViews
                    .getLayoutParams();
            if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
                playerParams.width = otherViewsParams.width = 0;
                playerParams.height = WRAP_CONTENT;
                otherViewsParams.height = MATCH_PARENT;
                playerParams.weight = 1;
                baseLayout.setOrientation(LinearLayout.HORIZONTAL);
            } else {
                playerParams.width = otherViewsParams.width = MATCH_PARENT;
                playerParams.height = WRAP_CONTENT;
                playerParams.weight = 0;
                otherViewsParams.height = 0;
                baseLayout.setOrientation(LinearLayout.VERTICAL);
            }
            setControlsEnabled();
        }
    }

    private void setControlsEnabled() {
        checkbox.setEnabled(player != null
                && getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
        fullscreenButton.setEnabled(player != null);
    }

    @Override
    public void onFullscreen(boolean isFullscreen) {
        fullscreen = isFullscreen;
        doLayout();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // System.out.println(getScreenOrientation());
        doLayout();
    }

    private final class MyPlaybackEventListener implements PlaybackEventListener {

          private void updateLog(String prompt){
        System.out.println(prompt);
          };

          @Override
          public void onBuffering(boolean arg0) {
           updateLog("onBuffering(): " + String.valueOf(arg0));
          }

          @Override
          public void onPaused() {

           updateLog("onPaused()");
          }

          @Override
          public void onPlaying() {
           updateLog("onPlaying()");

          }

          @Override
          public void onSeekTo(int arg0) {
           updateLog("onSeekTo(): " + String.valueOf(arg0));
          }

          @Override
          public void onStopped() {
              player.loadVideo("avP5d16wEp0");

              player.cueVideo("avP5d16wEp0");
              player.play();
           updateLog("onStopped()");
          }

         }

}

解决方案

I searched for that topic and I found that there is not an official way and won't be according to this page on Google code.

In it they propose that you create a player.

Hide the player.

Mute the player.

Call seekTo() with your videoId and optional offset.

Wait for state change to "playing".

Press pause.

Call seekTo(originalOffset, false).

Unmute the player.

Show the player. (or whatever).

It maybe doesn't do what you need but maybe you can change what you need to achieve your goal using this method.

这篇关于使用YouTube播放器API中后台播放YouTube视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆