VoiceViewユーザー補助機能を実装する


VoiceViewユーザー補助機能を実装する

Amazon Fire TVに組み込まれているVoiceViewスクリーンリーダーは、目の不自由なユーザーによるFire TVユーザーインターフェイスの操作を可能にします。目の不自由なユーザーは、VoiceViewで標準のFire TVナビゲーションメカニズム(リモコンの []、[]、[]、[] ボタン)を使用して、画面内で入力フォーカスを移動できます。フォーカスが変更されると、VoiceViewは現在フォーカスが置かれているアイテムを自動的に読み上げます。この機能は、以前のバージョンのVoiceViewの「標準ナビゲーション」モードに似ています。

2016年12月のソフトウェアアップデートで、Fire TVのスクリーンリーダーにいくつかのキーの変更が加えられています。このページでは、VoiceViewのサポートをアプリに実装する上でのユーザーエクスペリエンス(UX)に関する推奨事項を説明します。これにより、目の不自由なFire TVアプリのユーザーに対して最高のエクスペリエンスを生みだすことを可能にします。

VoiceViewの実装のチェックリスト

次のチェックリストを使用して、Amazon Fire TVアプリが、VoiceViewスクリーンリーダーの使用についてAmazonが推奨する標準を満たすことを確認します。

実装に関する技術的な推奨事項

アプリは、次に示すVoiceViewの要素を実装している必要があります。

  • アプリのUIにAndroidユーザー補助フレームワークとの互換性があることを確認します。
  • コンテンツの説明を実装して、VoiceViewが画像、ボタン、画面上にあるほかのオブジェクトの説明を読み上げることができるようにします。
  • 使用に関するヒントをリストおよびグリッドコンテンツに追加して、VoiceViewが目の不自由なユーザーによる操作を誘導できるようにします。
  • 静的なコンテンツに詳細を実装して、関連するオブジェクトがフォーカスを取得したときにVoiceViewがそのコンテンツを読み上げることができるようにします。

ユーザーエクスペリエンス(UX)に関する推奨事項

アプリには、次のユーザーエクスペリエンスに関する推奨事項をVoiceView用に実装する必要があります。

  • フォーカスを取得するアイテムのコンテンツを読み上げる。これには、タイトルやエピソード番号など、画面上に視覚的に表示されるすべての情報が含まれます。
  • 案内テキスト使用に関するヒントを読み上げ、ユーザーが画面のUIを操作できるようにする。
  • 静的なコンテンツを読み上げる。これは、詳細テキストを使用して自動で行われるか、ユーザーが [メニュー] ボタンを押したときに手動で行われるか、またはユーザーが確認モードに入って画面上のアイテム間を移動したときに手動で行われます。
  • アクティベーション用のURLやコードなどのセットアップ情報を読み上げる。
  • プログラムの選択、プログラム情報、再生、CCの設定などの機能とタスクをサポートする。

VoiceViewの動作の概要

ユーザーは、[メニュー] ボタンやそのほかのボタンを使用して、Amazon Fire TVユーザーインターフェイスとVoiceView対応アプリを操作できます。

VoiceViewで [メニュー] ボタンを使用する

VoiceViewが有効になっている場合、[メニュー] ボタンについて次の規則に従います。

  • VoiceViewを有効または無効にするには、[戻る] ボタンと [メニュー] ボタンを同時に2秒間押します。
  • VoiceViewが有効になっている場合、VoiceViewは [メニュー] ボタンと [再生一時停止] ボタンを制御します(VoiceViewによる読み上げが行われている場合)。
  • システムまたはアプリが [メニュー] ボタンから2回押下イベントを受信します。
  • [メニュー] ボタンを1回押すと、画面の情報の読み上げが次の順序で開始されます。
    1. 使用に関するヒント
    2. 案内テキスト
    3. 詳細テキスト
    4. その他すべての静的コンテンツ

[再生/一時停止]、[早戻し]、[早送り] ボタンを使用して音声を制御する

VoiceViewが有効になっている場合、次のナビゲーション規則に従います。

  • VoiceViewによって使用に関するヒント案内テキスト詳細テキスト、その他すべての静的コンテンツが読み上げられる場合、ユーザーは [早戻し] および [早送り] ボタンを使用してナビゲーションを制御できます。
  • ユーザーが画面に初めてアクセスする場合、VoiceViewによって自動的に案内テキストが読み上げられます。
  • 一時停止の後にユーザーがフォーカスをコントロールに移動すると、VoiceViewによって使用に関するヒント詳細テキストが読み上げられます。
  • 読み上げ時に [再生/一時停止] ボタンを押すと、VoiceViewをミュートできます。
    • 映画または音楽の再生中にVoiceViewによる読み上げが行われる場合、[再生/一時停止] を1回押すとVoiceViewをミュートできます。
    • VoiceViewがミュートされた後、もう一度 [再生/一時停止] ボタンを押すとメディアの再生が一時停止します。
  • ユーザーが [メニュー] ボタンを押すと、VoiceViewは静的コンテンツの一部である [詳細] コンテンツを読み上げません。

