Kotlin

Conectando-se à sessão

Em seguida, vamos nos conectar à sessão do Vonage Video. É necessário fazer isso antes de poder publicar seu fluxo de áudio e vídeo na sessão ou visualizar os fluxos dos outros participantes.

  1. Adicione um session propriedade da classe MainActivity:
private var session: Session? = null

A classe Session está definida no SDK do Android. Ela representa uma sessão do Vonage Video e inclui métodos para interagir com a sessão.

  1. Para facilitar o registro em log, adicione um TAG propriedade no topo do MainActivity classe:
companion object {
    private const val TAG = "MainActivity"
}
  1. Amplie seu initializeSession() função que receba 3 parâmetros e inicialize a sessão, além de adicionar alguns registros simples:
private fun initializeSession(appId: String, sessionId: String, token: String) {
    Log.i(TAG, "appId: $appId")
    Log.i(TAG, "sessionId: $sessionId")
    Log.i(TAG, "token: $token")

    session = Session.Builder(this, appId, sessionId).build().apply {
        setSessionListener(sessionListener)
        connect(token)
    }
}

Este código utiliza o Session.Builder() para instanciar um objeto Session. O construtor recebe três parâmetros:

  • O contexto do aplicativo Android associado a este processo
  • O ID do aplicativo Vonage Video
  • O ID da sessão

O Session.Builder.build() O método retorna uma nova instância de Session.

O Session.setSessionListener() O método define o objeto que implementará a interface SessionListener. Essa interface inclui métodos de retorno de chamada que são acionados em resposta a eventos relacionados à sessão. (Vamos implementá-los nas próximas etapas).

O Session.connect() método do session O objeto conecta o aplicativo cliente à sessão do Vonage Video. É necessário estabelecer a conexão antes de enviar ou receber fluxos de áudio e vídeo na sessão (ou antes de interagir com a sessão de qualquer forma). O connect() O método recebe um parâmetro: o token de autenticação para que este cliente se conecte à sessão.

  1. Atualizar o uso de initializeSession() método que você alterou na etapa anterior, use as seguintes linhas de código:
initializeSession(VonageVideoConfig.APP_ID, VonageVideoConfig.SESSION_ID, VonageVideoConfig.TOKEN)
  1. A seguir, vamos criar o sessionListener propriedade. Adicione o código a seguir no início do arquivo MainActivity classe:
private val sessionListener = object : Session.SessionListener {
    override fun onConnected(session: Session) {
        Log.d(TAG, "onConnected: Connected to session: ${session.sessionId}")
    }

    override fun onDisconnected(session: Session) {
        Log.d(TAG, "onDisconnected: Disconnected from session: ${session.sessionId}")
    }

    override fun onStreamReceived(session: Session, stream: Stream) {
        Log.d(TAG, "onStreamReceived: New Stream Received ${stream.streamId} in session: ${session.sessionId}")
    }

    override fun onStreamDropped(session: Session, stream: Stream) {
        Log.d(TAG, "onStreamDropped: Stream Dropped: ${stream.streamId} in session: ${session.sessionId}")
    }

    override fun onError(session: Session, opentokError: OpentokError) {
        Log.e(TAG, "Session error: ${opentokError.message}")
    }
}
  • Quando o cliente se conecta à sessão, a implementação do SessionListener.onConnected(session) o método é chamado.
  • Quando o cliente se desconecta da sessão, a implementação do SessionListener.onDisconnected(session) o método é chamado.
  • Se o cliente não conseguir se conectar à sessão, a implementação do SessionListener.onError(session, error) o método é chamado.
  • Quando outro cliente publica um fluxo na sessão, a implementação do SessionListener.onStreamReceived(session, stream) o método é chamado.
  • Quando outro cliente interrompe a publicação de um fluxo na sessão, a implementação do SessionListener.onStreamDropped(session, stream) o método é chamado.

Por enquanto, o aplicativo exibe mensagens no console do depurador sempre que algum desses eventos ocorre.

Faça a depuração do seu aplicativo. Se o aplicativo se conectar com sucesso à sessão do Vonage Video, o SessionListener.onConnected(session) O método registra mensagens no console de depuração.

  1. Adicione os métodos abaixo ao MainActivity classe para notificar a sessão sobre os eventos do ciclo de vida da Activity:
override fun onPause() {
    super.onPause()
    session?.onPause()
}

override fun onResume() {
    super.onResume()
    session?.onResume()
}