diff --git a/app/build.gradle b/app/build.gradle
index 39683d4750..21c813e433 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -50,9 +50,9 @@ android {
signingConfig signingConfigs.release
}
release {
- minifyEnabled true
- zipAlignEnabled true
- shrinkResources true
+ minifyEnabled false
+ zipAlignEnabled false
+ shrinkResources false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 1e2af9ad7a..3f451d8bed 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -335,9 +335,12 @@
#-----Netty-----
-keepattributes Signature,InnerClasses
--keepclasseswithmembers class io.netty.** {
- *;
-}
+-keep class io.netty.** {*;}
+-keep class org.apache.** {*;}
+-keep class org.apache.logging.**{*;}
+-keepclasseswithmembers class io.netty.** {*;}
+-keepclasseswithmembers class org.apache.logging.**{*;}
+-keep class org.apache.http.**{*;}
-dontwarn io.netty.**
-dontwarn sun.**
@@ -354,8 +357,17 @@
-keep class com.zhidao.autopilot.support.**{*;}
-keep class com.zhidao.voice.library.**{*;}
-keep class com.zhidao.voicesdk.**{*;}
+-keep class com.zhidao.smartv2x.**{*;}
+-keep class com.zhidao.accountsdk.**{*;}
+-keep class com.zhidao.account.**{*;}
+-keep class com.zhidao.locupload.**{*;}
+-keep class com.zhidao.tcloginsdk.**{*;}
+-keep class com.zhidao.utils.**{*;}
+-keep class com.hw.videoprocessor.**{*;}
-dontwarn com.elegant.network.**
+-keep class com.bytedance.boost_multidex.**{*;}
+
diff --git a/config.gradle b/config.gradle
index c0a81ac099..a9447d4a63 100644
--- a/config.gradle
+++ b/config.gradle
@@ -131,7 +131,7 @@ targetSdkVersion : 22,
jetbrainsannotationsjava5: "org.jetbrains:annotations-java5:15.0",
// 统一登录
- accountsdk : "com.zhidao.accountservice:account-sdk:1.0.8",
+ accountsdk : "com.zhidao.accountservice:account-sdk:1.0.11",
// crash
crashSdk : "com.zhidaoauto.crash.log:library:1.0.5",
kotlinstdlibjdk7 : "org.jetbrains.kotlin:kotlin-stdlib-jdk7",
diff --git a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java
index 2a23051695..ede1bc990e 100644
--- a/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java
+++ b/foudations/mogo-base-services-apk/src/main/java/com/mogo/base/services/passport/PassportManager.java
@@ -10,6 +10,7 @@ import com.mogo.service.passport.IMogoPassportManager;
import com.mogo.service.passport.IMogoTicketCallback;
import com.mogo.utils.logger.Logger;
import com.zhidao.account.sdk.AccountClientManager;
+import com.zhidao.account.sdk.Environment;
import com.zhidao.account.sdk.callback.TicketInfoCallback;
import com.zhidao.account.sdk.network.NetEnvironManager;
@@ -27,13 +28,14 @@ class PassportManager implements IMogoPassportManager {
private static volatile PassportManager sInstance;
- private PassportManager(){}
+ private PassportManager() {
+ }
@Keep
- public static PassportManager getInstance(){
- if( sInstance == null ){
- synchronized( PassportManager.class ) {
- if( sInstance == null ){
+ public static PassportManager getInstance() {
+ if ( sInstance == null ) {
+ synchronized ( PassportManager.class ) {
+ if ( sInstance == null ) {
sInstance = new PassportManager();
}
}
@@ -41,7 +43,7 @@ class PassportManager implements IMogoPassportManager {
return sInstance;
}
- public synchronized void release(){
+ public synchronized void release() {
sInstance = null;
}
@@ -77,11 +79,25 @@ class PassportManager implements IMogoPassportManager {
@Override
public void init( Context context ) {
+ AccountClientManager.init( context.getApplicationContext(), getNetEnvironment(), NetEnvironManager.OS_2C, "os2.0-launcher" );
+ }
+
+ private Environment getNetEnvironment() {
int mode = DebugConfig.getNetMode();
if ( mode == DebugConfig.NET_MODE_DEMO ) {
// 演示环境用 qa 的
mode = DebugConfig.NET_MODE_QA;
}
- AccountClientManager.init( context.getApplicationContext(), mode, NetEnvironManager.OS_2C, "os2.0-launcher" );
+ switch ( mode ) {
+ case DebugConfig.NET_MODE_DEV:
+ return Environment.dev;
+ case DebugConfig.NET_MODE_DEMO:
+ case DebugConfig.NET_MODE_QA:
+ return Environment.qa;
+ case DebugConfig.NET_MODE_RELEASE:
+ default:
+ return Environment.release;
+
+ }
}
}
diff --git a/foudations/mogo-base-services-sdk/build.gradle b/foudations/mogo-base-services-sdk/build.gradle
index 7237542631..6a9ad088e4 100644
--- a/foudations/mogo-base-services-sdk/build.gradle
+++ b/foudations/mogo-base-services-sdk/build.gradle
@@ -34,7 +34,7 @@ dependencies {
// 长链
implementation 'com.zhidao.socket:built-in-socket:1.0.15'
// passport
- implementation 'com.zhidao.tcloginsdk:tclogin:1.1.0'
+ implementation 'com.zhidao.tcloginsdk:tclogin:1.1.3'
annotationProcessor 'com.elegant.spi:compiler:1.0.3'
diff --git a/gradle.properties b/gradle.properties
index bd95a0fa2d..a9638dd04e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -64,7 +64,7 @@ MAP_CUSTOM_VERSION=1.2.1.9
## 工程外部模块
# 探路
-MOGO_MODULE_TANLU_VERSION=1.3.1.16
+MOGO_MODULE_TANLU_VERSION=1.3.1.20
# 车聊聊
CARCHATTING_VERSION=1.4.8
# 车聊聊接口
@@ -76,13 +76,13 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT
# 在线车辆F
MOGO_MODULE_ONLINECAR_VERSION=1.0.3.2
# 推送
-MOGO_MODULE_PUSH_VERSION=1.1.5.7
+MOGO_MODULE_PUSH_VERSION=1.1.6
MOGO_MODULE_PUSH_BASE_VERSION=1.1.5.5
MOGO_MODULE_PUSH_NOOP_VERSION=1.1.5.6
# 广告资源位
MOGO_MODULE_AD_CARD_VERSION=1.0.1
# 探路上报和分享模块
-TANLULIB_VERSION=1.3.1.16
+TANLULIB_VERSION=1.3.1.20
MOGO_MODULE_EVENT_PANEL_VERSION = 1.0.0-SNAPSHOT
MOGO_MODULE_EVENT_PANEL_NOOP_VERSION = 1.0.0-SNAPSHOT
#左侧面板模块
@@ -101,8 +101,8 @@ MOGO_MODULE_OBU_VERSION = 1.2.1.10-SNAPSHOT
MOGO_MODULE_SPLASH_VERSION = 1.0.0-SNAPSHOT
MOGO_MODULE_SPLASH_NOOP_VERSION = 1.0.0-SNAPSHOT
-## 产品库必备配置
+## 产品库必备配置,产品库自动对versionCode和versionName版本进行升级
applicationId=com.mogo.launcer
applicationName=IntelligentPilot
versionCode=80007
-versionName=8.0.7-qa_1.1
\ No newline at end of file
+versionName=8.0.7
\ No newline at end of file
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java
index fbaae3255b..1adc5272ea 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java
@@ -129,6 +129,11 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent
overridePendingTransition( R.anim.module_apps_anim_enter, R.anim.module_apps_anim_exit );
}
+ @Override
+ public void executeFinish() {
+ finish();
+ }
+
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java
index caf44c1c72..0ad09a3b10 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java
@@ -13,6 +13,7 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
+import com.mogo.utils.logger.Logger;
import org.json.JSONException;
import org.json.JSONObject;
@@ -38,6 +39,7 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog
super.onCreate( owner );
mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() );
mIntentManager.registerIntentListener( AppsConst.COMMAND_OPERATION, this );
+ mIntentManager.registerIntentListener( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this );
AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_CLOSE_APP_LIST, this );
}
@@ -56,6 +58,9 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog
} catch ( JSONException e ) {
e.printStackTrace();
}
+ } else if ( Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals( intentStr ) ) {
+ Logger.d( TAG, "home 键导致 app 列表关闭" );
+ mView.executeFinish();
}
}
@@ -90,6 +95,7 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
mIntentManager.unregisterIntentListener( AppsConst.COMMAND_OPERATION, this );
+ mIntentManager.unregisterIntentListener( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST );
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java
index d3ec317ed7..ee38e7c05d 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListView.java
@@ -11,4 +11,6 @@ import com.mogo.commons.mvp.IView;
public interface AppsListView extends IView {
void closeAppsPanel();
+
+ void executeFinish();
}
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 177aa0c2a8..9359557453 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
@@ -662,4 +662,21 @@ public class TopViewAnimHelper {
tvTurnInfo.setVisibility(visibility);
}
+
+ public void removeAllView(){
+ Logger.d(TAG, "remove all view");
+ isTopViewOut = true;
+ int lastCount = topContainer.getChildCount();
+ for (int i = 0; i < lastCount; i++) {
+ View child = topContainer.getChildAt(i);
+ viewCaches.remove(child);
+ IMogoTopViewStatusListener listener = statusListenerMap.remove(child);
+ if (listener != null) {
+ listener.onViewRemoved(child);
+ }
+ }
+ topContainer.removeAllViews();
+ hideNaviView();
+ MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, Scene.AIMLESS);
+ }
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java
index 29a161821c..c5f4d77e80 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewManager.java
@@ -6,8 +6,12 @@ import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.extensions.R;
+import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.windowview.IMogoTopViewManager;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
@@ -21,10 +25,18 @@ public class TopViewManager implements IMogoTopViewManager {
private Context context;
private LayoutParams parentParams;
+ private IMogoServiceApis serviceApis;
@Override
public void init(Context context) {
this.context = context;
+ serviceApis =
+ (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
+ serviceApis.getStatusManagerApi().registerStatusChangedListener(MogoServicePaths.PATH_EXTENSIONS_TOP_VIEW_MANAGER, StatusDescriptor.MAIN_PAGE_RESUME, (descriptor, isTrue) -> {
+ if (!isTrue) {
+ TopViewAnimHelper.getInstance().removeAllView();
+ }
+ });
}
@Override
diff --git a/modules/mogo-module-extensions/src/main/res/values/strings.xml b/modules/mogo-module-extensions/src/main/res/values/strings.xml
index def8fbcd0e..bcfcbae52f 100644
--- a/modules/mogo-module-extensions/src/main/res/values/strings.xml
+++ b/modules/mogo-module-extensions/src/main/res/values/strings.xml
@@ -13,7 +13,7 @@
+ * 语音控制地图 + */ +class MapControlCommandHandler { + + private static final String TAG = "CustomVoiceCommandHandler"; + + private OnMapControlCallback mCallback; + + public void setCallback( OnMapControlCallback mCallback ) { + this.mCallback = mCallback; + } + + public void handleVoiceCommand( String cmd ) { + Logger.d( TAG, cmd ); + switch ( cmd ) { + case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_TRAFFIC_MODE: + mCallback.onTrafficModeChanged( true ); + break; + case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE: + mCallback.onTrafficModeChanged( false ); + break; + case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP: + case VoiceConstants.CMD_MAP_ZOOM_IN: + mCallback.onZoomMap( true ); + break; + case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP: + case VoiceConstants.CMD_MAP_ZOOM_OUT: + mCallback.onZoomMap( false ); + break; + case VoiceConstants.CMD_MAP_2D_UN_WAKEUP: + case VoiceConstants.CMD_MAP_2D: + case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_NORTH_UP_MODE: + mCallback.onCameraModeChanged( EnumMapUI.NorthUP_2D ); + break; + case VoiceConstants.CMD_MAP_3D_UN_WAKEUP: + case VoiceConstants.CMD_MAP_3D: + mCallback.onCameraModeChanged( EnumMapUI.CarUp_3D ); + break; + case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_DAY_TIME_MODE: + mCallback.onDayNightModeChanged( EnumMapUI.Type_Light ); + break; + case VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP: + case VoiceConstants.CMD_MAP_HISTORY: + mCallback.onOpenNavi(); + break; + case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_STOP_NAVI_MODE: + break; + case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_NIGHT_MODE: + mCallback.onDayNightModeChanged( EnumMapUI.Type_Night ); + break; + case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE: + mCallback.onDayNightModeChanged( EnumMapUI.Type_AUTO_LIGHT_Night ); + break; + case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE: + mCallback.onDisplayOverview(); + break; + case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE: + mCallback.onContinueNavi(); + break; + case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP: + case VoiceConstants.CMD_MAP_CAR_UP_MODE: + mCallback.onCameraModeChanged( EnumMapUI.CarUp_2D ); + break; + case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE: + case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP: + break; + case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE: + case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP: + break; + case VoiceConstants.CMD_MAP_SPEAK_REMAIN: + break; + default: + break; + + } + } +} diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java index 9a51a52573..a563efc7da 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java @@ -39,9 +39,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements @Override protected void initViews() { - //mMogoMapView = findViewById( R.id.module_map_id_map ); - //mMogoMap = mMogoMapView.getMap(); - //mMogoMap.getUIController().showMyLocation( true ); } @Override @@ -63,9 +60,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements @Override public void onActivityCreated( @Nullable Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); - //if ( mMogoMapView != null ) { - // mMogoMapView.onCreate( savedInstanceState ); - //} initMapView(); } @@ -125,7 +119,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements uiSettings.setZoomControlsEnabled( false ); //设置双指缩放手势是否可用。 uiSettings.setZoomGesturesEnabled( true ); - mMogoMap.getUIController().changeMapMode(EnumMapUI.NorthUP_2D); + mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); } } } diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index 0812fb9e2e..f72c5dea25 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -1,16 +1,12 @@ package com.mogo.module.map; import android.app.ActivityManager; -import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.graphics.Rect; import android.text.TextUtils; import androidx.annotation.NonNull; -import androidx.annotation.UiThread; import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; @@ -34,10 +30,8 @@ import com.mogo.service.launcher.IMogoLauncher; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; -import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; -import com.mogo.utils.AppUtils; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -54,10 +48,10 @@ import java.util.Map; public class MapPresenter extends Presenter< MapView > implements IMogoIntentListener, IMogoVoiceCmdCallBack, - IMogoNaviListener2 { + IMogoNaviListener2, + OnMapControlCallback { private static final String TAG = "MapPresenter"; - private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV"; private IMogoMapService mMogoMapService; private IMogoIntentManager mMogoIntentManager; private IMogoSearchManager mSearchManager; @@ -66,7 +60,6 @@ public class MapPresenter extends Presenter< MapView > implements private IMogoRegisterCenter mRegisterCenter; private IMogoLauncher mLauncher; private IMogoSearchManager mMogoSearchManager; - private IMogoSettingManager mSettingManager; private Rect mDisplayOverviewBounds; @@ -80,114 +73,112 @@ public class MapPresenter extends Presenter< MapView > implements mView.getUIController().recoverLockMode(); } }; + private AutoNaviBroadcastReceiver mAutoNaviReceiver; + private MapControlCommandHandler mCustomVoiceCommandHandler; public MapPresenter( MapView view ) { super( view ); initBroadcast(); + mCustomVoiceCommandHandler = new MapControlCommandHandler(); + mCustomVoiceCommandHandler.setCallback( this ); } - private BroadcastReceiver broadcastReceiver; - /** * opera type为0:0 实时路况开;1实时路况关 type为1:0 放大地图; 1缩小地图 type为2:0切换2d车上; 1切换2d北上;2切换3d车上支持 */ private void initBroadcast() { - // 高德地图免唤醒 - broadcastReceiver = new BroadcastReceiver() { - @Override - public void onReceive( Context context, Intent intent ) { - String action = intent.getAction(); - Logger.d( TAG, "action = %s", action ); + mAutoNaviReceiver = new AutoNaviBroadcastReceiver(); + mAutoNaviReceiver.setCallback( this ); + mAutoNaviReceiver.register(); + } - if ( !TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_RECV ) ) { - return; + @Override + public void onTrafficModeChanged( boolean open ) { + mView.getUIController().setTrafficEnabled( open ); + } + + @Override + public void onCameraModeChanged( EnumMapUI mode ) { + mView.getUIController().changeMapMode( mode ); + } + + @Override + public void onDayNightModeChanged( EnumMapUI mode ) { + mView.getUIController().changeMapMode( mode ); + } + + @Override + public void onContinueNavi() { + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + return; + } + if ( mStatusManager.isMainPageOnResume() ) { + mStatusManager.setDisplayOverview( TAG, false ); + mView.getUIController().recoverLockMode(); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); + } else { + mLauncher.backToLauncher( getContext() ); + UiThreadHandler.postDelayed( () -> { + try { + mStatusManager.setDisplayOverview( TAG, false ); + mView.getUIController().recoverLockMode(); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" ); + UiThreadHandler.removeCallbacks( mLockCarRunnable ); + } catch ( Exception e ) { + e.printStackTrace(); } - int key_type = intent.getIntExtra( "KEY_TYPE", 0 ); - int type = intent.getIntExtra( "EXTRA_TYPE", -1 ); - int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 ); - Logger.d( TAG, "key_type" + key_type ); - if ( key_type == 10027 ) { - if ( type == 0 ) { - onChangeTrafficMode( opera_type ); - } else if ( type == 2 ) { - onChangeCameraMode( opera_type ); - } - } else if ( key_type == 10048 ) { - //0:自动; 1:白天; 2:黑夜; - int day_night_mode = intent.getIntExtra( "EXTRA_DAY_NIGHT_MODE", -1 ); - onChangeDayNightMode( day_night_mode ); - //继续导航 - } else if ( key_type == 10049 ) { - if ( CustomNaviInterrupter.getInstance().interrupt() ) { - return; - } - boolean extra_endurance_data = intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false ); - if ( extra_endurance_data ) { - onContinueNavigation(); - } - } else if ( key_type == 10006 ) { - // 避免冲突,会同时发送两个广播,这里不操作。 - //int extra_is_show = intent.getIntExtra( "EXTRA_IS_SHOW", 0 ); - //if ( extra_is_show == 0 ) { - // onDisplayOverview(); - //} else { - // onContinueNavigation(); - //} - } else if ( key_type == 10005 ) { - int navi_route_prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", type ); - } else if ( key_type == 20009 ) { - if ( CustomNaviInterrupter.getInstance().interrupt() ) { - return; - } - onOpenNavi(); - } else if ( key_type == 10038 || key_type == 10007 ) { - if ( CustomNaviInterrupter.getInstance().interrupt() ) { - return; - } + }, 2_000L ); + } + } + + @Override + public void onOpenNavi() { + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + return; + } + mLauncher.backToLauncher( getContext() ); + if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) { + mSearchManager.showSearch(); + } + AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" ); + } + + @Override + public void onCalculatePath( double lon, double lat ) { + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + return; + } + mLauncher.backToLauncher( getContext() ); + mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) ); + } + + @Override + public void onStopNaviInternal( Intent intent ) { + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + // 导航过程中语音指令退出导航,会出现 activity 不走 onResume 的情况 + UiThreadHandler.postDelayed( () -> { + if ( isForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) { mLauncher.backToLauncher( getContext() ); - onChoosePath( intent, key_type ); - } else if ( key_type == 10021 ) { - if ( CustomNaviInterrupter.getInstance().interrupt() ) { - // 导航过程中语音指令退出导航,会出现 activity 不走 onResume 的情况 - UiThreadHandler.postDelayed( () -> { - if ( isForeground( getContext() ) && !hasOthersActivity() && !mStatusManager.isMainPageOnResume() ) { - mLauncher.backToLauncher( getContext() ); - } - }, 500L ); - mMogoIntentManager.invoke( AUTONAVI_STANDARD_BROADCAST_RECV, intent ); - return; - } - onStopNaviInternal(); - } else if ( key_type == 10005 ) { - // 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。 - // 避免收费 | 1 - // 多策略算路 | 2 - // 不走高速 | 3 - // 躲避拥堵 | 4 - // 不走高速且避免收费 | 5 - // 不走高速且躲避拥堵 | 6 - // 躲避收费和拥堵 | 7 - // 不走高速躲避收费和拥堵 | 8 - // 高速优先 | 20 - // 躲避拥堵且高速优先 | 24 - if ( CustomNaviInterrupter.getInstance().interrupt() ) { - return; - } - int prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", 0 ); - MogoNaviConfig config = new MogoNaviConfig().congestion( prefer == 4 ) - .cost( prefer == 1 || prefer == 7 ) - .highSpeed( prefer == 20 ) - .avoidSpeed( prefer == 3 ); - mMogoMapService.getNavi( getContext() ).reCalculateRoute( config ); - } - mMogoIntentManager.invoke( AUTONAVI_STANDARD_BROADCAST_RECV, intent ); - } - }; + }, 500L ); + onEnd( intent ); + return; + } + mMogoMapService.getNavi( getContext() ).stopNavi(); + } - IntentFilter inputFilter = new IntentFilter(); - inputFilter.addAction( AUTONAVI_STANDARD_BROADCAST_RECV ); - getContext().registerReceiver( broadcastReceiver, inputFilter ); + @Override + public void onReCalculatePath( MogoNaviConfig config ) { + if ( CustomNaviInterrupter.getInstance().interrupt() ) { + return; + } + mMogoMapService.getNavi( getContext() ).reCalculateRoute( config ); + } + + @Override + public void onEnd( Intent intent ) { + mMogoIntentManager.invoke( AutoNaviBroadcastReceiver.AUTONAVI_STANDARD_BROADCAST_RECV, intent ); } private boolean isForeground( Context context ) { @@ -218,91 +209,8 @@ public class MapPresenter extends Presenter< MapView > implements return true; } - /** - * 切换交通态势模式 - * - * @param mode - */ - private void onChangeTrafficMode( int mode ) { - mView.getUIController().setTrafficEnabled( mode == 0 ); - } - - /** - * 切换地图视图朝向模式 - */ - private void onChangeCameraMode( int mode ) { - if ( mode == 0 ) { - mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); - } else if ( mode == 1 ) { - mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); - } else if ( mode == 2 ) { - mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); - } - } - - /** - * 切换白天黑夜模式 - * - * @param mode - */ - private void onChangeDayNightMode( int mode ) { - if ( mode == 0 ) { - mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night ); - } else if ( mode == 1 ) { - mView.getUIController().changeMapMode( EnumMapUI.Type_Light ); - } else if ( mode == 2 ) { - mView.getUIController().changeMapMode( EnumMapUI.Type_Night ); - } - } - - private void onStopNaviInternal() { - mMogoMapService.getNavi( getContext() ).stopNavi(); - } - - - /** - * 唤醒指令导航去哪里 - */ - private void onChoosePath( Intent intent, int type ) { - double lat; - double lon; - - if ( type == 10007 ) { - lat = intent.getDoubleExtra( "ENTRY_LAT", 0.0 ); - lon = intent.getDoubleExtra( "ENTRY_LON", 0.0 ); - } else { - lat = intent.getDoubleExtra( "LAT", 0.0 ); - lon = intent.getDoubleExtra( "LON", 0.0 ); - } - mMogoSearchManager.calculatePath( new MogoLatLng( lat, lon ) ); - } - - /** - * 继续导航 - */ - private void onContinueNavigation() { - - if ( mStatusManager.isMainPageOnResume() ) { - mStatusManager.setDisplayOverview( TAG, false ); - mView.getUIController().recoverLockMode(); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" ); - UiThreadHandler.removeCallbacks( mLockCarRunnable ); - } else { - mLauncher.backToLauncher( getContext() ); - UiThreadHandler.postDelayed( () -> { - try { - mStatusManager.setDisplayOverview( TAG, false ); - mView.getUIController().recoverLockMode(); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" ); - UiThreadHandler.removeCallbacks( mLockCarRunnable ); - } catch ( Exception e ) { - e.printStackTrace(); - } - }, 2_000L ); - } - } - - private void onDisplayOverview() { + @Override + public void onDisplayOverview() { if ( !mMogoMapService.getNavi( getContext() ).isNaviing() ) { Logger.d( TAG, "未开始导航." ); return; @@ -329,7 +237,8 @@ public class MapPresenter extends Presenter< MapView > implements UiThreadHandler.postDelayed( mLockCarRunnable, 20_000 ); } - private void zoomMap( boolean zoomIn ) { + @Override + public void onZoomMap( boolean zoomIn ) { boolean isLocked = mMogoMapService.getMapUIController().isCarLocked(); MapControlResult result = mView.getUIController().changeZoom( zoomIn ); if ( !CustomNaviInterrupter.getInstance().interrupt() ) { @@ -356,14 +265,6 @@ public class MapPresenter extends Presenter< MapView > implements } } - private void onOpenNavi() { - mLauncher.backToLauncher( getContext() ); - if ( !mMogoMapService.getNavi( getContext() ).isNaviing() && !mStatusManager.isSearchUIShow() ) { - mSearchManager.showSearch(); - } - AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开" ); - } - @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); @@ -378,7 +279,6 @@ public class MapPresenter extends Presenter< MapView > implements mRegisterCenter.registerMogoNaviListener( TAG, this ); mLauncher = apis.getLauncherApi(); mMogoSearchManager = apis.getSearchManagerApi(); - mSettingManager = apis.getSettingManagerApi(); IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); mogoNavi.setCalculatePathDisplayBounds( new Rect( @@ -416,8 +316,8 @@ public class MapPresenter extends Presenter< MapView > implements @Override public void onDestroy( @NonNull LifecycleOwner owner ) { super.onDestroy( owner ); - if ( broadcastReceiver != null ) { - getContext().unregisterReceiver( broadcastReceiver ); + if ( mAutoNaviReceiver != null ) { + mAutoNaviReceiver.unregister(); } } @@ -454,82 +354,7 @@ public class MapPresenter extends Presenter< MapView > implements @Override public void onCmdSelected( String cmd ) { Logger.d( TAG, cmd ); - switch ( cmd ) { - case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_TRAFFIC_MODE: - mView.getUIController().setTrafficEnabled( true ); - break; - case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE: - mView.getUIController().setTrafficEnabled( false ); - break; - case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP: - case VoiceConstants.CMD_MAP_ZOOM_IN: - zoomMap( true ); - break; - case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP: - case VoiceConstants.CMD_MAP_ZOOM_OUT: - zoomMap( false ); - break; - case VoiceConstants.CMD_MAP_2D_UN_WAKEUP: - case VoiceConstants.CMD_MAP_2D: - case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_NORTH_UP_MODE: - mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); - break; - case VoiceConstants.CMD_MAP_3D_UN_WAKEUP: - case VoiceConstants.CMD_MAP_3D: - mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); - break; - case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_DAY_TIME_MODE: - mView.getUIController().changeMapMode( EnumMapUI.Type_Light ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); - break; - case VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP: - case VoiceConstants.CMD_MAP_HISTORY: - onOpenNavi(); - break; - case VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_STOP_NAVI_MODE: - mLauncher.backToLauncher( getContext() ); - break; - case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_NIGHT_MODE: - mView.getUIController().changeMapMode( EnumMapUI.Type_Night ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); - break; - case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE: - mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); - break; - case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE: - onDisplayOverview(); - break; - case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE: - onContinueNavigation(); - break; - case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP: - case VoiceConstants.CMD_MAP_CAR_UP_MODE: - mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); - break; - case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE: - case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP: - mSettingManager.speakDraft(); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); - break; - case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE: - case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP: - mSettingManager.speakDetail(); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); - break; - case VoiceConstants.CMD_MAP_SPEAK_REMAIN: - break; - default: - break; - } + mCustomVoiceCommandHandler.handleVoiceCommand( cmd ); } @Override diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java new file mode 100644 index 0000000000..d0d074da5e --- /dev/null +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/OnMapControlCallback.java @@ -0,0 +1,42 @@ +package com.mogo.module.map; + +import android.content.Intent; + +import com.mogo.map.navi.MogoNaviConfig; +import com.mogo.map.uicontroller.EnumMapUI; + +public interface OnMapControlCallback { + + // 交通态势 + void onTrafficModeChanged( boolean open ); + + // 2d、3d模式切换、正北、车头 + void onCameraModeChanged( EnumMapUI mode); + + // 白天、黑夜模式切换 + void onDayNightModeChanged( EnumMapUI mode ); + + // 继续导航 + void onContinueNavi(); + + // 打开导航 + void onOpenNavi(); + + // 开始路径规划 + void onCalculatePath( double lon, double lat ); + + // 调用停止导航方法 + void onStopNaviInternal( Intent intent ); + + // 重新规划路线 + void onReCalculatePath( MogoNaviConfig config ); + + // 结束 + void onEnd( Intent intent ); + + // 查看全程 + void onDisplayOverview(); + + // 缩放地图 + void onZoomMap( boolean zoomIn ); +} \ No newline at end of file