Praktik terbaik aksesibilitas untuk Android TV

Panduan ini memberikan praktik terbaik untuk aksesibilitas di Android TV dan memberikan rekomendasi untuk aplikasi native dan non-native.

Mengapa aksesibilitas penting untuk aplikasi TV saya?

Gangguan penglihatan cukup umum terjadi di kalangan penonton TV. WHO memperkirakan 2,2 miliar orang di seluruh dunia mengalami gangguan penglihatan, sementara sekitar 32 juta orang dewasa di AS mengalami kehilangan penglihatan yang signifikan (National Health Interview Survey 2018). Di Eropa, EBU memperkirakan 30 juta orang terpengaruh.

Pengguna penyandang gangguan penglihatan menikmati media sama seperti rekan-rekan mereka yang tidak memiliki gangguan penglihatan. Survei 2017 Comcast menemukan bahwa 96% orang menonton TV (81% lebih dari satu jam setiap hari). Namun, 65% melaporkan masalah dalam menemukan konten. Selain itu, 80% penyandang disabilitas dalam survei di Inggris Raya melaporkan masalah streaming.

Teknologi pendukung membantu, tetapi aplikasi TV harus mendukung aksesibilitas dalam penemuan konten. Perhatikan panduan navigasi dan label elemen secara khusus. Pastikan kompatibilitas dengan fitur seperti TalkBack untuk meningkatkan pengalaman pengguna dengan gangguan penglihatan secara signifikan.

Langkah pertama untuk meningkatkan aksesibilitas adalah kesadaran. Panduan ini dapat membantu Anda dan tim Anda menemukan masalah aksesibilitas pada aplikasi TV Anda.

Sumber daya aksesibilitas Android

Untuk mempelajari lebih lanjut aksesibilitas di Android, lihat referensi pengembangan aksesibilitas kami.

Penskalaan teks

Aplikasi Android TV harus mematuhi preferensi pengguna untuk penskalaan teks dengan mendukung kepadatan piksel yang berbeda.

Berikan perhatian khusus untuk:

  • Gunakan wrap_content untuk dimensi dalam komponen UI.
  • Pastikan tata letak menyusun ulang komponen saat dimensinya berubah bergantung pada skala teks.
  • Pastikan komponen tetap pas di layar pada skala teks yang lebih besar.
  • Jangan gunakan satuan ukuran teks sp untuk komponen yang tidak fleksibel.
  • Periksa nilai FONT_SCALE untuk penyesuaian di tampilan kustom:

    // Checking font scale with Context
    val scale = resources.configuration.fontScale
    Log.d(TAG, "Text scale is: " + scale)
    

Skala teks dapat diubah dengan perintah berikut:

adb shell settings put system font_scale 1.2f

Di Android 12 dan yang lebih tinggi, pengguna dapat mengubah penskalaan teks dari setelan perangkat.

Tata letak keyboard

Di Android 13 (level API 33) dan yang lebih tinggi, Anda dapat menggunakan getKeyCodeForKeyLocation() untuk mencari kode tombol untuk lokasi tombol yang diharapkan. Hal ini mungkin diperlukan jika pengguna telah memetakan ulang beberapa lokasi utama atau jika mereka menggunakan keyboard yang tidak memiliki tata letak standar.

Deskripsi audio

Di Android 13 (level API 33) dan yang lebih tinggi, preferensi aksesibilitas baru di seluruh sistem memungkinkan pengguna mengaktifkan deskripsi audio di semua aplikasi. Aplikasi Android TV dapat memeriksa preferensi pengguna dengan membuat kueri menggunakan isAudioDescriptionRequested().

Kotlin

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (am.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

Aplikasi Android TV dapat memantau saat preferensi pengguna berubah dengan menambahkan pemroses ke AccessibilityManager:

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}