TalkBack — ang built-in na screen reader mula sa Google para sa Android, na bahagi ng Android Accessibility Suite package. Biniboses nito ang mga elemento ng interface at pinapayagan ang pag-kontrol ng device gamit ang mga galaw, na nagbibigay sa mga bulag at may kapansanan sa paningin ng buong access sa mga function ng smartphone. Ayon sa Google Accessibility Help (2025), ang TalkBack ay naka-preinstall sa karamihan ng Android device at sumusuporta sa mahigit 30 wika na may iba’t ibang voice engine.
Mga pangunahing punto
TalkBack — ay isang screen reader para sa Android, na binuo ng Google at bahagi ng Android Accessibility Suite. Nagbibigay ito ng voice feedback at kontrol sa galaw para sa mga user na may kapansanan sa paningin. Maaaring gumana ang TalkBack sa mga smartphone, tablet, Smart TV, at wearable device na may Wear OS.
Unang lumitaw ang TalkBack sa Android 1.6 (Donut) noong 2009. Sa simula ito ay isang hiwalay na proyekto, ngunit sa paglabas ng Android 4.0 (Ice Cream Sandwich) ito ay naging bahagi ng Android Accessibility Suite — isang set ng mga serbisyo na kinabibilangan din ng Switch Access at Select to Speak. Simula sa Android 10, ang TalkBack ay naka-preinstall sa lahat ng device na may mga serbisyo ng Google Play, kabilang ang mga device ng mga kasosyo — Samsung, Xiaomi, Oppo at iba pa.
TalkBack sumusuporta sa mahigit 30 wika na may iba’t ibang voice engine: Google Text-to-Speech, Samsung TTS, at third-party engine. Para sa Filipino ay ginagamit ang Google TTS voice engine na nagbibigay ng natural na pagbigkas at tamang intonasyon. Maaaring ayusin ng user ang bilis ng pagsasalita, tono, at pumili ng kasarian ng boses sa mga setting ng TalkBack.
Gumagana ang TalkBack batay sa accessibility service (AccessibilityService) — isang system mechanism ng Android na nagpapahintulot sa mga app na makakuha ng impormasyon tungkol sa estado ng interface at makipag-ugnayan dito nang programmatically. Kapag naka-on ang TalkBack, ini-intercept nito ang lahat ng touch event at ginagawang mga espesyal na galaw ng screen reader.
Ang pangunahing elemento ng paggana ng TalkBack — accessibility focus. Hindi tulad ng standard input focus na nakikita bilang highlight ng text field, ang accessibility focus ay ipinapakita bilang dilaw na frame sa paligid ng elemento at invisible sa user na walang TalkBack. Kapag ang accessibility focus ay napunta sa isang elemento, biniboses ng TalkBack ang nilalaman, uri at estado nito.
Inililipat ng user ang accessibility focus gamit ang mga galaw: mag-swipe pakanan — susunod na elemento, mag-swipe pakaliwa — nakaraang elemento. Ang mga elemento ay binibisita sa pagkakasunod-sunod na tinutukoy ng AccessibilityNodeInfo — ang accessibility tree na binuo ng Android para sa bawat screen. Maaaring maimpluwensyahan ng developer ang pagkakasunod-sunod sa pamamagitan ng mga property na accessibilityTraversalBefore at accessibilityTraversalAfter, na mahalaga para sa mga kumplikadong screen na may custom na layout.
Ang bawat View sa screen ay kinakatawan ng isang node sa accessibility tree — isang AccessibilityNodeInfo object. Ang object na ito ay naglalaman ng: text ng elemento (contentDescription o text ng view), uri ng elemento (button, checkbox, input field), estado (naka-on/naka-off/napili), posisyon sa screen, at listahan ng mga available na aksyon. Binibisita ng TalkBack ang tree na ito at biniboses ang bawat node sa pagkakasunod-sunod ng pagbisita.
Kung ang View ay walang text content (hal. ImageView na walang paglalarawan), ito ay nagiging invisible para sa TalkBack — hindi malalaman ng user ang pagkakaroon nito. Upang malutas ang problemang ito, nagtatakda ang developer ng contentDescription — isang text description na binibigkas ng TalkBack sa halip na katahimikan. Sinusuportahan din ng Android ang stateDescription para sa mga elementong may nababagong estado (napili/hindi napili) at hintText para sa mga input field na may pahiwatig.
Ginagawang espesyal na galaw ng screen reader ng TalkBack ang mga standard Android gesture. Karamihan sa mga operasyon ay ginagawa gamit ang isa o dalawang daliri, at ang mga galaw na may tatlong daliri ay nakalaan para sa mga global na aksyon.
| Aksyon | Galaw | Resulta |
|---|---|---|
| Iboses ang elemento | Tap gamit ang 1 daliri | Binibigkas ang pangalan at uri ng elemento |
| I-activate | Double tap | Pindutin ang button o mag-navigate |
| Susunod | Swipe pakanan | Susunod na elemento |
| Nakaraan | Swipe pakaliwa | Nakaraang elemento |
| Mag-scroll | 2 daliri swipe | Mag-scroll ng listahan |
| Menu ng TalkBack | Swipe pataas-kaliwa | Global na menu ng mga setting |
Ang galaw na “swipe pataas-kaliwa” (L-shaped swipe) ay nagbubukas ng global na menu ng TalkBack, kung saan maaaring baguhin ng user ang bilis ng pagsasalita, i-on ang screen curtain, ilunsad ang tutorial, o buksan ang mga setting. Sinusuportahan din ng TalkBack ang context menu para sa mga elemento: swipe pataas-kanan ay nagbubukas ng listahan ng mga available na aksyon para sa kasalukuyang elemento (halimbawa, “kopyahin”, “idikit” para sa text field o “burahin” para sa mensahe sa chat).
Ang Android ay nagbibigay ng mayamang API para sa pag-configure ng accessibility. Ang pangunahing antas ay contentDescription, ngunit para sa kalidad na suporta ng TalkBack ay kinakailangan ang pagtatrabaho sa AccessibilityNodeInfo, AccessibilityDelegate at LiveRegion.
Ang attribute na android:contentDescription ay nagtatakda ng text description ng elemento para sa TalkBack. Ito ay kinakailangan para sa ImageView, ImageButton, FloatingActionButton at anumang custom na View na walang text content. Para sa mga standard na elemento (TextView, Button) ang contentDescription ay opsiyonal — awtomatikong babasahin ng TalkBack ang text.
val avatarView = ImageView(this)
avatarView.contentDescription = "Avatar ng user"
avatarView.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_YES
val playButton = ImageButton(this)
playButton.contentDescription = "I-play ang video"
val progressBar = ProgressBar(this)
progressBar.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_NO
Ang flag na importantForAccessibility ay kumokontrol sa visibility ng elemento para sa TalkBack. Ang value na NO ay nagtatago ng elemento mula sa accessibility tree — kapaki-pakinabang para sa mga decorative na larawan, indicator, at custom na background. Ang value na YES ay puwersahang isinasama ang elemento sa pagbisita, kahit na wala itong text. Mahalagang huwag abusuhin ang NO: ang pagtatago ng semantically importanteng elemento ay ginagawang hindi accessible ang app para sa mga user ng TalkBack.
Para sa mga custom na View na hindi gumagamit ng standard click handler, kailangang i-override ang AccessibilityDelegate — ang klase na nagpro-process ng accessibility events. Ang delegate ay nagpapahintulot ng pag-set ng custom na paglalarawan, uri ng elemento, at listahan ng mga available na aksyon na iaalok ng TalkBack sa user sa pamamagitan ng context menu.
class CustomButtonDelegate : View.AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
host: View, info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.text = "Custom na button"
info.className = Button::class.java.name
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat(
R.id.custom_action, "I-share"
)
)
}
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)
}
}
Sa halimbawa, ang delegate ay nagpapaalam sa TalkBack na ang elemento ay isang button (className = Button) at nagbibigay ng custom na aksyon na “I-share” na lalabas sa context menu ng TalkBack. Ang method na performAccessibilityAction ay nagpro-process ng pagtawag sa aksyong ito. Kung walang delegate, ituturing ng TalkBack ang custom na View bilang simpleng lugar na walang interaktibidad, at hindi makakapag-interact ang user dito.
Ang buong suporta ng TalkBack ay hindi lamang contentDescription, kundi pati na rin ang pamamahala ng focus, LiveRegion para sa dynamic na updates, pag-test gamit ang naka-on na screen reader, at adaptasyon sa iba’t ibang bersyon ng Android.
Kapag nagbago ang content ng screen nang walang malinaw na aksyon ng user (hal. lumitaw ang notification ng bagong mensahe o nag-update ang counter ng likes), dapat makatanggap ng notification ang TalkBack. Para dito ginagamit ang attribute na android:accessibilityLiveRegion para sa View sa XML o ang method na setAccessibilityLiveRegion() sa code. Ang value na polite ay nagdaragdag ng anunsyo pagkatapos matapos ang kasalukuyang pagboses, habang ang value na assertive ay agad itong pinuputol.
val statusText = TextView(this)
statusText.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_POLITE
// Kapag nag-update ang text, awtomatikong iaanunsyo ng TalkBack
// ang pagbabago
statusText.text = "Bagong mensahe mula kay Anna"
// Para sa kritikal na notification — assertive
errorBanner.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
LiveRegion — ay katumbas ng UIAccessibility.post sa iOS. Gamitin ang polite para sa karamihan ng updates (bagong mensahe, update ng status) at assertive lamang para sa mga kritikal na error (failed payment, pagkawala ng koneksyon). Ang labis na paggamit ng assertive ay lumilikha ng negatibong karanasan ng user — palaging puputulin ng TalkBack ang kasalukuyang pagboses.
Para sa mga kumplikadong screen kung saan maraming View ang bumubuo ng isang lohikal na yunit, ginagamit ang AccessibilityNodeProvider o focusSearch para i-override ang navigation. Halimbawa, ang custom na kalendaryo na may 42 cell (6 linggo × 7 araw) ay hindi dapat pilitin ang user na i-scroll ang lahat ng 42 elemento para pumunta sa susunod na block. Maaaring pagsamahin ng developer ang mga cell sa lohikal na grupo: buwan → linggo → araw.
Para sa Jetpack Compose ginagamit ang modifier na .semantics {}, na nagbibigay ng katulad na API: contentDescription, liveRegion, stateDescription, disabled at customActions. Sinusuportahan din ng Compose ang mergeDescendants para pagsamahin ang child semantics sa isa, na nagpapadali sa pag-grupo ng mga elemento nang walang manual na configuration ng accessibilityDelegate para sa bawat View.
Button(
onClick = { sendMessage() },
modifier = Modifier.semantics {
contentDescription("Magpadala ng mensahe")
stateDescription("Handa nang ipadala")
}
) {
Icon(Icons.Filled.Send, "Ipadala")
}
Ang pag-test ng TalkBack ay ginagawa sa pamamagitan ng physical device o emulator na may naka-on na serbisyo. Inirerekomenda na dumaan sa mga pangunahing user scenario na naka-off ang screen (Screen Curtain) — ito ay nag-simulate ng kumpletong kawalan ng visual feedback. Nagbibigay din ang Android ng Accessibility Scanner — isang tool para sa awtomatikong pag-detect ng mga problema sa accessibility, na nagha-highlight ng mga elementong walang contentDescription, masyadong maliit na touch area, at mababang contrast.
Mga madalas itanong
Settings → Accessibility → TalkBack → I-on. Para sa mabilis na pag-on, ginagamit ang sabayang pagpindot ng parehong volume button sa loob ng 3 segundo. Maaari ring i-on ng Google Assistant ang TalkBack sa pamamagitan ng voice command na “I-on ang TalkBack”.
TalkBack — screen reader para sa Android, VoiceOver — para sa iOS. TalkBack ay gumagamit ng AccessibilityService at accessibility focus na may dilaw na frame, habang ang VoiceOver ay gumagamit ng UIAccessibility at rotor. Ang mga galaw at menu ay magkaiba: ang TalkBack ay may L-shaped swipe para sa global menu.
Magtakda ng contentDescription para sa lahat ng ImageView at custom na elemento. Gamitin ang importantForAccessibility para itago ang decorative na elemento. I-configure ang accessibilityLiveRegion para sa dynamic na updates at suriin sa pamamagitan ng Accessibility Scanner. Sa Compose, gamitin ang modifier na .semantics{}.
Ito ay isang object na kumakatawan sa interface element sa accessibility tree. Naglalaman ng text, uri, estado, posisyon, at listahan ng mga aksyon. TalkBack ay bumibisita sa tree na ito para sa navigation. Maaaring baguhin ito ng developer sa pamamagitan ng AccessibilityDelegate o attribute sa XML.
Suriin ang importantForAccessibility — maaaring naka-set ito sa NO. Tiyakin na ang contentDescription ay naka-set para sa mga elementong walang text. Para sa custom na View, i-implement ang AccessibilityDelegate na may onInitializeAccessibilityNodeInfo. Gamitin ang Accessibility Scanner para sa diagnosis.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din