webentwicklung-frage-antwort-db.com.de

Android YouTubePlayer mit nicht autorisiertem Overlay auf dem Player

Ich verwende YouTubePlayer (YouTube-API für Android) in einem Fragment. Ich blase ein LinearLayout mit dem YouTube-Player folgendermaßen auf:

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

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

... wo youTubePlayerContainer das aufgeblasene LinearLayout ist

Der Player wird korrekt erkannt, beginnt zu spielen und stoppt in einer Sekunde. Das Protokoll zeigt Folgendes:

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

Dies ist mein XML: (Kein FrameLayout darin)

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

Ich habe versucht, die Ränder ohne Erfolg zu ändern. Ich habe die offizielle Dokumentation gelesen, aber ohne Erfolg Zeigt an, dass das FrameLayout, das das Problem verursacht, ist: Android.widget.FrameLayout @ 4110d1f8 Aber mit einem solchen Verweis wird nicht identifiziert, was verweist

ist das jemandem passiert?

Ich freue mich über jede Hilfe.

Grüße

15
Sergio76

Konnten Sie dieses Problem lösen?

Ich hatte heute das gleiche Problem und für mich war der Fehler in den Protokollen:

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

Ich habe das behoben, indem ich die Auffüllung im YouTubePlayerView im Layout entfernt habe. Mein Layout sieht also so aus:

<com.google.Android.youtube.player.YouTubePlayerView
    Android:id="@+id/video_player"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="#000" />
15
Bonton255

Ich hatte den gleichen fehler Obwohl ich die XML-Änderungen vorgenommen habe, wurde der Fehler weiterhin angezeigt:

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

Nachdem ich den Fullscreen eingestellt habe, hat es perfekt funktioniert

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

Hoffe, es wird anderen helfen.

4
Igor Fridman

Das Problem ist nur das Layout, der YouTube Player lässt keine Sicht darauf zu, weder unsichtbar noch transparent.

Um dies auf Ihrem Gerät sichtbar zu machen, aktivieren Sie die Layoutgrenzen in der Entwickleroption (Warnung mit paddings und margins).

Versuchen Sie, den Code anderer Ansichten in Ihrem Layout auszukommentieren, und testen Sie dies bitte erneut.

4
lucasddaniel

Youtube Player herauszufinden, einige Ansichten überlagern es. Entfernen Sie einfach diese Ansicht oder setVisible (View.GONE) für sie. Bitte überprüfen Sie diesen Link für weitere Informationen Lösung

2
BaDo

Der Demo-Code für die Android-API verwendet dieses Layout für die Fragment-Demo. Siehe diese Seite: 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>

Sie müssen alle Füllattribute in der Videoansicht entfernen.

Falsch:

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

Recht:

   <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>
1
Shiva
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:id="@+id/id_base_layout"
Android:fitsSystemWindows="true"
Android:layout_height="match_parent"
Android:background="#000000">

<com.google.Android.youtube.player.YouTubePlayerView
    Android:id="@+id/youtube_view"
    Android:layout_width="match_parent"
    Android:layout_centerInParent="true"
    Android:layout_height="wrap_content"  />

1.add fitSystemWindows. 2.getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

0
HongSec Park