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

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

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

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

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