VoiceViewの確認モードでは、ユーザーがAmazon Fire TVの画面のグリッドレイアウトを詳しく調べることができます。これは、タブレットでスクリーンリーダーによるリニアナビゲーションを使用するのに似ています。アプリで確認モードを使用する場合、次の規則に従います。

  • [メニュー] ボタンを長押しして確認モードに入ると、VoiceViewがそのことを音声で知らせます。
  • 方向コントローラーの [] および [] ボタンでリニアナビゲーションを制御できます。
  • 実行不可能なアイテムにフォーカスが置かれているときにユーザーが [選択] を押すと、VoiceViewが「アイテムを選択できません」と読み上げます。
  • [メニュー] ボタンを長押しすると、確認モードが終了します。
  • 確認モードを終了した後、ユーザー補助機能のフォーカスは以前にキャッシュされたキーボードフォーカスの位置に戻り、VoiceViewによってそのフォーカスが再度読み上げられます。

WebViewで確認モードを使用する

WebViewは、アプリ内の複雑なUIを表現できます。これには、リンクなどの実行可能なアイテムと、静的テキストや画像などの実行不可能なアイテムの両方が含まれます。WebViewはAmazonアプリストアの多くのアプリで頻繁に使用されるため、VoiceViewではWebViewがサポートされます。VoiceView対応のWebViewでは、ユーザーが確認モードを使用して、実行可能なアイテムを含む画面上のすべてのアイテムを操作し、静的コンテンツアイテムのコンテキストを判断できます。WebViewでは詳細コンテンツは利用できません。

確認モードを初めて有効にした際には、詳細度のレベルはデフォルトで、個々のコントロールによる移動に設定されています。[] または [] を押して、利用可能な詳細度オプション(文字、単語、コントロール、ウィンドウなど)を順番に確認できます。ウェブコンテンツの詳細度オプションには、リンク、リスト、見出しが含まれます。このような読み上げの詳細度を使用して、女優の名前のスペルで検索を行うなど、ウェブコンテンツをより効率的に操作できます。さまざまな詳細度オプションを操作するには、次の規則に従います。

  • 現在選択されている詳細度で前のアイテムに戻るには、[] を押します。
  • 次のアイテムに移動するには、[] を押します。
  • 確認モードに入ると、詳細度レベルが「コントロール」にリセットされます。

VoiceViewの実装

このセクションでは、次の種類のコンテンツにVoiceViewを実装するためのガイドラインを示します。

  • 静的な(フォーカス不可能な)コンテンツ
  • 案内テキスト
  • 使用に関するヒント

静的な(フォーカス不可能な)コンテンツにVoiceViewのサポートを実装する

VoiceViewには、静的な(フォーカス不可能な)コンテンツを操作するために、 (1)[メニュー]、[早送り]、[早戻し] ボタンの使用、(2)確認モード(後述)の2つのメカニズムが用意されています。これにより、目の不自由なユーザーがこのようなコンテンツにアクセスできるようになります。VoiceViewではマークアップがサポートされており、これを使用してアプリで静的な(フォーカス不可能な)コンテンツをフォーカス可能なアイテムに関連付けることができます。

フォーカスが置かれているアイテムについて画面に詳細情報が表示されており、この情報がアイテムコンテンツの説明に含まれていない場合、詳細を使用します。これらの詳細は、ユーザーがそのアイテムの上で短い時間、一時停止した後に読み上げられます。アイテム間を連続して移動する場合には、ユーザーが1つのアイテムで一時停止するまで詳細の読み上げは行われません。

次の例では、2つのシナリオを使ってユーザーが静的なコンテンツを操作する方法を説明します。

例1

Amazon Fire TVランチャー画面を使用して、映画のカタログを操作するとします。画面上部のテキストが更新され、現在フォーカスが置かれているアイテムのタイトル、説明、評価、そのほかの情報が表示されます。このフォーカス不可能なコンテンツは、ユーザーが映画を選択するたびに更新されます。そのため、describedByエクストラを使用して、選択された映画を格納するノードについて説明する必要があります。これにより、アイテムで短い時間、一時停止した後に、この情報が自動的に読み上げられるようになります。
例2

Fire TVの映画詳細ビューがあるとします。表示される映画のタイトル、年、再生時間、星による評価などはすべて静的コンテンツです。ユーザーが [メニュー] を押すと、VoiceViewがこのコンテンツを読み上げます。その後、ユーザーは [早送り] および [早戻し] ボタンを使用して操作できます。

個々の静的コンテンツまたはそのコンテナをフォーカス可能なビューに関連付けるには、次の手順に従います。

  1. com.amazon.accessibility.describedByのキーを、そのビューのAccessibilityNodeInfoextrasバンドルに設定します。
  2. スペースで区切られた、コンテナまたはビューのビューIDのリストが含まれる文字列に値を設定します。これらのIDには、アイテムの説明が含まれます。

    VoiceViewは、com.amazon.accessibility.describedByキーが設定されたアイテムを検出すると、com.amazon.accessibility.describedByの値によって指定されたビューIDのAccessibilityNodeInfoオブジェクトのリストをリクエストします。その後、詳細度の設定によって、VoiceViewが適切なテキストまたはコンテンツの説明を読み上げます。

