読み上げ

読み上げは Android デバイスで利用できる Google アシスタントの機能であり、ニュース記事やブログ投稿のような長文のウェブ コンテンツを読むための代替手段をユーザーに提供します。「OK Google, 読み上げて」のように話しかけることで、アプリを入手できます。 ウェブベースのコンテンツの読み上げ、読み上げ中の単語のハイライト表示、自動スクロール 表示されます。この機能について詳しくは、読み上げプロダクトの最新情報に関する投稿もご覧ください。

プロンプトが表示されたら、アプリは Google アシスタントの助けを借りて画面上のウェブ コンテンツを読み上げます。
図 1. アプリでウェブ コンテンツの読み上げを聴く場合。

ウェブベースのコンテンツを含む Android アプリで読み上げをサポートするには、onProvideAssistContent() メソッドを使用してアシスタントに情報を提供します。

このプロセスは、アシスタントと共有されるデータの構造を維持するために役立ちます。共有されたアプリ コンテンツを受け取るユーザーは、ディープリンクされたり、コンテンツをテキストまたはスクリーンショットとしてではなく直接受け取ったりします。

ウェブベースのコンテンツに onProvideAssistContent() を実装します。 およびアプリ内の共有可能な entity

アシスタントにコンテンツを提供する

読み上げ機能でコンテンツにアクセスするには、コンテンツに関する情報(ウェブ URI や基本的なコンテキストなど)をアプリからアシスタントに提供する必要があります。アシスタントはコンテンツを取得して、ユーザーに対して読み上げることができます。

対象 WebView を使用してウェブベースのコンテンツをすでに実装している Android アプリ Chrome カスタムタブ。読み上げ機能と同じウェブ URI を 出発点になります。

読み上げ機能と組み込みインテントを組み合わせる場合、 onProvideAssistContent() をユーザーの タスクフローを実行します。

たとえば、アプリに ニュース記事、最終画面に onProvideAssistContent() を実装 記事を表示する進行中のイベントや プレビュー画面があります

AssistContenturi フィールドで、コンテンツのウェブ URI を指定します。structuredData フィールドで、schema.org ボキャブラリを使用する JSON-LD オブジェクトとして、コンテキスト情報を指定します。

次のコード スニペットは、アシスタントにコンテンツを提供する例を示しています。

override fun onProvideAssistContent(outContent: AssistContent) {
   
super.onProvideAssistContent(outContent)

   
// Set the web URI for content to be read from a
   
// WebView, Chrome Custom Tab, or other source
   
val urlString = url.toString()
    outContent
.setWebUri(Uri.parse(urlString))

   
// Create JSON-LD object based on schema.org structured data
   
val structuredData = JSONObject()
       
.put("@type", "Article")
       
.put("name", "ExampleName of blog post")
       
.put("url", outContent.getWebUri())
       
.toString()
    outContent
.setStructuredData(structuredData)
}
@Override
public void onProvideAssistContent(AssistContent outContent) {

 
// Set the web URI for content to be read from a
 
// WebView, Chrome Custom Tab, or other source
 
String urlString = url.toString();
  outContent
.setWebUri(Uri.parse(urlString));

 
try {
     
// Create JSON-LD object based on schema.org structured data
     
String structuredData = new JSONObject()
         
.put("@type", "Article")
         
.put("name", "ExampleName of blog post")
         
.put("url", outContent.getWebUri())
         
.toString();
      outContent
.setStructuredData(structuredData);
 
} catch (JSONException ex) {
     
// Handle exception
     
Log.e(TAG, ex.getMessage());
 
}

 
super.onProvideAssistContent(outContent);
}

onProvideAssistContent() を実装するときは、できるだけ多くの 各 entity について、可能な限り多くのデータが必要です。次のフィールドは必須です。

  • @type
  • .name
  • .url(コンテンツが URL アドレス指定可能な場合のみ必須)

onProvideAssistContent() の使用方法について詳しくは、Android デベロッパー向けドキュメントのアシスタント用にコンテキスト コンテンツを最適化するガイドをご覧ください。