TalkBack — co to je, ovládací gesta a nastavení na Android

Autor: IT Sectr Publikováno: 2026-05-15 Doba čtení: 8 min

TalkBack — vestavěná čtečka obrazovky (screen reader) od Google pro Android, která je součástí balíčku Android Accessibility Suite. Hlasitě přeříkává prvky rozhraní a umožňuje ovládání zařízení pomocí gest, poskytuje nevidomým a slabozrakým uživatelům plný přístup k funkcím smartphonu. Podle Google Accessibility Help (2025) je TalkBack předinstalován na většině zařízení Android a podporuje více než 30 jazyků s různými hlasovými motory.

Hlavní body

  • TalkBack — vestavěná čtečka obrazovky Google pro Android s ovládáním gesty a hlasovou zpětnou vazbou
  • Fokus přístupnosti zvýrazňuje prvek, který TalkBack právě přeříkává, žlutým rámečkem
  • Gesta zahrnují dotyk (přeříkávání), dvojitý dotyk (aktivace) a přetažení třemi prsty
  • Vývojáři nastavují přístupnost přes contentDescription a AccessibilityNodeInfo
  • TalkBack se integruje s Google Assistant a brailleovými displeji

Co je TalkBack?

TalkBack — je čtečka obrazovky (screen reader) pro Android, vyvinutá společností Google a součást Android Accessibility Suite. Poskytuje hlasovou zpětnou vazbu a ovládání gesty pro uživatele s poruchami zraku. TalkBack může fungovat na chytrých telefonech, tabletech, Smart TV a nositelných zařízeních s Wear OS.

TalkBack se poprvé objevil v Android 1.6 (Donut) v roce 2009. Původně to byl samostatný projekt, ale s vydáním Android 4.0 (Ice Cream Sandwich) se stal součástí Android Accessibility Suite — sady služeb, která zahrnuje také Switch Access a Select to Speak. Od Android 10 je TalkBack předinstalován na všech zařízeních se službami Google Play, včetně zařízení partnerů — Samsung, Xiaomi, Oppo a dalších.

TalkBack podporuje více než 30 jazyků s různými hlasovými motory: Google Text-to-Speech, Samsung TTS a externími. Pro češtinu se používá hlasový motor Google TTS, který zajišťuje přirozenou výslovnost a správnou intonaci. Uživatel může nastavit rychlost řeči, výšku tónu a vybrat pohlaví hlasu v nastavení TalkBack.

Jak funguje TalkBack?

TalkBack funguje na základě služby přístupnosti (AccessibilityService) — systémového mechanismu Android, který umožňuje aplikacím získávat informace o stavu rozhraní a programově s ním interagovat. Když je TalkBack zapnutý, zachycuje všechny dotykové události a převádí je na speciální gesta čtečky obrazovky.

Fokus přístupnosti

Klíčovým prvkem fungování TalkBack je fokus přístupnosti (accessibility focus). Na rozdíl od standardního fokusu vstupu, který je viditelný jako zvýraznění textového pole, se fokus přístupnosti zobrazuje jako žlutý rámeček kolem prvku a je neviditelný pro uživatele bez TalkBack. Když fokus přístupnosti dopadne na prvek, TalkBack přeříkává jeho obsah, typ a stav.

Uživatel přesouvá fokus přístupnosti gesty: přetažení doprava — další prvek, přetažení doleva — předchozí prvek. Prvky se procházejí v pořadí určeném AccessibilityNodeInfo — stromem přístupnosti, který Android vytváří pro každou obrazovku. Vývojář může ovlivnit pořadí pomocí vlastností accessibilityTraversalBefore a accessibilityTraversalAfter, což je důležité zejména pro složité obrazovky s vlastním rozložením.

AccessibilityNodeInfo a strom přístupnosti

Každý View na obrazovce je reprezentován uzlem ve stromu přístupnosti — objektem AccessibilityNodeInfo. Tento objekt obsahuje: text prvku (contentDescription nebo text view), typ prvku (tlačítko, zaškrtávací políčko, vstupní pole), stav (zapnuto/vypnuto/vybráno), pozici na obrazovce a seznam dostupných akcí. TalkBack prochází tento strom a přeříkává každý uzel v pořadí procházení.

Pokud View nemá textový obsah (např. ImageView bez popisu), stává se neviditelným pro TalkBack — uživatel se o jeho existenci nedozví. K vyřešení tohoto problému vývojář nastaví contentDescription — textový popis, který TalkBack vysloví místo ticha. Android také podporuje stateDescription pro prvky s měnitelným stavem (vybráno/nevybráno) a hintText pro vstupní pole s nápovědou.

