+ * 语音控制地图
+ */
+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
diff --git a/modules/mogo-module-push-base/.gitignore b/modules/mogo-module-push-base/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/modules/mogo-module-push-base/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/modules/mogo-module-push-base/build.gradle b/modules/mogo-module-push-base/build.gradle
new file mode 100644
index 0000000000..3f5839e3b9
--- /dev/null
+++ b/modules/mogo-module-push-base/build.gradle
@@ -0,0 +1,47 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ buildToolsVersion rootProject.ext.android.buildToolsVersion
+
+
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ kapt {
+ arguments {
+ arg("AROUTER_MODULE_NAME", project.getName())
+ }
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ targetCompatibility 1.8
+ sourceCompatibility 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-push-base/consumer-rules.pro b/modules/mogo-module-push-base/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/mogo-module-push-base/gradle.properties b/modules/mogo-module-push-base/gradle.properties
new file mode 100644
index 0000000000..653f4713ca
--- /dev/null
+++ b/modules/mogo-module-push-base/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.module
+POM_ARTIFACT_ID=module-push-base
+VERSION_CODE=1
diff --git a/modules/mogo-module-push-base/proguard-rules.pro b/modules/mogo-module-push-base/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/modules/mogo-module-push-base/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/modules/mogo-module-push-base/src/main/AndroidManifest.xml b/modules/mogo-module-push-base/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..9a8574da7b
--- /dev/null
+++ b/modules/mogo-module-push-base/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+