Kotlin

Solicitud de permisos

Dado que nuestra aplicación utiliza audio y vídeo del dispositivo del usuario, tendremos que añadir algo de código para solicitar permisos de audio y vídeo. Utilizaremos accompanist para simplificar el proceso.

  1. Añadir permisos a AndroidManifest.xml

Dentro de tu AndroidManifest.xmlañada lo siguiente dentro del <manifest> etiqueta:

ℹ️ Nota: En WAKE_LOCK se utiliza para evitar que el dispositivo entre en reposo durante una videollamada. Esto garantiza la transmisión ininterrumpida de contenido multimedia.

  1. Añadir dependencias y manifestar permisos

En primer lugar, añada el Accompanist dependencia a su build.gradle archivo:

dependencies {
   implementation("com.google.accompanist:accompanist-permissions:0.34.0")
}
  1. Aplicación de la gestión de permisos en Compose

Con Accompanistutilizamos rememberMultiplePermissionsState. Esto permite que la interfaz de usuario reaccione automáticamente cuando se conceden o deniegan permisos. Crear un nuevo archivo VideoChatPermissionWrapper.kt como sigue:

@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun VideoChatPermissionWrapper(
    onPermissionsGranted: () -> Unit,
    content: @Composable () -> Unit
) {
    val permissionsState = rememberMultiplePermissionsState(
        permissions = listOf(
            Manifest.permission.CAMERA,
            Manifest.permission.RECORD_AUDIO
        )
    )

    if (permissionsState.allPermissionsGranted) {
        // 1. Notify parent that permissions are ready (run once)
        LaunchedEffect(Unit) {
            onPermissionsGranted()
        }
        // 2. Show the actual video UI
        content()
    } else {
        // 3. Show a Rationale UI if permissions are missing
        Column(
            modifier = Modifier
                .fillMaxSize()
                .padding(16.dp),
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Text(text = "Camera and Audio permissions are required for video chat.")

            Button(
                onClick = { permissionsState.launchMultiplePermissionRequest() },
                modifier = Modifier.padding(top = 16.dp)
            ) {
                Text("Grant Permissions")
            }
        }

        // Auto-launch the popup on the very first composition
        LaunchedEffect(Unit) {
            if (!permissionsState.allPermissionsGranted) {
                permissionsState.launchMultiplePermissionRequest()
            }
        }
    }
}
  1. Actualización MainActivity.kt & definir el initializeSession() como marcador de posición para la configuración de tu videollamada"

Ahora, integra esto en tu MainActivity. Simplemente llame a su VideoChatPermissionWrapper dentro de setContent.

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        enableEdgeToEdge()

        setContent {
            VideoChatPermissionWrapper(
                onPermissionsGranted = {
                    initializeSession(
                        appId = VonageVideoConfig.APP_ID,
                        sessionId = VonageVideoConfig.SESSION_ID,
                        token = VonageVideoConfig.TOKEN
                    )
                }
            ) {
                VideoChatScreen(
                    publisherView = publisherView,
                    subscriberView = subscriberView
                )
            }
        }
    }


    private fun initializeSession(appId: String, sessionId: String, token: String) {
        // TODO: Connect to Vonage session
    }
}
  1. Próximos pasos

Una vez concedidos los permisos, el initializeSession() se activará. En los próximos pasos del tutorial, implementarás la lógica para conectarte a una sesión de la Video API de Vonage.

Controlador de audio personalizado

Aprenda a utilizar un controlador de audio personalizado para personalizar el audio de la transmisión del editor y del suscriptor. Utilizará el controlador de audio personalizado cuando desee iniciar y detener el audio reproducir su propio archivo de audio y hacer cualquier cosa fuera del comportamiento predeterminado del chat de vídeo en directo proporcionado por el SDK.

Disponible en:
Kotlin Swift
Pasos
1
Introducción
2
Primeros pasos
3
Crear un nuevo proyecto
4
Añadir el SDK de Android
5
Configuración de la autenticación
6
Solicitud de permisos
7
Añadir un controlador de audio personalizado
8
Captura de audio para su uso por un editor
9
Añadir un renderizador de audio personalizado
10
Ejecutar la aplicación
11
Conclusión