private void initQBRTCClient() { rtcClient = QBRTCClient.getInstance(this); // Add signalling manager QBChatService.getInstance() .getVideoChatWebRTCSignalingManager() .addSignalingManagerListener( new QBVideoChatSignalingManagerListener() { @Override public void signalingCreated(QBSignaling qbSignaling, boolean createdLocally) { if (!createdLocally) { rtcClient.addSignaling((QBWebRTCSignaling) qbSignaling); } } }); rtcClient.setCameraErrorHendler( new VideoCapturerAndroid.CameraErrorHandler() { @Override public void onCameraError(final String s) { CallActivity.this.runOnUiThread( new Runnable() { @Override public void run() { Toaster.longToast(s); } }); } }); // Configure // QBRTCConfig.setMaxOpponentsCount(6); QBRTCConfig.setDisconnectTime(30); QBRTCConfig.setAnswerTimeInterval(30l); QBRTCConfig.setStatsReportInterval(60); QBRTCConfig.setDebugEnabled(true); // Add activity as callback to RTCClient rtcClient.addSessionCallbacksListener(this); // Start mange QBRTCSessions according to VideoCall parser's callbacks rtcClient.prepareToProcessCalls(); QBChatService.getInstance() .addConnectionListener( new AbstractConnectionListener() { @Override public void connectionClosedOnError(Exception e) { showNotificationPopUp(R.string.connection_was_lost, true); } @Override public void reconnectionSuccessful() { showNotificationPopUp(R.string.connection_was_lost, false); } @Override public void reconnectingIn(int seconds) { Log.i(TAG, "reconnectingIn " + seconds); } }); }