Search code examples
androidyoutube-apiandroid-youtube-api

YouTubePlayer api issue


I play video in MainActivityand video is playig fine. While playing video, if I open the same activity another time and come back to previous MainActivity youtube progressbar keeps turning and nothing happens. I read the documentation and couldn't find anything related this problem. Indeed, the documentation is very old (updated in 2015), and YouTubeAndroidPlayerApi library was updated in 2017. Guide me to right direction.

MainActivity.java

public class MainActivity extends YouTubeBaseActivity
    implements YouTubePlayer.OnInitializedListener {

private String YOUTUBE_API_KEY = "api_key";
private YouTubePlayerView youtubePlayerView;

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_main);
    youtubePlayerView = findViewById(R.id.youtubePlayer);
    youtubePlayerView.initialize(YOUTUBE_API_KEY, this);

}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
    Log.w("youtube_activity", "onInitialization success");
    youTubePlayer.loadVideo("0KSOMA3QBU0");
}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    Toast.makeText(this, "Initialization failure", Toast.LENGTH_SHORT);
}

public void onClick(View view) {
    startActivity(new Intent(this, MainActivity.class));
}
}

layout xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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/youtubePlayer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
   </com.google.android.youtube.player.YouTubePlayerView>
   <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="onClick"
        android:text="Button" />
</LinearLayout>

enter image description here


Solution

  • Found solution with releasing YouTubePlayer when going to another youtubeplayeractivity. When came back to previous youtubeplayeractivity reninitialized YouTubePlayerView.

     public void onClick(View view) {
        youTubePlayer.release();
        startActivity(new Intent(this, MainActivity.class));
    }
    
    @Override
    protected void onRestart() {
        super.onRestart();
        youtubePlayerView.initialize(YOUTUBE_API_KEY, this);
    }