Szybkie parowanie umożliwia ścisłą integrację aplikacji towarzyszących OEM z procesem parowania i użytkowania. Istnieje wiele punktów integracji, których można opcjonalnie użyć do angażowania użytkowników po zakończeniu Szybkiego parowania.
Instalacja wyjątkowa
Szybkie parowanie umożliwia użytkownikom pobranie aplikacji towarzyszącej do zestawu słuchawkowego. Jest to ostatni etap gotowej wersji do pracy (OOBE). Użytkownik jest informowany o zakończeniu parowania i że może pobrać aplikację, jeśli nie jest jeszcze zainstalowana, lub ją otworzyć i zacząć z niej korzystać.
Aby zacząć korzystać z tej funkcji, dodaj nazwę pakietu aplikacji towarzyszącej do szczegółów urządzenia w konsoli.
Aplikacje towarzyszące uruchamiane przez Szybkie parowanie zawierają dodatkowy element danych:
android.bluetooth.device.extra.DEVICE
– urządzenie Bluetooth, które wywołało powiadomienie.
Integracja wycinka ustawień
Wycinki mogą być dostarczane przez aplikację towarzyszącą, aby wzbogacać opcje dostępne na stronie ustawień Bluetooth urządzenia.
Aby można było udostępnić te wycinki ustawień, aplikacja towarzysząca musi zaimplementować parametr SliceProvider. Dostępne są 2 rodzaje wycinków: wycinek OOBE i ogólne elementy ustawień. Wycinek OOBE powinien być uwzględniony, jeśli użytkownik nie skonfigurował jeszcze zestawu słuchawkowego w aplikacji towarzyszącej, a pozostałe fragmenty powinny być zawsze uwzględniane. Zobacz przykładowy kod poniżej:
@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;
}
Parametr oobe_slice
służy do przypomnienia użytkownikom o konieczności dokończenia konfiguracji urządzenia, jeśli nie zrobili tego jeszcze w aplikacji towarzyszącej. Aplikacja towarzysząca nie może ponownie udostępniać wycinka, gdy użytkownik zakończy konfigurowanie urządzenia.
@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
to pole, w którym aplikacje towarzyszące mogą zawierać linki do często używanych ustawień.
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) {
...
}
Każdy wycinek musi mieć tytuł, podtytuł, ikonę i działanie.
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);
}
Po zaimplementowaniu metody SliceProvider
dodaj do konsoli ten kod, aby umożliwić usłudze Szybkie parowanie sprawdzanie, czy komunikuje się ona z właściwą aplikacją:
- Uprawnienia dostawcy
- Podsumowanie podpisu
SHA-256
aplikacji towarzyszącej- Aby pobrać skrót SHA-256, możesz użyć narzędzia apksigner.
Intencja aktualizacji oprogramowania
Gdy wersja oprogramowania układowego podłączonego urządzenia jest nieaktualna lub mówi inaczej niż wersja ta skonfigurowana w konsoli urządzenia, po sprawdzeniu wersji oprogramowania Szybkie parowanie powiadomi aplikację towarzyszącą z intencją com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST
. Intencja zawiera te dodatkowe informacje:
com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION
, wersja oprogramowania połączonego urządzeniacom.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN
, ustaw wartośćtrue
, jeśli Szybkie parowanie wyświetli powiadomienie