การผสานรวมแอปที่ใช้ร่วมกันด่วน

การจับคู่ด่วนช่วยให้แอปเสริมจาก OEM สามารถผสานรวมอย่างลงตัวในการจับคู่อุปกรณ์ ประสบการณ์การใช้งาน มีจุดผสานรวมหลายจุดที่สามารถเลือกใช้ ใช้เพื่อดึงดูดผู้ใช้หลังจากจับคู่ด่วนเสร็จแล้ว

การติดตั้งตั้งแต่แกะกล่อง (OOBE)

การจับคู่ด่วนช่วยให้ผู้ใช้ดาวน์โหลดแอปที่ใช้ร่วมกันสำหรับชุดหูฟังได้เป็น ขั้นตอนสุดท้ายของประสบการณ์การใช้งานแบบแกะกล่อง (OOBE) ซึ่งจะปรากฏแก่ผู้ใช้ใน การแจ้งเตือนว่าการจับคู่เสร็จสิ้นแล้ว และสามารถ ให้ดาวน์โหลดแอปหากยังไม่ได้ติดตั้ง หรือเปิดแอปแล้วเริ่ม อยู่แล้ว

หากต้องการเริ่มต้นใช้งานฟีเจอร์นี้ ให้เพิ่มชื่อแพ็กเกจของแอปที่ใช้ร่วมกันลงใน รายละเอียดอุปกรณ์ในคอนโซล

แอปที่ใช้ร่วมกันที่เปิดตัวโดยการจับคู่ด่วนมีองค์ประกอบข้อมูลเพิ่มเติม 2 อย่างดังนี้

  • android.bluetooth.device.extra.DEVICE - อุปกรณ์บลูทูธ ที่เรียกใช้การแจ้งเตือน
  • com.google.android.gms.nearby.discovery.fastpair.MODEL_ID - น java.lang.String ที่แสดงถึงรหัสโมเดลของการจับคู่ อุปกรณ์

การผสานรวมส่วนแบ่งการตั้งค่า

Slices สามารถให้โดย เพื่อเพิ่มประสิทธิภาพของตัวเลือกที่มีในอุปกรณ์ หน้าการตั้งค่าบลูทูธ

SliceProvider ต้องใช้งานโดยแอปที่ใช้ร่วมกันเพื่อระบุส่วนแบ่งการตั้งค่าเหล่านี้ มี ส่วนแบ่งที่ใช้ได้มี 2 ประเภท ได้แก่ ส่วนแบ่ง OOBE และรายการการตั้งค่าทั่วไป ควรรวมส่วน OOBE ไว้ด้วยหากผู้ใช้ยังไม่ได้กำหนดค่าชุดหูฟัง ภายในแอปที่ใช้ร่วมกันและควรใส่ส่วนที่เหลือไว้ด้วยเสมอ โปรดดู ตัวอย่างโค้ดด้านล่าง

@Nullable
@Override
public Slice onBindSlice(Uri sliceUri) {
  String address = sliceUri.getQueryParameter("addr");
  if (address == null) {
    return null;
  }
  String path = sliceUri.getPathSegments().get(/* index= */ 0);
  if ("settings_slice".equals(path)) {
    return createSettingSlice(sliceUri, address);
  } else if ("oobe_slice".equals(path)) {
    return createOobeReminderSlice(sliceUri, address);
  }
  return null;
}

oobe_slice ใช้เพื่อเตือนผู้ใช้ให้ตั้งค่าอุปกรณ์ให้เสร็จสิ้น หากยังไม่ได้ดำเนินการในแอปที่ใช้ร่วมกัน แอปที่ใช้ร่วมกันต้องไม่ ให้ส่วนแบ่งอีกครั้งหลังจากที่ผู้ใช้ตั้งค่าอุปกรณ์เสร็จแล้ว

@Nullable
private Slice createOobeReminderSlice(Uri sliceUri, String address) {
  if (!deviceHasGoneThroughOobe(address)) {
    ListBuilder listBuilder =
        new ListBuilder(context, sliceUri, ListBuilder.INFINITY);
    addOobeSlice(listBuilder, context, address);
    return listBuilder.build();
  }
  return null;
}

private static void addOobeSlice(
    ListBuilder listBuilder, Context context, String address) {
  listBuilder.addRow(
      createRow(
          context,
          R.drawable.icon_oobe,
          R.string.title_oobe,
          R.string.summary_oobe,
          R.string.label_oobe,
          createOobePendingIntent(context, address)));
}

setting_slice เป็นที่ที่แอปที่ใช้ร่วมกันสามารถให้ลิงก์ไปยังรายการที่ใช้บ่อย การตั้งค่า

private Slice createSettingSlice(Uri sliceUri, String address) {
  ListBuilder listBuilder =
      new ListBuilder(context, sliceUri, ListBuilder.INFINITY);
  // TODO: Add your customized slice here.
  addRow1(listBuilder, context, address);
  addRow2(listBuilder, context, address);
  return listBuilder.build();
}

private static void addRow1(
    ListBuilder listBuilder, Context context, String address) {
  listBuilder.addRow(
      createRow(
          context,
          R.drawable.fp_slice_row1_icon,
          R.string.fp_slice_row1_title_gestures,
          R.string.fp_slice_row1_summary_gestures,
          R.string.fp_slice_row1_label_gestures,
          createPendingIntent(context, address)));
}

private static void addRow2(
    ListBuilder listBuilder, Context context, String address) {
  ...
}

แต่ละสไลซ์ต้องมีชื่อ ชื่อรอง ไอคอน และการดำเนินการ

private static RowBuilder createRow(
    Context context,
    @DrawableRes int iconId,
    @StringRes int titleId,
    @StringRes int summaryId,
    @StringRes int actionTitleId,
    PendingIntent pendingIntent) {
  SliceAction action =
      SliceAction.createDeeplink(
          pendingIntent,
          IconCompat.createWithResource(context, iconId),
          ListBuilder.ICON_IMAGE,
          context.getString(actionTitleId));
  return new RowBuilder()
      .setTitleItem(
          IconCompat.createWithResource(context, iconId),
          ListBuilder.ICON_IMAGE)
      .setTitle(context.getString(titleId))
      .setSubtitle(context.getString(summaryId))
      .setPrimaryAction(action);
}

เพิ่มข้อมูลต่อไปนี้ลงในคอนโซลหลังจากติดตั้งใช้งาน SliceProvider ไปยัง ให้บริการจับคู่ด่วนยืนยันว่ากำลังสื่อสารกับแอปที่ถูกต้อง

ความตั้งใจในการอัปเดตเฟิร์มแวร์

เมื่อเวอร์ชันเฟิร์มแวร์ของอุปกรณ์ที่เชื่อมต่อล้าสมัยหรือ พูดคนละอย่างกับเวอร์ชันเฟิร์มแวร์ที่กำหนดค่าไว้ในคอนโซลของอุปกรณ์ การจับคู่ด่วนจะแจ้งเตือนแอปที่ใช้ร่วมกันพร้อมด้วย ความตั้งใจ com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST หลังจากตรวจสอบเวอร์ชันเฟิร์มแวร์ Intent มีข้อมูลเพิ่มเติมต่อไปนี้

  • com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION เวอร์ชันเฟิร์มแวร์ของอุปกรณ์ที่เชื่อมต่อ
  • com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN ตั้งค่าแล้ว เป็น true หากฟีเจอร์จับคู่ด่วนแสดงการแจ้งเตือน