TalkBack — pembaca layar (screen reader) bawaan dari Google untuk Android, yang merupakan bagian dari paket Android Accessibility Suite. Ia menyuarakan elemen antarmuka dan memungkinkan pengendalian perangkat menggunakan gesture, memberikan akses penuh kepada pengguna tunanetra dan berkebutuhan visual terhadap fungsi ponsel pintar. Menurut Google Accessibility Help (2025), TalkBack sudah terpasang sebelumnya di sebagian besar perangkat Android dan mendukung lebih dari 30 bahasa dengan berbagai mesin suara.
Poin utama
TalkBack — adalah pembaca layar (screen reader) untuk Android, dikembangkan oleh Google dan merupakan bagian dari Android Accessibility Suite. Ia menyediakan umpan balik suara dan kontrol gesture bagi pengguna dengan gangguan penglihatan. TalkBack dapat berfungsi di ponsel pintar, tablet, Smart TV, dan perangkat yang dapat dikenakan dengan Wear OS.
TalkBack pertama kali muncul di Android 1.6 (Donut) pada tahun 2009. Awalnya merupakan proyek terpisah, namun dengan dirilisnya Android 4.0 (Ice Cream Sandwich) menjadi bagian dari Android Accessibility Suite — kumpulan layanan yang juga mencakup Switch Access dan Select to Speak. Mulai Android 10, TalkBack sudah terpasang sebelumnya di semua perangkat dengan layanan Google Play, termasuk perangkat mitra — Samsung, Xiaomi, Oppo, dan lainnya.
TalkBack mendukung lebih dari 30 bahasa dengan berbagai mesin suara: Google Text-to-Speech, Samsung TTS, dan mesin pihak ketiga. Untuk bahasa Indonesia digunakan mesin suara Google TTS yang memberikan pelafalan alami dan intonasi yang benar. Pengguna dapat menyesuaikan kecepatan bicara, tinggi nada, dan memilih jenis kelamin suara di pengaturan TalkBack.
TalkBack bekerja berdasarkan layanan aksesibilitas (AccessibilityService) — mekanisme sistem Android yang memungkinkan aplikasi mendapatkan informasi tentang status antarmuka dan berinteraksi secara terprogram dengannya. Saat TalkBack diaktifkan, ia mencegat semua peristiwa sentuhan dan mengubahnya menjadi gesture khusus pembaca layar.
Elemen kunci kerja TalkBack — fokus aksesibilitas (accessibility focus). Berbeda dengan fokus masukan standar yang terlihat sebagai penyorotan bidang teks, fokus aksesibilitas ditampilkan sebagai bingkai kuning di sekitar elemen dan tidak terlihat oleh pengguna tanpa TalkBack. Saat fokus aksesibilitas mengenai elemen, TalkBack menyuarakan konten, jenis, dan statusnya.
Pengguna memindahkan fokus aksesibilitas dengan gesture: geser ke kanan — elemen berikutnya, geser ke kiri — elemen sebelumnya. Elemen dilalui dalam urutan yang ditentukan oleh AccessibilityNodeInfo — pohon aksesibilitas yang dibangun Android untuk setiap layar. Pengembang dapat memengaruhi urutan melalui properti accessibilityTraversalBefore dan accessibilityTraversalAfter, yang sangat penting untuk layar kompleks dengan tata letak khusus.
Setiap View di layar diwakili oleh simpul dalam pohon aksesibilitas — objek AccessibilityNodeInfo. Objek ini berisi: teks elemen (contentDescription atau teks view), jenis elemen (tombol, kotak centang, bidang masukan), status (aktif/nonaktif/terpilih), posisi di layar, dan daftar tindakan yang tersedia. TalkBack menelusuri pohon ini dan menyuarakan setiap simpul dalam urutan penelusuran.
Jika View tidak memiliki konten teks (misalnya ImageView tanpa deskripsi), ia menjadi tidak terlihat bagi TalkBack — pengguna tidak akan mengetahui keberadaannya. Untuk mengatasi masalah ini, pengembang menetapkan contentDescription — deskripsi teks yang diucapkan TalkBack sebagai pengganti keheningan. Android juga mendukung stateDescription untuk elemen dengan status yang dapat diubah (terpilih/tidak terpilih) dan hintText untuk bidang masukan dengan petunjuk.
TalkBack mengubah gesture standar Android menjadi gesture khusus pembaca layar. Sebagian besar operasi dilakukan dengan satu atau dua jari, dengan gesture tiga jari disediakan untuk tindakan global.
| Tindakan | Gesture | Hasil |
|---|---|---|
| Suarakan elemen | Sentuhan 1 jari | Menyebutkan nama dan jenis elemen |
| Aktifkan | Sentuhan ganda | Tekan tombol atau navigasi |
| Berikutnya | Geser ke kanan | Elemen berikutnya |
| Sebelumnya | Geser ke kiri | Elemen sebelumnya |
| Gulir | 2 jari geser | Menggulir daftar |
| Menu TalkBack | Geser atas-kiri | Menu pengaturan global |
Gesture “geser atas-kiri” (geser berbentuk L) membuka menu global TalkBack, di mana pengguna dapat mengubah kecepatan bicara, mengaktifkan tirai layar, meluncurkan tutorial, atau membuka pengaturan. TalkBack juga mendukung menu konteks untuk elemen: geser atas-kanan membuka daftar tindakan yang tersedia untuk elemen saat ini (misalnya “salin”, “tempel” untuk bidang teks atau “hapus” untuk pesan obrolan).
Android menyediakan API yang kaya untuk mengonfigurasi aksesibilitas. Tingkat dasarnya adalah contentDescription, tetapi untuk dukungan TalkBack yang berkualitas, diperlukan kerja dengan AccessibilityNodeInfo, AccessibilityDelegate, dan LiveRegion.
Atribut android:contentDescription menetapkan deskripsi teks elemen untuk TalkBack. Wajib untuk ImageView, ImageButton, FloatingActionButton, dan semua View khusus tanpa konten teks. Untuk elemen standar (TextView, Button) contentDescription bersifat opsional — TalkBack akan membaca teks secara otomatis.
val avatarView = ImageView(this)
avatarView.contentDescription = "Avatar pengguna"
avatarView.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_YES
val playButton = ImageButton(this)
playButton.contentDescription = "Putar video"
val progressBar = ProgressBar(this)
progressBar.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_NO
Bendera importantForAccessibility mengontrol visibilitas elemen untuk TalkBack. Nilai NO menyembunyikan elemen dari pohon aksesibilitas — berguna untuk gambar dekoratif, indikator, dan latar belakang khusus. Nilai YES memaksa elemen masuk dalam penelusuran, bahkan jika tidak memiliki teks. Penting untuk tidak menyalahgunakan NO: menyembunyikan elemen yang penting secara semantik membuat aplikasi tidak dapat diakses oleh pengguna TalkBack.
Untuk View khusus yang tidak menggunakan penangan klik standar, perlu menimpa AccessibilityDelegate — kelas yang memproses peristiwa aksesibilitas. Delegat memungkinkan pengaturan deskripsi khusus, jenis elemen, dan daftar tindakan yang tersedia yang akan ditawarkan TalkBack kepada pengguna melalui menu konteks.
class CustomButtonDelegate : View.AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
host: View, info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.text = "Tombol khusus"
info.className = Button::class.java.name
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat(
R.id.custom_action, "Bagikan"
)
)
}
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)
}
}
Dalam contoh, delegat memberi tahu TalkBack bahwa elemen tersebut adalah tombol (className = Button) dan menyediakan tindakan khusus “Bagikan” yang akan muncul di menu konteks TalkBack. Metode performAccessibilityAction memproses pemanggilan tindakan ini. Tanpa delegat, TalkBack akan menganggap View khusus sebagai area sederhana tanpa interaktivitas, dan pengguna tidak dapat berinteraksi dengannya.
Dukungan penuh TalkBack mencakup tidak hanya contentDescription, tetapi juga manajemen fokus, LiveRegion untuk pembaruan dinamis, pengujian dengan pembaca layar aktif, dan adaptasi ke berbagai versi Android.
Ketika konten layar berubah tanpa tindakan eksplisit pengguna (misalnya notifikasi pesan baru muncul atau penghitung suka diperbarui), TalkBack harus menerima pemberitahuan. Untuk ini digunakan atribut android:accessibilityLiveRegion untuk View di XML atau metode setAccessibilityLiveRegion() dalam kode. Nilai polite menambahkan pengumuman setelah penyuaraan saat ini selesai, sedangkan nilai assertive segera menghentikannya.
val statusText = TextView(this)
statusText.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_POLITE
// Saat teks diperbarui, TalkBack akan secara otomatis
// mengumumkan perubahan
statusText.text = "Pesan baru dari Anna"
// Untuk notifikasi kritis — assertive
errorBanner.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
LiveRegion — setara dengan UIAccessibility.post di iOS. Gunakan polite untuk sebagian besar pembaruan (pesan baru, pembaruan status) dan assertive hanya untuk kesalahan kritis (pembayaran gagal, kehilangan koneksi). Penggunaan assertive yang berlebihan menciptakan pengalaman pengguna negatif — TalkBack akan terus-menerus mengganggu penyuaraan saat ini.
Untuk layar kompleks di mana beberapa View membentuk satu kesatuan logis, digunakan AccessibilityNodeProvider atau focusSearch untuk menimpa navigasi. Misalnya, kalender khusus dengan 42 sel (6 minggu × 7 hari) tidak boleh memaksa pengguna menelusuri semua 42 elemen untuk berpindah ke blok berikutnya. Pengembang dapat menggabungkan sel ke dalam grup logis: bulan → minggu → hari.
Untuk Jetpack Compose digunakan pengubah .semantics {}, yang menyediakan API serupa: contentDescription, liveRegion, stateDescription, disabled, dan customActions. Compose juga mendukung mergeDescendants untuk menggabungkan semantik anak menjadi satu, yang menyederhanakan pengelompokan elemen tanpa konfigurasi manual accessibilityDelegate untuk setiap View.
Button(
onClick = { sendMessage() },
modifier = Modifier.semantics {
contentDescription("Kirim pesan")
stateDescription("Siap dikirim")
}
) {
Icon(Icons.Filled.Send, "Kirim")
}
Pengujian TalkBack dilakukan melalui perangkat fisik atau emulator dengan layanan diaktifkan. Disarankan untuk menjalani skenario pengguna utama dengan layar dimatikan (Screen Curtain) — ini mensimulasikan tidak adanya umpan balik visual sama sekali. Android juga menyediakan Accessibility Scanner — alat untuk mendeteksi masalah aksesibilitas secara otomatis, yang menyorot elemen tanpa contentDescription, area sentuh terlalu kecil, dan kontras rendah.
Pertanyaan yang sering diajukan
Pengaturan → Aksesibilitas → TalkBack → Aktifkan. Untuk aktivasi cepat digunakan penekanan bersamaan kedua tombol volume selama 3 detik. Google Assistant juga dapat mengaktifkan TalkBack dengan perintah suara “Aktifkan TalkBack”.
TalkBack — pembaca layar untuk Android, VoiceOver — untuk iOS. TalkBack menggunakan AccessibilityService dan fokus aksesibilitas dengan bingkai kuning, sedangkan VoiceOver menggunakan UIAccessibility dan rotor. Gesture dan menu berbeda: TalkBack memiliki geseran berbentuk L untuk menu global.
Tetapkan contentDescription untuk semua ImageView dan elemen khusus. Gunakan importantForAccessibility untuk menyembunyikan elemen dekoratif. Konfigurasikan accessibilityLiveRegion untuk pembaruan dinamis dan periksa melalui Accessibility Scanner. Di Compose, gunakan pengubah .semantics{}.
Ini adalah objek yang mewakili elemen antarmuka dalam pohon aksesibilitas. Berisi teks, jenis, status, posisi, dan daftar tindakan. TalkBack menelusuri pohon ini untuk navigasi. Pengembang dapat mengubahnya melalui AccessibilityDelegate atau atribut dalam XML.
Periksa importantForAccessibility — mungkin diatur ke NO. Pastikan contentDescription telah ditetapkan untuk elemen tanpa teks. Untuk View khusus, implementasikan AccessibilityDelegate dengan onInitializeAccessibilityNodeInfo. Gunakan Accessibility Scanner untuk diagnosis.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga