Kotlin

マルチパーティーすべてのリモートストリームを購読する

各リモートクライアントは Stream.実施する onStreamReceived / onStreamDropped:

  1. 新しいストリームごとに Subscriber電話する session.subscribe(subscriber)を添付する。 subscriber.view への 専用セル をレイアウトしてください。

このサンプルでは 固定スロット数 (maxSubscribers):並列アレイ Subscriber?オプションのストリームID FrameLayout? セルを使用する。すべてのスロットが埋まっている場合は、製品のルールに従って無視するか置き換える。

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. ストリームが終了したら、その購読者のビューを削除し、スロットを解放する。
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
}

でリモートオーディオを切り替えます。 subscriber.subscribeToAudio = enabled.で発信A/Vを切り替えます。 publisher.publishAudio / publisher.publishVideo.

きれいに取り壊す

出口で アンサブスクライブ 各加入者 アンパブリッシュ 出版社であれば session.disconnect().こうすることで、一部のデバイスでセッションが漏れたり、カメラやマイクがブロックされたりするのを防ぐことができます。

シンプルなマルチパーティー

Vonage Android SDKを使用したマルチパーティコールの方法をご紹介します。アプリケーションは、デバイスからオーディオ/ビデオを公開し、複数の加入者に接続することができます。

対応機種:
Kotlin
手順
1
はじめに
2
はじめに
3
新規プロジェクトの作成
4
Android SDKの追加
5
認証の設定
6
許可を求める
7
公開し、自分をアピールする
8
各リモート・ストリームへのマルチパーティ・サブスクライブ
9
AndroidViewでSDKビューをホストする
10
アプリの実行
11
結論