diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/20200610172423.png b/20200610172423.png new file mode 100644 index 0000000000..8ab96d5919 Binary files /dev/null and b/20200610172423.png differ diff --git a/app/build.gradle b/app/build.gradle index bea2e83e38..bda52bb550 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -86,9 +86,9 @@ android { // 是否启动位置服务 buildConfigField 'boolean', 'LAUNCH_LOCATION_SERVICE', 'true' // 是否使用自定义导航 - buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' + buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true' // 是否作为 launcher 运行 - buildConfigField 'boolean', 'IS_LAUNCHER', 'true' + buildConfigField 'boolean', 'IS_LAUNCHER', 'false' } // f系列-分体机全系列,未细分 f8xx{ @@ -196,6 +196,7 @@ dependencies { debugImplementation rootProject.ext.dependencies.gpssimulatordebug releaseImplementation rootProject.ext.dependencies.gpssimulatornoop implementation rootProject.ext.dependencies.modulemedia + implementation rootProject.ext.dependencies.moduleservice } else { launcherImplementation project(':main-extensions:mogo-module-main-launcher') // launcherImplementation project(':modules:mogo-module-main') @@ -208,6 +209,7 @@ dependencies { debugImplementation project(':modules:mogo-module-gps-simulator-debug') releaseImplementation project(':modules:mogo-module-gps-simulator-noop') implementation project(':modules:mogo-module-media') + implementation project(':modules:mogo-module-service') } } @@ -235,6 +237,7 @@ android.applicationVariants.all { variant -> def getMonthAndDay() { + SimpleDateFormat sdf = new SimpleDateFormat("MMddHH") return sdf.format(new Date()) } diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 7a864b552b..b88728dc57 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -15,7 +15,7 @@ import com.mogo.module.carchatting.card.CallChatConstant; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; import com.mogo.module.media.MediaConstants; -import com.mogo.module.push.PushUIConstants; +import com.mogo.module.service.ServiceConst; import com.mogo.module.tanlu.constant.TanluConstants; import com.mogo.module.v2x.V2XConst; import com.mogo.service.MogoServicePaths; @@ -35,37 +35,39 @@ public class MogoApplication extends AbsMogoApplication { @Override public void onCreate() { - DebugConfig.setNetMode(BuildConfig.NET_ENV); - DebugConfig.setDebug(BuildConfig.DEBUG); - DebugConfig.setAIType(BuildConfig.AIType); + DebugConfig.setNetMode( BuildConfig.NET_ENV ); + DebugConfig.setDebug( BuildConfig.DEBUG ); + DebugConfig.setAIType( BuildConfig.AIType ); DebugConfig.setLaunchLocationService( BuildConfig.LAUNCH_LOCATION_SERVICE ); DebugConfig.setUseCustomNavi( BuildConfig.USE_CUSTOM_NAVI ); DebugConfig.setLauncher( BuildConfig.IS_LAUNCHER ); super.onCreate(); // Crash 日志收集 final long start = System.currentTimeMillis(); - CrashSystem crashSystem = CrashSystem.getInstance(this); + CrashSystem crashSystem = CrashSystem.getInstance( this ); crashSystem.init(); //设置debug模式,日志不上传 - crashSystem.setDebug(BuildConfig.DEBUG); - Logger.init(BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF); + crashSystem.setDebug( BuildConfig.DEBUG ); + Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF ); // MogoModulePaths.addModule(new MogoModule(PATH_GUIDE_FRAGMENT, PATH_GUIDE_MODULE_NAME)); - MogoModulePaths.addModule(new MogoModule( AuthorizeConstant.PATH_AGREEMENT_FRAGMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME)); + MogoModulePaths.addModule( new MogoModule( AuthorizeConstant.PATH_AGREEMENT_FRAGMENT, AuthorizeConstant.PATH_AGREEMENT_MODULE_NAME ) ); //运营位卡片,需要默认显示,放在第一个加载 - MogoModulePaths.addModule(new MogoModule(AdCardConstants.TAG, AdCardConstants.MODULE_NAME)); - if(DebugConfig.isLauncher()) { - MogoModulePaths.addModule(new MogoModule(MediaConstants.TAG, MediaConstants.MODULE_TYPE)); + MogoModulePaths.addModule( new MogoModule( AdCardConstants.TAG, AdCardConstants.MODULE_NAME ) ); + if ( DebugConfig.isLauncher() ) { + MogoModulePaths.addModule( new MogoModule( MediaConstants.TAG, MediaConstants.MODULE_TYPE ) ); } - MogoModulePaths.addModule(new MogoModule(CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME)); - MogoModulePaths.addModule(new MogoModule(TanluConstants.TAG, TanluConstants.MODEL_NAME)); - MogoModulePaths.addModule(new MogoModule( V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI)); - MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_SHARE, "ShareControl")); + MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) ); + MogoModulePaths.addModule( new MogoModule( TanluConstants.TAG, TanluConstants.MODEL_NAME ) ); + MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SHARE, "ShareControl" ) ); + + MogoModulePaths.addBaseModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) ); + MogoModulePaths.addBaseModule( new MogoModule( V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI ) ); // 暂时去掉推送 // MogoModulePaths.addModule(new MogoModule(PushUIConstants.TAG, PushUIConstants.TAG)); - Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms"); + Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } @Override @@ -73,15 +75,15 @@ public class MogoApplication extends AbsMogoApplication { super.init(); IMogoSocketManager mMogoSocketManager = ARouter.getInstance().navigation( IMogoSocketManager.class ); if ( mMogoSocketManager != null ) { - mMogoSocketManager.init(getApplicationContext(), "com.mogo.launcher"); + mMogoSocketManager.init( getApplicationContext(), "com.mogo.launcher" ); } else { Logger.e( TAG, "init socket server error." ); } } @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - MultiDex.install(base); + protected void attachBaseContext( Context base ) { + super.attachBaseContext( base ); + MultiDex.install( base ); } } diff --git a/config.gradle b/config.gradle index db122db547..359e636a21 100644 --- a/config.gradle +++ b/config.gradle @@ -1,13 +1,15 @@ ext { + time = "" + android = [ // applicationId : "com.mogo.launcher", // zhidadoApplicationId: "com.zhidao.launcher", - launcherApplicationId: "com.mogo.launcher", + launcherApplicationId : "com.mogo.launcher", independentApplicationId: "com.mogo.launcher.app", - compileSdkVersion : 28, - buildToolsVersion : "29.0.2", - minSdkVersion : 19, - targetSdkVersion : 22, + compileSdkVersion : 28, + buildToolsVersion : "29.0.2", + minSdkVersion : 19, + targetSdkVersion : 22, ] dependencies = [ @@ -147,9 +149,10 @@ ext { gpssimulatordebug : "com.mogo.module:module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}", gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", - adasapi : "com.zhidao.autopilot.support:adas:1.0.1-SNAPSHOT", + adasapi : "com.zhidao.autopilot.support:adas:1.0.1", // 个人中心的SDK personalsdk : "com.zhidaoauto.person.info:data:1.0.1", + tanluupload : "com.mogo.module:module-tanlu-upload:${TANLULIB_VERSION}", ] } \ No newline at end of file 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 b0711f000d..b1e7afd023 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 @@ -105,7 +105,7 @@ public class AbsMogoApplication extends Application { Analytics.getInstance().setAppKey( "6bbe7e0e1ecd8e2f8dc336e1678a2791" ); // 0 - debug 近实时上报,积累一条埋点上报,或者积累3秒上报一次。 // 2 - 本地缓存,聚合上报,积累30条埋点上报,或者积累60秒上报一次。 - AnalyticsConfig.getInstance( sApp ).setMode( DebugConfig.isDebug() ? 2 : 2 ); + AnalyticsConfig.getInstance( sApp ).setMode( DebugConfig.isDebug() ? 0 : 2 ); AnalyticsConfig.getInstance( sApp ).shouldLog( DebugConfig.isDebug() ); Devices.checkBindState(); @@ -119,7 +119,7 @@ public class AbsMogoApplication extends Application { mode = DebugConfig.NET_MODE_QA; } AccountClientManager.init( sApp, mode, NetEnvironManager.OS_2C, "os2.0-launcher" ); - AccountClientManager.getTicket( new TicketInfoCallback() { + getTicket( new TicketInfoCallback() { @Override public void onSuccess( String ticket ) { SpStorage.setTicket( ticket ); @@ -133,6 +133,14 @@ public class AbsMogoApplication extends Application { } ); } + private static void getTicket(TicketInfoCallback callback){ + if ( DebugConfig.isLauncher() ) { + AccountClientManager.getTicket(callback); + } else { + AccountClientManager.getAppTicket( callback ); + } + } + private static void initNetConfig() { try { diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index 655a831c92..e752812148 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -361,6 +361,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack, OnTtsListener { intent.setAction( "pvetec.intent.action.txz.switch" ); intent.putExtra( "window_start_cancel", status ); intent.putExtra( "extra_switch_type", "window_start_cancel" ); + Logger.d( TAG, "status = %d", status ); context.sendBroadcast( intent ); } diff --git a/gradle.properties b/gradle.properties index d0ca0fd0cf..e47b270df9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -60,9 +60,9 @@ MOGO_MODULE_MAIN_INDEPENDENT_VERSION = 1.0.0.1 # 探路 MOGO_MODULE_TANLU_VERSION=1.1.0.1-SNAPSHOT # 车聊聊 -CARCHATTING_VERSION=1.0.4-SNAPSHOT +CARCHATTING_VERSION=1.0.6-SNAPSHOT # 车聊聊接口 -CARCHATTINGPROVIDER_VERSION=1.0.4-SNAPSHOT +CARCHATTINGPROVIDER_VERSION=1.0.6-SNAPSHOT # 视频引导 MOGO_MODULE_GUIDESHOW_VERSION=1.0.2-SNAPSHOT # 视频引导接口 @@ -70,13 +70,15 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT # 在线车辆F MOGO_MODULE_ONLINECAR_VERSION=1.0.3.2 # v2x -MOGO_MODULE_V2X_VERSION=1.0.32 +MOGO_MODULE_V2X_VERSION=1.1.2 # 媒体卡片 MOGO_MODULE_MEDIA_VERSION=1.0.4.11 # 推送 MOGO_MODULE_PUSH_VERSION=1.0.1 # 广告资源位 MOGO_MODULE_AD_CARD_VERSION=1.0.1 +# 探路上报和分享模块 +TANLULIB_VERSION=1.0.2-SNAPSHOT ## 产品库必备配置 applicationId=com.mogo.launcer diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index e9a150116b..82b151c0a2 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -342,6 +342,9 @@ public class NaviClient implements IMogoNavi { public void setUseExtraGPSData( boolean use ) { Logger.d( TAG, "设置外部gps源状态 %s", use ); mAMapNavi.setIsUseExtraGPSData( use ); + if ( AMapWrapper.getAMap() == null ) { + return; + } if ( use ) { AMapWrapper.getAMap().setLocationSource( new LocationSource() { @Override diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/RoadSearchClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/RoadSearchClient.java index 71ff552352..55dc81ad65 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/RoadSearchClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/RoadSearchClient.java @@ -59,9 +59,10 @@ public class RoadSearchClient implements IMogoRoadSearch, RouteSearch.OnRouteSea } } - RouteSearch.DriveRouteQuery searchQuery = new RouteSearch.DriveRouteQuery( fromAndTo, RouteSearch.DRIVING_SINGLE_SHORTEST, latLonPointWays, null, "" ); + RouteSearch.DriveRouteQuery searchQuery = new RouteSearch.DriveRouteQuery( fromAndTo, RouteSearch.DRIVING_MULTI_CHOICE_AVOID_CONGESTION, latLonPointWays, null, "" ); if ( mRouteSearch == null ) { mRouteSearch = new RouteSearch( context ); + mRouteSearch.setRouteSearchListener(this); } mRouteSearch.calculateDriveRouteAsyn( searchQuery ); } @@ -94,14 +95,18 @@ public class RoadSearchClient implements IMogoRoadSearch, RouteSearch.OnRouteSea return; } List< MogoLatLng > points = new ArrayList<>(); - + Logger.d(TAG,"onDriveRouteSearched i : " + i); if ( driveRouteResult == null || driveRouteResult.getPaths() == null || driveRouteResult.getPaths().isEmpty() ) { + Logger.d(TAG,"onDriveRouteSearched result is null"); mListener.onDrivePathSearched( null ); return; } DrivePath drivePath = driveRouteResult.getPaths().get( 0 ); + int size = driveRouteResult.getPaths().size(); + Logger.d(TAG,"onDriveRouteSearched driveRouteResult size : " + size); + List< DriveStep > steps = drivePath.getSteps(); if ( steps == null || steps.isEmpty() ) { mListener.onDrivePathSearched( null ); 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 63c9099486..92368debb3 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 @@ -15,10 +15,10 @@ import com.mogo.module.main.MainActivity; */ public class MainIndependentActivity extends MainActivity { @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + protected void onCreate( @Nullable Bundle savedInstanceState ) { + super.onCreate( savedInstanceState ); // 独立app需要在onCreate里面增加处理scheme的情况 - mPresenter.handleSchemeIntent(getIntent()); + mPresenter.handleSchemeIntent( getIntent() ); } @Override @@ -34,4 +34,18 @@ public class MainIndependentActivity extends MainActivity { mApps.setVisibility( View.GONE ); } + + @Override + protected void onResume() { + super.onResume(); + if ( mCoverUpLayout.getVisibility() != View.VISIBLE ) { + mServiceApis.getAdasControllerApi().setUseAlgorithm( true ); + } + } + + @Override + protected void onPause() { + super.onPause(); + mServiceApis.getAdasControllerApi().setUseAlgorithm( false ); + } } 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 4e50009a24..59f382ce6a 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 @@ -11,6 +11,7 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.common.utils.CarSeries; import com.mogo.module.extensions.utils.ExtensionsConfig; import com.mogo.module.main.MainActivity; +import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.utils.logger.Logger; /** @@ -28,10 +29,7 @@ public class MainLauncherActivity extends MainActivity { @Override protected void addModule() { super.addModule(); - // F 车机添加返回桌面浮窗 - if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) { - MogoModulePaths.addModule( new MogoModule( BackToLauncherConst.MODULE_PATH, BackToLauncherConst.MODULE_NAME ) ); - } + MogoModulePaths.addModule( new MogoModule( BackToLauncherConst.MODULE_PATH, BackToLauncherConst.MODULE_NAME ) ); } @Override @@ -39,7 +37,7 @@ public class MainLauncherActivity extends MainActivity { super.loadContainerModules(); // 显示左边遮罩 mLeftShadowFrame.setVisibility( View.VISIBLE ); - mMogoModuleHandler.loadAppsListModule( com.mogo.module.main.R.id.module_main_id_apps_fragment_container ); + MogoModulesManager.getInstance().loadAppsListModule( com.mogo.module.main.R.id.module_main_id_apps_fragment_container ); } @Override diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java index d4a957ba1f..721d801fce 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java @@ -8,6 +8,7 @@ import com.mogo.module.apps.AppServiceHandler; import com.mogo.module.apps.AppsListActivity; import com.mogo.module.apps.model.AppInfo; import com.mogo.module.common.map.CustomNaviInterrupter; +import com.mogo.utils.LaunchUtils; /** * @author congtaowang @@ -28,11 +29,11 @@ public class InternalFunctionLauncher extends BaseAppLauncher { switch ( appInfo.getPackageName() ) { case "com.mogo.launcher.navi.search": if ( CustomNaviInterrupter.getInstance().interrupt() ) { - Intent intent = new Intent(); - intent.setAction( "AUTONAVI_STANDARD_BROADCAST_RECV" ); - intent.putExtra( "KEY_TYPE", 10034 ); - intent.putExtra( "SOURCE_APP", "Third App" ); - context.sendBroadcast( intent ); + try { + LaunchUtils.launchByPkg( context, "com.autonavi.amapauto" ); + } catch ( Exception e ) { + e.printStackTrace(); + } } else { AppServiceHandler.getApis().getSearchManagerApi().showSearch(); } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java index 7c9565f081..700564dce6 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/NavigatorApps.java @@ -15,13 +15,15 @@ public class NavigatorApps { private static AppInfo app = new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_navigator_navi, 1 ); private static AppInfo app_ = new AppInfo( "导航", "com.mogo.launcher.navi.search", "", 0, null, R.drawable.module_apps_ic_navigator_navi_disable, 1 ); - private static AppInfo app2 = new AppInfo( "音乐", "com.pvetec.musics", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 ); + private static AppInfo app2 = new AppInfo( "音乐", "com.tencent.wecarflow", "", 0, null, R.drawable.module_apps_ic_navigator_media, 2 ); + private static AppInfo app3 = new AppInfo( "车聊聊", "com.zhidao.imdemo", "", 0, null, R.drawable.module_apps_ic_navigator_im, 6 ); private static AppInfo app4 = new AppInfo( "全部应用", "com.mogo.launcher.applist", "", 0, null, R.drawable.module_apps_ic_navigator_applist, 4 ); public static List< AppInfo > getApps() { List< AppInfo > sApps = new ArrayList<>(); sApps.add( app ); sApps.add( app2 ); + sApps.add( app3 ); sApps.add( app4 ); return sApps; } @@ -30,6 +32,7 @@ public class NavigatorApps { List< AppInfo > sApps = new ArrayList<>(); sApps.add( app ); sApps.add( app2 ); + sApps.add( app3 ); sApps.add( app4 ); return sApps; } diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png new file mode 100755 index 0000000000..3ee3703675 Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable/module_apps_ic_navigator_im.png b/modules/mogo-module-apps/src/main/res/drawable/module_apps_ic_navigator_im.png new file mode 100755 index 0000000000..7a959f1ca1 Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable/module_apps_ic_navigator_im.png differ diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java index 74c6826eed..a92fcecdee 100644 --- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java +++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java @@ -1,7 +1,6 @@ package com.mogo.module.back; import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.view.View; @@ -14,14 +13,12 @@ import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.module.common.utils.CarSeries; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; -import com.mogo.service.intent.IMogoIntentListener; -import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.ModuleType; -import com.mogo.utils.logger.Logger; /** * @author congtaowang @@ -30,12 +27,9 @@ import com.mogo.utils.logger.Logger; * 描述 */ @Route( path = BackToLauncherConst.MODULE_PATH ) -public class BackToLauncherModuleProvider implements IMogoModuleProvider, IMogoIntentListener { +public class BackToLauncherModuleProvider implements IMogoModuleProvider { private IMogoServiceApis mServiceApis; - private IMogoIntentManager mIntentManager; - - public static final String COMMAND_BACK = "com.ileja.launcher.back"; private static final String TAG = "BackToLauncherModuleProvider"; @@ -97,18 +91,10 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider, IMogoI @Override public void init( Context context ) { - BackToMainHomeManager.addMainHomeView(); + if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) { + BackToMainHomeManager.addMainHomeView(); + } mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); - mIntentManager = mServiceApis.getIntentManagerApi(); - mIntentManager.registerIntentListener( COMMAND_BACK, this ); BackToMainHomeManager.init( mServiceApis ); } - - @Override - public void onIntentReceived( String intentStr, Intent intent ) { - if ( COMMAND_BACK.equals( intentStr ) ) { - Logger.d( TAG, "received back to home command." ); - BackToMainHomeManager.backToLauncher(); - } - } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java index 22d5495a51..bf8dcba003 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java @@ -17,6 +17,9 @@ public class MogoModulePaths { private static List< MogoModule > mMogoModules = new ArrayList<>(); + // 不需要启动APP也能运行的模块 + private static List< MogoModule > mMogoBaseModules = new ArrayList<>(); + /** * 地图模块 fragment 路径 */ @@ -50,7 +53,23 @@ public class MogoModulePaths { mMogoModules.add( module ); } + /** + * 添加卡片模块 + * + * @param module + */ + public static void addBaseModule( MogoModule module ) { + if ( module == null || TextUtils.isEmpty( module.getPath().replace( " ", "" ) ) ) { + throw new IllegalArgumentException( "module path can't be empty or null or blank" ); + } + mMogoBaseModules.add( module ); + } + public static List< MogoModule > getModules() { return mMogoModules; } + + public static List< MogoModule > getBaseModules() { + return mMogoBaseModules; + } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java index e14d0aff51..8943d08b6a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java @@ -17,6 +17,8 @@ import com.mogo.utils.LaunchUtils; import com.mogo.utils.glide.GlideApp; import com.mogo.utils.logger.Logger; +import retrofit2.http.HEAD; + /** * 天气,消息,个人头像 * @@ -116,7 +118,9 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP @Override public void renderUserInfo(UserInfo userInfo) { - Logger.d(TAG, "renderUserInfo: " + userInfo); - GlideApp.with(getContext()).load(userInfo.getHeadImgurl()).circleCrop().into(mUserHeadImg); + if(userInfo != null){ + Logger.d(TAG, "renderUserInfo: " + userInfo); + GlideApp.with(getContext()).load(userInfo.getHeadImgurl()).circleCrop().into(mUserHeadImg); + } } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java index aab4fbee5b..4c5a0fe623 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java @@ -65,9 +65,9 @@ public class ExtensionsModuleConst { //埋点 //分享分类 1:路况,2:油价,3:交通检查,4:封路 - public static final String LAUNCHER_SHARE_TYPE = "Launcher_Share_type"; + public static final String LAUNCHER_SHARE_TYPE = "v2x_share_type"; //分享/上报按钮点击 from=1 手动点击 from=2 语音打开 - public static final String LAUNCHER_SHARE_CLICK = "Launcher_Share_Click"; + public static final String LAUNCHER_SHARE_CLICK = "v2x_share_click"; public static final String CARNET_USER_UPLOAD = "CarNet_user_upload"; diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 43c603bbf7..9648fe49a8 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -17,6 +17,7 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.mvp.MvpFragment; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationClient; @@ -48,6 +49,8 @@ import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.statusmanager.StatusDescriptor; +import com.mogo.utils.AppUtils; +import com.mogo.utils.LaunchUtils; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.UiThreadHandler; @@ -63,7 +66,7 @@ import java.util.Map; *

* 描述 */ -public class EntranceFragment extends MvpFragment +public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresenter > implements EntranceView, IMogoNaviListener, IMogoMapListener, @@ -166,10 +169,10 @@ public class EntranceFragment extends MvpFragment demoCache = new ArrayList<>(); + private List< View > demoCache = new ArrayList<>(); @Override protected void initViews() { - mApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(getContext()); + mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); - mEntrancePresenter = new EntrancePresenter(getContext(), this); + mEntrancePresenter = new EntrancePresenter( getContext(), this ); mMogoFragmentManager = mApis.getFragmentManagerApi(); mStatusManager = mApis.getStatusManagerApi(); - mUploadRoadCondition = findViewById(R.id.module_entrance_id_upload_road_condition); - mUpload = findViewById(R.id.module_entrance_id_upload); - mUploading = findViewById(R.id.module_entrance_id_uploading); - mUploadRoadCondition.setOnClickListener(view -> { + mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); + mUpload = findViewById( R.id.module_entrance_id_upload ); + mUploading = findViewById( R.id.module_entrance_id_uploading ); + mUploadRoadCondition.setOnClickListener( view -> { // // todo 测试动画 // View v = LayoutInflater.from(getContext()).inflate(R.layout.demo_top, null); // TextView tv = v.findViewById(R.id.tvIndex); @@ -212,25 +215,25 @@ public class EntranceFragment extends MvpFragment { - if (!mStatusManager.isDisplayOverview()) { - mMApUIController.displayOverview(mDisplayOverviewBounds); - UiThreadHandler.removeCallbacks(mLockCarRunnable); - UiThreadHandler.postDelayed(mLockCarRunnable, 20_000); + mDisplayOverview = findViewById( R.id.module_ext_id_display_overview ); + mDisplayOverviewText = findViewById( R.id.module_ext_id_display_overview_text ); + mDisplayOverviewIcon = findViewById( R.id.module_ext_id_display_overview_icon ); + mDisplayOverview.setOnClickListener( view -> { + if ( !mStatusManager.isDisplayOverview() ) { + mMApUIController.displayOverview( mDisplayOverviewBounds ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); + UiThreadHandler.postDelayed( mLockCarRunnable, 20_000 ); } else { mMApUIController.recoverLockMode(); - UiThreadHandler.removeCallbacks(mLockCarRunnable); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); } - mStatusManager.setDisplayOverview(TAG, !mStatusManager.isDisplayOverview()); - }); + mStatusManager.setDisplayOverview( TAG, !mStatusManager.isDisplayOverview() ); + } ); - mMove2CurrentLocation = findViewById(R.id.module_entrance_id_move2_current_location); - mMove2CurrentLocation.setOnClickListener(view -> { + mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location ); + mMove2CurrentLocation.setOnClickListener( view -> { // // todo 测试动画 // if(!toggle) { // TopViewAnimHelper.getInstance().showNaviView(); @@ -246,105 +249,120 @@ public class EntranceFragment extends MvpFragment { + mApis.getSearchManagerApi().goSettings(); + return true; + } ); } - mExitNavi = findViewById(R.id.module_entrance_id_exit_navi); - mExitNavi.setOnClickListener(view -> { - if (mMogoNavi != null) { - if (mIsLock) { - new WMDialog.Builder(getContext()) - .setOkButton(R.string.module_commons_button_ok, (dlg, which) -> { +// mNaviInfo = findViewById( R.id.module_entrance_id_navi_info_panel ); + ConstraintLayout rootView = findViewById( R.id.module_entrance_id_top_motion_layout ); + if ( rootView != null ) { + TopViewAnimHelper.getInstance().init( rootView ); + } + + mExitNavi = findViewById( R.id.module_entrance_id_exit_navi ); + mExitNavi.setOnClickListener( view -> { + if ( mMogoNavi != null ) { + if ( mIsLock ) { + new WMDialog.Builder( getContext() ) + .setOkButton( R.string.module_commons_button_ok, ( dlg, which ) -> { dlg.dismiss(); mMogoNavi.stopNavi(); - }) - .setCancelButton(R.string.module_commons_button_cancel, - (dlg, which) -> { - dlg.dismiss(); - }) - .setContent(R.string.module_commons_exit_navi_content) + } ) + .setCancelButton( R.string.module_commons_button_cancel, + ( dlg, which ) -> { + dlg.dismiss(); + } ) + .setContent( R.string.module_commons_exit_navi_content ) .build() .show(); } else { - MapCenterPointStrategy.setMapCenterPointByScene(mMApUIController, Scene.NAVI); + MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.NAVI ); mMApUIController.recoverLockMode(); } } - }); + } ); - mCameraMode = findViewById(R.id.module_ext_id_north); - mCameraMode.setOnClickListener(view -> { - if (mCameraMode.isSelected()) { - mMApUIController.changeMapMode(EnumMapUI.CarUp_2D); + mCameraMode = findViewById( R.id.module_ext_id_north ); + mCameraMode.setOnClickListener( view -> { + if ( mCameraMode.isSelected() ) { + mMApUIController.changeMapMode( EnumMapUI.CarUp_2D ); } else { - mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D); + mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); } - mCameraMode.setSelected(!mCameraMode.isSelected()); - mCameraMode.setText(getString(mCameraMode.isSelected() ? R.string.mode_car_up : - R.string.mode_north_up)); - }); + mCameraMode.setSelected( !mCameraMode.isSelected() ); + mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : + R.string.mode_north_up ) ); + } ); - mApis.getIntentManagerApi().registerIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV, + mApis.getIntentManagerApi().registerIntentListener( AUTONAVI_STANDARD_BROADCAST_RECV, new IMogoIntentListener() { - @Override - public void onIntentReceived(String intentStr, Intent intent) { - int key_type = intent.getIntExtra("KEY_TYPE", 0); - int type = intent.getIntExtra("EXTRA_TYPE", -1); - int opera_type = intent.getIntExtra("EXTRA_OPERA", -1); - if (key_type == 10027) { - if (opera_type == 0) { - mCameraMode.setSelected(false); - } else if (opera_type == 1) { - mCameraMode.setSelected(true); + @Override + public void onIntentReceived( String intentStr, Intent intent ) { + int key_type = intent.getIntExtra( "KEY_TYPE", 0 ); + int type = intent.getIntExtra( "EXTRA_TYPE", -1 ); + int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 ); + if ( key_type == 10027 ) { + if ( opera_type == 0 ) { + mCameraMode.setSelected( false ); + } else if ( opera_type == 1 ) { + mCameraMode.setSelected( true ); + } + mCameraMode.setText( getString( mCameraMode.isSelected() ? + R.string.mode_car_up : R.string.mode_north_up ) ); + } } - mCameraMode.setText(getString(mCameraMode.isSelected() ? - R.string.mode_car_up : R.string.mode_north_up)); - } - } - }); - MogoEntranceButtons.save(ButtonIndex.BUTTON1, - findViewById(R.id.module_entrance_id_button1)); - MogoEntranceButtons.save(ButtonIndex.BUTTON2, - findViewById(R.id.module_entrance_id_button2)); + } ); + MogoEntranceButtons.save( ButtonIndex.BUTTON1, + findViewById( R.id.module_entrance_id_button1 ) ); + MogoEntranceButtons.save( ButtonIndex.BUTTON2, + findViewById( R.id.module_entrance_id_button2 ) ); mDisplayOverviewBounds = new Rect( - ResourcesHelper.getDimensionPixelSize(getContext(), - R.dimen.module_map_display_overview_left_margin), - ResourcesHelper.getDimensionPixelSize(getContext(), - R.dimen.module_map_display_overview_top_margin), - ResourcesHelper.getDimensionPixelSize(getContext(), - R.dimen.module_map_display_overview_right_margin), - ResourcesHelper.getDimensionPixelSize(getContext(), - R.dimen.module_map_display_overview_bottom_margin) + ResourcesHelper.getDimensionPixelSize( getContext(), + R.dimen.module_map_display_overview_left_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), + R.dimen.module_map_display_overview_top_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), + R.dimen.module_map_display_overview_right_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), + R.dimen.module_map_display_overview_bottom_margin ) ); mNaviInfo = new NaviInfoView(); - mNaviInfo.inflate(rootView); + mNaviInfo.inflate( rootView ); + + findViewById( R.id.module_map_id_navi_bg ).setOnClickListener( view -> { + try { + LaunchUtils.launchByPkg( getContext(), "com.autonavi.amapauto" ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } ); } public void showShareDialog() { isClickShare = true; mApis.getShareManager().showShareDialog(); - traceData("1"); + traceData( "1" ); } private static final String AUTONAVI_STANDARD_BROADCAST_RECV = @@ -357,27 +375,27 @@ public class EntranceFragment extends MvpFragment { - return !mMogoNavi.isNaviing(); - }); - if (CustomNaviInterrupter.getInstance().interrupt()) { - mDisplayOverview.setVisibility(View.GONE); - mCameraMode.setVisibility(View.GONE); - mExitNavi.setVisibility(View.GONE); + return !mMogoNavi.isNaviing(); + } ); + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + mDisplayOverview.setVisibility( View.GONE ); + mCameraMode.setVisibility( View.GONE ); + mExitNavi.setVisibility( View.GONE ); } else { - mExitNavi.setVisibility(View.VISIBLE); - mDisplayOverview.setVisibility(View.VISIBLE); - mCameraMode.setVisibility(View.VISIBLE); + mExitNavi.setVisibility( View.VISIBLE ); + mDisplayOverview.setVisibility( View.VISIBLE ); + mCameraMode.setVisibility( View.VISIBLE ); } - mApis.getAnalyticsApi().track("Navigation_begin", new HashMap<>()); + mApis.getAnalyticsApi().track( "Navigation_begin", new HashMap<>() ); } @Override public void onStopNavi() { TopViewAnimHelper.getInstance().hideNaviView(); - mExitNavi.setVisibility(View.GONE); - mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D); - mDisplayOverview.setVisibility(View.GONE); - mCameraMode.setVisibility(View.GONE); - MapCenterPointStrategy.setMapCenterPointByScene(mMApUIController, Scene.AIMLESS); + mExitNavi.setVisibility( View.GONE ); + mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); + mDisplayOverview.setVisibility( View.GONE ); + mCameraMode.setVisibility( View.GONE ); + MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.AIMLESS ); } @Override - public void onUpdateTraffic2(MogoTraffic traffic) { - if (traffic == null) { + public void onUpdateTraffic2( MogoTraffic traffic ) { + if ( traffic == null ) { return; } } @Override - public void onLockMap(boolean isLock) { + public void onLockMap( boolean isLock ) { mIsLock = isLock; - if (isLock) { - mExitNavi.setText(R.string.module_ext_str_exit_navi); - if (mMogoStatusManager.isDisplayOverview()) { - mMogoStatusManager.setDisplayOverview(TAG, false); + if ( isLock ) { + mExitNavi.setText( R.string.module_ext_str_exit_navi ); + if ( mMogoStatusManager.isDisplayOverview() ) { + mMogoStatusManager.setDisplayOverview( TAG, false ); } } else { - mExitNavi.setText(R.string.module_ext_str_continue_navi); + mExitNavi.setText( R.string.module_ext_str_continue_navi ); } } - private void traceData(String from) { - Map properties = new HashMap<>(); - properties.put("from", from); - mAnalytics.track("Launcher_Share_Click", properties); + private void traceData( String from ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "from", from ); + mAnalytics.track( "v2x_share_click", properties ); } @Override - public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { - if (mUploadRoadCondition == null) { + public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { + if ( mUploadRoadCondition == null ) { return; } - if (descriptor == StatusDescriptor.UPLOADING) { - if (isTrue) { - mUploading.setVisibility(View.VISIBLE); - mUpload.setVisibility(View.GONE); - if (mUploadFrameAnimHandler != null) { - mUploadFrameAnimHandler.removeMessages(MSG_STOP_ANIM); - mUploadFrameAnimHandler.removeMessages(MSG_FRAME_ANIM); + if ( descriptor == StatusDescriptor.UPLOADING ) { + if ( isTrue ) { + mUploading.setVisibility( View.VISIBLE ); + mUpload.setVisibility( View.GONE ); + if ( mUploadFrameAnimHandler != null ) { + mUploadFrameAnimHandler.removeMessages( MSG_STOP_ANIM ); + mUploadFrameAnimHandler.removeMessages( MSG_FRAME_ANIM ); } doFrameAnimOnUploadButton(); } else { mCurrentUploadFrame = 0; - if (mUploadFrameAnimHandler != null) { - mUploadFrameAnimHandler.removeMessages(MSG_FRAME_ANIM); + if ( mUploadFrameAnimHandler != null ) { + mUploadFrameAnimHandler.removeMessages( MSG_FRAME_ANIM ); } - mUploading.setVisibility(View.GONE); - mUpload.setVisibility(View.VISIBLE); + mUploading.setVisibility( View.GONE ); + mUpload.setVisibility( View.VISIBLE ); } - } else if (descriptor == StatusDescriptor.DISPLAY_OVERVIEW) { - if (!mMogoNavi.isNaviing()) { + } else if ( descriptor == StatusDescriptor.DISPLAY_OVERVIEW ) { + if ( !mMogoNavi.isNaviing() ) { return; } - if (isTrue) { - mDisplayOverviewText.setText("退出全览"); - mDisplayOverviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize(R.dimen.module_ext_display_overview_textSize)); - mCameraMode.setVisibility(View.GONE); + if ( isTrue ) { + mDisplayOverviewText.setText( "退出全览" ); + mDisplayOverviewText.setTextSize( TypedValue.COMPLEX_UNIT_PX, + getResources().getDimensionPixelSize( R.dimen.module_ext_display_overview_textSize ) ); + mCameraMode.setVisibility( View.GONE ); } else { - mDisplayOverviewText.setText("全览"); - mDisplayOverviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getResources().getDimensionPixelSize(R.dimen.module_ext_display_overview_textSize_large)); - if (CustomNaviInterrupter.getInstance().interrupt()) { - mCameraMode.setVisibility(View.GONE); + mDisplayOverviewText.setText( "全览" ); + mDisplayOverviewText.setTextSize( TypedValue.COMPLEX_UNIT_PX, + getResources().getDimensionPixelSize( R.dimen.module_ext_display_overview_textSize_large ) ); + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + mCameraMode.setVisibility( View.GONE ); } else { - mCameraMode.setVisibility(View.VISIBLE); + mCameraMode.setVisibility( View.VISIBLE ); } } } } private void doFrameAnimOnUploadButton() { - if (mUploadFrameAnimHandler == null) { - mUploadFrameAnimHandler = new Handler(Looper.getMainLooper()) { + if ( mUploadFrameAnimHandler == null ) { + mUploadFrameAnimHandler = new Handler( Looper.getMainLooper() ) { @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - if (msg.what == MSG_FRAME_ANIM) { - if (mUploadingFrameRes == null || mUploadingFrameRes.length == 0) { - if (mUploading != null) { - mUploading.setVisibility(View.GONE); + public void handleMessage( Message msg ) { + super.handleMessage( msg ); + if ( msg.what == MSG_FRAME_ANIM ) { + if ( mUploadingFrameRes == null || mUploadingFrameRes.length == 0 ) { + if ( mUploading != null ) { + mUploading.setVisibility( View.GONE ); } - if (mUpload != null) { - mUpload.setVisibility(View.VISIBLE); + if ( mUpload != null ) { + mUpload.setVisibility( View.VISIBLE ); } return; } - if (!mMogoStatusManager.isUploading()) { + if ( !mMogoStatusManager.isUploading() ) { mCurrentUploadFrame = 0; return; } - if (mUploading != null) { - if (mCurrentUploadFrame == mUploadingFrameRes.length) { + if ( mUploading != null ) { + if ( mCurrentUploadFrame == mUploadingFrameRes.length ) { mCurrentUploadFrame = 12; } - mUploading.setImageResource(mUploadingFrameRes[mCurrentUploadFrame++ % mUploadingFrameRes.length]); + mUploading.setImageResource( mUploadingFrameRes[mCurrentUploadFrame++ % mUploadingFrameRes.length] ); } - mUploadFrameAnimHandler.sendEmptyMessageDelayed(MSG_FRAME_ANIM, - TIME_FRAME_INTERVAL_TIME); - } else if (msg.what == MSG_STOP_ANIM) { - mStatusManager.setUploadingStatus(TAG, false); + mUploadFrameAnimHandler.sendEmptyMessageDelayed( MSG_FRAME_ANIM, + TIME_FRAME_INTERVAL_TIME ); + } else if ( msg.what == MSG_STOP_ANIM ) { + mStatusManager.setUploadingStatus( TAG, false ); } } }; } - mUploadFrameAnimHandler.sendEmptyMessage(MSG_FRAME_ANIM); + mUploadFrameAnimHandler.sendEmptyMessage( MSG_FRAME_ANIM ); // 30s 后无论成功与否,停止动画 - mUploadFrameAnimHandler.sendEmptyMessageDelayed(MSG_STOP_ANIM, 30_000); + mUploadFrameAnimHandler.sendEmptyMessageDelayed( MSG_STOP_ANIM, 30_000 ); } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java index 4815bccb32..0b6ebc03de 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java @@ -160,6 +160,11 @@ public class TopViewAnimHelper { public void startTopInAnim(View view, ViewGroup.LayoutParams params, IMogoTopViewStatusListener statusListener) { + + if ( topMotionLayout == null ) { + return; + } + Logger.d(TAG, "startTopInAnim=====" + isTopViewOut); if (view == null) { throw new IllegalArgumentException("method addTopView params view is null"); @@ -284,6 +289,11 @@ public class TopViewAnimHelper { } public void startTopOutAnim(View view) { + + if ( topMotionLayout == null ) { + return; + } + Logger.d("TopViewAnimHelper", "startTopOutAnim====="); if (!isTopViewOut && viewCaches.contains(view)) { if (topContainer.getChildCount() > 1) { @@ -379,6 +389,11 @@ public class TopViewAnimHelper { } public void showNaviView() { + + if ( topMotionLayout == null ) { + return; + } + Logger.d("TopViewAnimHelper", "showNaviView====="); setNaviVisibility(View.VISIBLE); int scene = 0; @@ -446,6 +461,11 @@ public class TopViewAnimHelper { } public void hideNaviView() { + + if ( topMotionLayout == null ) { + return; + } + Logger.d("TopViewAnimHelper", "hideNaviView====="); setNaviVisibility(View.GONE); remainDistanceGroup.setVisibility(View.GONE); diff --git a/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/WebSocketManager.java b/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/WebSocketManager.java index a0d21778b6..f5564894eb 100644 --- a/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/WebSocketManager.java +++ b/modules/mogo-module-gps-simulator-debug/src/main/java/com/mogo/module/gps/simulator/WebSocketManager.java @@ -3,6 +3,7 @@ package com.mogo.module.gps.simulator; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.AbsMogoApplication; import com.mogo.map.MogoLatLng; +import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener; import com.mogo.map.navi.IMogoNavi; @@ -17,6 +18,7 @@ import org.java_websocket.handshake.ServerHandshake; import org.json.JSONObject; import java.net.URI; +import java.util.Iterator; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -101,6 +103,18 @@ public class WebSocketManager { realTimeLocationVo.getDirection(), realTimeLocationVo.getLocationTime() ); + Iterator< IMogoLocationListener > listeners = mServiceApis.getRegisterCenterApi().getLocationListeners(); + MogoLocation location = new MogoLocation(); + location.setLatitude( realTimeLocationVo.getLat() ); + location.setLongitude( realTimeLocationVo.getLon() ); + location.setSpeed( realTimeLocationVo.getVehicleSpeed() ); + location.setAccuracy( 1 ); + location.setTime( realTimeLocationVo.getLocationTime() ); + if ( listeners != null ) { + while ( listeners.hasNext() ) { + listeners.next().onLocationChanged( location ); + } + } } ); } } diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle index 69449eb0f9..e06cc617ba 100644 --- a/modules/mogo-module-main/build.gradle +++ b/modules/mogo-module-main/build.gradle @@ -39,6 +39,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter + implementation rootProject.ext.dependencies.tanluupload annotationProcessor rootProject.ext.dependencies.aroutercompiler if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogoutils diff --git a/modules/mogo-module-main/src/main/AndroidManifest.xml b/modules/mogo-module-main/src/main/AndroidManifest.xml index e490d96a29..90e40ed1eb 100644 --- a/modules/mogo-module-main/src/main/AndroidManifest.xml +++ b/modules/mogo-module-main/src/main/AndroidManifest.xml @@ -2,6 +2,13 @@ package="com.mogo.module.main"> - + + + + + diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java index 89a2f42f41..48a0812257 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java @@ -157,6 +157,7 @@ public class EventDispatchCenter implements @Override public void onCarLocationChanged2( Location latLng ) { + Iterator< IMogoCarLocationChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener(); if ( iterator == null ) { return; @@ -370,7 +371,6 @@ public class EventDispatchCenter implements public void onStartNavi() { Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { return; } @@ -447,6 +447,7 @@ public class EventDispatchCenter implements @Override public void onLocationChanged( MogoLocation location ) { + final long start = System.currentTimeMillis(); Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners(); if ( iterator == null ) { 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 43a0b53ef9..3ef61ea88e 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 @@ -26,6 +26,7 @@ import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; import com.mogo.module.main.cards.MogoModulesHandler; import com.mogo.module.main.cards.MogoModulesManager; +import com.mogo.module.main.service.MogoMainService; import com.mogo.module.main.windowview.FloatingViewHandler; import com.mogo.module.service.ServiceConst; import com.mogo.service.IMogoServiceApis; @@ -35,6 +36,9 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.logger.Logger; +import com.zhidao.autopilot.support.api.AutopilotServiceManage; + +import org.aspectj.lang.annotation.Around; import java.util.List; @@ -53,7 +57,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme protected IMogoServiceApis mServiceApis; protected IMogoMapService mMogoMapService; protected IMogoMapUIController mMogoMapUIController; - protected MogoModulesHandler mMogoModuleHandler; protected IMogoFragmentManager mMogoFragmentManager; protected IMogoStatusManager mMogoStatusManager; @@ -64,11 +67,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme protected FrameLayout mCoverUpLayout; protected View mLeftShadowFrame; - /** - * 主模块管控定位,可以向各个模块发送统一定位信息 - */ - private IMogoLocationClient mLocationClient; - @Override protected int getLayoutId() { return R.layout.module_main_activity_main; @@ -118,20 +116,20 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); } mMogoStatusManager = mServiceApis.getStatusManagerApi(); + AutopilotServiceManage.getInstance().init( getContext() ); } @Override public void loadModules() { final long start = System.currentTimeMillis(); - mMogoModuleHandler = new MogoModulesManager( this, getApis() ); + MogoModulesManager.getInstance().init( this, getApis() ); mMogoMapService = mServiceApis.getMapServiceApi(); if ( mMogoMapService != null ) { mMogoMapService.getHostListenerRegister().registerHostMapListener( EventDispatchCenter.getInstance() ); mMogoMapService.getHostListenerRegister().registerHostNaviListener( EventDispatchCenter.getInstance() ); mMogoMapService.getHostListenerRegister().registerHostAimlessModeListener( EventDispatchCenter.getInstance() ); mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this ); - mMogoMapService.getNavi( this ).registerCarLocationChangedListener( EventDispatchCenter.getInstance() ); } EventDispatchCenter.getInstance().setMapLoadedCallback( () -> { @@ -139,19 +137,17 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 addModule(); loadContainerModules(); - mMogoModuleHandler.loadModules(); + MogoModulesManager.getInstance().loadModules(); mPresenter.delayOperations(); - mPresenter.initADAS(); - hideCoverUpLayout(); // 右移地图中心点 mMogoMapUIController = mMogoMapService.getMapUIController(); MapCenterPointStrategy.setMapCenterPointByScene( mMogoMapUIController, Scene.AIMLESS ); - // 开启定位 - startLocation(); + // 启动一些基本的服务:定位等 + startBaseService(); } ); - mMogoModuleHandler.loadMapModule( R.id.module_main_id_map_fragment_container ); + MogoModulesManager.getInstance().loadMapModule( R.id.module_main_id_map_fragment_container ); mMogoFragmentManager = mServiceApis.getFragmentManagerApi(); mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment ); @@ -166,22 +162,21 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } + private void startBaseService() { + Intent intent = new Intent( this, MogoMainService.class ); + startService( intent ); + } + /** * 添加模块 */ - protected void addModule(){ - MogoModulePaths.addModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) ); - } + protected void addModule() { - private void startLocation() { - mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() ); - mLocationClient.addLocationListener( this ); - mLocationClient.start( 2_000L ); } protected void loadContainerModules() { - mMogoModuleHandler.loadExtensionsModule( R.id.module_main_id_header_fragment_container ); - mMogoModuleHandler.loadEntrancesModule( R.id.module_main_id_entrance_fragment_container ); + MogoModulesManager.getInstance().loadExtensionsModule( R.id.module_main_id_header_fragment_container ); + MogoModulesManager.getInstance().loadEntrancesModule( R.id.module_main_id_entrance_fragment_container ); } @Override @@ -193,7 +188,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void loadCardModules() { - List< IMogoModuleProvider > providers = mMogoModuleHandler.loadCardsModule(); + List< IMogoModuleProvider > providers = MogoModulesManager.getInstance().loadCardsModule(); // mCardModulesAdapter = new CardModulesAdapter( this, providers ); // mCardsContainer.setOffscreenPageLimit( providers.size() ); // mCardsContainer.setPageTransformer( true, mTransformer ); @@ -214,16 +209,9 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public boolean onMarkerClicked( IMogoMarker marker ) { EventDispatchCenter.getInstance().onMarkerClicked( marker ); - if ( !mMogoStatusManager.isADASShow() ) { - switch2Card( marker.getOwner(), false ); - } return false; } - @Override - public void switch2Card( String cardType, boolean lockCar ) { - } - @Override protected void onResume() { super.onResume(); @@ -243,13 +231,14 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void onBackPressed() { if ( mMogoFragmentManager.getStackSize() == 0 ) { - if(DebugConfig.isLauncher()) { + if ( DebugConfig.isLauncher() ) { return; - }else{ + } else { super.onBackPressed(); } } - if ( mMogoFragmentManager != null ) { + if ( mMogoFragmentManager != null + && mMogoFragmentManager.getStackSize() > 0 ) { mMogoFragmentManager.pop(); } } @@ -271,18 +260,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override protected void onDestroy() { super.onDestroy(); - if ( mLocationClient != null ) { - mLocationClient.removeLocationListener( this ); - mLocationClient.destroy(); - } - mLocationClient = null; - if ( mMogoModuleHandler != null ) { - mMogoModuleHandler.destroy(); - } - mMogoModuleHandler = null; mMogoMapService = null; mMogoMapUIController = null; mMogoFragmentManager = null; + mServiceApis.getAdasControllerApi().release(); AIAssist.getInstance( this ).release(); } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java index 9d15afb925..66fbdfc738 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java @@ -16,6 +16,7 @@ import com.mogo.module.main.livedata.CardSwitchLiveData; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.module.IMogoModuleProvider; +import com.zhidao.roadcondition.service.MainService; import java.util.HashMap; import java.util.Map; @@ -28,9 +29,6 @@ import java.util.Map; */ public class MainPresenter extends Presenter< MainView > { - // 埋点接口 - private IMogoAnalytics mAnalytics; - private Handler mMsgHandler = new Handler( Looper.getMainLooper() ) { @Override public void handleMessage( Message msg ) { @@ -57,13 +55,6 @@ public class MainPresenter extends Presenter< MainView > { @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); - CardSwitchLiveData.getInstance().observeForever( cardInfo -> { - if ( TextUtils.isEmpty( cardInfo.mCardName ) ) { - return; - } - mView.switch2Card( cardInfo.mCardName, cardInfo.mLockCar ); - } ); - mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); } /** diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java index ec93570a23..e2b33db244 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java @@ -11,13 +11,6 @@ import com.mogo.service.IMogoServiceApis; */ public interface MainView extends IView { - /** - * 切换卡片 - * - * @param cardType - */ - void switch2Card( String cardType, boolean lockCar ); - /** * 加载卡片 */ 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 ed57a10838..799a0d9377 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 @@ -53,7 +53,10 @@ public interface MogoModulesHandler { void loadEntrancesModule( int containerId ); /** - * 销毁 + * 加载基本服务模块,需要不启动页面就能运行 + *

+ * 1. v2x + * 2. mogo-module-service */ - void destroy(); + void loadBaseModule(); } 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 5834ab346d..876d4c01d2 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 @@ -35,8 +35,27 @@ public class MogoModulesManager implements MogoModulesHandler { private Map< MogoModule, IMogoModuleProvider > mModuleProviders = new HashMap<>(); // 空间换效率 private Map< String, IMogoModuleProvider > mModuleNameProviders = new HashMap<>(); + + private static volatile MogoModulesManager sInstance; + + private MogoModulesManager(){} + + public static MogoModulesManager getInstance(){ + if( sInstance == null ){ + synchronized( MogoModulesManager.class ) { + if( sInstance == null ){ + sInstance = new MogoModulesManager(); + } + } + } + return sInstance; + } + + public synchronized void release(){ + sInstance = null; + } - public MogoModulesManager( MainActivity activity, IMogoServiceApis apis ) { + public void init( MainActivity activity, IMogoServiceApis apis ) { if ( activity == null ) { throw new NullPointerException( "activity can't be null." ); } @@ -111,6 +130,18 @@ public class MogoModulesManager implements MogoModulesHandler { addFragment( provider, containerId ); } + @Override + public void loadBaseModule() { + List baseModules = MogoModulePaths.getBaseModules(); + for ( MogoModule baseModule : baseModules ) { + if ( baseModule == null ) { + continue; + } + Logger.d( TAG, "加载基本模块:%s", baseModule.getPath() ); + load( baseModule.getPath() ); + } + } + private IMogoModuleProvider load( String path ) { return ( IMogoModuleProvider ) ARouter.getInstance().build( path ).navigation( getContext() ); } @@ -129,13 +160,4 @@ public class MogoModulesManager implements MogoModulesHandler { .add( containerId, fragment, provider.getModuleName() ) .commitAllowingStateLoss(); } - - @Override - public void destroy() { - mActivity = null; - if ( mModuleProviders != null ) { - mModuleProviders.clear(); - } - mModuleProviders = null; - } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java index 8ab4a9e5b4..eee8c3ec08 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java @@ -13,6 +13,9 @@ import com.mogo.service.MogoServicePaths; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoRegisterCenter; +import java.util.Iterator; +import java.util.List; + /** * @author congtaowang * @since 2020-01-09 @@ -57,6 +60,11 @@ public class MogoRegisterCenter implements IMogoRegisterCenter { MogoRegisterCenterHandler.getInstance().registerMogoLocationListener( moduleName, listener ); } + @Override + public Iterator< IMogoLocationListener > getLocationListeners() { + return MogoRegisterCenterHandler.getInstance().getLocationListeners(); + } + @Override public void unregisterMogoLocationListener( String moduleName ) { MogoRegisterCenterHandler.getInstance().unregisterMogoLocationListener( moduleName ); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java index 8a15cf5679..ca0e33a72a 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java @@ -158,6 +158,7 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { return mNavi.values().iterator(); } + @Override public Iterator< IMogoLocationListener > getLocationListeners() { return mLocation.values().iterator(); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java new file mode 100644 index 0000000000..b367177ad7 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java @@ -0,0 +1,99 @@ +package com.mogo.module.main.service; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +import androidx.annotation.Nullable; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.AbsMogoApplication; +import com.mogo.map.location.IMogoLocationClient; +import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.location.MogoLocation; +import com.mogo.module.main.EventDispatchCenter; +import com.mogo.module.main.cards.MogoModulesManager; +import com.mogo.service.IMogoServiceApis; +import com.mogo.service.MogoServicePaths; +import com.mogo.utils.logger.Logger; +import com.zhidao.roadcondition.service.MainService; + +public +/** + * @author congtaowang + * @since 2020/6/10 + * + * 描述 + */ +@Route( path = "/service/base/info" ) +class MogoMainService extends Service implements IMogoLocationListener { + + private static final String TAG = "MogoMainService"; + private IMogoServiceApis mServiceApis; + + /** + * 主模块管控定位,可以向各个模块发送统一定位信息 + */ + private IMogoLocationClient mLocationClient; + + + @Nullable + @Override + public IBinder onBind( Intent intent ) { + return null; + } + + @Override + public int onStartCommand( Intent intent, int flags, int startId ) { + Logger.d( TAG, "基本服务启动" ); + mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); + initAndStartLocation(); + initGpsSimulatorListener(); + loadBaseModules(); + startTanluService(); + initADAS(); + return START_STICKY; + } + + private void initAndStartLocation() { + Logger.d( TAG, "开始定位" ); + mLocationClient = mServiceApis.getMapServiceApi().getSingletonLocationClient( AbsMogoApplication.getApp() ); + mLocationClient.addLocationListener( this ); + mLocationClient.start( 2_000L ); + } + + private void initGpsSimulatorListener() { + mServiceApis.getMapServiceApi().getNavi( this ).registerCarLocationChangedListener( EventDispatchCenter.getInstance() ); + } + + private void loadBaseModules() { + Logger.d( TAG, "加载基本模块" ); + MogoModulesManager.getInstance().loadBaseModule(); + } + + private void startTanluService() { + MainService.Companion.launchService( getApplicationContext(), "0" ); + } + + private void initADAS() { + mServiceApis.getAdasControllerApi().init( AbsMogoApplication.getApp() ); + } + + @Override + public void onLocationChanged( MogoLocation location ) { + EventDispatchCenter.getInstance().onLocationChanged( location ); + } + + @Override + public void onDestroy() { + super.onDestroy(); + if ( mLocationClient != null ) { + mLocationClient.removeLocationListener( this ); + mLocationClient.stop(); + mLocationClient.destroy(); + mLocationClient = null; + } + mServiceApis = null; + } +} diff --git a/modules/mogo-module-service/build.gradle b/modules/mogo-module-service/build.gradle index 6c15a6d379..56451b4364 100644 --- a/modules/mogo-module-service/build.gradle +++ b/modules/mogo-module-service/build.gradle @@ -54,6 +54,7 @@ dependencies { api rootProject.ext.dependencies.mogocommons api rootProject.ext.dependencies.mogoserviceapi implementation rootProject.ext.dependencies.modulecommon + implementation rootProject.ext.dependencies.gpssimulator } else { api project(":libraries:mogo-map") api project(":libraries:mogo-map-api") @@ -61,6 +62,7 @@ dependencies { api project(":foudations:mogo-commons") api project(':services:mogo-service-api') implementation project(':modules:mogo-module-common') + implementation project(':modules:mogo-module-gps-simulator') } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index c88d8206ac..960153e1b1 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -11,6 +11,7 @@ import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.carchattingprovider.ICarsChattingProvider; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; @@ -60,6 +61,7 @@ public class MarkerServiceHandler { private static IMogoLauncher sLauncher; private static IMogoFragmentManager sFragmentManager; private static ICarsChattingProvider sCarChatting; + private static IMogoGpsSimulatorManager sGpsSimulatorManager; private static MapMarkerManager sMapMarkerManager; @@ -87,6 +89,8 @@ public class MarkerServiceHandler { sMapMarkerManager = MapMarkerManager.getInstance(); sMapMarkerManager.init( context ); + + sGpsSimulatorManager = ARouter.getInstance().navigation( IMogoGpsSimulatorManager.class ); } public static IMogoServiceApis getApis(){ @@ -169,6 +173,9 @@ public class MarkerServiceHandler { return sCarChatting; } + public static IMogoGpsSimulatorManager getGpsSimulatorManager() { + return sGpsSimulatorManager; + } //TODO -------------以下方法是临时过度使用的,后面统一使用,getMapMarkerManager进行调用 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 8174510733..0fbcaa89bb 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -312,6 +312,7 @@ public class MogoServices implements IMogoMapListener, mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_FRIEND, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_USER_ONLINE, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_FRIEND_BYLOCATION, this ); + mIntentManager.registerIntentListener( ServiceConst.COMMAND_BACK, this ); mADASController = MarkerServiceHandler.getADASController(); mLauncher = MarkerServiceHandler.getLauncher(); @@ -566,8 +567,8 @@ public class MogoServices implements IMogoMapListener, return false; } float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation ); - Logger.d( TAG, "move distance = %s, factor = %s", distance, factor ); - return distance > factor / 2; + Logger.d( TAG, "move distance = %s, factor = %s", distance, ( factor / 2 ) ); + return distance > ( factor / 2 ); } catch ( Exception e ) { Logger.e( TAG, e, "warming. " ); return false; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java index e1de1cfacd..ab0ccef734 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -90,7 +90,7 @@ public class ServiceConst { /** * 所有卡片显示的每类点的最大数据量 */ - public static final int MAX_AMOUNT_ALL = 5; + public static final int MAX_AMOUNT_ALL = Integer.MAX_VALUE; /** * 单个卡片显示时的最大数据量 @@ -193,5 +193,8 @@ public class ServiceConst { */ public static final String COMMAND_ZHIDAO_NEARBY_FRIEND_BYLOCATION = "com.zhidao.nearby.friend.bylocation"; - + /** + * 返回桌面 + */ + public static final String COMMAND_BACK = "com.ileja.launcher.back"; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java index 66ca68b304..aaa1fa14d3 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java @@ -5,10 +5,15 @@ import android.content.Intent; import android.text.TextUtils; import com.mogo.module.service.ServiceConst; +import com.mogo.utils.LaunchUtils; +import com.mogo.utils.TipToast; import org.json.JSONException; import org.json.JSONObject; +import java.util.HashMap; +import java.util.Map; + /** * @author congtaowang * @since 2020-04-17 @@ -17,24 +22,26 @@ import org.json.JSONObject; */ public class AppOperationIntentHandler implements IntentHandler { + public final Map< String, String > sAppPackages = new HashMap<>(); + + public AppOperationIntentHandler() { + sAppPackages.put( "车聊聊", "com.zhidao.imdemo" ); + } + @Override public void handle( Context context, Intent intent ) { try { JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); String app = object.optString( "object" ); String operation = object.optString( "operation" ); - if ( TextUtils.equals( app, "车聊聊" ) ) { - if ( TextUtils.equals( "打开", operation ) ) { - SwitchCardIntentHandler.switchCard2( context, ServiceConst.CARD_TYPE_CARS_CHATTING ); - } - } else { - if ( TextUtils.equals( app, "探路" ) ) { - if ( TextUtils.equals( "打开", operation ) ) { - SwitchCardIntentHandler.switchCard2( context, ServiceConst.CARD_TYPE_ROAD_CONDITION ); - } + if ( TextUtils.equals( "打开", operation ) ) { + try { + LaunchUtils.launchByPkg( context, sAppPackages.get( app ) ); + } catch ( Exception e ) { + TipToast.shortTip( "应用程序未安装" ); } } - } catch ( JSONException e ) { + } catch ( Exception e ) { e.printStackTrace(); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java index 7e79d98584..d67957cb8f 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java @@ -35,6 +35,7 @@ public class IntentHandlerFactory { mHandlers.put( MogoReceiver.ACTION_ADAS_STATUS, ADASStatusIntentHandler.getInstance() ); mHandlers.put( MogoReceiver.ACTIION_ADAS, ADASStatusIntentHandler.getInstance() ); mHandlers.put( MogoReceiver.ACTION_VOICE_READY, new AIAssistIntentHandler() ); + mHandlers.put( ServiceConst.COMMAND_BACK, WholeVoiceCommandIntentHandler.getInstance() ); } private static final class InstanceHolder { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java index e836349303..ecda1f1e95 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -70,7 +70,6 @@ public class MockIntentHandler implements IntentHandler { button1.setVisibility( View.VISIBLE ); button1.setBackgroundColor( Color.RED ); button1.setOnClickListener( view -> { - TipToast.shortTip( "测试" ); } ); } break; @@ -276,11 +275,17 @@ public class MockIntentHandler implements IntentHandler { IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker( TAG, options ); MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( TAG, true, false ); MarkerServiceHandler.getMapUIController().moveToCenter( mogoLatLngs.get( 0 ) ); - WorkThreadHandler.getInstance().post( ()->{ + WorkThreadHandler.getInstance().post( () -> { marker.startSmooth( mogoLatLngs, duration ); } ); } break; + case 15: + MarkerServiceHandler.getGpsSimulatorManager().open(); + break; + case 16: + MarkerServiceHandler.getGpsSimulatorManager().close(); + break; } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/WholeVoiceCommandIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/WholeVoiceCommandIntentHandler.java new file mode 100644 index 0000000000..e7f77292d1 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/WholeVoiceCommandIntentHandler.java @@ -0,0 +1,57 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; + +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.module.service.ServiceConst; +import com.mogo.module.service.receiver.MogoReceiver; + +public +/** + * @author congtaowang + * @since 2020/6/11 + * + * 描述 + */ +class WholeVoiceCommandIntentHandler implements IntentHandler { + + private static volatile WholeVoiceCommandIntentHandler sInstance; + + private WholeVoiceCommandIntentHandler() { + } + + public static WholeVoiceCommandIntentHandler getInstance() { + if ( sInstance == null ) { + synchronized ( WholeVoiceCommandIntentHandler.class ) { + if ( sInstance == null ) { + sInstance = new WholeVoiceCommandIntentHandler(); + } + } + } + return sInstance; + } + + public synchronized void release() { + sInstance = null; + } + + private Object readResolve() { + // 阻止反序列化,必须实现 Serializable 接口 + return sInstance; + } + + @Override + public void handle( Context context, Intent intent ) { + String command = intent.getStringExtra( MogoReceiver.PARAM_COMMAND ); + if ( TextUtils.isEmpty( command ) ) { + return; + } + switch ( command ) { + case ServiceConst.COMMAND_BACK: + MarkerServiceHandler.getLauncher().backToLauncher( context ); + break; + } + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index 31825c7c11..d564a1757d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java @@ -136,7 +136,7 @@ public class MapMarkerInfoView extends MapMarkerBaseView { ivIcon.setImageResource( R.drawable.icon_map_marker_living_light ); break; default: - ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_light ); break; } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 0be8fff665..8e704eedf7 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -240,7 +240,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } ); drawMarkerByCurrentType( mLastDataResult ); - trackData( mLastDataResult ); + + // 在首页时才埋点 + if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) { + trackData( mLastDataResult ); + } } /** @@ -716,7 +720,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } }; - public void stopAutoRefresh(){ + public void stopAutoRefresh() { UiThreadHandler.removeCallbacks( runnable ); } @@ -747,7 +751,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } - mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, limit, radius, new RefreshCallback() { + mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit, new RefreshCallback() { @Override public void onSuccess( Object o ) { MarkerResponse data = ( MarkerResponse ) o; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index db970da316..1c83655149 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -103,7 +103,7 @@ public class MapMarkerView extends MapMarkerBaseView { break; case MarkerPoiTypeEnum.FOURS_PARKING: default: - ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); + ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2 ); break; } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index e6c3f1cde1..33d1fd0cc1 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -13,6 +13,7 @@ import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.service.ServiceConst; import com.mogo.service.MogoServicePaths; import com.mogo.service.network.IMogoNetwork; +import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; @@ -30,6 +31,8 @@ import io.reactivex.schedulers.Schedulers; */ public class RefreshModel { + private static final String TAG = "RefreshModel"; + public static final String HOST_DEV = "http://dzt-test.zhidaohulian.com"; public static final String HOST_TEST = "http://dzt-test.zhidaohulian.com"; public static final String HOST_DEMO = "http://dzt-show.zhidaohulian.com"; @@ -69,7 +72,12 @@ public class RefreshModel { refreshBody.dataType.add( ServiceConst.CARD_TYPE_SHARE_MUSIC ); // refreshBody.dataType.add(ServiceConst.CARD_TYPE_USER_DATA); refreshBody.dataType.add( ServiceConst.CARD_TYPE_NOVELTY ); - query.put( "data", GsonUtil.jsonFromObject( refreshBody ) ); + + String data = GsonUtil.jsonFromObject( refreshBody ); + query.put( "data", data ); + Logger.d( TAG, data ); + + mRefreshApiService.refreshData( query ) .subscribeOn( Schedulers.io() ) .observeOn( AndroidSchedulers.mainThread() ) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java index 2e49900c62..58b2102045 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java @@ -11,7 +11,7 @@ public class ShareConstants { /** * 分享分类 */ - public static final String LAUNCHER_SHARE_TYPE = "Launcher_Share_type"; + public static final String LAUNCHER_SHARE_TYPE = "v2x_share_type"; /** * 分享/上报按钮点击 */ diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java index 7be4dd6e4e..c6b6553840 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java @@ -31,5 +31,19 @@ public interface IMogoADASController extends IProvider { */ void killADAS(); - void setSettingStatus(boolean show); + /** + * adas 设置页面控制 + * + * @param show + */ + void setSettingStatus( boolean show ); + + /** + * 控制算法 + * + * @param open + */ + void setUseAlgorithm( boolean open ); + + void release(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java index 30cf128fb6..634009b667 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java @@ -8,6 +8,8 @@ import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; import com.mogo.map.navi.IMogoNaviListener; +import java.util.Iterator; + /** * @author congtaowang * @since 2020-01-09 @@ -72,6 +74,13 @@ public interface IMogoRegisterCenter extends IProvider { */ void registerMogoLocationListener( String tag, IMogoLocationListener listener ); + /** + * 返回点位监听 + * + * @return + */ + Iterator< IMogoLocationListener > getLocationListeners(); + /** * 注销定位监听函数 * diff --git a/services/mogo-service/build.gradle b/services/mogo-service/build.gradle index 1b26b1e000..2a95b0f6c7 100644 --- a/services/mogo-service/build.gradle +++ b/services/mogo-service/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler - implementation rootProject.ext.dependencies.adasapi + api rootProject.ext.dependencies.adasapi if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap implementation rootProject.ext.dependencies.mogomapapi diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index f44ab838d0..8e1839fde8 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.os.RemoteException; +import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; @@ -48,6 +49,8 @@ public class MogoADASController implements IMogoADASController { private IMogoStatusManager mStatusManager = SingletonsHolder.get( IMogoStatusManager.class ); + private boolean mIsReleased = true; + @Override public void openADAS() { showADAS(); @@ -65,10 +68,11 @@ public class MogoADASController implements IMogoADASController { @Override public void showADAS() { - Logger.d( TAG, "show adas" ); - if ( !isProcessRunning( AbsMogoApplication.getApp(), getPackageUid( AbsMogoApplication.getApp(), "com.zhidiao.autopilot" ) ) ) { + Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); + if ( !isProcessRunning( AbsMogoApplication.getApp(), getPackageUid( AbsMogoApplication.getApp(), "com.zhidiao.autopilot" ) ) + || mIsReleased ) { + init( AbsMogoApplication.getApp() ); } - init( AbsMogoApplication.getApp() ); if ( mStatusManager.isSearchUIShow() ) { return; @@ -132,6 +136,7 @@ public class MogoADASController implements IMogoADASController { @Override public void init( Context context ) { AutopilotServiceManage.getInstance().init( context ); + mIsReleased = false; } //获取已安装应用的 uid,-1 表示未安装此应用或程序异常 @@ -172,4 +177,15 @@ public class MogoADASController implements IMogoADASController { public void setSettingStatus( boolean show ) { AutopilotServiceManage.getInstance().setSettingStatus( show ); } + + @Override + public void setUseAlgorithm( boolean open ) { + AutopilotServiceManage.getInstance().setUseAlgorithm( open ); + } + + @Override + public void release() { + mIsReleased = true; + AutopilotServiceManage.getInstance().release(); + } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java b/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java index cd397a17bb..0aea3f824d 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/fragmentmanager/FragmentStack.java @@ -69,6 +69,10 @@ public class FragmentStack { return; } + if ( mFragmentManager == null ) { + return; + } + FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction(); if ( mCurrentFragment != null ) { @@ -100,6 +104,9 @@ public class FragmentStack { invokeCallback(); return; } + if ( mFragmentManager == null ) { + return; + } FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction(); @@ -163,6 +170,10 @@ public class FragmentStack { public void clearAll() { + if ( mFragmentManager == null ) { + return; + } + if ( mFragmentStack.isEmpty() ) { invokeCallback(); return; diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index 7def67c3e6..3d4940d28b 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -168,7 +168,9 @@ public class MogoStatusManager implements IMogoStatusManager { @Override public void setMainPageResumeStatus( String tag, boolean resume ) { + final long start = System.currentTimeMillis(); doSetStatus( tag, StatusDescriptor.MAIN_PAGE_RESUME, resume ); + Logger.i( TAG, "setMainPageResumeStatus " + resume + " cost " + ( System.currentTimeMillis() - start ) + "ms" ); } @Override @@ -191,7 +193,7 @@ public class MogoStatusManager implements IMogoStatusManager { doSetStatus( tag, StatusDescriptor.UPLOADING, uploading ); } - private void doSetStatus(String tag, StatusDescriptor target, boolean value){ + private void doSetStatus( String tag, StatusDescriptor target, boolean value ) { mStatus.put( target, value ); invokeStatusChangedListener( target, value ); recordStatusModifier( tag, target );