O Pareamento rápido permite que os apps complementares de OEM sejam profundamente integrados à experiência de pareamento e uso. Há vários pontos de integração que podem ser usados para engajar os usuários após a conclusão do Pareamento rápido.
Instalação durante a experiência inicial
Com o Pareamento rápido, os usuários podem fazer o download do app complementar para os fones de ouvido como a etapa final da experiência pronta para uso (OOBE, na sigla em inglês). Isso é apresentado ao usuário em uma notificação informando que o pareamento foi concluído e que ele pode fazer o download do app, se ele ainda não estiver instalado, ou abrir o app e começar a usá-lo.
Para começar a usar esse recurso, adicione o nome do pacote do app complementar aos detalhes do dispositivo no console.
Os apps complementares iniciados pelo Pareamento rápido incluem um elemento de dados extra:
android.bluetooth.device.extra.DEVICE
: o dispositivo Bluetooth que acionou a notificação.
Integração da fração de configurações
As Slices podem ser fornecidas por um app complementar para melhorar ainda mais as opções disponíveis na página de configurações de Bluetooth de um dispositivo.
Um SliceProvider precisa ser implementado por um app complementar para fornecer essas frações de configurações. Há dois tipos de frações disponíveis: uma fração de OOBE e itens de configurações genéricas. A fração OOBE precisa ser incluída se o usuário ainda não tiver configurado o fone de ouvido no app complementar e as fatias restantes sempre precisam ser incluídas. Consulte o exemplo de código abaixo:
@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
é usado para lembrar os usuários de concluir a configuração do dispositivo,
caso ainda não tenha feito isso no app complementar. O app complementar não pode
fornecer a fatia novamente depois que o usuário concluir a configuração do 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
é onde os apps complementares podem fornecer links para configurações usadas
com frequência.
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 precisa ter título, subtítulo, ícone e ação.
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);
}
Adicione o código abaixo ao console depois de implementar SliceProvider
para
permitir que o serviço de Pareamento rápido verifique se está se comunicando com o app correto:
- Autoridade do provedor
- Resumo público da assinatura
SHA-256
dos apps complementares- Você pode usar o apksigner para receber o resumo SHA-256.
Intent de atualização do firmware
Quando a versão do firmware de um dispositivo conectado está desatualizada ou
falando precisamente diferente da versão do firmware configurada no console do dispositivo,
o Pareamento rápido notifica o app complementar com uma intent
com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST
após uma verificação da versão do firmware. A intent tem as seguintes informações extras:
com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION
, a versão de firmware do dispositivo conectadocom.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN
, definido comotrue
se o Pareamento rápido mostrar uma notificação.