إتاحة إمكانية الوصول إلى العرض المخصَّص على Android TV

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

قد لا تعمل مكوّنات العرض المخصّص التي تتفاعل مباشرةً مع OpenGL أو Canvas بشكل جيد. مع خدمات إمكانية الوصول مثل TalkBack والوصول عبر مفتاح التحويل.

يُرجى مراعاة بعض المشاكل التالية التي قد تحدث عند تبديل TalkBack. عَلَى:

  • قد يختفي تركيز تسهيل الاستخدام (مستطيل أخضر) في تطبيقك.
  • قد يحدد تركيز تسهيل الاستخدام حدود الشاشة بأكملها.
  • قد لا يكون تركيز تسهيل الاستخدام قابلاً للنقل.
  • قد لا يكون لمفاتيح الاتجاهات الأربعة في لوحة التحكّم أي تأثير، حتى إذا كان الرمز يتعامل معها.

إذا لاحظت أيًا من هذه المشاكل في تطبيقك، تأكَّد من أنّ يعرض التطبيق AccessibilityNodeInfo الخاص به خدمات الوصول بسهولة.

يقدِّم الجزء المتبقّي من هذا الدليل بعض الحلول وأفضل الممارسات لمعالجة هذه المشاكل.

تستخدم خدمات تسهيل الاستخدام أحداث لوحة التحكّم

السبب الجذري لهذه المشكلة هو أنّ المستخدمين يستهلكون الأحداث الرئيسية.

استهلاك أحداث لوحة التحكّم الشكل 1. مخطّطات بيانية توضّح كيفية عمل النظام عند تفعيل ميزة TalkBack وإيقافها

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

تتأثر خدمات إمكانية الوصول الأخرى بالمثل: قد تتأثر أحداث لوحة التحكّم يتم استهلاكها عند استخدام ميزة "الوصول عبر مفتاح تحكّم"

لأنّ أحداث لوحة التحكّم يتم إرسالها إلى خدمات تسهيل الاستخدام تلك الخدمة لا تعرف مكان مكونات واجهة المستخدم في طريقة العرض المخصصة، يجب تنفيذ AccessibilityNodeInfo لتطبيقك لإعادة توجيه الأحداث الرئيسية بشكل صحيح

عرض معلومات لخدمات تسهيل الاستخدام

لتوفير خدمات إمكانية الوصول بمعلومات كافية حول الموقع الجغرافي ووصف طرق العرض المخصّصة، يمكنك تنفيذ AccessibilityNodeInfo لكشف تفاصيل كل مكون. تحديد العلاقة المنطقية بين وجهات النظر بحيث يمكن لخدمات إمكانية الوصول إدارة التركيز، تنفيذ ExploreByTouchHelper وتعيينه باستخدام ViewCompat.setAccessibilityDelegate(View, AccessibilityDelegateCompat) لطرق العرض المخصّصة

عند تنفيذ الدالة ExploreByTouchHelper، يمكنك إلغاء الطرق التجريدية الأربعة الخاصة بها:

Kotlin

// Return the virtual view ID whose view is covered by the input point (x, y).
protected fun getVirtualViewAt(x: Float, y: Float): Int

// Fill the virtual view ID list into the input parameter virtualViewIds.
protected fun getVisibleVirtualViews(virtualViewIds: List<Int>)

// For the view whose virtualViewId is the input virtualViewId, populate the
// accessibility node information into the AccessibilityNodeInfoCompat parameter.
protected fun onPopulateNodeForVirtualView(virtualViewId: Int, @NonNull node: AccessibilityNodeInfoCompat)

// Set the accessibility handling when perform action.
protected fun onPerformActionForVirtualView(virtualViewId: Int, action: Int, @Nullable arguments: Bundle): Boolean

Java

// Return the virtual view ID whose view is covered by the input point (x, y).
protected int getVirtualViewAt(float x, float y)

// Fill the virtual view ID list into the input parameter virtualViewIds.
protected void getVisibleVirtualViews(List<Integer> virtualViewIds)

// For the view whose virtualViewId is the input virtualViewId, populate the
// accessibility node information into the AccessibilityNodeInfoCompat parameter.
protected void onPopulateNodeForVirtualView(int virtualViewId, @NonNull AccessibilityNodeInfoCompat node)

// Set the accessibility handling when perform action.
protected boolean onPerformActionForVirtualView(int virtualViewId, int action, @Nullable Bundle arguments)

لمزيد من التفاصيل، يُرجى مشاهدة مؤتمر Google I/O 2013 - تمكين المكفوفين وضعاف النظر أدوات تسهيل الاستخدام على Android أو يمكنك قراءة المزيد حول تعبئة أحداث تسهيل الاستخدام.

أفضل الممارسات

عيّنة

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