2012-12-23 14 views
16

Sto utilizzando l'API YouTube Player di YouTube e voglio sovrapporre una vista su uno YouTubePlayerFragment per visualizzare informazioni contestuali e controlli sopra il video in riproduzione .Le viste sovrapposte sopra YouTubePlayerFragment o YouTubePlayerView nella gerarchia del layout fanno sì che la riproduzione si interrompa immediatamente

Sfortunatamente sembra che la riproduzione non funzioni correttamente in uno YouTubePlayerFragment o YouTubePlayerView ogni volta che c'è una o più viste impilate sopra il lettore nella gerarchia di layout. La riproduzione avviene per meno di mezzo secondo prima di fermarsi immediatamente.

Il problema può essere riprodotto utilizzando il seguente layout per il semplice PlayerFragment demo fornito con l'SDK:

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

Ho provato varie configurazioni di layout utilizzando sia FrameLayout e RelativeLayout ma il problema è sempre lo stesso . Mi rendo conto che questa API è stata rilasciata come "sperimentale", ma se si tratta di un problema noto è un blocco piuttosto importante per molte implementazioni. Qualcuno ha una buona soluzione o soluzione?

risposta

15

Jeff - funziona come progettato. Gli overlay su uno dei nostri giocatori di YouTube (incluso YouTube Player Android) non sono supportati. Quando viene rilevato un overlay, la riproduzione si interrompe e il registro contiene informazioni utili per il debug del problema. Supportiamo gli overlay di Action Bar, dai un'occhiata a questa demo per saperne di più: https://developers.google.com/youtube/android/player/sample-applications#Overlay_ActionBar_Demo.

+0

Grazie Jarek. Questo sembra qualcosa che dovrebbe essere menzionato in modo più prominente nella documentazione e forse essere gestito in modo più esplicito in fase di runtime. Posso visualizzare con successo un frammento di dialogo sul lettore e impostare il suo sfondo disegnabile trasparente per ottenere l'effetto desiderato (con un po 'più di sforzo), quindi non sono sicuro di cosa stia cercando di ottenere questa restrizione di progettazione. –

+0

Jeff - gli overlay sono attualmente contro il nostro ToS quindi la restrizione. Sono d'accordo sul fatto che dovremmo renderlo più prominente e stiamo lavorando alla creazione di aggiornamenti per coprirlo meglio. –

+0

@wjarek ToS speaking, è ok per visualizzare le visualizzazioni una volta che il player di YouTube è in pausa? – eveliotc

4

Il player di YouTube non consente la visualizzazione di alcuna vista. Semplicemente usando setVisibility (View.GONE) per tutte le viste lo si sovrappone.

+2

sì, va bene. ma non è un buon modo per far funzionare correttamente YouTubePlayer. –

0

È possibile impostare il tema del lettore su YouTubePlayer.PlayerStyle.CHROMELESS e quindi implementare i propri controlli di seguito.

Ho un problema in cui non riesco a trovare una buona risorsa su come reimplementare la barra di ricerca con un layout personalizzato.

+0

Anche con PlayerStyle.CHROMELESS ho lo stesso errore. – Borzh

3

Non è possibile aggiungere pulsanti come overlay sopra il giocatore, come specificato da Google, altrimenti il ​​giocatore si ferma:

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

Si noti che mentre i video stanno giocando, questa visione ha un minimo dimensione di 200x110 dp. Se rendi la visualizzazione più piccola, i video saranno automaticamente interrotti per . Inoltre, non è consentito sovrapporre la vista ad altre viste durante la riproduzione di un video.

Questa vista non supporta il riempimento. Per ottenere lo stesso effetto, avvolgere la vista in un altro ViewGroup o assegnargli i margini.

Il riempimento non è supportato anche su YouTubePlayer.

di sovrapporre la visualizzazione in video, mi consiglia di utilizzare ExoPlayer, Non è parte del SDK di Android, ma è consigliato da google e incluso in Android documentazione per gli sviluppatori:

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

Vale anche la pena ricordare che Exoplayer è utilizzato nell'applicazione YouTube.

+0

Salve, è possibile inserire il testo nella vista giocatore usando ExoPlayer? – Rajesh

0

Volla !! Ho uno scenario in cui questo problema stava arrivando nei dispositivi lollipop e sopra ed era a causa della barra di stato. Nascondo il problema della barra di stato risolto. Appena scritto come una risposta nel caso in cui il suo aiuta gli altri :)