This commit is contained in:
wangcongtao
2020-10-26 14:52:23 +08:00
parent e3f303c2ca
commit 8cc40f1d79
18 changed files with 294 additions and 112 deletions

View File

@@ -1,6 +1,7 @@
package com.mogo.module.map;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.utils.logger.Logger;
public
@@ -86,6 +87,12 @@ class MapControlCommandHandler {
break;
case VoiceConstants.CMD_MAP_SPEAK_REMAIN:
break;
case VoiceConstants.CMD_MAP_OPEN_VR_UN_WAKEUP:
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().changeToVRMode();
break;
case VoiceConstants.CMD_MAP_CLOSE_VR_UN_WAKEUP:
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().changeTo2dMode();
break;
default:
break;

View File

@@ -14,6 +14,7 @@ import com.mogo.map.MogoMapView;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoMapFrameController;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
@@ -55,15 +56,45 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
@Override
public void changeTo2dMode() {
if ( !isVrMode() ) {
return;
}
mMogoMapView.display2DMap( false, true );
afterMapModeChanged();
MogoApisHandler.getInstance().getApis().getAdasControllerApi().showADAS();
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false );
}
@Override
public void changeToVRMode() {
if ( isVrMode() ) {
return;
}
mMogoMapView.displayVRMap( mIsFirstLoadCustomMap, true );
if ( mIsFirstLoadCustomMap ) {
initMapView();
mMogoMap = mMogoMapView.getMap();
if ( mMogoMap.getUIController() != null ) {
mMogoMap.getUIController().showMyLocation( true );
mMogoMap.getUIController().recoverLockMode();// 启动锁车
}
mIsFirstLoadCustomMap = false;
}
afterMapModeChanged();
MogoApisHandler.getInstance().getApis().getAdasControllerApi().closeADAS();
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true );
}
private void afterMapModeChanged() {
MapCenterPointStrategy.resetByChangeMode();
final EnumMapUI mapUI = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getCurrentSkinMode();
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().changeMapMode( mapUI );
MogoApisHandler.getInstance().getApis().getRefreshStrategyControllerApi().restartAutoRefreshAtTime( 0 );
}
@Override
public boolean isVrMode() {
return mMogoMapView.isVrMode();
}
@Override
@@ -137,32 +168,34 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
}
private void initMapView() {
if ( mMogoMap != null ) {
IMogoUiSettings uiSettings = mMogoMap.getUiSettings();
if ( uiSettings != null ) {
//设置所有手势是否可用
uiSettings.setAllGesturesEnabled( true );
//设置指南针是否可见。
uiSettings.setCompassEnabled( false );
//设置室内地图楼层切换控件是否可见。
uiSettings.setIndoorSwitchEnabled( true );
//设置定位按钮是否可见。
uiSettings.setMyLocationButtonEnabled( false );
//设置旋转手势是否可用。
uiSettings.setRotateGesturesEnabled( false );
//设置比例尺控件是否可见
uiSettings.setScaleControlsEnabled( true );
//设置拖拽手势是否可用。
uiSettings.setScrollGesturesEnabled( true );
//设置倾斜手势是否可用。
uiSettings.setTiltGesturesEnabled( true );
//设置缩放按钮是否可见。
uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true );
if ( mMogoMap.getUIController() != null ) {
mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
}
mMogoMap = mMogoMapView.getMap();
if ( mMogoMap == null ) {
return;
}
IMogoUiSettings uiSettings = mMogoMap.getUiSettings();
if ( uiSettings != null ) {
//设置所有手势是否可用
uiSettings.setAllGesturesEnabled( true );
//设置指南针是否可见。
uiSettings.setCompassEnabled( false );
//设置室内地图楼层切换控件是否可见。
uiSettings.setIndoorSwitchEnabled( true );
//设置定位按钮是否可见。
uiSettings.setMyLocationButtonEnabled( false );
//设置旋转手势是否可用。
uiSettings.setRotateGesturesEnabled( false );
//设置比例尺控件是否可见
uiSettings.setScaleControlsEnabled( true );
//设置拖拽手势是否可用。
uiSettings.setScrollGesturesEnabled( true );
//设置倾斜手势是否可用。
uiSettings.setTiltGesturesEnabled( true );
//设置缩放按钮是否可见。
uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true );
if ( mMogoMap.getUIController() != null ) {
mMogoMap.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
}
}
}
@@ -172,11 +205,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().destroy();
}
@Override
public IMogoMapUIController getUIController() {
return mMogoMap.getUIController();
}
@Override
public void onDestroyView() {
super.onDestroyView();

View File

@@ -44,6 +44,14 @@ class MapFrameController implements IMogoMapFrameController {
}
@Override
public boolean isVrMode() {
if ( mController != null ) {
return mController.isVrMode();
}
return false;
}
@Override
public void destroy() {
mController = null;

View File

@@ -73,7 +73,7 @@ public class MapPresenter extends Presenter< MapView > implements
return;
}
mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
mMogoMapService.getMapUIController().recoverLockMode();
}
};
private AutoNaviBroadcastIntentHandler mAutoNaviReceiver;
@@ -86,24 +86,24 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onTrafficModeChanged( boolean open ) {
mView.getUIController().setTrafficEnabled( open );
mMogoMapService.getMapUIController().setTrafficEnabled( open );
}
@Override
public void onCameraModeChanged( EnumMapUI mode ) {
mView.getUIController().changeMapMode( mode );
mMogoMapService.getMapUIController().changeMapMode( mode );
mApis.getAdasControllerApi().changeAdasControlMode( mode );
}
@Override
public void onDayNightModeChanged( EnumMapUI mode ) {
mView.getUIController().changeMapMode( mode );
mMogoMapService.getMapUIController().changeMapMode( mode );
mApis.getAdasControllerApi().changeAdasControlMode( mode );
}
@Override
public void onMapUiModeChanged( EnumMapUI mapUI ) {
mView.getUIController().changeMapMode( mapUI );
mMogoMapService.getMapUIController().changeMapMode( mapUI );
}
@Override
@@ -113,7 +113,7 @@ public class MapPresenter extends Presenter< MapView > implements
}
if ( mStatusManager.isMainPageOnResume() ) {
mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
mMogoMapService.getMapUIController().recoverLockMode();
AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" );
UiThreadHandler.removeCallbacks( mLockCarRunnable );
} else {
@@ -121,7 +121,7 @@ public class MapPresenter extends Presenter< MapView > implements
UiThreadHandler.postDelayed( () -> {
try {
mStatusManager.setDisplayOverview( TAG, false );
mView.getUIController().recoverLockMode();
mMogoMapService.getMapUIController().recoverLockMode();
AIAssist.getInstance( getContext() ).speakTTSVoice( "已为您继续导航" );
UiThreadHandler.removeCallbacks( mLockCarRunnable );
} catch ( Exception e ) {
@@ -200,14 +200,14 @@ public class MapPresenter extends Presenter< MapView > implements
if ( !mStatusManager.isMainPageOnResume() ) {
mStatusManager.setUserInteractionStatus( TAG, true, false );
mStatusManager.setDisplayOverview( TAG, true );
mView.getUIController().displayOverview( mDisplayOverviewBounds );
mMogoMapService.getMapUIController().displayOverview( mDisplayOverviewBounds );
AIAssist.getInstance( getContext() ).speakTTSVoice( "展示全程路线" );
} else {
mLauncher.backToLauncher( getContext() );
UiThreadHandler.postDelayed( () -> {
mStatusManager.setUserInteractionStatus( TAG, true, false );
mStatusManager.setDisplayOverview( TAG, true );
mView.getUIController().displayOverview( mDisplayOverviewBounds );
mMogoMapService.getMapUIController().displayOverview( mDisplayOverviewBounds );
AIAssist.getInstance( getContext() ).speakTTSVoice( "展示全程路线" );
}, 2_000L );
}
@@ -218,7 +218,7 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onZoomMap( boolean zoomIn ) {
boolean isLocked = mMogoMapService.getMapUIController().isCarLocked();
MapControlResult result = mView.getUIController().changeZoom( zoomIn );
MapControlResult result = mMogoMapService.getMapUIController().changeZoom( zoomIn );
if ( !CustomNaviInterrupter.getInstance().interrupt() ) {
if ( result == MapControlResult.TARGET ) {
UiThreadHandler.postDelayed( () -> {
@@ -234,7 +234,7 @@ public class MapPresenter extends Presenter< MapView > implements
if ( isLocked ) {
// 保持锁车状态
UiThreadHandler.postDelayed( () -> {
mView.getUIController().setLockZoom( ( ( int ) mMogoMapService.getMapUIController().getZoomLevel() ) );
mMogoMapService.getMapUIController().setLockZoom( ( ( int ) mMogoMapService.getMapUIController().getZoomLevel() ) );
mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车
}, 1_000 );
} else {

View File

@@ -10,11 +10,4 @@ import com.mogo.map.uicontroller.IMogoMapUIController;
* 地图view
*/
public interface MapView extends IView {
/**
* 地图控制接口
*
* @return
*/
IMogoMapUIController getUIController();
}

View File

@@ -57,6 +57,20 @@ public class VoiceConstants {
public static final String CMD_MAP_2D_UN_WAKEUP = "CMD_MAP_2D_UN_WAKEUP";
public static final String[] CMD_MAP_2D_TRIGGER_WORDS = {"二地模式"};
/**
* 打开vr
*/
public static final String CMD_MAP_OPEN_VR = "com.ileja.navi.mode.vr.open";
public static final String CMD_MAP_OPEN_VR_UN_WAKEUP = "CMD_MAP_OPEN_VR_UN_WAKEUP";
public static final String[] CMD_MAP_OPEN_VR_TRIGGER_WORDS = {"打开VR模式", "VR模式", "切换到VR模式"};
/**
* 关闭vr
*/
public static final String CMD_MAP_CLOSE_VR = "com.ileja.navi.mode.vr.close";
public static final String CMD_MAP_CLOSE_VR_UN_WAKEUP = "CMD_MAP_CLOSE_VR_UN_WAKEUP";
public static final String[] CMD_MAP_CLOSE_VR_TRIGGER_WORDS = {"关闭VR模式", "切换到地图模式"};
/**
* 3D模式
*/
@@ -191,6 +205,8 @@ public class VoiceConstants {
sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_OPEN_VR_UN_WAKEUP, VoiceConstants.CMD_MAP_OPEN_VR_TRIGGER_WORDS );
sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_CLOSE_VR_UN_WAKEUP, VoiceConstants.CMD_MAP_CLOSE_VR_TRIGGER_WORDS );
// 唤醒
sCmds.add( VoiceConstants.CMD_MAP_ZOOM_IN );