Z tego przewodnika dowiesz się, jak stosować sprawdzone metody dotyczące ułatwień dostępu w Androidzie TV. Znajdziesz w nim też rekomendacje dotyczące aplikacji natywnych i nienatywnych.
Dlaczego ułatwienia dostępu są ważne w przypadku mojej aplikacji TV?
Wśród widzów telewizji nie brakuje osób z wadami wzroku. Według szacunków WHO na całym świecie 2,2 mld osób ma wady wzroku, a około 32 mln dorosłych Amerykanów ma poważne problemy ze wzrokiem (National Health Interview Survey z 2018 r.). W Europie według szacunków EBU dotyczy to 30 mln osób.
Użytkownicy z wadami wzroku korzystają z mediów w takim samym stopniu jak osoby widzące. Z badania przeprowadzonego w 2017 r. przez firmę Comcast wynika, że 96% osób z wadami wzroku ogląda telewizję (81% z nich robi to codziennie przez ponad godzinę). Jednak 65% z nich zgłasza problemy ze znajdowaniem treści. Ponadto 80% osób niepełnosprawnych biorących udział w badaniu w Wielkiej Brytanii zgłosiło problemy ze streamingiem.
Technologie wspomagające są pomocne, ale aplikacje na telewizor muszą obsługiwać ułatwienia dostępu w zakresie odkrywania treści. Zwróć szczególną uwagę na wskazówki dotyczące nawigacji i etykiety elementów. Zadbaj o zgodność z funkcjami takimi jak TalkBack, aby znacznie poprawić komfort użytkowania osobom z wadami wzroku.
Pierwszym krokiem do poprawy ułatwień dostępu jest świadomość. Ten przewodnik pomoże Tobie i Twojemu zespołowi odkryć problemy z ułatwieniami dostępu w aplikacji TV.
Materiały dotyczące ułatwień dostępu w Androidzie
Więcej informacji o ułatwieniach dostępu w Androidzie znajdziesz w naszych materiałach dla programistów dotyczących ułatwień dostępu resources.
Skalowanie tekstu
Aplikacje na Androida TV powinny uwzględniać preferencje użytkownika dotyczące skalowania tekstu, obsługując różne gęstości pikseli.
Zwróć szczególną uwagę na te kwestie:
- W przypadku wymiarów komponentów interfejsu używaj wartości
wrap_content. - Upewnij się, że układy zmieniają położenie komponentów, gdy ich wymiary zmieniają się w zależności od skali tekstu.
- Upewnij się, że komponenty nadal mieszczą się na ekranie przy większych skalach tekstu.
- Nie używaj jednostek rozmiaru tekstu sp w przypadku komponentów, które nie są elastyczne.
Sprawdź wartość
FONT_SCALEpod kątem dostosowania w widokach niestandardowych:// Checking font scale with Context val scale = resources.configuration.fontScale Log.d(TAG, "Text scale is: " + scale)
Skalę tekstu można zmienić za pomocą tego polecenia:
adb shell settings put system font_scale 1.2f
W Androidzie 12 i nowszych wersjach użytkownicy mogą zmieniać skalowanie tekstu w ustawieniach urządzenia.
Układy klawiatury
W Androidzie 13 (API na poziomie 33) i nowszych wersjach możesz użyć
getKeyCodeForKeyLocation()
do
wyszukania kodów klawiszy w
oczekiwanych lokalizacjach.
Może to być konieczne, jeśli użytkownik zmienił mapowanie niektórych lokalizacji klawiszy lub używa klawiatury, która nie ma typowego układu.
Audiodeskrypcja
W Androidzie 13 (API na poziomie 33) i nowszych wersjach nowe ustawienie ułatwień dostępu w całym systemie umożliwia użytkownikom włączenie audiodeskrypcji we wszystkich aplikacjach. Aplikacje na Androida TV
mogą sprawdzić preferencje użytkownika, wysyłając zapytanie za pomocą funkcji
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
}
Aplikacje na Androida TV mogą monitorować zmiany preferencji użytkownika, dodając odbiornik do
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);
}