Android TV'de özel görünüm erişilebilirliği desteği

Çoğu Android TV uygulaması yerel Android bileşenleriyle geliştirilmiş olsa da üçüncü tarafların, içeriklerinizin ve yayınlarınızın çerçeveleri veya bileşenleri, özellikle özel görünümler kullanırken.

Doğrudan OpenGL veya Canvas ile arayüz oluşturan özel görünüm bileşenleri iyi çalışmayabilir TalkBack ve Anahtar Erişimi gibi erişilebilirlik hizmetleriyle birlikte çalışır.

TalkBack'e geçildiğinde ortaya çıkabilecek aşağıdaki sorunlardan bazılarını göz önünde bulundurun tarih:

  • Erişilebilirlik odağı (yeşil dikdörtgen) uygulamanızda kaybolabilir.
  • Erişilebilirlik odağı tüm ekranın sınırını seçebilir.
  • Erişilebilirlik odağı taşınabilir olmayabilir.
  • Kodunuz bunları işliyor olsa bile D-pad'deki dört yön tuşlarının herhangi bir etkisi olmayabilir.

Uygulamanızda bu sorunlardan herhangi birini gözlemlerseniz Uygulama, AccessibilityNodeInfo özelliğini kullanıma sundu erişilebilirlik hizmetlerine ekliyoruz.

Bu kılavuzun geri kalanında, bu sorunları ele almaya yönelik bazı çözümler ve en iyi uygulamalar açıklanmaktadır.

D-pad etkinlikleri, erişilebilirlik hizmetleri tarafından tüketilir

Bu sorunun temel nedeni, önemli etkinliklerin erişilebilirlik tarafından tüketilmesidir. kullanıma sunuyoruz.

Dpad etkinlik tüketimi. Şekil 1. TalkBack açık ve kapalı durumdayken sistemin nasıl çalıştığını gösteren şemalar.

Şekil 1'de gösterildiği gibi TalkBack açıkken D-pad etkinlikleri geliştirici tarafından tanımlanan D-pad işleyicisine iletilmez. Bunun yerine Erişilebilirlik hizmetlerinin önemli etkinlikleri alarak erişilebilirlik odağı. Özel Android bileşenleri varsayılan olarak erişilebilirlik hizmetlerine dair bilgileri, erişilebilirlik hizmetleri, erişilebilirlik odağını öne çıkaracak şekilde hareket ettiremez.

Diğer erişilebilirlik hizmetleri de benzer şekilde etkileniyor: D-pad etkinlikleri de emin olun.

D-pad etkinlikleri erişilebilirlik hizmetlerine gönderildiğinden ve söz konusu hizmet, kullanıcı arayüzü bileşenlerinin özel görünümdeki yerini AccessibilityNodeInfo doğru şekilde hazırlamanız gerekir.

Bilgileri erişilebilirlik hizmetlerine sunma

Erişilebilirlik hizmetlerine konumu ve açıklaması için AccessibilityNodeInfo uygulayın her bileşene ait ayrıntıları gösterir. Erişilebilirlik hizmetlerinin şunları yapabilmesi için görünümlerin mantıksal ilişkisini odağı yönetme, uygulama ExploreByTouchHelper ve ViewCompat.setAccessibilityDelegate(View, AccessibilityDelegateCompat) kullanabilirsiniz.

ExploreByTouchHelper uygularken dört soyut yöntemini geçersiz kılın:

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)

Daha fazla bilgi için şu videoyu izleyin: Google I/O 2013 - Activation Blind and Low-Vision Android'de erişilebilirlik veya erişilebilirlik etkinliklerini doldurma hakkında daha fazla bilgi edinin.

En iyi uygulamalar

Örnek

Android TV için özel görünüm erişilebilirlik örneğine göz atarak Özel görünümler kullanarak uygulamalara erişilebilirlik desteği eklenmesi.