CameraX para Kotlin: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

CameraX para Kotlin: guia completo com exemplos práticos

1. O que é e para que serve

CameraX é uma biblioteca do Google para desenvolvimento de câmeras no Android, escrita em Kotlin e Java. Ela oferece uma API simples e consistente para trabalhar com a câmera, abstraindo a complexidade das APIs de baixo nível do Camera2. A CameraX resolve diversos problemas enfrentados por desenvolvedores: suporte a diferentes versões do Android, compatibilidade com vários fabricantes de dispositivos, gerenciamento do ciclo de vida de Activity/Fragment e rotação de tela.

Por que usar CameraX? Primeiro, ela simplifica drasticamente o desenvolvimento: em vez de centenas de linhas de código para configurar a câmera, visualização prévia e captura de imagens, você escreve apenas 10 a 20 linhas. Segundo, garante compatibilidade com dispositivos a partir do Android 5.0 (API 21). Terceiro, a CameraX lida automaticamente com cenários complexos, como alternar entre câmeras, mudar orientação e preservar o estado ao girar a tela. Quarto, a biblioteca inclui extensões integradas (Extensions), como HDR, modo noturno e modo retrato, que funcionam na maioria dos dispositivos sem configurações adicionais.

A CameraX é ideal para aplicativos que exigem integração rápida de câmera: mensageiros, redes sociais, apps de leitura de QR Code, aplicativos de videochamada e câmeras simples. Se você precisa criar um aplicativo profissional com controle total sobre cada quadro (por exemplo, para visão computacional ou gravação de vídeo profissional), talvez deva considerar o Camera2, mas para 90% dos casos, a CameraX é a melhor escolha.

2. Instalação

A CameraX é instalada através do sistema de build Gradle. Para projetos Kotlin, adicione as dependências no arquivo build.gradle (Module: app).

Comando exato (Gradle):

dependencies {
    // Core CameraX
    def camerax_version = "1.3.1"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"
    implementation "androidx.camera:camera-view:${camerax_version}"

    // Se precisar de extensões (HDR, modo noturno, etc.)
    implementation "androidx.camera:camera-extensions:${camerax_version}"

    // Para vídeo
    implementation "androidx.camera:camera-video:${camerax_version}"
}

Certifique-se também de que o repositório Google está configurado no build.gradle (Project):

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

Após adicionar as dependências, sincronize o projeto (Sync Now).

3. Início rápido — exemplo mínimo funcional

Crie uma nova Activity ou Fragment. No layout (XML), adicione o PreviewView:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.camera.view.PreviewView
        android:id="@+id/viewFinder"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Agora, o código da Activity em Kotlin:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.CameraSelector
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors

class MainActivity : AppCompatActivity() {
    private lateinit var cameraExecutor: E                    

Recommendations