Android 的“设置”应用为 Android 8.0 用户提供了一系列建议。 这些建议通常有助于改进手机功能,而且可以自定义(例如 “设置‘勿扰’时间安排”或“开启 WLAN 通话功能”)。该功能会对建议进行排名(基于任何上下文信号或用户以往的建议采用情况)。
当前的默认 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
)来验证排名,从而确保其功能版本能够按预期运行。