S'abonner à d'autres flux de clients
Nous voulons que les clients puissent souscrire à (ou voir) les flux d'autres clients dans la session :
- Ajouter un
subscriberà la classe MainActivity (après la déclaration de la propriétépublisher) :
private Subscriber subscriber;
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.
- 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
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());
}
}
- Pour enregistrer des événements Ajouter
subscriberListenerpropriété ci-dessoussessionListenerde 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());
}
};
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.
subscriberViewContainer.addView(subscriber.getView()) place la vue du nouveau flux abonné à l'écran.
- Modifier la mise en œuvre de la
onStreamDropped(Session session, Stream stream)(un autre des rappels de SessionListener) :
@Override
public void onStreamDropped(Session session, Stream stream) {
Log.i(TAG, "Stream Dropped");
if (subscriber != null) {
subscriber = null;
subscriberViewContainer.removeAllViews();
}
}
subscriberViewContainer.removeAllViews() 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.