Vistas del SDK del host en AndroidView
Vonage convierte en normal Vistas. Crear uno FrameLayout por ranura de abonado en AndroidViewexpóngalo con onSubscriberContainerReady(index, …)y adjuntar subscriber.view de su código de sesión cuando se llene esa ranura.
La muestra lo envuelve todo en Box → Column: LazyVerticalGrid (ponderado para que llene el espacio por encima de la barra) + ControlsRow abajo; el editor es un segundo AndroidView en el Box, align(BottomEnd) para picture-in-picture. Cada fila de la cuadrícula utiliza SubscriberCellque también utiliza AndroidView + FrameLayout para el vídeo de esa tragaperras.
Baldosas remotas - dos columnas, un elemento componible por índice de ranura (coincide con maxSubscribers y sus matrices de abonados).
LazyVerticalGrid(
modifier = Modifier.weight(1f),
columns = GridCells.Fixed(2),
verticalArrangement = Arrangement.spacedBy(12.dp),
horizontalArrangement = Arrangement.spacedBy(12.dp),
userScrollEnabled = false,
) {
items(items = (0 until maxSubscribers).toList(), key = { it }) { index ->
SubscriberCell(
modifier = Modifier
.fillMaxWidth()
.aspectRatio(1f),
visible = subscriberVisible.getOrNull(index) == true,
audioEnabled = subscriberAudioEnabled.getOrNull(index) != false,
onAudioChanged = { onSubscriberAudioChanged(index, it) },
onContainerReady = { onSubscriberContainerReady(index, it) },
)
}
}
Avance local - mismo patrón: FrameLayout de factorypasado a onPublisherContainerReady.
AndroidView(
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(12.dp)
.size(width = 150.dp, height = 200.dp)
.background(Color.Black),
factory = {
FrameLayout(it).also(onPublisherContainerReady)
}
)
Disposición completa: SimpleMultipartyScreen.kt.
Multipartito simple
Aprende a usar el SDK para Android de Vonage para una llamada multipartita. La aplicación publica audio/video desde un dispositivo y puede conectarse a múltiples suscriptores.