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

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

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

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

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

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

في الإصدار 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);
}