Kotlin

S'abonner à d'autres flux de clients

Nous voulons que les clients puissent souscrire à (ou voir) les flux d'autres clients dans la session :

  1. Ajouter un subscriber à la classe MainActivity (après la déclaration de la propriété publisher ) :
private var subscriber: Subscriber? = null

La classe Subscriber est définie dans le SDK Android. Elle définit un objet qu'un client utilise pour s'abonner à (visualiser) un flux publié par un autre client.

  1. Modifier la mise en œuvre de la onStreamReceived(session, stream) (l'un des rappels de SessionListener) pour inclure du code permettant de s'abonner aux flux d'autres clients de la session :
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() crée un nouvel abonné pour le Stream.
  • setSubscriberListener() crée un récepteur pour les événements de flux.
  • session.subscribe() démarre l'abonnement au flux distant.
  • subscriberView = newSubscriber.view place la vue vidéo dans votre mise en page.
  1. Pour enregistrer des événements Ajouter subscriberListener propriété ci-dessous sessionListener de la MainActivity:
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}")
    }
}

Lorsqu'un autre client publie un flux dans une session, cette méthode est appelée et un objet Stream est transmis. La classe Stream est définie dans le SDK Android et représente un flux audio-vidéo dans la session.

Le code initialise une instance de la classe Subscriber, définie dans le SDK Android. Le code Subscriber.Builder() prend deux paramètres :

  • Le contexte de l'application Android associé à ce processus.
  • L'objet Stream (pour le flux que vous souhaitez visualiser)

Les Session.subscribe(subscriber) s'abonne au flux reçu.

  1. Modifier la mise en œuvre de la onStreamDropped(Session session, Stream stream) (un autre des rappels 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 supprime la vue d'un abonné une fois que le flux a été interrompu.

Chat vidéo de base

Apprenez les concepts de base de la plateforme Video API de Vonage, y compris la façon dont les utilisateurs peuvent communiquer par le biais de la vidéo, de la voix et de la messagerie. Explorer un flux de base de l'API Video de Vonage.

Étapes
1
Introduction
2
Pour commencer
3
Création d'un nouveau projet
4
Ajout du SDK Android
5
Mise en place de l'authentification
6
Demande d'autorisations
7
Connexion à la session
8
Ajuster l'interface utilisateur de l'application d'exemple
9
Publication d'un flux dans la session
10
S'abonner à d'autres flux de clients
11
Exécution de l'application
12
Conclusion