Tích hợp ứng dụng đồng hành Ghép nối nhanh

Tính năng Ghép nối nhanh cho phép các ứng dụng đồng hành của OEM được tích hợp sâu vào tính năng ghép nối và trải nghiệm sử dụng của bạn. Có nhiều điểm tích hợp có thể tuỳ ý được sử dụng để thu hút người dùng sau khi họ kết thúc Ghép nối nhanh.

Cài đặt trong trải nghiệm ngoài hộp (OOBE)

Tính năng Ghép nối nhanh cho phép người dùng tải ứng dụng đồng hành xuống tai nghe dưới dạng bước cuối cùng của Trải nghiệm ngoài hộp (OOBE). Thông tin này được hiển thị cho người dùng trong một thông báo cho biết quá trình ghép nối đã hoàn tất và họ có thể tải ứng dụng xuống nếu ứng dụng chưa được cài đặt, hoặc mở ứng dụng rồi khởi động đang sử dụng nó.

Để bắt đầu sử dụng tính năng này, hãy thêm tên gói của ứng dụng đồng hành vào thông tin chi tiết về thiết bị trên bảng điều khiển.

Các ứng dụng đồng hành do tính năng Ghép nối nhanh phát hành bao gồm 2 phần tử dữ liệu bổ sung:

  • android.bluetooth.device.extra.DEVICE - Thiết bị Bluetooth đã kích hoạt thông báo.
  • com.google.android.gms.nearby.discovery.fastpair.MODEL_ID – một java.lang.String biểu thị mã mô hình của cặp thiết bị.

Tích hợp lát cài đặt

Lát cắt có thể được cung cấp bởi đồng hành để nâng cao hơn nữa các tuỳ chọn có sẵn trên Trang cài đặt Bluetooth.

SliceProvider phải được triển khai bởi ứng dụng đồng hành để cung cấp các lát cài đặt này. Có có 2 loại lát cắt có sẵn: lát cắt OOBE và các mục cài đặt chung. Chiến lược phát hành đĩa đơn Lát cắt OOBE phải được đưa vào nếu người dùng chưa định cấu hình tai nghe trong ứng dụng đồng hành và các phần còn lại phải luôn được đưa vào, hãy xem mã mẫu bên dưới:

@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 dùng để nhắc người dùng hoàn tất quá trình thiết lập thiết bị của họ, nếu họ chưa làm như vậy trong ứng dụng đồng hành. Ứng dụng đồng hành không được cung cấp lại lát cắt sau khi người dùng hoàn tất quá trình thiết lập thiết bị.

@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 là nơi các ứng dụng đồng hành có thể cung cấp đường liên kết đến các trang thường dùng phần cài đặt.

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

Mỗi Lát cắt cần có tiêu đề, phụ đề, biểu tượng và hành động.

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

Thêm đoạn mã sau vào bảng điều khiển sau khi triển khai SliceProvider để cho phép dịch vụ Ghép nối nhanh xác minh rằng thiết bị đó đang kết nối với đúng ứng dụng:

  • Cơ quan cấp chứng nhận của nhà cung cấp
  • Các ứng dụng đồng hành Thông báo signature SHA-256 công khai

Ý định cập nhật chương trình cơ sở

Khi phiên bản chương trình cơ sở của một thiết bị được kết nối bị lỗi thời hoặc chính xác nói khác với phiên bản chương trình cơ sở được định cấu hình trong bảng điều khiển thiết bị, Tính năng Ghép nối nhanh sẽ thông báo cho ứng dụng đồng hành bằng Ý định com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST sau khi kiểm tra phiên bản chương trình cơ sở. Ý định có các thông tin bổ sung sau đây:

  • com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION, phiên bản chương trình cơ sở của thiết bị được kết nối
  • com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN, đã đặt với true nếu tính năng Ghép nối nhanh hiện thông báo