Android YouTubePlayer с несанкционированным наложением поверх проигрывателя

Я использую YouTubePlayer (YouTube API для Android) внутри фрагмента. Я раздуваю LinearLayout с помощью YouTube Player следующим образом:

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

                    player = new YouTubePlayerSupportFragment();
                    fragmentTransaction.add(R.id.youTubePlayerContainer, player); 
                    fragmentTransaction.commit();

... Где youTubePlayerContainer — это раздутый LinearLayout

Плеер определяется корректно, начинает играть и через секунду останавливается. Журнал показывает следующее:

YouTube video playback stopped due to unauthorized overlay on top of player. 
The YouTubePlayerView is obscured by android.widget.FrameLayout@4110d1f8. 
YouTubePlayerView is completely covered, with the distance in px between each edge of the obscuring view and the YouTubePlayerView being: left: 484, top: 100, right: 100, bottom: 170..

Это мой XML: (внутри него нет FrameLayout)

 <LinearLayout
        android:id="@+id/curtain"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/withApi"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <LinearLayout
                android:id="@+id/youTubePlayerContainer"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_gravity="center"
                android:layout_margin="30dp"
                android:layout_weight="1"
                android:orientation="vertical" >
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="3dp"
                android:background="@color/trans_popUp"
                android:padding="3dp" >

                <TextView
                    android:id="@+id/textYouTubeVisor"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Title..."
                    android:textColor="@color/white" />
            </LinearLayout>
        </LinearLayout>

Я попытался изменить поля без успеха. Я прочитал официальную документацию, но безуспешно. Указывает, что FrameLayout, вызывающий проблему: android.widget.FrameLayout @ 4110d1f8 Но с такой ссылкой не определить, на что ссылается

с кем у него это случилось?

Я ценю любую помощь.

С уважением


person Sergio76    schedule 17.04.2013    source источник
comment
Проигрыватель разработан таким образом, что вы не можете поместить что-либо поверх содержимого или элементов управления. Поскольку вы не включаете проигрыватель в свой макет, я могу только предположить, что макет появляется над видео, а не под ним. Ты видишь свой титул... во время игры?   -  person Les Vogel - Google DevRel    schedule 20.04.2013
comment
Вы решили проблему? Пожалуйста, дайте мне знать, я застрял здесь :(   -  person Reyjohn    schedule 15.09.2013
comment
@Reyjhon Я не смог решить эту проблему. Если найду решение, объясню. Если вы найдете один, я был бы признателен, если бы вы сказали мне. С Уважением   -  person Sergio76    schedule 18.09.2013
comment
Вы нашли какое-нибудь решение для этого, так как я тоже застрял здесь :(   -  person Prateek218    schedule 04.07.2018
comment
Онs not working for debug apk but when i generated signed apk it работает нормально.   -  person varotariya vajsi    schedule 22.01.2020


Ответы (7)


Я столкнулся с той же проблемой сегодня, и для меня ошибка в журналах была:

W/YouTubeAndroidPlayerAPI﹕ YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is not contained inside its ancestor com.google.android.youtube.player.YouTubePlayerView{42686bc8 V.E..... ........ 0,0-1200,675 #7f0a00a0 app:id/video_player}. The distances between the ancestor's edges and that of the YouTubePlayerView is: left: -10, top: -10, right: -10, bottom: -10 (these should all be positive).

Я исправил это, удалив отступы в YouTubePlayerView в макете. Итак, мой макет выглядит так:

<com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/video_player"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#000" />
person Bonton255    schedule 16.04.2015
comment
Это решило мою проблему, большое спасибо, что поделились ею! - person Adrian Olar; 24.05.2015
comment
Помог и мне. Дополнительная информация - ошибка возникала и при прокрутке страницы, на которой находится YouTubePlayerView. Когда YouTubePlayerView становится невидимым (в случае mt из-за прокрутки активности), видео останавливается с этой ошибкой - person user2924714; 27.04.2016
comment
Я использую макет кадра вместо проигрывателя YouTube. Это не работает для меня - person syedjibharat; 20.03.2018
comment
для подписанного apk работает без каких-либо изменений - person varotariya vajsi; 22.01.2020

У меня была такая же ошибка. Хотя я внес изменения в XML, я продолжал получать сообщение об ошибке:

 YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is obscured by android.view.View{59fa6ce V.ED..... ........ 0,0-1440,84 #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: 2308..

После того, как я установил ПОЛНЫЙ ЭКРАН, все заработало идеально

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

Надеюсь, это поможет другим.

person Igor Fridman    schedule 04.09.2017
comment
Ага помогло! :) :Д - person Vivek Solanki; 23.12.2017

Проблема только с макетом, YouTube Player не позволяет никакому виду оставаться над ним, ни невидимому, ни прозрачному.

Чтобы сделать это видимым на вашем устройстве, включите границы макета в опции разработчика (предупреждение с paddings и margins).

Попробуйте закомментировать код других представлений в своем макете и проверьте это снова, пожалуйста.

person lucasddaniel    schedule 08.12.2013


Youtube Player обнаруживает, что некоторые просмотры накладываются на него. Просто удалите эти представления или установите для нихVisible(View.GONE). Пожалуйста, проверьте эту ссылку для получения дополнительной информации.

person BaDo    schedule 11.02.2014

Вы должны удалить любой атрибут заполнения в представлении «Видео».

Неправильный:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >

   <com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/youtube_player"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    **android:padding="10dp"** />

    </LinearLayout>

Верно:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/youtube_player"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     />

    </LinearLayout>
person Shiva    schedule 28.09.2015

Я столкнулся с той же проблемой при воспроизведении видео в youtubeplayer.

когда я добавляю эту строку... это работает для меня

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
person jyoti solanki    schedule 21.07.2020