یکپارچه سازی برنامه همراه جفت سریع

Fast Pair به برنامه‌های همراه OEM اجازه می‌دهد تا عمیقاً در تجربه جفت‌سازی و استفاده ادغام شوند. چندین نقطه ادغام وجود دارد که به صورت اختیاری می توان از آنها برای جذب کاربران پس از پایان جفت شدن سریع استفاده کرد.

نصب در طول تجربه خارج از جعبه (OOBE)

Fast Pair به کاربران اجازه می دهد تا برنامه همراه را برای هدست خود به عنوان آخرین مرحله تجربه خارج از جعبه (OOBE) دانلود کنند. این در یک اعلان به کاربر ارائه می‌شود و به او می‌گوید جفت‌سازی به پایان رسیده است و اگر برنامه قبلاً نصب نشده باشد، می‌توانند آن را دانلود کنند یا برنامه را باز کرده و شروع به استفاده از آن کنند.

برای شروع کار با این ویژگی، نام بسته برنامه همراه خود را به جزئیات دستگاه در کنسول اضافه کنید.

برنامه های همراه راه اندازی شده توسط Fast Pair شامل یک عنصر داده اضافی است:

ادغام بخش تنظیمات

برش ها را می توان توسط یک برنامه همراه برای بهبود بیشتر گزینه های موجود در صفحه تنظیمات بلوتوث دستگاه ارائه کرد.

یک 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) {
  ...
}

هر Slice باید عنوان، زیرنویس، نماد و اکشن داشته باشد.

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 موارد زیر را به کنسول اضافه کنید تا سرویس جفت سریع تأیید کند که با برنامه صحیح ارتباط برقرار می کند:

قصد به روز رسانی سیستم عامل

هنگامی که نسخه میان‌افزار دستگاه متصل قدیمی است، یا دقیقاً متفاوت از نسخه میان‌افزار پیکربندی‌شده در کنسول دستگاه است، Fast Pair برنامه همراه را با یک هدف 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 ، اگر Fast Pair اعلان نشان داده باشد، روی true تنظیم شود