Android

Solicitud de permisos

Dado que nuestra aplicación utiliza el audio y el vídeo del dispositivo del usuario, tendremos que añadir algo de código para solicitar los permisos de audio y vídeo. Utilizaremos el EasyPermissions biblioteca para hacer esto.

  1. Empiece por añadir la biblioteca EasyPermissions a su proyecto: abra el archivo build.gradle en tu módulo (el archivo app/build.gradle) y añade el siguiente fragmento de código a la sección de dependencias:
implementation 'pub.devrel:easypermissions:3.0.0'
  1. En su AndroidManifest.xml añada este fragmento de código dentro del archivo manifest tags:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

ℹ️ 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. En su MainActivity.java archivo, añade un nuevo método llamado onRequestPermissionsResult:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}

Este es un código de ejemplo para utilizar la biblioteca EasyPermissions.

Importante: Tendrás que añadir las importaciones manualmente, haciendo clic en EasyPermissions (texto en rojo) y pulsando la combinación de teclas Opción + Intro en MacOS o Alt + Intro en Windows. Este paso puede ser necesario al pegar el código. También puede activar la opción "Añadir importaciones inequívocas sobre la marcha" (Preferencias | Editor | Importación automática) para añadir importaciones automáticamente.

  1. Añade el PERMISSIONS_REQUEST_CODE en la parte superior de MainActivity.java archivo:
private static final int PERMISSIONS_REQUEST_CODE = 124;
  1. A continuación añadiremos un requestPermissions() método:
@AfterPermissionGranted(PERMISSIONS_REQUEST_CODE)
private void requestPermissions() {
    String[] perms = { Manifest.permission.INTERNET, Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO };
    if (EasyPermissions.hasPermissions(this, perms)) {
        // initialize and connect to the session

    } else {
        EasyPermissions.requestPermissions(this, "This app needs access to your camera and mic to make video calls", PERMISSIONS_REQUEST_CODE, perms);
    }
}

Esto comprueba si ya se han concedido los permisos. Si no es así, solicitamos al usuario los permisos de cámara y micrófono mediante el EasyPermissions.requestPermissions método.

Una vez concedidos los permisos, este método se ejecutará de nuevo debido a la @AfterPermissionGranted(PERMISSIONS_REQUEST_CODE) anotación. Añadiremos algo de código para inicializar los objetos sesión y vista en los próximos pasos.

  1. Ahora añade requestPermission(); para llamar al método dentro del onCreate() método:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        requestPermissions();
    }