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