diff --git a/.idea/misc.xml b/.idea/misc.xml index 47f1a4e1d4..2db9aab721 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + diff --git a/app/functions/eventpanel.gradle b/app/functions/eventpanel.gradle index 8fd4d2cacf..335614ab29 100644 --- a/app/functions/eventpanel.gradle +++ b/app/functions/eventpanel.gradle @@ -2,7 +2,7 @@ project.dependencies { if (Boolean.valueOf(RELEASE)) { - d8xxImplementation rootProject.ext.dependencies.moduleventpanel + d8xxImplementation rootProject.ext.dependencies.moduleventpanelnoop d82xImplementation rootProject.ext.dependencies.moduleventpanelnoop em1Implementation rootProject.ext.dependencies.moduleventpanelnoop @@ -12,7 +12,7 @@ project.dependencies { f8xxImplementation rootProject.ext.dependencies.moduleventpanelnoop em3Implementation rootProject.ext.dependencies.moduleventpanelnoop } else { - d8xxImplementation project(':modules:mogo-module-event-panel') + d8xxImplementation project(':modules:mogo-module-event-panel-noop') d82xImplementation project(':modules:mogo-module-event-panel-noop') em1Implementation project(':modules:mogo-module-event-panel-noop') diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/GeocodeSearchClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/GeocodeSearchClient.java index 4de829cd54..3e6a25132f 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/GeocodeSearchClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/search/GeocodeSearchClient.java @@ -4,9 +4,11 @@ import android.content.Context; import com.amap.api.services.core.AMapException; import com.amap.api.services.geocoder.GeocodeAddress; +import com.amap.api.services.geocoder.GeocodeQuery; import com.amap.api.services.geocoder.GeocodeResult; import com.amap.api.services.geocoder.GeocodeSearch; import com.amap.api.services.geocoder.RegeocodeAddress; +import com.amap.api.services.geocoder.RegeocodeQuery; import com.amap.api.services.geocoder.RegeocodeResult; import com.mogo.map.exception.MogoMapException; import com.mogo.map.impl.amap.utils.ObjectUtils; @@ -16,6 +18,7 @@ import com.mogo.map.search.geo.MogoGeocodeAddress; import com.mogo.map.search.geo.MogoRegeocodeAddress; import com.mogo.map.search.geo.query.MogoGeocodeQuery; import com.mogo.map.search.geo.query.MogoRegeocodeQuery; +import com.mogo.utils.logger.Logger; import java.util.ArrayList; import java.util.List; @@ -28,6 +31,8 @@ import java.util.List; */ public class GeocodeSearchClient implements IMogoGeoSearch, GeocodeSearch.OnGeocodeSearchListener { + private static final String TAG = "GeocodeSearchClient"; + private GeocodeSearch mClient; private IMogoGeoSearchListener mListener; @@ -74,14 +79,32 @@ public class GeocodeSearchClient implements IMogoGeoSearch, GeocodeSearch.OnGeoc @Override public void getFromLocationAsyn( MogoRegeocodeQuery query ) { if ( mClient != null ) { - mClient.getFromLocationAsyn( ObjectUtils.fromMogo( query ) ); + if ( query == null ) { + Logger.e( TAG, "query parameter is null." ); + return; + } + RegeocodeQuery origin = ObjectUtils.fromMogo( query ); + if ( origin == null || !query.check() ) { + Logger.e( TAG, "query parameter is null or no point parameter." ); + return; + } + mClient.getFromLocationAsyn( origin ); } } @Override public void getFromLocationNameAsyn( MogoGeocodeQuery query ) { if ( mClient != null ) { - mClient.getFromLocationNameAsyn( ObjectUtils.fromMogo( query ) ); + if ( query == null ) { + Logger.e( TAG, "query parameter is null." ); + return; + } + GeocodeQuery origin = ObjectUtils.fromMogo( query ); + if ( origin == null || !query.check() ) { + Logger.e( TAG, "query parameter is null or locationName is empty." ); + return; + } + mClient.getFromLocationNameAsyn( origin ); } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoGeocodeQuery.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoGeocodeQuery.java index 988533cc5f..159ef29be1 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoGeocodeQuery.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoGeocodeQuery.java @@ -2,6 +2,7 @@ package com.mogo.map.search.geo.query; import android.os.Parcel; import android.os.Parcelable; +import android.text.TextUtils; /** * @author congtaowang @@ -29,6 +30,12 @@ public class MogoGeocodeQuery implements Parcelable { this.city = city; } + public boolean check(){ + if ( TextUtils.isEmpty( locationName ) ) { + return false; + } + return true; + } @Override public int describeContents() { diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoRegeocodeQuery.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoRegeocodeQuery.java index ea5bf42895..75446b08d6 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoRegeocodeQuery.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/search/geo/query/MogoRegeocodeQuery.java @@ -50,6 +50,18 @@ public class MogoRegeocodeQuery implements Parcelable { this.poiType = poiType; } + public boolean check() { + if ( point == null ) { + return false; + } + if ( point.lat < 1 && point.lon < 1 ) { + return false; + } + if ( radius < 0 ) { + return false; + } + return true; + } @Override public int describeContents() { 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 ab5af1e04c..dfa80f15fd 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 @@ -21,6 +21,7 @@ import com.mogo.module.apps.model.AppEnum; import com.mogo.module.apps.model.AppInfo; import com.mogo.module.apps.model.NavigatorApps; import com.mogo.module.apps.view.OnAiAssistClickListener; +import com.mogo.service.fragmentmanager.FragmentStackTransactionListener; import com.mogo.utils.AppUtils; import com.mogo.utils.CommonUtils; @@ -33,7 +34,9 @@ import java.util.Map; *

* 描述 */ -public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter > implements AppNavigatorView { +public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter > + implements AppNavigatorView, + FragmentStackTransactionListener { private static final String TAG = "AppNavigatorFragment"; @@ -74,14 +77,17 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi mAIAssist.performClick(); } ); - AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( size -> { - // 主页 fragment 栈变化的时候,改变动画状态 - if ( size == 0 ) { - mAnim.start(); - } else { - mAnim.stop(); - } - } ); + AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( this ); + } + + @Override + public void onTransaction( int size ) { + // 主页 fragment 栈变化的时候,改变动画状态 + if ( size == 0 ) { + mAnim.start(); + } else { + mAnim.stop(); + } } @Override @@ -151,5 +157,6 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi if ( mPresenter != null ) { mPresenter.onDestroy( getViewLifecycleOwner() ); } + AppServiceHandler.getApis().getFragmentManagerApi().removeMainFragmentStackTransactionListener( this ); } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java index 7b39a6b5a3..5aaf7a9c38 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java @@ -115,6 +115,7 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme @Override public void onDestroy( @NonNull LifecycleOwner owner ) { super.onDestroy( owner ); + AppServiceHandler.getApis().getRegisterCenterApi().unregisterMogoNaviListener( TAG ); AppServiceHandler.getApis().getIntentManagerApi().unregisterIntentListener( AppsConst.COMMAND_OPERATION, this ); } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java index 916b265020..41d756ef34 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java @@ -45,7 +45,6 @@ public class AppsPresenter extends Presenter< AppsView > { private IMogoServiceApis mApis; private IMogoCardManager mCardManager; - private IMogoStatusManager mMogoStatusManager; public AppsPresenter( AppsView view ) { super( view ); @@ -71,7 +70,6 @@ public class AppsPresenter extends Presenter< AppsView > { } ); mAnalytics = mApis.getAnalyticsApi(); - mMogoStatusManager = mApis.getStatusManagerApi(); } private void renderAppsList() { diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java index 1194734bb3..e92e84e107 100644 --- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java +++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java @@ -45,9 +45,7 @@ public class BackToMainHomeManager { return; } - if ( mStatusManager.isAppListUIShow() ) { - mApis.getIntentManagerApi().invoke( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, new Intent() ); - } + mApis.getIntentManagerApi().invoke( Intent.ACTION_CLOSE_SYSTEM_DIALOGS, new Intent() ); Logger.d( TAG, "返回桌面" ); 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 a15d148a4b..29508a207e 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,5 +1,6 @@ package com.mogo.module.extensions.entrance; +import android.content.Intent; import android.graphics.Rect; import android.os.Bundle; import android.text.TextUtils; @@ -44,6 +45,7 @@ import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.entrance.ButtonIndex; import com.mogo.service.fragmentmanager.IMogoFragmentManager; +import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusChangedListener; @@ -72,7 +74,8 @@ public class EntranceFragment extends MvpFragment { - int key_type = intent.getIntExtra( "KEY_TYPE", 0 ); - int type = intent.getIntExtra( "EXTRA_TYPE", -1 ); - int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 ); - if ( key_type == 10027 ) { - if ( opera_type == 0 ) { - mCameraMode.setSelected( false ); - } else if ( opera_type == 1 ) { - mCameraMode.setSelected( true ); - } - mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) ); - } else if( key_type == 10021 ){ - onStopNavi(); - } - }) ); - MogoEntranceButtons.save( ButtonIndex.BUTTON1, findViewById( R.id.module_entrance_id_button1 ) ); - MogoEntranceButtons.save( ButtonIndex.BUTTON2, findViewById( R.id.module_entrance_id_button2 ) ); + + mApis.getIntentManagerApi().registerIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV, this); + MogoEntranceButtons.save(ButtonIndex.BUTTON1, + findViewById(R.id.module_entrance_id_button1)); + MogoEntranceButtons.save(ButtonIndex.BUTTON2, + findViewById(R.id.module_entrance_id_button2)); mDisplayOverviewBounds = new Rect( ResourcesHelper.getDimensionPixelSize(getContext(), @@ -355,6 +346,22 @@ public class EntranceFragment extends MvpFragment { + MapCenterPointStrategy.setMapCenterPointBySceneAndDelay(mMApUIController, Scene.NAVI, 500 + , () -> { return !mMogoNavi.isNaviing(); }); if (CustomNaviInterrupter.getInstance().interrupt()) { @@ -575,4 +583,23 @@ public class EntranceFragment extends MvpFragment impleme mMogoMapUIController = null; mMogoFragmentManager = null; mServiceApis.getAdasControllerApi().release(); + Logger.d( TAG, "destroy." ); mServiceApis.getRefreshStrategyControllerApi().clearAllData(); AIAssist.getInstance( this ).release(); } diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/view/FloatView.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/view/FloatView.kt index 51b81b71a5..e8b8971d26 100644 --- a/modules/mogo-module-push/src/main/java/com/mogo/module/push/view/FloatView.kt +++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/view/FloatView.kt @@ -32,8 +32,8 @@ import com.mogo.utils.UiThreadHandler import com.mogo.utils.glide.GlideApp class FloatView constructor( - private val pushViewModel: PushViewModel, - private val context: Context + private val pushViewModel: PushViewModel, + private val context: Context ) { companion object { @@ -50,7 +50,7 @@ class FloatView constructor( } open abstract inner class PushView(context: Context) : FrameLayout(context), - PushViewController { + PushViewController { lateinit var appIcon: ImageView lateinit var titleIconContainer: View lateinit var pushTitle: TextView @@ -103,7 +103,7 @@ class FloatView constructor( } fun hasTextContent(bean: PushBean?): Boolean = - bean?.content?.isNullOrEmpty()?.not() ?: false + bean?.content?.isNullOrEmpty()?.not() ?: false fun hasImgContent(bean: PushBean?): Boolean = bean?.QRCode?.isNullOrEmpty()?.not() ?: false @@ -139,9 +139,9 @@ class FloatView constructor( pushImage.layoutParams = params ThreadPoolService.execute { val bmp = stringConverterBitmap( - bean.QRCode, - getQrImgWidth(), - getQrImgHeight() + bean.QRCode, + getQrImgWidth(), + getQrImgHeight() ) UiThreadHandler.post { pushImage.setImageBitmap(bmp) @@ -220,6 +220,8 @@ class FloatView constructor( return } } + pushViewModel.pushBean?.showTimeout = 0 + updateTimer() } override fun onViewAdded(view: View?) { @@ -248,23 +250,23 @@ class FloatView constructor( } override fun getImgWidth(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_width) + context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_width) override fun getImgHeight(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height) + context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height) override fun getQrImgWidth(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height) + context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height) override fun getQrImgHeight(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height) + context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height) } inner class PushViewInWindowView(context: Context) : PushView(context), View.OnTouchListener { private val mContentContainer: View private val mWindowManager = - context.getSystemService(Context.WINDOW_SERVICE) as WindowManager + context.getSystemService(Context.WINDOW_SERVICE) as WindowManager private val params = WindowManager.LayoutParams() @@ -302,8 +304,8 @@ class FloatView constructor( mWindowManager.updateViewLayout(this, params) } translationXAnimation( - -ResourcesHelper.getDimension(context, R.dimen.module_push_ui_width_vertical), - 0f + -ResourcesHelper.getDimension(context, R.dimen.module_push_ui_width_vertical), + 0f ) { if (pushViewModel.pushBean != null) { startClosePush() @@ -312,17 +314,17 @@ class FloatView constructor( } private fun translationXAnimation( - from: Float, - to: Float, - doOnEnd: (animator: Animator) -> Unit + from: Float, + to: Float, + doOnEnd: (animator: Animator) -> Unit ) { val transitionXAnimator: ObjectAnimator = - ObjectAnimator.ofFloat( - this, - View.TRANSLATION_X, - from, - to - ) + ObjectAnimator.ofFloat( + this, + View.TRANSLATION_X, + from, + to + ) transitionXAnimator.duration = 200 transitionXAnimator.doOnEnd(doOnEnd) transitionXAnimator.start() @@ -333,7 +335,7 @@ class FloatView constructor( var paddingBottom: Int = 0 if (pushButton.isVisible) { paddingBottom = - context.resources.getDimensionPixelSize(R.dimen.module_push_content_paddingBottom_vertical) + context.resources.getDimensionPixelSize(R.dimen.module_push_content_paddingBottom_vertical) } mContentContainer.setPadding(0, 0, 0, paddingBottom) } @@ -341,8 +343,8 @@ class FloatView constructor( override fun hide() { super.hide() translationXAnimation( - this.x, - -ResourcesHelper.getDimension(context, R.dimen.module_push_ui_width_vertical) + this.x, + -ResourcesHelper.getDimension(context, R.dimen.module_push_ui_width_vertical) ) { Logger.d(TAG, "here") this.x = 0f @@ -413,16 +415,16 @@ class FloatView constructor( } override fun getImgWidth(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_width_vertical) + context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_width_vertical) override fun getImgHeight(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height_vertical) + context.resources.getDimensionPixelSize(R.dimen.module_push_ui_image_height_vertical) override fun getQrImgWidth(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_image_qr_size_vertical) + context.resources.getDimensionPixelSize(R.dimen.module_push_image_qr_size_vertical) override fun getQrImgHeight(): Int = - context.resources.getDimensionPixelSize(R.dimen.module_push_image_qr_size_vertical) + context.resources.getDimensionPixelSize(R.dimen.module_push_image_qr_size_vertical) } private val delayClosePush: Runnable @@ -524,8 +526,8 @@ class FloatView constructor( private fun startClosePush() { uiHandler.removeCallbacks(delayClosePush) uiHandler.postDelayed( - delayClosePush, - 1000L + delayClosePush, + 1000L ) } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java index 0a792aa42a..11bf1e6c79 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java @@ -7,14 +7,14 @@ import androidx.annotation.Nullable; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.commons.voice.VoicePreemptType; +import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; -import com.mogo.module.common.entity.V2XMessageEntity; +import com.mogo.module.v2x.manager.IMoGoV2XStatusManager; import com.mogo.module.v2x.scenario.IV2XScenario; import com.mogo.module.v2x.scenario.view.IV2XButton; import com.mogo.module.v2x.scenario.view.IV2XMarker; import com.mogo.module.v2x.scenario.view.IV2XWindow; -import com.mogo.module.v2x.manager.IMoGoV2XStatusManager; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.utils.logger.Logger; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java index 360e47f296..2c2b004644 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java @@ -55,11 +55,11 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i public void init(@Nullable V2XMessageEntity> v2XMessageEntity) { setV2XMessageEntity(v2XMessageEntity); - AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("发现其他车主的求助信息"); // 广播给ADAS和Launcher卡片 V2XRoadEventEntity eventEntity = new V2XRoadEventEntity(); eventEntity.setPoiType(V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING + ""); eventEntity.setExpireTime(30000); + eventEntity.setTts("发现其他车主的求助信息"); eventEntity.setAlarmContent("其他车主求助"); ADASUtils.broadcastToADAS(V2XServiceManager.getContext(), eventEntity);