• Launcher app prediction


    15、launcher应用列表界面最上面一行应用推荐

    现象:
    Android S上,更新同年四月份gms包后,launcher应用列表上方多出一行图标。
    {相册、时钟、比机、Gmail、YouTube、设置}
    通过studio自带的Layout Inspector查看,这一部分界面属于all_apps_header。也就是应用列表的头信息布局中。
    相关代码:
    launcher view层:
    多出的一行应用:Launcher\quickstep\src\com\android\launcher3\appprediction\PredictionRowView.java这里面初始化最上面一行图标,可以设置图标文字颜色。
    分割线:Launcher\quickstep\src\com\android\launcher3\appprediction\AppsDividerView.java这里面设置分割线的颜色
    多嘴一句,应用列表图标适配器:Launcher\src\com\android\launcher3\allapps\AllAppsGridAdapter.java 这里面标准的adapter,包含多类
    型,根据不同类型显示不同的内容。onCreateViewHolder、onBindViewHolder初始化图标view、设置应用列表图标文字颜色等等。
    launcher model层:
    Launcher\quickstep\src\com\android\launcher3\model\QuickstepModelDelegate.java注册registerPredictor监听,有更新回调时调用PredictionUpdateTask更新数据
    Launcher\quickstep\src\com\android\launcher3\model\PredictionUpdateTask.java更新数据、更新界面信息。
    framework层:—没用太深入的研究,简单看看
    AppPredictionManager、AppPredictionManagerService.java 和其它功能类似,分为manager和service2部分,通过aidl通讯。service负责数据更新和回调。
    SystemServer.java中判断是否配置相关config,来启动对应的service。
    config相关:

    <!-- The package name for the system's app prediction service.
             This service must be trusted, as it can be activated without explicit consent of the user.
             Example: "com.android.intelligence/.AppPredictionService"
    -->
    <string name="config_defaultAppPredictionService" translatable="false"></string>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    gms包:
    新增应用:AndroidSystemIntelligence_Features.apk 包名:com.google.android.as
    新增覆盖:GmsConfigOverlayASI,包名:com.google.android.overlay.gmsconfig.asi,rro技术覆盖framework下面的config文件配置。

    string name="config_defaultAppPredictionService" translatable="false">com.google.android.as/com.google.android.apps.miphone.aiai.app.AiAiPredictionService</string>
    
    • 1

    ========================================================================================================================================
    接上篇15,重新写了一篇
    https://blog.csdn.net/a396604593/article/details/123487805
    本文主要补充说明一下prediction。
    prediction的类型:
    目前有主菜单应用、hotseat应用、widget三种
    Launcher端相关的类:

    Launcher\quickstep\src\com\android\launcher3\uioverrides\PredictedAppIcon.java
    Launcher\quickstep\src\com\android\launcher3\uioverrides\PredictedAppIconInflater.java
    Launcher\quickstep\src\com\android\launcher3\appprediction\PredictionRowView.java
    Launcher\quickstep\src\com\android\launcher3\model\PredictionUpdateTask.java
    Launcher\quickstep\src\com\android\launcher3\hybridhotseat\HotseatPredictionController.java
    Launcher\quickstep\src\com\android\launcher3\hybridhotseat\HotseatPredictionModel.java
    Launcher\quickstep\src\com\android\launcher3\model\WidgetsPredictionUpdateTask.java
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    未完待续

  • 相关阅读:
    8月26日计算机视觉理论学习笔记——医疗影像分割
    在RT-Thread下为MPU手搓以太网MAC驱动-4
    化妆品微针贴片,全球市场总体规模,前12大厂商排名及市场份额
    Python入门教程 | Python 迭代器与生成器
    数据可视化项目(二)
    AQS中 state 和 waitStatus 分别是干什么的?
    人工智能模型的微小单元
    圆锥药型罩采用2D、3D单层和3D三种方法侵彻结果对比(基于LS-DYNA软件平台)
    代码随想录算法训练营第五十八天 |583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇
    第11期 | GPTSecurity周报
  • 原文地址:https://blog.csdn.net/a396604593/article/details/126060850