Suscripción a otros flujos de clientes
Queremos que los clientes puedan suscríbase a a (o ver) los flujos de otros clientes en la sesión:
- Añadir 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 un cliente utiliza para suscribirse a (ver) 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ñadir
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. La dirección Subscriber.Builder() toma dos parámetros:
- El contexto de la aplicación Android asociada a este proceso.
- El objeto Stream (para el flujo que desea ver)
En Session.subscribe(subscriber) se suscribe al flujo 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 vista de un abonado una vez que el flujo ha caído.
Videochat básico
Conoce los conceptos básicos de la plataforma de la Video API de Vonage, incluyendo cómo los usuarios pueden comunicarse a través de video, voz y mensajería. Explora un flujo básico de la Video API de Vonage.