TalkBack — vad är det, kontrollgester och inställning på Android

Författare: IT Sectr Publicerad: 2026-05-15 Lästid: 8 min

TalkBack — Googles inbyggda skärmläsare (screen reader) för Android, som ingår i paketet Android Accessibility Suite. Den läser upp gränssnittselement och gör det möjligt att styra enheten med gester, vilket ger blinda och synskadade användare full tillgång till smartphone-funktioner. Enligt Google Accessibility Help (2025) är TalkBack förinstallerat på de flesta Android-enheter och stöder över 30 språk med olika röstmotor.

Huvudpunkter

  • TalkBack — Googles inbyggda skärmläsare för Android med geststyrning och röstfeedback
  • Tillgänglighetsfokus markerar elementet som TalkBack för läser upp med en gul ram
  • Gester omfattar tryckning (uppläsning), dubbeltryckning (aktivering) och svep med tre fingrar
  • Utvecklare konfigurerar tillgänglighet via contentDescription och AccessibilityNodeInfo
  • TalkBack integreras med Google Assistant och punktskriftsdisplayer

Vad är TalkBack?

TalkBack — är en skärmläsare (screen reader) för Android, utvecklad av Google och en del av Android Accessibility Suite. Den ger röstfeedback och geststyrning för användare med synnedsättning. TalkBack kan fungera på både smartphones, surfplattor, Smart TV och bärbara enheter med Wear OS.

TalkBack första gången i Android 1.6 (Donut) 2009. Ursprungligen var det ett separat projekt, men med lanseringen av Android 4.0 (Ice Cream Sandwich) blev det en del av Android Accessibility Suite — en uppsättning tjänster som även inkluderar Switch Access och Select to Speak. Från och med Android 10 är TalkBack förinstallerat på alla enheter med Google Play-tjänster, inklusive enheter från partners — Samsung, Xiaomi, Oppo och andra.

TalkBack stöder över 30 språk med olika röstmotorer: Google Text-to-Speech, Samsung TTS och tredjepartsmotorer. För svenska används röstmotorn Google TTS som ger naturligt uttal och korrekt intonation. Användaren kan justera talhastighet, tonhöjd och välja röstens kön i TalkBack-inställningarna.

Hur fungerar TalkBack?

TalkBack fungerar baserat på tillgänglighetstjänsten (AccessibilityService) — en systemmekanism i Android som gör det möjligt för appar att få information om gränssnittets status och programmatiskt interagera med det. När TalkBack är aktiverat fångar det upp alla tryckhändelser och omvandlar dem till speciella skärmläsargester.

Tillgänglighetsfokus

Nyckelelementet i TalkBacks funktion är tillgänglighetsfokus (accessibility focus). Till skillnad från standard inmatningsfokus, som är synligt som en markering av ett textfält, visas tillgänglighetsfokus som en gul ram runt elementet och är osynligt för användaren utan TalkBack. När tillgänglighetsfokus når ett element läser TalkBack upp dess innehåll, typ och status.

Användaren flyttar tillgänglighetsfokus med gester: svep åt höger — nästa element, svep åt vänster — föregående element. Elementen genomlöps i den ordning som bestäms av AccessibilityNodeInfo — tillgänglighetsträdet som Android bygger för varje skärm. Utvecklaren kan påverka ordningen genom egenskaperna accessibilityTraversalBefore och accessibilityTraversalAfter, vilket är särskilt viktigt för komplexa skärmar med anpassad layout.

AccessibilityNodeInfo och tillgänglighetsträd

Varje View på skärmen representeras av en nod i tillgänglighetsträdet — ett AccessibilityNodeInfo-objekt. Detta objekt innehåller: elementets text (contentDescription eller view-text), elementets typ (knapp, kryssruta, inmatningsfält), status (påslagen/avstängd/vald), position på skärmen och en lista över tillgängliga åtgärder. TalkBack går igenom detta träd och läser upp varje nod i genomgångsordning.

Om en View inte har något textinnehåll (t.ex. en ImageView utan beskrivning) blir den osynlig för TalkBack — användaren kommer inte att veta om dess existens. För att lösa detta problem ställer utvecklaren in contentDescription — en textbeskrivning som TalkBack uttalar istället för tystnad. Android stöder även stateDescription för element med ändringsbar status (vald/inte vald) och hintText för inmatningsfält med ledtråd.

