Publicação de um fluxo na sessão
Quando o aplicativo se conectar à sessão do Vonage Video, queremos que ele transmita um fluxo de áudio e vídeo para a sessão, utilizando a câmera e o microfone:
- Adicione um
publisherpropriedade à classe MainActivity (após a declaração dasessionpropriedade):
private var publisher: Publisher? = null
A classe Publisher está definida no SDK do Android.
- Modificar o
onConnected()função de retorno de chamada no seuSessionListenerpara configurar e publicar a transmissão:
override fun onConnected(session: Session) {
Log.d(TAG, "onConnected: Connected to session: ${session.sessionId}")
publisher = Publisher.Builder(this@MainActivity).build().apply {
setPublisherListener(publisherListener)
renderer.setStyle(
BaseVideoRenderer.STYLE_VIDEO_SCALE,
BaseVideoRenderer.STYLE_VIDEO_FILL
)
}
// Add the publisher view to the UI
publisherView = publisher?.view
// Publish the stream to the session
session.publish(publisher)
}
O código acima utiliza Publisher.Builder() para instanciar um objeto Publisher. O construtor recebe um parâmetro: o contexto associado a este processo (embora possa ser diferente em um aplicativo de produção).
O Publisher.setPublisherListener() O método define o objeto que implementará a interface PublisherListener. Essa interface inclui métodos de retorno de chamada que são acionados em resposta a eventos relacionados ao editor.
Importante: O contexto utilizado depende do caso de uso específico. No entanto, geralmente é preferível que a sessão permaneça fora da Activity (por exemplo, entre atividades). Para Applications em produção, é mais prático usar o contexto do aplicativo em vez do contexto da atividade.
Em seguida, o código passa o objeto Publisher como parâmetro da função Session.publish() método. Esse método transmite um fluxo de áudio e vídeo para a sessão, utilizando a câmera e o microfone do dispositivo Android. (Observe que, em um dispositivo virtual Android, o SDK do Android utiliza um vídeo de teste ao transmitir um fluxo).
O objeto Publisher possui um getView() retorna um objeto View do Android. Essa view exibe o vídeo capturado pela câmera do dispositivo. O código adiciona essa view como uma subview da publisherView objeto.
- Para registrar eventos, adicione um
publisherListenerpropriedade para osessionListenerdoMainActivity:
private val publisherListener = object : PublisherKit.PublisherListener {
override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) {
Log.d(TAG, "onStreamCreated: Publisher Stream Created. Stream ID: ${stream.streamId}")
}
override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) {
Log.d(TAG, "onStreamDestroyed: Publisher Stream Destroyed. Stream ID: ${stream.streamId}")
}
override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) {
Log.e(TAG, "PublisherKit onError: ${opentokError.message}")
}
}
Observe que a classe `Publisher` estende a classe `PublisherKit` (também definida pelo SDK do Android). A classe `PublisherKit` é uma classe base que você pode usar para criar publicadores avançados (como aqueles que utilizam capturadores de vídeo ou renderizadores personalizados).
Isso implementa o PublisherListener métodos:
onStreamCreated(publisherKit, stream)— É chamado quando o editor inicia a transmissão para a sessão.onStreamDestroyed(publisherKit, stream)— É chamado quando o editor interrompe a transmissão para a sessão.onError(error)— É chamado quando o cliente não consegue publicar na sessão. UmOpentokErroro objeto é passado para o método.
Bate-papo por vídeo básico
Aprenda os conceitos básicos da plataforma Vonage Video API, incluindo como os usuários podem se comunicar por vídeo, voz e mensagens. Explore um fluxo básico da Vonage Video API.