أفضل ممارسات إمكانية الوصول لتطبيق Android TV

يقدّم هذا الدليل أفضل الممارسات لتوفير إمكانية الاستخدام على Android TV، كما يقدّم اقتراحات لكل من التطبيقات المتوافقة مع النظام الأساسي والتطبيقات غير المتوافقة.

ما أهمية إتاحة التطبيق للمستخدمين من ذوي الاحتياجات الخاصة؟

إنّ ضعف البصر شائع بين الأشخاص الذين يشاهدون التلفزيون. وفقًا لمنظمة الصحة العالمية، يعاني 2.2 مليار شخص على مستوى العالم من مشاكل تتعلّق بالرؤية. في الولايات المتحدة، تعرّض 32 مليون أمريكي تزيد أعمارهم عن 18 عامًا لفقدان البصر بشكلٍ ملحوظ، وفقًا لاستطلاع الصحة الوطني لعام 2018. في أوروبا، تشير التقديرات إلى 30 مليون شخص كفيف وضعف البصر، وفقًا للاتحاد الأوروبي للمكفوفين (EBU).

الأهم من ذلك، أنّ المستخدمين الذين يعانون من عجز بصري يستمتعون بمحتوى الوسائط بالقدر نفسه الذي يستمتع به المستخدمون الذين لديهم بصر سليم. أظهر استطلاع أجراه Comcast في عام 2017 أنّ ‎96% من المستخدمين المكفوفين أو ضعاف البصر يشاهدون التلفزيون بانتظام، ويشاهد ‎81% منهم التلفزيون لأكثر من ساعة في اليوم. ومع ذلك، أشار% 65 أيضًا إلى مواجهة مشاكل في البحث عن البرامج التلفزيونية. وفي استطلاع أجري في عام 2 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 والإصدارات الأحدث، يمكن للمستخدمين تغيير حجم النص من إعدادات الجهاز.

تخطيطات لوحة المفاتيح

في الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك استخدام getKeyCodeForKeyLocation() للبحث عن رموز المفاتيح في المواقع الجغرافية المتوقّعة للمفاتيح. قد يكون ذلك ضروريًا إذا أعاد المستخدم ربط بعض المواقع الجغرافية الرئيسية أو إذا كان يستخدم لوحة مفاتيح لا تتضمّن تنسيقًا عاديًا.

الوصف الصوتي

في Android 13 (المستوى 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);
}