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 nhà sản xuất thiết bị gốc (OEM) tích hợp sâu vào trải nghiệm ghép nối và sử dụng. Có nhiều điểm tích hợp có thể tuỳ ý sử dụng để thu hút người dùng sau khi họ hoàn tất tính năng Ghép nối nhanh.

Cài đặt trong khi Trải nghiệm bên ngoài (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 cho tai nghe của họ. Đây là bước cuối cùng trong Trải nghiệm ngoài hộp (OOBE). Ứng dụng này sẽ hiển thị với 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 chưa cài đặt, hoặc mở ứng dụng và bắt đầu sử dụng.

Để 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 phần thông tin chi tiết về thiết bị trên bảng điều khiển.

Ứng dụng đồng hành do tính năng Ghép nối nhanh khởi chạy có thêm một phần tử dữ liệu:

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

Lát cắt có thể được ứng dụng đồng hành cung cấp để tăng cường hơn nữa các tuỳ chọn có sẵn trên trang cài đặt Bluetooth của thiết bị.

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

@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 việc thiết lập thiết bị nếu họ chưa làm việc nà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 việc 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 chế độ cài đặt thường dùng.

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 phần 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 đang kết nối với đúng ứng dụng:

  • Thẩm quyền của nhà cung cấp
  • Thông báo SHA-256 chữ ký công khai của các ứng dụng đồng hành

Ý đị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 là phiên bản lỗi thời hoặc nói chính xác 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 của 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 này có các thông tin bổ sung sau:

  • 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ị đã kết nối
  • com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN, được đặt thành true nếu tính năng Ghép nối nhanh đã hiển thị thông báo