Anpassen der Benutzeroberfläche – Android

Mit den folgenden Einstellungen können Sie die Benutzeroberfläche von OpenTok-Videos an Ihre Bedürfnisse anpassen:

Hinzufügen eines Namens für einen veröffentlichten Stream

Sie können den Namen des Herausgebers angeben, indem Sie die Funktion name() Methode des Publisher.Builder-Objekts, wenn Sie das Publisher-Objekt instanziieren:

mPublisher = new Publisher.Builder(context)
  .name("Bob's video")
  .build();

Sie können diesen Namen verwenden, um den Client zu identifizieren, der den Stream veröffentlicht. Die Stream-Klasse hat eine name Eigentum. Wenn Sie einen Stream abonnierenkönnen Sie diesen Namen in einem Element der Benutzeroberfläche anzeigen.

Verwenden Sie keine persönlichen Informationen im Feld "Name" des Herausgebers — Der Name des Herausgebers kann anderen Teilnehmern der Sitzung angezeigt werden und möglicherweise auch im Inspector-Tool sowie in den internen Protokollen von Vonage erscheinen. Verwenden Sie daher niemals unverschlüsselte sensible oder personenbezogene Daten im Namen des Herausgebers. Siehe bewährte Verfahren für die Sicherheit.

Hinzufügen einer Stummschalttaste für einen Herausgeber

Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Mikrofons des Herausgebers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die Funktion setPublishAudio() Methode des PublisherKit-Objekts, wenn der Benutzer darauf klickt. Einreichen false um den Herausgeber stumm zu schalten:

mPublisher.setPublishAudio(false);

Einreichen true um Audio zu veröffentlichen.

mPublisher.setPublishAudio(true);

Hinzufügen einer Stummschalttaste für einen Teilnehmer

Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Tons des Teilnehmers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die Funktion setSubscribeToAudio() Methode des SubscriberKit-Objekts, wenn der Benutzer darauf klickt. Einreichen false zum Stummschalten des Teilnehmers

mSubscriber.setSubscribeToAudio(false);

Einreichen true um Audio zu abonnieren (wenn es einen Audio-Stream gibt):

mSubscriber.setSubscribeToAudio(true);

Hinzufügen einer Schaltfläche zum Umschalten der Kamera des Herausgebers

Es gibt kein Standard-Benutzeroberflächenelement, um die vom Herausgeber verwendete Kamera umzuschalten. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die Funktion swapCamera Methode des Publisher-Objekts:

mPublisher.swapCamera();

Beachten Sie, dass die cameraPosition Eigenschaft ist in der PublisherKit-Klasse nicht verfügbar. Wenn Sie die PublisherKit-Klasse verwenden, um einen benutzerdefinierten Video-Capturer implementierenkönnen Sie die im benutzerdefinierten Code für die Videoaufzeichnung verwendete Kamera festlegen.

Anpassen der Benutzeroberfläche, wenn Video aktiviert oder deaktiviert ist

Wenn das Video eines Abonnenten deaktiviert ist, wird die SubscriberKit.VideoListener.onVideoDisabled(subscriber, reason) Methode aufgerufen wird. In diesem Fall können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) hinzufügen, um anzuzeigen, dass das Video deaktiviert wurde:

@Override
public void onVideoDisabled(SubscriberKit subscriber, String reason) {
    // Display the video disabled indicator
}

Wenn das Video eines Abonnenten wieder aktiviert wird, wird die SubscriberKit.VideoListener.onVideoEnabled(subscriber, reason) Methode aufgerufen wird. Wenn dies geschieht, können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) entfernen, das anzeigt, dass das Video wieder aktiviert ist:

@Override
public void onVideoEnabled(SubscriberKit subscriber, String reason) {
    // Display the video disabled indicator
}

In Sitzungen, die den OpenTok Media Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), kann der SubscriberKit.VideoListener auch die folgenden Methoden aufrufen:

  • onVideoDisableWarning(Teilnehmer) — Der OpenTok Media Router hat festgestellt, dass sich die Stream-Qualität verschlechtert hat, und das Video wird deaktiviert, sollte sich die Qualität weiter verschlechtern.
  • onVideoDisableWarningLifted(Teilnehmer) — Der OpenTok Media Router hat festgestellt, dass sich die Stream-Qualität so weit verbessert hat, dass die Deaktivierung des Videos kein unmittelbares Risiko mehr darstellt.

Sie können auch eine Benachrichtigung der Benutzeroberfläche (z. B. ein Symbol) anzeigen und entfernen lassen, wenn diese Nachrichten gesendet werden.

Beachten Sie, dass Sie beim Veröffentlichen eines Streams den Audio-Fallback für Publisher und Subscriber aktivieren oder deaktivieren. Die Audio-Fallback-Funktion deaktiviert die Videoübertragung (bei Publishern und Subscribern), wenn die Netzwerk- oder CPU-Bedingungen die Videoübertragung nicht zulassen. Siehe Audio-Fallback (Android).

