Kotlin
Fournir des conteneurs pour les vidéos
Le SDK de Vonage revient View pour l'éditeur et l'abonné. L'exemple les héberge dans FrameLayout Les conteneurs créés à partir de Compose via AndroidView:
Copie
@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(),
)
}
Transmettez les conteneurs à votre activité afin qu'elle puisse ajouter les vues de l'éditeur et de l'abonné lorsque la session se connecte :
Copie
VideoCallScreen(
isInPipMode = isInPipMode,
onContainersReady = { subscriberFrame, publisherFrame ->
subscriberViewContainer = subscriberFrame
publisherViewContainer = publisherFrame
containersReady = true
tryStartSession()
},
onEnterPictureInPicture = ::enterPictureInPicture,
)
Attacher la vue lorsqu'elle est prête
En onConnected, publier et joindre la vue de l'éditeur :
Copie
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)
}
}
}
S'abonner lorsqu'un flux distant arrive :
Copie
override fun onStreamReceived(session: Session, stream: Stream) {
if (subscriber == null) {
subscriber = Subscriber.Builder(applicationContext, stream).build()
session.subscribe(subscriber)
subscriberViewContainer.addView(subscriber?.view)
}
}
Une image dans une image
Apprenez à ajouter la fonctionnalité Image dans l'image à votre application à l'aide du SDK vidéo de Vonage.
Disponible sur :
Étapes
1
Introduction2
Pour commencer3
Création d'un nouveau projet4
Ajout du SDK Android5
Configuration de l'authentification6
Demande d'autorisation7
Activer l'incrustation d'image sur votre activité8
Fournir des conteneurs pour les vidéos9
Lancement de l'image dans l'image10
Gestion des changements de mode PiP11
Exécution de l'application12
Conclusion