Configurações personalizadas

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.