From 33347a97306db7fd00b3e4906ccbe14a32447683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 16 Sep 2021 17:24:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BAIMoGoFunctionProvider.java?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E7=BB=99=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9B=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 董宏宇 --- core/mogo-core-data/build.gradle | 19 +++++- core/mogo-core-function-api/README.md | 12 ++++ core/mogo-core-function-api/build.gradle | 22 +++++- .../api/base/IMoGoFunctionProvider.java | 37 ++++++++++ .../api/hmi}/warning/IMoGoWaringProvider.kt | 8 +-- .../api/hmi/warning/WarningStatusListener.kt | 10 +++ core/mogo-core-function-call-api/build.gradle | 18 ++++- .../mogo-core-function-call-impl/build.gradle | 18 ++++- core/mogo-core-function-impl/build.gradle | 18 ++++- .../module/hmi/notification/WarningFloat.kt | 2 +- .../notification/WarningNotificationConfig.kt | 2 +- .../V2XLimitingVelocityBroadcastReceiver.kt | 2 +- .../V2XTrafficLightBroadcastReceiver.kt | 2 +- .../receiver/V2XWarningBroadcastReceiver.kt | 2 +- .../mogo/module/hmi/ui/MoGoWarningContract.kt | 2 +- .../mogo/module/hmi/ui/MoGoWarningFragment.kt | 2 +- .../hmi/warning/MoGoWarningProvider.java | 16 ++--- .../com/mogo/module/main/MainActivity.java | 1 + .../module/main/cards/MogoModulesHandler.java | 5 ++ .../module/main/cards/MogoModulesManager.java | 67 ++++++++++++++++++- .../module/obu/mogo/MogoPrivateObuManager.kt | 4 +- services/mogo-service-api/build.gradle | 1 + .../com/mogo/service/IMogoServiceApis.java | 3 +- .../warning/WarningStatusListener.java | 13 ---- .../mogo/service/impl/MogoServiceApis.java | 3 +- 25 files changed, 232 insertions(+), 57 deletions(-) create mode 100644 core/mogo-core-function-api/README.md create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/base/IMoGoFunctionProvider.java rename {services/mogo-service-api/src/main/java/com/mogo/service => core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi}/warning/IMoGoWaringProvider.kt (90%) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/WarningStatusListener.kt delete mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java diff --git a/core/mogo-core-data/build.gradle b/core/mogo-core-data/build.gradle index 002aeb57bc..8e0ff7c7f0 100644 --- a/core/mogo-core-data/build.gradle +++ b/core/mogo-core-data/build.gradle @@ -1,6 +1,10 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id 'com.alibaba.arouter' +} android { compileSdkVersion rootProject.ext.android.compileSdkVersion // buildToolsVersion rootProject.ext.android.buildToolsVersion @@ -12,6 +16,15 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + + //ARouter apt 参数 + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + } buildTypes { diff --git a/core/mogo-core-function-api/README.md b/core/mogo-core-function-api/README.md new file mode 100644 index 0000000000..de56e4f933 --- /dev/null +++ b/core/mogo-core-function-api/README.md @@ -0,0 +1,12 @@ +### 模块说明 +本模块定义业务层具备那些功能,不提供具体业务实现;所有具体业务实现均在mogo-core-function-impl模块中 +adas--域控制器相关 +chat--车聊聊相关 +check--车辆检测相关 +dispatch--车辆调度相关 +hmi--UI这里承载的是所有鹰眼的UI展示 +map--地图相关 +notice--公告 +obu--OBU预警逻辑相关 +tts--语音播报&语音交互相关 +v2x--车机端预警逻辑相关 \ No newline at end of file diff --git a/core/mogo-core-function-api/build.gradle b/core/mogo-core-function-api/build.gradle index 8c1e449b76..a6f524c914 100644 --- a/core/mogo-core-function-api/build.gradle +++ b/core/mogo-core-function-api/build.gradle @@ -1,6 +1,10 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id 'com.alibaba.arouter' +} android { compileSdkVersion rootProject.ext.android.compileSdkVersion // buildToolsVersion rootProject.ext.android.buildToolsVersion @@ -12,6 +16,15 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + + //ARouter apt 参数 + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + } buildTypes { @@ -31,6 +44,9 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation rootProject.ext.dependencies.kotlinstdlibjdk7 + implementation rootProject.ext.dependencies.arouter + kapt rootProject.ext.dependencies.aroutercompiler + if (Boolean.valueOf(RELEASE)) { } else { diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/base/IMoGoFunctionProvider.java b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/base/IMoGoFunctionProvider.java new file mode 100644 index 0000000000..fd9eb15af2 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/base/IMoGoFunctionProvider.java @@ -0,0 +1,37 @@ +package com.mogo.eagle.core.function.api.base; + +import android.content.Context; +import android.os.Bundle; +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; + +import com.alibaba.android.arouter.facade.template.IProvider; + +/** + * @author xiaoyuzhou + * @date 2021/9/16 4:40 下午 + * 功能提供者基础 + */ +public interface IMoGoFunctionProvider extends IProvider { + /** + * 创建图层,如果功能需要在HMI单独创建新的图层才需要实现 + * + * @param context 上下文 + * @return 图层Fragment + */ + Fragment createCoverage(Context context, Bundle data); + + /** + * 功能模块唯一标识 + * + * @return 功能模块名称 + */ + @NonNull + String getFunctionName(); + + default void onDestroy() { + Log.d("IMoGoFunctionProvider", "onDestroy"); + } +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt similarity index 90% rename from services/mogo-service-api/src/main/java/com/mogo/service/warning/IMoGoWaringProvider.kt rename to core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt index 8fe814a802..166ad6435c 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/warning/IMoGoWaringProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt @@ -1,13 +1,13 @@ -package com.mogo.service.warning +package com.mogo.eagle.core.function.api.hmi.warning import com.mogo.eagle.core.data.enums.WarningDirectionEnum -import com.mogo.service.module.IMogoModuleProvider +import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider /** * @author xiaoyuzhou * @date 2021/8/2 7:36 下午 */ -interface IMoGoWaringProvider : IMogoModuleProvider { +interface IMoGoWaringProvider : IMoGoFunctionProvider { /** * 展示VR下V2X预警 * @@ -21,7 +21,7 @@ interface IMoGoWaringProvider : IMogoModuleProvider { alertContent: String?, ttsContent: String?, tag: String?, - listener:WarningStatusListener? + listener: WarningStatusListener? ) /** diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/WarningStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/WarningStatusListener.kt new file mode 100644 index 0000000000..970bc3d650 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/WarningStatusListener.kt @@ -0,0 +1,10 @@ +package com.mogo.eagle.core.function.api.hmi.warning + +/** + * @author xiaoyuzhou + * @date 2021/9/13 4:41 下午 + */ +interface WarningStatusListener { + fun onShow() {} + fun onDismiss() {} +} \ No newline at end of file diff --git a/core/mogo-core-function-call-api/build.gradle b/core/mogo-core-function-call-api/build.gradle index b2159529a2..b216f129de 100644 --- a/core/mogo-core-function-call-api/build.gradle +++ b/core/mogo-core-function-call-api/build.gradle @@ -1,6 +1,10 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id 'com.alibaba.arouter' +} android { compileSdkVersion rootProject.ext.android.compileSdkVersion // buildToolsVersion rootProject.ext.android.buildToolsVersion @@ -12,6 +16,14 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + //ARouter apt 参数 + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + } buildTypes { diff --git a/core/mogo-core-function-call-impl/build.gradle b/core/mogo-core-function-call-impl/build.gradle index dac1011adb..5846c9fe1a 100644 --- a/core/mogo-core-function-call-impl/build.gradle +++ b/core/mogo-core-function-call-impl/build.gradle @@ -1,6 +1,10 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id 'com.alibaba.arouter' +} android { compileSdkVersion rootProject.ext.android.compileSdkVersion // buildToolsVersion rootProject.ext.android.buildToolsVersion @@ -12,6 +16,14 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + //ARouter apt 参数 + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + } buildTypes { diff --git a/core/mogo-core-function-impl/build.gradle b/core/mogo-core-function-impl/build.gradle index a1c239efe0..3b83688ed1 100644 --- a/core/mogo-core-function-impl/build.gradle +++ b/core/mogo-core-function-impl/build.gradle @@ -1,6 +1,10 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id 'com.alibaba.arouter' +} android { compileSdkVersion rootProject.ext.android.compileSdkVersion // buildToolsVersion rootProject.ext.android.buildToolsVersion @@ -12,6 +16,14 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + //ARouter apt 参数 + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + } buildTypes { diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt index 82e34be586..e750403ceb 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningFloat.kt @@ -4,7 +4,7 @@ import android.content.Context import android.view.View import com.mogo.module.hmi.notification.enums.SidePattern import com.mogo.module.hmi.notification.interfaces.OnFloatAnimator -import com.mogo.service.warning.WarningStatusListener +import com.mogo.eagle.core.function.api.hmi.warning.WarningStatusListener import com.mogo.utils.WindowUtils import com.mogo.utils.logger.Logger diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt index d19b42f2ff..36acb1fd54 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/notification/WarningNotificationConfig.kt @@ -6,7 +6,7 @@ import com.mogo.module.hmi.notification.enums.ShowPattern import com.mogo.module.hmi.notification.enums.SidePattern import com.mogo.module.hmi.notification.interfaces.OnFloatAnimator import com.mogo.module.hmi.notification.interfaces.OnFloatCallbacks -import com.mogo.service.warning.WarningStatusListener +import com.mogo.eagle.core.function.api.hmi.warning.WarningStatusListener /** * @author xiaoyuzhou diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XLimitingVelocityBroadcastReceiver.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XLimitingVelocityBroadcastReceiver.kt index b992e24502..6ada67b91a 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XLimitingVelocityBroadcastReceiver.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XLimitingVelocityBroadcastReceiver.kt @@ -7,7 +7,7 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.module.hmi.WaringConst import com.mogo.service.IMogoServiceApis import com.mogo.service.MogoServicePaths -import com.mogo.service.warning.IMoGoWaringProvider +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider import com.mogo.utils.logger.Logger /** diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt index 73ae60570b..33db598080 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XTrafficLightBroadcastReceiver.kt @@ -7,7 +7,7 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.module.hmi.WaringConst import com.mogo.service.IMogoServiceApis import com.mogo.service.MogoServicePaths -import com.mogo.service.warning.IMoGoWaringProvider +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider import com.mogo.utils.logger.Logger /** diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XWarningBroadcastReceiver.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XWarningBroadcastReceiver.kt index be6a55ed5e..d61570f728 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XWarningBroadcastReceiver.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/receiver/V2XWarningBroadcastReceiver.kt @@ -8,7 +8,7 @@ import com.mogo.module.common.enums.EventTypeEnum import com.mogo.module.hmi.WaringConst import com.mogo.service.IMogoServiceApis import com.mogo.service.MogoServicePaths -import com.mogo.service.warning.IMoGoWaringProvider +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider import com.mogo.utils.logger.Logger /** diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningContract.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningContract.kt index 7d5b28f0a7..83a45cb01a 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningContract.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningContract.kt @@ -2,7 +2,7 @@ package com.mogo.module.hmi.ui import com.mogo.commons.mvp.IView import com.mogo.eagle.core.data.enums.WarningDirectionEnum -import com.mogo.service.warning.WarningStatusListener +import com.mogo.eagle.core.function.api.hmi.warning.WarningStatusListener /** diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt index c9d3db18e2..0d6bf1a1f2 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/ui/MoGoWarningFragment.kt @@ -15,7 +15,7 @@ import com.mogo.module.hmi.notification.WarningFloat import com.mogo.module.hmi.notification.anim.DefaultAnimator import com.mogo.module.hmi.notification.enums.SidePattern import com.mogo.module.hmi.ui.widget.V2XNotificationView -import com.mogo.service.warning.WarningStatusListener +import com.mogo.eagle.core.function.api.hmi.warning.WarningStatusListener import com.mogo.utils.logger.Logger import kotlinx.android.synthetic.main.fragment_warning.* diff --git a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/warning/MoGoWarningProvider.java b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/warning/MoGoWarningProvider.java index 67ad3132dc..beb5dea6a0 100644 --- a/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/warning/MoGoWarningProvider.java +++ b/modules/mogo-module-hmi/src/main/java/com/mogo/module/hmi/warning/MoGoWarningProvider.java @@ -9,12 +9,11 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.data.enums.WarningDirectionEnum; +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider; +import com.mogo.eagle.core.function.api.hmi.warning.WarningStatusListener; import com.mogo.module.hmi.WaringConst; import com.mogo.module.hmi.ui.MoGoWarningFragment; import com.mogo.service.MogoServicePaths; -import com.mogo.service.module.ModuleType; -import com.mogo.service.warning.IMoGoWaringProvider; -import com.mogo.service.warning.WarningStatusListener; import com.mogo.utils.logger.Logger; /** @@ -36,7 +35,7 @@ public class MoGoWarningProvider implements IMoGoWaringProvider { } @Override - public Fragment createFragment(Context context, Bundle data) { + public Fragment createCoverage(Context context, Bundle data) { Logger.d(TAG, "初始化蘑菇预警模块 Fragment……"); mMoGoWarningFragment = new MoGoWarningFragment(); return mMoGoWarningFragment; @@ -44,15 +43,10 @@ public class MoGoWarningProvider implements IMoGoWaringProvider { @NonNull @Override - public String getModuleName() { + public String getFunctionName() { return WaringConst.MODULE_NAME; } - @Override - public int getType() { - return ModuleType.TYPE_CARD_FRAGMENT; - } - @Override public void showWarningTrafficLight(int checkLightId) { mMoGoWarningFragment.showWarningTrafficLight(checkLightId); @@ -97,7 +91,7 @@ public class MoGoWarningProvider implements IMoGoWaringProvider { public void showWarningV2X(int v2xType, @Nullable String alertContent, @Nullable String ttsContent, @Nullable String tag, @Nullable WarningStatusListener listener) { - mMoGoWarningFragment.showWarningV2X(v2xType, alertContent, ttsContent, tag,listener); + mMoGoWarningFragment.showWarningV2X(v2xType, alertContent, ttsContent, tag, listener); } @Override diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 78d12e1385..e92791d24b 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -256,6 +256,7 @@ public class MainActivity extends MvpActivity implement // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 loadContainerModules(); MogoModulesManager.getInstance().loadModules(); + MogoModulesManager.getInstance().loadFunctionModules(); mPresenter.delayOperations(); // 启动一些基本的服务:定位等 diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java index f7fb6a295c..22bd187896 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java @@ -24,6 +24,11 @@ public interface MogoModulesHandler { */ List loadCardsModule(); + /** + * 架构升级v1.1加载功能模块 + */ + void loadFunctionModules(); + /** * 加载地图 * diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java index 2fee19e6a2..3fc58dc051 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java @@ -6,6 +6,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; @@ -38,6 +39,10 @@ public class MogoModulesManager implements MogoModulesHandler { // 空间换效率 private Map< String, IMogoModuleProvider > mModuleNameProviders = new HashMap<>(); + // 架构升级后的加载功能模块的方式 + private Map< MogoModule, IMoGoFunctionProvider> mModuleFunctionProviders = new HashMap<>(); + private Map< String, IMoGoFunctionProvider> mModuleNameFunctionProviders = new HashMap<>(); + private static volatile MogoModulesManager sInstance; private MogoModulesManager() { @@ -101,6 +106,21 @@ public class MogoModulesManager implements MogoModulesHandler { return providers; } + @Override + public void loadFunctionModules() { + final List< MogoModule > modules = MogoModulePaths.getModules(); + if ( modules != null && !modules.isEmpty() ) { + for ( MogoModule module : modules ) { + Logger.d( TAG, "module.getPath():" + module.getPath() + " name: " + module.getName() ); + IMoGoFunctionProvider provider = loadFunction( module.getPath() ); + if ( provider != null ) { + mModuleFunctionProviders.put( module, provider ); + mModuleNameFunctionProviders.put( module.getName(), provider ); + } + } + } + } + @Override public void loadMapModule( int containerId ) { Logger.d( TAG, "loadMapModule" ); @@ -154,7 +174,7 @@ public class MogoModulesManager implements MogoModulesHandler { @Override public void loadWaringModule(int containerId) { - IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance() + IMoGoFunctionProvider provider = ( IMoGoFunctionProvider ) ARouter.getInstance() .build( MogoServicePaths.PATH_V2X_WARNING ) .navigation( getContext() ); addFragment( provider, containerId ); @@ -165,6 +185,16 @@ public class MogoModulesManager implements MogoModulesHandler { try { return ( IMogoModuleProvider ) ARouter.getInstance().build( path ).navigation( getContext() ); } catch ( Exception e ) { + e.printStackTrace(); + return null; + } + } + + private IMoGoFunctionProvider loadFunction( String path ) { + try { + return ( IMoGoFunctionProvider ) ARouter.getInstance().build( path ).navigation( getContext() ); + } catch ( Exception e ) { + e.printStackTrace(); return null; } } @@ -188,6 +218,24 @@ public class MogoModulesManager implements MogoModulesHandler { .commitAllowingStateLoss(); } + private void addFragment( IMoGoFunctionProvider provider, int containerId ) { + if ( provider == null ) { + Logger.e( TAG, "add fragment fail cause provider == null, container is %s", ResourcesHelper.getResNameById( getApplicationContext(), containerId ) ); + return; + } + Fragment fragment = mActivity.getSupportFragmentManager().findFragmentByTag( provider.getFunctionName() ); + if ( fragment == null ) { + fragment = provider.createCoverage( getContext(), null ); + } + if ( fragment == null ) { + Logger.e( TAG, "add fragment fail cause fragment == null, container is %s", ResourcesHelper.getResNameById( getApplicationContext(), containerId ) ); + return; + } + mActivity.getSupportFragmentManager().beginTransaction() + .replace( containerId, fragment, provider.getFunctionName() ) + .commitAllowingStateLoss(); + } + @Override public void onDestroy() { if ( mModuleNameProviders != null ) { @@ -207,6 +255,23 @@ public class MogoModulesManager implements MogoModulesHandler { if ( mModuleProviders != null ) { mModuleProviders.clear(); } + if ( mModuleFunctionProviders != null ) { + Collection< IMoGoFunctionProvider > modules = mModuleFunctionProviders.values(); + if ( modules != null ) { + for ( IMoGoFunctionProvider module : modules ) { + try { + Logger.d( TAG, "destroy module: " + module.getFunctionName() ); + module.onDestroy(); + } catch ( Exception e ) { + Logger.e( TAG, e, "onDestroy" ); + } + } + } + mModuleNameFunctionProviders.clear(); + } + if ( mModuleFunctionProviders != null ) { + mModuleFunctionProviders.clear(); + } mActivity = null; } } diff --git a/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt b/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt index 4aacd0ed4f..4128f3878b 100644 --- a/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt +++ b/modules/mogo-module-obu-mogo/src/main/java/com/mogo/module/obu/mogo/MogoPrivateObuManager.kt @@ -11,8 +11,8 @@ import com.mogo.module.obu.mogo.utils.TrafficDataConvertUtils import com.mogo.service.IMogoServiceApis import com.mogo.service.MogoServicePaths import com.mogo.service.map.IMogoMapService -import com.mogo.service.warning.IMoGoWaringProvider -import com.mogo.service.warning.WarningStatusListener +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider +import com.mogo.eagle.core.function.api.hmi.warning.WarningStatusListener import com.mogo.utils.logger.Logger import com.mogo.utils.storage.SharedPrefsMgr import com.zhidao.support.obu.MogoObuManager diff --git a/services/mogo-service-api/build.gradle b/services/mogo-service-api/build.gradle index 5235776e05..f14ff04f2f 100644 --- a/services/mogo-service-api/build.gradle +++ b/services/mogo-service-api/build.gradle @@ -61,6 +61,7 @@ dependencies { api project(":libraries:mogo-map-api") api project(":skin:mogo-skin-support") implementation project(':core:mogo-core-data') + api project(':core:mogo-core-function-api') } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index f821cf42d1..737247d0e7 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -23,7 +23,6 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.obu.IMoGoObuProvider; import com.mogo.service.smp.IMogoSmallMapProvider; import com.mogo.service.module.IMogoActionManager; -import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoMarkerService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; @@ -42,7 +41,7 @@ import com.mogo.service.share.IMogoTanluProvider; import com.mogo.service.share.IMogoTanluUiProvider; import com.mogo.service.v2x.DisplayEffectsInterface; import com.mogo.service.v2x.IV2XProvider; -import com.mogo.service.warning.IMoGoWaringProvider; +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; import com.mogo.skin.support.IMogoSkinSupportInstaller; diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java deleted file mode 100644 index e4a7d98314..0000000000 --- a/services/mogo-service-api/src/main/java/com/mogo/service/warning/WarningStatusListener.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.mogo.service.warning; - -/** - * @author xiaoyuzhou - * @date 2021/9/13 4:41 下午 - */ -public interface WarningStatusListener { - default void onShow() { - } - - default void onDismiss() { - } -} diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index e278a39da8..6e2cd88503 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -31,7 +31,6 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.obu.IMoGoObuProvider; import com.mogo.service.smp.IMogoSmallMapProvider; import com.mogo.service.module.IMogoActionManager; -import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoMarkerService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; @@ -50,7 +49,7 @@ import com.mogo.service.share.IMogoTanluProvider; import com.mogo.service.share.IMogoTanluUiProvider; import com.mogo.service.v2x.DisplayEffectsInterface; import com.mogo.service.v2x.IV2XProvider; -import com.mogo.service.warning.IMoGoWaringProvider; +import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWaringProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; import com.mogo.skin.support.IMogoSkinSupportInstaller;