Ovládací gesta TalkBack

TalkBack převádí standardní Android gesta na speciální gesta čtečky obrazovky. Většina operací se provádí jedním nebo dvěma prsty, přičemž gesta třemi prsty jsou vyhrazena pro globální akce.

AkceGestoVýsledek
Přeříknout prvekDotyč 1 prstemVysloví název a typ prvku
AktivovatDvojitý dotykStisknutí tlačítka nebo přechod
DalšíPřetažení dopravaDalší prvek
PředchozíPřetažení dolevaPředchozí prvek
Posouvání2 prsty přetaženíPosouvání seznamu
Menu TalkBackPřetažení nahoru-dolevaGlobální menu nastavení

Gesto „přetažení nahoru-doleva" (přetažení ve tvaru L) otevře globální menu TalkBack, kde uživatel může změnit rychlost řeči, zapnout závěs obrazovky, spustit tutoriál nebo otevřít nastavení. TalkBack také podporuje kontextové menu pro prvky: přetažení nahoru-doprava otevře seznam dostupných akcí pro aktuální prvek (například „kopírovat", „vložit" pro textové pole nebo „smazat" pro zprávu v chatu).

TalkBack v mobilním vývoji

Android poskytuje bohaté API pro nastavení přístupnosti. Základní úrovní je contentDescription, ale pro kvalitní podporu TalkBack je vyžadována práce s AccessibilityNodeInfo, AccessibilityDelegate a LiveRegion.

ContentDescription a důležité atributy

Atribut android:contentDescription nastavuje textový popis prvku pro TalkBack. Je povinný pro ImageView, ImageButton, FloatingActionButton a všechna vlastní View bez textového obsahu. Pro standardní prvky (TextView, Button) je contentDescription volitelný — TalkBack přečte text automaticky.

kotlin
val avatarView = ImageView(this)
avatarView.contentDescription = "Avatar uživatele"
avatarView.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_YES

val playButton = ImageButton(this)
playButton.contentDescription = "Přehrát video"

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

Příznak importantForAccessibility řídí viditelnost prvku pro TalkBack. Hodnota NO skryje prvek ze stromu přístupnosti — užitečné pro dekorativní obrázky, indikátory a vlastní pozadí. Hodnota YES vynuceně zahrne prvek do procházení, i když nemá text. Důležité je nezneužívat NO: skrývání sémanticky důležitých prvků činí aplikaci nepřístupnou pro uživatele TalkBack.

AccessibilityDelegate a vlastní akce

Pro vlastní View, která nepoužívají standardní obsluhu kliknutí, je třeba přepsat AccessibilityDelegate — třídu zpracovávající události přístupnosti. Delegát umožňuje nastavit vlastní popis, typ prvku a seznam dostupných akcí, které TalkBack nabídne uživateli prostřednictvím kontextového menu.

kotlin
class CustomButtonDelegate : View.AccessibilityDelegate() {
    override fun onInitializeAccessibilityNodeInfo(
        host: View, info: AccessibilityNodeInfoCompat
    ) {
        super.onInitializeAccessibilityNodeInfo(host, info)
        info.text = "Vlastní tlačítko"
        info.className = Button::class.java.name
        info.addAction(
            AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                R.id.custom_action, "Sdílet"
            )
        )
    }

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

V příkladu delegát informuje TalkBack, že prvek je tlačítko (className = Button) a poskytuje vlastní akci „Sdílet", která se zobrazí v kontextovém menu TalkBack. Metoda performAccessibilityAction zpracovává volání této akce. Bez delegátu by TalkBack vnímal vlastní View jako jednoduchou oblast bez interaktivity a uživatel by s ním nemohl interagovat.

Nastavení přístupnosti pro TalkBack

Plná podpora TalkBack zahrnuje nejen contentDescription, ale také správu fokusu, LiveRegion pro dynamické aktualizace, testování se zapnutou čtečkou obrazovky a přizpůsobení různým verzím Android.

LiveRegion pro dynamický obsah

Když se obsah obrazovky mění bez výslovné akce uživatele (např. se objeví oznámení o nové zprávě nebo se aktualizuje počítadlo lajků), TalkBack by měl obdržet oznámení. K tomu se používá atribut android:accessibilityLiveRegion pro View v XML nebo metoda setAccessibilityLiveRegion() v kódu. Hodnota polite přidá oznámení po dokončení aktuálního přeříkávání, zatímco hodnota assertive jej okamžitě přeruší.

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

// Při aktualizaci textu TalkBack automaticky
// oznámí změnu
statusText.text = "Nová zpráva od Anny"

