خواندن

«خواندن» یکی از ویژگی‌های «دستیار Google» است که در دستگاه‌های Android دردسترس است و روش دیگری برای خواندن محتوای وب طولانی مانند مقاله‌های خبری و پست‌های وبلاگ به کاربران ارائه می‌دهد. کاربران می‌توانند چیزی شبیه به «Ok Google، این را بخوان» بگویند تا برنامه محتوای مبتنی بر وب را با صدای بلند بخواند، کلماتی را که خوانده می‌شود برجسته کند، و صفحه را به‌طور خودکار پیمایش کند. برای کسب اطلاعات بیشتر درباره این ویژگی، می‌توانید پست به‌روزرسانی محصول «خواندن» را نیز بخوانید.

وقتی از شما خواسته می‌شود، برنامه‌ای محتوای وب روی صفحه را با کمک «دستیار Google» با صدای بلند می‌خواند.
شکل ۱. گوش دادن به برنامه‌ای که محتوای وب را با صدای بلند می‌خواند.

برنامه‌های Android با محتوای مبتنی بر وب می‌توانند با ارائه اطلاعات به «دستیار» بااستفاده از روش onProvideAssistContent()، از «خواندن» پشتیبانی کنند.

این فرایند به حفظ ساختار داده‌ها هنگام هم‌رسانی با «دستیار» کمک می‌کند. کاربرانی که محتوای هم‌رسانی‌شده برنامه را دریافت می‌کنند می‌توانند پیوند عمیق شوند یا محتوا را مستقیماً دریافت کنند، نه به‌صورت نوشتار یا نماگرفت.

onProvideAssistContent() را برای هر محتوای مبتنی بر وب و هر entity قابل‌هم‌رسانی در برنامه‌تان پیاده‌سازی کنید.

ارائه محتوا به «دستیار»

برای اینکه «خواندن» به محتوایتان دسترسی داشته باشد، برنامه‌تان باید اطلاعاتی درباره محتوا، مثل شناسه منبع یکسان وب و برخی زمینه‌های اصلی، به «دستیار» ارائه دهد. سپس «دستیار» می‌تواند محتوای شما را بازیابی کند تا با صدای بلند برای کاربر خوانده شود.

برای برنامه‌های Android که ازقبل محتوای مبتنی بر وب را بااستفاده از «وب‌نما» یا «برگه‌های سفارشی Chrome» پیاده‌سازی می‌کنند، از همان URIهای وب برای Read It به‌عنوان نقطه شروع استفاده کنید.

هنگام ترکیب کردن عملکرد «خواندن» با هدف‌های ازپیش‌تعریف‌شده، فقط باید onProvideAssistContent() را برای فعالیت نهایی برنامه در جریان وظیفه کاربر پس‌از فراخوانی «کنش برنامه» پیاده‌سازی کنید.

برای مثال، اگر برنامه‌تان مقاله‌های خبری را نمایش می‌دهد، onProvideAssistContent() را در صفحه نهایی که مقاله را نشان می‌دهد پیاده‌سازی کنید؛ لازم نیست آن را برای صفحه‌های پیش‌نمایش یا درحال انجام پیاده‌سازی کنید.

در فیلد uri از AssistContent، یک URI وب برای محتوایتان ارائه دهید. اطلاعات بافتاری را به‌عنوان شیء JSON-LD بااستفاده از واژگان schema.org در فیلد structuredData ارائه دهید.

تکه‌کد زیر نمونه‌ای از ارائه محتوا به «دستیار» را نشان می‌دهد:

کاتلین

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 (فقط درصورتی لازم است که محتوا دارای نشانی وب باشد)

برای کسب اطلاعات بیشتر درباره استفاده از onProvideAssistContent()، به راهنمای بهینه‌سازی محتوای زمینه‌ای برای «دستیار» در اسناد توسعه‌دهنده Android مراجعه کنید.