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 var subscriber: Subscriber? = null
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 fun onStreamReceived(session: Session, stream: Stream) {
Log.d(TAG, "onStreamReceived: New Stream Received ${stream.streamId} in session: ${session.sessionId}")
if (subscriber == null) {
val newSubscriber = Subscriber.Builder(this@MainActivity, stream).build().apply {
renderer.setStyle(
BaseVideoRenderer.STYLE_VIDEO_SCALE,
BaseVideoRenderer.STYLE_VIDEO_FILL
)
setSubscriberListener(subscriberListener)
}
session.subscribe(newSubscriber)
subscriber = newSubscriber
subscriberView = newSubscriber.view
}
}
Subscriber.Builder()crea un nuevo abonado para elStream.setSubscriberListener()adjunta un receptor de eventos de flujo.session.subscribe()inicia la suscripción al flujo remoto.subscriberView = newSubscriber.viewinserta el visor de vídeo en tu diseño.
- Para registrar eventos, añade
subscriberListenerpropiedad abajosessionListenerde laMainActivity:
private val subscriberListener = object : SubscriberKit.SubscriberListener {
override fun onConnected(subscriberKit: SubscriberKit) {
Log.d(TAG, "onConnected: Subscriber connected. Stream: ${subscriberKit.stream?.streamId}")
}
override fun onDisconnected(subscriberKit: SubscriberKit) {
Log.d(TAG, "onDisconnected: Subscriber disconnected. Stream: ${subscriberKit.stream?.streamId}")
}
override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) {
Log.e(TAG, "SubscriberKit onError: ${opentokError.message}")
}
}
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.
- Modificar la aplicación del
onStreamDropped(Session session, Stream stream)(otro de los callbacks de SessionListener):
override fun onStreamDropped(session: Session, stream: Stream) {
Log.i(TAG, "onStreamDropped: Stream dropped with ID: ${stream.streamId}")
subscriber?.let {
subscriberView = null
subscriber = null
}
}
subscriberView = null 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.