TalkBack — cos’è, gesti di controllo e configurazione su Android

Autore: IT Sectr Pubblicato: 2026-05-15 Tempo di lettura: 8 min

TalkBack è un lettore schermo integrato di Google per Android, che fa parte del pacchetto Android Accessibility Suite. Esso vocalizza gli elementi dell’interfaccia e consente di controllare il dispositivo tramite gesti, offrendo agli utenti non vedenti e ipovedenti pieno accesso alle funzionalità dello smartphone. Secondo Google Accessibility Help (2025), TalkBack è preinstallato sulla maggior parte dei dispositivi Android e supporta oltre 30 lingue con diversi motori vocali.

Punti chiave

  • TalkBack è un lettore schermo integrato di Google per Android con controllo gestuale e feedback vocale
  • Il focus di accessibilità evidenzia l’elemento che TalkBack sta vocalizzando con un contorno giallo
  • I gesti includono tocco (vocalizzazione), doppio tocco (attivazione) e scorrimento a tre dita
  • Gli sviluppatori configurano l’accessibilità tramite contentDescription e AccessibilityNodeInfo
  • TalkBack si integra con Google Assistant e display braille

Cos’è TalkBack?

TalkBack è un lettore schermo per Android, sviluppato da Google e parte di Android Accessibility Suite. Fornisce feedback vocale e controllo gestuale per utenti con disabilità visive. TalkBack funziona su smartphone, tablet, Smart TV e dispositivi indossabili con Wear OS.

TalkBack è apparso per la prima volta in Android 1.6 (Donut) nel 2009. Inizialmente era un progetto separato, ma con il rilascio di Android 4.0 (Ice Cream Sandwich) è diventato parte di Android Accessibility Suite — un insieme di servizi che include anche Switch Access e Select to Speak. A partire da Android 10, TalkBack è preinstallato su tutti i dispositivi con servizi Google Play, inclusi i dispositivi partner — Samsung, Xiaomi, Oppo e altri.

TalkBack supporta oltre 30 lingue con vari motori vocali: Google Text-to-Speech, Samsung TTS e di terze parti. Per l’italiano, Google TTS fornisce una pronuncia naturale e un’intonazione corretta. L’utente può regolare la velocità della voce, il tono e selezionare il genere della voce nelle impostazioni di TalkBack.

Come funziona TalkBack?

TalkBack funziona basandosi su AccessibilityService — un meccanismo di sistema in Android che consente alle app di ricevere informazioni sullo stato dell’interfaccia e interagire programmaticamente con essa. Quando TalkBack è attivo, intercetta tutti gli eventi tattili e li trasforma in gesti speciali del lettore schermo.

Focus di accessibilità

L’elemento chiave del funzionamento di TalkBack è il focus di accessibilità. A differenza del focus di input standard, che appare come un evidenziazione del campo di testo, il focus di accessibilità viene visualizzato come un contorno giallo attorno all’elemento ed è invisibile per gli utenti senza TalkBack. Quando il focus di accessibilità raggiunge un elemento, TalkBack ne vocalizza il contenuto, il tipo e lo stato.

L’utente sposta il focus di accessibilità utilizzando i gesti: scorrere a destra — elemento successivo, scorrere a sinistra — elemento precedente. Gli elementi vengono percorsi nell’ordine definito da AccessibilityNodeInfo — l’albero di accessibilità che Android costruisce per ogni schermata. Lo sviluppatore può influenzare l’ordine tramite le proprietà accessibilityTraversalBefore e accessibilityTraversalAfter, il che è particolarmente importante per schermate complesse con layout personalizzati.

AccessibilityNodeInfo e l’albero di accessibilità

Ogni View sullo schermo è rappresentata da un nodo nell’albero di accessibilità — un oggetto AccessibilityNodeInfo. Questo oggetto contiene: il testo dell’elemento (contentDescription o testo della view), il tipo di elemento (pulsante, casella di controllo, campo di input), lo stato (attivato/disattivato/selezionato), la posizione sullo schermo e un elenco di azioni disponibili. TalkBack percorre questo albero e vocalizza ogni nodo nell’ordine di percorso.

Se una View non ha contenuto testuale (ad esempio, un ImageView senza descrizione), diventa invisibile per TalkBack — l’utente non saprà della sua esistenza. Per risolvere questo problema, lo sviluppatore imposta contentDescription — una descrizione testuale che TalkBack pronuncia invece del silenzio. Android supporta anche stateDescription per elementi con stato modificabile (selezionato/deselezionato) e hintText per campi di input con suggerimenti.