コードサンプル

// 次のように画面のほかの場所で静的テキストによって
// 説明されているボタンにエクストラを設定できます。
Button button = (Button) findViewById(R.id.button);
button.setAccessibilityDelegate(new View.AccessibilityDelegate() {
  public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
    super.onInitializeAccessibilityNodeInfo(host, info);
    info.getExtras().putString("com.amazon.accessibility.describedBy", R.id.movie_title_1 + " " + R.id.actors_1 + " " + R.id.description_1);
    info.setEnabled(host.isEnabled());
  }
});

VoiceViewに案内テキストを実装する

新規ユーザーがAmazon Fire TVの画面のレイアウトを理解しやすいように、VoiceViewでは案内テキストがサポートされています。これはローカライズされたテキストで、そのテキストが含まれるコンテナが初めて表示されたとき、またはユーザーが [メニュー] ボタンを押したときにVoiceViewによって読み上げられます。ある領域の全般的なレイアウトについて大まかな説明があると、初めて使用するユーザーにとって便利な場合があります。この場合、その領域のコンテナビューに案内テキストを適用します。

例1

ユーザーがFire TVのメインホームページを初めて開くと、VoiceViewによって「メインメニューです。検索、ホーム、映画、設定などの主要な選択肢が含まれています。アイテムを選択すると、関連するコンテンツが含まれるように画面の下側が更新されます」と読み上げられます。
例2

アプリの画面に、多くの映画のカバーアートのビューで構成されるLinearLayoutがあるとします。この画面の目的を目の不自由なユーザーに伝えるには、LinearLayoutのAccessibilityNodeInfoに案内テキストを設定します。これにより、「この画面には映画のリストが含まれています。それぞれの映画に移動すると、あらすじを聞くことができます。映画を選択すると再生されます」と説明します。

com.amazon.accessibility.orientationTextエクストラのキーによって、案内テキストAccessibilityNodeInfoに構成します。

  • ユーザーが案内テキストを含むAccessibilityNodeInfoを初めて使用すると、VoiceViewによってテキストが読み上げられます。
  • その後のアクセスでは、ユーザーが [メニュー] ボタンを押してコンテキスト情報を要求すると、VoiceViewによって案内テキストが読み上げられます。

VoiceViewに使用に関するヒントを実装する

視覚障害を持たないユーザーの場合、画面のレイアウトからその画面のナビゲーションと操作の方法に関する視覚的な手掛かりを得ることができます。たとえば、画面上でアイテムAがアイテムBの上側に配置されている場合、AからBに移動するには [] ボタンを押せばよいことが直感的にわかります。しかし、目の不自由なユーザーは、画面の操作に役立つそのほかのヒントを必要とすることがあります。VoiceViewでは、この問題に関する支援として、画面内のナビゲーションに役立つ使用に関するヒントを定義する一連のエクストラをサポートしています。

例1

画面に水平方向の映画のリストがあるとします。「[] および [] を使用すると、前の映画または次の映画に移動できます」という使用に関するヒントを含めることをお勧めします。
例2

画面にコンテンツの複数行のグリッドがあり、最初の行(「この映画を観た人はこんな映画も観ています」など)にフォーカスが置かれています。この場合、com.amazon.accessibility.usageHint.remoteを、「アイテムを探すには [] および [] を押してください。別のアイテムコレクションに移動するには [] および [] を押してください」のようなテキストと共に使用します。 このエクストラを、グリッドのすべての行と列の親であるコンテナビューに設定します。

使用に関するヒントは、グリッド内の個々のオブジェクトには設定しないでください。ナビゲーション中に使用に関するヒントが不必要に繰り返される原因となります。使用に関するヒントは、コンテナを選択した場合にのみ読み上げられます。同じコンテナ内のアイテム間を移動する際に、繰り返し読み上げられることはありません。

キー
com.amazon.accessibility.usageHint.remote
(Fire TVのみ)
リモコンを使用してアイテムの使用またはナビゲート方法を説明する文字列。 「アイテムを探すには左または右を押してください。」
com.amazon.accessibility.usageHint.touch
(Fireタブレットのみ)
タッチスクリーンを使用したアイテムの操作方法の説明。 「ダブルタップして選択します。ダブルタップして長押しするとオプションが表示されます。」

コードサンプル

// 次のようにエクストラをリストに設定して、使用に関するヒントを提供できます。
ListView listView = (ListView) findViewById(R.id.my_list);
listView.setAccessibilityDelegate(new View.AccessibilityDelegate() {
  public void onInitializeAccessibilityNodeInfo(View host,
    AccessibilityNodeInfo info) {
      super.onInitializeAccessibilityNodeInfo(host, info);
      info.getExtras().putString("com.amazon.accessibility.usageHint.touch",
       getString(R.string.double_tap_hint));
      info.getExtras().putString("com.amazon.accessibility.usageHint.remote",
       getString(R.string.press_select_hint));
      info.setEnabled(host.isEnabled());
 }
});