private void attachSubscriberView(Subscriber subscriber) {
   RelativeLayout.LayoutParams layoutParams =
       new RelativeLayout.LayoutParams(
           getResources().getDisplayMetrics().widthPixels,
           getResources().getDisplayMetrics().heightPixels);
   mSubscriberViewContainer.removeView(mSubscriber.getView());
   mSubscriberViewContainer.addView(mSubscriber.getView(), layoutParams);
   subscriber.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL);
 }
 private void unsubscribeFromStream(Stream stream) {
   mStreams.remove(stream);
   if (mSubscriber.getStream().getStreamId().equals(stream.getStreamId())) {
     mSubscriberViewContainer.removeView(mSubscriber.getView());
     mSubscriber = null;
     if (!mStreams.isEmpty()) {
       subscribeToStream(mStreams.get(0));
     }
   }
 }
        @Override
        public void onVideoDataReceived(SubscriberKit subscriber) {

          mSubscriber.setStyle(
              BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL);
          ViewGroup frame = mCallback.getSubscribtionFrame();
          frame.removeAllViews();
          RelativeLayout.LayoutParams params =
              new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
          frame.removeAllViews();
          View subscriberView = mSubscriber.getView();
          frame.removeView(subscriberView);
          frame.addView(subscriberView, params);
        }
  private void subscribeToStream(Stream stream) {
    Log.d(LOGTAG, "subscribing to stream");
    mSubscriber = new Subscriber(this, stream);
    CircleVideoRenderer circleVideoRenderer = new CircleVideoRenderer(getApplicationContext());
    mSubscriber.setRenderer(circleVideoRenderer);
    mSubscriber.setVideoListener(this);
    mSubscriber.setSubscribeToAudio(true);
    mSubscriber.setSubscribeToVideo(true);
    mSession.subscribe(mSubscriber);

    if (mSubscriber.getSubscribeToVideo()) {
      // start loading spinning
      mLoadingSub.setVisibility(View.VISIBLE);
    }

    Log.d(LOGTAG, "leaving subscribing to stream");
  }
 @Override
 public void onStreamReceived(Session session, Stream stream) {
   Log.v(TAG, "Received stream from session " + session.getSessionId() + ": " + stream.getName());
   Log.v(TAG, "Starting to receive video from session " + session.getSessionId());
   videoInSubscriber = new Subscriber(context, stream);
   getSession().subscribe(videoInSubscriber);
   videoInViewGroup.addView(videoInSubscriber.getView());
 }
  @Override
  public void onDisconnected(Session session) {
    Log.i(LOGTAG, "Disconnected from the session.");
    if (mPublisher != null) {
      // mPublisherViewContainer.removeView(mPublisher.getView());
    }

    if (mSubscriber != null) {
      mSubscriberViewContainer.removeView(mSubscriber.getView());
    }

    mPublisher = null;
    mSubscriber = null;
    mStreams.clear();
    mSession = null;
  }
 @Override
 public void onStreamReceived(Session session, Stream stream) {
   mSubscriber = new Subscriber(mContext, stream);
   mSubscriber.setVideoListener(mVideoListener);
   mSession.subscribe(mSubscriber);
 }