Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Multiple YouTube Videos in Activity

I am trying to have two YouTubePlayerViews on top of each other. They both show up, but only one seems to cue any videos. The second one (youTubeView2) is just black. No errors. Any idea what I am doing wrong?

JSONObject data;
JSONArray array;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playerview_demo);

YouTubePlayerView youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
youTubeView.initialize(DeveloperKey.DEVELOPER_KEY, this);
YouTubePlayerView youTubeView2 = (YouTubePlayerView) findViewById(R.id.youtube_view2);
youTubeView2.initialize(DeveloperKey.DEVELOPER_KEY, this);



//JSONObject json = getJSONfromURL("http://gdata.youtube.com/feeds/api/users/rhettandlink2/uploads?v=2&alt=jsonc");

try{
    JSONObject json = new RetreiveFeedTask().execute().get();
    data = json.getJSONObject("data");
    array = data.getJSONArray("items");
    //Log.d("num vids", ""+id[1].toString());
    for (int i = 0; i < array.length(); i++) {
        final JSONObject item = array.getJSONObject(i);
        final JSONObject player = item.getJSONObject("player");
        final String url = player.getString("default");
        // The url is that of the video to be played
        //Log.d("GMM Videos", url.toString());


        final String id = item.getString("id");


    }}
catch(JSONException e) {
    Log.e("GMM Videos", "Error parsing data "+e.toString());
 } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  } catch (ExecutionException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }



}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
  boolean wasRestored) {
if (!wasRestored) {
    List<String> myList = new ArrayList<String>();
    try{
    for (int i = 0; i < array.length(); i++) {
        final JSONObject item = array.getJSONObject(i);
        final JSONObject jplayer = item.getJSONObject("player");
        final String url = jplayer.getString("default");
        // The url is that of the video to be played
        //Log.d("GMM Videos", url.toString());


        final String id = item.getString("id");
        //allVideos[i] = player.cueVideo(id);
        myList.add(id);

    }}
    catch(JSONException e) {
        Log.e("GMM Videos", "Error parsing data "+e.toString());
   }



  player.cueVideos(myList);
}
}
like image 911
Eric Cochran Avatar asked Dec 20 '22 04:12

Eric Cochran


1 Answers

My understanding is that this is the intended behavior. (It may or may not have something to do with limitations associated with hardware accelerated video playback.) What you're seeing is the YouTube Android Player SDK enforcing a one-video-at-a-time limitation.

like image 129
Jeff Posnick Avatar answered Dec 28 '22 05:12

Jeff Posnick