このガイドでは、Android TV のアクセシビリティに関するベスト プラクティスを紹介し、ネイティブ アプリと非ネイティブ アプリの両方に対する推奨事項を提供します。
テレビアプリでユーザー補助が重要なのはなぜですか?
テレビ視聴者の間で視覚障がいは珍しくありません。WHO の推定によると、世界中で 22 億人が視覚障がいを抱えており、米国では約 3, 200 万人の成人が視覚障がいを抱えています(2018 年国民健康インタビュー調査)。ヨーロッパでは、EBU は 3, 000 万人が影響を受けると推定しています。
視覚障がいのあるユーザーも、視覚のあるユーザーと同じようにメディアを楽しんでいます。Comcast の 2017 年の調査によると、96% がテレビを視聴しており、81% が 1 日 1 時間以上視聴しています。しかし、65% のユーザーがコンテンツの検索に関する問題を報告しています。また、英国の調査では、障害者の 80% がストリーミングの問題を報告しています。
支援技術は役立ちますが、テレビアプリはコンテンツ検出でアクセシビリティをサポートする必要があります。ナビゲーション ガイダンスと要素ラベルには特に注意してください。TalkBack などの機能との互換性を確保することで、視覚障がいのあるユーザーの利便性を大幅に向上させることができます。
ユーザー補助機能を改善する第一歩は、認識することです。このガイドは、テレビアプリのアクセシビリティの問題を特定する際に役立ちます。
Android のユーザー補助機能に関するリソース
Android のユーザー補助機能について詳しくは、ユーザー補助機能の開発リソースをご覧ください。
テキストの拡大縮小
Android TV アプリは、さまざまなピクセル密度をサポートすることで、テキスト スケーリングに関するユーザーの設定を尊重する必要があります。
次の点に特に注意してください。
- UI コンポーネントのディメンションには
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 以降では、デバイスの設定からテキストの拡大縮小を変更できます。
キーボード配列
Android 13(API レベル 33)以降では、getKeyCodeForKeyLocation() を使用して、想定されるキーの位置のキーコードを検索できます。ユーザーがキーの位置を再マッピングしている場合や、一般的なレイアウトではないキーボードを使用している場合は、この操作が必要になることがあります。
音声による説明
Android 13(API レベル 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);
}