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

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

ما أهمية تسهيل الاستخدام في تطبيق بث تلفزيوني؟

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

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