Integration der Companion-App mit schnellem Pairing

Dank der Funktion „Schnelles Pairing“ können OEM-Begleit-Apps umfassend in die Kopplung und User Experience aus. Es gibt mehrere Integrationspunkte, die optional werden verwendet, um Nutzer zu erreichen, nachdem sie die Funktion „Schnelles Pairing“ beendet haben.

Installation während der Out-of-Box Experience (OOBE)

Mit der Funktion „Schnelles Pairing“ können Nutzer die Companion-App für ihr Headset herunterladen, letzten Schritt der Out-of-Box Experience (OOBE). Diese wird dem Nutzer in wird eine Benachrichtigung angezeigt, dass die Kopplung abgeschlossen ist Laden Sie die App herunter, falls sie noch nicht installiert ist, oder öffnen Sie sie und starten Sie verwenden.

Wenn du diese Funktion nutzen möchtest, füge den Paketnamen deiner Companion-App zum in der Konsole.

Companion-Apps, die über die Funktion „Schnelles Pairing“ eingeführt wurden, enthalten zwei zusätzliche Datenelemente:

  • android.bluetooth.device.extra.DEVICE – das Bluetooth-Gerät die die Benachrichtigung ausgelöst hat.
  • com.google.android.gms.nearby.discovery.fastpair.MODEL_ID – a java.lang.String, die die Modell-ID des Paars .

Einbindung von Einstellungssegmenten

Slices können von einem Companion-App, mit der Sie die auf dem Gerät verfügbaren Optionen Seite mit Bluetooth-Einstellungen.

SliceProvider muss von einer Companion-App implementiert werden, damit diese Einstellungssegmente bereitgestellt werden. Es sind zwei Arten von Slices verfügbar: ein OOBE-Slice und allgemeine Einstellungselemente. Die OOBE-Slice sollte enthalten sein, wenn der Nutzer das Headset noch nicht konfiguriert hat in der Companion-App angezeigt. Die verbleibenden Segmente sollten immer enthalten sein, siehe das folgende Codebeispiel:

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

Mit oobe_slice werden Nutzer daran erinnert, die Einrichtung ihres Geräts abzuschließen. falls sie dies noch nicht in der Companion-App getan haben. Die Companion-App darf Stellen Sie das Slice noch einmal bereit, nachdem der Nutzer die Geräteeinrichtung abgeschlossen hat.

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

In setting_slice können Companion-Apps Links zu häufig verwendeten Einstellungen.

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

Jedes Slice muss einen Titel, eine Unterüberschrift, ein Symbol und eine Aktion haben.

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

Fügen Sie Folgendes in die Console ein, nachdem Sie SliceProvider in dem Dienst „Schnelles Pairing“ ermöglichen, zu prüfen, ob er mit der richtigen App kommuniziert:

Intent für Firmware-Aktualisierung

Wenn die Firmwareversion eines verbundenen Geräts veraltet oder genau richtig ist die sich von der in der Gerätekonsole konfigurierten Firmwareversion unterscheidet, Beim schnellen Pairing wird die Companion App com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST Intent nach einer Prüfung der Firmwareversion. Der Intent enthält die folgenden zusätzlichen Informationen:

  • com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION, die Firmwareversion des verbundenen Geräts
  • com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN, festgelegt auf true, wenn bei der Funktion „Schnelles Pairing“ eine Benachrichtigung angezeigt wurde