> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/sdks/sdk-mobile/android-sdk/componentes-modulos/video-grabacion.md).

# Videogravação - Videorecording

## Introdução <a href="#id-1-introduccion" id="id-1-introduccion"></a>

A gravação de vídeo da tela é realizada com o ***VideoRecording Component***.

Este componente é responsável por capturar a tela do dispositivo em segundo plano. É voltado principalmente para a gravação do processo de Onboarding.

***

## Dependência <a href="#id-2-dependencia" id="id-2-dependencia"></a>

A dependência específica do componente é:

```
implementation "com.facephi.androidsdk:video_recording_component:$version"
```

***

## Controladores disponíveis <a href="#id-3-controladores-disponibles" id="id-3-controladores-disponibles"></a>

| **Controlador**              | **Descrição**                                            |
| ---------------------------- | -------------------------------------------------------- |
| VideoRecordingController     | Controlador principal de gravação de vídeo.              |
| StopVideoRecordingController | Controlador para realizar a parada da gravação de vídeo. |

***

***

## Lançamento simplificado <a href="#id-4-lanzamiento-simplificado" id="id-4-lanzamiento-simplificado"></a>

Uma vez iniciado o SDK e criada uma nova operação, o componente poderá ser lançado. Será possível usar qualquer um de seus controladores para executar sua funcionalidade.

### Lançamento da captura <a href="#id-41-lanzamiento-de-la-captura" id="id-41-lanzamiento-de-la-captura"></a>

Para iniciar a gravação de tela:

```kotlin
val response = SDKController.launch(
    VideoRecordingController(
        VideoRecordingConfigurationData(...)
    )
)

when (response) {
    is SdkResult.Error   -> Napier.d("ERROR - ${response.error.name}")
    is SdkResult.Success -> response.data
}

```

### Parar a captura <a href="#id-42-detener-la-captura" id="id-42-detener-la-captura"></a>

Para parar a gravação de tela:

```kotlin
val controller = StopVideoRecordingController()

controller.setOutput {
    Napier.d("APP: VIDEO RECORDING STATE (stop): ${it.name}")
}

SDKController.launch(controller)

```

### Recebimento de erros <a href="#id-61-recepcion-de-errores" id="id-61-recepcion-de-errores"></a>

Os erros serão retornados como um objeto 'VideoRecordingError'.

Lista de erros:

* VRC\_CANCEL\_BY\_USER: O usuário cancelou o processo
* VRC\_COMPONENT\_LICENSE\_ERROR: A licença do componente não está correta
* VRC\_EMPTY\_LICENSE: A string de licença está vazia
* VRC\_INITIALIZATION\_ERROR: Erro de inicialização
* VRC\_OPERATION\_NOT\_CREATED: Não há nenhuma operação em andamento
* VRC\_NETWORK\_CONNECTION: Erro na conexão com a internet
* VRC\_PERMISSION\_ERROR: O usuário rejeitou as permissões necessárias. Com `enableAudio=true` também abrange a negação ou fechamento da permissão de microfone e a recusa da permissão de `MediaProjection`.
* VRC\_SOCKET\_ERROR: Erro na conexão dos serviços
* VRC\_UNKNOWN\_ERROR: Erro desconhecido
* VRC\_VIDEO\_CALL\_ACTIVE: Não é possível iniciar porque há uma Videochamada ativa
* VRC\_VIDEO\_ERROR: Erro no processamento do vídeo
* VRC\_VIDEO\_RECORDING\_ACTIVE: Não é possível iniciar porque o processo de gravação de vídeo está ativo
* VRC\_FETCH\_DATA\_ERROR: Erro na coleta do resultado

### Recebimento do resultado correto - *data* <a href="#id-62-recepcion-del-resultado-correcto-data" id="id-62-recepcion-del-resultado-correcto-data"></a>

Em caso de sucesso, o campo `data` contém um objeto `VideoRecordingResult`.

* `state`: Estado da gravação. `SHARING` indica que a gravação foi iniciada e `FINISH` indica que foi interrompida corretamente.

## Informações avançadas

Esta seção amplia as informações do componente.

### Configuração avançada do componente <a href="#id-51-configuracion-avanzada-del-componente" id="id-51-configuracion-avanzada-del-componente"></a>

Para lançar o componente atual, será necessário criar um objeto *VideoRecordingConfigurationData* que será a configuração do controlador do componente.

A seguir, são detalhados todos os campos que fazem parte desta classe.

Os campos `url`, `apiKey` e `tenantId` normalmente **não precisam ser informados** pois são preenchidos internamente por meio da licença utilizada.

Esses campos costumam ser informados **apenas** quando o **servidor** é **OnPremise**.

#### **url**

Caminho para o socket de vídeo

#### **apiKey**

ApiKey necessária para a conexão com o socket de vídeo

#### **tenantId**

Identificador do tenant que faz referência ao cliente atual, necessário para a conexão com o serviço de vídeo.

#### **enableAudio**

Ativa a captura de áudio durante a gravação de tela. Por padrão `false`. Quando informado como `true`, o Android solicita `RECORD_AUDIO` antes da permissão de `MediaProjection`; se o usuário negar ou fechar a tela de permissões, é retornado `VRC_PERMISSION_ERROR` e a gravação não é iniciada.

\ <br>
