web-dev-qa-db-ja.com

Androidプレーヤーの上に無許可のオーバーレイが表示されたYouTubePlayer

私はFragment内でYouTubePlayer(AndroidのYouTube API)を使用しています。この方法で、YouTubeプレーヤーでLinearLayoutを膨らませています。

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が次のとおりであることを示しています。

彼がこれをした誰かに?

どんな助けにも感謝します。

よろしく

18
Sergio76

この問題を解決できましたか?

私は今日同じ問題に直面しました、そして私にとってログのエラーは:

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

同じエラーが発生しました。 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);

それが他の人を助けることを願っています。

5
Igor Fridman

問題はレイアウト、YouTube Playerは、非表示でも透明でも、ビューがその上にとどまることを許可しません。

これをデバイスで表示するには、開発者オプションでレイアウト境界を有効にします(paddingsおよびmarginsで警告)

レイアウト上の他のビューのコードをコメント化して、これをもう一度テストしてみてください。

5
lucasddaniel

Youtubeプレーヤーは、いくつかのビューがそれにオーバーレイしていることを確認します。それらのビューまたはsetVisible(View.GONE)を削除するだけです。詳細については、このリンクを確認してください ソリューション

2
BaDo

Android APIのデモコードは、フラグメントデモにこのレイアウトを使用します。アイデアを実現できるかもしれません。このページを参照してください。 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>

ビデオビューでパディング属性を削除する必要があります。

違う:

   <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>
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. fitSystemWindowsを追加します。 2.getWindow()。addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

0
HongSec Park