Видеото е поставено на пауза с грешка Неразрешено наслагване

Получавам следната грешка при възпроизвеждане на видео в режим на цял екран (само на цял екран). Скривам всички други компоненти в оформлението, когато премине на цял екран, но се казва, че android:id/statusBarBackground е изгледът, който причинява проблема. Как да контролирам това?

YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is obscured by android.view.View{16771a9d V.ED.... ........ 0,0-1920,75 #102002f android:id/statusBarBackground}. The view is inside the YouTubePlayerView, with the distance in px between each edge of the obscuring view and the YouTubePlayerView being: left: 0, top: 0, right: 0, bottom: 1005.. 

Моето оформление изглежда така:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/videoListLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="top"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:background="@drawable/heading" >

            <TextView
                android:id="@+id/topDisplayArea"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="@string/app_desc"
                android:textColor="@color/topDisplayAreaFG"
                android:textSize="18sp"
                android:textStyle="bold"
                android:typeface="serif" >
            </TextView>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_alignParentRight="true" >
                <ImageButton
                    android:id="@+id/mp_shareCommonButton"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="1dp"
                    android:layout_marginRight="1dp"
                    android:background="@drawable/widget_button"
                    android:contentDescription="Share"
                    android:cropToPadding="true"
                    android:src="@android:drawable/ic_menu_preferences" >
                </ImageButton>
            </LinearLayout>
        </RelativeLayout>

        <LinearLayout
            android:id="@+id/infoPanel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

            <ProgressBar
                android:id="@+id/retrievalProgressIndicator"
                style="?android:attr/progressBarStyle"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_gravity="center"
                android:indeterminate="true" />

            <TextView
                android:id="@+id/refreshContentLabel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="Connecting to server..."
                android:textColor="@color/topDisplayAreaFG"
                android:textSize="18sp"
                android:typeface="sans" >
            </TextView>
        </LinearLayout>


        <fragment
            class="VideosActivity$VideoListFragment"
            android:id="@+id/list_fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/video_box"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/close_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:src="@android:drawable/btn_dialog"
            android:onClick="onClickClose"/>

        <fragment
            class="VideosActivity$VideoFragment"
            android:id="@+id/video_fragment_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>

</merge>

Използвам FullScreenListener и във функцията onFullScreen скривам всички други елементи в оформлението с изключение на видеофрагмента.

@Override
    public void onFullscreen(boolean isFullscreen) {
        this.isFullscreen = isFullscreen;

        layout();
    }

Също така добавям следния флаг към видеоплейъра

player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT);

person Vikram Singh    schedule 26.07.2015    source източник
comment
Можете ли да разкажете малко повече за частта на цял екран? Какви API използвате?   -  person Sebastiano    schedule 26.07.2015
comment
Добавени са повече подробности във въпроса за API, които използвам.   -  person Vikram Singh    schedule 28.07.2015


Отговори (1)


Взето от документацията

FULLSCREEN_FLAG_CUSTOM_LAYOUT деактивира манипулатора за оформление на цял екран по подразбиране, което ви позволява ръчно да контролирате прехода към оформление на цял екран.

Както виждате, задаването на този флаг оставя на вас задачата да управлявате видимостта на елементите на потребителския интерфейс, по-специално тези, принадлежащи към системния потребителски интерфейс (лента на състоянието, лента за навигация).

Поради тази причина, ако не успеете да скриете лентата на състоянието, плейърът на YouTube ще открие, че над нея се показва изглед и следователно ще изпрати това предупреждение.


Можете да опитате с един от следните допълнителни флагове

FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE: причини плейърът автоматично да влиза в цял екран, когато устройството влезе в пейзажна ориентация.

FULLSCREEN_FLAG_CONTROL_ORIENTATION: активира автоматичен контрол на ориентацията.

FULLSCREEN_FLAG_CONTROL_SYSTEM_UI: активира автоматично управление на потребителския интерфейс на системата.

FULLSCREEN_FLAG_CUSTOM_LAYOUT: деактивира манипулаторът за оформление на цял екран по подразбиране, който ви позволява ръчно да контролирате прехода към оформление на цял екран.

или, ако наистина трябва да имате ръчен контрол над системния потребителски интерфейс, продължете да използвате персонализирания флаг за оформление и се уверете, че управлявате видимостта на елементите на потребителския интерфейс.

person Sebastiano    schedule 29.07.2015
comment
Благодаря ти. Сега скривам лентата на състоянието и тя работи. - person Vikram Singh; 29.07.2015
comment
Здравейте, имам подобен проблем. Бихте ли ми казали как да управлявам навигационната лента, докато плейърът е на цял екран? Моля, вижте въпроса ми на stackoverflow.com/questions/35909260/. - person Abbas; 11.03.2016
comment
имах подобен проблем. запазих FULLSCREEN_FLAG_CUSTOM_LAYOUT и приложих този отговор stackoverflow.com/a/33705740/4391398. Видеото вече се възпроизвежда безупречно на цял екран при промяна на ориентацията към пейзаж. благодаря Себастиано - person Clive Sargeant; 24.12.2016