4

Am new in android development.Am trying to implement youtube Api. But in my XML file it show error "could not be instantiated: - com.google.android.youtube.player.YouTubePlayerView"

Here is My MAinActivity Code:-

public class MainActivity extends YouTubeBaseActivity {
Button b;
private YouTubePlayerView youtubeplayerview;
private YouTubePlayer.OnInitializedListener onInitializedListener;


@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.activity_main);

    youtubeplayerview=(YouTubePlayerView)findViewById(R.id.Youtube_view);
    onInitializedListener=new YouTubePlayer.OnInitializedListener(){
        @Override
        public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
            youTubePlayer.loadVideo("wvjqFy33HVA");
        }

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

        }
    };
    b=(Button)findViewById(R.id.button);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            youtubeplayerview.initialize("API KEY",onInitializedListener);
        }
    });
}
}

Here is my XML file Code:-

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

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="PLAY VEDIO"
    android:id="@+id/button"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

<com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="500dp"
    android:layout_height="500dp"
    android:id="@+id/Youtube_view"
    android:layout_alignParentTop="true"
    android:layout_above="@+id/button"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

Here is Error Screenshot

ajay
  • 53
  • 1
  • 7

2 Answers2

3

Did you add YouTube Android Player API to your library? Adding that fixed the issue for me..Try adding the same by following the steps given below :

1.Download YouTube Android Player API jar file from https://developers.google.com/youtube/android/player/downloads/

2.Extract the zip file, go to libs -> YouTubeAndroidPlayerApi.jar and copy it

3.Paste the jar file to /app/libs/ directory in android studio

Finally add compile files('libs/YouTubeAndroidPlayerApi.jar') to your app level build.gradle file

Sync,build and check if it works fine

varshaa raman
  • 46
  • 1
  • 6
-3

Did you generate api key for android youtube player? Link: https://console.developers.google.com

If yes, you must to change "API KEY " in this youtubeplayerview.initialize("API KEY",onInitializedListener); by your api key that you generated before.

Anyway, you can try to replace you class by this class with YoutubeDeveloperKey is the key you generated :

public class ActivityPlayYouTube extends YouTubeBaseActivity implements
        YouTubePlayer.OnInitializedListener {

    private YouTubePlayer YPlayer;
    private static final String YoutubeDeveloperKey = "YOUR_DEVELOPER_KEY_GOES_HERE";
    private static final int RECOVERY_DIALOG_REQUEST = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_playyoutube);

        YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
        youTubeView.initialize(YoutubeDeveloperKey, this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //getMenuInflater().inflate(R.menu.you_tube_api, menu);
        return true;
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider,
            YouTubeInitializationResult errorReason) {
        if (errorReason.isUserRecoverableError()) {
            errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
        } else {
            String errorMessage = String.format(
                    "There was an error initializing the YouTubePlayer",
                    errorReason.toString());
            Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == RECOVERY_DIALOG_REQUEST) {
            // Retry initialization if user performed a recovery action
            getYouTubePlayerProvider().initialize(YoutubeDeveloperKey, this);
        }
    }

    protected YouTubePlayer.Provider getYouTubePlayerProvider() {
        return (YouTubePlayerView) findViewById(R.id.youtube_view);
    }

    @Override
    public void onInitializationSuccess(Provider provider,
            YouTubePlayer player, boolean wasRestored) {
        if (!wasRestored) {
            YPlayer = player;
            /*
             * Now that this variable YPlayer is global you can access it
             * throughout the activity, and perform all the player actions like
             * play, pause and seeking to a position by code.
             */
            YPlayer.cueVideo("2zNSgSzhBfM");
        }
    }
}