diff --git a/app/build.gradle b/app/build.gradle index 6447f0a389..fd4ce6710e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -85,8 +85,6 @@ android { dimension "basic" // 是否启动位置服务 buildConfigField 'boolean', 'LAUNCH_LOCATION_SERVICE', 'false' - // 是否使用高德sdk自定义导航 - buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true' // 是否作为 launcher 运行 buildConfigField 'boolean', 'IS_LAUNCHER', 'false' buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"' @@ -96,8 +94,6 @@ android { dimension "basic" // 是否启动位置服务 buildConfigField 'boolean', 'LAUNCH_LOCATION_SERVICE', 'true' - // 是否使用高德sdk自定义导航 - buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true' // 是否作为 launcher 运行 buildConfigField 'boolean', 'IS_LAUNCHER', 'true' buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"' @@ -113,6 +109,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // e系列,采用Launcher方案 e8xx { @@ -125,6 +123,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // 同上 em4 { @@ -137,6 +137,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // e系列-2+32,对标D系列2+32,采用独立app的形式 em3 { @@ -149,6 +151,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // e系列-1+16,对标D系列1+16,采用独立app形式 em1 { @@ -161,6 +165,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // d系列 d8xx { @@ -173,6 +179,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // d系列 1+16 版本 d82x{ @@ -185,6 +193,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' } // 比亚迪 bydauto{ @@ -197,6 +207,8 @@ android { buildConfigField 'int', 'CAR_MACHINE_TYPE', '1' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.bydautoIndependentApiValue] + // 是否使用高德sdk自定义导航 + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true' } qa { dimension "env" diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index aef3a1b430..a0cd07579b 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -522,6 +522,9 @@ public class AMapNaviViewWrapper implements IMogoMapView, } if ( checkAMapView() ) { MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); + if ( style == null ) { + style = new MyLocationStyle(); + } style.showMyLocation( visible ); if ( visible ) { // 强制刷新一遍车标 @@ -541,6 +544,9 @@ public class AMapNaviViewWrapper implements IMogoMapView, } if ( checkAMapView() ) { MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); + if ( style == null ) { + style = new MyLocationStyle(); + } style.showMyLocation( true ); style.myLocationIcon( BitmapDescriptorFactory.fromView( view ) ); mMapView.getMap().setMyLocationStyle( style ); diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java index cd43c4147c..8880284851 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java @@ -6,6 +6,7 @@ import android.content.pm.PackageManager; import android.graphics.Rect; import android.location.Location; +import com.mogo.commons.debug.DebugConfig; import com.mogo.map.impl.amap.navi.NaviClient; import com.mogo.map.impl.automap.navi.AutoNaviClient; import com.mogo.map.navi.IMogoCarLocationChangedListener2; @@ -30,7 +31,9 @@ public class MogoNavi implements IMogoNavi { private static volatile MogoNavi sInstance; private MogoNavi( Context context ) { - if ( AppUtils.isAppInstalled( context, "com.autonavi.amapauto" ) ) { + if ( DebugConfig.isUseCustomNavi() ) { + mDelegate = NaviClient.getInstance( context ); + } else if ( AppUtils.isAppInstalled( context, "com.autonavi.amapauto" ) ) { mDelegate = AutoNaviClient.getInstance( context ); } else { mDelegate = NaviClient.getInstance( context ); diff --git a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java index f085d39fdb..739e45434c 100644 --- a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java +++ b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java @@ -6,11 +6,9 @@ import android.widget.FrameLayout; import androidx.annotation.Nullable; -import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.debug.DebugConfig; +import com.mogo.module.common.map.CustomNaviInterrupter; import com.mogo.module.main.MainActivity; -import com.mogo.service.IMogoServiceApis; -import com.mogo.service.MogoServicePaths; /** * 针对独立应用形式,做单独定制 @@ -18,6 +16,7 @@ import com.mogo.service.MogoServicePaths; * @author tongchenfei */ public class MainIndependentActivity extends MainActivity { + @Override protected void onCreate( @Nullable Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); @@ -31,7 +30,7 @@ public class MainIndependentActivity extends MainActivity { FrameLayout.LayoutParams entranceParams = ( ( FrameLayout.LayoutParams ) mEntrance.getLayoutParams() ); entranceParams.leftMargin = getResources().getDimensionPixelSize( R.dimen.module_main_entrance_fragment_container_marginLeft ); mEntrance.setLayoutParams( entranceParams ); - mLeftShadowFrame.setVisibility(View.VISIBLE); + mLeftShadowFrame.setVisibility( View.VISIBLE ); mApps.setVisibility( View.GONE ); } @@ -48,4 +47,20 @@ public class MainIndependentActivity extends MainActivity { super.onPause(); mServiceApis.getAdasControllerApi().setUseAlgorithm( false ); } + + @Override + protected boolean doWhenBackPressed() { + return exitCustomNaviIfNecessary(); + } + + private boolean exitCustomNaviIfNecessary() { + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + return false; + } + if (mServiceApis.getMapServiceApi().getNavi(this).isNaviing()) { + mServiceApis.getMapServiceApi().getNavi( this ).stopNavi(); + return true; + } + return false; + } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java index 701bfa73c2..202b048045 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java @@ -38,13 +38,18 @@ class CustomNaviInterrupter implements Interrupter { /** * 判断是否用自己的导航 + * 1. 项目是否强制使用自己的导航 + * 2. 是否安装了高德车机版地图 + * 3. 默认使用自己的导航 + * * @return true-用高德公版车机版地图 false-用Launcher自己的导航 */ @Override public boolean interrupt() { - if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), "com.autonavi.amapauto" ) - || !DebugConfig.isUseCustomNavi() ) { - Logger.d( TAG, "do not use custom map function." ); + if ( DebugConfig.isUseCustomNavi() ) { + return false; + } + if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), "com.autonavi.amapauto" ) ) { return true; } return false; 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 0240f29f60..910a49f0c7 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 @@ -56,7 +56,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme protected IMogoFragmentManager mMogoFragmentManager; protected IMogoStatusManager mMogoStatusManager; -// protected View mHeader; + // protected View mHeader; protected View mApps; protected View mEntrance; protected FrameLayout mFloatingLayout; @@ -81,7 +81,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mFloatingLayout = findViewById( R.id.module_main_id_floating_view ); mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame ); mCoverUpLayout = findViewById( R.id.module_main_id_cover_up ); - mLeftPanelLayout = findViewById(R.id.module_main_id_left_panel_fragment_container); + mLeftPanelLayout = findViewById( R.id.module_main_id_left_panel_fragment_container ); // 避免事件穿透导致地图被滑动 mLeftShadowFrame.setOnClickListener( view -> { @@ -114,8 +114,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme if ( mServiceApis == null ) { mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); } - mServiceApis.getShareManager().resetContext(this); - mServiceApis.getAuthManagerApi().showAuth(this); + mServiceApis.getShareManager().resetContext( this ); + mServiceApis.getAuthManagerApi().showAuth( this ); mMogoStatusManager = mServiceApis.getStatusManagerApi(); mMogoStatusManager.setMainPageLaunchedStatus( TAG, true ); AutopilotServiceManage.getInstance().init( getContext() ); @@ -187,8 +187,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme protected void loadContainerModules() { // MogoModulesManager.getInstance().loadExtensionsModule( R.id.module_main_id_header_fragment_container ); MogoModulesManager.getInstance().loadEntrancesModule( R.id.module_main_id_entrance_fragment_container ); - MogoModulesManager.getInstance().loadEventPanelModule(R.id.module_main_id_event_panel_fragment_container); - MogoModulesManager.getInstance().loadLeftPanelModule(R.id.module_main_id_left_panel_fragment_container); + MogoModulesManager.getInstance().loadEventPanelModule( R.id.module_main_id_event_panel_fragment_container ); + MogoModulesManager.getInstance().loadLeftPanelModule( R.id.module_main_id_left_panel_fragment_container ); } @Override @@ -209,7 +209,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void loadSplash() { - MogoModulesManager.getInstance().loadSplashModule(R.id.module_main_id_splash_container); + MogoModulesManager.getInstance().loadSplashModule( R.id.module_main_id_splash_container ); } @NonNull @@ -252,7 +252,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mIsHomeKeyDown = false; } - private boolean shouldCloseADASPanel(){ + private boolean shouldCloseADASPanel() { // m4 系列因为按home键会造成页面pause后resume,造成adas panel 闪烁 // f 系列加上上滑返回桌面后会走 mIsHomeKeyDown = true,但是不会造成页面pause // 独立 app 任何情况下都需要隐藏 adas @@ -268,19 +268,26 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void onBackPressed() { - if ( mMogoFragmentManager.getStackSize() == 0 ) { + if ( mMogoFragmentManager == null + || mMogoFragmentManager.getStackSize() <= 0 ) { if ( DebugConfig.isLauncher() ) { + doWhenBackPressed(); return; } else { + if ( doWhenBackPressed() ) { + return; + } super.onBackPressed(); } - } - if ( mMogoFragmentManager != null - && mMogoFragmentManager.getStackSize() > 0 ) { + } else { mMogoFragmentManager.pop(); } } + protected boolean doWhenBackPressed() { + return false; + } + @Override protected void onNewIntent( Intent intent ) { super.onNewIntent( intent );