Kotlin
動画視聴用のコンテナを提供する
Vonage SDK は以下を返します。 View オブジェクトを作成します。サンプルでは FrameLayout を介してComposeから作成されたコンテナ。 AndroidView:
コピー
@Composable
private fun VideoContainers(
onContainersReady: (subscriber: FrameLayout, publisher: FrameLayout) -> Unit,
) {
AndroidView(
factory = { ctx ->
val root = FrameLayout(ctx)
val subscriberFrame = FrameLayout(ctx) // full screen
val publisherFrame = FrameLayout(ctx) // small overlay, bottom-end
root.addView(subscriberFrame)
root.addView(publisherFrame)
onContainersReady(subscriberFrame, publisherFrame)
root
},
modifier = Modifier.fillMaxSize(),
)
}
コンテナをアクティビティに渡すことで、セッション接続時にパブリッシャーと購読者のビューを追加することができます:
コピー
VideoCallScreen(
isInPipMode = isInPipMode,
onContainersReady = { subscriberFrame, publisherFrame ->
subscriberViewContainer = subscriberFrame
publisherViewContainer = publisherFrame
containersReady = true
tryStartSession()
},
onEnterPictureInPicture = ::enterPictureInPicture,
)
準備ができたらビューを取り付ける
で onConnectedパブリッシャービューを発行し、添付してください:
コピー
override fun onConnected(session: Session) {
if (publisher == null) {
publisher = Publisher.Builder(applicationContext).build()
session.publish(publisher)
publisherViewContainer.addView(publisher?.view)
if (publisher?.view is GLSurfaceView) {
(publisher?.view as GLSurfaceView).setZOrderOnTop(true)
}
}
}
リモートストリームが到着したらサブスクライブする:
コピー
override fun onStreamReceived(session: Session, stream: Stream) {
if (subscriber == null) {
subscriber = Subscriber.Builder(applicationContext, stream).build()
session.subscribe(subscriber)
subscriberViewContainer.addView(subscriber?.view)
}
}
ピクチャー・イン・ピクチャー
Vonage Video SDKを使用してアプリにPicture in Picture機能を追加する方法をご紹介します。
対応機種:
手順
1
はじめに2
はじめに3
新規プロジェクトの作成4
Android SDKの追加5
認証の設定6
アクセス許可の申請7
アクティビティでピクチャー・イン・ピクチャーを有効にする8
動画視聴用のコンテナを提供する9
ピクチャー・イン・ピクチャーの起動10
PiP モードの変更を管理する11
アプリの実行12
結論