2014-04-11 12 views
5

Używam api odtwarzacza YouTube do odtwarzania filmów z YouTube w mojej aplikacji. Rozpoczęcie odtwarzania wideo i wstrzymanie po 1-2 sekundachWstrzymywanie filmu youtube po 1-2 sekundach

Utworzono Fragment wideo i ViewGroup. Następnie tworzę wideo z youtobe.

VideoFragment

public static final class VideoFragment extends YouTubePlayerSupportFragment implements 
     OnInitializedListener 
{ 

    private YouTubePlayer player; 
    private String videoId; 

    public static VideoFragment newInstance() 
    { 
     return new VideoFragment(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     initialize(Constants.DEVELOPER_KEY, this); 
    } 

    @Override 
    public void onDestroy() 
    { 
     if (player != null) 
     { 
      player.release(); 
     } 
     super.onDestroy(); 
    } 

    public void setVideoId(String videoId) 
    { 
     if (videoId != null && !videoId.equals(this.videoId)) 
     { 
      this.videoId = videoId; 
      if (player != null) 
      { 
       player.cueVideo(videoId); 
      } 
     } 
    } 

    public void pause() 
    { 
     if (player != null) 
     { 
      player.pause(); 
     } 
    } 

    @Override 
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, 
      boolean restored) 
    { 
     this.player = player; 
     if (!restored && videoId != null) 
     { 
      player.cueVideo(videoId); 
     } 
    } 

    @Override 
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) 
    { 
     this.player = null; 
    } 

} 

Funkcja tworzenia Youtobe videoview

private ViewGroup createYouTubePlayer(final VideoData data, final FrameLayout youTubePlayer) 
{ 

    youTubePlayer.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
      FragmentManager fm = mActivity.getSupportFragmentManager(); 

      if (v.getId() == mCurrentYouTubePlayer) 
      { 
       return; 
      } 

      VideoFragment fragment = (VideoFragment) fm.findFragmentById(mCurrentYouTubePlayer); 
      if (fragment == null) 
      { 
       fragment = VideoFragment.newInstance(); 
       fragment.setVideoId(data.srcPath); 

       fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit(); 
       mCurrentYouTubePlayer = v.getId(); 
      } 
      else 
      { 
       fm.beginTransaction().remove(fragment).commit(); 

       fragment = VideoFragment.newInstance(); 
       fragment.setVideoId(data.srcPath); 
       fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit(); 
       mCurrentYouTubePlayer = v.getId(); 
      } 
     } 
    }); 



    return youTubePlayer; 
} 
+3

A pytanie brzmi ...? –

+0

Czy chcesz wstrzymać go po 2 sekundach? Czy pauzowanie jest rzeczywistym problemem i nie chcesz tego? – tasomaniac

+0

Przerywanie to rzeczywisty problem. – user3524002

Odpowiedz

0

Problemem może być fakt, że istnieje jakiś przedmiot powyżej com.google.android.youtube.player.YouTubePlayerView lub film ma wyściółkę Właściwość

6

Nie można dodawać przycisków jako nakładek nad odtwarzaczem zgodnie z opisem Google, w przeciwnym razie odtwarzacz zatrzyma się:

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

pamiętać, że filmy są gry, pogląd ten ma minimalny rozmiar 200x110 dp. Jeśli zmniejszysz widok, filmy automatycznie przestaną być odtwarzane. Poza tym nie można nakładać widoku z innymi widokami podczas odtwarzania wideo.

Ten widok nie obsługuje dopełnienia. Aby uzyskać ten sam efekt, zawiń widok w innej grupie ViewGroup lub nadaj jej marginesy.

Wypełnienie nie jest również obsługiwane w odtwarzaczu YouTube.

Aby nałożyć swój pogląd na filmie, będę zalecamy używanie ExoPlayer, To nie jest częścią Android SDK, ale jest to zalecane przez google i zawarte w android dokumentacji programu:

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

Exoplayer pozwala na przesyłanie strumieniowe wszelkiego rodzaju filmów, nie tylko Youtubes.

Warto również wspomnieć, że Exoplayer jest używany w aplikacji youtube.

+0

uratowałeś mi życie dzięki bardzo <3 –

Powiązane problemy