Функция Google Ассистента "Чтение вслух", доступная на устройствах Android, позволяет пользователям читать длинный веб-контент, например новостные статьи и записи в блогах. Пользователи могут сказать "Окей, Google, прочитай", чтобы приложение прочитало вслух контент веб-версии, выделяя слова и автоматически прокручивая страницу. Чтобы узнать больше об этой функции, прочитайте запись в блоге.
Приложения Android с веб-контентом могут поддерживать функцию "Прочитай", предоставляя информацию Ассистенту с помощью метода onProvideAssistContent().
Это позволяет сохранить структуру данных при их передаче Ассистенту. Пользователи, которым отправляют контент из приложения, могут получать его напрямую или по ссылке на контент, а не в виде текста или скриншота.
Реализуйте onProvideAssistContent() для любого веб-контента и любого контента entity, которым можно поделиться в приложении.
Предоставление контента Ассистенту
Чтобы функция Read It могла получить доступ к вашему контенту, приложение должно предоставить Ассистенту информацию о контенте, например его веб-URI и некоторые основные контекстные данные. После этого Ассистент сможет извлекать ваш контент и зачитывать его пользователю.
Если в вашем приложении Android уже есть веб-контент, который открывается в WebView или специальных вкладках Chrome, используйте те же веб-URI для Read It.
При совмещении функции Read It со встроенными намерениями вам нужно реализовать onProvideAssistContent() только для последнего действия приложения в последовательности задач пользователя после вызова действия в приложении.
Например, если в вашем приложении показываются новостные статьи, реализуйте onProvideAssistContent() на конечном экране со статьей. На экранах предварительного просмотра или загрузки это делать не нужно.
Укажите веб-URI для контента в поле uri объекта AssistContent.
Предоставьте контекстную информацию в виде объекта JSON-LD, используя словарь schema.org в поле structuredData.
В следующем фрагменте кода показано, как предоставить контент Ассистенту:
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.