web-dev-qa-db-ja.com

レイアウト階層でYouTubePlayerFragmentまたはYouTubePlayerViewの上にオーバーレイされたビューにより、再生がすぐに一時停止します

YouTube Android Player APIを使用しており、再生中の動画の上にコンテキスト情報とコントロールを表示するために、YouTubePlayerFragmentの上にビューをオーバーレイしたいと考えています。

残念ながら、レイアウト階層のプレーヤーの上に1つ以上のビューがスタックされている場合は常に、YouTubePlayerFragmentまたはYouTubePlayerViewのいずれかで再生が正しく機能しないようです。再生は、すぐに一時停止する前に0.5秒未満発生します。

この問題は、SDKに付属しているSimplePlayerFragmentデモの次のレイアウトを使用して再現できます。

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

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

  <TextView
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:textAppearance="@Android:style/TextAppearance.Small"
      Android:layout_alignParentTop="true"
      Android:text="@string/playerfragment_text"/>

</RelativeLayout>

FrameLayoutRelativeLayoutの両方を使用してさまざまなレイアウト構成を試しましたが、問題は常に同じです。このAPIは「実験的」としてリリースされていることを認識していますが、これが既知の問題である場合、多くの実装にとってかなり大きな障害になります。誰かが良い解決策や回避策を持っていますか?

16
Jeff Gilfelt

ジェフ-これは設計どおりに機能します。 YouTubeプレーヤー(YouTube Android Playerを含む)を含む)へのオーバーレイはサポートされていません。オーバーレイが検出されると、再生が停止し、ログに問題のデバッグに役立つ情報が含まれます。アクションバーオーバーレイをサポートします。詳細については、このデモをご覧ください: https://developers.google.com/youtube/Android/player/sample-applications#Overlay_ActionBar_Demo

16

Youtube Playerは、ビューのオーバーレイを許可しません。すべてのビューにsetVisibility(View.GONE)を使用するだけでオーバーレイされます。

4
BaDo

Googleが指定したように、プレーヤーの上にオーバーレイとしてボタンを追加することはできません。そうしないと、プレーヤーは停止します。

https://developers.google.com/youtube/Android/player/reference/com/google/Android/youtube/player/YouTubePlayerView

ビデオの再生中、このビューの最小サイズは200x110dpであることに注意してください。ビューをこれより小さくすると、ビデオの再生が自動的に停止します。また、ビデオの再生中にビューを他のビューとオーバーレイすることは許可されていません。

このビューはパディングをサポートしていません。同じ効果を得るには、ビューを別のViewGroupでラップするか、マージンを与えます。

パディングはYouTubePlayerでもサポートされていません。

ビデオにビューをオーバーレイするには、ExoPlayerを使用することをお勧めします。これはAndroid sdkの一部ではありません、しかしそれはグーグルによって推奨され、Android開発者向けドキュメントに含まれています:

http://google.github.io/ExoPlayer/

ExoplayerがYouTubeアプリケーションで使用されていることにも言及しておくとよいでしょう。

3
Renaud Boulard

プレーヤーのテーマをYouTubePlayer.PlayerStyle.CHROMELESSに設定してから、以下で独自のコントロールを実装できます。

カスタムレイアウトでシークバーを再実装する方法に関する適切なリソースが見つからないという問題があります。

0
wapples

ヴォッラ!!この問題がデバイスLollipop以降で発生し、ステータスバーが原因であるというシナリオが1つあります。解決したステータスバーの問題を非表示にします。それが他の人を助けるなら、答えとしてそれを書いただけです:)

0
Preethi Rao