O Pareamento rápido permite que os apps complementares OEM sejam totalmente integrados ao pareamento e experiência de uso do produto. Há vários pontos de integração que podem ser usada para engajar os usuários depois que eles terminam o Pareamento rápido.
Instalação durante a experiência inicial (OOBE, na sigla em inglês)
O Pareamento rápido permite que os usuários façam o download do app complementar para o fone de ouvido como etapa final da experiência pronta para uso (OOBE, na sigla em inglês). Isso é apresentado ao usuário uma notificação informando que o pareamento terminou e que é possível faça o download do app, caso ele ainda não esteja instalado, ou abra o app e comece usá-lo.
Para começar a usar este recurso, adicione o nome do pacote do aplicativo complementar ao detalhes do dispositivo no console.
Os apps complementares iniciados pelo Pareamento rápido incluem dois elementos de dados extras:
android.bluetooth.device.extra.DEVICE
: o dispositivo Bluetooth que acionou a notificação.com.google.android.gms.nearby.discovery.fastpair.MODEL_ID
: umjava.lang.String
que representa o ID do modelo do par dispositivo.
Integração de frações de configurações
Slices podem ser fornecidos por um aplicativo complementar para melhorar ainda mais as opções disponíveis no sistema Página de configurações de Bluetooth.
Um SliceProvider. deve ser implementado por um aplicativo complementar para fornecer essas frações de configurações. dois tipos de frações estão disponíveis: uma fração OOBE e itens de configurações genéricos. A Uma fração OOBE deve ser incluída se o usuário ainda não tiver configurado o fone de ouvido no aplicativo complementar e as frações restantes devem sempre 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 terminar a configuração do dispositivo,
caso ainda não tenham feito isso
no app complementar. O aplicativo complementar não pode
forneça a fração novamente após 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 os links dos itens mais usados
configurações.
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 seguinte ao console depois de implementar SliceProvider
para
permitir que o serviço de Pareamento rápido verifique se ele está se comunicando com o app correto:
- A autoridade do provedor
- Os apps complementares resumo público de assinatura
SHA-256
- 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 diferente da versão do firmware configurada no console do dispositivo,
O Pareamento rápido notifica o app complementar com uma
Intenção com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST
após a 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
, o versão do firmware do dispositivo conectadocom.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN
, definido paratrue
se o Pareamento rápido tiver mostrado uma notificação