This commit is contained in:
wangcongtao
2020-01-13 21:40:48 +08:00
16 changed files with 318 additions and 112 deletions

View File

@@ -15,6 +15,7 @@ import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.voice.IMogoVoiceListener;
import com.mogo.service.voice.IMogoVoiceManager;
import com.mogo.utils.ResourcesHelper;
@@ -29,49 +30,60 @@ import java.util.Map;
* <p>
* 描述
*/
public class MapPresenter extends Presenter< MapView > implements IMogoVoiceListener, IMogoVoiceCmdCallBack {
public class MapPresenter extends Presenter<MapView>
implements IMogoVoiceListener, IMogoVoiceCmdCallBack {
private static final String TAG = "MapPresenter";
private IMogoMapService mMogoMapService;
private IMogoVoiceManager mMogoVoiceManager;
private IMogoSearchManager mSearchManager;
public MapPresenter( MapView view ) {
super( view );
public MapPresenter(MapView view) {
super(view);
}
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( getContext() );
mMogoVoiceManager = ( IMogoVoiceManager ) ARouter.getInstance().build( MogoServicePaths.PATH_VOICE_MANAGER ).navigation( getContext() );
public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner);
mMogoMapService = (IMogoMapService) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_MAP)
.navigation(getContext());
mMogoVoiceManager = (IMogoVoiceManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_VOICE_MANAGER)
.navigation(getContext());
mSearchManager = (IMogoSearchManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_SEARCH_MANAGER)
.navigation(getContext());
registerVoiceCmd();
IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() );
mogoNavi.setCalculatePathDisplayBounds( new Rect(
ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.dp_730 ) + WindowUtils.dip2px( getContext(), 80 ),
ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.dp_120 ) + WindowUtils.dip2px( getContext(), 80 ),
WindowUtils.dip2px( getContext(), 80 ),
WindowUtils.dip2px( getContext(), 80 )
) );
IMogoNavi mogoNavi = mMogoMapService.getNavi(getContext());
mogoNavi.setCalculatePathDisplayBounds(new Rect(
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.dp_730)
+ WindowUtils.dip2px(getContext(), 80),
ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.dp_120)
+ WindowUtils.dip2px(getContext(), 80),
WindowUtils.dip2px(getContext(), 80),
WindowUtils.dip2px(getContext(), 80)
));
}
@Override
public void onResume( @NonNull LifecycleOwner owner ) {
super.onResume( owner );
public void onResume(@NonNull LifecycleOwner owner) {
super.onResume(owner);
registerVoiceCmd();
}
@Override
public void onPause( @NonNull LifecycleOwner owner ) {
super.onPause( owner );
public void onPause(@NonNull LifecycleOwner owner) {
super.onPause(owner);
unregisterVoiceCmd();
}
private void registerVoiceCmd() {
if ( VoiceConstants.sVoiceCmds.isEmpty() ) {
Logger.w( TAG, "no unwakeup words" );
if (VoiceConstants.sVoiceCmds.isEmpty()) {
Logger.w(TAG, "no unwakeup words");
return;
}
@@ -82,8 +94,8 @@ public class MapPresenter extends Presenter< MapView > implements IMogoVoiceList
}
private void unregisterVoiceCmd() {
if ( VoiceConstants.sVoiceCmds.isEmpty() ) {
Logger.w( TAG, "no unwakeup words" );
if (VoiceConstants.sVoiceCmds.isEmpty()) {
Logger.w(TAG, "no unwakeup words");
return;
}
@@ -94,23 +106,25 @@ public class MapPresenter extends Presenter< MapView > implements IMogoVoiceList
}
@Override
public void onIntentReceived( String command, Intent intent ) {
if ( TextUtils.isEmpty( command ) ) {
public void onIntentReceived(String command, Intent intent) {
if (TextUtils.isEmpty(command)) {
return;
}
onCmdSelected( command );
onCmdSelected(command);
}
@Override
public void onCmdSelected( String cmd ) {
switch ( cmd ) {
public void onCmdSelected(String cmd) {
switch (cmd) {
case VoiceConstants.CMD_MAP_TRAFFIC_MODE:
mView.getUIController().setTrafficEnabled( true );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开", null );
mView.getUIController().setTrafficEnabled(true);
mSearchManager.showSearch();
AIAssist.getInstance(getContext()).speakTTSVoice("已打开", null);
break;
case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE:
mView.getUIController().setTrafficEnabled( false );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已关闭", null );
mView.getUIController().setTrafficEnabled(false);
mSearchManager.showMain();
AIAssist.getInstance(getContext()).speakTTSVoice("已关闭", null);
break;
case VoiceConstants.CMD_MAP_ZOOM_IN:
mView.getUIController().changeZoom( true );
@@ -122,57 +136,76 @@ public class MapPresenter extends Presenter< MapView > implements IMogoVoiceList
break;
case VoiceConstants.CMD_MAP_2D:
case VoiceConstants.CMD_MAP_NORTH_UP_MODE:
mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_3D:
mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
mView.getUIController().changeMapMode(EnumMapUI.CarUp_3D);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_DAY_TIME_MODE:
mView.getUIController().changeMapMode( EnumMapUI.Type_Light );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
mView.getUIController().changeMapMode(EnumMapUI.Type_Light);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_GO_COMPANY:
mSearchManager.goCompany();
break;
case VoiceConstants.CMD_MAP_GO_HOME:
mSearchManager.goHome();
break;
case VoiceConstants.CMD_MAP_HISTORY:
mSearchManager.showSearch();
break;
case VoiceConstants.CMD_MAP_STOP_NAVI_MODE:
mSearchManager.showMain();
break;
case VoiceConstants.CMD_MAP_NIGHT_MODE:
mView.getUIController().changeMapMode( EnumMapUI.Type_Night );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
mView.getUIController().changeMapMode(EnumMapUI.Type_Night);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE:
mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
mView.getUIController().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
mView.getUIController().displayOverview();
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE:
mView.getUIController().recoverLockMode();
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
case VoiceConstants.CMD_MAP_CAR_UP_MODE:
mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null );
mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D);
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
break;
default:
break;
}
}
@Override
public void onCmdAction( String speakText ) {
public void onCmdAction(String speakText) {
}
@Override
public void onCmdCancel( String speakText ) {
public void onCmdCancel(String speakText) {
}
@Override
public void onSpeakEnd( String speakText ) {
public void onSpeakEnd(String speakText) {
}
@Override
public void onSpeakSelectTimeOut( String speakText ) {
public void onSpeakSelectTimeOut(String speakText) {
}
}

View File

@@ -16,94 +16,144 @@ public class VoiceConstants {
* 放大地图
*/
public static final String CMD_MAP_ZOOM_IN = "com.ileja.navi.map.enlarge";
public static final String CMD_MAP_ZOOM_IN_UN_WAKEUP = "CMD_MAP_ZOOM_IN_UN_WAKEUP";
public static final String[] CMD_MAP_ZOOM_IN_TRIGGER_WORDS = {"放大地图"};
/**
* 回家
*/
public static final String CMD_MAP_GO_HOME = "com.ileja.navi.map.go.home";
public static final String CMD_MAP_GO_HOME_UN_WAKEUP = "CMD_MAP_GO_HOME_UN_WAKEUP";
public static final String[] CMD_MAP_ZOOM_IN_GO_HOME = {"我要回家","导航回家","带我回家"};
/**
* 去公司
*/
public static final String CMD_MAP_GO_COMPANY = "com.ileja.navi.map.go.company";
public static final String CMD_MAP_GO_COMPANY_UN_WAKEUP = "CMD_MAP_GO_COMPANY_UN_WAKEUP";
public static final String[] CMD_MAP_ZOOM_IN_GO_COMPANY = {"我要去公司","导航去公司","带我去公司"};
/**
* 导航历史记录
*/
public static final String CMD_MAP_HISTORY = "com.ileja.navi.map.history";
public static final String CMD_MAP_HISTORY_UN_WAKEUP = "CMD_MAP_HISTORY_UN_WAKEUP";
public static final String[] CMD_MAP_HISTORY_TRIGGER_WORDS = {"查询导航历史记录"};
/**
* 缩小地图
*/
public static final String CMD_MAP_ZOOM_OUT = "com.ileja.navi.map.reduce";
public static final String CMD_MAP_ZOOM_OUT_UN_WAKEUP = "CMD_MAP_ZOOM_OUT_UN_WAKEUP";
public static final String[] CMD_MAP_ZOOM_OUT_TRIGGER_WORDS = {"缩小地图"};
/**
* 2D模式
*/
public static final String CMD_MAP_2D = "com.ileja.navi.mode.2d";
public static final String CMD_MAP_2D_UN_WAKEUP = "CMD_MAP_2D_UN_WAKEUP";
public static final String[] CMD_MAP_2D_TRIGGER_WORDS = {"二地模式"};
/**
* 3D模式
*/
public static final String CMD_MAP_3D = "com.ileja.navi.mode.3d";
public static final String CMD_MAP_3D_UN_WAKEUP = "CMD_MAP_3D_UN_WAKEUP";
public static final String[] CMD_MAP_3D_TRIGGER_WORDS = {"三地模式"};
/**
* 白天模式
*/
public static final String CMD_MAP_DAY_TIME_MODE = "com.ileja.navi.mode.daytime";
public static final String CMD_MAP_DAY_TIME_MODE_UN_WAKEUP = "CMD_MAP_DAY_TIME_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS = {"白天模式"};
/**
* 黑夜模式
*/
public static final String CMD_MAP_NIGHT_MODE = "com.ileja.navi.mode.night";
public static final String CMD_MAP_NIGHT_MODE_UN_WAKEUP = "CMD_MAP_NIGHT_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_NIGHT_MODE_TRIGGER_WORDS = {"夜间模式"};
/**
* 自动模式
*/
public static final String CMD_MAP_AUTO_LIGHT_NIGHT_MODE = "com.ileja.navi.mode.autodaynight";
public static final String CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP = "CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS = {"自动模式"};
/**
* 查看路况
*/
public static final String CMD_MAP_TRAFFIC_MODE = "com.ileja.navi.traffic.open";
public static final String CMD_MAP_TRAFFIC_MODE_UN_WAKEUP = "CMD_MAP_TRAFFIC_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS = {"打开路况", "打开实况"};
/**
* 关闭路况
*/
public static final String CMD_MAP_UN_TRAFFIC_MODE = "com.ileja.navi.traffic.close";
public static final String CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP = "CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS = {"关闭路况", "关闭实况"};
/**
* 导航全览
*/
public static final String CMD_MAP_DISPLAY_OVERVIEW_MODE = "com.ileja.navi.map.full";
public static final String CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP = "CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_DISPLAY_OVERVIEW_MODE_TRIGGER_WORDS = {"进入全览", "查看全程"};
/**
* 继续导航
*/
public static final String CMD_MAP_CONTINUE_NAVI_MODE = "com.ileja.navi.route.continue";
public static final String CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP = "CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_CONTINUE_NAVI_MODE_MODE_TRIGGER_WORDS = {"继续导航"};
/**
* 停止导航
*/
public static final String CMD_MAP_STOP_NAVI_MODE = "com.ileja.navi.route.stop";
public static final String CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP = "CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_STOP_NAVI_MODE_TRIGGER_WORDS = {"停止导航/结束导航/取消导航/放弃导航/退出导航/关闭导航"};
/**
* 车头朝上
*/
public static final String CMD_MAP_CAR_UP_MODE = "com.ileja.navi.mode.car_up";
public static final String CMD_MAP_CAR_UP_MODE_UN_WAKEUP = "CMD_MAP_CAR_UP_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS = {"车头朝上"};
/**
* 北朝上
*/
public static final String CMD_MAP_NORTH_UP_MODE = "com.ileja.navi.mode.north_up";
public static final String CMD_MAP_NORTH_UP_MODE_UN_WAKEUP = "CMD_MAP_NORTH_UP_MODE_UN_WAKEUP";
public static final String[] CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS = {"北朝上"};
public static final Map< String, String[] > sVoiceCmds = new HashMap<>();
static {
sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_IN, VoiceConstants.CMD_MAP_ZOOM_IN_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_2D, VoiceConstants.CMD_MAP_2D_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_3D, VoiceConstants.CMD_MAP_3D_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE, VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE, VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_CAR_UP_MODE, VoiceConstants.CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_NORTH_UP_MODE, VoiceConstants.CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_2D_UN_WAKEUP, VoiceConstants.CMD_MAP_2D_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_3D_UN_WAKEUP, VoiceConstants.CMD_MAP_3D_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_CAR_UP_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NORTH_UP_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_GO_HOME_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_GO_HOME );
sVoiceCmds.put( VoiceConstants.CMD_MAP_GO_COMPANY_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_IN_GO_COMPANY );
sVoiceCmds.put( VoiceConstants.CMD_MAP_HISTORY_UN_WAKEUP, VoiceConstants.CMD_MAP_HISTORY_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_STOP_NAVI_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_STOP_NAVI_MODE_TRIGGER_WORDS );
}
}