Integración de apps complementarias con Vinculación rápida

La Vinculación rápida permite que las apps complementarias de OEM se integren completamente en la vinculación y de uso de la IA. Hay varios puntos de integración que pueden ser para atraer a los usuarios después de que finalicen la Vinculación rápida.

Realiza la instalación durante la experiencia de inmediato (OOBE)

La Vinculación rápida permite que los usuarios descarguen la aplicación complementaria para sus auriculares como el último paso de la experiencia lista para usar (OOBE). Se presenta al usuario en una notificación que indique que finalizó la vinculación y que puede descarga la aplicación si aún no está instalada o ábrela e inicia y la usan.

Para comenzar a usar esta función, agrega el nombre del paquete de la aplicación complementaria al del dispositivo en la consola.

Las aplicaciones complementarias iniciadas por Vinculación rápida incluyen dos elementos de datos adicionales:

  • android.bluetooth.device.extra.DEVICE: el dispositivo Bluetooth que activó la notificación.
  • com.google.android.gms.nearby.discovery.fastpair.MODEL_ID: a java.lang.String que representa el ID del modelo del modelo vinculado dispositivo.

Integración de la sección de configuración

Las Slices se pueden proporcionar mediante un aplicación complementaria para mejorar aún más las opciones disponibles en la configuración Página de configuración de Bluetooth

Un SliceProvider debe implementarse una aplicación complementaria para proporcionar estos segmentos de configuración. Hay Hay 2 tipos de segmentos disponibles: uno OOBE y elementos de configuración genéricos. El Se debe incluir un segmento de OOBE si el usuario aún no configuró los auriculares dentro de la aplicación complementaria y siempre se deben incluir las secciones restantes; consulta la siguiente muestra de código:

@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 se usa para recordarles a los usuarios que terminen de configurar el dispositivo. si aún no lo han hecho en la aplicación complementaria. La aplicación complementaria no debe proporciona la porción nuevamente después de que el usuario haya completado la configuración del dispositivo.

@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 es donde las apps complementarias pueden proporcionar vínculos a los configuración.

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

Cada Slice debe tener un título, subtítulo, ícono y acción.

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

Agrega lo siguiente a la consola después de implementar SliceProvider para Permite que el servicio de Vinculación rápida verifique que se está comunicando con la app correcta:

Intent de actualización de firmware

Cuando la versión de firmware de un dispositivo conectado está desactualizada Hablando diferente de la versión de firmware configurada en la consola del dispositivo La Vinculación rápida notificará a la app complementaria con una com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST intent después de comprobar la versión de firmware. El intent tiene la siguiente información adicional:

  • com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION, el La versión de firmware del dispositivo conectado
  • Se estableció com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN a true si la Vinculación rápida mostró una notificación