소리내어 읽기

소리내어 읽기는 Android 기기에서 사용할 수 있는 Google 어시스턴트 기능으로, 사용자가 뉴스 기사나 블로그 게시물과 같은 긴 형식의 웹 콘텐츠를 읽을 수 있는 또 다른 방법을 제공합니다. 사용자가 "Hey Google, 소리내어 읽어 줘"라고 말하면 앱이 웹 기반 콘텐츠를 소리 내어 읽고 읽는 단어를 강조표시하며 페이지를 자동으로 스크롤하도록 할 수 있습니다. 이 기능에 관한 자세한 내용은 소리내어 읽기 제품 업데이트 게시물을 참고하세요.

메시지가 표시되면 Google 어시스턴트의 도움을 받아 앱이 화면의 웹 콘텐츠를 소리 내어 읽습니다.
그림 1. 앱이 소리 내어 읽는 웹 콘텐츠 듣기

웹 기반 콘텐츠가 있는 Android 앱은 onProvideAssistContent() 메서드로 어시스턴트에 정보를 제공하여 소리내어 읽기를 지원할 수 있습니다.

이 프로세스를 통해 어시스턴트와 공유되는 데이터 구조를 유지할 수 있습니다. 그러면 공유 앱 콘텐츠를 수신한 사용자는 텍스트나 스크린샷 대신 딥 링크로 연결되거나 콘텐츠를 직접 수신할 수 있습니다.

웹 기반 콘텐츠 및 앱의 공유 가능한 entityonProvideAssistContent()를 구현하세요.

어시스턴트에 콘텐츠 제공

소리내어 읽기에서 콘텐츠에 액세스하려면 앱에서 어시스턴트에 콘텐츠 관련 정보(예: 웹 URI, 일부 기본 컨텍스트)를 제공해야 합니다. 그러면 어시스턴트는 콘텐츠를 검색하여 사용자에게 소리 내어 읽어 줄 수 있습니다.

WebView 또는 Chrome 맞춤 탭을 사용하여 웹 기반 콘텐츠를 이미 구현한 Android 앱의 경우 시작점으로 소리내어 읽기에 동일한 웹 URI를 사용하세요.

소리내어 읽기 기능을 내장 인텐트와 결합할 때는 앱 작업을 호출한 후 사용자의 작업 흐름에서 최종 앱 활동에 관해 onProvideAssistContent()만 구현하면 됩니다.

예를 들어 앱에서 뉴스 기사를 표시하는 경우 기사를 표시하는 최종 화면에서 onProvideAssistContent()를 구현합니다. 진행 중인 화면이나 미리보기 화면에서 구현할 필요는 없습니다.

AssistContenturi 필드에 콘텐츠의 웹 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 개발자 문서의 어시스턴트용 상황별 콘텐츠 최적화 가이드를 참고하세요.