फ़ास्ट पेयर कंपैनियन ऐप्लिकेशन इंटिग्रेशन

फ़ास्ट पेयर की मदद से, OEM के साथी ऐप्लिकेशन को डिवाइस से जोड़ने और इस्तेमाल करने के अनुभव में बेहतर तरीके से इंटिग्रेट किया जा सकता है. ऐसे कई इंटिग्रेशन पॉइंट हैं जिनका इस्तेमाल उपयोगकर्ताओं को फ़ास्ट पेयर करने के बाद जोड़ने के लिए किया जा सकता है. हालांकि, इनका इस्तेमाल करना ज़रूरी नहीं है.

आउट-ऑफ़-बॉक्स एक्सपीरियंस (OOBE) के दौरान इंस्टॉल करना

फ़ास्ट पेयर की मदद से उपयोगकर्ता, अपने हेडसेट के लिए साथी ऐप्लिकेशन को आउट-ऑफ़-बॉक्स एक्सपीरियंस (OOBE) के अंतिम चरण के रूप में डाउनलोड कर सकते हैं. यह जानकारी, उपयोगकर्ता को एक सूचना में दिखाई जाती है और बताता है कि पेयरिंग खत्म हो गई है और अगर ऐप्लिकेशन पहले से इंस्टॉल नहीं है, तो वे उसे डाउनलोड कर सकते हैं या फिर ऐप्लिकेशन खोलकर उसका इस्तेमाल शुरू कर सकते हैं.

इस सुविधा का इस्तेमाल शुरू करने के लिए, कंसोल पर मौजूद डिवाइस की जानकारी में अपने साथी ऐप्लिकेशन के पैकेज का नाम जोड़ें.

फ़ास्ट पेयर की मदद से लॉन्च किए गए साथी ऐप्लिकेशन में, डेटा से जुड़ी एक और चीज़ शामिल होती है:

सेटिंग स्लाइस इंटिग्रेशन

स्लाइस की सुविधा, डिवाइस के ब्लूटूथ सेटिंग पेज पर उपलब्ध विकल्पों को और बेहतर बनाने के लिए, साथी ऐप्लिकेशन से मिल सकती है.

ये सेटिंग स्लाइस देने के लिए, साथी ऐप्लिकेशन को SliceProvider लागू करना होगा. दो तरह के स्लाइस उपलब्ध हैं: एक OOBE स्लाइस और सामान्य सेटिंग आइटम. अगर उपयोगकर्ता ने अभी तक साथी ऐप्लिकेशन में हेडसेट कॉन्फ़िगर नहीं किया है, तो OOBE स्लाइस को शामिल किया जाना चाहिए. साथ ही, बाकी स्लाइस हमेशा शामिल किए जाने चाहिए, नीचे दिया गया कोड सैंपल देखें:

@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 का इस्तेमाल, उपयोगकर्ताओं को डिवाइस सेट अप करने की याद दिलाने के लिए किया जाता है. डिवाइस सेटअप करने के बाद, साथी ऐप्लिकेशन को दोबारा वह जानकारी नहीं देनी चाहिए.

@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 वह जगह है जहां साथी ऐप्लिकेशन आम तौर पर इस्तेमाल की जाने वाली सेटिंग के लिंक दे सकते हैं.

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

हर स्लाइस में टाइटल, सबटाइटल, आइकॉन, और कार्रवाई होनी चाहिए.

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

फ़ास्ट पेयर की सुविधा चालू करने के बाद, कंसोल में SliceProvider जोड़ें, ताकि यह पुष्टि की जा सके कि वह सही ऐप्लिकेशन के साथ संपर्क कर रही है:

  • सेवा देने वाली संस्था का अधिकार
  • साथी ऐप्लिकेशन के सार्वजनिक हस्ताक्षर SHA-256 डाइजेस्ट

फ़र्मवेयर को अपडेट करने का इंटेंट

जब कनेक्ट किए गए डिवाइस का फ़र्मवेयर वर्शन पुराना हो या वह डिवाइस कंसोल में कॉन्फ़िगर किए गए फ़र्मवेयर वर्शन से अलग हो या सटीक तरीके से बोल रहा हो, तो फ़ास्ट पेयर, फ़र्मवेयर वर्शन की जांच के बाद साथी ऐप्लिकेशन को com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST इंटेंट की सूचना देगा. इंटेंट में यह ज़्यादा जानकारी शामिल है:

  • com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION, कनेक्ट किए गए डिवाइस का फ़र्मवेयर वर्शन
  • अगर फ़ास्ट पेयर की सुविधा से जुड़ी सूचना दिखती है, तो com.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN को true पर सेट करें