2.0.3导航需求

This commit is contained in:
zhangyuanzhen
2020-03-26 18:04:40 +08:00
parent df3d31b9b6
commit e8dc1b7bc8
4 changed files with 358 additions and 314 deletions

View File

@@ -1,7 +1,9 @@
package com.mogo.module.extensions.entrance; package com.mogo.module.extensions.entrance;
import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
@@ -46,6 +48,7 @@ import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.fragmentmanager.FragmentDescriptor; import com.mogo.service.fragmentmanager.FragmentDescriptor;
import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.map.IMogoMapService; import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoAddressManager;
import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.IMogoModuleProvider;
@@ -215,8 +218,29 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container ); mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container );
mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value ); mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value );
mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit ); mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit );
}
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) {
ivMode.setSelected(false);
} else if (opera_type == 1) {
ivMode.setSelected(true);
}
ivMode.setText(
getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) );
}
}
});
}
private static final String AUTONAVI_STANDARD_BROADCAST_RECV =
"AUTONAVI_STANDARD_BROADCAST_RECV";
@NonNull @NonNull
@Override @Override
protected EntrancePresenter createPresenter() { protected EntrancePresenter createPresenter() {

View File

@@ -10,6 +10,7 @@ import com.mogo.commons.mvp.MvpFragment;
import com.mogo.map.IMogoMap; import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoUiSettings; import com.mogo.map.IMogoUiSettings;
import com.mogo.map.MogoMapView; import com.mogo.map.MogoMapView;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.service.MogoServicePaths; import com.mogo.service.MogoServicePaths;
import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusChangedListener;
@@ -122,6 +123,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
uiSettings.setZoomControlsEnabled( false ); uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。 //设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true ); uiSettings.setZoomGesturesEnabled( true );
mMogoMap.getUIController().changeMapMode(EnumMapUI.NorthUP_2D);
} }
} }
} }

View File

