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

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

لماذا تُعدّ تسهيل الاستخدام مهمة بالنسبة إلى تطبيق البث التلفزيوني الخاص بي؟

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

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

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

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

الوصف الصوتي

في الإصدار 13 من نظام التشغيل Android (المستوى 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);
}