Android 设置应用在 Android 8.0 中向用户提供建议列表。这些建议通常用于推广手机的功能,并且可以自定义(例如,“设置勿扰模式时间表”或“开启 Wi-Fi 通话”)。此功能根据任何情境信号或用户过去与建议的互动情况对建议进行排名。
当前默认的 Android 开源项目 (AOSP) 排名模型基于用户之前与建议的互动情况,这是一个简单的线性模型,通过逻辑回归进行训练,以适当权衡互动信号。默认实现使用显示的、点击的或忽略的建议作为指标,以及这些事件的发生时间,对建议进行排名,并增加预测用户与这些建议互动的机会。此模型是使用有限的已记录用户数据构建的。设备制造商 (OEM) 可以根据任何收集的数据开发自己的排名模型,并可能包含情境信号并校准排名。
实现
在 AOSP 中查找默认的 packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionRanker.java
实现。
此功能受标志 isSmartSuggestionEnabled
保护,默认情况下该标志设置为 false。如果启用(设置为 true),则该功能将在不进行额外修改的情况下使用默认的 AOSP 实现运行。OEM 可以使用默认实现,也可以引入自己的实现来启用此功能。
OEM 可以通过实现 platform/packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
功能并替换该文件的 rankSuggestions
方法来自定义此功能。此方法获取两个列表,其中包含建议图块和相应的 suggestionId。此方法应仅根据所需的排名分数对列表中的图块重新排序。suggestionId 可用于唯一标识建议,并提取有关建议的所需历史信息,具体取决于排名实现(例如,与此特定建议互动的发生时间)。
验证
实现者可以通过编写自己的单元测试(类似于 packages/apps/Settings/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionRankerTest.java
)来验证排名,从而确保其功能版本按预期工作。