Wenn Sie den Audio-Fallback des Anbieters aktivieren, rufen die Callback-Methoden der PublisherKit.VideoListener werden bei Ereignissen im Zusammenhang mit Publisher Audio Fallback aufgerufen:

  • PublisherKit.VideoListener.onVideoDisabled(publisher, reason)
  • PublisherKit.VideoListener.onVideoDisabled(publisher, reason)
  • PublisherKit.VideoListener.onVideoDisableWarning(publisher)
  • PublisherKit.VideoListener.onVideoDisableWarningLifted(publisher)

Als Reaktion auf diese Ereignisse können Sie UI-Anzeigen einblenden.

Anzeige eines Indikatorelements, wenn ein Lauf archiviert wird

Wenn ein Archiv einer Sitzung mit der Aufzeichnung beginnt (oder wenn Sie eine Verbindung zu einer Sitzung herstellen, die gerade aufgezeichnet wird), wird die Session.ArchiveListener.onArchiveStarted(session, name) Methode aufgerufen wird. Wenn die Aufzeichnung endet, wird die Session.ArchiveListener.onArchiveStopped(session, name) Methode aufgerufen wird. Sie können ein Element der Benutzeroberfläche hinzufügen, z. B. ein Symbol, das in einer Herausgeberansicht angezeigt wird, um anzuzeigen, dass ein Video aufgezeichnet wird:

@Override
public void onArchiveStarted(Session session, String id, String name) {
    // Display the archive indicator
}

@Override
public void onArchiveStopped(Session session, String id, String name) {
    // Hide the archive indicator
}

Anpassung der Benutzeroberfläche auf der Grundlage von Audiopegeln

Die SubscriberKit.AudioLevelListener.onAudioLevelUpdated(subscriber, audioLevel) und PublisherKit.AudioLevelListener.onAudioLevelUpdated(publsiher, audioLevel) Nachrichten werden in einem regelmäßigen Intervall mit dem Audiopegel des Teilnehmers und des Herausgebers gesendet. Sie können die audioLevel Wert, um die Anzeige in einer Audiopegelanzeige zu aktualisieren:

@Override
public void onAudioLevelUpdated(
        SubscriberKit subscriber, float audioLevel) {
    // Adjust an audio meter UI element based on the audioLevel value.
}

Anmerkung: Der Audiopegel eines Publishers ist erst verfügbar, wenn dessen Stream in einer Sitzung veröffentlicht wurde. Um eine Vorschau des Audios zu erhalten, bevor der Publisher mit dem Streaming in die Sitzung beginnt, verwenden Sie einen benutzerdefinierter Audiotreiber.

Aus Gründen des Datenschutzes wird die Audioerfassung standardmäßig beendet und das Mikrofon freigegeben, wenn alle Publisher stummgeschaltet sind. Das bedeutet, dass es keine weiteren Aktualisierungen des Audiopegels gibt, bis eine Verlagsinstanz Audio wieder aktiviert. Ab Version 2.31.0 ist der Publisher mit einer Eigenschaft ausgestattet, die es erlaubt, die Audioerfassung fortzusetzen, während er stummgeschaltet ist.

Bei der Instanziierung einer neuen Verlagsinstanz kann der Entwickler dieses Verhalten aktivieren:

mPublisher = new Publisher.Builder(this).name(mUsername).allowAudioCaptureWhileMuted(true).build();

Hinweis: Wenn Sie dieses Verhalten aktivieren, wird das Mikrofon auch dann verwendet, wenn der Herausgeber stummgeschaltet ist.

Verwendung eines benutzerdefinierten Video-Renderers

Die Subscriber- und Publisher-Klassen implementieren einen Standard-Videorenderer, der den Stream rendert und Steuerelemente für die Benutzeroberfläche zum Anzeigen des Streamnamens und zum Stummschalten des Mikrofons oder der Kamera bereitstellt. Sie können die SubscriberKit- und PublisherKit-Klassen verwenden, um einen benutzerdefinierten Video-Renderer zu implementieren.

Das OpenTok-Android-SDK enthält eine Klasse namens „BaseVideoRenderer“. Überschreiben Sie diese Klasse, um einen benutzerdefinierten Video-Renderer zu erstellen.

Nachdem Sie ein PublisherKit-Objekt instanziiert haben, können Sie einen benutzerdefinierten Videorenderer festlegen, indem Sie die setRenderer() Methode des PublisherKit-Objekts:

mPublisher = new PublisherKit(MyClass.this, "publisher");

// Use a custom video renderer.
// MyVideoRenderer extends BaseVideoRenderer
mRenderer = new MyVideoRenderer();
mPublisher.setRenderer(new mRenderer);

Die SubscriberKit-Klasse hat auch eine setRenderer() Methode.

Die onFrame() Methode der BaseVideoRenderer-Klasse wird aufgerufen, wenn ein neues Bild verfügbar ist:

    public void onFrame(Frame frame) {
        // The new frame is available.
    }

Die frame ist ein BaseVideoRenderer.Frame-Objekt. Dieses Objekt enthält ein getBuffer() die den Byte-Puffer mit den Videobilddaten zurückgibt. Sie können diesen Bytepuffer verwenden, um das Videobild in die Ansicht des Herausgebers einzufügen.

Ein Beispiel finden Sie in der Klasse OpenTokVideoRenderer in der Beispielanwendung OpenTokHelloWorld.

Sie können einen Verlag auch so einrichten, dass er eine benutzerdefinierter Video-Capturer.