YouTube播放器播放2秒钟并全屏停止

nir*_*216 4 android android-youtube-api

我目前面临两个主要问题,

  1. 我正在使用youtube播放器,当它全屏显示时,播放1-2秒并停止播放.

  2. 当我点击中间的"播放"按钮时,它会再次缓冲.即使灰色条填充到它的中心.

这些问题不是在纵向模式下发生的.

这是我的课,就像youtube api演示有点干扰

public class Video extends YouTubeFailureRecoveryActivity implements YouTubePlayer.OnFullscreenListener, Utils.OnGetUrlListener, View.OnClickListener {

    static int AUTO_PLAY_DELAY = 1000;

    static final int PORTRAIT_ORIENTATION = Build.VERSION.SDK_INT < 9
            ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
            : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;

    private LinearLayout mRootLayout;

    /**
     * * Youtube ***
     */
    YouTubePlayerView mPlayerView;
    YouTubePlayer mPlayer;
    boolean mIsFullscreen;
    String urlID;

    /**
     * * My ***
     */
    RelativeLayout mContainer;
    ImageView mBtPlay;
    boolean mIsNeedSetFlags;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Utils.getInstance().setActivity(this);

        setContentView(R.layout.video_main);
        mIsNeedSetFlags = true;



        mRootLayout = (LinearLayout) findViewById(R.id.video_root_layout);

       mContainer = (RelativeLayout) findViewById(R.id.container);

        mBtPlay = (ImageView) findViewById(R.id.video_play);
        mBtPlay.setVisibility(View.INVISIBLE);

        mPlayerView = (YouTubePlayerView) findViewById(R.id.player);

        Intent intent = getIntent();


        doLayout(); 
  }


    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
        mPlayer = player;

        player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT);
        player.setOnFullscreenListener(this);

        if (mIsNeedSetFlags) {
            mIsNeedSetFlags = false;
            int controlFlags = player.getFullscreenControlFlags();
            setRequestedOrientation(PORTRAIT_ORIENTATION);
            controlFlags |= YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE;
            player.setFullscreenControlFlags(controlFlags);
        }

        if (!wasRestored) {
            player.cueVideo(urlID);
        }
    }

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

    private void doLayout() {
        LinearLayout.LayoutParams playerParams = (LinearLayout.LayoutParams) mPlayerView.getLayoutParams();
        if (mIsFullscreen) {
            playerParams.width = LinearLayout.LayoutParams.MATCH_PARENT;
            playerParams.height = LinearLayout.LayoutParams.MATCH_PARENT;

            mParallaxScrollView.setVisibility(View.GONE);
        } else {
            mParallaxScrollView.setVisibility(View.VISIBLE);

            if (getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
                ViewGroup.LayoutParams otherViewsParams = mParallaxScrollView.getLayoutParams();
                playerParams.width = otherViewsParams.width = MATCH_PARENT;
                playerParams.height = WRAP_CONTENT;
                mRootLayout.setOrientation(LinearLayout.VERTICAL);
            }
        }
        mPlayerView.setLayoutParams(playerParams);
    }

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

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        doLayout();
    }

    @Override
    public void onGetUrlFinished(String videoUrl) {
        urlID = videoUrl;
        mBtPlay.setVisibility(View.VISIBLE);
        mBtPlay.setOnClickListener(this);
        mPlayerView.initialize(Utils.YOU_TUBE_DEV_KEY, this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.video_play:
                showPlayerAndPlay();
                break;
        }
    }


    private void showPlayerAndPlay() {
        mPlayerView.setVisibility(View.VISIBLE);
        mBtPlay.setVisibility(View.INVISIBLE);

        if (!mPlayer.isPlaying())
            new android.os.Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    mPlayer.play();
                }
            }, AUTO_PLAY_DELAY);
    }
}
Run Code Online (Sandbox Code Playgroud)

Seb*_*ano 9

YouTube不允许在其播放器视图之上叠加其他视图.

如果检查日志,您还会看到一条警告消息,指出了这个限制,以及有关哪个视图(其ID)和重叠区域的更多信息.