O app Configurações do Android oferece uma lista de sugestões para os usuários no Android 8.0. Essas sugestões geralmente promovem recursos do smartphone e são personalizáveis (por exemplo, "Definir programação do Não perturbe" ou "Ativar a chamada por Wi-Fi"). Esse recurso fornece classificação para sugestões com base em qualquer indicador contextual ou nas interações anteriores do usuário com sugestões.
O modelo de classificação padrão atual do Projeto Android Open Source (AOSP, na sigla em inglês) é baseado nas interações anteriores do usuário com a sugestão, que é um modelo linear simples treinado com regressão logística para ponderar corretamente os indicadores de interação. A implementação padrão usa sugestões mostradas, clicadas ou dispensadas como indicadores, junto com a recência desses eventos para classificar as sugestões e aumentar a chance de prever a interação de um usuário com essas sugestões. Esse modelo foi criado com uma quantidade limitada de dados de usuários registrados. Os fabricantes de dispositivos (OEMs) podem desenvolver o próprio modelo de classificação com base em qualquer dado coletado e, possivelmente, incluir indicadores contextuais e calibrar a classificação.
Implementação
Encontre a implementação padrão de packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionRanker.java
no AOSP.
Esse recurso é protegido por uma flag, isSmartSuggestionEnabled
, que
é definida como falsa por padrão. Se ativado (definido como "true"), o recurso funciona
sem modificações adicionais usando a implementação padrão do AOSP. Os OEMs podem
usar a implementação padrão ou introduzir a própria implementação para
ativar esse recurso.
Os OEMs podem personalizar o recurso implementando o recurso platform/packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
e substituindo o método rankSuggestions
do arquivo.
Esse método recebe duas listas que contêm blocos de sugestões e os
suggestionIds correspondentes. Esse método precisa reordenar os blocos na lista apenas de acordo
com a pontuação de classificação desejada. Os suggestionIds podem ser usados para identificar de forma exclusiva
as sugestões e extrair as informações anteriores necessárias sobre elas,
dependendo da implementação de classificação (por exemplo, a recência da interação com essa
sugestão específica).
Validação
Os implementadores podem garantir que a versão do recurso funcione conforme o esperado
escrevendo os próprios testes de unidade semelhantes a packages/apps/Settings/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionRankerTest.java
para verificar a classificação.