L'accoppiamento rapido consente alle app companion OEM di essere integrate profondamente nell'esperienza di accoppiamento e utilizzo. Se vuoi, puoi utilizzare più punti di integrazione per coinvolgere gli utenti al termine dell'accoppiamento rapido.
Installazione durante l'esperienza out-of-box (OOBE)
L'accoppiamento rapido consente agli utenti di scaricare l'app complementare per le cuffie come ultimo passaggio dell'esperienza Out-of-Box (OOBE). Questo viene presentato all'utente in una notifica in cui viene comunicato che l'accoppiamento è terminato e che può scaricare l'app, se non è già installata, oppure aprire l'app e iniziare a utilizzarla.
Per iniziare a utilizzare questa funzionalità, aggiungi il nome del pacchetto dell'app complementare ai dettagli del dispositivo nella console.
Le app companion lanciate dall'accoppiamento rapido includono un elemento di dati aggiuntivo:
android.bluetooth.device.extra.DEVICE
: il dispositivo Bluetooth che ha attivato la notifica.
Integrazione della sezione Impostazioni
Le sezioni possono essere fornite da un'app complementare per migliorare ulteriormente le opzioni disponibili nella pagina delle impostazioni Bluetooth di un dispositivo.
Per fornire le sezioni di queste impostazioni, è necessario implementare uno strumento SliceProvider da un'app complementare. Sono disponibili due tipi di sezioni: una sezione OOBE e elementi di impostazioni generiche. La sezione OOBE deve essere inclusa se l'utente non ha ancora configurato le cuffie nell'app complementare e le sezioni rimanenti devono essere sempre incluse. Consulta l'esempio di codice riportato di seguito:
@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
viene utilizzato per ricordare agli utenti di completare la configurazione del dispositivo,
se non l'hanno ancora fatto nell'app complementare. L'app complementare non deve
fornire di nuovo la sezione dopo che l'utente ha completato la configurazione del 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
è la piattaforma in cui le app companion possono fornire link a impostazioni
di uso comune.
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) {
...
}
Ogni sezione deve includere un titolo, un sottotitolo, un'icona e un'azione.
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);
}
Aggiungi quanto segue alla console dopo l'implementazione di SliceProvider
per consentire al servizio di accoppiamento rapido di verificare che stia comunicando con l'app corretta:
- Autorità del fornitore
- Sintesi
SHA-256
della firma pubblica dell'app complementare- Puoi utilizzare apksigner per ottenere il digest SHA-256.
Intento aggiornamento firmware
Quando la versione del firmware di un dispositivo connesso non è aggiornata o che pronuncia esattamente
la versione del firmware configurata nella console del dispositivo,
l'accoppiamento rapido invia una notifica all'app complementare con un
intent com.google.android.gms.nearby.fastpair.ACTION_FIRMWARE_UPDATE_BROADCAST
dopo un controllo della versione del firmware. L'intent include le seguenti informazioni aggiuntive:
com.google.android.gms.nearby.fastpair.EXTRA_LOCAL_FIRMWARE_VERSION
, la versione del firmware del dispositivo connessocom.google.android.gms.nearby.fastpair.EXTRA_UPDATE_NOTIFICATION_SHOWN
, impostato sutrue
se la funzionalità Accoppiamento rapido mostra una notifica