שיטות מומלצות בנושא נגישות ב-Android TV

במדריך הזה מפורטות שיטות מומלצות לשיפור הנגישות ב-Android TV, ומופיעות המלצות לאפליקציות מקוריות ולא מקוריות.

למה נגישות חשובה לאפליקציה שלי לטלוויזיה?

לקויות ראייה הן תופעה נפוצה בקרב האוכלוסייה שצופה בטלוויזיה. לפי נתונים של ארגון הבריאות העולמי (WHO), יש בעולם כ-2.2 מיליארד אנשים עם ליקויי ראייה. לפי סקר ראיונות בנושא בריאות משנת 2018, בארה"ב, ל-32 מיליון אמריקאים בגיל 18 ומעלה יש ליקויי ראייה משמעותיים. באירופה, לפי נתוני European Blind Union (EBU), יש 30 מיליון אנשים עיוורים או עם לקויות ראייה.

הכי חשוב: משתמשים עם ליקויי ראייה נהנים מתוכן מדיה בדיוק כמו משתמשים ללא ליקויי ראייה. בסקר משנת 2017 שהוזמן על ידי Comcast,‏ 96% מהמשתמשים העיוורים או לקויי הראייה צופים בטלוויזיה באופן קבוע, ו-81% מהם צופים יותר משעה ביום. עם זאת, 65% מהמשתמשים דיווחו גם על בעיות בחיפוש מידע על התוכניות שמשודרות בטלוויזיה. בסקר שנערך בבריטניה בשנת 2020,‏ 80% מהאנשים עם מוגבלויות אמרו שהם נתקלו בבעיות נגישות בשירותי סטרימינג של סרטונים על פי דרישה.

טכנולוגיות מסייעות יכולות לעזור למשתמשים עם לקויות ראייה, וחשוב לתמוך בנגישות בתהליכי גילוי תוכן באפליקציות לטלוויזיה. לדוגמה, חשוב להקפיד על מתן הנחיות ניווט ועל תיוג נכון של רכיבים, ולוודא שאפליקציות לטלוויזיה פועלות היטב עם תכונות נגישות כמו TalkBack. השלבים האלה יכולים לשפר באופן משמעותי את החוויה של משתמשים עם לקויות ראייה.

השלב הראשון בשיפור הנגישות הוא מודעות. המדריך הזה יכול לעזור לכם ולצוות שלכם לגלות בעיות נגישות באפליקציית הטלוויזיה שלכם.

משאבים בנושא נגישות ב-Android

מידע נוסף על נגישות ב-Android זמין במשאבים לפיתוח נגישות.

שינוי גודל הטקסט

אפליקציות ל-Android TV צריכות להתחשב בהעדפות המשתמשים לגבי שינוי גודל הטקסט על ידי תמיכה בדחיסויות פיקסלים שונות.

חשוב לשים לב במיוחד לנקודות הבאות:

  • משתמשים ב-wrap_content למאפיינים ברכיבי ממשק המשתמש.
  • מוודאים שהפריסות מסדרות מחדש את הרכיבים כשהמידות שלהם משתנות בהתאם לקנה המידה של הטקסט.
  • חשוב לוודא שהרכיבים עדיין מתאימים למסך גם כשמשתמשים בסולמות טקסט גדולים יותר.
  • אל תשתמשו ביחידות גודל טקסט מסוג sp לרכיבים לא גמישים.
  • בדיקת הערך של FONT_SCALE להתאמה בתצוגות מותאמות אישית:

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

אפשר לשנות את קנה המידה של הטקסט באמצעות הפקודה הבאה:

adb shell settings put system font_scale 1.2f

ב-Android 12 ומעלה, המשתמשים יכולים לשנות את קנה המידה של הטקסט בהגדרות המכשיר.

פריסות מקלדת

ב-Android 13 (רמת API 33) ומעלה, אפשר להשתמש ב-getKeyCodeForKeyLocation() כדי לחפש את קודי המקשים למיקומי מקשים צפויים. יכול להיות שזה יהיה נחוץ אם המשתמש מיפה מחדש מיקומים של מקשים מסוימים, או אם הוא משתמש במקלדת עם פריסה לא טיפוסית.

התיאור הקולי

ב-Android 13 (רמת API 33) ומעלה, העדפת נגישות חדשה ברמת המערכת מאפשרת למשתמשים להפעיל תיאורים קוליים בכל האפליקציות. אפליקציות ל-Android TV יכולות לבדוק את ההעדפה של המשתמש באמצעות שאילתה עם 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
}

אפליקציות ל-Android TV יכולות לעקוב אחרי שינויים בהעדפות המשתמשים על ידי הוספת מאזין ל-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);
}