بهترین روش‌های دسترس‌پذیری برای Android TV

این راهنما بهترین شیوه‌ها را برای دسترسی‌پذیری در اندروید تی‌وی ارائه می‌دهد و توصیه‌هایی را برای برنامه‌های بومی و غیربومی ارائه می‌دهد.

چرا دسترسی‌پذیری برای برنامه تلویزیونی من مهم است؟

اختلالات بینایی در بین بینندگان تلویزیون غیرمعمول نیست. سازمان بهداشت جهانی تخمین می‌زند که ۲.۲ میلیارد نفر در سراسر جهان دچار اختلالات بینایی هستند، در حالی که حدود ۳۲ میلیون بزرگسال آمریکایی دچار کاهش قابل توجه بینایی می‌شوند ( نظرسنجی مصاحبه ملی سلامت ۲۰۱۸ ). در اروپا، EBU تخمین می‌زند که ۳۰ میلیون نفر تحت تأثیر قرار گرفته‌اند.

کاربران دارای اختلال بینایی به اندازه همسالان بینای خود از رسانه‌ها لذت می‌برند. یک نظرسنجی کامکست در سال ۲۰۱۷ نشان داد که ۹۶٪ تلویزیون تماشا می‌کنند (۸۱٪ بیش از یک ساعت در روز). با این حال، ۶۵٪ گزارش داده‌اند که در یافتن محتوا مشکل دارند. همچنین، ۸۰٪ از افراد دارای معلولیت در یک نظرسنجی در بریتانیا، مشکلات پخش جریانی را گزارش کرده‌اند.

فناوری‌های کمکی مفید هستند، اما برنامه‌های تلویزیونی باید از قابلیت دسترسی در کشف محتوا پشتیبانی کنند. به راهنمای ناوبری و برچسب‌های عناصر توجه ویژه‌ای داشته باشید. از سازگاری با ویژگی‌هایی مانند TalkBack اطمینان حاصل کنید تا تجربه کاربران دارای اختلالات بینایی به طور قابل توجهی بهبود یابد.

اولین قدم برای بهبود دسترسی، آگاهی است. این راهنما می‌تواند به شما و تیمتان کمک کند تا مشکلات دسترسی به برنامه تلویزیونی خود را کشف کنید.

منابع دسترسی اندروید

برای کسب اطلاعات بیشتر در مورد دسترسی‌پذیری در اندروید، به منابع توسعه دسترسی‌پذیری ما مراجعه کنید.

مقیاس‌بندی متن

برنامه‌های اندروید تی‌وی باید با پشتیبانی از تراکم پیکسل‌های مختلف، به ترجیح کاربر برای مقیاس‌بندی متن احترام بگذارند.

به موارد زیر توجه ویژه داشته باشید:

  • برای ابعاد در کامپوننت‌های رابط کاربری 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

در اندروید ۱۲ و بالاتر، کاربران می‌توانند مقیاس‌بندی متن را از تنظیمات دستگاه تغییر دهند.

طرح‌بندی‌های صفحه‌کلید

در اندروید ۱۳ (سطح API ۳۳) و بالاتر، می‌توانید از تابع getKeyCodeForKeyLocation() برای جستجوی کدهای کلید برای مکان‌های مورد انتظار کلید استفاده کنید. این کار ممکن است در صورتی که کاربر برخی از مکان‌های کلید را دوباره نگاشت کرده باشد یا اگر از کیبوردی استفاده می‌کند که طرح‌بندی معمولی ندارد، ضروری باشد.

توضیحات صوتی

در اندروید ۱۳ (سطح API ۳۳) و بالاتر، یک اولویت دسترسی جدید در سطح سیستم به کاربران امکان می‌دهد توضیحات صوتی را در همه برنامه‌ها فعال کنند. برنامه‌های Android TV می‌توانند با پرس‌وجو از طریق isAudioDescriptionRequested() ترجیح کاربر را بررسی کنند.

کاتلین

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
}

جاوا

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 ، تغییرات ترجیحات کاربر را رصد کنند:

کاتلین

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

جاوا

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