diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 99ccd4db65..582be511b8 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -601,11 +601,11 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void displayOverview() { + public void displayOverview( Rect bounds ) { if ( checkAMapView() ) { if ( NaviClient.getInstance( getContext() ).isNaviing() ) { loseLockMode(); - NaviClient.getInstance( getContext() ).displayOverview(); + NaviClient.getInstance( getContext() ).displayOverview(bounds); } } } @@ -633,6 +633,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, if ( checkAMapView() ) { mMapView.setCarOverlayVisible( false ); showMyLocation( true ); + NaviClient.getInstance( getContext() ).startAimlessMode(); } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index 5d6afc5cfe..64d0b14bc9 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -11,6 +11,7 @@ import com.amap.api.navi.enums.AimLessMode; import com.amap.api.navi.enums.NaviType; import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.message.AMapMessageManager; @@ -22,6 +23,7 @@ import com.mogo.map.navi.MogoNaviConfig; import com.mogo.map.navi.MogoNaviListenerHandler; import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.logger.Logger; +import com.mogo.utils.storage.SharedPrefsMgr; import java.util.ArrayList; import java.util.Arrays; @@ -35,7 +37,13 @@ import java.util.List; */ public class NaviClient implements IMogoNavi { + /** + * 巡航状态控制 + */ + public static final String KEY_AIMLESS_STATUS = "KEY_AIMLESS_STATUS"; + private static final String TAG = "NaviClient"; + private final Context mContext; private AMapNavi mAMapNavi; private final NaviListenerAdapter mAMapNaviListener; @@ -55,16 +63,27 @@ public class NaviClient implements IMogoNavi { private Location mCarLocation; private IMogoCarLocationChangedListener mCarLocationChangedListener; private LocationSource.OnLocationChangedListener mOnLocationChangedListener; + /** + * 巡航模式配置状态 + */ + private boolean mAimlessModeStatus; + + /** + * 巡航状态 + */ + private boolean mAimlessStatus; private NaviClient( Context context ) { + mContext = context; mAMapNavi = AMapNavi.getInstance( context ); mAMapNavi.setEmulatorNaviSpeed( 120 ); - mAMapNavi.setUseInnerVoice( false, true ); + mAMapNavi.setUseInnerVoice( true, true ); mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this ); mAimlessModeListener = new AimlessModeListenerAdapter() { }; mAMapNavi.addAMapNaviListener( mAMapNaviListener ); mAMapNavi.addAimlessModeListener( mAimlessModeListener ); + mAimlessModeStatus = SharedPrefsMgr.getInstance( mContext ).getBoolean( KEY_AIMLESS_STATUS, false ); } public static NaviClient getInstance( Context context ) { @@ -151,7 +170,7 @@ public class NaviClient implements IMogoNavi { return; } mIsRealNavi = isRealNavi; - + stopAimlessMode(); boolean isNaving = isNaviing(); boolean result = mAMapNavi.startNavi( isRealNavi ? NaviType.GPS : NaviType.EMULATOR ); if ( isNaving && !result ) { @@ -274,18 +293,42 @@ public class NaviClient implements IMogoNavi { @Override public void startAimlessMode() { - mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); + if ( mAimlessModeStatus && !isNaviing() ) { + mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); + mAimlessStatus = true; + Logger.d( TAG, "开启巡航成功" ); + } else { + mAimlessStatus = false; + Logger.d( TAG, "开启巡航失败" ); + } } @Override public void stopAimlessMode() { mAMapNavi.stopAimlessMode(); + mAimlessStatus = false; + Logger.d( TAG, "关闭巡航成功" ); } @Override - public void displayOverview() { + public void setAimlessModeStatus( boolean open ) { + this.mAimlessModeStatus = open; + SharedPrefsMgr.getInstance( mContext ).putBoolean( KEY_AIMLESS_STATUS, open ); + if ( open ) { + if ( !mAimlessStatus ) { + startAimlessMode(); + } + } else { + if ( mAimlessStatus ) { + stopAimlessMode(); + } + } + } + + @Override + public void displayOverview( Rect bounds ) { if ( mAMapNaviListener != null ) { - mAMapNaviListener.displayOverview(); + mAMapNaviListener.displayOverview( bounds ); } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index dfd56d70de..c402fdc0a4 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -95,6 +95,7 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { @Override public void onInitNaviSuccess() { MogoNaviListenerHandler.getInstance().onInitNaviSuccess(); + NaviClient.getInstance( mContext ).startAimlessMode(); } @Override @@ -245,9 +246,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { public void handleClickedPolyline( Polyline polyline ) { if ( mNaviOverlayHelper != null ) { + mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() ); mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() ); - mNaviOverlayHelper.showBounds(); + mNaviOverlayHelper.showBoundsWithSettingBounds(); } } @@ -291,9 +293,9 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { } } - public void displayOverview(){ + public void displayOverview( Rect bounds ) { if ( mNaviOverlayHelper != null ) { - mNaviOverlayHelper.displayOverview(); + mNaviOverlayHelper.displayOverview( bounds ); } } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java index 19cd0dabfb..9448f2b296 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java @@ -99,7 +99,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { if ( after != null ) { after.run(); } - } ); + }, mBoundRect ); } private LatLngBounds getBounds() { @@ -169,25 +169,32 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { } } - public void showBounds() { + public void showBoundsWithSettingBounds() { + showBounds( mBoundRect ); + } + + public void showBounds( Rect bounds ) { Logger.d( TAG, "showBounds" ); - showPathsBound( getBounds(), null ); + showPathsBound( getBounds(), null, bounds ); } /** * 将规划好的路径显示在视野内 */ - private void showPathsBound( LatLngBounds bounds, Runnable after ) { + private void showPathsBound( LatLngBounds bounds, Runnable after, Rect rect ) { if ( bounds == null ) { return; } + if ( rect == null ) { + rect = new Rect(); + } checkAMapInstance(); mAMap.moveCamera( CameraUpdateFactory.newLatLngBoundsRect( bounds, - mBoundRect.left, - mBoundRect.right, - mBoundRect.top, - mBoundRect.bottom )); + rect.left, + rect.right, + rect.top, + rect.bottom ) ); if ( after != null ) { after.run(); } @@ -431,7 +438,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { public void onItemClicked( String tagId ) { handleClickedPolyline( tagId ); mAMapNavi.selectRouteId( getSelectedPathId() ); - showBounds(); + showBounds( mBoundRect ); } public OnCalculatePathItemClickInteraction getItemClickInteraction() { @@ -451,7 +458,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { /** * 展示全程 */ - public void displayOverview(){ - showBounds(); + public void displayOverview( Rect bounds ) { + showBounds( bounds ); } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index 6e395ec1ba..b5f5c7da96 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -126,9 +126,9 @@ public class AMapUIController implements IMogoMapUIController { } @Override - public void displayOverview() { + public void displayOverview( Rect bounds ) { if (mClient != null) { - mClient.displayOverview(); + mClient.displayOverview(bounds); } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java index 4a780f8b61..40914d49b0 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java @@ -161,10 +161,17 @@ public interface IMogoNavi { */ void stopAimlessMode(); + /** + * 设置巡航模式状态 + * + * @param open + */ + void setAimlessModeStatus( boolean open ); + /** * 查看全程 */ - void displayOverview(); + void displayOverview( Rect bounds ); /** * 设置使用外部定位源 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index 053ae1b848..a9dd283213 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -88,8 +88,10 @@ public interface IMogoMapUIController { /** * 预览全程 + * + * @param bounds 显示范围 */ - void displayOverview(); + void displayOverview( Rect bounds ); /** * 获取比例尺数据 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index e430a33b65..286b7aec12 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -120,9 +120,9 @@ public class MogoMapUIController implements IMogoMapUIController { } @Override - public void displayOverview() { + public void displayOverview( Rect bounds ) { if (mDelegate != null) { - mDelegate.displayOverview(); + mDelegate.displayOverview(bounds); } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java index b3d7c0c75c..2e9ff0a525 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java @@ -197,9 +197,16 @@ public class MogoNavi implements IMogoNavi { } @Override - public void displayOverview() { + public void setAimlessModeStatus( boolean open ) { if ( mDelegate != null ) { - mDelegate.displayOverview(); + mDelegate.setAimlessModeStatus( open ); + } + } + + @Override + public void displayOverview( Rect bounds ) { + if ( mDelegate != null ) { + mDelegate.displayOverview(bounds); } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 3cb221d814..1ba191e0cf 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -24,8 +24,6 @@ import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; -import com.mogo.map.overlay.IMogoPolyline; -import com.mogo.map.uicontroller.CarCursorOption; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; @@ -47,6 +45,7 @@ import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.utils.logger.Logger; import java.util.HashMap; import java.util.Map; @@ -303,6 +302,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onStartNavi() { + mSearch.setVisibility( View.GONE ); mCommonAddress.setVisibility( View.GONE ); mNaviInfo.setVisibility( View.VISIBLE ); mCameraMode.setVisibility( View.VISIBLE ); @@ -315,6 +315,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onStopNavi() { + mSearch.setVisibility( View.VISIBLE ); mCommonAddress.setVisibility( View.VISIBLE ); mNaviInfo.setVisibility( View.GONE ); mCameraMode.setVisibility( View.GONE ); @@ -345,7 +346,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mSpeedLimit.setVisibility( View.INVISIBLE ); mSpeedLimitValue.setText( "--" ); } else { - mSpeedLimit.setVisibility( View.VISIBLE ); + // 暂时不显示限速,等有好的显示方案在放开 + mSpeedLimit.setVisibility( View.INVISIBLE ); mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) ); } } @@ -380,6 +382,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mIsLock = isLock; if ( isLock ) { mExitNavi.setText( R.string.module_ext_str_exit_navi ); + if ( mMogoStatusManager.isDisplayOverview() ) { + mMogoStatusManager.setDisplayOverview( TAG, false ); + } } else { mExitNavi.setText( R.string.module_ext_str_continue_navi ); } @@ -400,4 +405,32 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent properties.put( "from", from ); mAnalytics.track( "Launcher_Share_Click", properties ); } + + @Override + public void showNaviPanelWidgets() { + if ( !mMogoNavi.isNaviing() ) { + return; + } + mNaviInfo.setVisibility( View.VISIBLE ); + mCameraMode.setVisibility( View.VISIBLE ); + try { + mApis.getWindowManagerApi().showAll(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + + @Override + public void hideNaviPanelWidgets() { + if ( !mMogoNavi.isNaviing() ) { + return; + } + mNaviInfo.setVisibility( View.GONE ); + mCameraMode.setVisibility( View.GONE ); + try { + mApis.getWindowManagerApi().hideAll(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java index c998dcc7ab..7662f0ac2a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java @@ -6,6 +6,9 @@ import android.net.Uri; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.lifecycle.LifecycleOwner; + import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; @@ -14,10 +17,14 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.share.ShareControl; +import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; import org.json.JSONObject; @@ -33,7 +40,7 @@ import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerCons *

* 描述 */ -public class EntrancePresenter extends Presenter { +public class EntrancePresenter extends Presenter< EntranceView > implements IMogoStatusChangedListener { private Context mContext; private IMogoAnalytics mAnalytics; @@ -42,32 +49,28 @@ public class EntrancePresenter extends Presenter { private IMogoAuthorizeModuleManager mIMogoAuthorizeModuleManager; private String mVoiceCmdType; //一级命令 private String mVoiceCmdShareType; //对某些一级命令里面细分的类型做处理 + private IMogoStatusManager mStatusManager; - public EntrancePresenter(Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager) { - super(view); + public EntrancePresenter( Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager ) { + super( view ); mContext = context; - mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(getContext()); - mogoIntentManager = (IMogoIntentManager) ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation(getContext()); + IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( mContext ); + mAnalytics = apis.getAnalyticsApi(); + mogoIntentManager = apis.getIntentManagerApi(); mIMogoAuthorizeModuleManager = authorizeModuleManager; - + mStatusManager = apis.getStatusManagerApi(); registerUnWake(); registerAwakeVoice(); } - private void registerUnWake() { - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CLOSE, - ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener); - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE, - ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.CLOSE, ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.CANCLE_SHARE, ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener ); //探路相关上报 - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK, - ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener); - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK, - ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener); - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE, - ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK, ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK, ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE, ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener ); } /** @@ -75,31 +78,31 @@ public class EntrancePresenter extends Presenter { */ private IMogoVoiceCmdCallBack mogoVoiceListener = new IMogoVoiceCmdCallBack() { @Override - public void onCmdSelected(String cmd) { - Log.d(TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE) + " >>>cmd = " + cmd); + public void onCmdSelected( String cmd ) { + Log.d( TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) + " >>>cmd = " + cmd ); mVoiceCmdType = cmd; - if (cmd.equals(ExtensionsModuleConst.CANCLE_SHARE) - || cmd.equals(ExtensionsModuleConst.CLOSE)) { //取消分享,关闭页面 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( cmd.equals( ExtensionsModuleConst.CANCLE_SHARE ) + || cmd.equals( ExtensionsModuleConst.CLOSE ) ) { //取消分享,关闭页面 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).dismissDialog(); + ShareControl.getInstance( mContext ).dismissDialog(); } - } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ) ) { //上报拥堵 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadCondition(); } - } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ) ) { //上报交通检查 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadTrfficCheck(); } - } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ) ) { //上报封路 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadClosed(); } @@ -107,32 +110,38 @@ public class EntrancePresenter extends Presenter { } @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 ) { } }; + @Override + public void onCreate( @NonNull LifecycleOwner owner ) { + super.onCreate( owner ); + mStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.DISPLAY_OVERVIEW, this ); + } + /** * 注册唤醒命令 */ private void registerAwakeVoice() { - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION, mogoIntentListener); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION, mogoIntentListener ); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener ); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener ); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener ); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener ); } /** @@ -140,81 +149,81 @@ public class EntrancePresenter extends Presenter { */ private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() { @Override - public void onIntentReceived(String intentStr, Intent intent) { + public void onIntentReceived( String intentStr, Intent intent ) { mVoiceCmdType = intentStr; EntranceFragment.isClickShare = false; - String data = intent.getStringExtra("data"); - Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)); - if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok - String conditionData = intent.getStringExtra("data"); - Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData); + String data = intent.getStringExtra( "data" ); + Log.d( TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ); + if ( intentStr.equals( ExtensionsModuleConst.GO_TO_SHARE ) ) { //我要分享 --ok + String conditionData = intent.getStringExtra( "data" ); + Log.d( TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData ); try { - JSONObject jsonObject = new JSONObject(data); - String typeString = jsonObject.get("ob").toString(); - Log.d(TAG, "mogoIntentListener specified typeString = " + typeString); + JSONObject jsonObject = new JSONObject( data ); + String typeString = jsonObject.get( "ob" ).toString(); + Log.d( TAG, "mogoIntentListener specified typeString = " + typeString ); mVoiceCmdShareType = typeString; - if (!TextUtils.isEmpty(typeString)) { - if (typeString.equals("封路")) { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( !TextUtils.isEmpty( typeString ) ) { + if ( typeString.equals( "封路" ) ) { + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - Log.d(TAG, "mogoIntentListener 封路 -------> "); + Log.d( TAG, "mogoIntentListener 封路 -------> " ); uploadRoadClosed(); } - } else if (typeString.equals("油价")) { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( typeString.equals( "油价" ) ) { + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - Log.d(TAG, "mogoIntentListener 油价 -------> "); + Log.d( TAG, "mogoIntentListener 油价 -------> " ); shareOilPrice(); } - } else if (typeString.equals("交通检查")) { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( typeString.equals( "交通检查" ) ) { + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - Log.d(TAG, "mogoIntentListener 交通检查 -------> "); + Log.d( TAG, "mogoIntentListener 交通检查 -------> " ); uploadTrfficCheck(); } } } else { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).showDialog(); - Log.d(TAG, "mogoIntentListener 我要分享 ----> "); - traceData("2"); + ShareControl.getInstance( mContext ).showDialog(); + Log.d( TAG, "mogoIntentListener 我要分享 ----> " ); + traceData( "2" ); } } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } - } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) { + } else if ( intentStr.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN ) ) { //分享路况/上报路况/上报拥堵 唤醒 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadCondition(); - Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> "); + Log.d( TAG, "mogoIntentListener 分享路况 唤醒 ----> " ); } - } else if (intentStr.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE)) { //关闭分享框 唤醒 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( intentStr.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) ) { //关闭分享框 唤醒 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).dismissDialog(); - Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> "); + ShareControl.getInstance( mContext ).dismissDialog(); + Log.d( TAG, "mogoIntentListener 关闭分享框 唤醒 ----> " ); } - } else if (intentStr.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { + } else if ( intentStr.equals( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE ) ) { // 两次未回复关闭对话框 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).dismissDialog(); - Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框"); + ShareControl.getInstance( mContext ).dismissDialog(); + Logger.d( TAG, "mogoIntentListener 两次未回复关闭对话框" ); } - } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报路况 免唤醒 --ok - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( intentStr.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION ) ) { //上报路况 免唤醒 --ok + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadCondition(); } @@ -227,65 +236,65 @@ public class EntrancePresenter extends Presenter { * 处理需要授权的命令 TODO */ public void handleNeedAuthorizeCmd() { - Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType); - if (!TextUtils.isEmpty(mVoiceCmdType)) { - if (mVoiceCmdType.equals(ExtensionsModuleConst.CANCLE_SHARE) || mVoiceCmdType.equals(ExtensionsModuleConst.CLOSE) - || mVoiceCmdType.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE) || mVoiceCmdType.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { //关闭分享弹框 - ShareControl.getInstance(mContext).dismissDialog(); - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //打开分享弹框 - if (!TextUtils.isEmpty(mVoiceCmdShareType)) { - if (mVoiceCmdShareType.equals("封路")) { - Log.d(TAG, "handleNeedAuthorizeCmd 封路 -------> "); + Log.e( TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType ); + if ( !TextUtils.isEmpty( mVoiceCmdType ) ) { + if ( mVoiceCmdType.equals( ExtensionsModuleConst.CANCLE_SHARE ) || mVoiceCmdType.equals( ExtensionsModuleConst.CLOSE ) + || mVoiceCmdType.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) || mVoiceCmdType.equals( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE ) ) { //关闭分享弹框 + ShareControl.getInstance( mContext ).dismissDialog(); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.GO_TO_SHARE ) ) { //打开分享弹框 + if ( !TextUtils.isEmpty( mVoiceCmdShareType ) ) { + if ( mVoiceCmdShareType.equals( "封路" ) ) { + Log.d( TAG, "handleNeedAuthorizeCmd 封路 -------> " ); uploadRoadClosed(); - } else if (mVoiceCmdShareType.equals("油价")) { - Log.d(TAG, "handleNeedAuthorizeCmd 油价 -------> "); + } else if ( mVoiceCmdShareType.equals( "油价" ) ) { + Log.d( TAG, "handleNeedAuthorizeCmd 油价 -------> " ); shareOilPrice(); - } else if (mVoiceCmdShareType.equals("交通检查")) { - Log.d(TAG, "handleNeedAuthorizeCmd 交通检查 -------> "); + } else if ( mVoiceCmdShareType.equals( "交通检查" ) ) { + Log.d( TAG, "handleNeedAuthorizeCmd 交通检查 -------> " ); uploadTrfficCheck(); } } else { - ShareControl.getInstance(mContext).showDialog(); - Log.d(TAG, "handleNeedAuthorizeCmd 我要分享 ----> "); - traceData("2"); + ShareControl.getInstance( mContext ).showDialog(); + Log.d( TAG, "handleNeedAuthorizeCmd 我要分享 ----> " ); + traceData( "2" ); } - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 - Log.d(TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> "); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ) ) { //上报交通检查 + Log.d( TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> " ); uploadTrfficCheck(); - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 - Log.d(TAG, "handleNeedAuthorizeCmd 上报封路 ----> "); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ) ) { //上报封路 + Log.d( TAG, "handleNeedAuthorizeCmd 上报封路 ----> " ); uploadRoadClosed(); - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK) - || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN) - || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报拥堵, 分享路况, 上报路况 - Log.d(TAG, "handleNeedAuthorizeCmd 上报路况 ----> "); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ) + || mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN ) + || mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION ) ) { //上报拥堵, 分享路况, 上报路况 + Log.d( TAG, "handleNeedAuthorizeCmd 上报路况 ----> " ); uploadRoadCondition(); } } else { - Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null "); + Log.e( TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null " ); } } private void uploadRoadCondition() { - traceTanluData("2"); - sendShareReceiver("1"); - Logger.d("EntrancePresenter", "mogoIntentListener 上报路况 ----> "); - traceTypeData("1"); - ShareControl.getInstance(mContext).dismissDialog(); + traceTanluData( "2" ); + sendShareReceiver( "1" ); + Logger.d( "EntrancePresenter", "mogoIntentListener 上报路况 ----> " ); + traceTypeData( "1" ); + ShareControl.getInstance( mContext ).dismissDialog(); } private void uploadTrfficCheck() { - sendShareReceiver("2"); - Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> "); - traceTypeData("3"); - ShareControl.getInstance(mContext).dismissDialog(); + sendShareReceiver( "2" ); + Logger.d( "EntrancePresenter", "mogoIntentListener 分享交通检查 ----> " ); + traceTypeData( "3" ); + ShareControl.getInstance( mContext ).dismissDialog(); } private void uploadRoadClosed() { - sendShareReceiver("3"); - Logger.d("EntrancePresenter", "mogoIntentListener 分享封路 ----> "); - traceTypeData("4"); - ShareControl.getInstance(mContext).dismissDialog(); + sendShareReceiver( "3" ); + Logger.d( "EntrancePresenter", "mogoIntentListener 分享封路 ----> " ); + traceTypeData( "4" ); + ShareControl.getInstance( mContext ).dismissDialog(); } /** @@ -293,10 +302,10 @@ public class EntrancePresenter extends Presenter { * * @param from */ - private void traceData(String from) { - Map properties = new HashMap<>(); - properties.put("from", from); - mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties); + private void traceData( String from ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "from", from ); + mAnalytics.track( ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties ); } private void shareOilPrice() { @@ -310,14 +319,14 @@ public class EntrancePresenter extends Presenter { /** * 发送广播 1拥堵,2交通检查,3封路 */ - private void sendShareReceiver(String type) { - Logger.d("EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->"); + private void sendShareReceiver( String type ) { + Logger.d( "EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->" ); Intent intent = new Intent(); - intent.setAction("com.zhidao.roadcondition.share"); - intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); - intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); - intent.putExtra("type", type); - getContext().sendBroadcast(intent); + intent.setAction( "com.zhidao.roadcondition.share" ); + intent.addFlags( Intent.FLAG_RECEIVER_FOREGROUND ); + intent.addFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES ); + intent.putExtra( "type", type ); + getContext().sendBroadcast( intent ); } /** @@ -331,27 +340,35 @@ public class EntrancePresenter extends Presenter { * * @param type */ - private void traceTypeData(String type) { - Map properties = new HashMap<>(); - properties.put("type", type); - mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties); + private void traceTypeData( String type ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "type", type ); + mAnalytics.track( ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties ); } - private void traceTanluData(String type) { - Map properties = new HashMap<>(); - properties.put("type", type); - mAnalytics.track(ExtensionsModuleConst.CARNET_USER_UPLOAD, properties); + private void traceTanluData( String type ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "type", type ); + mAnalytics.track( ExtensionsModuleConst.CARNET_USER_UPLOAD, properties ); } public void unregisterUnWake() { - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE); - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CLOSE); - - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK); - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK); - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE); - + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.CANCLE_SHARE ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.CLOSE ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ); } + @Override + public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { + if ( descriptor == StatusDescriptor.DISPLAY_OVERVIEW ) { + if ( isTrue ) { + mView.hideNaviPanelWidgets(); + } else { + mView.showNaviPanelWidgets(); + } + } + } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java index 9ea2e13101..6309e1b02c 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java @@ -9,4 +9,8 @@ import com.mogo.commons.mvp.IView; * 描述 */ public interface EntranceView extends IView { + + void showNaviPanelWidgets(); + + void hideNaviPanelWidgets(); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 9e9a8846fe..6cfa8e244b 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -30,7 +30,7 @@ import com.mogo.module.main.cards.MogoModulesHandler; import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.module.main.cards.OnPageChangeListenerAdapter; import com.mogo.module.main.cards.OrientedViewPager; -import com.mogo.module.main.windowview.WindowViewHandler; +import com.mogo.module.main.windowview.FloatingViewHandler; import com.mogo.module.service.ServiceConst; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; @@ -192,7 +192,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 避免事件穿透导致地图被滑动 mLeftShadowFrame.setOnClickListener( view -> { } ); - WindowViewHandler.init( mFloatingLayout ); + FloatingViewHandler.init( mFloatingLayout ); } // 隐藏布局 diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java similarity index 50% rename from modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java rename to modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java index 1b37bea1c9..5485f4778d 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java @@ -13,7 +13,7 @@ import com.mogo.utils.logger.Logger; *

* 描述 */ -public class WindowViewHandler { +public class FloatingViewHandler { private static final String TAG = "WindowViewHandler"; @@ -35,9 +35,9 @@ public class WindowViewHandler { */ private static boolean sMovable = false; - public static FrameLayout sFloatingLayout = null; + private static FrameLayout sFloatingLayout = null; - public static void init(FrameLayout frameLayout) { + public static void init( FrameLayout frameLayout ) { sFloatingLayout = frameLayout; } @@ -49,20 +49,20 @@ public class WindowViewHandler { * @param y * @param movable */ - public static void addView(View view, int x, int y, boolean movable) { - if (view == null) { + public static void addView( View view, int x, int y, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ); params.leftMargin = x; params.topMargin = y; - sFloatingLayout.addView(view, params); + sFloatingLayout.addView( view, params ); } /** @@ -72,16 +72,16 @@ public class WindowViewHandler { * @param params * @param movable */ - public static void addView(View view, FrameLayout.LayoutParams params, boolean movable) { - if (view == null) { + public static void addView( View view, FrameLayout.LayoutParams params, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - sFloatingLayout.addView(view, params); + sFloatingLayout.addView( view, params ); } /** @@ -93,27 +93,27 @@ public class WindowViewHandler { * @param y * @param movable */ - public static void addView(View view, int priority, int x, int y, boolean movable) { - if (view == null) { + public static void addView( View view, int priority, int x, int y, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - if (sView == view) { - Logger.w(TAG, "改布局已添加且没有移除,不操作"); + if ( sView == view ) { + Logger.w( TAG, "改布局已添加且没有移除,不操作" ); return; } - if (sView != null) { - if (priority < sPriority) { - Logger.w(TAG, "过滤低优先级布局"); + if ( sView != null ) { + if ( priority < sPriority ) { + Logger.w( TAG, "过滤低优先级布局" ); return; } - sFloatingLayout.removeView(sView); + sFloatingLayout.removeView( sView ); } sView = view; sMovable = movable; @@ -131,27 +131,27 @@ public class WindowViewHandler { * @param params * @param movable */ - public static void addView(View view, int priority, FrameLayout.LayoutParams params, boolean movable) { - if (view == null) { + public static void addView( View view, int priority, FrameLayout.LayoutParams params, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - if (sView == view) { - Logger.w(TAG, "改布局已添加且没有移除,不操作"); + if ( sView == view ) { + Logger.w( TAG, "改布局已添加且没有移除,不操作" ); return; } - if (sView != null) { - if (priority < sPriority) { - Logger.w(TAG, "过滤低优先级布局"); + if ( sView != null ) { + if ( priority < sPriority ) { + Logger.w( TAG, "过滤低优先级布局" ); return; } - sFloatingLayout.removeView(sView); + sFloatingLayout.removeView( sView ); } sView = view; sMovable = movable; @@ -160,15 +160,15 @@ public class WindowViewHandler { addView(); } - public static void removeView(View view) { - if (sFloatingLayout == null) { + public static void removeView( View view ) { + if ( sFloatingLayout == null ) { return; } - if (view == null) { + if ( view == null ) { return; } - sFloatingLayout.removeView(view); - if (sView == view) { + sFloatingLayout.removeView( view ); + if ( sView == view ) { sView = null; sPriority = Integer.MIN_VALUE; sMovable = false; @@ -177,29 +177,35 @@ public class WindowViewHandler { } private static void addView() { - if (sView == null) { + if ( sView == null ) { return; } FrameLayout.LayoutParams params = sParams; - if (params == null) { - params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + if ( params == null ) { + params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ); params.leftMargin = sX; params.topMargin = sY; } - sFloatingLayout.addView(sView, params); + sFloatingLayout.addView( sView, params ); } - public static void attachMovementEvent(View view, WindowManager.LayoutParams params) { - if (view == null) { + public static void attachMovementEvent( View view, WindowManager.LayoutParams params ) { + if ( view == null ) { return; } - view.setOnTouchListener((v, event) -> { + view.setOnTouchListener( ( v, event ) -> { DispatchTouchEventWrapper.getInstance() - .attach(view, params) - .handle(event); + .attach( view, params ) + .handle( event ); return false; - }); + } ); + } + + public static void setVisible( boolean visible ) { + if ( sFloatingLayout != null ) { + sFloatingLayout.setVisibility( visible ? View.VISIBLE : View.INVISIBLE ); + } } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java index 2357701d68..f7b69a8dd2 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java @@ -14,36 +14,46 @@ import com.mogo.service.windowview.IMogoWindowManager; *

* 根据优先级控制显示 window view. */ -@Route(path = MogoServicePaths.PATH_WINDOW_MANAGER) +@Route( path = MogoServicePaths.PATH_WINDOW_MANAGER ) public class MogoWindowManager implements IMogoWindowManager { @Override - public void addView(View view, int x, int y, boolean movable) { - WindowViewHandler.addView(view, x, y, movable); + public void addView( View view, int x, int y, boolean movable ) { + FloatingViewHandler.addView( view, x, y, movable ); } @Override - public void addView(View view, FrameLayout.LayoutParams params, boolean movable) { - WindowViewHandler.addView(view, params, movable); + public void addView( View view, FrameLayout.LayoutParams params, boolean movable ) { + FloatingViewHandler.addView( view, params, movable ); } @Override - public void addView(int priority, View view, int x, int y, boolean movable) { - WindowViewHandler.addView(view, priority, x, y, movable); + public void addView( int priority, View view, int x, int y, boolean movable ) { + FloatingViewHandler.addView( view, priority, x, y, movable ); } @Override - public void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable) { - WindowViewHandler.addView(view, priority, params, movable); + public void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable ) { + FloatingViewHandler.addView( view, priority, params, movable ); } @Override - public void removeView(View view) { - WindowViewHandler.removeView(view); + public void removeView( View view ) { + FloatingViewHandler.removeView( view ); } @Override - public void init(Context context) { + public void hideAll() { + FloatingViewHandler.setVisible( false ); + } + + @Override + public void showAll() { + FloatingViewHandler.setVisible( true ); + } + + @Override + public void init( Context context ) { } } 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 cc2ca88ad3..ff82c148d7 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 @@ -21,7 +21,8 @@ import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.MapControlResult; -import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; @@ -32,12 +33,8 @@ import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; -import com.mogo.service.voice.IMogoVoiceListener; -import com.mogo.service.voice.IMogoVoiceManager; -import com.mogo.utils.AppUtils; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.UiThreadHandler; -import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; import java.util.Map; @@ -62,6 +59,7 @@ public class MapPresenter extends Presenter< MapView > implements private IMogoStatusManager mStatusManager; private IMogoRegisterCenter mRegisterCenter; private IMogoLauncher mLauncher; + private Rect mDisplayOverviewBounds; public MapPresenter( MapView view ) { super( view ); @@ -99,11 +97,8 @@ public class MapPresenter extends Presenter< MapView > implements mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); } else if ( opera_type == 1 ) { mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); - //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); - } else if ( opera_type == 2 ) { mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); - //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); } } @@ -123,18 +118,14 @@ public class MapPresenter extends Presenter< MapView > implements //intent.putExtra("EXTRA_ENDURANCE_DATA", continueNavi); //继续导航 } else if ( key_type == 10049 ) { - boolean extra_endurance_data = - intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false ); + 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 ) { - mStatusManager.setUserInteractionStatus( TAG, true, false ); - mView.getUIController().displayOverview(); + onDisplayOverview(); } else { onContinueNavigation(); } @@ -173,13 +164,16 @@ public class MapPresenter extends Presenter< MapView > implements /** * 继续导航 */ - private void onContinueNavigation(){ + private void onContinueNavigation() { + if ( mStatusManager.isMainPageOnResume() ) { + mStatusManager.setDisplayOverview( TAG, false ); mView.getUIController().recoverLockMode(); } else { mLauncher.backToLauncher( getContext() ); UiThreadHandler.postDelayed( () -> { try { + mStatusManager.setDisplayOverview( TAG, false ); mView.getUIController().recoverLockMode(); } catch ( Exception e ) { e.printStackTrace(); @@ -188,6 +182,16 @@ public class MapPresenter extends Presenter< MapView > implements } } + private void onDisplayOverview() { + if ( !mMogoMapService.getNavi( getContext() ).isNaviing() ) { + Logger.d( TAG, "未开始导航." ); + return; + } + mStatusManager.setUserInteractionStatus( TAG, true, false ); + mStatusManager.setDisplayOverview( TAG, true ); + mView.getUIController().displayOverview( mDisplayOverviewBounds ); + } + private void zoomMap( boolean zoomIn ) { boolean isLocked = mMogoMapService.getMapUIController().isCarLocked(); MapControlResult result = mView.getUIController().changeZoom( zoomIn ); @@ -229,11 +233,18 @@ public class MapPresenter extends Presenter< MapView > implements IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); mogoNavi.setCalculatePathDisplayBounds( new Rect( + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_left_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_top_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_right_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_bottom_margin ) + ) ); + + mDisplayOverviewBounds = new Rect( ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_left_margin ), ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_top_margin ), ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_right_margin ), ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_bottom_margin ) - ) ); + ); } @Override @@ -314,12 +325,10 @@ public class MapPresenter extends Presenter< MapView > implements case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP: case VoiceConstants.CMD_MAP_NORTH_UP_MODE: mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_3D_UN_WAKEUP: case VoiceConstants.CMD_MAP_3D: mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP: @@ -359,7 +368,7 @@ public class MapPresenter extends Presenter< MapView > implements AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE: - mView.getUIController().displayOverview(); + onDisplayOverview(); break; case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE: onContinueNavigation(); diff --git a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml index 7f51191319..bcf618205a 100644 --- a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml @@ -1,7 +1,13 @@ - 558px - 174px - 32px - 80px + 558px + 174px + 32px + 80px + + + 534px + 100px + 68px + 32px \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml index 275b7ffcd1..2d58420a11 100644 --- a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml @@ -1,7 +1,13 @@ - 977px - 249px - 61px - 80px + 977px + 249px + 61px + 80px + + + 952px + 170px + 122px + 61px \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/res/values/dimens.xml b/modules/mogo-module-map/src/main/res/values/dimens.xml index 275b7ffcd1..4cf55c67a5 100644 --- a/modules/mogo-module-map/src/main/res/values/dimens.xml +++ b/modules/mogo-module-map/src/main/res/values/dimens.xml @@ -1,7 +1,13 @@ - 977px - 249px - 61px - 80px + + 977px + 249px + 61px + 80px + + 952px + 170px + 122px + 61px \ No newline at end of file diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt index e67b538fc0..13428466a1 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt @@ -36,8 +36,6 @@ object NaviManager { SearchServiceHolder.getNavi().stopNavi() } else if (key_type == 20009) { SearchServiceHolder.mogoLauncher.backToLauncher(context) - gotoSearch() - } else if (key_type == 10005) { // * 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。 diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt index 66c998b9f9..4237428e43 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt @@ -12,186 +12,195 @@ import com.mogo.service.module.IMogoSettingManager * 2020-01-12. */ object SettingManager : IMogoSettingManager { - private val KEY_PAHT_PREFER = "keyPath" - private val KEY_VOLUME = "keyVolume" - private val KEY_VOICE_STYLE = "keyVoice" - private val KEY_MAP_TYPE = "keyMapType" - private lateinit var settings: SharedPreferences + private val KEY_PAHT_PREFER = "keyPath" + private val KEY_VOLUME = "keyVolume" + private val KEY_VOICE_STYLE = "keyVoice" + private val KEY_MAP_TYPE = "keyMapType" + private val KEY_AIMLESS_MODE_TYPE = "keyAimlessModeType" + private lateinit var settings: SharedPreferences - /** - * 是否躲避拥堵 - */ - private var congestion = false + /** + * 是否躲避拥堵 + */ + private var congestion = false - /** - * 不走高速 - */ - private var avoidSpeed = false + /** + * 不走高速 + */ + private var avoidSpeed = false - /** - * 避免收费 - */ - private var cost = false + /** + * 避免收费 + */ + private var cost = false - /** - * 高速优先 - */ - private var highSpeed = false - /** - * 模拟导航 - */ - private var isMonitor: Boolean = false + /** + * 高速优先 + */ + private var highSpeed = false + /** + * 模拟导航 + */ + private var isMonitor: Boolean = false - /** - * GPS 模拟 - */ - private var isGpsSimulator: Boolean = false + /** + * GPS 模拟 + */ + private var isGpsSimulator: Boolean = false - override fun getPathPrefer(): Int { - return settings!!.getInt(KEY_PAHT_PREFER, 0) - } - - override fun getVolume(): Int { - return settings!!.getInt(KEY_VOLUME, 0) - } - - override fun getVoiceStyle(): Int { - return settings!!.getInt(KEY_VOICE_STYLE, R.id.rb_navi_detail) - } - - override fun getMapType(): Int { - return settings!!.getInt(KEY_MAP_TYPE, R.id.rb_navi_day) - } - - fun setPathPrefer(type: Int) { - settings!!.edit() - .putInt(KEY_PAHT_PREFER, type) - .apply() - } - - fun setVolume(type: Int) { - settings!!.edit() - .putInt(KEY_VOLUME, type) - .apply() - } - - fun setVoiceStyle(type: Int) { - settings!!.edit() - .putInt(KEY_VOICE_STYLE, type) - .apply() - } - - fun setMapType(type: Int) { - settings!!.edit() - .putInt(KEY_MAP_TYPE, type) - .apply() - } - - fun setMonitor(type: Boolean) { - isMonitor = type - } - - fun isMonitor(): Boolean { - return isMonitor - } - - fun setGpsSimulator(type:Boolean){ - isGpsSimulator = type - } - - fun isGpsSimulator(): Boolean { - return isGpsSimulator - } - - /** - * 是否躲避拥堵 - */ - fun congestion(congestion: Boolean) { - this.congestion = congestion - save() - } - - /** - * 不走高速 - */ - fun avoidSpeed(avoidSpeed: Boolean) { - this.avoidSpeed = avoidSpeed - if (avoidSpeed) { - this.highSpeed = false + override fun getPathPrefer(): Int { + return settings!!.getInt(KEY_PAHT_PREFER, 0) } - save() - } - - /** - * 避免收费 - */ - fun cost(cost: Boolean) { - this.cost = cost - if (cost) { - this.highSpeed = false + override fun getVolume(): Int { + return settings!!.getInt(KEY_VOLUME, 0) } - save() - } - - /** - * 高速优先 - */ - fun highSpeed(highSpeed: Boolean) { - this.highSpeed = highSpeed - if (highSpeed) { - this.avoidSpeed = false - this.cost = false + override fun getVoiceStyle(): Int { + return settings!!.getInt(KEY_VOICE_STYLE, R.id.rb_navi_detail) } - save() - } + override fun getMapType(): Int { + return settings!!.getInt(KEY_MAP_TYPE, R.id.rb_navi_day) + } - fun isCongestion(): Boolean { - return congestion - } + fun setPathPrefer(type: Int) { + settings!!.edit() + .putInt(KEY_PAHT_PREFER, type) + .apply() + } - fun isAvoidSpeed(): Boolean { - return avoidSpeed - } + fun setVolume(type: Int) { + settings!!.edit() + .putInt(KEY_VOLUME, type) + .apply() + } - fun isCost(): Boolean { - return cost - } + fun setVoiceStyle(type: Int) { + settings!!.edit() + .putInt(KEY_VOICE_STYLE, type) + .apply() + } - fun isHighSpeed(): Boolean { - return highSpeed - } + fun setMapType(type: Int) { + settings!!.edit() + .putInt(KEY_MAP_TYPE, type) + .apply() + } - private fun save() { - settings.edit() - .putBoolean("congestion", congestion) - .putBoolean("avoidSpeed", avoidSpeed) - .putBoolean("cost", cost) - .putBoolean("highSpeed", highSpeed) - .apply() - updateConfig() + fun setMonitor(type: Boolean) { + isMonitor = type + } - } + fun isMonitor(): Boolean { + return isMonitor + } - override fun init(context: Context) { - settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE) + fun setGpsSimulator(type: Boolean) { + isGpsSimulator = type + } - congestion = settings.getBoolean("congestion", false) - avoidSpeed = settings.getBoolean("avoidSpeed", false) - cost = settings.getBoolean("cost", false) - highSpeed = settings.getBoolean("highSpeed", false) - updateConfig() - } + fun isGpsSimulator(): Boolean { + return isGpsSimulator + } - private fun updateConfig() { - SearchServiceHolder.getNavi() - .naviConfig - .cost(cost) - .avoidSpeed(avoidSpeed) - .highSpeed(highSpeed) - .congestion(congestion) - } + /** + * 是否躲避拥堵 + */ + fun congestion(congestion: Boolean) { + this.congestion = congestion + save() + } + + /** + * 不走高速 + */ + fun avoidSpeed(avoidSpeed: Boolean) { + this.avoidSpeed = avoidSpeed + if (avoidSpeed) { + this.highSpeed = false + } + save() + + } + + /** + * 避免收费 + */ + fun cost(cost: Boolean) { + this.cost = cost + if (cost) { + this.highSpeed = false + } + save() + + } + + /** + * 高速优先 + */ + fun highSpeed(highSpeed: Boolean) { + this.highSpeed = highSpeed + if (highSpeed) { + this.avoidSpeed = false + this.cost = false + } + save() + + } + + fun isCongestion(): Boolean { + return congestion + } + + fun isAvoidSpeed(): Boolean { + return avoidSpeed + } + + fun isCost(): Boolean { + return cost + } + + fun isHighSpeed(): Boolean { + return highSpeed + } + + private fun save() { + settings.edit() + .putBoolean("congestion", congestion) + .putBoolean("avoidSpeed", avoidSpeed) + .putBoolean("cost", cost) + .putBoolean("highSpeed", highSpeed) + .apply() + updateConfig() + + } + + override fun init(context: Context) { + settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE) + + congestion = settings.getBoolean("congestion", false) + avoidSpeed = settings.getBoolean("avoidSpeed", false) + cost = settings.getBoolean("cost", false) + highSpeed = settings.getBoolean("highSpeed", false) + updateConfig() + } + + private fun updateConfig() { + SearchServiceHolder.getNavi() + .naviConfig + .cost(cost) + .avoidSpeed(avoidSpeed) + .highSpeed(highSpeed) + .congestion(congestion) + } + + fun setAimlessMode(type: Int){ + settings.edit().putInt(KEY_AIMLESS_MODE_TYPE, type).apply() + } + + fun getAimlessMode():Int { + return settings.getInt(KEY_AIMLESS_MODE_TYPE, R.id.aimlessModeClose) + } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt index 07d9b1c445..ac06e82a34 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt @@ -9,6 +9,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.commons.debug.DebugConfig +import com.mogo.commons.voice.AIAssist import com.mogo.map.constants.BroadcastMode import com.mogo.map.uicontroller.EnumMapUI import com.mogo.module.common.MogoModulePaths @@ -79,9 +80,6 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - iv_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() - } initViews() initEvent() EventBus.getDefault().register(this) @@ -101,7 +99,8 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { rb_navi_auto.isChecked = SettingManager.mapType == R.id.rb_navi_auto rb_navi_detail.isChecked = SettingManager.voiceStyle == R.id.rb_navi_detail rb_navi_draft.isChecked = SettingManager.voiceStyle == R.id.rb_navi_draft - + aimlessModeClose.isChecked = SettingManager.getAimlessMode() == aimlessModeClose.id + aimlessModeOpen.isChecked = SettingManager.getAimlessMode() == aimlessModeOpen.id updateHome() updateCompany() @@ -109,6 +108,9 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { } private fun initEvent() { + rl_navi_setting_title.setOnClickListener { + SearchServiceHolder.fragmentManager.pop() + } iv_sound_plus.setOnClickListener { VolumeManager.getInstance(context).incVolume() sb_navi_volume_progress.progress = sb_navi_volume_progress.progress.plus(10) @@ -177,6 +179,21 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { } } + aimlessModeGroup.setOnCheckedChangeListener { group, checkedId -> + + SettingManager.setAimlessMode(checkedId) + when (checkedId){ + R.id.aimlessModeClose -> { + SearchServiceHolder.getNavi().setAimlessModeStatus(false) + AIAssist.getInstance(mContext).speakTTSVoice("已为您关闭巡航模式") + } + R.id.aimlessModeOpen -> { + SearchServiceHolder.getNavi().setAimlessModeStatus(true) + AIAssist.getInstance(mContext).speakTTSVoice("已为您开启巡航模式") + } + } + } + tv_navi_clear_home_address.setOnClickListener { AddressManager.deleteHome(context!!) diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml index 1c4a00bfa9..821c7aafa5 100644 --- a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml +++ b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml @@ -313,6 +313,47 @@ + + + + + + + + + + + diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml b/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml index 1b2b1d6786..10e1904bb2 100644 --- a/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml +++ b/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml @@ -125,7 +125,8 @@ android:layout_height="wrap_content" android:layout_weight="1" android:ellipsize="end" - + android:enabled="false" + android:inputType="none" android:textSize="@dimen/module_search_et_text_size" android:imeOptions="actionDone" android:hint="@string/hint_map_search" diff --git a/modules/mogo-module-search/src/main/res/values/strings.xml b/modules/mogo-module-search/src/main/res/values/strings.xml index 7ecb774534..469b899192 100644 --- a/modules/mogo-module-search/src/main/res/values/strings.xml +++ b/modules/mogo-module-search/src/main/res/values/strings.xml @@ -42,4 +42,7 @@ 日夜模式 设置刷新帧率 清空历史记录,确定还是取消 + 巡航播报设置 + 开启 + 关闭 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 5595cbabe8..9f01b0e2b7 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -207,8 +207,7 @@ public class MogoServices implements IMogoMapListener, mUiController.setLockZoom( ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL ); mStatusManager.setUserInteractionStatus( TAG, true, false ); mUiController.recoverLockMode(); - notifyRefreshData( mLastAutoRefreshLocation, - ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback ); + notifyRefreshData( mLastAutoRefreshLocation, ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback ); } }; private Context mContext; @@ -505,6 +504,8 @@ public class MogoServices implements IMogoMapListener, return; } + Logger.d( TAG, "mLastZoomLevel = %s, zoom = %s", mLastZoomLevel, zoom ); + // 手动刷新触发 if ( mLastZoomLevel - zoom > mCustomRefreshStrategy.getZoomOutLevel() ) { // 缩放级别缩小 @@ -519,6 +520,7 @@ public class MogoServices implements IMogoMapListener, msg.what = ServiceConst.MSG_MAP_CHANGED; msg.obj = new RefreshObject( mCustomRefreshCallback, getQueryRadius(), latLng, 0 ); mThreadHandler.sendMessage( msg ); + Logger.d( TAG, "平移触发" ); } } @@ -536,7 +538,6 @@ public class MogoServices implements IMogoMapListener, */ private boolean invokeRefreshWhenTranslationByUser( MogoLatLng latLng ) { try { - Trace.beginSection( "timer.invokeRefreshWhenTranslationByUser" ); float factor = 0.0f; if ( mIsVertical ) { factor = getMapCameraFactWidth(); @@ -547,7 +548,7 @@ public class MogoServices implements IMogoMapListener, return false; } float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation ); - Trace.endSection(); + Logger.d( TAG, "move distance = %s, factor = %s", distance, factor ); return distance > factor; } catch ( Exception e ) { Logger.e( TAG, e, "warming. " ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java index 10250b21ab..967f8e7155 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -78,7 +78,7 @@ public class ServiceConst { public static final int DEFAULT_LOCK_CAR_ZOOM_LEVEL = 16; /** - * 自动酸辛默认半径 + * 自动刷新默认半径 */ public static final int DEFAULT_AUTO_REFRESH_DATA_RADIUS = 2_000; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 2828c1b12c..dede957aa0 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -606,18 +606,18 @@ public class MapMarkerManager implements IMogoMarkerClickListener, if ( markerCardResult == null ) { return; } - JSONArray array = new JSONArray(); + final Map< String, Object > properties = new HashMap<>(); List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); int size = onlineCarList == null ? 0 : onlineCarList.size(); - fillNumberTrackEventBody( array, 3, size ); + fillNumberTrackEventBody( properties, 3, size ); size = exploreWayList == null ? 0 : exploreWayList.size(); - fillNumberTrackEventBody( array, 1, size ); + fillNumberTrackEventBody( properties, 1, size ); size = shareMusicList == null ? 0 : shareMusicList.size(); - fillNumberTrackEventBody( array, 4, size ); + fillNumberTrackEventBody( properties, 4, size ); int num_gas_station = 0; int num_traffic_check = 0; @@ -650,18 +650,13 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } } - fillNumberTrackEventBody( array, 2, num_gas_station ); - fillNumberTrackEventBody( array, 6, num_road_closed ); - fillNumberTrackEventBody( array, 5, num_traffic_check ); - fillNumberTrackEventBody( array, 7, num_shop_discount ); - fillNumberTrackEventBody( array, 8, num_fours_shop ); + fillNumberTrackEventBody( properties, 2, num_gas_station ); + fillNumberTrackEventBody( properties, 6, num_road_closed ); + fillNumberTrackEventBody( properties, 5, num_traffic_check ); + fillNumberTrackEventBody( properties, 7, num_shop_discount ); + fillNumberTrackEventBody( properties, 8, num_fours_shop ); try { - if ( array.length() == 0 ) { - return; - } - final Map< String, Object > properties = new HashMap<>(); - properties.put( "data", array.toString() ); MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Data_Get", properties ); } catch ( Exception e ) { e.printStackTrace(); @@ -706,17 +701,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener, /** * 统计埋点 */ - private synchronized static void fillNumberTrackEventBody( JSONArray arr, int type, int size ) { - JSONObject object = new JSONObject(); - try { - object.put( "type", type ); - object.put( "num", size ); - if ( arr != null ) { - arr.put( object ); - } - } catch ( JSONException e ) { - e.printStackTrace(); - } + private synchronized static void fillNumberTrackEventBody( Map< String, Object > properties, int type, int size ) { + properties.put( "type" + type, type ); + properties.put( "num" + type, size ); } /** diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java index 06105ec2f5..b5abb42654 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java @@ -86,10 +86,18 @@ public interface IMogoStatusManager extends IProvider { /** * 求助状态 + * * @return */ boolean isSeekHelping(); + /** + * 是否在查看全程状态 + * + * @return + */ + boolean isDisplayOverview(); + /** * 设置小智语音UI状态 * @@ -174,10 +182,19 @@ public interface IMogoStatusManager extends IProvider { /** * 设置求助状态 + * * @param tag * @param seekHelping */ - void setSeekHelping(String tag, boolean seekHelping); + void setSeekHelping( String tag, boolean seekHelping ); + + /** + * 设置展示全程状态 + * + * @param tag + * @param display + */ + void setDisplayOverview( String tag, boolean display ); /** * 注册监听 diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java index 5dc6262546..f6f078d542 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java @@ -64,5 +64,10 @@ public enum StatusDescriptor { /** * 求助状态 */ - SEEK_HELPING; + SEEK_HELPING, + + /** + * 展示全程 + */ + DISPLAY_OVERVIEW; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java index e3d86b0ae3..6ef9929854 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java @@ -22,7 +22,7 @@ public interface IMogoWindowManager extends IProvider { * @param y 左上角y坐标 * @param movable 是否可移动(无效) */ - void addView(View view, int x, int y, boolean movable); + void addView( View view, int x, int y, boolean movable ); /** @@ -32,7 +32,7 @@ public interface IMogoWindowManager extends IProvider { * @param params 布局参数 * @param movable 是否可移动(无效) */ - void addView(View view, FrameLayout.LayoutParams params, boolean movable); + void addView( View view, FrameLayout.LayoutParams params, boolean movable ); /** * 向window中添加指定的布局,优先级大的展示 @@ -43,7 +43,7 @@ public interface IMogoWindowManager extends IProvider { * @param y 左上角y坐标 * @param movable 是否可移动(无效) */ - void addView(int priority, View view, int x, int y, boolean movable); + void addView( int priority, View view, int x, int y, boolean movable ); /** * 向window中添加指定的布局,优先级大的展示 @@ -53,12 +53,22 @@ public interface IMogoWindowManager extends IProvider { * @param params 布局参数 * @param movable 是否可移动(无效) */ - void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable); + void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable ); /** * 移除对应的 view * * @param view */ - void removeView(View view); + void removeView( View view ); + + /** + * 隐藏所有 + */ + void hideAll(); + + /** + * 显示所有 + */ + void showAll(); } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index 117f11db27..47202f552c 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -105,6 +105,11 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.SEEK_HELPING ); } + @Override + public boolean isDisplayOverview() { + return get_bool_val( StatusDescriptor.DISPLAY_OVERVIEW ); + } + private boolean get_bool_val( StatusDescriptor descriptor ) { Boolean val = mStatus.get( descriptor ); return val == null ? false : val; @@ -190,6 +195,13 @@ public class MogoStatusManager implements IMogoStatusManager { recordStatusModifier( tag, StatusDescriptor.SEEK_HELPING ); } + @Override + public void setDisplayOverview( String tag, boolean display ) { + mStatus.put( StatusDescriptor.DISPLAY_OVERVIEW, display ); + invokeStatusChangedListener( StatusDescriptor.DISPLAY_OVERVIEW, display ); + recordStatusModifier( tag, StatusDescriptor.DISPLAY_OVERVIEW ); + } + private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) { if ( mListeners.containsKey( descriptor ) ) { Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();