@@ -79,6 +79,8 @@ public class MapPresenter extends Presenter<MapView> implements
mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车 mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车
}, 1_000 ); }, 1_000 );
} else if (type == 2) { } else if (type == 2) {
mMogoIntentManager.invoke(AUTONAVI_STANDARD_BROADCAST_RECV,intent);
if (opera_type == 0) { if (opera_type == 0) {
mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D); mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D);
} else if (opera_type == 1) { } else if (opera_type == 1) {

View File

@@ -1,6 +1,5 @@
package com.mogo.module.service; package com.mogo.module.service;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
@@ -205,7 +204,8 @@ public class MogoServices implements IMogoMapListener,
mUiController.setLockZoom(ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL); mUiController.setLockZoom(ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL);
mStatusManager.setUserInteractionStatus(TAG, true, false); mStatusManager.setUserInteractionStatus(TAG, true, false);
mUiController.recoverLockMode(); mUiController.recoverLockMode();
notifyRefreshData( mLastAutoRefreshLocation, ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback ); notifyRefreshData(mLastAutoRefreshLocation,
ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback);
} }
}; };
private Context mContext; private Context mContext;
@@ -252,7 +252,8 @@ public class MogoServices implements IMogoMapListener,
public void onFail() { public void onFail() {
if (mLoopRequest) { if (mLoopRequest) {
Logger.d(TAG, "onFail and loop"); Logger.d(TAG, "onFail and loop");
mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_LOOP_REQUEST, ServiceConst.LOOP_INTERVAL ); mHandler.sendEmptyMessageDelayed(ServiceConst.MSG_LOOP_REQUEST,
ServiceConst.LOOP_INTERVAL);
} else { } else {
invokeAutoRefreshStrategy(); invokeAutoRefreshStrategy();
} }
@@ -264,7 +265,8 @@ public class MogoServices implements IMogoMapListener,
} }
mRefreshRemainingTime = mAutoRefreshStrategy.getInterval(); mRefreshRemainingTime = mAutoRefreshStrategy.getInterval();
mHandler.removeMessages(ServiceConst.MSG_TYPE_REFRESH_DECREASE); mHandler.removeMessages(ServiceConst.MSG_TYPE_REFRESH_DECREASE);
mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_TYPE_REFRESH_DECREASE, ServiceConst.DECREASE_INTERVAL ); mHandler.sendEmptyMessageDelayed(ServiceConst.MSG_TYPE_REFRESH_DECREASE,
ServiceConst.DECREASE_INTERVAL);
} }
}; };
@@ -281,10 +283,14 @@ public class MogoServices implements IMogoMapListener,
mUiController = mMogoMapService.getMapUIController(); mUiController = mMogoMapService.getMapUIController();
mNavi = mMogoMapService.getNavi(context); mNavi = mMogoMapService.getNavi(context);
mStatusManager = MarkerServiceHandler.getMogoStatusManager(); mStatusManager = MarkerServiceHandler.getMogoStatusManager();
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, this ); mStatusManager.registerStatusChangedListener(ServiceConst.TYPE,
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, this ); StatusDescriptor.USER_INTERACTED, this);
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ADAS_UI, this ); mStatusManager.registerStatusChangedListener(ServiceConst.TYPE, StatusDescriptor.SEARCH_UI,
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_RESUME, this ); this);
mStatusManager.registerStatusChangedListener(ServiceConst.TYPE, StatusDescriptor.ADAS_UI,
this);
mStatusManager.registerStatusChangedListener(ServiceConst.TYPE,
StatusDescriptor.MAIN_PAGE_RESUME, this);
registerMogoReceiver(context); registerMogoReceiver(context);
registerInternalUnWakeupWords(); registerInternalUnWakeupWords();
@@ -340,7 +346,8 @@ public class MogoServices implements IMogoMapListener,
if (msg.obj instanceof RefreshObject) { if (msg.obj instanceof RefreshObject) {
RefreshObject ro = ((RefreshObject) msg.obj); RefreshObject ro = ((RefreshObject) msg.obj);
mRefreshModel.refreshData(ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback); mRefreshModel.refreshData(ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback);
Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount ); Logger.i(TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius,
ro.mLonLat, mLastZoomLevel, ro.mAmount);
} }
} }
} }
@@ -406,12 +413,11 @@ public class MogoServices implements IMogoMapListener,
/** /**
* 地图视图对应的实际宽度 * 地图视图对应的实际宽度
*
* @return
*/ */
private float getMapCameraFactWidth() { private float getMapCameraFactWidth() {
try { try {
return Utils.calculateLineDistance( mCameraNorthEastPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) ); return Utils.calculateLineDistance(mCameraNorthEastPosition,
new MogoLatLng(mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng));
} catch (Exception e) { } catch (Exception e) {
return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS; return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS;
} }
@@ -419,12 +425,11 @@ public class MogoServices implements IMogoMapListener,
/** /**
* 地图视图对应的实际高度 * 地图视图对应的实际高度
*
* @return
*/ */
private float getMapCameraFactHeight() { private float getMapCameraFactHeight() {
try { try {
return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) ); return Utils.calculateLineDistance(mCameraSouthWestPosition,
new MogoLatLng(mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng));
} catch (Exception e) { } catch (Exception e) {
return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS; return ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS;
} }
@@ -524,8 +529,6 @@ public class MogoServices implements IMogoMapListener,
/** /**
* 平移地图刷新策略 * 平移地图刷新策略
*
* @return
*/ */
private boolean invokeRefreshWhenTranslationByUser(MogoLatLng latLng) { private boolean invokeRefreshWhenTranslationByUser(MogoLatLng latLng) {
try { try {
@@ -766,11 +769,13 @@ public class MogoServices implements IMogoMapListener,
} }
} else if (ServiceConst.COMMAND_NEXT.equals(command)) { } else if (ServiceConst.COMMAND_NEXT.equals(command)) {
if (mStatusManager.isMainPageOnResume()) { if (mStatusManager.isMainPageOnResume()) {
mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next ); mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
MogoAction.Next);
} }
} else if (ServiceConst.COMMAND_PREVIOUS.equals(command)) { } else if (ServiceConst.COMMAND_PREVIOUS.equals(command)) {
if (mStatusManager.isMainPageOnResume()) { if (mStatusManager.isMainPageOnResume()) {
mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev ); mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
MogoAction.Prev);
} }
} else if (ServiceConst.COMMAND_SWITCH_CARD.equals(command)) { } else if (ServiceConst.COMMAND_SWITCH_CARD.equals(command)) {
String data = intent.getStringExtra("data"); String data = intent.getStringExtra("data");
@@ -833,8 +838,6 @@ public class MogoServices implements IMogoMapListener,
/** /**
* 切换卡片 * 切换卡片
*
* @param card
*/ */
private void switchCard2(String card) { private void switchCard2(String card) {
if (isApplicationBroughtToBackground(mContext)) { if (isApplicationBroughtToBackground(mContext)) {
@@ -909,9 +912,15 @@ public class MogoServices implements IMogoMapListener,
return; return;
} }
mInternalUnWakeupRegisterStatus = true; mInternalUnWakeupRegisterStatus = true;
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this ); AIAssist.getInstance(mContext)
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this ); .registerUnWakeupCommand(ServiceConst.CMD_UN_WAKE_PREV,
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this ); ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this);
AIAssist.getInstance(mContext)
.registerUnWakeupCommand(ServiceConst.CMD_UN_WAKE_NEXT,
ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this);
AIAssist.getInstance(mContext)
.registerUnWakeupCommand(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION,
ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this);
} }
/** /**
@@ -922,17 +931,22 @@ public class MogoServices implements IMogoMapListener,
return; return;
} }
mInternalUnWakeupRegisterStatus = false; mInternalUnWakeupRegisterStatus = false;
AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, this ); AIAssist.getInstance(mContext)
AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, this ); .unregisterUnWakeupCommand(ServiceConst.CMD_UN_WAKE_PREV, this);
AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this ); AIAssist.getInstance(mContext)
.unregisterUnWakeupCommand(ServiceConst.CMD_UN_WAKE_NEXT, this);
AIAssist.getInstance(mContext)
.unregisterUnWakeupCommand(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this);
} }
@Override @Override
public void onCmdSelected(String cmd) { public void onCmdSelected(String cmd) {
if (TextUtils.equals(ServiceConst.CMD_UN_WAKE_PREV, cmd)) { if (TextUtils.equals(ServiceConst.CMD_UN_WAKE_PREV, cmd)) {
mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev ); mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
MogoAction.Prev);
} else if (TextUtils.equals(ServiceConst.CMD_UN_WAKE_NEXT, cmd)) { } else if (TextUtils.equals(ServiceConst.CMD_UN_WAKE_NEXT, cmd)) {
mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next ); mActionManager.invoke(MapMarkerManager.getInstance().getCurrentModuleName(),
MogoAction.Next);
} else if (TextUtils.equals(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd)) { } else if (TextUtils.equals(ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd)) {
if (mStatusManager.isMainPageOnResume()) { if (mStatusManager.isMainPageOnResume()) {
mUiController.recoverLockMode(); mUiController.recoverLockMode();
@@ -966,10 +980,12 @@ public class MogoServices implements IMogoMapListener,
public void onTransaction(int size) { public void onTransaction(int size) {
if (size == 0) { if (size == 0) {
mUiController.setPointToCenter(0.66145, 0.661094); mUiController.setPointToCenter(0.66145, 0.661094);
mUiController.showMyLocation(!mNavi.isNaviing());
AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ServiceConst.CMD_BACK); AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ServiceConst.CMD_BACK);
} else { } else {
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this ); mUiController.showMyLocation(false);
AIAssist.getInstance(mContext)
.registerUnWakeupCommand(ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this);
mUiController.setPointToCenter(0.5, 0.5); mUiController.setPointToCenter(0.5, 0.5);
} }
} }