Персональные настройки

В приложении "Настройки" Android 8.0 пользователям предлагается список рекомендаций. Обычно они предлагают воспользоваться функциями телефона, и их можно настраивать (например, "Задать расписание режима "Не беспокоить" или "Включить звонки по Wi-Fi"). Эта функция позволяет ранжировать подсказки на основе контекстных сигналов или прошлых взаимодействий пользователя с подсказками.

Текущая модель ранжирования Android Open Source Project (AOSP) основана на предыдущих взаимодействиях пользователя с предложением. Это простая линейная модель, обученная с помощью логистической регрессии, чтобы правильно взвешивать сигналы взаимодействия. В реализации по умолчанию в качестве индикаторов используются показанные, выбранные или отклоненные подсказки, а также давность этих событий. Это позволяет ранжировать подсказки и повышать вероятность прогнозирования взаимодействия пользователя с ними. Эта модель была создана на основе ограниченного объема данных о пользователях. Производители устройств могут разработать собственную модель ранжирования на основе любых собранных данных, а также добавить контекстные сигналы и настроить ранжирование.

Реализация

Найдите реализацию packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionRanker.java по умолчанию в AOSP.

Эта функция защищена флагом isSmartSuggestionEnabled, который по умолчанию имеет значение false. Если функция включена (задано значение true), она работает без дополнительных изменений, используя реализацию AOSP по умолчанию. Производители могут использовать реализацию по умолчанию или собственную реализацию, чтобы включить эту функцию.

Производители устройств могут настроить эту функцию, реализовав функцию platform/packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java и переопределив метод rankSuggestions файла. Этот метод получает два списка, содержащие элементы подсказок и соответствующие им идентификаторы suggestionId. Этот метод должен переупорядочивать элементы списка только в соответствии с желаемым рейтингом. Идентификаторы suggestionIds позволяют однозначно идентифицировать предложения и извлекать необходимую информацию о них, в зависимости от реализации ранжирования (например, дату последнего взаимодействия с определенным предложением).

Проверка

Чтобы убедиться, что реализованная вами версия функции работает правильно, напишите собственные модульные тесты, похожие на packages/apps/Settings/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionRankerTest.java, для проверки ранжирования.