Hızlı Eşleme Tamamlayıcı Uygulama Entegrasyonu

Hızlı Eşleme sayesinde OEM tamamlayıcı uygulamalarının eşleme ve kullanım deneyimine kapsamlı bir şekilde entegre edilmesini sağlayabilirsiniz. İsteğe bağlı olarak, Hızlı Eşleme'yi bitirdikten sonra kullanıcıların etkileşimde bulunması için kullanılabilen birden fazla entegrasyon noktası vardır.

Kullanıma Hazır Deneyim (OOBE) sırasında kurulum

Hızlı Eşleme sayesinde kullanıcılar, Kullanıma Hazır Deneyimin (OOBE) son adımı olarak mikrofonlu kulaklık için tamamlayıcı uygulamayı indirebilir. Bu onay, kullanıcıya eşlemenin tamamlandığını ve yüklü değilse uygulamayı indirebileceğini veya uygulamayı açıp kullanmaya başlayabileceğini bildiren bir bildirimle sunulur.

Bu özelliği kullanmaya başlamak için tamamlayıcı uygulamanızın paket adını konsolda cihaz ayrıntılarına ekleyin.

Hızlı Eşleme tarafından başlatılan tamamlayıcı uygulamalar fazladan bir veri öğesi içerir:

  • android.bluetooth.device.extra.DEVICE - Bildirimi tetikleyen Bluetooth Cihaz.

Ayarlar dilimi entegrasyonu

Bir cihazın Bluetooth ayarları sayfasında bulunan seçenekleri daha da geliştirmek için tamamlayıcı bir uygulama tarafından dilimler sağlanabilir.

Bu ayar dilimlerini sağlamak için bir tamamlayıcı uygulama tarafından SliceProvider uygulanmalıdır. 2 tür dilim vardır: OOBE dilimi ve genel ayar öğeleri. Kullanıcı tamamlayıcı uygulamada henüz başlığı yapılandırmadıysa ve kalan dilimlerin de her zaman dahil edilmesi gerekiyorsa OOBE dilimi dahil edilmelidir. Aşağıdaki kod örneğine bakın:

@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, kullanıcılara tamamlayıcı uygulamada henüz yapmadılarsa cihazlarının kurulumunu tamamlamalarını hatırlatmak için kullanılır. Tamamlayıcı uygulama, kullanıcı cihaz kurulumunu tamamladıktan sonra dilimi tekrar sağlamamalıdır.

@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)));
}

Tamamlayıcı uygulamalar, setting_slice adlı uygulamada yaygın olarak kullanılan ayarlara bağlantılar sağlayabilir.

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

Her dilimin başlığı, alt başlığı, simgesi ve işlemi olmalıdır.

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);
}

Hızlı Eşleme hizmetinin doğru uygulama ile iletişim kurduğunu doğrulaması için SliceProvider uygulandıktan sonra aşağıdaki kodu konsola ekleyin:

  • Sağlayıcının yetkisi
  • Tamamlayıcı uygulamaların herkese açık imza SHA-256 özeti

Donanım Yazılımı Güncelleme Amacı

Bağlı bir cihazın donanım yazılımı sürümü güncel değilse veya tam olarak cihaz konsolunda yapılandırılan donanım yazılımı sürümünden farklı bir şekilde konuştuğunda Hızlı Eşleme, donanım yazılımı sürüm kontrolünden sonra tamamlayıcı uygulamaya bir com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST Intent'i ile bildirimde bulunur. Intent aşağıdaki ek bilgilere sahiptir:

  • Bağlı cihazın donanım yazılımı sürümü olan com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION
  • com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN, Hızlı Eşleme bir bildirim gösterdiyse true olarak ayarlayın