Suscribirse a otros flujos de clientes
Queremos que los clientes puedan suscríbase a para ver las transmisiones de otros clientes en la sesión:
- Añade un
subscribera la clase MainActivity (después de la declaración de la propiedadpublisherpropiedad):
private Subscriber subscriber;
La clase `Subscriber` está definida en el SDK de Android. Define un objeto que utiliza un cliente para suscribirse a (visualizar) un flujo publicado por otro cliente.
- Modificar la aplicación del
onStreamReceived(session, stream)(uno de los callbacks de SessionListener) para incluir código para suscribirse a los streams de otros clientes la sesión:
@Override
public void onStreamReceived(Session session, Stream stream) {
Log.d(TAG, "onStreamReceived: New Stream Received " + stream.getStreamId() + " in session: " + session.getSessionId());
if (subscriber == null) {
subscriber = new Subscriber.Builder(MainActivity.this, stream).build();
subscriber.getRenderer().setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL);
subscriber.setSubscriberListener(subscriberListener);
session.subscribe(subscriber);
subscriberViewContainer.addView(subscriber.getView());
}
}
- Para registrar eventos, añade
subscriberListenerpropiedad abajosessionListenerde laMainActivity:
SubscriberKit.SubscriberListener subscriberListener = new SubscriberKit.SubscriberListener() {
@Override
public void onConnected(SubscriberKit subscriberKit) {
Log.d(TAG, "onConnected: Subscriber connected. Stream: " + subscriberKit.getStream().getStreamId());
}
@Override
public void onDisconnected(SubscriberKit subscriberKit) {
Log.d(TAG, "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.getStream().getStreamId());
}
@Override
public void onError(SubscriberKit subscriberKit, OpentokError opentokError) {
Log.e(TAG, "SubscriberKit onError: " + opentokError.getMessage());
}
};
Cuando otro cliente publica un flujo en una sesión, se llama a este método y se le pasa un objeto Stream. La clase Stream está definida en el SDK de Android, y representa un flujo de audio-vídeo en la sesión.
El código inicializa una instancia de la clase «Subscriber», definida en el SDK de Android. El Subscriber.Builder() El constructor toma dos parámetros:
- El contexto de la aplicación de Android asociado a este proceso.
- El objeto Stream (correspondiente al flujo que deseas visualizar)
El Session.subscribe(subscriber) El método se suscribe al flujo que se ha recibido.
subscriberViewContainer.addView(subscriber.getView()) coloca en la pantalla la vista del nuevo flujo suscrito.
- Modificar la aplicación del
onStreamDropped(Session session, Stream stream)(otro de los callbacks de SessionListener):
@Override
public void onStreamDropped(Session session, Stream stream) {
Log.i(TAG, "Stream Dropped");
if (subscriber != null) {
subscriber = null;
subscriberViewContainer.removeAllViews();
}
}
subscriberViewContainer.removeAllViews() elimina la visualización de un suscriptor una vez que se ha interrumpido la transmisión.
Videochat básico
Aprende los conceptos básicos de la plataforma Vonage Video API, incluyendo cómo los usuarios pueden comunicarse a través de vídeo, voz y mensajería. Explora un flujo básico de la Video API de Vonage.