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