@Override
 public void loginFailed() {
   mController.openLoginDialog();
 }
 @Override
 public void sessionTimedOut() {
   mController.performLogin(this);
 }
  @Override
  public void onInitializationSuccess(
      Provider provider, YouTubePlayer player, boolean wasRestored) {

    if (mModel.getVideoDesc(videoID) != null) {
      TextView discussionView = (TextView) findViewById(R.id.edx_sr_discussion);
      //    		discussionView.append(Html.fromHtml(msg.getTextBody()));
      //			TextView vidDesc = (TextView) findViewById(R.id.edx_sr_video_desc);
      discussionView.append(Html.fromHtml("<p>" + mModel.getVideoDesc(videoID) + "</p>"));
    }

    player.setPlaybackEventListener(
        new PlaybackEventListener() {
          public void onStopped() {}

          public void onSeekTo(int arg0) {
            if (roomNbr != null)
              mController.pushMessage2(EdXStudyRoomView.this, videoID + roomNbr, "SEEK", "" + arg0);
          }

          public void onPlaying() {
            if (roomNbr != null)
              mController.pushMessage2(EdXStudyRoomView.this, videoID + roomNbr, "PLAY", "");
          }

          public void onPaused() {
            if (roomNbr != null)
              mController.pushMessage2(EdXStudyRoomView.this, videoID + roomNbr, "PAUSE", "");
          }

          public void onBuffering(boolean arg0) {}
        });
    player.setPlayerStateChangeListener(
        new PlayerStateChangeListener() {
          public void onVideoStarted() {}

          public void onVideoEnded() {}

          public void onLoading() {}

          public void onLoaded(String arg0) {}

          public void onError(ErrorReason arg0) {}

          public void onAdStarted() {}
        });

    ytPlayer = player;
    // player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT);
    // player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
    // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

    if (!wasRestored) {
      // player.cueVideo("nCgQDjiotG0");
      // System.out.println("roomName=" + roomName);
      /*String vidId = roomName.split("[!]", 2)[0];
      if (vidId.startsWith("+"))
      	vidId = vidId.substring(1);*/
      player.cueVideo(videoID);
    }

    if (roomNbr != null) {
      poller =
          mController.startPolling2(
              this,
              videoID + roomNbr,
              new Callback<List<MsgPsgMessage>>() {
                public void callback(List<MsgPsgMessage> s) {
                  String selfRef = mModel.getSession();
                  for (MsgPsgMessage msg : s) {
                    if (msg.getMessageType() == MsgPsgMessageType.MESSAGE) {
                      if ("PLAY".equals(msg.getMessageHeader())) {
                        if (selfRef.equals(msg.getSenderRef())) continue;
                        // playClicked();
                        mController.setSkipMessage(msg.getMessageHeader(), msg.getTextBody());
                        ytPlayer.play();
                      } else if ("PAUSE".equals(msg.getMessageHeader())) {
                        if (selfRef.equals(msg.getSenderRef())) continue;
                        // pauseClicked();
                        mController.setSkipMessage(msg.getMessageHeader(), msg.getTextBody());
                        ytPlayer.pause();
                      } else if ("SEEK".equals(msg.getMessageHeader())) {
                        if (selfRef.equals(msg.getSenderRef())) continue;
                        // mediaPlayer.seekTo(Integer.parseInt(msg.getTextBody()));
                        mController.setSkipMessage(msg.getMessageHeader(), msg.getTextBody());
                        ytPlayer.seekToMillis(Integer.parseInt(msg.getTextBody()));
                      } else if ("TEXT".equals(msg.getMessageHeader())) {
                        //								String sender = msg.getSenderRef();
                        //								if(EdXController.ANDROID_ID.equals(msg.getSenderRef()))
                        //									sender = "me";
                        TextView discussionView = (TextView) findViewById(R.id.edx_sr_discussion);
                        discussionView.append(Html.fromHtml(msg.getTextBody()));
                        // discussionView.scrollTo(0, discussionView.getHeight());
                        Layout layout = discussionView.getLayout();
                        int scrollDelta =
                            layout.getLineBottom(discussionView.getLineCount() - 1)
                                - discussionView.getScrollY()
                                - discussionView.getHeight();
                        if (scrollDelta > 0) discussionView.scrollBy(0, scrollDelta);
                        //				        		discussionView.setText(discussionView.getText().toString() +
                        // "\n" + );
                      }

                    } else if (msg.getMessageType() == MsgPsgMessageType.AUDIO) {

                      // new Utils.AudioOut(msg.getBinaryBody());
                      if (pb != null) pb.queue(msg.getBinaryBody());
                    }
                  }
                }
              });
    }
  }