Gesti di controllo di TalkBack

TalkBack trasforma i gesti standard di Android in gesti speciali del lettore schermo. La maggior parte delle operazioni viene eseguita con una o due dita, mentre i gesti a tre dita sono riservati per azioni globali.

AzioneGestoRisultato
Vocalizza elementoTocco singoloPronuncia nome e tipo dell’elemento
AttivaDoppio toccoPressione pulsante o navigazione
SuccessivoScorrere a destraElemento successivo
PrecedenteScorrere a sinistraElemento precedente
ScorriScorrimento a 2 ditaScorrimento elenco
Menu TalkBackScorrere su-sinistraMenu globale impostazioni

Il gesto scorrere su-sinistra (scorrimento a forma di L) apre il menu globale di TalkBack, dove l’utente può cambiare la velocità della voce, attivare la tendina schermo, avviare un tutorial o aprire le impostazioni. TalkBack supporta anche un menu contestuale per gli elementi: scorrere su-destra apre un elenco di azioni disponibili per l’elemento corrente (ad esempio, “Copia”, “Incolla” per un campo di testo o “Elimina” per un messaggio chat).

TalkBack nello sviluppo mobile

Android fornisce una ricca API per la configurazione dell’accessibilità. Il livello base è contentDescription, ma per un supporto di qualità di TalkBack è necessario lavorare con AccessibilityNodeInfo, AccessibilityDelegate e LiveRegion.

ContentDescription e attributi importanti

L’attributo android:contentDescription imposta la descrizione testuale dell’elemento per TalkBack. È obbligatorio per ImageView, ImageButton, FloatingActionButton e qualsiasi View personalizzata senza contenuto testuale. Per gli elementi standard (TextView, Button) contentDescription è facoltativo — TalkBack leggerà il testo automaticamente.

kotlin
val avatarView = ImageView(this)
avatarView.contentDescription = "Avatar utente"
avatarView.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_YES

val playButton = ImageButton(this)
playButton.contentDescription = "Riproduci video"

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

Il flag importantForAccessibility controlla la visibilità dell’elemento per TalkBack. Il valore NO nasconde l’elemento dall’albero di accessibilità — utile per immagini decorative, indicatori e sfondi personalizzati. Il valore YES include forzatamente l’elemento nel percorso anche se non ha testo. È importante non abusare di NO: nascondere elementi semanticamente importanti rende l’app inaccessibile per gli utenti di TalkBack.

AccessibilityDelegate e azioni personalizzate

Per Views personalizzate che non utilizzano gestori di clic standard, è necessario sovrascrivere AccessibilityDelegate — una classe che gestisce gli eventi di accessibilità. Il delegato consente di impostare descrizioni personalizzate, tipi di elemento ed elenchi di azioni disponibili che TalkBack offrirà all’utente tramite il menu contestuale.

kotlin
class CustomButtonDelegate : View.AccessibilityDelegate() {
    override fun onInitializeAccessibilityNodeInfo(
        host: View, info: AccessibilityNodeInfoCompat
    ) {
        super.onInitializeAccessibilityNodeInfo(host, info)
        info.text = "Pulsante personalizzato"
        info.className = Button::class.java.name
        info.addAction(
            AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                R.id.custom_action, "Condividi"
            )
        )
    }

    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)
    }
}

Nell’esempio, il delegato comunica a TalkBack che l’elemento è un pulsante (className = Button) e fornisce un’azione personalizzata “Condividi” che apparirà nel menu contestuale di TalkBack. Il metodo performAccessibilityAction gestisce l’invocazione di questa azione. Senza un delegato, TalkBack tratterebbe la View personalizzata come una semplice area non interattiva e l’utente non potrebbe interagire con essa.

Configurare l’accessibilità per TalkBack

Il supporto completo di TalkBack include non solo contentDescription ma anche gestione del focus, LiveRegion per aggiornamenti dinamici, test con il lettore schermo attivato e adattamento per diverse versioni di Android.

LiveRegion per contenuti dinamici

Quando il contenuto dello schermo cambia senza un’azione esplicita dell’utente (ad esempio, appare una notifica di un nuovo messaggio o viene aggiornato un contatore di like), TalkBack deve ricevere una notifica. Per questo, si utilizza l’attributo android:accessibilityLiveRegion per una View in XML o il metodo setAccessibilityLiveRegion() nel codice. Il valore polite aggiunge l’annuncio dopo che la vocalizzazione corrente termina, mentre assertive la interrompe immediatamente.

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

// Quando il testo viene aggiornato, TalkBack annuncerà
// automaticamente la modifica
statusText.text = "Nuovo messaggio da Anna"

