Launcher负一屏(二)----引入其它资源替换Google原生负一屏界面

负一屏有两种实现方式

1、Launcher自行开发,往Workspace中插入一个自定义的CellLayout来作为负一屏的容器。
具体请参考之前的文章:https://blog.csdn.net/a396604593/article/details/82586143
2、利用Google的feed屏方案,基于ILauncherOverlay和ILauncherOverlayCallback这两个接口来实现,Launcher作为客户端,负一屏是一个独立应用作为服务端,通过aidl来通信来实现加载负一屏以及支持相互滑页。

Google Feed

Android 11为例
要想桌面带有Google feed负一屏,需要编译vendor/partner_gms/apps/SearchLauncher
SearchLauncher结构
1、libs/launcher_client.jar Google和feed apk通讯的工具
2、com/android/searchlauncher/OverlayCallbackImpl.java 初始化LauncherClient对象和实现LauncherClientCallbacks回调方法,并且在launcher各个生命周期通过LauncherClient同步给负一屏
3、应该会有一个apk,具体实现负一屏界面以及功能

Google Feed的方式替换其它负一屏

本文实现的是Ohana的Entertainment Space

1、按照要求内置Ohana.apk
2、把aar包放入lib下面并用mk引入

这里可以网上搜一下如何mk导入aar包和导入aar包里的R文件

...
LOCAL_PACKAGE_NAME := SearchLauncherQuickStep
#add Ohana -1 Screen
LOCAL_STATIC_JAVA_AAR_LIBRARIES:= mediahome-lib
LOCAL_MODULE_TAGS := optional
LOCAL_SYSTEM_EXT_MODULE := true
LOCAL_PRIVILEGED_MODULE := true
LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep
LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3 GmsConfigOverlaySearchLauncherQuickStep
LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/$(LAUNCHER_PATH)/quickstep/AndroidManifest.xml
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
#add Ohana -1 Screen
LOCAL_AAPT_FLAGS := \
  --auto-add-overlay \
  --extra-packages com.google.android.mediahome.launcheroverlay
include $(BUILD_PACKAGE)

#add Ohana -1 Screen
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := mediahome-lib:libs/mediahome-launcheroverlay-1.1.0-eap.aar
include $(BUILD_MULTI_PREBUILT)
3、替换OverlayCallbackImpl中的LauncherClient和LauncherClientCallbacks,并实现新的回调方法
//import com.google.android.libraries.gsa.launcherclient.LauncherClient;
//import com.google.android.libraries.gsa.launcherclient.LauncherClientCallbacks;
import com.google.android.mediahome.launcheroverlay.client.LauncherClient;
import com.google.android.mediahome.launcheroverlay.client.LauncherClientCallbacks;
import com.google.android.mediahome.launcheroverlay.common.AnimationType;

不同的负一屏源有不同的Client和Callbacks和开发文档,根据文档导入aar包和初始化LauncherClient对象和实现LauncherClientCallbacks回调方法即可。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值