TalkBack — o que é, gestos de controle e configuração no Android

Autor: IT Sectr Publicado: 2026-05-15 Tempo de leitura: 8 min

TalkBack é um leitor de tela integrado do Google para Android, que faz parte do pacote Android Accessibility Suite. Ele narra os elementos da interface e permite controlar o dispositivo por meio de gestos, fornecendo a usuários cegos e com deficiência visual acesso total às funções do smartphone. De acordo com Google Accessibility Help (2025), o TalkBack vem pré-instalado na maioria dos dispositivos Android e suporta mais de 30 idiomas com diferentes mecanismos de voz.

Principais pontos

  • TalkBack é um leitor de tela integrado do Google para Android com controle por gestos e feedback por voz
  • Foco de acessibilidade destaca o elemento que o TalkBack está narrando com uma moldura amarela
  • Gestos incluem toque (narração), toque duplo (ativação) e deslizar com três dedos
  • Desenvolvedores configuram a acessibilidade por meio de contentDescription e AccessibilityNodeInfo
  • TalkBack integra-se com Google Assistant e displays braille

O que é o TalkBack?

TalkBack é um leitor de tela para Android, desenvolvido pelo Google e parte do Android Accessibility Suite. Ele fornece feedback por voz e controle por gestos para usuários com deficiência visual. O TalkBack funciona em smartphones, tablets, Smart TVs e dispositivos vestíveis com Wear OS.

O TalkBack apareceu pela primeira vez no Android 1.6 (Donut) em 2009. Inicialmente era um projeto separado, mas com o lançamento do Android 4.0 (Ice Cream Sandwich) tornou-se parte do Android Accessibility Suite — um conjunto de serviços que também inclui Switch Access e Select to Speak. A partir do Android 10, o TalkBack vem pré-instalado em todos os dispositivos com serviços do Google Play, incluindo dispositivos de parceiros — Samsung, Xiaomi, Oppo e outros.

O TalkBack suporta mais de 30 idiomas com vários mecanismos de voz: Google Text-to-Speech, Samsung TTS e de terceiros. Para o português, o Google TTS fornece pronúncia natural e entonação correta. O usuário pode ajustar a velocidade da fala, o tom e selecionar o gênero da voz nas configurações do TalkBack.

Como funciona o TalkBack?

O TalkBack funciona com base no AccessibilityService — um mecanismo do sistema no Android que permite que os aplicativos recebam informações sobre o estado da interface e interajam programaticamente com ela. Quando o TalkBack está ativado, ele intercepta todos os eventos de toque e os transforma em gestos especiais de leitor de tela.

Foco de acessibilidade

O elemento-chave do funcionamento do TalkBack é o foco de acessibilidade. Diferentemente do foco de entrada padrão, que aparece como um destaque de campo de texto, o foco de acessibilidade é exibido como uma moldura amarela ao redor do elemento e é invisível para usuários sem TalkBack. Quando o foco de acessibilidade chega a um elemento, o TalkBack narra seu conteúdo, tipo e estado.

O usuário move o foco de acessibilidade usando gestos: deslizar para a direita — próximo elemento, deslizar para a esquerda — elemento anterior. Os elementos são percorridos na ordem definida pelo AccessibilityNodeInfo — a árvore de acessibilidade que o Android constrói para cada tela. O desenvolvedor pode influenciar a ordem por meio das propriedades accessibilityTraversalBefore e accessibilityTraversalAfter, o que é especialmente importante para telas complexas com layouts personalizados.

AccessibilityNodeInfo e a árvore de acessibilidade

Cada View na tela é representada por um nó na árvore de acessibilidade — um objeto AccessibilityNodeInfo. Este objeto contém: o texto do elemento (contentDescription ou texto da view), tipo do elemento (botão, caixa de seleção, campo de entrada), estado (ativado/desativado/selecionado), posição na tela e uma lista de ações disponíveis. O TalkBack percorre esta árvore e narra cada nó na ordem de percurso.

Se uma View não tiver conteúdo de texto (por exemplo, um ImageView sem descrição), ela se torna invisível para o TalkBack — o usuário não saberá de sua existência. Para resolver isso, o desenvolvedor define contentDescription — uma descrição textual que o TalkBack fala em vez do silêncio. O Android também suporta stateDescription para elementos com estado mutável (marcado/desmarcado) e hintText para campos de entrada com dicas.

Gestos de controle do TalkBack

