Подтвердить что ты не робот

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 [email protected] 
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: (No 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 Но с такой ссылкой не идентифицируется, что относится к

кому он это сделал?

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

Привет

4b9b3361

Ответ 1

Вы могли решить эту проблему?

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

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 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" />

Ответ 2

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

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

Попробуйте прокомментировать код других просмотров на вашем макете и протестируйте его еще раз.

Ответ 3

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

Ответ 4

Демо-код для Android API использует этот макет для демонстрации Fragment, возможно, это может получить идеи. Смотрите эту страницу: https://developers.google.com/youtube/android/player/

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

  <TextView
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:textAppearance="@android:style/TextAppearance.Small"
      android:gravity="center"
      android:text="@string/playerfragment_text"/>

  <fragment
      android:name="com.google.android.youtube.player.YouTubePlayerFragment"
      android:id="@+id/youtube_fragment"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>
</LinearLayout>

Ответ 5

Вам нужно удалить любой атрибут дополнения в виде видео.

Неправильно:

   <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>

Ответ 6

У меня была такая же ошибка. Хотя я сделал изменения 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..

После того, как я установил FULLSCREEN, он работал отлично

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

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