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 Publisher publisher;
A classe Publisher está definida no SDK do Android.
- Modificar a implementação do
SessionListener.onConnected()método para incluir código para publicar um stream na sessão:
@Override
public void onConnected(Session session) {
Log.d(TAG, "onConnected: Connected to session: " + session.getSessionId());
publisher = new Publisher.Builder(MainActivity.this).build();
publisher.setPublisherListener(publisherListener);
publisher.getRenderer().setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL);
publisherViewContainer.addView(publisher.getView());
if (publisher.getView() instanceof GLSurfaceView) {
((GLSurfaceView) publisher.getView()).setZOrderOnTop(true);
}
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 publisherViewContainer objeto.
- Para registrar eventos, adicione um
publisherListenerpropriedade para osessionListenerdoMainActivity:
private PublisherKit.PublisherListener publisherListener = new PublisherKit.PublisherListener() {
@Override
public void onStreamCreated(PublisherKit publisherKit, Stream stream) {
Log.d(TAG, "onStreamCreated: Publisher Stream Created. Own stream " + stream.getStreamId());
}
@Override
public void onStreamDestroyed(PublisherKit publisherKit, Stream stream) {
Log.d(TAG, "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.getStreamId());
}
@Override
public void onError(PublisherKit publisherKit, OpentokError opentokError) {
Log.e(TAG, "PublisherKit onError: " + opentokError.getMessage());
}
};
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 ou renderizadores de vídeo 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.