Kotlin

Mehrteilig: Abonnieren Sie jeden Remote Stream

Jeder entfernte Client erscheint als Stream. Umsetzung onStreamReceived / onStreamDropped:

  1. Erstellen Sie für jeden neuen Stream eine Subscriberanrufen session.subscribe(subscriber), dann anhängen subscriber.view zu einer eigene Zelle in Ihrem Layout.

Dieses Beispiel verwendet eine feste Anzahl von Steckplätzen (maxSubscribers): parallele Arrays für Subscriber?, optionale Stream-IDs, und FrameLayout? Zellen. Der nächste freie Index erhält den neuen Teilnehmer; wenn alle Plätze voll sind, ignorieren oder ersetzen Sie ihn gemäß Ihren Produktregeln.

private val maxSubscribers = 4
private val subscribers = arrayOfNulls<Subscriber>(maxSubscribers)
private val subscriberContainers = arrayOfNulls<FrameLayout>(maxSubscribers)
private val subscriberStreamIds = arrayOfNulls<String>(maxSubscribers)

override fun onStreamReceived(session: Session, stream: Stream) {
    val subscriber = Subscriber.Builder(this@MainActivity, stream).build()
    session.subscribe(subscriber)
    addSubscriber(subscriber) 
}

private fun addSubscriber(subscriber: Subscriber) {
    val index = subscribers.indexOfFirst { it == null }
    if (index == -1) {
        Toast.makeText(
            this,
            "New subscriber ignored, maxSubscribers limit reached",
            Toast.LENGTH_LONG
        ).show()
        return
    }

    subscribers[index] = subscriber
    subscriberStreamIds[index] = subscriber.stream.streamId

    subscriber.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
    subscriber.subscribeToAudio = true

    runOnUiThread {
        subscriberContainers[index]?.removeAllViews()
        subscriberContainers[index]?.addView(subscriber.view)
    }

    subscriberAudioEnabled[index] = true
    subscriberVisible[index] = true
}
  1. Wenn ein Stream endet, entfernen Sie die Ansicht dieses Abonnenten und geben den Slot frei.
override fun onStreamDropped(session: Session, stream: Stream) {
    val index = subscriberStreamIds.indexOfFirst { it == stream.streamId }
    if (index == -1) return

    val subscriber = subscribers[index] ?: return

    runOnUiThread {
        subscriberContainers[index]?.removeView(subscriber.view)
    }
    subscribers[index] = null
    subscriberStreamIds[index] = null
    subscriberVisible[index] = false
    subscriberAudioEnabled[index] = true
}

Umschalten der Audio-Fernbedienung mit subscriber.subscribeToAudio = enabled. Schalten Sie Ihr ausgehendes A/V mit publisher.publishAudio / publisher.publishVideo.

Sauberes Abreißen

Am Ausgang, abbestellen jeder Teilnehmer, nicht veröffentlichen der Herausgeber, dann session.disconnect(). Auf diese Weise lassen sich undichte Sitzungen und blockierte Kameras/Mikrofone auf einigen Geräten vermeiden.

Einfacher Mehrparteienbetrieb

Erfahren Sie, wie Sie das Vonage Android SDK für einen Anruf mit mehreren Teilnehmern verwenden können. Die Anwendung veröffentlicht Audio/Video von einem Gerät und kann sich mit mehreren Teilnehmern verbinden.

Verfügbar am:
Kotlin
Schritte
1
Einführung
2
Erste Schritte
3
Ein neues Projekt erstellen
4
Hinzufügen des Android-SDK
5
Einrichten der Authentifizierung
6
Beantragung von Genehmigungen
7
Verbinden Sie veröffentlichen und zeigen Sie sich
8
Mehrparteien-Abonnement für jeden Remote-Stream
9
SDK-Ansichten in AndroidView hosten
10
Ausführen der App
11
Schlussfolgerung