// Per le notifiche critiche — assertive
errorBanner.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE

LiveRegion è l’equivalente Android di UIAccessibility.post su iOS. Utilizzare polite per la maggior parte degli aggiornamenti (nuovi messaggi, aggiornamenti di stato) e assertive solo per errori critici (pagamento fallito, perdita di connessione). L’uso eccessivo di assertive crea un’esperienza utente negativa — TalkBack interromperà costantemente la vocalizzazione corrente.

Raggruppamento e provider di accessibilità

Per schermate complesse dove più Views formano un’unica unità logica, si utilizza AccessibilityNodeProvider o focusSearch per sovrascrivere la navigazione. Ad esempio, un calendario personalizzato con 42 celle (6 settimane × 7 giorni) non dovrebbe costringere l’utente a scorrere tutti i 42 elementi per raggiungere il blocco successivo. Lo sviluppatore può raggruppare le celle in unità logiche: mese → settimana → giorno.

Per Jetpack Compose, il modificatore .semantics {} fornisce un’API simile: contentDescription, liveRegion, stateDescription, disabled e customActions. Compose supporta anche mergeDescendants per unire semantiche figlie in una, semplificando il raggruppamento degli elementi senza configurazione manuale di accessibilityDelegate per ogni View.

kotlin
Button(
    onClick = { sendMessage() },
    modifier = Modifier.semantics {
        contentDescription("Invia messaggio")
        stateDescription("Pronto per l’invio")
    }
) {
    Icon(Icons.Filled.Send, "Invia")
}

Il test di TalkBack viene eseguito utilizzando un dispositivo fisico o un emulatore con il servizio attivato. Si consiglia di percorrere gli scenari utente principali con lo schermo spento (Screen Curtain) — questo simula la completa assenza di feedback visivo. Android fornisce inoltre Accessibility Scanner — uno strumento per il rilevamento automatico dei problemi di accessibilità, che evidenzia elementi senza contentDescription, aree tattili troppo piccole e basso contrasto.

Domande frequenti

Come attivare TalkBack su Android?

Impostazioni → Accessibilità → TalkBack → Attiva. Per un’attivazione rapida, premere entrambi i tasti del volume contemporaneamente per 3 secondi. Google Assistant può anche attivare TalkBack con il comando vocale “Attiva TalkBack”.

Qual è la differenza tra TalkBack e VoiceOver?

TalkBack è un lettore schermo per Android, VoiceOver è per iOS. TalkBack utilizza AccessibilityService e il focus di accessibilità con contorno giallo, mentre VoiceOver utilizza UIAccessibility e il rotore. Gesti e menu differiscono: TalkBack ha scorrimenti a forma di L per il menu globale.

Come rendere la mia app compatibile con TalkBack?

Impostare contentDescription per tutti gli ImageView e gli elementi personalizzati. Utilizzare importantForAccessibility per nascondere elementi decorativi. Configurare accessibilityLiveRegion per aggiornamenti dinamici e verificare con Accessibility Scanner. In Compose, utilizzare il modificatore .semantics{}.

Cos’è AccessibilityNodeInfo?

È un oggetto che rappresenta un elemento dell’interfaccia nell’albero di accessibilità. Contiene testo, tipo, stato, posizione e un elenco di azioni. TalkBack percorre questo albero per la navigazione. Lo sviluppatore può modificarlo tramite AccessibilityDelegate o attributi XML.

Perché TalkBack non vocalizza il mio pulsante?

Controllare importantForAccessibility — potrebbe essere impostato su NO. Assicurarsi che contentDescription sia impostato per elementi senza testo. Per Views personalizzate, implementare AccessibilityDelegate con onInitializeAccessibilityNodeInfo. Utilizzare Accessibility Scanner per la diagnostica.

Riepilogo

  • TalkBack è un lettore schermo integrato Android in Android Accessibility Suite con controllo gestuale
  • Il focus di accessibilità con contorno giallo segna l’elemento attualmente vocalizzato sullo schermo
  • AccessibilityService intercetta eventi tattili e li trasforma in gesti del lettore schermo
  • I gesti includono tocco (vocalizzazione), doppio tocco (attivazione) e scorrimenti a forma di L (menu)
  • Sviluppo tramite contentDescription, AccessibilityDelegate, LiveRegion e semantics in Compose
  • Aggiornamenti dinamici richiedono android:accessibilityLiveRegion per annuncio automatico dei cambiamenti
  • Test con Accessibility Scanner e Screen Curtain sono essenziali per un supporto di qualità

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche