diff --git a/app/build.gradle b/app/build.gradle index 6c550b7979..69a11edf58 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { flavorDimensions "product", "env" productFlavors { - //诺威达 + // 诺威达 nwd { dimension "product" sourceSets { @@ -64,6 +64,16 @@ android { manifest.srcFile 'src/nwd/AndroidManifest.xml' } } + applicationId rootProject.ext.android.applicationId + } + d80x { + dimension "product" + sourceSets { + main { + manifest.srcFile 'src/d80x/AndroidManifest.xml' + } + } + applicationId rootProject.ext.android.zhidadoApplicationId } zhidao { dimension "product" @@ -72,6 +82,7 @@ android { manifest.srcFile 'src/main/AndroidManifest.xml' } } + applicationId rootProject.ext.android.applicationId } qa { dimension "env" diff --git a/app/src/d80x/AndroidManifest.xml b/app/src/d80x/AndroidManifest.xml new file mode 100644 index 0000000000..53ab924776 --- /dev/null +++ b/app/src/d80x/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/config.gradle b/config.gradle index 1b86c8dc64..cc4b9526a3 100644 --- a/config.gradle +++ b/config.gradle @@ -1,10 +1,11 @@ ext { android = [ - applicationId : "com.mogo.launcher", - compileSdkVersion: 28, - buildToolsVersion: "29.0.2", - minSdkVersion : 19, - targetSdkVersion : 22, + applicationId : "com.mogo.launcher", + zhidadoApplicationId: "com.zhidao.launcher", + compileSdkVersion : 28, + buildToolsVersion : "29.0.2", + minSdkVersion : 19, + targetSdkVersion : 22, versionName : "8.0.4", ] 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 eda8168342..cd3c9e8f0c 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 @@ -14,7 +14,6 @@ import android.view.MotionEvent; import android.view.View; import android.view.animation.Interpolator; -import com.alibaba.idst.nls.internal.utils.L; import com.amap.api.maps.AMap; import com.amap.api.maps.AMapUtils; import com.amap.api.maps.CameraUpdateFactory; @@ -47,6 +46,7 @@ import com.mogo.map.impl.amap.utils.MogoMapUtils; import com.mogo.map.impl.amap.utils.ObjectUtils; import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.uicontroller.CarCursorOption; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.MapControlResult; @@ -87,6 +87,11 @@ public class AMapNaviViewWrapper implements IMogoMapView, private boolean mIsCarLocked = false; private float mDefaultZoomLevel = 16.0f; + private final CarCursorOption DEFAULT_OPTION = new CarCursorOption.Builder() + .carCursorRes( R.drawable.map_api_ic_current_location2 ) + .naviCursorRes( R.drawable.ic_amap_navi_cursor ) + .build(); + private CarCursorOption mCarCursorOption = DEFAULT_OPTION; public AMapNaviViewWrapper( AMapNaviView mapView ) { this.mMapView = mapView; @@ -113,8 +118,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, // 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。 // options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() ); // 设置自车的图片对象 - options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), - R.drawable.ic_amap_navi_cursor ) ); + options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), DEFAULT_OPTION.getNaviCursorRes() ) ); // 设置指南针图标否在导航界面显示,默认显示。true,显示;false,隐藏。 options.setCompassEnabled( false ); // 黑夜模式 @@ -463,10 +467,10 @@ public class AMapNaviViewWrapper implements IMogoMapView, break; case NorthUP_2D: mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE ); - break; + break; } - Logger.d(TAG,"mCurrentUIMode--->"+mCurrentUIMode.name()); + Logger.d( TAG, "mCurrentUIMode--->" + mCurrentUIMode.name() ); if ( options == null ) { return; } @@ -517,7 +521,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, style.showMyLocation( visible ); if ( visible ) { // 强制刷新一遍车标 - style.myLocationIcon( BitmapDescriptorFactory.fromResource( R.drawable.map_api_ic_current_location2 ) ); + style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) ); } mMapView.getMap().setMyLocationStyle( style ); } @@ -840,4 +844,37 @@ public class AMapNaviViewWrapper implements IMogoMapView, public synchronized boolean isCarLocked() { return mIsCarLocked; } + + @Override + public void setCarCursorOption( CarCursorOption option ) { + if ( mCarCursorOption != null ) { + mCarCursorOption.destroy(); + } + try { + mCarCursorOption = option.clone(); + } catch ( CloneNotSupportedException e ) { + mCarCursorOption = DEFAULT_OPTION; + } + if ( !checkAMapView() ) { + return; + } + AMapNaviViewOptions options = mMapView.getViewOptions(); + if ( options != null && mCarCursorOption.getNaviCursorRes() != 0 ) { + options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), mCarCursorOption.getNaviCursorRes() ) ); + mMapView.setViewOptions( options ); + } + + if ( mMapView.getMap() == null ) { + return; + } + MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); + if ( mCarCursorOption.getCarCursorBmp() != null && !mCarCursorOption.getCarCursorBmp().isRecycled() ) { + style.myLocationIcon( BitmapDescriptorFactory.fromBitmap( mCarCursorOption.getCarCursorBmp() ) ); + } else { + if ( mCarCursorOption.getCarCursorRes() != 0 ) { + style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) ); + } + } + mMapView.getMap().setMyLocationStyle( style ); + } } 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 0c5fd01576..6e395ec1ba 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 @@ -9,6 +9,7 @@ import android.view.animation.Interpolator; import com.mogo.map.MogoLatLng; import com.mogo.map.MogoMap; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.uicontroller.CarCursorOption; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.MapControlResult; @@ -252,4 +253,11 @@ public class AMapUIController implements IMogoMapUIController { } return false; } + + @Override + public void setCarCursorOption( CarCursorOption option ) { + if ( mClient != null ) { + mClient.setCarCursorOption( option ); + } + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/CarCursorOption.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/CarCursorOption.java new file mode 100644 index 0000000000..86e8432f7e --- /dev/null +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/CarCursorOption.java @@ -0,0 +1,125 @@ +package com.mogo.map.uicontroller; + +import android.graphics.Bitmap; + +import androidx.annotation.DrawableRes; + +import com.mogo.map.IDestroyable; + +/** + * @author congtaowang + * @since 2020-04-13 + *

+ * 设置自车图标 + */ +public class CarCursorOption implements Cloneable, IDestroyable { + + private CarCursorOption() { + } + + /** + * 自车图标资源 + */ + @DrawableRes + private int mCarCursorRes = 0; + + /** + * 自车图标图片,优先使用 + */ + private Bitmap mCarCursorBmp; + + /** + * 导航图标资源 + */ + @DrawableRes + private int mNaviCursorRes = 0; + + public int getCarCursorRes() { + return mCarCursorRes; + } + + public void setCarCursorRes( int carCursorRes ) { + this.mCarCursorRes = carCursorRes; + } + + public Bitmap getCarCursorBmp() { + return mCarCursorBmp; + } + + public void setCarCursorBmp( Bitmap carCursorBmp ) { + this.mCarCursorBmp = carCursorBmp; + } + + public int getNaviCursorRes() { + return mNaviCursorRes; + } + + public void setNaviCursorRes( int naviCursorRes ) { + this.mNaviCursorRes = naviCursorRes; + } + + public static class Builder { + + private CarCursorOption target; + + public Builder() { + target = new CarCursorOption(); + } + + /** + * 自车图标资源 + */ + public Builder carCursorRes( @DrawableRes int redId ) { + target.mCarCursorRes = redId; + return this; + } + + /** + * 自车图标图片,优先使用 + */ + public Builder carCursorBmp( Bitmap bmp ) { + target.mCarCursorBmp = bmp; + return this; + } + + /** + * 导航图标资源 + * + * @param naviCursorRes + * @return + */ + public Builder naviCursorRes( int naviCursorRes ) { + target.mNaviCursorRes = naviCursorRes; + return this; + } + + public CarCursorOption build() { + return target; + } + } + + @Override + public CarCursorOption clone() throws CloneNotSupportedException { + CarCursorOption option = ( CarCursorOption ) super.clone(); + if ( mCarCursorBmp != null && !mCarCursorBmp.isRecycled() ) { + try { + option.mCarCursorBmp = Bitmap.createBitmap( mCarCursorBmp ); + } catch ( Exception e ) { + option.mCarCursorBmp = null; + } + } + option.mCarCursorRes = mCarCursorRes; + option.mNaviCursorRes = mNaviCursorRes; + return option; + } + + @Override + public void destroy() { + if ( mCarCursorBmp != null && !mCarCursorBmp.isRecycled() ) { + mCarCursorBmp.recycle(); + } + mCarCursorBmp = null; + mCarCursorRes = 0; + mNaviCursorRes = 0; + } +} 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 d5bdcc35f0..053ae1b848 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 @@ -6,6 +6,8 @@ import android.location.Location; import android.view.View; import android.view.animation.Interpolator; +import androidx.annotation.DrawableRes; + import com.mogo.map.MogoLatLng; import com.mogo.map.marker.IMogoMarker; @@ -56,7 +58,6 @@ public interface IMogoMapUIController { void showMyLocation( boolean visible ); /** - * * @param view */ void showMyLocation( View view ); @@ -183,7 +184,15 @@ public interface IMogoMapUIController { /** * 锁车状态 + * * @return */ boolean isCarLocked(); + + /** + * 配置自车图标样式 + * + * @param option + */ + void setCarCursorOption( CarCursorOption option ); } 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 7d37b79375..e430a33b65 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 @@ -8,6 +8,7 @@ import android.view.animation.Interpolator; import com.mogo.map.impl.amap.uicontroller.AMapUIController; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.uicontroller.CarCursorOption; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.MapControlResult; @@ -245,4 +246,11 @@ public class MogoMapUIController implements IMogoMapUIController { } return false; } + + @Override + public void setCarCursorOption( CarCursorOption option ) { + if ( mDelegate != null ) { + mDelegate.setCarCursorOption( option ); + } + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index f1f0822e3e..3092323b9d 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -144,17 +144,6 @@ public class AppNavigatorFragment extends MvpFragment为了您的安全,导航中不可播放视频 com.mogo.launcher + com.zhidao.launcher diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt index 7914bcf599..a52028d2b1 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt @@ -1,10 +1,10 @@ package com.mogo.module.authorize.authprovider.biz +import com.google.gson.Gson import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListener import com.mogo.module.authorize.model.BaseResponse import com.mogo.module.authorize.model.IMogoAuthorizeModel -import com.mogo.module.authorize.model.bean.Agreement -import com.mogo.module.authorize.model.bean.AgreementData +import com.mogo.module.authorize.model.bean.* import com.mogo.module.authorize.net.request import com.mogo.module.authorize.util.DateUtil.parseDateToTime import com.mogo.module.authorize.util.SharedPreferenceUtil.getAuthorizeVersion @@ -31,7 +31,7 @@ open class IMogoAuthorizeController { } }, { msg: String -> onError.invoke(msg) - }) + }, true) } fun invokeAuthorizeContent(tag: String, agreementType: Int) { @@ -62,12 +62,12 @@ open class IMogoAuthorizeController { }) } - private fun realInvokeAuthorizeContent(agreementType: Int, onStart: (() -> Unit), onSuccess: ((BaseResponse) -> Unit), onError: ((String) -> Unit)) { + private fun realInvokeAuthorizeContent(agreementType: Int, onStart: (() -> Unit), onSuccess: ((BaseResponse) -> Unit), onError: ((String) -> Unit), needContent: Boolean = false) { onStart.invoke() try { request> { loader { - authorizeModel.invokeAuthorizeContent(agreementType) + authorizeModel.invokeAuthorizeContent(agreementType, needContent) } onSuccess { onSuccess.invoke(it) @@ -116,4 +116,25 @@ open class IMogoAuthorizeController { val oldVersion = getAuthorizeVersion() return currentTime > oldVersion } + + fun checkIfNeedAuthorize(agreementType: Int) { + request> { + loader { + authorizeModel.invokeIfNeedAuthorize(agreementType) + } + onSuccess { + Logger.d(TAG,"result : ${it.result}") + val result = it.result + when (result.agreementStatus) { + AGREEMENT_EFFECT -> setAuthorizeStatus(agreementType, true) + AGREEMENT_NOT_EFFECT -> setAuthorizeStatus(agreementType, false) + else -> Logger.d(TAG, "agreementStatus is not match any case") + } + } + onError { + Logger.d(TAG, it.message ?: "checkIfNeedAuthorize onError, message is null") + setAuthorizeStatus(agreementType, true) + } + } + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt index 3246b53116..a5e97c2cda 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt @@ -6,6 +6,7 @@ import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListen import com.mogo.module.authorize.model.proxy.AuthorizeProxy import com.mogo.module.authorize.model.proxy.toAuthorizeType import com.mogo.module.authorize.util.SharedPreferenceUtil.needAuthorization +import com.mogo.module.authorize.util.SharedPreferenceUtil.setAuthorizeStatus import com.mogo.module.authorize.util.isDeviceOfD import com.mogo.utils.logger.Logger @@ -19,14 +20,18 @@ open abstract class MogoAuthorizeManagerImpl : IMogoAuthorizeInvoke { override fun needAuthorize(tag: String): Boolean { return if (isDeviceOfD()) { - Logger.d(TAG, "needAuthorize update agreement in background") - baseController.updateAgreementVersion(tag.toAuthorizeType()) + Logger.d(TAG, "===== needAuthorize update agreement in background") + baseController.checkIfNeedAuthorize(tag.toAuthorizeType()) needAuthorization(tag.toAuthorizeType()) } else { false } } + override fun updateAuthorizeStatus(tag: String) { + baseController.checkIfNeedAuthorize(tag.toAuthorizeType()) + } + override fun invokeAuthorizeContent(tag: String) { //todo 后面动态代理统一处理校验问题 Logger.d(TAG, "tag:$tag") diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt index 7a85dc2355..4627cf25e8 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt @@ -67,6 +67,8 @@ class MogoAuthorizeProvider : IMogoModuleProvider { if (isDeviceOfD() && hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) { mogoAuthShow.invokeAuthorizeForShow() } else { + //首次进入Launcher同步一下授权状态,防止由于用户清除数据造成首次加载还会出现授权状态不同步问题 + mogoAuthShow.updateAuthorizeStatus(AUTHORIZE_TYPE_LAUNCHER_MAIN) Logger.d(TAG, "not do match self startUp condition ,wait for someone invoke") } } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt index 7cdfc6af18..c84550a0b7 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt @@ -15,4 +15,12 @@ interface IMogoAuthorizeInvoke : IMogoAuthorizeRegister { * tag:模块ID */ fun invokeAuthorizeContent(tag: String) + + /** + * 更新授权状态 + * tag:模块ID + */ + fun updateAuthorizeStatus(tag:String){ + + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt index 324dd747c3..8d865b3256 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt @@ -15,6 +15,10 @@ import com.mogo.module.authorize.voice.IVoiceCommandListener import com.mogo.module.authorize.voice.IVoiceAuthorizeIntentListener import com.mogo.module.authorize.voice.VoiceUtil import com.mogo.utils.logger.Logger +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.async +import kotlinx.coroutines.withContext class AuthorizeFragment : MvpFragment(), AuthorizeContract.View, View.OnClickListener, IVoiceCommandListener, IVoiceAuthorizeIntentListener { @@ -105,7 +109,12 @@ class AuthorizeFragment : MvpFragment { - val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType)) + suspend fun invokeAuthorizeContent(agreementType: Int, needContent: Boolean = false): BaseResponse { + val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType, needContent)) val map = mapOf("sn" to getSn(), "data" to requestUserAgreement) return apiCall { getNetWorkApi().getAuthorizeContent(map) } } + + suspend fun invokeIfNeedAuthorize(agreementType: Int): BaseResponse { + val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType)) + val map = mapOf("sn" to getSn(), "data" to requestUserAgreement) + return apiCall { getNetWorkApi().checkIfNeedAuthorize(map) } + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt index d530e2741f..bec8a198d5 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt @@ -3,7 +3,21 @@ package com.mogo.module.authorize.model.bean const val AGREEMENT_EFFECT = 1 //用户协议生效 const val AGREEMENT_NOT_EFFECT = 2 //用户协议不生效 -class RequestUserAgreement(val agreementType: Int) +class RequestUserAgreement{ + var agreementType:Int + var want:Boolean = false + + constructor(agreementType:Int){ + this.agreementType = agreementType + } + + constructor(agreementType: Int, want: Boolean) { + this.agreementType = agreementType + this.want = want + } +} + +data class AgreementStatus(val agreementStatus:Int) data class AgreementData(val agreement: Agreement) diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt index ea6538d5f5..71163940dd 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt @@ -1,8 +1,8 @@ package com.mogo.module.authorize.net import com.mogo.module.authorize.model.BaseResponse -import com.mogo.module.authorize.model.bean.Agreement import com.mogo.module.authorize.model.bean.AgreementData +import com.mogo.module.authorize.model.bean.AgreementStatus import retrofit2.http.FieldMap import retrofit2.http.FormUrlEncoded import retrofit2.http.POST @@ -19,4 +19,9 @@ interface AuthorizeApi { @POST("yycp-channelManager/agreement/updateStatus") suspend fun updateAuthorize(@FieldMap updateStatus: Map): BaseResponse + //查询是否要授权 + @FormUrlEncoded + @POST("yycp-channelManager/agreement/queryUserAuthorizeStatusByType") + suspend fun checkIfNeedAuthorize(@FieldMap needAuthorize: Map): BaseResponse + } \ No newline at end of file diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index f1e44b8675..6b8c0ae9c3 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -20,6 +20,11 @@ android { } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + } dependencies { diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java index 9a65d0cfe2..22d5495a51 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java @@ -6,7 +6,6 @@ import androidx.annotation.Keep; import java.util.ArrayList; import java.util.List; -import java.util.Vector; /** * @author congtaowang @@ -38,57 +37,6 @@ public class MogoModulePaths { public static void addModule( String path ) { throw new IllegalArgumentException( "this method can't be invoked." ); } - /** - * 搜索页面模块实例化路径 - */ - @Keep - public static final String PATH_MODULE_SEARCH= "/navi/search/ui"; - - /** - * 搜索页面Activity实例化路径 - */ - @Keep - public static final String PATH_MODULE_NAV_ACTIVITY= "/navi/search/ui/activity"; - - - /** - * 搜索 fragment - */ - @Keep - public static final String PATH_FRAGMENT_SEARCH = "/navi/search"; - - - - /** - * 搜索 fragment - */ - @Keep - public static final String PATH_FRAGMENT_CHOOSE_PAHT = "/navi/search"; - - - - - /** - * 按类别搜索 fragment - */ - @Keep - public static final String PATH_FRAGMENT_SEARCH_CATEGORY = "/navi/search/category"; - - - /** - * 设置 fragment - */ - @Keep - public static final String PATH_FRAGMENT_SETTING = "/navi/setting"; - - - /** - * 设置家和公司 fragment - */ - @Keep - public static final String PATH_FRAGMENT_SETTING_HOME = "/navi/setting/home"; - - /** * 添加卡片模块 diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Interrupter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Interrupter.java new file mode 100644 index 0000000000..b9883148df --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Interrupter.java @@ -0,0 +1,16 @@ +package com.mogo.module.common.map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 拦截器 + */ +public interface Interrupter { + + /** + * 是否拦截 + * @return true - 拦截, false - 不拦截 + */ + boolean interrupt(); +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java new file mode 100644 index 0000000000..7d153e3bc9 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java @@ -0,0 +1,19 @@ +package com.mogo.module.common.map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 地图视图中心点 + */ +public class MapCenterPoint { + + public final double x; + public final double y; + + public MapCenterPoint( double x, double y ) { + this.x = x; + this.y = y; + } + +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java new file mode 100644 index 0000000000..62c4a193ad --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -0,0 +1,125 @@ +package com.mogo.module.common.map; + +import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.common.utils.CarSeries; +import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.logger.Logger; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 地图中心点策略 + */ +public class MapCenterPointStrategy { + + private static final String TAG = "MapCenterPointStrategy"; + + private static Map< Integer, Map< Integer, MapCenterPoint > > sStrategies = new HashMap<>(); + + public static final MapCenterPoint DEFAULT = new MapCenterPoint( 0.677734D, 0.5733333D ); + + static { + // 普通场景,使用高德内部值 + Map< Integer, MapCenterPoint > common = new HashMap<>(); + common.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.5D, 0.666666666D ) ); + common.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.5D, 0.666666666D ) ); + sStrategies.put( Scene.COMMON, common ); + + // 选点场景,定位中心点 + Map< Integer, MapCenterPoint > choosePoint = new HashMap<>(); + choosePoint.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.5D, 0.5D ) ); + choosePoint.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.5D, 0.5D ) ); + sStrategies.put( Scene.CHOOSE_POINT, choosePoint ); + + + // 导航场景,定位视图右下角偏下 + Map< Integer, MapCenterPoint > navi = new HashMap<>(); + navi.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.7734375D, 0.65D ) ); + navi.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.775521D, 0.6759259D ) ); + sStrategies.put( Scene.NAVI, navi ); + + + // 巡航场景,定位视图右下角偏下 + Map< Integer, MapCenterPoint > aimless = new HashMap<>(); + aimless.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.54D ) ); + aimless.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.6833333D ) ); + sStrategies.put( Scene.AIMLESS, aimless ); + + + // 规划路线,定位视图右边 + Map< Integer, MapCenterPoint > calculatePath = new HashMap<>(); + calculatePath.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.733398D, 0.610833D ) ); + calculatePath.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.703125D, 0.6083333D ) ); + sStrategies.put( Scene.CALCULATE_PATH, calculatePath ); + + // 分类搜索,定位视图右边 + Map< Integer, MapCenterPoint > categorySearch = new HashMap<>(); + categorySearch.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.733398D, 0.610833D ) ); + categorySearch.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.733594D, 0.596759D ) ); + sStrategies.put( Scene.CATEGORY_SEARCH, categorySearch ); + } + + public static void addScene( int scene, Map< Integer, MapCenterPoint > config ) { + if ( sStrategies.containsKey( scene ) ) { + Logger.w( TAG, "scene has already defined, append config..." ); + } + if ( sStrategies.get( scene ) != null ) { + sStrategies.get( scene ).putAll( config ); + } else { + sStrategies.put( scene, config ); + } + } + + /** + * 根据场景触发地图视图改变 + * + * @param controller + * @param scene + */ + public static void setMapCenterPointByScene( IMogoMapUIController controller, int scene ) { + if ( controller == null ) { + return; + } + if ( !sStrategies.containsKey( scene ) ) { + Logger.w( TAG, "no strategy for scene: %s, use DEFAULT", scene ); + controller.setPointToCenter( DEFAULT.x, DEFAULT.y ); + return; + } + Map< Integer, MapCenterPoint > points = sStrategies.get( scene ); + int car = CarSeries.getSeries(); + if ( !points.containsKey( car ) ) { + Logger.w( TAG, "no strategy for series: %s, use DEFAULT", scene ); + controller.setPointToCenter( DEFAULT.x, DEFAULT.y ); + return; + } + MapCenterPoint point = points.get( car ); + if ( point == null ) { + Logger.w( TAG, "no strategy config for series: %s, use DEFAULT", scene ); + controller.setPointToCenter( DEFAULT.x, DEFAULT.y ); + return; + } + controller.setPointToCenter( point.x, point.y ); + } + + /** + * 根据场景触发地图视图改变 + * + * @param controller + * @param scene + */ + public static void setMapCenterPointBySceneAndDelay( final IMogoMapUIController controller, final int scene, long delay, final Interrupter interrupter ) { + UiThreadHandler.postDelayed( () -> { + if ( interrupter != null ) { + if ( interrupter.interrupt() ) { + return; + } + } + setMapCenterPointByScene( controller, scene ); + }, delay ); + } + +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java new file mode 100644 index 0000000000..4def37a007 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java @@ -0,0 +1,40 @@ +package com.mogo.module.common.map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 描述 + */ +public interface Scene { + + /** + * 普通场景 + */ + int COMMON = 0; + + /** + * 选点 + */ + int CHOOSE_POINT = 1; + + /** + * 导航 + */ + int NAVI = 2; + + /** + * 巡航 + */ + int AIMLESS = 3; + + /** + * 路线规划 + */ + int CALCULATE_PATH = 4; + + /** + * 分类搜索 + */ + int CATEGORY_SEARCH = 5; +} 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 9c0c026454..3cb221d814 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 @@ -1,10 +1,7 @@ package com.mogo.module.extensions.entrance; import android.content.Intent; -import android.graphics.Color; -import android.graphics.Rect; import android.os.Bundle; -import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; import android.view.View; @@ -12,7 +9,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.MvpFragment; @@ -29,16 +25,14 @@ 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.overlay.MogoPolylineOptions; +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; -import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; -import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListener; -import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeRegister; import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; -import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; import com.mogo.module.extensions.dialog.NaviNoticeDialog; @@ -47,24 +41,16 @@ 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.fragmentmanager.FragmentDescriptor; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoAddressManager; -import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.utils.WindowUtils; -import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; -import retrofit2.http.HEAD; - import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE; /** @@ -118,11 +104,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent /** * 搜索莫模块 */ - private IMogoModuleProvider mSearchProvider; private boolean mIsLock = true; - private TextView ivMode; + private TextView mCameraMode; - private IMogoPolyline iMogoPolyline; public static boolean isClickShare; @Override @@ -145,22 +129,12 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mSearch = findViewById( R.id.module_entrance_id_search ); mSearch.setOnClickListener( view -> { - setMarkerStatus( true ); - mSearchProvider = ( IMogoModuleProvider ) ARouter.getInstance() - .build( MogoModulePaths.PATH_MODULE_SEARCH ) - .navigation(); - final Fragment fragment = mSearchProvider.createFragment( getContext(), null ); - mMogoFragmentManager.push( new FragmentDescriptor.Builder().fragment( fragment ) - .tag( MogoModulePaths.PATH_FRAGMENT_SEARCH ) - .notifyMainModule( true ) - .build() ); - + mApis.getAddressManagerApi().goSearch(); mApis.getAdasControllerApi().closeADAS(); } ); mHome = findViewById( R.id.module_entrance_id_home ); mHome.setOnClickListener( view -> { - setMarkerStatus( true ); mMogoAddressManager.goHome(); mApis.getAdasControllerApi().closeADAS(); @@ -168,7 +142,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCompany = findViewById( R.id.module_entrance_id_company ); mCompany.setOnClickListener( view -> { - setMarkerStatus( true ); mMogoAddressManager.goCompany(); mApis.getAdasControllerApi().closeADAS(); @@ -210,23 +183,21 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() ); naviNoticeDialog.show(); } else { + MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.NAVI ); mMApUIController.recoverLockMode(); } } } ); - ivMode = findViewById( R.id.module_ext_id_north ); - ivMode.setOnClickListener( new View.OnClickListener() { - @Override - public void onClick( View v ) { - if ( ivMode.isSelected() ) { - mMApUIController.changeMapMode( EnumMapUI.CarUp_2D ); - } else { - mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); - } - ivMode.setSelected( !ivMode.isSelected() ); - ivMode.setText( getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); + mCameraMode = findViewById( R.id.module_ext_id_north ); + mCameraMode.setOnClickListener( view -> { + if ( mCameraMode.isSelected() ) { + mMApUIController.changeMapMode( EnumMapUI.CarUp_2D ); + } else { + mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); } + mCameraMode.setSelected( !mCameraMode.isSelected() ); + mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); } ); mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container ); @@ -243,23 +214,17 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 ); if ( key_type == 10027 ) { if ( opera_type == 0 ) { - ivMode.setSelected( false ); + mCameraMode.setSelected( false ); } else if ( opera_type == 1 ) { - ivMode.setSelected( true ); + mCameraMode.setSelected( true ); } - ivMode.setText( getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); + mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); } } } ); } - - protected void setMarkerStatus( boolean show ) { - mMogoStatusManager.setSearchUIShow( MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show ); - } - - private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV"; @NonNull @@ -340,21 +305,23 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent public void onStartNavi() { mCommonAddress.setVisibility( View.GONE ); mNaviInfo.setVisibility( View.VISIBLE ); - ivMode.setVisibility( View.VISIBLE ); + mCameraMode.setVisibility( View.VISIBLE ); mExitNavi.setVisibility( View.VISIBLE ); - mMApUIController.setPointToCenter( 0.675926, 0.77552 ); - mMApUIController.changeMapMode( ivMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D ); + mMApUIController.changeMapMode( mCameraMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D ); + MapCenterPointStrategy.setMapCenterPointBySceneAndDelay( mMApUIController, Scene.NAVI, 500, () -> { + return !mMogoNavi.isNaviing(); + } ); } @Override public void onStopNavi() { mCommonAddress.setVisibility( View.VISIBLE ); mNaviInfo.setVisibility( View.GONE ); - ivMode.setVisibility( View.GONE ); + mCameraMode.setVisibility( View.GONE ); mExitNavi.setVisibility( View.GONE ); mSpeedLimit.setVisibility( View.GONE ); - mMApUIController.setPointToCenter( 0.66145, 0.590688 ); mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); + MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.AIMLESS ); } @Override 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 287ce94802..9e9a8846fe 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 @@ -21,6 +21,8 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.module.main.cards.CardIntroduceConfigs; import com.mogo.module.main.cards.CardModulesAdapter; import com.mogo.module.main.cards.HorizentalStackTransformer; @@ -261,7 +263,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 右移地图中心点 mMogoMapUIController = mMogoMapService.getMapUIController(); - mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 ); + MapCenterPointStrategy.setMapCenterPointByScene( mMogoMapUIController, Scene.AIMLESS ); // 开启定位 startLocation(); diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java index 5c75c27f04..6092bc523d 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java @@ -34,4 +34,11 @@ public class AMapConstants { public static final float AMAP_ROUTE_OVERLAY_TRANSPARENCY_SELECTED = 1f; public static final float AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED = 0.3f; + + public static final String PATH_FRAGMENT_SEARCH = "PATH_FRAGMENT_SEARCH"; + public static final String PATH_FRAGMENT_CHOOSE_PATH = "PATH_FRAGMENT_CHOOSE_PATH"; + public static final String PATH_FRAGMENT_SEARCH_CATEGORY = "PATH_FRAGMENT_SEARCH_CATEGORY"; + public static final String PATH_FRAGMENT_SETTING = "PATH_FRAGMENT_SETTING"; + public static final String PATH_FRAGMENT_NAVI_SETTING = "PATH_FRAGMENT_NAVI_SETTING"; + public static final String PATH_FRAGMENT_SETTING_HOME = "PATH_FRAGMENT_SETTING_HOME"; } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt index 75dc3bf40d..119ae65f6d 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt @@ -16,6 +16,7 @@ import com.mogo.service.MogoServicePaths import com.mogo.service.analytics.IMogoAnalytics import com.mogo.service.fragmentmanager.FragmentDescriptor import com.mogo.service.fragmentmanager.IMogoFragmentManager +import com.mogo.service.launcher.IMogoLauncher import com.mogo.service.map.IMogoMapService import com.mogo.service.module.IMogoRegisterCenter import com.mogo.service.statusmanager.IMogoStatusManager @@ -28,24 +29,14 @@ import com.mogo.service.statusmanager.IMogoStatusManager object SearchServiceHolder{ // 单例对象,要使用Application Context private lateinit var context: Context - val fragmentManager: IMogoFragmentManager = ARouter.getInstance().build( - MogoServicePaths.PATH_FRAGMENT_MANAGER - ).navigation() as IMogoFragmentManager - val mapService: IMogoMapService = ARouter.getInstance().build( - MogoServicePaths.PATH_SERVICES_MAP - ).navigation() as IMogoMapService - val listenerCenter: IMogoRegisterCenter = ARouter.getInstance().build( - MogoServicePaths.PATH_REGISTER_CENTER - ).navigation() as IMogoRegisterCenter - val statusManager: IMogoStatusManager = ARouter.getInstance().build( - MogoServicePaths.PATH_STATUS_MANAGER - ).navigation() as IMogoStatusManager - val analyticsManager: IMogoAnalytics = ARouter.getInstance().build( - MogoServicePaths.PATH_UTILS_ANALYTICS - ).navigation() as IMogoAnalytics - val guideShowProvider: IGuideShowProvider = ARouter.getInstance().build( - GuideShowProviderConstant.GUIDE_SHOW_PROVIDER - ).navigation() as IGuideShowProvider + + val fragmentManager: IMogoFragmentManager = ARouter.getInstance().build(MogoServicePaths.PATH_FRAGMENT_MANAGER).navigation() as IMogoFragmentManager + val mapService: IMogoMapService = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation() as IMogoMapService + val listenerCenter: IMogoRegisterCenter = ARouter.getInstance().build(MogoServicePaths.PATH_REGISTER_CENTER).navigation() as IMogoRegisterCenter + val statusManager: IMogoStatusManager = ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation() as IMogoStatusManager + val analyticsManager: IMogoAnalytics = ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation() as IMogoAnalytics + val guideShowProvider: IGuideShowProvider = ARouter.getInstance().build(GuideShowProviderConstant.GUIDE_SHOW_PROVIDER).navigation() as IGuideShowProvider + val mogoLauncher: IMogoLauncher = ARouter.getInstance().build(MogoServicePaths.PATH_LAUNCHER_API).navigation() as IMogoLauncher var geoSearch: IMogoGeoSearch? = null fun init(context: Context) { @@ -86,10 +77,4 @@ object SearchServiceHolder{ return geoSearch!! } - fun setMarkerStatus(show: Boolean) { - statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show - ) - } - } \ No newline at end of file diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt index b779530976..7e57736dad 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt @@ -2,20 +2,25 @@ package com.mogo.module.navi.manager import android.annotation.SuppressLint import android.content.Context +import com.mogo.map.MogoLatLng import com.mogo.module.common.MogoModulePaths +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.bean.EntityConvertUtils import com.mogo.module.navi.bean.SearchPoi +import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.DataConstants import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.cp.AddressHelper import com.mogo.module.navi.dao.SearchPoiDao import com.mogo.module.navi.database.AppDataBase +import com.mogo.module.navi.ui.search.CategorySearchFragment import com.mogo.module.navi.ui.search.ChoosePathFragment +import com.mogo.module.navi.ui.search.SearchFragment +import com.mogo.module.navi.ui.setting.NaviSettingFragment import com.mogo.module.navi.ui.setting.SettingAddressFragment import com.mogo.service.fragmentmanager.FragmentDescriptor -import com.mogo.utils.UiThreadHandler import io.reactivex.Observable -import io.reactivex.ObservableEmitter import io.reactivex.ObservableOnSubscribe import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -27,124 +32,153 @@ import org.greenrobot.eventbus.EventBus */ @SuppressLint("StaticFieldLeak") object AddressManager { - var homeAddress: SearchPoi? = null - var companyAddress: SearchPoi? = null - private lateinit var poiDao:SearchPoiDao - fun goHome() { - if (homeAddress == null) { - pushSettingAddress( - DataConstants.TYPE_HOME_ADDRESS - ) - } else { - var newInstance = ChoosePathFragment.newInstance( - EntityConvertUtils.poi2MogoTip( - homeAddress - ).point - ) - SearchServiceHolder.push( - newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - } - } - fun goCompany() { - if (companyAddress == null) { - pushSettingAddress( - DataConstants.TYPE_COMPANY_ADDRESS - ) - } else { - var newInstance = - ChoosePathFragment.newInstance( - EntityConvertUtils.poi2MogoTip( - companyAddress - ).point + val TAG: String = "AddressManager.kt" + + var homeAddress: SearchPoi? = null + var companyAddress: SearchPoi? = null + private lateinit var poiDao: SearchPoiDao + + fun hasHome(): Boolean { + return homeAddress != null + } + + fun hasCompany(): Boolean { + return companyAddress != null + } + + private fun choosePoint(type: Int){ + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CHOOSE_POINT) + val builder = FragmentDescriptor.Builder() + builder.fragment(SettingAddressFragment.newInstance(type)) + val build = builder.tag(AMapConstants.PATH_FRAGMENT_SETTING_HOME).build() + SearchServiceHolder.fragmentManager.push(build) + } + + private lateinit var context: Context + @SuppressLint("CheckResult") + fun init(context: Context) { + + this.context = context + poiDao = AppDataBase.getDatabase(context).poiDao() + poiDao.companyAddress + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { t1, t2 -> + if (t1.size > 0) { + companyAddress = t1[0] + } + } + + poiDao.homeAddress + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { t1, t2 -> + if (t1.size > 0) { + homeAddress = t1[0] + } + } + } + + fun insert(searchPoi: SearchPoi) { + + EventBus.getDefault().post(searchPoi) + if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) { + companyAddress = searchPoi + } else { + homeAddress = searchPoi + } + } + + fun deleteHome(context: Context) { + Observable.create( + ObservableOnSubscribe { + poiDao.delete(homeAddress) + homeAddress?.name = "" + AddressHelper.notifyAddressChanged(1) + + homeAddress = null + }) + .subscribeOn(Schedulers.io()) + .subscribe() + + + } + + fun deleteCompany(context: Context) { + Observable.create( + ObservableOnSubscribe { + poiDao.delete(companyAddress) + companyAddress?.name = "" + AddressHelper.notifyAddressChanged(0) + + companyAddress = null + }) + .subscribeOn(Schedulers.io()) + .subscribe() + } + + /** + * 回家 + */ + fun goHome() { + SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) + if (homeAddress == null) { + choosePoint(DataConstants.TYPE_HOME_ADDRESS) + } else { + calculatePath(EntityConvertUtils.poi2MogoTip(homeAddress).point) + } + } + + /** + * 去公司 + */ + fun goCompany() { + SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) + if (companyAddress == null) { + choosePoint( DataConstants.TYPE_COMPANY_ADDRESS) + } else { + calculatePath(EntityConvertUtils.poi2MogoTip(companyAddress).point) + } + } + + /** + * 搜索 + */ + fun goSearch() { + SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) + SearchServiceHolder.fragmentManager.push( + FragmentDescriptor.Builder().fragment(SearchFragment()) + .tag(AMapConstants.PATH_FRAGMENT_SEARCH) + .notifyMainModule(true) + .build() ) - SearchServiceHolder.push( - newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - } - } - fun hasHome(): Boolean { - return homeAddress != null - } - - fun hasCompany(): Boolean { - return companyAddress != null - } - - private fun pushSettingAddress(type: Int) { - - val builder = FragmentDescriptor.Builder() - builder.fragment(SettingAddressFragment.newInstance(type)) - val build = builder.tag(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME) - .build() - SearchServiceHolder.fragmentManager.push(build) - } - - private lateinit var context: Context - @SuppressLint("CheckResult") fun init(context: Context) { - - this.context=context - poiDao = AppDataBase.getDatabase(context) - .poiDao() - poiDao - .companyAddress - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { t1, t2 -> - if (t1.size > 0) { - companyAddress = t1[0] - } + /** + * 路径规划 + */ + fun calculatePath(destination: MogoLatLng?) { + destination?.let { + var newInstance = ChoosePathFragment.newInstance(destination) + SearchServiceHolder.push(newInstance, AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) } - - poiDao - .homeAddress - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { t1, t2 -> - if (t1.size > 0) { - homeAddress = t1[0] - } - } - } - - fun insert(searchPoi: SearchPoi) { - - EventBus.getDefault().post(searchPoi) - if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) { - companyAddress = searchPoi - } else { - homeAddress = searchPoi } - } - fun deleteHome(context: Context){ - Observable.create( - ObservableOnSubscribe { - poiDao.delete(homeAddress) - homeAddress?.name="" - AddressHelper.notifyAddressChanged( 1) + fun categorySearch(category: String){ + val searchFragment = CategorySearchFragment.newInstance(category) + SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(searchFragment) + .tag(AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY) + .notifyMainModule(true) + .build()) + } - homeAddress=null - }) - .subscribeOn(Schedulers.io()) - .subscribe() + fun goSettings(){ + val naviSettingFragment = NaviSettingFragment() + SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(naviSettingFragment) + .tag(AMapConstants.PATH_FRAGMENT_NAVI_SETTING) + .notifyMainModule(true) + .build()) + } - - } - - fun deleteCompany(context: Context){ - Observable.create( - ObservableOnSubscribe { - poiDao.delete(companyAddress) - companyAddress?.name="" - AddressHelper.notifyAddressChanged( 0) - - companyAddress=null - }) - .subscribeOn(Schedulers.io()) - .subscribe() - } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java index 90939630d2..27790e3ad2 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java @@ -2,6 +2,7 @@ package com.mogo.module.navi.manager; import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.MogoLatLng; import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.service.MogoServicePaths; import com.mogo.service.module.IMogoAddressManager; @@ -12,6 +13,7 @@ import com.mogo.service.module.IMogoAddressManager; */ @Route( path = MogoServicePaths.PATH_ADDRESS_MANAGER ) public class MogoAddressManager implements IMogoAddressManager { + @Override public void goHome() { AddressManager.INSTANCE.goHome(); } @@ -20,7 +22,27 @@ public class MogoAddressManager implements IMogoAddressManager { AddressManager.INSTANCE.goCompany(); } - @Override public void init(Context context) { + @Override + public void goSearch() { + AddressManager.INSTANCE.goSearch(); + } + + @Override + public void calculatePath( MogoLatLng destination ) { + AddressManager.INSTANCE.calculatePath( destination ); + } + + @Override + public void categorySearch( String category ) { + AddressManager.INSTANCE.categorySearch( category ); + } + + @Override + public void goSettings() { + AddressManager.INSTANCE.goSettings(); + } + + @Override public void init( Context context) { AddressManager.INSTANCE.init(context); SearchServiceHolder.INSTANCE.init(context); SettingManager.INSTANCE.init(context); diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java index 0fa0593bde..010ab585cd 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.constants.BroadcastMode; import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.navi.constants.AMapConstants; import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.module.navi.ui.search.CategorySearchFragment; import com.mogo.module.navi.ui.search.SearchFragment; @@ -30,7 +31,7 @@ public class MogoSearchManager implements IMogoSearchManager { SearchFragment searchFragment = new SearchFragment(); SearchServiceHolder.INSTANCE.getFragmentManager() .push(new FragmentDescriptor.Builder().fragment(searchFragment) - .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH) + .tag( AMapConstants.PATH_FRAGMENT_SEARCH) .notifyMainModule(true) .build()); } @@ -49,12 +50,7 @@ public class MogoSearchManager implements IMogoSearchManager { } @Override public void showCategory(String keyword) { - Fragment searchFragment = CategorySearchFragment.Companion.newInstance(keyword); - SearchServiceHolder.INSTANCE.getFragmentManager() - .push(new FragmentDescriptor.Builder().fragment(searchFragment) - .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY) - .notifyMainModule(true) - .build()); + AddressManager.INSTANCE.categorySearch( keyword ); } @Override public void init(Context context) { 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 d6fd55670e..e67b538fc0 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 @@ -1,109 +1,90 @@ package com.mogo.module.navi.manager -import android.app.SearchManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.text.TextUtils import com.mogo.map.MogoLatLng +import com.mogo.map.navi.MogoNaviConfig import com.mogo.module.common.MogoModulePaths import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.ui.search.ChoosePathFragment -import com.mogo.utils.logger.Logger -import androidx.core.content.ContextCompat.startActivity -import com.mogo.map.navi.MogoNaviConfig import com.mogo.module.navi.ui.search.SearchFragment import com.mogo.service.fragmentmanager.FragmentDescriptor +import com.mogo.utils.logger.Logger /** *@author zyz * 2020-01-18. */ object NaviManager { - private lateinit var mReceiver: BroadcastReceiver - private val AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV" + private lateinit var mReceiver: BroadcastReceiver + private val AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV" - fun init(context: Context) { - mReceiver = object : BroadcastReceiver() { - override fun onReceive( - context: Context, - intent: Intent - ) { - val action = intent.action - if (TextUtils.equals(action, AUTONAVI_STANDARD_BROADCAST_RECV)) { - val key_type = intent.getIntExtra("KEY_TYPE", 0) - Logger.d("NaviManager", "key_type" + key_type, null) - if (key_type == 10038 || key_type == 10007) { - val lat: Double - val lon: Double + fun init(context: Context) { + mReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + if (TextUtils.equals(action, AUTONAVI_STANDARD_BROADCAST_RECV)) { + val key_type = intent.getIntExtra("KEY_TYPE", 0) + Logger.d("NaviManager", "key_type" + key_type, null) + if (key_type == 10038 || key_type == 10007) { + SearchServiceHolder.mogoLauncher.backToLauncher(context) + choosePath(intent, key_type) + } else if (key_type == 10021) { + SearchServiceHolder.getNavi().stopNavi() + } else if (key_type == 20009) { + SearchServiceHolder.mogoLauncher.backToLauncher(context) + gotoSearch() - if (key_type == 10007) { - lat = intent.getDoubleExtra("ENTRY_LAT", 0.0) - lon = intent.getDoubleExtra("ENTRY_LON", 0.0) - } else { - lat = intent.getDoubleExtra("LAT", 0.0) - lon = intent.getDoubleExtra("LON", 0.0) - - } - showHome() - - SearchServiceHolder.setMarkerStatus(true) - var newInstance = - ChoosePathFragment.newInstance( - MogoLatLng(lat, lon) - ) - SearchServiceHolder.push( - newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - } else if (key_type == 10021) { - SearchServiceHolder.getNavi() - .stopNavi() - } else if (key_type == 20009) { - showHome() - SearchServiceHolder.setMarkerStatus(true) - SearchServiceHolder.fragmentManager - .clearAll() - - val searchFragment = SearchFragment() - SearchServiceHolder.fragmentManager - .push( - FragmentDescriptor.Builder().fragment(searchFragment) - .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH) - .notifyMainModule(true) - .build() - ) - - } else if (key_type == 10005) { + } else if (key_type == 10005) { // * 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。 // * `避免收费` |`1` `多策略算路` |`2` `不走高速` |`3` ` 躲避拥堵` |`4` `不走高速且避免收费` |`5` `不走高速且躲避拥堵` |`6` // * `躲避收费和拥堵` |`7` `不走高速躲避收费和拥堵` |`8` `高速优先` |`20` `躲避拥堵且高速优先` |`24` // * - var prefer = intent.getIntExtra("NAVI_ROUTE_PREFER", 0) + var prefer = intent.getIntExtra("NAVI_ROUTE_PREFER", 0) - var avoidSpeed = MogoNaviConfig().congestion(prefer == 4) - .cost(prefer == 1||prefer == 7) - .highSpeed(prefer == 20) - .avoidSpeed(prefer == 3) - SearchServiceHolder.getNavi() - .reCalculateRoute(avoidSpeed) + var avoidSpeed = MogoNaviConfig().congestion(prefer == 4) + .cost(prefer == 1 || prefer == 7) + .highSpeed(prefer == 20) + .avoidSpeed(prefer == 3) + SearchServiceHolder.getNavi().reCalculateRoute(avoidSpeed) - } + } + } + } + + /** + * 打开地图 + */ + private fun gotoSearch() { + AddressManager.goSearch() + } + + /** + * 唤醒指令导航去哪里 + */ + private fun choosePath(intent: Intent, type: Int) { + val lat: Double + val lon: Double + + if (type == 10007) { + lat = intent.getDoubleExtra("ENTRY_LAT", 0.0) + lon = intent.getDoubleExtra("ENTRY_LON", 0.0) + } else { + lat = intent.getDoubleExtra("LAT", 0.0) + lon = intent.getDoubleExtra("LON", 0.0) + + } + AddressManager.calculatePath(MogoLatLng(lat, lon)) + } } - } + val inputFilter = IntentFilter() + inputFilter.addAction(AUTONAVI_STANDARD_BROADCAST_RECV) + context.registerReceiver(mReceiver, inputFilter) - private fun showHome() { - val intent = Intent(Intent.ACTION_MAIN) - intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK - intent.addCategory(Intent.CATEGORY_HOME) - context.startActivity(intent) - } } - val inputFilter = IntentFilter() - inputFilter.addAction(AUTONAVI_STANDARD_BROADCAST_RECV) - context.registerReceiver(mReceiver, inputFilter) - - } } \ No newline at end of file diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/VolumeManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/VolumeManager.java index 26bbada2d3..c2c38d89de 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/VolumeManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/VolumeManager.java @@ -172,7 +172,7 @@ public class VolumeManager { } /* - 判断是否future渠道 + 判断是否future渠道(F系列) */ private boolean isFuture() { @@ -181,7 +181,8 @@ public class VolumeManager { Class buildConfig = Class.forName("com.mogo.launcher.BuildConfig"); Field flavor = buildConfig.getDeclaredField("FLAVOR"); //String descriptor= Modifier.toString(flavor.getModifiers()); - return TextUtils.equals((CharSequence) flavor.get(null),"zhidao"); + String val = (String) flavor.get(null); + return val.toLowerCase().contains( "zhidao" ); } catch (ClassNotFoundException e) { e.printStackTrace(); @@ -189,6 +190,8 @@ public class VolumeManager { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); + } catch (Exception e){ + e.printStackTrace(); } return false; diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt index 108f47990b..70eb32f28f 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt @@ -1,16 +1,11 @@ package com.mogo.module.navi.ui -import android.app.Activity -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter -import com.mogo.module.common.MogoModulePaths import com.mogo.module.navi.R import com.mogo.module.navi.ui.base.BaseActivity -@Route(path = MogoModulePaths.PATH_MODULE_NAV_ACTIVITY) class NaviActivity : BaseActivity() { diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java index 02bc1b9482..73b329da13 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java @@ -72,27 +72,4 @@ public abstract class BaseFragment extends Fragment { Toast.makeText( mContext, msg, Toast.LENGTH_LONG ).show(); } } - - - protected void setMarkerStatus(boolean show){ - SearchServiceHolder.INSTANCE.getStatusManager().setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show - ); - } - - /** - * 移动地图中心点到屏幕中心 - */ - protected void moveMapToCenter(){ - //SearchServiceHolder.INSTANCE.getMapUIController().setPointToCenter(0.5,0.5); - } - - //mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 ); - /** - * 移动地图中心点到屏幕右侧 - */ - protected void moveMapToRight(){ - SearchServiceHolder.INSTANCE.getMapUIController().setPointToCenter(0.66145, 0.661094); - } - } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt index 4d81850232..40affa22cf 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt @@ -17,9 +17,13 @@ import com.mogo.map.marker.MogoMarkerOptions import com.mogo.map.search.geo.MogoPoiItem import com.mogo.map.search.inputtips.MogoTip import com.mogo.module.common.MogoModulePaths +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.bean.SearchPoi +import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.manager.AddressManager import com.mogo.module.navi.ui.adapter.SearchCategoryAdapter import com.mogo.module.navi.ui.base.BaseFragment import com.mogo.module.navi.uitls.BitmapUtils @@ -175,9 +179,6 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) category = arguments?.getString("category") - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, true - ) mSearchPresenter = CategoryPresenter(this) lifecycle.addObserver(mSearchPresenter) cmds = ArrayList() @@ -223,8 +224,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa private fun goPath() { mAdapter.currentItem?.let { - var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem.point) - SearchServiceHolder.push(newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT) + AddressManager.calculatePath(mAdapter.currentItem.point) } } @@ -279,13 +279,11 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa override fun onDestroy() { super.onDestroy() - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, false - ) } companion object { fun newInstance(category: String): Fragment { + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH) var bundle = Bundle() bundle.putString("category", category) var categorySerachFragment = CategorySearchFragment() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index e0f6d0aa41..6664d5429e 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -1,7 +1,5 @@ package com.mogo.module.navi.ui.search -import android.app.SearchManager -import android.app.Service import android.os.Bundle import android.text.TextUtils import android.view.View @@ -14,15 +12,16 @@ import com.mogo.map.navi.IMogoNaviListener import com.mogo.map.navi.MogoCalculatePath import com.mogo.map.navi.MogoNaviInfo import com.mogo.map.navi.MogoTraffic -import com.mogo.map.search.inputtips.MogoTip import com.mogo.module.common.MogoModulePaths -import com.mogo.module.navi.BuildConfig +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.manager.SettingManager import com.mogo.module.navi.ui.adapter.CalculatePathAdapter import com.mogo.module.navi.ui.base.BaseFragment +import com.mogo.utils.UiThreadHandler import kotlinx.android.synthetic.main.fragment_search_category.group_path import kotlinx.android.synthetic.main.fragment_search_category.pb_path import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result @@ -35,263 +34,236 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back * 2020-01-09. */ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack { - override fun onCmdSelected(cmd: String?) { - when (cmd) { - "firstPath" -> { - selectItem(0) - startNavi() + override fun onCmdSelected(cmd: String?) { + when (cmd) { + "firstPath" -> { + selectItem(0) + startNavi() - } - "secondPath" -> { - selectItem(1) - startNavi() + } + "secondPath" -> { + selectItem(1) + startNavi() - } - "thirdPath" -> { - selectItem(2) - startNavi() + } + "thirdPath" -> { + selectItem(2) + startNavi() - } - "startNavi" -> { - startNavi() - } - "retry" -> { - retry() - } - "cancel" -> { - SearchServiceHolder.fragmentManager - .clearAll() - } + } + "startNavi" -> { + startNavi() + } + "retry" -> { + retry() + } + "cancel" -> { + SearchServiceHolder.fragmentManager.clearAll() + } - } - - } - - private fun selectItem(index: Int) { - - if (mAdapter.list.size > index) { - selectPath(mAdapter.list[index]) - } - } - - override fun onCmdAction(speakText: String?) { - } - - override fun onCmdCancel(speakText: String?) { - } - - override fun onSpeakEnd(speakText: String?) { - } - - override fun onSpeakSelectTimeOut(speakText: String?) { - } - - override fun onInitNaviFailure() { - } - - override fun onInitNaviSuccess() { - } - - override fun onNaviInfoUpdate(naviinfo: MogoNaviInfo?) { - } - - override fun onStartNavi() { - } - - override fun onStopNavi() { - } - - override fun onCalculateSuccess() { - var calculatedStrategies = SearchServiceHolder.getNavi() - .calculatedStrategies - if (calculatedStrategies != null && calculatedStrategies.size > 0) { - mAdapter.setDatas(calculatedStrategies) - mAdapter.selectTag = calculatedStrategies[0].tagId - } - AIAssist.getInstance(context) - .speakTTSVoice(String.format("已为你规划处%d条路线,请选择", calculatedStrategies.size)) - pb_path.visibility = View.GONE - group_path.visibility = View.GONE - tv_navi_navi.text = getString(R.string.start_navi) - - unregisterRetryVoice() - - } - - override fun onoCalculateFailed() { - group_path.visibility = View.VISIBLE - tv_navi_navi.text = "重试" - pb_path.visibility = View.GONE - - registerRetryVoice() - - } - - override fun onUpdateTraffic(traffic: MogoTraffic?) { - } - - private lateinit var mAdapter: CalculatePathAdapter - override fun getLayoutId(): Int { - return R.layout.fragment_search_category - } - - val firstPath: String = "第一个" - val secondPath: String = "第二个" - val thirdPath: String = "第三个" - val startNavi: String = "开始导航" - - var mogoTip: MogoLatLng? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE) - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, true - ) - - } - - // 是否开启导航 - var isStartedNavi = false - - override fun onViewCreated( - view: View, - savedInstanceState: Bundle? - ) { - super.onViewCreated(view, savedInstanceState) - iv_navi_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() - } - - tv_navi_navi.text = getString(R.string.start_navi) - - et_navi_search.setText(getString(R.string.choose_path)) - et_navi_search.isEnabled = false - SearchServiceHolder.getNavi() - .naviTo(mogoTip) - - SearchServiceHolder.listenerCenter.registerMogoNaviListener( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, this - ) - - var arrayList = ArrayList() - mAdapter = CalculatePathAdapter(activity, arrayList) - rv_search_result.layoutManager = - LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) - - rv_search_result.adapter = mAdapter - tv_navi_navi.setOnClickListener { - - if (group_path.visibility == View.VISIBLE) { - retry() - } else { - startNavi() - } - } - - SearchServiceHolder.getNavi() - .setLineClickInteraction { - mAdapter.setSelectTag(it) } - mAdapter.setOnClickListener { - var item = it.getTag(R.id.tag_item) as MogoCalculatePath - selectPath(item) + } -// rv_search_result.scroto + private fun selectItem(index: Int) { + + if (mAdapter.list.size > index) { + selectPath(mAdapter.list[index]) + } + } + + override fun onCmdAction(speakText: String?) { + } + + override fun onCmdCancel(speakText: String?) { + } + + override fun onSpeakEnd(speakText: String?) { + } + + override fun onSpeakSelectTimeOut(speakText: String?) { + } + + override fun onInitNaviFailure() { + } + + override fun onInitNaviSuccess() { + } + + override fun onNaviInfoUpdate(naviinfo: MogoNaviInfo?) { + } + + override fun onStartNavi() { + } + + override fun onStopNavi() { + } + + override fun onCalculateSuccess() { + var calculatedStrategies = SearchServiceHolder.getNavi().calculatedStrategies + if (calculatedStrategies != null && calculatedStrategies.size > 0) { + mAdapter.setDatas(calculatedStrategies) + mAdapter.selectTag = calculatedStrategies[0].tagId + UiThreadHandler.postDelayed({ + if (isRemoving || isDetached) { + return@postDelayed + } + if (calculatedStrategies.isNullOrEmpty()) { + return@postDelayed + } + SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId) + }, 500L) + } + AIAssist.getInstance(context).speakTTSVoice(String.format("已为你规划处%d条路线,请选择", calculatedStrategies.size)) + pb_path.visibility = View.GONE + group_path.visibility = View.GONE + tv_navi_navi.text = getString(R.string.start_navi) + + unregisterRetryVoice() } - SearchServiceHolder.getMarkerManger() - .removeMarkers() + override fun onoCalculateFailed() { + group_path.visibility = View.VISIBLE + tv_navi_navi.text = "重试" + pb_path.visibility = View.GONE - AIAssist.getInstance(context) - .registerUnWakeupCommand("firstPath", arrayOf(firstPath), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("secondPath", arrayOf(secondPath), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("startNavi", arrayOf(startNavi,"开始"), this) + registerRetryVoice() - } - - private fun registerRetryVoice() { - AIAssist.getInstance(context) - .registerUnWakeupCommand("retry", arrayOf("重试"), this) - } - - private fun unregisterRetryVoice() { - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("retry") - - } - - private fun retry() { - SearchServiceHolder.getNavi() - .naviTo(mogoTip) - pb_path.visibility = View.VISIBLE - group_path.visibility = View.GONE - } - - private fun startNavi() { - if (TextUtils.isEmpty(mAdapter.selectTag)) { - return - } - moveMapToRight() - - SearchServiceHolder.getNavi() - .startNavi(!SettingManager.isMonitor()) - SearchServiceHolder.getMapUIController() - .recoverLockMode() - - if (SearchServiceHolder.guideShowProvider.isPlayingVideo()) { - SearchServiceHolder.guideShowProvider.closeGuideShowView() - } - isStartedNavi = true - SearchServiceHolder.fragmentManager.clearAll() - } - - private fun selectPath(item: MogoCalculatePath?) { - item?.let { - mAdapter.setSelectTag(item.tagId) - SearchServiceHolder.getNavi() - .itemClickInteraction.onItemClicked(item.tagId) - } - } - - override fun onDestroyView() { - super.onDestroyView() - SearchServiceHolder.listenerCenter.unregisterMogoNaviListener( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false - ) - if (!isStartedNavi) { - SearchServiceHolder.getNavi() - .clearCalculatePaths() } - - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("firstPath") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("secondPath") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("thirdPath") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("startNavi") - - } - - companion object { - fun newInstance(searchPoi: MogoLatLng): Fragment { - var bundle = Bundle() - bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi) - var choosePathFragment = ChoosePathFragment() - choosePathFragment.arguments = bundle - return choosePathFragment + override fun onUpdateTraffic(traffic: MogoTraffic?) { + } + + private lateinit var mAdapter: CalculatePathAdapter + override fun getLayoutId(): Int { + return R.layout.fragment_search_category + } + + val firstPath: String = "第一个" + val secondPath: String = "第二个" + val thirdPath: String = "第三个" + val startNavi: String = "开始导航" + + var mogoTip: MogoLatLng? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE) + + } + + // 是否开启导航 + var isStartedNavi = false + + override fun onViewCreated( + view: View, + savedInstanceState: Bundle?) { + + super.onViewCreated(view, savedInstanceState) + iv_navi_back.setOnClickListener { + SearchServiceHolder.fragmentManager.pop() + } + + tv_navi_navi.text = getString(R.string.start_navi) + + et_navi_search.setText(getString(R.string.choose_path)) + et_navi_search.isEnabled = false + SearchServiceHolder.getNavi().naviTo(mogoTip) + + SearchServiceHolder.listenerCenter.registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this) + + var arrayList = ArrayList() + mAdapter = CalculatePathAdapter(activity, arrayList) + rv_search_result.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) + + rv_search_result.adapter = mAdapter + tv_navi_navi.setOnClickListener { + if (group_path.visibility == View.VISIBLE) { + retry() + } else { + startNavi() + } + } + + SearchServiceHolder.getNavi().setLineClickInteraction { + mAdapter.selectTag = it + } + + mAdapter.setOnClickListener { + var item = it.getTag(R.id.tag_item) as MogoCalculatePath + selectPath(item) + } + + SearchServiceHolder.getMarkerManger().removeMarkers() + + AIAssist.getInstance(context).registerUnWakeupCommand("firstPath", arrayOf(firstPath), this) + AIAssist.getInstance(context).registerUnWakeupCommand("secondPath", arrayOf(secondPath), this) + AIAssist.getInstance(context).registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this) + AIAssist.getInstance(context).registerUnWakeupCommand("startNavi", arrayOf(startNavi, "开始"), this) + + } + + private fun registerRetryVoice() { + AIAssist.getInstance(context).registerUnWakeupCommand("retry", arrayOf("重试"), this) + } + + private fun unregisterRetryVoice() { + AIAssist.getInstance(context).unregisterUnWakeupCommand("retry") + + } + + private fun retry() { + SearchServiceHolder.getNavi().naviTo(mogoTip) + pb_path.visibility = View.VISIBLE + group_path.visibility = View.GONE + } + + private fun startNavi() { + if (TextUtils.isEmpty(mAdapter.selectTag)) { + return + } +// moveMapToRight() + + SearchServiceHolder.getNavi().startNavi(!SettingManager.isMonitor()) + SearchServiceHolder.getMapUIController().recoverLockMode() + + if (SearchServiceHolder.guideShowProvider.isPlayingVideo()) { + SearchServiceHolder.guideShowProvider.closeGuideShowView() + } + isStartedNavi = true + SearchServiceHolder.fragmentManager.clearAll() + } + + private fun selectPath(item: MogoCalculatePath?) { + item?.let { + mAdapter.setSelectTag(item.tagId) + SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(item.tagId) + } + } + + override fun onDestroyView() { + super.onDestroyView() + SearchServiceHolder.listenerCenter.unregisterMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) + if (!isStartedNavi) { + SearchServiceHolder.getNavi().clearCalculatePaths() + } + + AIAssist.getInstance(context).unregisterUnWakeupCommand("firstPath") + AIAssist.getInstance(context).unregisterUnWakeupCommand("secondPath") + AIAssist.getInstance(context).unregisterUnWakeupCommand("thirdPath") + AIAssist.getInstance(context).unregisterUnWakeupCommand("startNavi") + + } + + companion object { + fun newInstance(searchPoi: MogoLatLng): Fragment { + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CALCULATE_PATH) + var bundle = Bundle() + bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi) + var choosePathFragment = ChoosePathFragment() + choosePathFragment.arguments = bundle + return choosePathFragment + } } - } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java index 2ce8b818e3..c4ed93e604 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java @@ -20,6 +20,7 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.navi.R; import com.mogo.module.navi.bean.EntityConvertUtils; import com.mogo.module.navi.bean.SearchPoi; +import com.mogo.module.navi.constants.AMapConstants; import com.mogo.module.navi.manager.AddressManager; import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter; @@ -43,7 +44,6 @@ import java.util.List; * {@link SearchConstants#SEARCH_TYPE_MULTI_COMPANY} * {@link SearchConstants#SEARCH_TYPE_MULTI_HOME} */ -@Route(path = MogoModulePaths.PATH_FRAGMENT_SEARCH) public class SearchFragment extends BaseSearchFragment implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack, FragmentStackTransactionListener { @@ -92,7 +92,6 @@ public class SearchFragment extends BaseSearchFragment super.onActivityCreated(savedInstanceState); SearchServiceHolder.INSTANCE.getMarkerManger().removeMarkers(); SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(false); - moveMapToCenter(); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { @@ -186,24 +185,18 @@ public class SearchFragment extends BaseSearchFragment goCategory(tag.getName()); } else { mSearchPresenter.insert(searchPoi); - SearchServiceHolder.INSTANCE.push( - ChoosePathFragment.Companion.newInstance(tag.getPoint()), - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); + AddressManager.INSTANCE.calculatePath( tag.getPoint() ); } } private void goSetting() { - SearchServiceHolder.INSTANCE.getAnalyticsManager() - .track("Navigation_button_setting", new HashMap()); - - push(new NaviSettingFragment(), MogoModulePaths.PATH_FRAGMENT_SETTING); + SearchServiceHolder.INSTANCE.getAnalyticsManager().track("Navigation_button_setting", new HashMap()); + AddressManager.INSTANCE.goSettings(); } private void goHistory(SearchPoi item) { MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item); - SearchServiceHolder.INSTANCE.push( - ChoosePathFragment.Companion.newInstance(mogoTip.getPoint()), - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); + AddressManager.INSTANCE.calculatePath( mogoTip.getPoint() ); } private static final String GO_HOME_CMD = "goHome"; @@ -501,8 +494,7 @@ public class SearchFragment extends BaseSearchFragment } private void goCategory(String text) { - push(CategorySearchFragment.Companion.newInstance(text), - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY); + AddressManager.INSTANCE.categorySearch( text ); } @Override public void onResume() { @@ -517,7 +509,7 @@ public class SearchFragment extends BaseSearchFragment public void onDestroyView() { super.onDestroyView(); SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true); - moveMapToRight(); +// moveMapToRight(); unRegisterVoice(); } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java deleted file mode 100644 index 4bd1f58d00..0000000000 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.mogo.module.navi.ui.search; - -import android.content.Context; -import android.os.Bundle; -import android.view.View; -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.map.listener.IMogoMapListener; -import com.mogo.map.location.IMogoLocationListener; -import com.mogo.map.marker.IMogoMarkerClickListener; -import com.mogo.map.navi.IMogoNaviListener; -import com.mogo.module.common.MogoModulePaths; -import com.mogo.service.module.IMogoModuleLifecycle; -import com.mogo.service.module.IMogoModuleProvider; -import com.mogo.service.module.ModuleType; - -/** - * @author congtaowang - * @since 2019-12-30 - *

- * 描述 - */ - -@Route( path = MogoModulePaths.PATH_MODULE_SEARCH ) -public class SearchFragmentProvider implements IMogoModuleProvider { - - private SearchFragment mAppsFragment; - - @Override - public Fragment createFragment( Context context, Bundle data ) { - mAppsFragment = new SearchFragment(); - mAppsFragment.setArguments( data ); - return mAppsFragment; - } - - @Override - public View createView( Context context ) { - return null; - } - - @NonNull - @Override - public String getModuleName() { - return MogoModulePaths.PATH_MODULE_SEARCH; - } - - @Override - public IMogoModuleLifecycle getCardLifecycle() { - return null; - } - - @Override - public IMogoMapListener getMapListener() { - return null; - } - - @Override - public int getType() { - return ModuleType.TYPE_NAVI; - } - - @Override - public IMogoNaviListener getNaviListener() { - return null; - } - - @Override - public IMogoLocationListener getLocationListener() { - return null; - } - - @Override - public void init( Context context ) { - - } - - @Override - public IMogoMarkerClickListener getMarkerClickListener() { - return null; - } - - @Override - public String getAppPackage() { - return null; - } - - @Override - public String getAppName() { - return null; - } -} 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 8d2418e841..4983a545c9 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 @@ -30,7 +30,6 @@ import org.greenrobot.eventbus.ThreadMode * @author zyz * 2020-01-07. */ -@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING) class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { private var type: Int = 0 diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt index 032a31d5e3..934fb14b82 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt @@ -17,6 +17,8 @@ import com.mogo.map.search.geo.MogoRegeocodeResult import com.mogo.map.search.geo.query.MogoRegeocodeQuery import com.mogo.module.common.MogoModulePaths import com.mogo.module.common.adapter.MogoMapListenerAdapter +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.R.string import com.mogo.module.navi.bean.EntityConvertUtils @@ -40,7 +42,6 @@ import kotlinx.android.synthetic.main.fragment_setting_address.tv_set_as_home * @author zyz * 2020-01-07. */ -@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING_HOME) class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onRegeocodeSearched(regeocodeResult: MogoRegeocodeResult?) { et_navi_search.setText(regeocodeResult?.regeocodeAddress?.formatAddress) @@ -97,22 +98,14 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: DataConstants.TYPE_HOME_ADDRESS - setMarkerStatus(true) SearchServiceHolder.listenerCenter.registerMogoMapListener( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, mapListener + AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener ) - SearchServiceHolder.getMapUIController() - .showMyLocation(false) + SearchServiceHolder.getMapUIController().showMyLocation(false) - SearchServiceHolder.getGeoSearcher() - .setGeoSearchListener(this) + SearchServiceHolder.getGeoSearcher().setGeoSearchListener(this) - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, true - ) - - SearchServiceHolder.getMarkerManger() - .removeMarkers() + SearchServiceHolder.getMarkerManger().removeMarkers() } override fun getLayoutId(): Int { @@ -155,9 +148,8 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { et_navi_search.isEnabled = false et_navi_search.setText(getString(string.drag_map_to_choose)) - var location = SearchServiceHolder.getMapUIController() - .windowCenterLocation - moveMapToCenter() + var location = SearchServiceHolder.getMapUIController().windowCenterLocation + UiThreadHandler.postDelayed({ if (!isAdded) { return@postDelayed @@ -170,10 +162,9 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { .anchor(0.5f, 1f) .longitude(location?.lng ?: 0.0) addMarker = SearchServiceHolder.getMarkerManger() - .addMarker(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, options) + .addMarker(AMapConstants.PATH_FRAGMENT_SETTING_HOME, options) - var locationPointInScreen = SearchServiceHolder.getMapUIController() - .getLocationPointInScreen(location) + var locationPointInScreen = SearchServiceHolder.getMapUIController().getLocationPointInScreen(location) addMarker?.setPositionByPixels(locationPointInScreen) }, 500L) } @@ -190,31 +181,14 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { }) .subscribeOn(Schedulers.io()) .subscribe() - - } override fun onDestroyView() { super.onDestroyView() -// setMarkerStatus(true) -// SearchServiceHolder.getMapUIController() -// .showMyLocation(true) SearchServiceHolder.listenerCenter.unregisterMogoMapListener( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME + AMapConstants.PATH_FRAGMENT_SETTING_HOME ) addMarker?.destroy() - - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, false - ) - - if (SearchServiceHolder.fragmentManager.stackSize == 0) { - moveMapToRight() - SearchServiceHolder.getMapUIController() - .showMyLocation(true) - } - -// moveMapToRight() } companion object { 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 d0d1e3e3b3..cea9c0ea54 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 @@ -1,7 +1,5 @@ package com.mogo.module.service; -import android.app.ActivityManager; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -36,6 +34,8 @@ import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.module.service.carinfo.CarStateInfo; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.service.network.RefreshCallback; @@ -966,19 +966,18 @@ public class MogoServices implements IMogoMapListener, if ( size == 0 ) { mUiController.showMyLocation( !mNavi.isNaviing() ); AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_BACK ); - // 控制SearchUIShow 打点逻辑 - mStatusManager.setSearchUIShow( TAG, false ); + if ( mStatusManager.isSearchUIShow() ) { + mStatusManager.setSearchUIShow( TAG, false ); + } if ( mNavi.isNaviing() ) { - mUiController.setPointToCenter( 0.675926, 0.77552 ); + MapCenterPointStrategy.setMapCenterPointByScene(mUiController, Scene.NAVI ); } else { - mUiController.setPointToCenter( 0.66145, 0.661094 ); + MapCenterPointStrategy.setMapCenterPointByScene(mUiController, Scene.AIMLESS ); } mUiController.recoverLockMode(); } else { mUiController.showMyLocation( false ); AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this ); - mStatusManager.setSearchUIShow( TAG, true ); - mUiController.setPointToCenter( 0.5, 0.5 ); } } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java index 71064c6677..617023ea53 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java @@ -1,6 +1,7 @@ package com.mogo.service.module; import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.map.MogoLatLng; /** * @author zyz @@ -8,6 +9,32 @@ import com.alibaba.android.arouter.facade.template.IProvider; */ public interface IMogoAddressManager extends IProvider { + /** + * 回家 + */ void goHome(); + + /** + * 去公司 + */ void goCompany(); + + /** + * 打开搜索 + */ + void goSearch(); + + /** + * 规划路线 + * + * @param destination 目的地 + */ + void calculatePath( MogoLatLng destination ); + + /** + * 分类搜索 + */ + void categorySearch(String category); + + void goSettings(); } 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 f749d793a6..06105ec2f5 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 @@ -84,6 +84,12 @@ public interface IMogoStatusManager extends IProvider { */ boolean isAIAssistReady(); + /** + * 求助状态 + * @return + */ + boolean isSeekHelping(); + /** * 设置小智语音UI状态 * @@ -166,6 +172,13 @@ public interface IMogoStatusManager extends IProvider { */ void setAIAssistReady( String tag, boolean ready ); + /** + * 设置求助状态 + * @param tag + * @param seekHelping + */ + void setSeekHelping(String tag, boolean seekHelping); + /** * 注册监听 * 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 0f75d8d92f..5dc6262546 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 @@ -59,5 +59,10 @@ public enum StatusDescriptor { /** * 小智语音状态 */ - AI_ASSIST_READY; + AI_ASSIST_READY, + + /** + * 求助状态 + */ + SEEK_HELPING; } 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 0ac3f099db..117f11db27 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 @@ -99,6 +99,12 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.AI_ASSIST_READY ); } + + @Override + public boolean isSeekHelping() { + return get_bool_val( StatusDescriptor.SEEK_HELPING ); + } + private boolean get_bool_val( StatusDescriptor descriptor ) { Boolean val = mStatus.get( descriptor ); return val == null ? false : val; @@ -177,6 +183,13 @@ public class MogoStatusManager implements IMogoStatusManager { recordStatusModifier( tag, StatusDescriptor.AI_ASSIST_READY ); } + @Override + public void setSeekHelping( String tag, boolean seekHelping ) { + mStatus.put( StatusDescriptor.SEEK_HELPING, seekHelping ); + invokeStatusChangedListener( StatusDescriptor.SEEK_HELPING, seekHelping ); + recordStatusModifier( tag, StatusDescriptor.SEEK_HELPING ); + } + private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) { if ( mListeners.containsKey( descriptor ) ) { Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();