Android TV のユーザー補助に関するおすすめの方法
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このガイドでは、Android TV のアクセシビリティに関するベスト プラクティスと、ネイティブ アプリと非ネイティブ アプリの両方に関する推奨事項について説明します。
テレビアプリでユーザー補助が重要な理由
テレビ視聴者層では、視覚障がいのある人が少なくありません。世界保健機関(WHO)によると、世界中で約 22 億人が視覚障がいを抱えています。米国では、2018 年の国民健康インタビュー調査によると、18 歳以上の 3,200 万人が視力の大幅な低下を経験しています。欧州視覚障害者連合(EBU)によると、ヨーロッパでは 3,000 万人の視覚障がい者がいると推定されています。
最も重要なのは、視覚障がいのあるユーザーも、視覚障がいのないユーザーと同じようにメディア コンテンツを楽しんでいるということです。Comcast が委託した2017 年の調査によると、目の不自由なユーザーの 96% が定期的にテレビを視聴しており、81% が 1 日 1 時間以上視聴しています。しかし、65% のユーザーがテレビで何が放送されているかを確認する際に問題が発生したと報告しています。また、2020 年に英国で実施された調査では、障害者の 80% が、ビデオ オンデマンド ストリーミング サービスでアクセシビリティの問題を経験したと回答しています。
支援技術は視覚障がいのあるユーザーをサポートできますが、テレビアプリのコンテンツ検索ジャーニーでアクセシビリティをサポートすることも重要です。たとえば、ナビゲーション ガイダンスの提供や要素の適切なラベル付けに特に注意し、TV アプリが TalkBack などのユーザー補助機能で適切に動作するようにします。これらの手順を行うことで、視覚障がいのあるユーザーの利便性を大幅に向上させることができます。
ユーザー補助機能を改善する最初の手順は、認識することです。このガイドは、テレビアプリのユーザー補助に関する問題を特定するうえで役立ちます。
Android ユーザー補助機能のリソース
Android のユーザー補助機能について詳しくは、ユーザー補助機能の開発リソースをご覧ください。
テキストの拡大縮小
Android TV アプリは、さまざまなピクセル密度をサポートすることで、テキスト スケーリングに関するユーザーの設定を尊重する必要があります。
特に次の点に注意してください。
テキストのスケールは、次のコマンドで変更できます。
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);
}
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-08-21 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-08-21 UTC。"],[],[],null,["# Accessibility best practices for Android TV\n\nThis guide provides best practices for accessibility on Android TV and provides\nrecommendations for both native and non-native apps.\n\nWhy is accessibility important for my TV app?\n---------------------------------------------\n\nVision impairments are not uncommon among the TV-watching population.\nAn estimated [2.2 billion people globally](https://www.who.int/health-topics/blindness-and-vision-loss#tab=tab_1)\nhave a vision impairment, according\nto the World Health Organization (WHO). In the US, 32 million Americans age 18 and older have experienced\nsignificant vision loss,\naccording to the [2018 National Health Interview Survey](https://www.afb.org/research-and-initiatives/statistics/adults).\nIn Europe, the estimates\npoint to [30 million](http://www.euroblind.org/about-blindness-and-partial-sight/facts-and-figures#:%7E:text=Statistics,sighted%20persons%20as%20blind%20persons)\nblind and partially sighted persons, according to the European Blind Union (EBU).\n\nMost importantly, users with vision impairments enjoy media content\njust as much as their fully sighted peers. A [2017 survey](https://www.afb.org/research-and-initiatives/statistics/adults) commissioned by Comcast\nshowed that 96% of users who are blind or have low vision regularly watch\nTV, with 81% watching more than an hour per day. However, 65% also reported\nencountering problems with looking up what's on TV. And in a [2020 survey in the\nUK](https://bighack.org/video-on-demand-streaming-and-accessibility-the-big-hack-survey-feedback/),\n80% of disabled people said they had experienced accessibility issues with video\non-demand streaming services.\n\nWhile assistive technologies can and do help users with low vision, it's\nimportant to support accessibility in content discovery journeys for TV apps.\nFor example, pay extra attention to providing navigation guidance and\nproperly labeling elements, and ensure that TV apps work well with accessibility\nfeatures like TalkBack. These steps can significantly improve the experience for\nusers with vision impairments.\n\nThe first step toward improving accessibility is awareness. This guide can\nhelp you and your team to uncover accessibility issues with your TV app.\n\n### Android accessibility resources\n\nTo learn more about accessibility on Android, see our [accessibility development resources](/guide/topics/ui/accessibility).\n\nText scaling\n------------\n\nAndroid TV apps should respect the user's preference for text scaling by [supporting different pixel densities](/training/multiscreen/screendensities#TaskUseDP).\n\nTake special care to:\n\n- Use `wrap_content` for dimensions in UI components.\n- Ensure that layouts rearrange components as their dimensions change depending on the text scale.\n- Ensure that components still fit on the screen at larger text scales.\n- Don't use sp text size units for components that are not flexible.\n- Check the value of `FONT_SCALE` for adjustment in custom views:\n\n // Checking font scale with Context\n val scale = resources.configuration.fontScale\n Log.d(TAG, \"Text scale is: \" + scale)\n\nThe text scale can be changed with the following command: \n\n adb shell settings put system font_scale 1.2f\n\nOn Android 12 and above, users can alter the text scaling from the device\nsettings.\n\nKeyboard layouts\n----------------\n\nIn Android 13 (API level 33) and higher, you can use\n[`getKeyCodeForKeyLocation()`](/reference/android/view/InputDevice#getKeyCodeForKeyLocation(int))\nto\n[look up the keycodes](/training/tv/games#keyboard-layouts) for\nexpected key locations.\nThis might be necessary if the user has re-mapped some key locations or if they\nare using a keyboard that does not have a typical layout.\n\nAudio description\n-----------------\n\nIn Android 13 (API level 33) and higher, a new system-wide accessibility preference\nlets users enable audio descriptions across all apps. Android TV apps can\ncheck the user's preference by querying it with\n[`isAudioDescriptionRequested()`](/reference/android/view/accessibility/AccessibilityManager#isAudioDescriptionRequested()). \n\n### Kotlin\n\n```kotlin\nprivate lateinit var accessibilityManager: AccessibilityManager\n\n// In onCreate():\naccessibilityManager = getSystemService(AccessibilityManager::class.java)\n\n// Where your media player is initialized\nif (am.isAudioDescriptionRequested) {\n // User has requested to enable audio descriptions\n}\n```\n\n### Java\n\n```java\nprivate AccessibilityManager accessibilityManager;\n\n// In onCreate():\naccessibilityManager = getSystemService(AccessibilityManager.class);\n\n// Where your media player is initialized\nif(accessibilityManager.isAudioDescriptionRequested()) {\n // User has requested to enable audio descriptions\n}\n```\n\nAndroid TV apps can monitor when a user's preference changes by\nadding a listener to\n[`AccessibilityManager`](/reference/android/view/accessibility/AccessibilityManager): \n\n### Kotlin\n\n```kotlin\nprivate val listener =\n AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -\u003e\n // Preference changed; reflect its state in your media player\n }\n\noverride fun onStart() {\n super.onStart()\n\n accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)\n}\n\noverride fun onStop() {\n super.onStop()\n\n accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)\n}\n```\n\n### Java\n\n```java\nprivate AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -\u003e {\n // Preference changed; reflect its state in your media player\n};\n\n@Override\nprotected void onStart() {\n super.onStart();\n\n accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);\n}\n\n@Override\nprotected void onStop() {\n super.onStop();\n\n accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);\n}\n```"]]