Android youtube-api取消Activity中的FLAG_FULLSCREEN

标签 android youtube-api android-youtube-api

我已将我的应用程序设计为在全屏模式下工作。没有状态栏和操作栏是可见的。这假设是一个问题,因为每次使用 YoutubeAndroidPlayerAPI 从 youtube 加载视频时,状态栏都会出现。

我的 Activity :

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    overridePendingTransition(R.anim.activity_open_translate,R.anim.activity_close_scale);

    this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

    if(getActionBar()!=null) {

        ActionBar actionBar = getActionBar();
        actionBar.hide();
    }
    setContentView(R.layout.activity_fad_socios);
    ...
}
...
private void changeFragment(int index) {

    switch(index) {

        case 0:{
            getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new FADFragment(),"informacion").commit();
            break;
        }
    ...
}

我在我的 fragment 中引用 YoutubeAPI 的方式:

            fragmentManager = getActivity().getSupportFragmentManager();
            fragmentTransaction = fragmentManager.beginTransaction();

            fragment = new YouTubePlayerSupportFragment();
            fragmentTransaction.add(R.id.fragmentz, fragment);
            fragmentTransaction.commit();

                    portadaFrag.setVisibility(View.GONE);

                    if(buttonSelected == 0) {

                        ((FADSociosActivity) getActivity()).playingYoutube=true;

                        fragment.initialize(getActivity().getResources().getString(R.string.youKEY), new OnInitializedListener(){

                            @Override
                            public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) {

                                Log.e("fail","fail");
                            }

                            @Override
                            public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1, boolean arg2) {

                                youtubePlayer = arg1;

                                youtubePlayer.loadVideo("-D-MVgOvvOo");

                                youtubePlayer.setPlaybackEventListener(new PlaybackEventListener() {

                                    @Override
                                    public void onBuffering(boolean arg0) {

                                        try {
                                            ((FADSociosActivity) getActivity()).refreshWindow();
                                        }
                                        catch(Exception e) {}
                                    }

                                    @Override
                                    public void onPaused() {

                                        try {
                                            ((FADSociosActivity) getActivity()).playingYoutube=false;
                                            ((FADSociosActivity) getActivity()).refreshWindow();
                                        }
                                        catch(Exception e) {}
                                    }

                                    @Override
                                    public void onPlaying() {

                                        try {

                                            youtubePlayButton.setVisibility(View.GONE);
                                            ((FADSociosActivity) getActivity()).playingYoutube=true;
                                            ((FADSociosActivity) getActivity()).refreshWindow();
                                        }
                                        catch(Exception e) {}
                                    }

                                    @Override
                                    public void onSeekTo(int arg0) {

                                        try {
                                            ((FADSociosActivity) getActivity()).refreshWindow();
                                        }
                                        catch(Exception e) {}
                                    }

                                    @Override
                                    public void onStopped() {

                                        try {

                                            youtubePlayButton.setVisibility(View.VISIBLE);
                                            ((FADSociosActivity) getActivity()).playingYoutube=false;
                                            ((FADSociosActivity) getActivity()).refreshWindow();
                                        }
                                        catch(Exception e) {}
                                    }

                                });

我在第一个 Activity 中的 refreshWindow 方法:

public void refreshWindow() {

    try {

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
    }
    catch(Exception e) {

        e.printStackTrace();
    }
}

使用此方法无法在状态栏稍微倾斜后强制 Activity 再次进入全屏模式。无论如何,每次用户点击视频时, Activity 都会退出全屏模式。 YoutubePlayer-API 似乎覆盖了我的 FLAG_FULLSCREEN,我无法避免这一点。任何人都知道如何克服这个?提前致谢。

最佳答案

好吧,在初始化后设置标志 YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION 似乎可以解决问题 =)

关于Android youtube-api取消Activity中的FLAG_FULLSCREEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682255/

相关文章:

java - 如何从android中的值中选择数据

java - 为什么我的 ListView 也显示按钮和编辑文本?

python - 如何在 upload_video.py 中指定多行描述

Android YouTube 播放器 - 如何获取 channel 中的视频列表并选择一个播放?

android - 如何将从 GpsStatus 检索到的卫星数量链接到 LocationListener 记录的特定修复?

c# - vNext 类库中的目标 Android/iOS

ios - 嵌套函数上的两个循环导致索引超出范围

Youtube v3 API 视频语言

android-youtube-api - 获取 403 代码,对 v3 youtube 数据 api 进行未经身份验证的调用

android - 使用 YoutubePlayer.loadVideo 时出现异常