TalkBack kontrollgester

TalkBack omvandlar standard Android-gester till speciella skärmläsargester. De flesta operationer utförs med ett eller två fingrar, och gester med tre fingrar är reserverade för globala åtgärder.

ÅtgärdGestResultat
Läs upp elementTryck med 1 fingerUttalar elementets namn och typ
AktiveraDubbeltryckTryck på knapp eller navigera
NästaSvep åt högerNästa element
FöregåendeSvep åt vänsterFöregående element
Rulla2 fingrar svepRulla lista
TalkBack-menySvep uppåt-vänsterGlobal inställningsmeny

Gest “svep uppåt-vänster” (L-format svep) öppnar TalkBacks globala meny där användaren kan ändra talhastighet, aktivera skärmgardin, starta handledningen eller öppna inställningar. TalkBack stöder även kontextmeny för element: svep uppåt-höger öppnar en lista över tillgängliga åtgärder för det aktuella elementet (t.ex. ”kopiera”, ”klistra in” för ett textfält eller ”ta bort” för ett chattmeddelande).

TalkBack i mobilutveckling

Android erbjuder ett rikt API för att konfigurera tillgänglighet. Grundnivån är contentDescription, men för kvalitativt stöd av TalkBack krävs arbete med AccessibilityNodeInfo, AccessibilityDelegate och LiveRegion.

ContentDescription och viktiga attribut

Attributet android:contentDescription ställer in elementets textbeskrivning för TalkBack. Det är obligatoriskt för ImageView, ImageButton, FloatingActionButton och alla anpassade View-objekt utan textinnehåll. För standardelement (TextView, Button) är contentDescription valfritt — TalkBack läser texten automatiskt.

kotlin
val avatarView = ImageView(this)
avatarView.contentDescription = "Användaravatar"
avatarView.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_YES

val playButton = ImageButton(this)
playButton.contentDescription = "Spela upp video"

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

Flaggan importantForAccessibility styr elementets synlighet för TalkBack. Värdet NO döljer elementet från tillgänglighetsträdet — användbart för dekorativa bilder, indikatorer och anpassade bakgrunder. Värdet YES tvingar in elementet i genomgången, även om det inte har någon text. Det är viktigt att inte missbruka NO: att dölja semantiskt viktiga element gör appen otillgänglig för TalkBack-användare.

AccessibilityDelegate och anpassade åtgärder

För anpassade View-objekt som inte använder standardklickhanterare måste AccessibilityDelegate överskrivas — klassen som bearbetar tillgänglighetshändelser. Delegaten gör det möjligt att ställa in anpassad beskrivning, elementtyp och en lista över tillgängliga åtgärder som TalkBack kommer att erbjuda användaren via kontextmenyn.

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

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

I exemplet informerar delegaten TalkBack om att elementet är en knapp (className = Button) och tillhandahåller den anpassade åtgärden ”Dela“ som kommer att visas i TalkBacks kontextmeny. Metoden performAccessibilityAction bearbetar anropet av denna åtgärd. Utan delegat skulle TalkBack uppfatta den anpassade Viewen som ett enkelt område utan interaktivitet, och användaren skulle inte kunna interagera med den.

Inställning av tillgänglighet för TalkBack

Fullständigt stöd för TalkBack inkluderar inte bara contentDescription, utan även fokushantering, LiveRegion för dynamiska uppdateringar, testning med påslagen skärmläsare och anpassning till olika Android-versioner.

LiveRegion för dynamiskt innehåll

När skärminnehållet ändras utan uttrycklig åtgärd från användaren (t.ex. ett meddelande om nytt meddelande visas eller like-räknaren uppdateras), måste TalkBack få en notifiering. För detta används attributet android:accessibilityLiveRegion för View i XML eller metoden setAccessibilityLiveRegion() i kod. Värdet polite lägger till ett meddelande efter att den aktuella uppläsningen är klar, medan värdet assertive avbryter den omedelbart.

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

// När text uppdateras kommer TalkBack automatiskt
// meddela ändringen
statusText.text = "Nytt meddelande från Anna"

// För kritiska meddelanden — assertive
errorBanner.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE

