From 39d9878d30dd1db66844b13316a8bed1d9589d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 10 May 2021 12:05:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=94=B9=E7=89=88=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=20=E5=AE=9E=E7=8E=B0=20=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo-module-main-launcher/build.gradle | 2 ++ .../module/main/launcher/MainLauncherActivity.java | 12 ++++++++++++ .../main/res/layout/module_main_activity_main.xml | 6 ++++++ .../mogo/module/small/map/SmallVisionProvider.java | 10 ++++++++++ ...ection_view.xml => module_small_map_fragment.xml} | 0 .../com/mogo/service/map/IMogoSmallMapProvider.java | 10 ++++++++++ 6 files changed, 40 insertions(+) rename modules/mogo-module-smp/src/main/res/layout/{module_small_map_direction_view.xml => module_small_map_fragment.xml} (100%) diff --git a/main-extensions/mogo-module-main-launcher/build.gradle b/main-extensions/mogo-module-main-launcher/build.gradle index efd300157a..bda491d407 100644 --- a/main-extensions/mogo-module-main-launcher/build.gradle +++ b/main-extensions/mogo-module-main-launcher/build.gradle @@ -44,10 +44,12 @@ dependencies { api rootProject.ext.dependencies.modulemain implementation rootProject.ext.dependencies.mogooch implementation rootProject.ext.dependencies.moduleservice + implementation rootProject.ext.dependencies.moduleSmallMap } else { api project(":modules:mogo-module-main") implementation project(":OCH:mogo-och") implementation project(':modules:mogo-module-service') + implementation project(':modules:mogo-module-smp') } } diff --git a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java index c426c99a24..b8d5d84ae5 100644 --- a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java +++ b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java @@ -18,6 +18,7 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.main.MainActivity; import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.module.service.receiver.MogoReceiver; +import com.mogo.module.small.map.SmallVisionProvider; import com.mogo.och.IMogoOCH; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.statusmanager.StatusDescriptor; @@ -116,6 +117,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis protected void loadOthersModules() { super.loadOthersModules(); loadOCHModule(); + loadSmpModule(); } /** @@ -128,6 +130,16 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } } + /** + * 加载小地图模块 + */ + private void loadSmpModule() { + SmallVisionProvider smp = ARouter.getInstance().navigation(SmallVisionProvider.class); + if (smp != null) { + smp.init(this, R.id.module_main_id_smp_fragment); + } + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 148d071f3a..5456d236a3 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -141,6 +141,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + + + Date: Wed, 19 May 2021 19:53:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E5=9C=A8=E8=81=94=E6=83=B3pad=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/launcher/MogoApplication.java | 14 +- foudations/mogo-commons/build.gradle | 1 + .../policy/MyPhoneLayoutInflater.java | 0 .../com/mogo/commons/AbsMogoApplication.java | 10 + .../com/mogo/commons/mvp/MvpActivity.java | 7 +- .../service/CarCorderController.kt | 14 +- .../main/launcher/MainLauncherActivity.java | 8 +- .../com/mogo/module/main/MainActivity.java | 3 + modules/mogo-module-smp/consumer-rules.pro | 6 +- .../src/main/AndroidManifest.xml | 6 - .../main/java/com/amap/api/col/n3/le2.java | 186 ------------------ .../main/java/com/amap/api/col/n3/lg2.java | 40 ---- .../small/map/SmallMapDirectionView.java | 53 ++--- .../module/small/map/SmallMapFragment.java | 43 ++++ .../module/small/map/SmallMapProvider.java | 101 ++++++++++ .../module/small/map/SmallMapService.java | 88 --------- .../module/small/map/SmallVisionProvider.java | 185 ----------------- .../res/layout/module_small_map_fragment.xml | 14 +- .../main/res/layout/module_small_map_view.xml | 15 +- .../res/values-xhdpi-2560x1440/dimens.xml | 18 ++ .../src/main/res/values-xhdpi/dimens.xml | 4 +- .../service/map/IMogoSmallMapProvider.java | 3 +- 22 files changed, 263 insertions(+), 556 deletions(-) rename {modules/mogo-module-smp => foudations/mogo-commons}/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java (100%) delete mode 100644 modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java delete mode 100644 modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java create mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapFragment.java create mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java delete mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java delete mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java create mode 100644 modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index af999d77fc..2f10de66a7 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -1,5 +1,6 @@ package com.mogo.launcher; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Process; @@ -121,6 +122,17 @@ public class MogoApplication extends AbsMogoApplication { ARouter.getInstance().navigation(ITestCrashReportProvider.class); } Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms"); + + try { + if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { + Intent intent = new Intent(); + intent.setComponent(new ComponentName("com.zhidao.speech.voice.pad", + "com.zhidao.speech.MainActivity")); + startActivity(intent); + } + } catch (Exception e) { + e.printStackTrace(); + } } @Override @@ -213,7 +225,7 @@ public class MogoApplication extends AbsMogoApplication { // 设置是否是第三APP登录 clientConfig.setThirdLogin(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE); // 设置是否输出日志 - clientConfig.setShowDebugLog(true); + clientConfig.setShowDebugLog(false); // 设置是否是直播推流的主播 clientConfig.setAnchor(false); // 设置从蘑菇AI开放平台获取的APPKey diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle index 7f4fbc1edc..ec4465a808 100644 --- a/foudations/mogo-commons/build.gradle +++ b/foudations/mogo-commons/build.gradle @@ -43,6 +43,7 @@ dependencies { implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.accountsdk api rootProject.ext.dependencies.mogoaicloudrealtime + implementation rootProject.ext.dependencies.amapnavi3dmap if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.mogoutils diff --git a/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java b/foudations/mogo-commons/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java similarity index 100% rename from modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java rename to foudations/mogo-commons/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 0681470777..f25f6a8ed4 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -11,6 +11,8 @@ import android.widget.ImageView; import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; +import com.amap.api.navi.AMapNaviView; +import com.android.internal.policy.MyPhoneLayoutInflater; import com.mogo.commons.analytics.AnalyticsUtils; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.device.Devices; @@ -59,9 +61,17 @@ public abstract class AbsMogoApplication extends Application { return sApp; } + public static AMapNaviView aMapNaviView; + + public static AMapNaviView getMapNaviView() { + return aMapNaviView; + } + @Override public void onCreate() { super.onCreate(); + aMapNaviView = new AMapNaviView(this); + aMapNaviView.onCreate(null); // 在设置皮肤布局填充器之前进行克隆一个出来 mLayoutInflaterNoSkin = LayoutInflater.from(new ContextThemeWrapper(this, R.style.Theme_AppCompat)).cloneInContext(new ContextThemeWrapper(this, R.style.Theme_AppCompat)); sApp = this; diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index 7e7bae038c..2b8f50d889 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -30,7 +30,6 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > @Override protected void onCreate( @Nullable Bundle savedInstanceState ) { - hideBottomUIMenu(); super.onCreate( savedInstanceState ); beforeSetContentView(savedInstanceState); if ( DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_BYD ) { @@ -43,6 +42,12 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > getLifecycle().addObserver( mPresenter ); } + @Override + protected void onResume() { + super.onResume(); + hideBottomUIMenu(); + } + //隐藏导航栏 protected void hideBottomUIMenu() { //隐藏虚拟按键 diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt index ac1a0a8a49..7487c07477 100644 --- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt +++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt @@ -68,11 +68,15 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback { } fun initCarCorderController() { - zdCarCoderController = - ZdCarCoderController.getInstance(AbsMogoApplication.getApp().applicationContext) - zdCarCoderController.addCallback(this) - zdCarCoderController.addVideoCallback(this) - zdCarCoderController.init() + try { + zdCarCoderController = + ZdCarCoderController.getInstance(AbsMogoApplication.getApp().applicationContext) + zdCarCoderController.addCallback(this) + zdCarCoderController.addVideoCallback(this) + zdCarCoderController.init() + } catch (e: Exception) { + e.printStackTrace() + } } diff --git a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java index b8d5d84ae5..c185d432fc 100644 --- a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java +++ b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java @@ -18,9 +18,9 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.main.MainActivity; import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.module.service.receiver.MogoReceiver; -import com.mogo.module.small.map.SmallVisionProvider; import com.mogo.och.IMogoOCH; import com.mogo.service.intent.IMogoIntentListener; +import com.mogo.service.map.IMogoSmallMapProvider; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.service.v2x.IV2XListener; import com.mogo.utils.logger.Logger; @@ -116,6 +116,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override protected void loadOthersModules() { super.loadOthersModules(); + Logger.d(TAG, "loadOthersModules"); loadOCHModule(); loadSmpModule(); } @@ -134,7 +135,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis * 加载小地图模块 */ private void loadSmpModule() { - SmallVisionProvider smp = ARouter.getInstance().navigation(SmallVisionProvider.class); + IMogoSmallMapProvider smp = ARouter.getInstance().navigation(IMogoSmallMapProvider.class); if (smp != null) { smp.init(this, R.id.module_main_id_smp_fragment); } @@ -170,7 +171,6 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } - @Override public void warningChangedWithDirection(int type) { Log.d(TAG, "显示红色预警蒙层"); @@ -239,7 +239,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { - super.onStatusChanged(descriptor,isTrue); + super.onStatusChanged(descriptor, isTrue); if (isTrue) { mLeftShadowFrame.setVisibility(View.GONE); mApps.setVisibility(View.GONE); 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 3e28dc2f18..843a95a9e6 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 @@ -229,6 +229,9 @@ public class MainActivity extends MvpActivity implement MapCenterPointStrategy.setMapCenterPointByScene(mServiceApis.getMapServiceApi().getMapUIController(), Scene.AIMLESS); } + /** + * 加载其它模块 + */ protected void loadOthersModules() { // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 loadContainerModules(); diff --git a/modules/mogo-module-smp/consumer-rules.pro b/modules/mogo-module-smp/consumer-rules.pro index c3051b66d0..b294e7f5c4 100644 --- a/modules/mogo-module-smp/consumer-rules.pro +++ b/modules/mogo-module-smp/consumer-rules.pro @@ -1,4 +1,4 @@ --keep class com.mogo.module.small.map.SmallMapDirectionView{*;} --keep class com.amap.api.col.n3.*{*;} +-keep class com.mogo.module.small.map.*{*;} -keep class com.android.internal.policy.MyPhoneLayoutInflater{*;} --keep class com.mogo.module.small.map.SmallVisionProvider{*;} +-keep class com.amap.api.col.n3.*{*;} + diff --git a/modules/mogo-module-smp/src/main/AndroidManifest.xml b/modules/mogo-module-smp/src/main/AndroidManifest.xml index 33c6adff88..3f004d131a 100644 --- a/modules/mogo-module-smp/src/main/AndroidManifest.xml +++ b/modules/mogo-module-smp/src/main/AndroidManifest.xml @@ -2,10 +2,4 @@ - \ No newline at end of file diff --git a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java deleted file mode 100644 index cd406be8a7..0000000000 --- a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java +++ /dev/null @@ -1,186 +0,0 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by Fernflower decompiler) -// - -package com.amap.api.col.n3; - -import android.content.Context; -import android.content.res.Resources; -import android.content.res.Resources.Theme; -import android.util.AttributeSet; -import android.util.Log; -import android.view.ContextThemeWrapper; -import android.view.LayoutInflater; -import android.view.LayoutInflater.Factory; -import android.view.View; -import android.view.ViewStub; - -import com.android.internal.policy.MyPhoneLayoutInflater; - -import java.lang.reflect.Constructor; -import java.util.HashMap; -import java.util.HashSet; - -public final class le2 extends ContextThemeWrapper { - private Resources a = lg.a(); - private Theme b; - private LayoutInflater c; - private ClassLoader d; - private int e; - private static final String[] f = new String[]{"android.widget", "android.webkit", "android.app"}; - private le2.a g = new le2.a(); - private Factory h = new Factory() { - public final View onCreateView(String var1, Context var2, AttributeSet var3) { - return le2.this.a(var1, var2, var3); - } - }; - - public le2(Context var1, int var2, ClassLoader var3) { - super(var1, var2); - this.d = var3; - this.b = lg.b(); - this.e = var2; - super.onApplyThemeResource(this.b, this.e, true); - (new StringBuilder("classloader:")).append(this.d); - } - - public final Resources getResources() { - return this.a != null ? this.a : super.getResources(); - } - - public final void a(int var1) { - if (var1 != this.e) { - this.e = var1; - super.onApplyThemeResource(this.b, this.e, true); - } - - } - - public final Theme getTheme() { - return this.b != null ? this.b : super.getTheme(); - } - - public final Object getSystemService(String var1) { - if ("layout_inflater".equals(var1)) { - if (this.c == null) { - // 这里构建一个自己对的布局填充器 - // 与已经被修改的context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) - // 隔离从而保证高德地图SDK能正常初始化 - LayoutInflater var2 = new MyPhoneLayoutInflater(getBaseContext()); - this.c = var2.cloneInContext(this); - this.c.setFactory(this.h); - this.c = this.c.cloneInContext(this); - } - - return this.c; - } else { - return super.getSystemService(var1); - } - } - - private final View a(String var1, Context var2, AttributeSet var3) { - if (this.g.a.contains(var1)) { - return null; - } else { - Constructor var4; - if ((var4 = (Constructor) this.g.b.get(var1)) == null) { - Class var5 = null; - boolean var6 = false; - String var7 = "api.navi"; - - label71: - { - label70: - { - Throwable var10000; - label79: - { - boolean var10001; - try { - if (var1.contains(var7)) { - var5 = this.d.loadClass(var1); - } else { - String[] var17; - int var8 = (var17 = f).length; - int var9 = 0; - - while (var9 < var8) { - String var10 = var17[var9]; - - try { - var5 = this.d.loadClass(var10 + "." + var1); - break; - } catch (Throwable var13) { - ++var9; - } - } - } - - if (var5 == null) { - break label71; - } - } catch (Throwable var15) { - var10000 = var15; - var10001 = false; - break label79; - } - - if (var5 == ViewStub.class) { - break label71; - } - - try { - if (var5.getClassLoader() != this.d) { - break label71; - } - break label70; - } catch (Throwable var14) { - var10000 = var14; - var10001 = false; - } - } - - Throwable var18 = var10000; - (new StringBuilder("load view err:")).append(Log.getStackTraceString(var18)); - break label71; - } - - var6 = true; - } - - if (!var6) { - this.g.a.add(var1); - return null; - } - - try { - var4 = var5.getConstructor(Context.class, AttributeSet.class); - this.g.b.put(var1, var4); - } catch (Throwable var12) { - (new StringBuilder("create view err:")).append(Log.getStackTraceString(var12)); - } - } - - try { - View var16 = null; - if (var4 != null) { - var16 = (View) var4.newInstance(var2, var3); - } - - return var16; - } catch (Throwable var11) { - (new StringBuilder("create view err:")).append(Log.getStackTraceString(var11)); - return null; - } - } - } - - public static class a { - public HashSet a = new HashSet(); - public HashMap> b = new HashMap(); - - public a() { - } - } -} diff --git a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java deleted file mode 100644 index 347f98ddc6..0000000000 --- a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.amap.api.col.n3; - -import android.content.Context; -import android.content.res.XmlResourceParser; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -/** - * 这里是为了解决 使用换肤框架后,高德地图初始化有问题加入的 - * 问题原因是: - * skin 框架会替换 LayoutInflater 中的 setFactory2 从而导致高德 le 中的 setFactory 失效。 - * 解决方案为: - * 直接通过内存地址替换整个 ArtMethod,来将需要修改的高德SDK中的方法指向我们修改过后的方法。 - */ -public class lg2 extends lg { - static le2 b; - - public static View a(Context var0, int var1, ViewGroup var2) { - XmlResourceParser var9 = a().getXml(var1); - if (!a) { - return LayoutInflater.from(var0).inflate(var9, var2); - } else { - try { - if (b == null) { - b = new le2(var0, c == -1 ? 0 : c, lg.class.getClassLoader()); - } - b.a(c == -1 ? 0 : c); - View var3 = LayoutInflater.from(b).inflate(var9, var2); - return var3; - } catch (Throwable var7) { - var7.printStackTrace(); - np.c(var7, "ResourcesUtil", "selfInflate(Activity activity, int resource, ViewGroup root)"); - } finally { - var9.close(); - } - return null; - } - } -} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java index 00010d9dd0..e85d84ffd6 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -4,8 +4,10 @@ import android.content.Context; import android.graphics.BitmapFactory; import android.util.AttributeSet; import android.util.Log; +import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.ViewGroup; +import android.widget.FrameLayout; import android.widget.RelativeLayout; import androidx.annotation.Nullable; @@ -18,6 +20,7 @@ import com.amap.api.navi.AMapNaviView; import com.amap.api.navi.AMapNaviViewOptions; import com.mogo.commons.AbsMogoApplication; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.view.RoundLayout; import com.mogo.utils.FileUtils; import java.io.IOException; @@ -31,8 +34,10 @@ import java.io.IOException; public class SmallMapDirectionView extends RelativeLayout { private String styleFilePath = "/mnt/sdcard/amap/small_map_style.data"; + private RoundLayout rlSmallMapBorder; private AMapNaviView mAMapNaviView; private int zoomLevel = 15; + private boolean mapIsLoaded = false; public SmallMapDirectionView(Context context) { this(context, null); @@ -52,11 +57,11 @@ public class SmallMapDirectionView extends RelativeLayout { } private void initView(Context context) { + LayoutInflater.from(context).inflate(R.layout.module_small_map_view, this); - AbsMogoApplication.getLayoutInflaterNoSkin().inflate(R.layout.module_small_map_view, this); - - mAMapNaviView = findViewById(R.id.aMapNaviView); - mAMapNaviView.onCreate(null); + mAMapNaviView = AbsMogoApplication.getMapNaviView(); + rlSmallMapBorder = findViewById(R.id.rlSmallMapBorder); + rlSmallMapBorder.addView(mAMapNaviView); // 车头朝上 mAMapNaviView.setNaviMode(AMapNaviView.CAR_UP_MODE); @@ -133,7 +138,7 @@ public class SmallMapDirectionView extends RelativeLayout { // 2D模式 options.setTilt(0); // 黑夜模式 - // options.setNaviNight(true); + //options.setNaviNight(true); // 自定义地图样式 options.setCustomMapStylePath(styleFilePath); mAMapNaviView.setViewOptions(options); @@ -143,23 +148,6 @@ public class SmallMapDirectionView extends RelativeLayout { CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); aMap.moveCamera(cameraUpdate); - aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() { - - @Override - public void onMapLoaded() { - //Log.w("onMapLoaded", "===onMapLoaded===="); - // 高德地图有bug,所以需要多次调用设置皮肤才能成功 - if (options != null) { - options.setCustomMapStylePath(styleFilePath); - mAMapNaviView.setViewOptions(options); - } - - //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); - aMap.moveCamera(cameraUpdate); - } - }); - try { // 判断是否有样式文件存在 FileUtils.copy( @@ -205,6 +193,27 @@ public class SmallMapDirectionView extends RelativeLayout { e.printStackTrace(); } + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(500L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 高德地图有bug,所以需要多次调用设置皮肤才能成功 + if (options != null) { + options.setCustomMapStylePath(styleFilePath); + mAMapNaviView.setViewOptions(options); + } + + //设置希望展示的地图缩放级别 + CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); + aMap.moveCamera(cameraUpdate); + } + }).start(); + + setOnClickListener(view -> { MogoApisHandler.getInstance().getApis() .getMapServiceApi() diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapFragment.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapFragment.java new file mode 100644 index 0000000000..1aecd0d01f --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapFragment.java @@ -0,0 +1,43 @@ +package com.mogo.module.small.map; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.mogo.commons.AbsMogoApplication; + +/** + * @author donghongyu + * @date 2021/5/19 10:50 上午 + */ +public class SmallMapFragment extends Fragment { + private Context mContext; + protected View mRootView; + + @Override + public void onAttach(Context context) { + super.onAttach(context); + mContext = context; + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + if (mRootView == null) { + mRootView = AbsMogoApplication.getLayoutInflaterNoSkin() + .inflate(R.layout.module_small_map_fragment, container, false); + } else { + ViewGroup viewGroup = (ViewGroup) mRootView.getParent(); + if (viewGroup != null) { + viewGroup.removeView(mRootView); + } + } + return mRootView; + } +} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java new file mode 100644 index 0000000000..0dac09d276 --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java @@ -0,0 +1,101 @@ +package com.mogo.module.small.map; + +import android.content.Context; +import android.util.Log; + +import androidx.fragment.app.FragmentActivity; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.map.IMogoSmallMapProvider; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.StatusDescriptor; +import com.mogo.utils.logger.Logger; + +/** + * @author donghongyu + * @date 12/10/20 1:34 PM + */ +@Route(path = MogoServicePaths.PATH_SMALL_MAP) +public class SmallMapProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener { + private final String TAG = "SmallVisionProvider"; + + private Context mContext; + private int mContainerId; + private FragmentActivity mActivity; + + private SmallMapFragment mSmallMapFragment; + + @Override + public void init(FragmentActivity activity, int containerId) { + Log.d(TAG, "小地图模块初始化……init(FragmentActivity activity, int containerId)"); + mActivity = activity; + mContainerId = containerId; + + Logger.d(TAG, "addSmallMapView"); + + } + + @Override + public void init(Context context) { + Log.d(TAG, "小地图模块初始化……init(Context context)"); + mContext = context; + + MogoApisHandler.getInstance() + .getApis() + .getStatusManagerApi() + .registerStatusChangedListener( + MogoServicePaths.PATH_SMALL_MAP, + StatusDescriptor.VR_MODE, + this); + + MogoApisHandler.getInstance() + .getApis() + .getStatusManagerApi() + .registerStatusChangedListener( + MogoServicePaths.PATH_SMALL_MAP, + StatusDescriptor.MAIN_PAGE_RESUME, + this); + } + + @Override + public void showPanel() { + Log.d(TAG, "小地图模块触发展示……"); + if (mSmallMapFragment == null) { + Logger.d(TAG, "准备add fragment======"); + mSmallMapFragment = new SmallMapFragment(); + mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, mSmallMapFragment).commit(); + return; + } + Logger.d(TAG, "准备show fragment"); + mActivity.getSupportFragmentManager().beginTransaction().show(mSmallMapFragment).commit(); + } + + @Override + public void hidePanel() { + Log.d(TAG, "小地图模块触发隐藏……"); + if (mSmallMapFragment != null) { + Logger.d(TAG, "准备hide fragment"); + mActivity.getSupportFragmentManager().beginTransaction().hide(mSmallMapFragment).commit(); + } + } + + @Override + public void changeAngle(double angle) { + + } + + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + Log.d(TAG, "onStatusChanged……descriptor=" + descriptor + ",isTrue=" + isTrue); + + if (descriptor == StatusDescriptor.VR_MODE) { + if (isTrue) { + showPanel(); + } else { + hidePanel(); + } + } + } +} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java deleted file mode 100644 index 122c6d8c5f..0000000000 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.mogo.module.small.map; - -import android.app.Service; -import android.content.Intent; -import android.os.IBinder; -import android.view.Gravity; -import android.view.WindowManager; - -import androidx.annotation.Nullable; - -import com.mogo.module.common.wm.WindowManagerView; -import com.mogo.utils.logger.Logger; - -/** - * @author donghongyu - * @date 12/10/20 1:35 PM - */ -public class SmallMapService extends Service { - private static final String TAG = "MachineVisionMapService"; - - private WindowManagerView mWindowManagerView; - private SmallMapDirectionView mSmallMapDirectionView; - - @Override - public void onCreate() { - super.onCreate(); - Logger.d(TAG, "onCreate"); - addSmallMapView(); - } - - @Nullable - @Override - public IBinder onBind(Intent intent) { - Logger.d(TAG, "onBind"); - return null; - } - - @Override - public void onRebind(Intent intent) { - super.onRebind(intent); - addSmallMapView(); - Logger.d(TAG, "onRebind"); - } - - @Override - public boolean onUnbind(Intent intent) { - Logger.d(TAG, "onUnbind"); - if (mWindowManagerView != null && mWindowManagerView.isShowing()) { - mWindowManagerView.dismiss(); - } - mWindowManagerView = null; - return true; - } - - @Override - public void onDestroy() { - super.onDestroy(); - Logger.d(TAG, "onDestroy"); - if (mWindowManagerView != null) { - mWindowManagerView.dismiss(); - } - } - - /** - * 添加小地图View - */ - private void addSmallMapView() { - Logger.d(TAG, "addSmallMapView"); - - // 初始化小地图控件 - mSmallMapDirectionView = new SmallMapDirectionView(getApplicationContext()); - - mWindowManagerView = new WindowManagerView.Builder(getApplicationContext()) - .contentView(mSmallMapDirectionView) - .size( - WindowManager.LayoutParams.WRAP_CONTENT, - WindowManager.LayoutParams.WRAP_CONTENT - ) - .position( - getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_x), - getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_y) - ) - .gravity(Gravity.TOP | Gravity.LEFT) - .showInWindowManager(); - mWindowManagerView.show(); - } - -} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java deleted file mode 100644 index 50d3ab9dc4..0000000000 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.mogo.module.small.map; - -import android.content.Context; -import android.os.Bundle; -import android.util.Log; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; - -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; - -import com.alibaba.android.arouter.facade.annotation.Route; -import com.amap.api.col.n3.lg; -import com.amap.api.col.n3.lg2; -import com.mogo.hook.HookManager; -import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.wm.WindowManagerView; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.map.IMogoSmallMapProvider; -import com.mogo.service.module.ModuleType; -import com.mogo.service.statusmanager.IMogoStatusChangedListener; -import com.mogo.service.statusmanager.StatusDescriptor; -import com.mogo.utils.logger.Logger; - -import java.lang.reflect.Method; - -/** - * @author donghongyu - * @date 12/10/20 1:34 PM - */ -@Route(path = MogoServicePaths.PATH_SMALL_MAP) -public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener { - private final String TAG = "SmallVisionProvider"; - - private Context mContext; - private int mContainerId; - private FragmentActivity mActivity; - - private WindowManagerView mWindowManagerView; - private SmallMapDirectionView mSmallMapDirectionView; - - @Override - public Fragment createFragment(Context context, Bundle data) { - return null; - } - - @Override - public View createView(Context context) { - return null; - } - - @NonNull - @Override - public String getModuleName() { - return TAG; - } - - @Override - public int getType() { - return ModuleType.TYPE_SERVICE; - } - - @Override - public void init(FragmentActivity activity, int containerId) { - mContainerId = containerId; - mActivity = activity; - } - - @Override - public void init(Context context) { - Log.d(TAG, "小地图模块初始化……"); - mContext = context; - - MogoApisHandler.getInstance() - .getApis() - .getStatusManagerApi() - .registerStatusChangedListener( - MogoServicePaths.PATH_SMALL_MAP, - StatusDescriptor.VR_MODE, - this); - - MogoApisHandler.getInstance() - .getApis() - .getStatusManagerApi() - .registerStatusChangedListener( - MogoServicePaths.PATH_SMALL_MAP, - StatusDescriptor.MAIN_PAGE_RESUME, - this); - } - - @Override - public void onDestroy() { - Log.d(TAG, "小地图模块销毁……"); - hidePanel(); - // 释放组件内存 - mSmallMapDirectionView = null; - mWindowManagerView = null; - } - - - @Override - public void showPanel() { - Log.d(TAG, "小地图模块触发展示……"); - addSmallMapView(); - } - - @Override - public void hidePanel() { - Log.d(TAG, "小地图模块触发隐藏……"); - if (mWindowManagerView != null && mWindowManagerView.isShowing()) { - mWindowManagerView.dismiss(); - } - } - - @Override - public void changeAngle(double angle) { - - } - - @Override - public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { - Log.d(TAG, "onStatusChanged……descriptor=" + descriptor + ",isTrue=" + isTrue); - - if (descriptor == StatusDescriptor.VR_MODE) { - if (isTrue) { - showPanel(); - } else { - hidePanel(); - } - } - if (descriptor == StatusDescriptor.MAIN_PAGE_RESUME) { - // 只有 VR 模式下才进行展示 - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - if (isTrue) { - showPanel(); - } else { - hidePanel(); - } - } - } - } - - - /** - * 添加小地图View - */ - private void addSmallMapView() { - Logger.d(TAG, "addSmallMapView"); - - try { - // 替换高德地图的方法,解决因为加入换肤框架导致地图初始化失败 - Method srcMethod = lg.class.getDeclaredMethod("a", Context.class, int.class, ViewGroup.class); - Method destMethod = lg2.class.getDeclaredMethod("a", Context.class, int.class, ViewGroup.class); - HookManager.get().hookMethod(srcMethod, destMethod); - Logger.d(TAG, "hook 高德地图成功"); - } catch (Exception e) { - e.printStackTrace(); - } - - // 初始化小地图控件 - if (mSmallMapDirectionView == null) { - mSmallMapDirectionView = new SmallMapDirectionView(mContext); - } - - if (mWindowManagerView == null) { - mWindowManagerView = new WindowManagerView.Builder(mContext) - .contentView(mSmallMapDirectionView) - .size( - WindowManager.LayoutParams.WRAP_CONTENT, - WindowManager.LayoutParams.WRAP_CONTENT - ) - .position( - mContext.getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_x), - mContext.getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_y) - ) - .gravity(Gravity.TOP | Gravity.LEFT) - .showInWindowManager(); - } - mWindowManagerView.show(); - } - -} diff --git a/modules/mogo-module-smp/src/main/res/layout/module_small_map_fragment.xml b/modules/mogo-module-smp/src/main/res/layout/module_small_map_fragment.xml index dfd4d52a64..e782c5d0af 100644 --- a/modules/mogo-module-smp/src/main/res/layout/module_small_map_fragment.xml +++ b/modules/mogo-module-smp/src/main/res/layout/module_small_map_fragment.xml @@ -1,5 +1,13 @@ - + android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml b/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml index 587bffa950..bc57026070 100644 --- a/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml +++ b/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml @@ -6,7 +6,6 @@ android:layout_height="wrap_content" tools:parentTag="RelativeLayout"> - - - + + \ No newline at end of file diff --git a/modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml new file mode 100644 index 0000000000..bce5be42b0 --- /dev/null +++ b/modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -0,0 +1,18 @@ + + + 40px + + 400px + 400px + + 370px + 370px + + 1620px + 780px + + 0px + 0px + 1920px + 1080px + \ No newline at end of file diff --git a/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml index fd5d8ff737..62836ac9d0 100644 --- a/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml @@ -2,14 +2,12 @@ 30px - 400px - 400px - 288px 288px 260px 260px + 1620px 780px diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java index 36a4110c30..61aa1e5b35 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java @@ -3,13 +3,14 @@ package com.mogo.service.map; import androidx.annotation.IdRes; import androidx.fragment.app.FragmentActivity; +import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.service.module.IMogoModuleProvider; /** * @author donghongyu * @date 12/10/20 1:36 PM */ -public interface IMogoSmallMapProvider extends IMogoModuleProvider { +public interface IMogoSmallMapProvider extends IProvider { /** * 初始化网约车容器