private void stopStream() {

    if (stream != null) {
      View v = this.findViewById(android.R.id.content);
      R5VideoView videoView = (R5VideoView) v.findViewById(R.id.video);
      videoView.attachStream(null);
      stream.stop();

      stream = null;
    }
    setStreaming(false);
  }
  private void startStream() {

    // grab the main view where our video object resides
    View v = this.findViewById(android.R.id.content);

    v.setKeepScreenOn(true);

    // setup the stream with the user config settings
    stream =
        new R5Stream(
            new R5Connection(
                new R5Configuration(
                    R5StreamProtocol.RTSP,
                    streamParams.host,
                    streamParams.port,
                    streamParams.app,
                    2.0f)));

    // set log level to be informative
    stream.setLogLevel(R5Stream.LOG_LEVEL_INFO);

    // set up our listener
    stream.setListener(
        new R5ConnectionListener() {
          @Override
          public void onConnectionEvent(R5ConnectionEvent r5event) {
            // this is getting called from the network thread, so handle appropriately
            final R5ConnectionEvent event = r5event;

            runOnUiThread(
                new Runnable() {
                  @Override
                  public void run() {
                    Context context = getApplicationContext();
                    CharSequence text = event.message;
                    int duration = Toast.LENGTH_SHORT;

                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();
                  }
                });
          }
        });

    // associate the video object with the red5 SDK video view
    R5VideoView videoView = (R5VideoView) v.findViewById(R.id.video);
    // attach the stream
    videoView.attachStream(stream);
    // start the stream
    stream.play(streamParams.name);
    // update the state for the toggle button
    setStreaming(true);
  }