// Pro kritická oznámení — assertive
errorBanner.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE

LiveRegion je ekvivalent UIAccessibility.post na iOS. Používejte polite pro většinu aktualizací (nové zprávy, aktualizace stavu) a assertive pouze pro kritické chyby (neúspěšná platba, ztráta připojení). Nadměrné používání assertive vytváří negativní uživatelskou zkušenost — TalkBack bude neustále přerušovat aktuální přeříkávání.

Seskupování a poskytovatelé přístupnosti

Pro složité obrazovky, kde několik View tvoří jednu logickou jednotku, se používá AccessibilityNodeProvider nebo focusSearch pro přepsání navigace. Například vlastní kalendář se 42 buňkami (6 týdnů × 7 dní) by neměl nutit uživatele procházet všech 42 prvků, aby se dostal k dalšímu bloku. Vývojář může buňky spojit do logických skupin: měsíc → týden → den.

Pro Jetpack Compose se používá modifikátor .semantics {}, který poskytuje podobné API: contentDescription, liveRegion, stateDescription, disabled a customActions. Compose také podporuje mergeDescendants pro sloučení dětských sémantik do jedné, což zjednodušuje seskupování prvků bez ručního nastavení accessibilityDelegate pro každé View.

kotlin
Button(
    onClick = { sendMessage() },
    modifier = Modifier.semantics {
        contentDescription("Odeslat zprávu")
        stateDescription("Připraveno k odeslání")
    }
) {
    Icon(Icons.Filled.Send, "Odeslat")
}

Testování TalkBack se provádí pomocí fyzického zařízení nebo emulátoru se zapnutou službou. Doporučuje se projít klíčové uživatelské scénáře s vypnutou obrazovkou (Screen Curtain) — to simuluje úplnou absenci vizuální zpětné vazby. Android také poskytuje Accessibility Scanner — nástroj pro automatické odhalování problémů přístupnosti, který zvýrazňuje prvky bez contentDescription, příliš malé dotykové oblasti a nízký kontrast.

Často kladené otázky

Jak zapnout TalkBack na Android?

Nastavení → Přístupnost → TalkBack → Zapnout. Pro rychlé zapnutí se používá současné stisknutí obou tlačítek hlasitosti na 3 sekundy. Google Assistant může také zapnout TalkBack hlasovým příkazem „Zapni TalkBack".

Čím se TalkBack liší od VoiceOver?

TalkBack je čtečka obrazovky pro Android, VoiceOver pro iOS. TalkBack používá AccessibilityService a fokus přístupnosti se žlutým rámečkem, zatímco VoiceOver používá UIAccessibility a rotor. Gesta a menu se liší: TalkBack má přetažení ve tvaru L pro globální menu.

Jak udělat aplikaci kompatibilní s TalkBack?

Nastavte contentDescription pro všechny ImageView a vlastní prvky. Použijte importantForAccessibility pro skrytí dekorativních prvků. Nakonfigurujte accessibilityLiveRegion pro dynamické aktualizace a zkontrolujte pomocí Accessibility Scanner. V Compose aplikujte modifikátor .semantics{}.

Co je AccessibilityNodeInfo?

Je to objekt reprezentující prvek rozhraní ve stromu přístupnosti. Obsahuje text, typ, stav, pozici a seznam akcí. TalkBack prochází tento strom pro navigaci. Vývojář jej může měnit přes AccessibilityDelegate nebo atributy v XML.

Proč TalkBack neříká mé tlačítko?

Zkontrolujte importantForAccessibility — možná je nastaveno na NO. Ujistěte se, že contentDescription je nastaveno pro prvky bez textu. Pro vlastní View implementujte AccessibilityDelegate s onInitializeAccessibilityNodeInfo. Použijte Accessibility Scanner pro diagnostiku.

Souhrn

  • TalkBack — vestavěná čtečka obrazovky Android v Android Accessibility Suite s ovládáním gesty
  • Fokus přístupnosti se žlutým rámečkem označuje aktuálně přeříkávaný prvek na obrazovce
  • AccessibilityService zachycuje dotykové události a převádí je na gesta čtečky obrazovky
  • Gesta TalkBack zahrnují dotyk (přeříkávání), dvojitý dotyk (aktivace) a přetažení ve tvaru L (menu)
  • Vývoj přes contentDescription, AccessibilityDelegate, LiveRegion a semantics v Compose
  • Dynamické aktualizace vyžadují android:accessibilityLiveRegion pro automatické oznamování změn
  • Testování s Accessibility Scanner a Screen Curtain je povinné pro kvalitní podporu

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také