user2641518
user2641518

Reputation: 31

Android YouTube API access player from onClickListener

I'm following this tutorial to set up a custom YouTube player via YouTube API: http://www.techrepublic.com/blog/android-app-builder/using-googles-youtube-api-in-your-android-apps/

Here's the code for loading a pre-set YouTube video:

import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubePlayer.Provider;

import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

    static private final String DEVELOPER_KEY = "mykey";
    static private final String VIDEO = "Yc8YrVc47TI";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
        youTubeView.initialize(DEVELOPER_KEY, this);
    }

    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult error) {
        Toast.makeText(this, "Oh no! "+error.toString(), Toast.LENGTH_LONG).show();
    }

    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
        player.loadVideo(VIDEO);
    }


}

Now I'm trying to load a different YouTube video by clicking a button. So I setup an onClickListener for my button1 and try to access the YouTube player, but it won't work.

public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

    static private final String DEVELOPER_KEY = "mykey";
    static private final String VIDEO = "Yc8YrVc47TI";
    Button button1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
        youTubeView.initialize(DEVELOPER_KEY, this);

        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {   

                        youTubeView.loadVideo("Erd2k6EKxCQ");

                    }
        });
    }

    @Override
    public void onInitializationFailure(Provider provider, YouTubeInitializationResult error) {
        Toast.makeText(this, "Oh no! "+error.toString(), Toast.LENGTH_LONG).show();
    }

    @Override
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
        player.loadVideo(VIDEO);
    }


}

How do I load a specific video from button1's onClickListener to the YouTubePlayer player.component?

Upvotes: 1

Views: 3309

Answers (2)

saigopi.me
saigopi.me

Reputation: 14918

public class Community extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener,View.OnClickListener{

    final static String youtube_key = " you key ";
    YouTubePlayerView youTubePlayerView;
    YouTubePlayer.OnInitializedListener onInitializedListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_community);

        youTubePlayerView = (YouTubePlayerView) findViewById(R.id.home_community_youtubeview);

        youTubePlayerView.initialize(youtube_key,this);


    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
       youTubePlayer.loadVideo("vk1Rk5AaDO4");
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

    }

    @Override
    public void onClick(View view) {

    }
}

Upvotes: 1

Kelsey
Kelsey

Reputation: 483

You need to create a new activity to extend the YouTubePlayerView Context. This is what my activity looks like, but you need to create an intent from main to call it. IE this is a different class than main.

public class Beat extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener, OnClickListener{
    static private final String DEVELOPER_KEY = "your key here";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.beat);
        // changes to xml file named beat


        // initializes the video

         YouTubePlayerView yt2 = (YouTubePlayerView)findViewById(R.id.youtube_view2);
         yt2.initialize(DEVELOPER_KEY, this);

        setupActionBar();
    }
    public void onInitializationSuccess(Provider provider, YouTubePlayer player,
            boolean wasRestored) {
                          player.loadVideo(Main.VIDEO[0]);
                   } 

Upvotes: 0

Related Questions