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 var subscriber: Subscriber? = null
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 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.viewcoloca la vista de vídeo en tu maqueta.
- Para registrar eventos Añadir
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. 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.
- 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 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.