LiveRegion är motsvarigheten till UIAccessibility.post på iOS. Använd polite för de flesta uppdateringar (nya meddelanden, statusuppdatering) och assertive endast för kritiska fel (misslyckad betalning, förlorad anslutning). Överdriven användning av assertive skapar en negativ användarupplevelse — TalkBack kommer ständigt att avbryta den aktuella uppläsningen.

Gruppering och tillgänglighetsleverantörer

För komplexa skärmar där flera View-objekt bildar en logisk enhet används AccessibilityNodeProvider eller focusSearch för att åsidosätta navigering. Till exempel bör en anpassad kalender med 42 celler (6 veckor × 7 dagar) inte tvinga användaren att bläddra igenom alla 42 element för att komma till nästa block. Utvecklaren kan kombinera celler i logiska grupper: månad → vecka → dag.

För Jetpack Compose används modifieraren .semantics {}, som erbjuder ett liknande API: contentDescription, liveRegion, stateDescription, disabled och customActions. Compose stöder även mergeDescendants för att slå ihop barnsemantik till en, vilket förenklar gruppering av element utan manuell konfiguration av accessibilityDelegate för varje View.

kotlin
Button(
    onClick = { sendMessage() },
    modifier = Modifier.semantics {
        contentDescription("Skicka meddelande")
        stateDescription("Redo att skickas")
    }
) {
    Icon(Icons.Filled.Send, "Skicka")
}

Testning av TalkBack görs via en fysisk enhet eller emulator med aktiverad tjänst. Det rekommenderas att gå igenom viktiga användarscenarier med avstängd skärm (Screen Curtain) — detta simulerar fullständig avsaknad av visuell feedback. Android erbjuder även Accessibility Scanner — ett verktyg för automatisk upptäckt av tillgänglighetsproblem som markerar element utan contentDescription, för små tryckområden och låg kontrast.

Vanliga frågor

Hur aktiverar jag TalkBack på Android?

Inställningar → Tillgänglighet → TalkBack → Aktivera. För snabb aktivering används samtidig tryckning av båda volymknapparna i 3 sekunder. Google Assistant kan även aktivera TalkBack med röstkommandot ”Aktivera TalkBack“.

Vad är skillnaden mellan TalkBack och VoiceOver?

TalkBack är skärmläsare för Android, VoiceOver är för iOS. TalkBack använder AccessibilityService och tillgänglighetsfokus med gul ram, medan VoiceOver använder UIAccessibility och rotor. Gester och menyer skiljer sig åt: TalkBack har L-format svep för global meny.

Hur gör jag en app kompatibel med TalkBack?

Ställ in contentDescription för alla ImageView och anpassade element. Använd importantForAccessibility för att dölja dekorativa element. Konfigurera accessibilityLiveRegion för dynamiska uppdateringar och kontrollera via Accessibility Scanner. I Compose, använd modifieraren .semantics{}.

Vad är AccessibilityNodeInfo?

Det är ett objekt som representerar ett gränssnittselement i tillgänglighetsträdet. Innehåller text, typ, status, position och lista över åtgärder. TalkBack går igenom detta träd för navigering. Utvecklaren kan ändra det via AccessibilityDelegate eller attribut i XML.

Varför läser inte TalkBack upp min knapp?

Kontrollera importantForAccessibility — det kan vara inställt på NO. Säkerställ att contentDescription är inställt för element utan text. För anpassade View-objekt, implementera AccessibilityDelegate med onInitializeAccessibilityNodeInfo. Använd Accessibility Scanner för diagnos.

Sammanfattning

  • TalkBack — inbyggd Android-skärmläsare i Android Accessibility Suite med geststyrning
  • Tillgänglighetsfokus med gul ram markerar det aktuella upplästa elementet på skärmen
  • AccessibilityService fångar tryckhändelser och omvandlar dem till skärmläsargester
  • TalkBack-gester omfattar tryckning (uppläsning), dubbeltryckning (aktivering) och L-format svep (meny)
  • Utveckling via contentDescription, AccessibilityDelegate, LiveRegion och semantics i Compose
  • Dynamiska uppdateringar kräver android:accessibilityLiveRegion för automatisk annonsering av ändringar
  • Testning med Accessibility Scanner och Screen Curtain är obligatoriskt för kvalitativt stöd

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också