Android TV のユーザー補助に関するおすすめの方法

このガイドでは、Android TV でのユーザー補助に関するおすすめの方法を紹介し、ネイティブ アプリと非ネイティブ アプリの両方に関する推奨事項を示します。

TV アプリでユーザー補助機能が重要なのはなぜですか?

テレビを視聴する人々にとって、視覚障がいは珍しいことではありません。世界保健機関(WHO)によると、全世界で 22 億人が視覚障がいを持つと推定されています。2018 年国民健康調査によると、米国では 3,200 万人の 18 歳以上のアメリカ人が重大な視力喪失を経験しています。欧州視覚障害連合(EBU)によると、ヨーロッパでは 3,000 万人の視覚障害者と部分的に視力のある人と推定されています。

最も重要な点は、視覚障がいのあるユーザーは、目の見えない方と同じようにメディア コンテンツを楽しんでいることです。Comcast が委託した 2017 年の調査では、目の見えないユーザーまたはロービジョンのユーザーの 96% が定期的にテレビを視聴し、81% が 1 日に 1 時間以上視聴していることが明らかになりました。しかし、回答者の 65% が、テレビを視聴するときに問題が発生したと報告しています。また、2020 年に英国で実施された調査では、障がい者の 80% が、ビデオ オンデマンド ストリーミング サービスでアクセシビリティの問題が発生した経験があると回答しました。

支援技術はロービジョンのユーザーを助けることができ、実際に役立ちますが、TV アプリのコンテンツを見つける過程でアクセシビリティをサポートすることは重要です。たとえば、ナビゲーション ガイダンスの提供と要素の適切なラベル付けに特に注意を払い、TV アプリが TalkBack などのユーザー補助機能と適切に連携するようにします。これらの手順により、視覚障がいのあるユーザーのエクスペリエンスを大幅に改善できます。

アクセシビリティを改善するための第一歩は、認知度を高めることです。このガイドでは、TV アプリのユーザー補助機能の問題を明らかにする方法について説明します。

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);
}