O TalkBack transforma gestos padrão do Android em gestos especiais de leitor de tela. A maioria das operações é realizada com um ou dois dedos, enquanto os gestos com três dedos são reservados para ações globais.

AçãoGestoResultado
Narrar elementoToque únicoFala o nome e tipo do elemento
AtivarToque duploPressionar botão ou navegar
PróximoDeslizar direitaPróximo elemento
AnteriorDeslizar esquerdaElemento anterior
RolarDeslizar 2 dedosRolagem de lista
Menu TalkBackDeslizar cima-esquerdaMenu global de configurações

O gesto de deslizar cima-esquerda (deslize em forma de L) abre o menu global do TalkBack, onde o usuário pode alterar a velocidade da fala, ativar a cortina de tela, iniciar um tutorial ou abrir as configurações. O TalkBack também suporta um menu de contexto para elementos: deslizar cima-direita abre uma lista de ações disponíveis para o elemento atual (por exemplo, “copiar”, “colar” para um campo de texto ou “excluir” para uma mensagem de chat).

TalkBack no desenvolvimento móvel

O Android fornece uma API rica para configuração de acessibilidade. O nível básico é o contentDescription, mas para um suporte de qualidade ao TalkBack é necessário trabalhar com AccessibilityNodeInfo, AccessibilityDelegate e LiveRegion.

ContentDescription e atributos importantes

O atributo android:contentDescription define a descrição textual do elemento para o TalkBack. É obrigatório para ImageView, ImageButton, FloatingActionButton e qualquer View personalizada sem conteúdo de texto. Para elementos padrão (TextView, Button), o contentDescription é opcional — o TalkBack lerá o texto automaticamente.

kotlin
val avatarView = ImageView(this)
avatarView.contentDescription = "Avatar do usuário"
avatarView.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_YES

val playButton = ImageButton(this)
playButton.contentDescription = "Reproduzir vídeo"

val progressBar = ProgressBar(this)
progressBar.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_NO

A flag importantForAccessibility controla a visibilidade do elemento para o TalkBack. O valor NO oculta o elemento da árvore de acessibilidade — útil para imagens decorativas, indicadores e fundos personalizados. O valor YES inclui forçosamente o elemento no percurso mesmo que não tenha texto. É importante não abusar do NO: ocultar elementos semanticamente importantes torna o aplicativo inacessível para usuários do TalkBack.

AccessibilityDelegate e ações personalizadas

Para Views personalizadas que não usam manipuladores de clique padrão, é necessário sobrescrever o AccessibilityDelegate — uma classe que lida com eventos de acessibilidade. O delegado permite definir descrições personalizadas, tipos de elemento e listas de ações disponíveis que o TalkBack oferecerá ao usuário por meio do menu de contexto.

kotlin
class CustomButtonDelegate : View.AccessibilityDelegate() {
    override fun onInitializeAccessibilityNodeInfo(
        host: View, info: AccessibilityNodeInfoCompat
    ) {
        super.onInitializeAccessibilityNodeInfo(host, info)
        info.text = "Botão personalizado"
        info.className = Button::class.java.name
        info.addAction(
            AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                R.id.custom_action, "Compartilhar"
            )
        )
    }

    override fun performAccessibilityAction(
        host: View, action: Int, args: Bundle?
    ): Boolean {
        if (action == R.id.custom_action) {
            shareContent()
            return true
        }
        return super.performAccessibilityAction(host, action, args)
    }
}

No exemplo, o delegado informa ao TalkBack que o elemento é um botão (className = Button) e fornece uma ação personalizada “Compartilhar” que aparecerá no menu de contexto do TalkBack. O método performAccessibilityAction lida com a invocação desta ação. Sem um delegado, o TalkBack trataria a View personalizada como uma área simples não interativa, e o usuário não poderia interagir com ela.

Configurar acessibilidade para o TalkBack

O suporte completo ao TalkBack inclui não apenas contentDescription, mas também gerenciamento de foco, LiveRegion para atualizações dinâmicas, testes com o leitor de tela ativado e adaptação para diferentes versões do Android.

LiveRegion para conteúdo dinâmico

Quando o conteúdo da tela muda sem uma ação explícita do usuário (por exemplo, uma notificação aparece para uma nova mensagem ou um contador de curtidas é atualizado), o TalkBack deve receber uma notificação. Para isso, usa-se o atributo android:accessibilityLiveRegion para uma View em XML ou o método setAccessibilityLiveRegion() em código. O valor polite adiciona o anúncio após a narração atual terminar, enquanto assertive o interrompe imediatamente.

