読み上げは Android デバイスで利用できる Google アシスタントの機能であり、ニュース記事やブログ投稿のような長文のウェ�� コンテンツを読むための代替手段をユーザーに提供します。「OK Google, 読み上げて」などと話しかけると、アプリがウェブベースのコンテンツを読み上げ、読み上げ中の単語をハイライト表示して、ページを自動スクロールできます。この機能について詳しくは、読み上げプロダクトの最新情報に関する投稿もご覧ください。
ウェブベースのコンテンツを含む Android アプリで読み上げをサポートするには、onProvideAssistContent()
メソッドを使用してアシスタントに情報を提供します。
このプロセスは、アシスタントと共有されるデータの構造を維持するために役立ちます。共有されたアプリ コンテンツを受け取るユーザーは、ディープリンクされたり、コンテンツをテキストまたはスクリーンショットとしてではなく直接受け取ったりします。
アプリ内のウェブベースのコンテンツおよび共有可能な entity
に onProvideAssistContent()
を実装します。
アシスタントにコンテンツを提供する
読み上げ機能でコンテンツにアクセスするには、コンテンツに関する情報(ウェブ URI や基本的なコンテキストなど)をアプリからアシスタントに提供する必要があります。それから、アシスタントがコンテンツを取得してユーザーに読み上げます。
WebView または Chrome カスタムタブを使用してウェブベースのコンテンツをすでに実装している Android アプリでは、出発点として、読み上げ機能と同じウェブ URI を使用します。
Read It 機能と組み込みインテントを組み合わせる場合、App Action の呼び出し後に、ユーザーのタスクフローで最終的なアプリ アクティビティに onProvideAssistContent()
を実装するだけで済みます。
たとえば、アプリでニュース記事を表示する場合、記事を表示する最後の画面に onProvideAssistContent()
を実装します。進行中の画面やプレビュー画面に実装する必要はありません。
AssistContent
の uri
フィールドで、コンテンツのウェブ URI を指定します。structuredData
フィールドで、schema.org ボキャブラリを使用する JSON-LD オブジェクトとして、コンテキスト情報を指定します。
次のコード スニペットは、アシスタントにコンテンツを提供する例を示しています。
Kotlin
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) }
Java
@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 デベロッパー向けドキュメントのアシスタント用にコンテキスト コンテンツを最適化するガイドをご覧ください。