Android

Solicitação de permissões

Como nosso aplicativo utiliza áudio e vídeo do dispositivo do usuário, precisaremos adicionar um código para solicitar permissões de áudio e vídeo. Vamos usar o EasyPermissions biblioteca para fazer isso.

  1. Comece adicionando a biblioteca EasyPermissions ao seu projeto — abra o build.gradle no seu módulo (o arquivo app/build.gradle) e adicione o seguinte trecho de código à seção de dependências:
implementation 'pub.devrel:easypermissions:3.0.0'
  1. No seu AndroidManifest.xml arquivo, adicione este trecho de código dentro do 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" />

ℹ️ Observação: O WAKE_LOCK Essa permissão é usada para impedir que o dispositivo entre no modo de suspensão durante uma videochamada. Isso garante a transmissão ininterrupta de mídia.

  1. No seu MainActivity.java arquivo, adicione um novo método chamado 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 é um código padrão para utilizar a biblioteca EasyPermissions.

Importante: Você terá que adicionar as importações manualmente, clicando em EasyPermissions (texto em vermelho) e pressionando a combinação de teclas Option + Enter no macOS ou Alt + Enter no Windows. Essa etapa pode ser necessária ao colar o código. Você também pode ativar a opção “Adicionar importações inequívocas dinamicamente” (Preferências | Editor | Importação automática) para adicionar importações automaticamente.

  1. Adicione o PERMISSIONS_REQUEST_CODE propriedade no topo do MainActivity.java arquivo:
private static final int PERMISSIONS_REQUEST_CODE = 124;
  1. A seguir, vamos adicionar um 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);
    }
}

Isso verifica se as permissões já foram concedidas. Caso contrário, solicitamos ao usuário as permissões de acesso à câmera e ao microfone por meio do EasyPermissions.requestPermissions método.

Assim que as permissões forem concedidas, esse método será acionado novamente devido ao @AfterPermissionGranted(PERMISSIONS_REQUEST_CODE) anotação. Adicionaremos um código para inicializar os objetos de sessão e de visualização nas próximas etapas.

  1. Agora adicione requestPermission(); para chamar o método dentro do onCreate() método:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        requestPermissions();
    }