I keep getting following error- "There was a problem with network[400]".
Please refer the following code.
private void initializeYoutubeFragment() {
// in original code I am using my key here for sake of key safety I have replaced it
String apiKey = "MY_KEY";
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
YouTubePlayerSupportFragment youtubeFragment = YouTubePlayerSupportFragment.newInstance();
transaction.add(R.id.fl_video, youtubeFragment);
transaction.commitNow();
manager.executePendingTransactions();
youtubeFragment.initialize(apiKey, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.cuePlaylist("5xVh-7ywKpE");
youTubePlayer.setPlayerStateChangeListener(callback);
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
// no callback here
Log.e("TAG", "Fail");
}
});
}
Update 1 I also added YouTubePlayer.PlayerStateChangeListener to youtubeplayer instance in onInitializationSuccess method. It calls onLoading method then goes on to call onError(YouTubePlayer.ErrorReason). Heer ErrorReason.INTERNAL_ERROR which have no explanation at all even in docs
callback code
private YouTubePlayer.PlayerStateChangeListener callback = new YouTubePlayer.PlayerStateChangeListener() {
@Override
public void onLoading() {
Log.e("Tag", "loading");
}
@Override
public void onLoaded(String s) {
Log.e("Tag", "loaded");
}
@Override
public void onAdStarted() {
Log.e("Tag", "ad started");
}
@Override
public void onVideoStarted() {
Log.e("Tag", "Video Started");
}
@Override
public void onVideoEnded() {
Log.e("Tag", "video ended");
}
@Override
public void onError(YouTubePlayer.ErrorReason errorReason) {
Log.e("Tag", "Error");
}
};