kotlin
val statusText = TextView(this)
statusText.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_POLITE

// Quando o texto for atualizado, o TalkBack anunciará
// automaticamente a mudança
statusText.text = "Nova mensagem de Ana"

// Para notificações críticas — assertive
errorBanner.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE

LiveRegion é o equivalente no Android do UIAccessibility.post no iOS. Use polite para a maioria das atualizações (novas mensagens, atualizações de status) e assertive apenas para erros críticos (pagamento falhou, perda de conexão). O uso excessivo de assertive cria uma experiência negativa para o usuário — o TalkBack interromperá constantemente a narração atual.

Agrupamento e provedores de acessibilidade

Para telas complexas onde várias Views formam uma única unidade lógica, usa-se AccessibilityNodeProvider ou focusSearch para sobrescrever a navegação. Por exemplo, um calendário personalizado com 42 células (6 semanas × 7 dias) não deve forçar o usuário a percorrer todos os 42 itens para chegar ao próximo bloco. O desenvolvedor pode agrupar as células em unidades lógicas: mês → semana → dia.

Para Jetpack Compose, o modificador .semantics {} fornece uma API semelhante: contentDescription, liveRegion, stateDescription, disabled e customActions. O Compose também suporta mergeDescendants para mesclar semânticas filhas em uma, simplificando o agrupamento de elementos sem configuração manual de accessibilityDelegate para cada View.

kotlin
Button(
    onClick = { sendMessage() },
    modifier = Modifier.semantics {
        contentDescription("Enviar mensagem")
        stateDescription("Pronto para enviar")
    }
) {
    Icon(Icons.Filled.Send, "Enviar")
}

O teste do TalkBack é feito usando um dispositivo físico ou emulador com o serviço ativado. Recomenda-se percorrer os cenários principais do usuário com a tela desligada (Screen Curtain) — isso simula uma ausência total de feedback visual. O Android também fornece o Accessibility Scanner — uma ferramenta para detecção automática de problemas de acessibilidade, que destaca elementos sem contentDescription, áreas de toque muito pequenas e baixo contraste.

Perguntas frequentes

Como ativar o TalkBack no Android?

Configurações → Acessibilidade → TalkBack → Ativar. Para ativação rápida, pressione ambas as teclas de volume simultaneamente por 3 segundos. O Google Assistant também pode ativar o TalkBack com o comando de voz “Ative o TalkBack”.

Qual a diferença entre TalkBack e VoiceOver?

TalkBack é um leitor de tela para Android, VoiceOver é para iOS. O TalkBack usa AccessibilityService e foco de acessibilidade com moldura amarela, enquanto o VoiceOver usa UIAccessibility e o rotor. Os gestos e menus diferem: o TalkBack tem deslizes em forma de L para o menu global.

Como tornar meu aplicativo compatível com o TalkBack?

Defina contentDescription para todos os ImageView e elementos personalizados. Use importantForAccessibility para ocultar elementos decorativos. Configure accessibilityLiveRegion para atualizações dinâmicas e verifique com o Accessibility Scanner. No Compose, use o modificador .semantics{}.

O que é AccessibilityNodeInfo?

É um objeto que representa um elemento de interface na árvore de acessibilidade. Contém texto, tipo, estado, posição e uma lista de ações. O TalkBack percorre esta árvore para navegação. O desenvolvedor pode modificá-lo por meio de AccessibilityDelegate ou atributos XML.

Por que o TalkBack não narra meu botão?

Verifique o importantForAccessibility — pode estar definido como NO. Certifique-se de que contentDescription esteja definido para elementos sem texto. Para Views personalizadas, implemente AccessibilityDelegate com onInitializeAccessibilityNodeInfo. Use o Accessibility Scanner para diagnóstico.

Resumo

  • TalkBack é um leitor de tela integrado do Android no Android Accessibility Suite com controle por gestos
  • Foco de acessibilidade com moldura amarela marca o elemento atualmente narrado na tela
  • AccessibilityService intercepta eventos de toque e os transforma em gestos de leitor de tela
  • Gestos incluem toque (narração), toque duplo (ativação) e deslizes em forma de L (menu)
  • Desenvolvimento via contentDescription, AccessibilityDelegate, LiveRegion e semantics no Compose
  • Atualizações dinâmicas exigem android:accessibilityLiveRegion para anúncio automático de mudanças
  • Testes com Accessibility Scanner e Screen Curtain são essenciais para suporte de qualidade

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também