إتاحة إمكانية الوصول إلى العرض المخصَّص على 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 للاطّلاع على أفضل الممارسات لإضافة دعم إمكانية الوصول إلى التطبيقات التي تستخدم طرق العرض المخصّصة.