Abonnieren von anderen Kundenströmen
Wir möchten, dass die Kunden in der Lage sind abonnieren auf die Streams anderer Clients in der Sitzung zugreifen (oder diese anzeigen):
- Hinzufügen einer
subscriberEigenschaft zur Klasse MainActivity (nach der Deklaration derpublisherEigenschaft):
private Subscriber subscriber;
Die Klasse Subscriber ist im Android SDK definiert. Sie definiert ein Objekt, das ein Client zum Abonnieren (Anzeigen) eines von einem anderen Client veröffentlichten Streams verwendet.
- Ändern Sie die Implementierung der
onStreamReceived(session, stream)Methode (einer der SessionListener-Callbacks), um Code zum Abonnieren der Streams anderer Clients in die Sitzung aufzunehmen:
@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());
}
}
- So protokollieren Sie Ereignisse Hinzufügen
subscriberListeneruntenstehendes GrundstücksessionListenerderMainActivity:
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());
}
};
Wenn ein anderer Client einen Stream in einer Sitzung veröffentlicht, wird diese Methode aufgerufen und ein Stream-Objekt wird übergeben. Die Stream-Klasse ist im Android SDK definiert und stellt einen Audio-Video-Stream in der Sitzung dar.
Der Code initialisiert eine Instanz der Klasse Subscriber, die im Android SDK definiert ist. Die Subscriber.Builder() Konstruktor benötigt zwei Parameter:
- Der mit diesem Prozess verbundene Android-Anwendungskontext.
- Das Stream-Objekt (für den Stream, den Sie anzeigen möchten)
Die Session.subscribe(subscriber) Methode abonniert den empfangenen Stream.
subscriberViewContainer.addView(subscriber.getView()) platziert die Ansicht des neuen abonnierten Streams auf dem Bildschirm.
- Ändern Sie die Implementierung der
onStreamDropped(Session session, Stream stream)Methode (eine weitere der SessionListener Callbacks):
@Override
public void onStreamDropped(Session session, Stream stream) {
Log.i(TAG, "Stream Dropped");
if (subscriber != null) {
subscriber = null;
subscriberViewContainer.removeAllViews();
}
}
subscriberViewContainer.removeAllViews() entfernt die Ansicht eines Abonnenten, sobald der Stream unterbrochen wurde.
Einfacher Video-Chat
Lernen Sie die grundlegenden Concepts der Vonage Video API-Plattform kennen und erfahren Sie, wie Benutzer über Video, Voice und Messaging kommunizieren können. Erkunden Sie einen grundlegenden Ablauf der Vonage Video API.