diff --git a/.idea/misc.xml b/.idea/misc.xml
index 707ee6e613..2dc54c489f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 81ffef0cdb..2864bdbd21 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -46,12 +46,13 @@ public class MogoApplication extends AbsMogoApplication {
//运营位卡片,需要默认显示,放在第一个加载
MogoModulePaths.addModule(new MogoModule(AdCardConstants.TAG, AdCardConstants.MODULE_NAME));
- MogoModulePaths.addModule(new MogoModule(OnLineCarConstants.TAG, OnLineCarConstants.MODULE_NAME));
- MogoModulePaths.addModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI));
- MogoModulePaths.addModule(new MogoModule(TanluConstants.TAG, TanluConstants.MODEL_NAME));
- MogoModulePaths.addModule(new MogoModule(CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME));
MogoModulePaths.addModule(new MogoModule(MediaConstants.TAG, MediaConstants.MODULE_TYPE));
+ MogoModulePaths.addModule(new MogoModule(CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME));
+ MogoModulePaths.addModule(new MogoModule(TanluConstants.TAG, TanluConstants.MODEL_NAME));
+ MogoModulePaths.addModule(new MogoModule(OnLineCarConstants.TAG, OnLineCarConstants.MODULE_NAME));
MogoModulePaths.addModule(new MogoModule( FreshNewsConstants.TAG, FreshNewsConstants.MODULE_NAME));
+
+ MogoModulePaths.addModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI));
MogoModulePaths.addModule(new MogoModule(PushUIConstants.TAG, PushUIConstants.TAG));
MogoModulePaths.addModule(new MogoModule( BackToLauncherConst.MODULE_PATH, BackToLauncherConst.MODULE_NAME));
Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms");
diff --git a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java
index 5ceced9c21..2faf7b6bed 100644
--- a/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java
+++ b/foudations/mogo-connection/src/main/java/com/mogo/connection/socket/SocketManager.java
@@ -107,7 +107,7 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
object = GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() );
}
if ( listener != null ) {
- Logger.d( TAG, "received msgId = %s", msgId );
+ Logger.d( TAG, "received msgId = %s, content = %s", msgId, payload.getPayload().toStringUtf8() );
listener.onMsgReceived( object );
}
}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/ThreadPoolService.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/ThreadPoolService.java
index b94b28b555..53315efd95 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/ThreadPoolService.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/ThreadPoolService.java
@@ -5,7 +5,7 @@ import java.util.concurrent.Executors;
public class ThreadPoolService {
- private static final ExecutorService SERVICE = Executors.newScheduledThreadPool( 3 );
+ private static final ExecutorService SERVICE = Executors.newFixedThreadPool( 3 );
private ThreadPoolService() {
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java
index e248076708..a98e791870 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java
@@ -294,7 +294,13 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
@Override
public String getOwner() {
- return this.mOwner == null ? mMogoMarkerOptions.getOwner() : mOwner;
+ if ( mOwner != null ) {
+ return mOwner;
+ }
+ if ( mMogoMarkerOptions != null ) {
+ return mMogoMarkerOptions.getOwner();
+ }
+ return null;
}
@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 b155b39538..7d8001352c 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
@@ -40,6 +40,7 @@ import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import org.json.JSONException;
@@ -65,6 +66,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
private MogoModulesHandler mMogoModuleHandler;
private IMogoCardManager mMogoCardManager;
private IMogoFragmentManager mMogoFragmentManager;
+ private IMogoStatusManager mMogoStatusManager;
private OrientedViewPager mCardsContainer;
private VerticalStackTransformer mTransformer;
@@ -100,73 +102,66 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mCardsContainer = findViewById( R.id.module_main_id_cards_container );
mCardsContainer.setOrientation( OrientedViewPager.Orientation.VERTICAL );
mTransformer = new VerticalStackTransformer( this );
- mCardsContainer.setOnPageChangeListener(
- mOnPageChangeListener = new OnPageChangeListenerAdapter() {
- private boolean mIsLast = true;
- private boolean mCardFlipStatus = false;
+ mCardsContainer.setOnPageChangeListener( mOnPageChangeListener = new OnPageChangeListenerAdapter() {
+ private boolean mIsLast = true;
+ private boolean mCardFlipStatus = false;
- @Override
- public void onPageSelected( int position ) {
- final long start = System.currentTimeMillis();
- try {
- IMogoModuleProvider provider =
- mCardModulesAdapter.getProvider( mCurrentPosition );
- mPresenter.postTrackLastCardShowEvent( provider );
- mCurrentPosition = position;
- provider = mCardModulesAdapter.getProvider( mCurrentPosition );
- mMogoModuleHandler.setModuleEnable( provider.getModuleName() );
- mMogoCardManager.invoke( position,
- mMogoModuleHandler.getCurrentModuleName() );
- } catch ( Exception e ) {
- e.printStackTrace();
- }
- Logger.i( TAG,
- "onPageSelected cost " + ( System.currentTimeMillis() - start ) + "ms" );
+ @Override
+ public void onPageSelected( int position ) {
+ final long start = System.currentTimeMillis();
+ try {
+ IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition );
+ mPresenter.postTrackLastCardShowEvent( provider );
+ mCurrentPosition = position;
+ provider = mCardModulesAdapter.getProvider( mCurrentPosition );
+ mMogoModuleHandler.setModuleEnable( provider.getModuleName() );
+ mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ Logger.i( TAG, "onPageSelected cost " + ( System.currentTimeMillis() - start ) + "ms" );
+ }
+
+ @Override
+ public void onPageScrollStateChanged( int state ) {
+ final long start = System.currentTimeMillis();
+ super.onPageScrollStateChanged( state );
+ if ( state == ViewPager.SCROLL_STATE_DRAGGING ) {
+ if ( !mCardFlipStatus ) {
+ mCardFlipStatus = true;
+ final IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition );
+ mPresenter.postTrackCardFlipEvent( provider );
}
+ } else if ( state == ViewPager.SCROLL_STATE_IDLE ) {
+ mCardFlipStatus = false;
+ mTransformer.resetOffsetScroll();
+ }
- @Override
- public void onPageScrollStateChanged( int state ) {
- final long start = System.currentTimeMillis();
- super.onPageScrollStateChanged( state );
- if ( state == ViewPager.SCROLL_STATE_DRAGGING ) {
- if ( !mCardFlipStatus ) {
- mCardFlipStatus = true;
- final IMogoModuleProvider provider =
- mCardModulesAdapter.getProvider( mCurrentPosition );
- mPresenter.postTrackCardFlipEvent( provider );
- }
- } else if ( state == ViewPager.SCROLL_STATE_IDLE ) {
- mCardFlipStatus = false;
- mTransformer.resetOffsetScroll();
- }
+ int cardSize = mCardModulesAdapter.getCount();
- int cardSize = mCardModulesAdapter.getCount();
-
- if ( state == ViewPager.SCROLL_STATE_SETTLING ) {
- mIsLast = false;
- } else if ( state == ViewPager.SCROLL_STATE_IDLE && mIsLast ) {
- //此处为你需要的情况,再加入当前页码判断可知道是第一页还是最后一页
- if ( cardSize != 1 && mCurrentPosition == ( cardSize - 1 ) ) {
- mCardsContainer.setCurrentItem( 0, false );
- } else if ( cardSize != 1 && mCurrentPosition == 0 ) {
- mCardsContainer.setCurrentItem( cardSize - 1, false );
- }
- } else {
- mIsLast = true;
- }
- Logger.i( TAG, "onPageScrollStateChanged cost "
- + ( System.currentTimeMillis() - start )
- + "ms" );
+ if ( state == ViewPager.SCROLL_STATE_SETTLING ) {
+ mIsLast = false;
+ } else if ( state == ViewPager.SCROLL_STATE_IDLE && mIsLast ) {
+ //此处为你需要的情况,再加入当前页码判断可知道是第一页还是最后一页
+ if ( cardSize != 1 && mCurrentPosition == ( cardSize - 1 ) ) {
+ mCardsContainer.setCurrentItem( 0, false );
+ } else if ( cardSize != 1 && mCurrentPosition == 0 ) {
+ mCardsContainer.setCurrentItem( cardSize - 1, false );
}
+ } else {
+ mIsLast = true;
+ }
+ Logger.i( TAG, "onPageScrollStateChanged cost " + ( System.currentTimeMillis() - start ) + "ms" );
+ }
- @Override
- public void onPageScrolled( int position, float positionOffset,
- int positionOffsetPixels ) {
- super.onPageScrolled( position, positionOffset, positionOffsetPixels );
- Logger.d( TAG, "pageScrolled : offset --- " + positionOffset );
- mTransformer.offsetScrollChanged( positionOffset );
- }
- } );
+ @Override
+ public void onPageScrolled( int position, float positionOffset,
+ int positionOffsetPixels ) {
+ super.onPageScrolled( position, positionOffset, positionOffsetPixels );
+ Logger.d( TAG, "pageScrolled : offset --- " + positionOffset );
+ mTransformer.offsetScrollChanged( positionOffset );
+ }
+ } );
mHeader = findViewById( R.id.module_main_id_header_fragment_container );
mCards = findViewById( R.id.module_main_id_cards_container );
@@ -261,6 +256,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
} );
mMogoIntentManager = mServiceApis.getIntentManagerApi();
+ mMogoStatusManager = mServiceApis.getStatusManagerApi();
registerVoiceCmd();
Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
}
@@ -324,7 +320,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
public boolean onMarkerClicked( IMogoMarker marker ) {
- switch2Card( marker.getOwner() );
+ switch2Card( marker.getOwner(), false );
if ( mMogoModuleHandler != null ) {
mMogoModuleHandler.onMarkerClicked( marker );
}
@@ -332,17 +328,23 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
}
@Override
- public void switch2Card( String cardType ) {
- if ( mCardModulesAdapter != null ) {
+ public void switch2Card( String cardType, boolean lockCar ) {
+ if ( mCardModulesAdapter == null ) {
+ return;
+ }
- int position = mCardModulesAdapter.getProviderPosition( cardType );
- if ( position != -1 ) {
- int lastFactPosition = mCardModulesAdapter.getFactPosition( mCurrentPosition );
- mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition,
- Math.abs( lastFactPosition - position ) == 1 );
- } else {
- Logger.e( TAG, "Can't find type of %s's position", cardType );
- }
+ int position = mCardModulesAdapter.getProviderPosition( cardType );
+ if ( position != -1 ) {
+ int lastFactPosition = mCardModulesAdapter.getFactPosition( mCurrentPosition );
+ mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition,
+ Math.abs( lastFactPosition - position ) == 1 );
+ } else {
+ Logger.e( TAG, "Can't find type of %s's position", cardType );
+ }
+
+ if ( lockCar ) {
+ mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
+ mMogoMapUIController.recoverLockMode();
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
index 459547fb36..717ff4cdc3 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java
@@ -67,11 +67,11 @@ public class MainPresenter extends Presenter< MainView > {
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
- CardSwitchLiveData.getInstance().observeForever( to -> {
- if ( TextUtils.isEmpty( to ) ) {
+ CardSwitchLiveData.getInstance().observeForever( cardInfo -> {
+ if ( TextUtils.isEmpty( cardInfo.mCardName ) ) {
return;
}
- mView.switch2Card( to );
+ mView.switch2Card( cardInfo.mCardName, true );
} );
mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() );
mCardStartShowTime = System.currentTimeMillis();
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java
index ac69a5da5e..a048081549 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java
@@ -15,7 +15,7 @@ public interface MainView extends IView {
*
* @param cardType
*/
- void switch2Card( String cardType );
+ void switch2Card( String cardType, boolean lockCar );
/**
* 加载卡片
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java
index b34f781b5a..69b8c1bdd9 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java
@@ -3,6 +3,7 @@ package com.mogo.module.main;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.module.main.livedata.CardInfo;
import com.mogo.module.main.livedata.CardSwitchLiveData;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
@@ -25,7 +26,7 @@ public class MogoCardManager implements IMogoCardManager {
@Override
public void switch2( String cardType ) {
- CardSwitchLiveData.getInstance().postValue( cardType );
+ CardSwitchLiveData.getInstance().postValue( new CardInfo( cardType, false ) );
}
@Override
@@ -51,6 +52,11 @@ public class MogoCardManager implements IMogoCardManager {
}
}
+ @Override
+ public void switch2( String cardType, boolean lockCar ) {
+ CardSwitchLiveData.getInstance().postValue( new CardInfo( cardType, lockCar ) );
+ }
+
@Override
public void init( Context context ) {
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java
index db9875ff36..2b34ce4a69 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java
@@ -148,7 +148,8 @@ public class MogoModulesManager implements MogoModulesHandler,
providers.add( provider );
}
}
- return sort( providers );
+ return providers;
+// return sort( providers ); v2.0.2暂不支持变顺序
}
private List< IMogoModuleProvider > sort( List< IMogoModuleProvider > modules ) {
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardInfo.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardInfo.java
new file mode 100644
index 0000000000..08cee036af
--- /dev/null
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardInfo.java
@@ -0,0 +1,49 @@
+package com.mogo.module.main.livedata;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-09
+ *
+ * 描述
+ */
+public class CardInfo implements Parcelable {
+
+ public String mCardName;
+ public boolean mLockCar;
+
+ public CardInfo( String cardName, boolean lockCar ) {
+ this.mCardName = cardName;
+ this.mLockCar = lockCar;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel( Parcel dest, int flags ) {
+ dest.writeString( this.mCardName );
+ dest.writeByte( this.mLockCar ? ( byte ) 1 : ( byte ) 0 );
+ }
+
+ protected CardInfo( Parcel in ) {
+ this.mCardName = in.readString();
+ this.mLockCar = in.readByte() != 0;
+ }
+
+ public static final Parcelable.Creator< CardInfo > CREATOR = new Parcelable.Creator< CardInfo >() {
+ @Override
+ public CardInfo createFromParcel( Parcel source ) {
+ return new CardInfo( source );
+ }
+
+ @Override
+ public CardInfo[] newArray( int size ) {
+ return new CardInfo[size];
+ }
+ };
+}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardSwitchLiveData.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardSwitchLiveData.java
index fafe630a3d..0f078ce718 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardSwitchLiveData.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/livedata/CardSwitchLiveData.java
@@ -8,7 +8,7 @@ import androidx.lifecycle.MutableLiveData;
*
* 切换卡片
*/
-public class CardSwitchLiveData extends MutableLiveData< String > {
+public class CardSwitchLiveData extends MutableLiveData< CardInfo > {
private CardSwitchLiveData() {
// private constructor
diff --git a/modules/mogo-module-service/build.gradle b/modules/mogo-module-service/build.gradle
index 88ce45edb7..4ccbff8bf0 100644
--- a/modules/mogo-module-service/build.gradle
+++ b/modules/mogo-module-service/build.gradle
@@ -29,6 +29,11 @@ android {
}
}
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+
}
dependencies {
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java
index c5b640fc98..19e50fb9a2 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java
@@ -10,6 +10,7 @@ import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.marker.MapMarkerManager;
+import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
@@ -28,6 +29,7 @@ import com.mogo.service.statusmanager.IMogoStatusManager;
public class MarkerServiceHandler {
private static final String TAG = "MarkerServiceHandler";
+ private static IMogoServiceApis mApis;
private static IMogoMapService mMapService;
private static IMogoMarkerManager mMarkerManager;
@@ -44,22 +46,22 @@ public class MarkerServiceHandler {
private static MapMarkerManager mMapMarkerManager;
+ public static void init( final Context context ) {
+ mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context );
+ mMapService = mApis.getMapServiceApi();
+ mImageloader = mApis.getImageLoaderApi();
+ mMogoStatusManager = mApis.getStatusManagerApi();
+ mMogoSocketManager = mApis.getSocketManagerApi( context );
+ mMogoCardManager = mApis.getCardManagerApi();
+ mMogoAnalytics = mApis.getAnalyticsApi();
- public static void init(final Context context) {
- mMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation(context);
- mImageloader = (IMogoImageloader) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_IMAGE_LOADER).navigation(context);
- mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation(context);
- mMogoSocketManager = (IMogoSocketManager) ARouter.getInstance().build(MogoServicePaths.PATH_SOCKET_MANAGER).navigation();
- mMogoCardManager = (IMogoCardManager) ARouter.getInstance().build(MogoServicePaths.PATH_CARD_MANAGER).navigation();
- mMogoAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation();
-
- mMarkerManager = mMapService.getMarkerManager(context);
- mNavi = mMapService.getNavi(context);
+ mMarkerManager = mMapService.getMarkerManager( context );
+ mNavi = mMapService.getNavi( context );
mMapUIController = mMapService.getMapUIController();
- mLocationClient = mMapService.getSingletonLocationClient(context);
+ mLocationClient = mMapService.getSingletonLocationClient( context );
- mMapMarkerManager = MapMarkerManager.getInstance(context);
- mMapMarkerManager.init(context);
+ mMapMarkerManager = MapMarkerManager.getInstance();
+ mMapMarkerManager.init( context );
}
public static IMogoMapService getMapService() {
@@ -112,30 +114,33 @@ public class MarkerServiceHandler {
/**
* 绘制Marker
* 建议使用
+ *
* @see MapMarkerManager#drawMapMarker(MarkerResponse)
*/
@Deprecated
- public static void drawMapMarker(MarkerResponse response) {
- getMapMarkerManager().drawMapMarker(response);
+ public static void drawMapMarker( MarkerResponse response ) {
+ getMapMarkerManager().drawMapMarker( response );
}
/**
* 绘制Marker
* 建议使用
+ *
* @see MapMarkerManager#drawMapMarker(MarkerShowEntity)
*/
@Deprecated
- public static void drawMapMarker(MarkerShowEntity markerShowEntity) {
- getMapMarkerManager().drawMapMarker(markerShowEntity);
+ public static void drawMapMarker( MarkerShowEntity markerShowEntity ) {
+ getMapMarkerManager().drawMapMarker( markerShowEntity );
}
/**
* 对指定类型高亮处理
* 建议使用
- * @see MapMarkerManager#highlightedMarker(String,boolean)
+ *
+ * @see MapMarkerManager#highlightedMarker(String, boolean)
*/
@Deprecated
- public static void highlightedMarker(String typeTag) {
- getMapMarkerManager().highlightedMarker(typeTag,false);
+ public static void highlightedMarker( String typeTag ) {
+ getMapMarkerManager().highlightedMarker( typeTag, false );
}
}
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 d258aa730f..0403d85b76 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
@@ -143,11 +143,7 @@ public class MogoServices implements IMogoMapListener,
mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL;
if ( mRefreshRemainingTime == 0 ) {
Logger.d( TAG, "move to center and refresh data." );
- mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
- mUiController.recoverLockMode();
- mStatusManager.setUserInteractionStatus( TAG, true, false );
- mUiController.changeZoom( 16.0f );
- notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
+ invokeAutoRefresh();
} else {
mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL );
}
@@ -158,11 +154,21 @@ public class MogoServices implements IMogoMapListener,
}
if ( mLoopRequest ) {
Logger.d( TAG, "补偿刷新触发" );
- notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
+ invokeAutoRefresh();
}
break;
}
}
+
+ /**
+ * 自动刷新:锁车、缩放比例:16、半径 2KM
+ */
+ private void invokeAutoRefresh() {
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
+ mUiController.setLockZoom( ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL );
+ mUiController.recoverLockMode();
+ notifyRefreshData( mLastAutoRefreshLocation, ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback );
+ }
};
private Context mContext;
@@ -246,6 +252,7 @@ public class MogoServices implements IMogoMapListener,
registerCenter.registerMogoLocationListener( ServiceConst.TYPE, this );
registerCenter.registerMogoNaviListener( ServiceConst.TYPE, this );
registerCenter.registerMogoMapListener( ServiceConst.TYPE, this );
+ registerCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this );
mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( context );
mIntentManager.registerIntentListener( MogoReceiver.ACTIION_ADAS, this );
@@ -500,7 +507,7 @@ public class MogoServices implements IMogoMapListener,
mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
mUiController.recoverLockMode();
mStatusManager.setUserInteractionStatus( TAG, true, false );
- mUiController.changeZoom( 16.0f );
+ mUiController.changeZoom( ServiceConst.DEFAULT_ZOOM_LEVEL );
mLastAutoRefreshLocation = point;
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
}
@@ -548,8 +555,8 @@ public class MogoServices implements IMogoMapListener,
case USER_INTERACTED:
if ( isTrue && !mRefreshRemainingTimeStatus ) {
mRefreshRemainingTimeStatus = true;
- mRefreshRemainingTime += mAutoRefreshStrategy.getInterruptInterval();
- Logger.i( TAG, "用户状态改变,自动刷新时间延时,%s ms后自动刷新", mRefreshRemainingTime );
+ mRefreshRemainingTime = ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT;
+ Logger.i( TAG, "用户状态改变,下次刷新时间:%ss后", mRefreshRemainingTime );
}
break;
case SEARCH_UI:
@@ -636,7 +643,7 @@ public class MogoServices implements IMogoMapListener,
return;
}
int status = intent.getIntExtra( MogoReceiver.PARAM_ADAS_STATUS, 0 );
- mUiController.setLockZoom( status == 1 ? 15 : 16 );
+ mUiController.setLockZoom( status == 1 ? 15 : ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL );
mStatusManager.setADASUIShow( ServiceConst.TYPE, status == 1 );
mUiController.showMyLocation( true );
} else if ( Intent.ACTION_POWER_CONNECTED.equals( command ) ) {
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java
index 67fada7976..b2d7b285b2 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java
@@ -62,4 +62,30 @@ public class ServiceConst {
*/
public static final String CARD_TYPE_NOVELTY = "CARD_TYPE_NOVELTY";
+ /**
+ * 运营位
+ */
+ public static final String CARD_TYPE_BUSINESS_OPERATION = "CARD_TYPE_BUSINESS_OPERATION";
+
+ /**
+ * 默认地图缩放比例
+ */
+ public static final float DEFAULT_ZOOM_LEVEL = 16.0f;
+
+ /**
+ * 默认地图锁车缩放比例
+ */
+ public static final int DEFAULT_LOCK_CAR_ZOOM_LEVEL = 16;
+
+ /**
+ * 自动酸辛默认半径
+ */
+ public static final int DEFAULT_AUTO_REFRESH_DATA_RADIUS = 2_000;
+
+ /**
+ * 30 s
+ */
+ public static final int DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT = 30 * 1_000;
+
+
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
index dcc23e26fa..923e133000 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
@@ -1,13 +1,10 @@
package com.mogo.module.service.marker;
import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
import android.text.TextUtils;
import android.view.animation.BounceInterpolator;
import android.view.animation.OvershootInterpolator;
-import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
@@ -24,7 +21,6 @@ import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
-import com.mogo.module.service.MogoServiceProvider;
import com.mogo.module.service.MogoServices;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.service.Utils;
@@ -51,31 +47,35 @@ import java.util.Map;
* desc : 大而全的Marker管理
* version: 1.0
*/
-public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessageListener {
+public class MapMarkerManager implements IMogoMarkerClickListener,
+ IMogoOnMessageListener< MarkerResponse >,
+ IMogoCardChangedListener {
private static final String TAG = "MapMarkerManager";
// 是否同步在线数据给在线卡片, ACC ON 的标记记录
- private boolean isACC_ON = false;
+ private boolean mIsAccOn = false;
private boolean isSynchronousOnLineData = true;
// 是否选中在线卡片及气泡,语音搜索触发
- private boolean isCheckOnLineData = false;
+ private boolean mIsAISearchOnlineData = false;
- private static Context mContext;
+ private Context mContext;
// 最后一次选中的气泡
- private static IMogoMarker mLastCheckMarker;
+ private IMogoMarker mLastCheckMarker;
private static MapMarkerManager mMarkerManager;
- private static String mLastHighLightModule = "";
+ private String mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION;
// 记录其它已经缩小的Marker
- public static ArrayList alreadySmallMarker = new ArrayList<>();
+ public ArrayList< String > alreadySmallMarker = new ArrayList<>();
// 距离用户最近的Marker
- private IMogoMarker mNearlyMogoMarker = null;
+ private IMogoMarker mNearlyMarker = null;
+ // 记录上次请求数据,切换卡片时做数据处理
+ private MarkerCardResult mLastDataResult;
private MapMarkerManager() {
}
- public static synchronized MapMarkerManager getInstance(Context context) {
- synchronized (MapMarkerManager.class) {
- if (mMarkerManager == null) {
+ public static synchronized MapMarkerManager getInstance() {
+ synchronized ( MapMarkerManager.class ) {
+ if ( mMarkerManager == null ) {
mMarkerManager = new MapMarkerManager();
}
}
@@ -88,96 +88,100 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
*
* @param context
*/
- public void init(Context context) {
+ public void init( Context context ) {
mContext = context;
// 长连接
- MarkerServiceHandler
- .getMogoSocketManager()
- .registerOnMessageListener(401001, this);
-
- MarkerServiceHandler.getMogoCardManager().registerCardChangedListener("LAUNCHER_MARKER_MODULE", new IMogoCardChangedListener() {
-
- @Override
- public void onSwitched(int position, String moduleName) {
- Logger.d(TAG, "当前C位卡片:" + moduleName);
- highlightedMarker(moduleName, false);
- mLastHighLightModule = moduleName;
- if (!isACC_ON) {
- isACC_ON = true;
- MogoServices.getInstance().refreshStrategy();
- }
- }
- });
+ MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this );
+ MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( "LAUNCHER_MARKER_MODULE", this );
}
// ACC ON 的时候重置为true,ACC OFF 设置为 false
- public void setCheckOnLineData(boolean checkOnLineData) {
- isACC_ON = checkOnLineData;
+ // 保留 - 外部模块调用
+ public void setCheckOnLineData( boolean checkOnLineData ) {
+ mIsAccOn = checkOnLineData;
+ }
+
+ @Override
+ public void onSwitched( int position, String moduleName ) {
+ Logger.d( TAG, "当前C位卡片:" + moduleName );
+// highlightedMarker( moduleName, false );
+ mCurrentModuleName = moduleName;
+ if ( !mIsAccOn ) {
+ mIsAccOn = true;
+ Logger.d( TAG, "refresh data" );
+ MogoServices.getInstance().refreshStrategy();
+ } else {
+ runOnTargetThread( () -> {
+ Logger.d( TAG, "switch data" );
+ MarkerServiceHandler.getMarkerManager().removeMarkers();
+ drawMarkerByCurrentType( mLastDataResult );
+ } );
+ }
}
/**
* 地图上的Marker点击回调
*/
@Override
- public boolean onMarkerClicked(IMogoMarker marker) {
- Logger.d(TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker);
+ public boolean onMarkerClicked( IMogoMarker marker ) {
+ Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker );
try {
- if (mLastCheckMarker != null) {
+ if ( mLastCheckMarker != null ) {
// 判断点击的是否是同一个
- if (marker.equals(mLastCheckMarker)) {
- Logger.d(TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker);
+ if ( marker.equals( mLastCheckMarker ) ) {
+ Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker );
return false;
}
// 将上次选中 Marker 设置为未选中状态
- closeMarker(mLastCheckMarker);
+ closeMarker( mLastCheckMarker );
}
// 将当前的Marker设置为选中
- openMarker(marker);
+ openMarker( marker );
// 数据统计代码
- final Map properties = new HashMap<>();
- switch (mLastCheckMarker.getOwner()) {
+ final Map< String, Object > properties = new HashMap<>();
+ switch ( mLastCheckMarker.getOwner() ) {
case ServiceConst.CARD_TYPE_CARS_CHATTING:
- properties.put("type", 3);
+ properties.put( "type", 3 );
break;
case ServiceConst.CARD_TYPE_USER_DATA:
- properties.put("type", 5);
+ properties.put( "type", 5 );
break;
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
- properties.put("type", 2);
+ properties.put( "type", 2 );
break;
case ServiceConst.CARD_TYPE_NOVELTY:
- MarkerShowEntity showEntity = (MarkerShowEntity) mLastCheckMarker.getObject();
+ MarkerShowEntity showEntity = ( MarkerShowEntity ) mLastCheckMarker.getObject();
Object bindObj = showEntity.getBindObj();
- if (bindObj instanceof MarkerNoveltyInfo) {
- switch (((MarkerNoveltyInfo) bindObj).getPoiType()) {
+ if ( bindObj instanceof MarkerNoveltyInfo ) {
+ switch ( ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ) {
case MarkerPoiTypeEnum.GAS_STATION:
- properties.put("type", 4);
+ properties.put( "type", 4 );
break;
case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- properties.put("type", 8);
+ properties.put( "type", 8 );
break;
case MarkerPoiTypeEnum.ROAD_CLOSED:
- properties.put("type", 7);
+ properties.put( "type", 7 );
break;
case MarkerPoiTypeEnum.SHOP_DISCOUNT:
- properties.put("type", 9);
+ properties.put( "type", 9 );
break;
case MarkerPoiTypeEnum.FOURS_4S:
- properties.put("type", 10);
+ properties.put( "type", 10 );
break;
}
}
break;
case ServiceConst.CARD_TYPE_SHARE_MUSIC:
- properties.put("type", 6);
+ properties.put( "type", 6 );
break;
}
- MarkerServiceHandler.getMogoAnalytics().track("Launcher_Icon_Click", properties);
+ MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties );
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
return false;
@@ -185,81 +189,81 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 对指定类型高亮处理
- public synchronized static void highlightedMarker(final String typeTag) {
- highlightedMarker(typeTag, false);
+ public synchronized void highlightedMarker( final String typeTag ) {
+ highlightedMarker( typeTag, false );
}
- public synchronized static void highlightedMarker(final String typeTag, final boolean netDataRefresh) {
+ public synchronized void highlightedMarker( final String typeTag, final boolean netDataRefresh ) {
try {
- Logger.e(TAG, "上一次选中的卡片类型:mLastHighLightModule==" + mLastHighLightModule);
- if (!TextUtils.isEmpty(mLastHighLightModule) && TextUtils.equals(mLastHighLightModule, typeTag) && !netDataRefresh) {
+ Logger.e( TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName );
+ if ( !TextUtils.isEmpty( mCurrentModuleName ) && TextUtils.equals( mCurrentModuleName, typeTag ) && !netDataRefresh ) {
return;
}
// 从已经缩小的记录删除
- alreadySmallMarker.remove(typeTag);
- List currentHighLightList = MarkerServiceHandler.getMarkerManager().getMarkers(typeTag);
+ alreadySmallMarker.remove( typeTag );
+ List< IMogoMarker > currentHighLightList = MarkerServiceHandler.getMarkerManager().getMarkers( typeTag );
- if (currentHighLightList == null || currentHighLightList.size() == 0) {
+ if ( currentHighLightList == null || currentHighLightList.size() == 0 ) {
alreadySmallMarker.clear();
// 放大所有的气泡
- Map> lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers();
- for (String markerName : lastHighLightList.keySet()) {
- setMarkersBig(lastHighLightList.get(markerName));
+ Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers();
+ for ( String markerName : lastHighLightList.keySet() ) {
+ setMarkersBig( lastHighLightList.get( markerName ) );
}
} else {
// 缩小其他的气泡
- Map> lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers();
- for (String markerName : lastHighLightList.keySet()) {
- if (!markerName.equals(typeTag)) {
- if (!alreadySmallMarker.contains(markerName)) {
- alreadySmallMarker.add(markerName);
- setMarkersSmall(lastHighLightList.get(markerName));
+ Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers();
+ for ( String markerName : lastHighLightList.keySet() ) {
+ if ( !markerName.equals( typeTag ) ) {
+ if ( !alreadySmallMarker.contains( markerName ) ) {
+ alreadySmallMarker.add( markerName );
+ setMarkersSmall( lastHighLightList.get( markerName ) );
}
}
}
// 将当前卡片选中的气泡放大
- setMarkersBig(currentHighLightList);
+ setMarkersBig( currentHighLightList );
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
- private static void setMarkersBig(List markers) {
- if (markers == null || markers.isEmpty()) {
+ private static void setMarkersBig( List< IMogoMarker > markers ) {
+ if ( markers == null || markers.isEmpty() ) {
return;
}
- for (IMogoMarker mogoMarker : markers) {
- if (mogoMarker == null || mogoMarker.isDestroyed()) {
+ for ( IMogoMarker mogoMarker : markers ) {
+ if ( mogoMarker == null || mogoMarker.isDestroyed() ) {
continue;
}
try {
- mogoMarker.startScaleAnimation(0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator());
- } catch (Exception e) {
- Logger.e(TAG, e, "error.");
+ mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator() );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
}
}
}
- private static void setMarkersSmall(List markers) {
- if (markers == null || markers.isEmpty()) {
+ private static void setMarkersSmall( List< IMogoMarker > markers ) {
+ if ( markers == null || markers.isEmpty() ) {
return;
}
- for (IMogoMarker mogoMarker : markers) {
- smallMarker(mogoMarker);
+ for ( IMogoMarker mogoMarker : markers ) {
+ smallMarker( mogoMarker );
}
}
- private static void smallMarker(IMogoMarker mogoMarker) {
- if (mogoMarker == null || mogoMarker.isDestroyed()) {
+ private static void smallMarker( IMogoMarker mogoMarker ) {
+ if ( mogoMarker == null || mogoMarker.isDestroyed() ) {
return;
}
try {
- mogoMarker.startScaleAnimation(1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator());
- } catch (Exception e) {
- Logger.e(TAG, e, "error.");
+ mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator() );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
}
}
@@ -268,261 +272,372 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
*
* @param marker 要关闭的Marker
*/
- public synchronized void closeMarkerSelect(IMogoMarker marker) {
+ public synchronized void closeMarkerSelect( IMogoMarker marker ) {
// 将上次选中 Marker 设置为未选中状态
- if (marker != null) {
- Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker);
- closeMarker(marker);
+ if ( marker != null ) {
+ Logger.i( TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker );
+ closeMarker( marker );
mLastCheckMarker = null;
}
}
// 展开气泡
- private void openMarker(IMogoMarker mogoMarker) {
- if (mogoMarker != null) {
- if (mLastCheckMarker != null) {
- closeMarker(mLastCheckMarker);
- }
- mLastCheckMarker = mogoMarker;
- Object object = mogoMarker.getObject();
- if (object != null) {
- MarkerShowEntity markerShowEntity = (MarkerShowEntity) object;
- markerShowEntity.setChecked(true);
- IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions());
- mogoMarker.setIcon(ViewUtils.fromView(markerView.getView()));
- mogoMarker.setToTop();
- }
+ private void openMarker( IMogoMarker mogoMarker ) {
+ if ( mogoMarker == null ) {
+ return;
+ }
+ if ( mLastCheckMarker != null ) {
+ closeMarker( mLastCheckMarker );
+ }
+ mLastCheckMarker = mogoMarker;
+ Object object = mogoMarker.getObject();
+ if ( object != null ) {
+ MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
+ markerShowEntity.setChecked( true );
+ IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) );
+ mogoMarker.setToTop();
}
}
// 折叠气泡
- private void closeMarker(IMogoMarker mogoMarker) {
- if (mogoMarker != null) {
- Object object = mogoMarker.getObject();
- if (object != null) {
- MarkerShowEntity markerShowEntity = (MarkerShowEntity) object;
- markerShowEntity.setChecked(false);
- IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions());
- mogoMarker.setIcon(ViewUtils.fromView(markerView.getView()));
- }
+ private void closeMarker( IMogoMarker mogoMarker ) {
+ if ( mogoMarker == null ) {
+ return;
+ }
+ Object object = mogoMarker.getObject();
+ if ( object != null ) {
+ MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
+ markerShowEntity.setChecked( false );
+ IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) );
}
}
// 绘制Marker
- public synchronized void drawMapMarker(MarkerResponse response) {
- JSONArray array = new JSONArray();
+ public synchronized void drawMapMarker( MarkerResponse response ) {
+
+ if ( response == null || response.getResult() == null ) {
+ return;
+ }
// 解析不同的Marker类型,然后对应的进行绘制
- if (response != null && response.getResult() != null) {
+ if ( response != null && response.getResult() != null ) {
- MarkerCardResult markerCardResult = response.getResult();
+ mLastDataResult = response.getResult();
// 语音触发的在线车辆搜索,采用增量的形式绘制
- if (markerCardResult.getDataType() != null &&
- markerCardResult.getDataType().size() == 1 &&
- markerCardResult.getDataType().contains(ServiceConst.CARD_TYPE_USER_DATA)) {
- MarkerServiceHandler.getMarkerManager().removeMarkers(ServiceConst.CARD_TYPE_USER_DATA);
- MarkerServiceHandler.getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA);
- isCheckOnLineData = true;
+ if ( mIsAISearchOnlineData = isOnlineCarDataOnly( mLastDataResult ) ) {
+ MarkerServiceHandler.getMarkerManager().removeMarkers( ServiceConst.CARD_TYPE_USER_DATA );
+ MarkerServiceHandler.getMogoCardManager().switch2( ServiceConst.CARD_TYPE_USER_DATA );
} else {
mLastCheckMarker = null;
// 清空所有地图上绘制的Marker
MarkerServiceHandler.getMarkerManager().removeMarkers();
}
- List onlineCarList = markerCardResult.getOnlineCar();
- List exploreWayList = markerCardResult.getExploreWay();
- List shareMusicList = markerCardResult.getShareMusic();
- List noveltyInfoList = markerCardResult.getNoveltyInfo();
-
- if (onlineCarList != null) {
- double nearlyDistance = Float.MAX_VALUE;
- for (MarkerOnlineCar markerOnlineCar : onlineCarList) {
- MarkerLocation markerLocation = markerOnlineCar.getLocation();
-
- MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(markerOnlineCar);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(markerOnlineCar.getType());
- markerShowEntity.setTextContent(markerOnlineCar.getUserInfo().getUserName());
- markerShowEntity.setIconUrl(markerOnlineCar.getUserInfo().getUserHead());
-
- IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity);
- // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示
- try {
- // 当前车辆的位置
- MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation();
-
- // 计算车辆距离指定气泡的距离
- float calculateDistance = Utils.calculateLineDistance(
- new MogoLatLng(markerLocation.getLat(), markerLocation.getLon()),
- new MogoLatLng(currentLocation.getLatitude(), currentLocation.getLongitude())
- );
-
-// Logger.d("点之间距离",
-// "当前车辆经纬度:" +
-// "\n\tlatitude=" + currentLocation.getLatitude() +
-// "\n\tlongitude=" + currentLocation.getLongitude() +
-// "\n气泡经纬度:" + markerLocation +
-// "\n相距:" + calculateDistance + "米");
-
- // 进行比较,保留最近的一个数据
- if (calculateDistance < nearlyDistance) {
- nearlyDistance = calculateDistance;
- mNearlyMogoMarker = iMogoMarker;
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- Logger.d(TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance);
- fillNumberTrackEventBody(array, 3, onlineCarList.size());
- }
-
- // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
- MogoDataHandler.getInstance().invoke(ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList);
- if (exploreWayList != null) {
- for (MarkerExploreWay markerExploreWay : exploreWayList) {
- if (!markerExploreWay.getCanLive()) {
- MarkerLocation markerLocation = markerExploreWay.getLocation();
-
- MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(markerExploreWay);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(markerExploreWay.getType());
- markerShowEntity.setTextContent(markerExploreWay.getAddr());
-
- drawMapMarker(markerShowEntity);
- }
- }
- fillNumberTrackEventBody(array, 1, exploreWayList.size());
- }
-
- if (shareMusicList != null) {
- for (MarkerShareMusic markerShareMusic : shareMusicList) {
- MarkerLocation markerLocation = markerShareMusic.getLocation();
-
- MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(markerShareMusic);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(markerShareMusic.getType());
- markerShowEntity.setTextContent(markerShareMusic.getMediaName());
- markerShowEntity.setIconUrl(markerShareMusic.getMediaImg());
-
- drawMapMarker(markerShowEntity);
- }
- fillNumberTrackEventBody(array, 4, shareMusicList.size());
- }
-
- if (noveltyInfoList != null) {
- int num_gas_station = 0;
- int num_traffic_check = 0;
- int num_road_closed = 0;
- int num_shop_discount = 0;
- int num_fours_shop = 0;
-
- for (MarkerNoveltyInfo noveltyInfo : noveltyInfoList) {
- MarkerLocation markerLocation = noveltyInfo.getLocation();
-
- MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- markerShowEntity.setBindObj(noveltyInfo);
- markerShowEntity.setMarkerLocation(markerLocation);
- markerShowEntity.setMarkerType(noveltyInfo.getType());
- markerShowEntity.setTextContent(noveltyInfo.getLocation().getAddress());
-
- drawMapMarker(markerShowEntity);
-
- switch (noveltyInfo.getPoiType()) {
- case MarkerPoiTypeEnum.GAS_STATION:
- num_gas_station++;
- break;
- case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- num_traffic_check++;
- break;
- case MarkerPoiTypeEnum.ROAD_CLOSED:
- num_road_closed++;
- break;
- case MarkerPoiTypeEnum.SHOP_DISCOUNT:
- num_shop_discount++;
- break;
- case MarkerPoiTypeEnum.FOURS_4S:
- num_fours_shop++;
- break;
- }
- }
- fillNumberTrackEventBody(array, 2, num_gas_station);
- fillNumberTrackEventBody(array, 6, num_road_closed);
- fillNumberTrackEventBody(array, 5, num_traffic_check);
- fillNumberTrackEventBody(array, 7, num_shop_discount);
- fillNumberTrackEventBody(array, 8, num_fours_shop);
- }
- analyticData(array);
-
+ drawMarkerByCurrentType( mLastDataResult );
// 同步新绘制的气泡状态
alreadySmallMarker.clear();
- highlightedMarker(mLastHighLightModule, true);
+// highlightedMarker( mCurrentModuleName, true );
- try {
- // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker
- if (isCheckOnLineData) {
- if (mNearlyMogoMarker != null) {
- Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMogoMarker);
- // 移动地图到指定位置
- MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false);
- MarkerServiceHandler.getMapUIController().moveToCenter(mNearlyMogoMarker.getPosition());
- onMarkerClicked(mNearlyMogoMarker);
- MogoMarkersHandler.getInstance().onMarkerClicked(mNearlyMogoMarker);
- isCheckOnLineData = false;
- }
- }
-
- if (isACC_ON && isSynchronousOnLineData) {
- isSynchronousOnLineData = false;
- if (mNearlyMogoMarker != null) {
- Logger.d(TAG, "ACC ON 触发,将附近的在线车辆数据同步给卡片:" + mNearlyMogoMarker);
- openMarker(mNearlyMogoMarker);
- // 将数据同步给在线用户卡片
- MogoDataHandler.getInstance().invoke(ServiceConst.CARD_TYPE_USER_DATA, mNearlyMogoMarker);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
+ trackData( mLastDataResult );
}
}
+ /**
+ * 是否是语音搜索的在线车辆数据:目前根据返回数据判断
+ *
+ * @param markerCardResult
+ * @return
+ */
+ private boolean isOnlineCarDataOnly( MarkerCardResult markerCardResult ) {
+ if ( markerCardResult != null &&
+ markerCardResult.getDataType() != null &&
+ markerCardResult.getDataType().size() == 1 &&
+ markerCardResult.getDataType().contains( ServiceConst.CARD_TYPE_USER_DATA ) ) {
+ return true;
+ }
+ return false;
+ }
/**
- * 统计埋点
+ * 根据类型绘制
+ *
+ * @param markerCardResult
*/
- private synchronized static void fillNumberTrackEventBody(JSONArray arr, int type, int size) {
- JSONObject object = new JSONObject();
- try {
- object.put("type", type);
- object.put("num", size);
- if (arr != null) {
- arr.put(object);
+ private synchronized void drawMarkerByCurrentType( MarkerCardResult markerCardResult ) {
+
+ if ( markerCardResult == null ) {
+ return;
+ }
+
+ if ( TextUtils.isEmpty( mCurrentModuleName ) ) {
+ // 默认大而全
+ mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION;
+ }
+
+ List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar();
+ List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay();
+ List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic();
+ List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo();
+
+ switch ( mCurrentModuleName ) {
+ case ServiceConst.CARD_TYPE_BUSINESS_OPERATION:
+ drawAllMarker( markerCardResult );
+ break;
+ case ServiceConst.CARD_TYPE_NOVELTY:
+ drawNoveltyMarker( noveltyInfoList );
+ break;
+ case ServiceConst.CARD_TYPE_CARS_CHATTING:
+ case ServiceConst.CARD_TYPE_USER_DATA:
+ drawOnlineCarMarkers( onlineCarList );
+ break;
+ case ServiceConst.CARD_TYPE_ROAD_CONDITION:
+ drawRoadConditionMarker( exploreWayList );
+ break;
+ case ServiceConst.CARD_TYPE_SHARE_MUSIC:
+ drawShareMusicMarker( shareMusicList );
+ break;
+ }
+ }
+
+ /**
+ * 绘制所有数据
+ *
+ * @param markerCardResult
+ */
+ private void drawAllMarker( MarkerCardResult markerCardResult ) {
+ List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar();
+ List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay();
+ List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic();
+ List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo();
+
+ drawOnlineCarMarkers( onlineCarList );
+ drawRoadConditionMarker( exploreWayList );
+ drawShareMusicMarker( shareMusicList );
+ drawNoveltyMarker( noveltyInfoList );
+ }
+
+ /**
+ * 绘制在线车辆marker
+ *
+ * @param onlineCarList
+ */
+ private void drawOnlineCarMarkers( List< MarkerOnlineCar > onlineCarList ) {
+ if ( onlineCarList == null || onlineCarList.isEmpty() ) {
+ return;
+ }
+ double nearlyDistance = Float.MAX_VALUE;
+ for ( MarkerOnlineCar markerOnlineCar : onlineCarList ) {
+ MarkerLocation markerLocation = markerOnlineCar.getLocation();
+
+ MarkerShowEntity markerShowEntity = new MarkerShowEntity();
+ markerShowEntity.setBindObj( markerOnlineCar );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( markerOnlineCar.getType() );
+ markerShowEntity.setTextContent( markerOnlineCar.getUserInfo().getUserName() );
+ markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() );
+
+ IMogoMarker iMogoMarker = drawMapMarker( markerShowEntity );
+ // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示
+ try {
+ // 当前车辆的位置
+ MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation();
+
+ // 计算车辆距离指定气泡的距离
+ float calculateDistance = Utils.calculateLineDistance(
+ new MogoLatLng( markerLocation.getLat(), markerLocation.getLon() ),
+ new MogoLatLng( currentLocation.getLatitude(), currentLocation.getLongitude() )
+ );
+
+ // 进行比较,保留最近的一个数据
+ if ( calculateDistance < nearlyDistance ) {
+ nearlyDistance = calculateDistance;
+ mNearlyMarker = iMogoMarker;
+ }
+
+ } catch ( Exception e ) {
+ e.printStackTrace();
}
- } catch (JSONException e) {
+ }
+ Logger.d( TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance );
+
+ try {
+ // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker
+ if ( mIsAISearchOnlineData ) {
+ if ( mNearlyMarker != null ) {
+ Logger.d( TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker );
+ // 移动地图到指定位置
+ MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( ServiceConst.TYPE, true, false );
+ MarkerServiceHandler.getMapUIController().moveToCenter( mNearlyMarker.getPosition() );
+ onMarkerClicked( mNearlyMarker );
+ MogoMarkersHandler.getInstance().onMarkerClicked( mNearlyMarker );
+ mIsAISearchOnlineData = false;
+ }
+ }
+
+ if ( mIsAccOn && isSynchronousOnLineData ) {
+ isSynchronousOnLineData = false;
+ if ( mNearlyMarker != null ) {
+ Logger.d( TAG, "ACC ON 触发,将附近的在线车辆数据同步给卡片:" + mNearlyMarker );
+ openMarker( mNearlyMarker );
+ // 将数据同步给在线用户卡片
+ MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_USER_DATA, mNearlyMarker );
+ }
+ }
+ } catch ( Exception e ) {
e.printStackTrace();
}
}
+ /**
+ * 探路数据
+ *
+ * @param exploreWayList
+ */
+ private void drawRoadConditionMarker( List< MarkerExploreWay > exploreWayList ) {
+ // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
+ MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList );
+ if ( exploreWayList == null || exploreWayList.isEmpty() ) {
+ return;
+ }
+ for ( MarkerExploreWay markerExploreWay : exploreWayList ) {
+ if ( !markerExploreWay.getCanLive() ) {
+ MarkerLocation markerLocation = markerExploreWay.getLocation();
+
+ MarkerShowEntity markerShowEntity = new MarkerShowEntity();
+ markerShowEntity.setBindObj( markerExploreWay );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( markerExploreWay.getType() );
+ markerShowEntity.setTextContent( markerExploreWay.getAddr() );
+
+ drawMapMarker( markerShowEntity );
+ }
+ }
+ }
+
+ /**
+ * 共享音乐
+ *
+ * @param shareMusicList
+ */
+ private void drawShareMusicMarker( List< MarkerShareMusic > shareMusicList ) {
+ if ( shareMusicList == null ) {
+ return;
+ }
+ for ( MarkerShareMusic markerShareMusic : shareMusicList ) {
+ MarkerLocation markerLocation = markerShareMusic.getLocation();
+
+ MarkerShowEntity markerShowEntity = new MarkerShowEntity();
+ markerShowEntity.setBindObj( markerShareMusic );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( markerShareMusic.getType() );
+ markerShowEntity.setTextContent( markerShareMusic.getMediaName() );
+ markerShowEntity.setIconUrl( markerShareMusic.getMediaImg() );
+
+ drawMapMarker( markerShowEntity );
+ }
+ }
+
+ /**
+ * 新鲜事
+ *
+ * @param noveltyInfoList
+ */
+ private void drawNoveltyMarker( List< MarkerNoveltyInfo > noveltyInfoList ) {
+ if ( noveltyInfoList == null ) {
+ return;
+ }
+ for ( MarkerNoveltyInfo noveltyInfo : noveltyInfoList ) {
+ MarkerLocation markerLocation = noveltyInfo.getLocation();
+ MarkerShowEntity markerShowEntity = new MarkerShowEntity();
+ markerShowEntity.setBindObj( noveltyInfo );
+ markerShowEntity.setMarkerLocation( markerLocation );
+ markerShowEntity.setMarkerType( noveltyInfo.getType() );
+ markerShowEntity.setTextContent( noveltyInfo.getLocation().getAddress() );
+ drawMapMarker( markerShowEntity );
+ }
+ }
+
+
/**
* 统计地图内数据获取
*
- * @param array 埋点数据
+ * @param markerCardResult
*/
- private synchronized static void analyticData(JSONArray array) {
+ private void trackData( MarkerCardResult markerCardResult ) {
+ if ( markerCardResult == null ) {
+ return;
+ }
+ JSONArray array = new JSONArray();
+ List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar();
+ List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay();
+ List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic();
+ List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo();
+
+ fillNumberTrackEventBody( array, 3, onlineCarList.size() );
+ fillNumberTrackEventBody( array, 1, exploreWayList.size() );
+ fillNumberTrackEventBody( array, 4, shareMusicList.size() );
+
+ int num_gas_station = 0;
+ int num_traffic_check = 0;
+ int num_road_closed = 0;
+ int num_shop_discount = 0;
+ int num_fours_shop = 0;
+
+ for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) {
+ if ( markerNoveltyInfo == null ) {
+ continue;
+ }
+ switch ( markerNoveltyInfo.getPoiType() ) {
+ case MarkerPoiTypeEnum.GAS_STATION:
+ num_gas_station++;
+ break;
+ case MarkerPoiTypeEnum.TRAFFIC_CHECK:
+ num_traffic_check++;
+ break;
+ case MarkerPoiTypeEnum.ROAD_CLOSED:
+ num_road_closed++;
+ break;
+ case MarkerPoiTypeEnum.SHOP_DISCOUNT:
+ num_shop_discount++;
+ break;
+ case MarkerPoiTypeEnum.FOURS_4S:
+ num_fours_shop++;
+ break;
+ }
+ }
+ fillNumberTrackEventBody( array, 2, num_gas_station );
+ fillNumberTrackEventBody( array, 6, num_road_closed );
+ fillNumberTrackEventBody( array, 5, num_traffic_check );
+ fillNumberTrackEventBody( array, 7, num_shop_discount );
+ fillNumberTrackEventBody( array, 8, num_fours_shop );
+
try {
- if (array == null || array.length() == 0) {
+ if ( array.length() == 0 ) {
return;
}
- final Map properties = new HashMap<>();
- properties.put("data", array.toString());
- MarkerServiceHandler.getMogoAnalytics().track("Launcher_Data_Get", properties);
- } catch (Exception e) {
+ final Map< String, Object > properties = new HashMap<>();
+ properties.put( "data", array.toString() );
+ MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Data_Get", properties );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 统计埋点
+ */
+ private synchronized static void fillNumberTrackEventBody( JSONArray arr, int type, int size ) {
+ JSONObject object = new JSONObject();
+ try {
+ object.put( "type", type );
+ object.put( "num", size );
+ if ( arr != null ) {
+ arr.put( object );
+ }
+ } catch ( JSONException e ) {
e.printStackTrace();
}
}
@@ -533,44 +648,44 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
* @param markerShowEntity marker 绘制数据实体
* @return 绘制的Marker
*/
- public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) {
- if (!TextUtils.isEmpty(mLastHighLightModule)
- && mLastCheckMarker != null
- && !TextUtils.isEmpty(mLastCheckMarker.getOwner())
- && TextUtils.equals(mLastHighLightModule, mLastCheckMarker.getOwner())
- ) {
- return drawMapMarker(markerShowEntity, true);
- } else {
- return drawMapMarker(markerShowEntity, false);
- }
+ public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity ) {
+ return drawMapMarker( markerShowEntity, isSmallType() );
}
- private synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity, boolean isSmall) {
+ private boolean isSmallType() {
+ return !TextUtils.isEmpty( mCurrentModuleName )
+ && mLastCheckMarker != null
+ && !mLastCheckMarker.isDestroyed()
+ && TextUtils.equals( mCurrentModuleName, mLastCheckMarker.getOwner() );
+ }
+
+ private IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, boolean isSmall ) {
//Logger.i(TAG, "绘制Marker====drawMapMarker:" + markerShowEntity);
try {
- if (markerShowEntity.getMarkerLocation() != null) {
+ if ( markerShowEntity.getMarkerLocation() != null ) {
MogoMarkerOptions options = new MogoMarkerOptions()
- .owner(markerShowEntity.getMarkerType())
- .object(markerShowEntity)
- .latitude(markerShowEntity.getMarkerLocation().getLat())
- .longitude(markerShowEntity.getMarkerLocation().getLon());
- IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options);
- options.icon(markerView.getView());
+ .owner( markerShowEntity.getMarkerType() )
+ .object( markerShowEntity )
+ .latitude( markerShowEntity.getMarkerLocation().getLat() )
+ .longitude( markerShowEntity.getMarkerLocation().getLon() );
+ IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, options );
+ options.icon( markerView.getView() );
- IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
- markerView.setMarker(marker);
- marker.setOnMarkerClickListener(this);
+ IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker( markerShowEntity.getMarkerType(), options );
+ marker.setOwner( markerShowEntity.getMarkerType() );
+ markerView.setMarker( marker );
+ marker.setOnMarkerClickListener( this );
- if (isSmall) {
- List markers = new ArrayList<>();
- markers.add(marker);
- setMarkersSmall(markers);
+ if ( isSmall ) {
+ List< IMogoMarker > markers = new ArrayList<>();
+ markers.add( marker );
+ setMarkersSmall( markers );
}
return marker;
} else {
- Logger.e(TAG, "Location 必须进行初始化!!!!!");
+ Logger.e( TAG, "Location 必须进行初始化!!!!!" );
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
return null;
@@ -578,23 +693,29 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
@Override
- public Class target() {
+ public Class< MarkerResponse > target() {
return MarkerResponse.class;
}
@Override
- public void onMsgReceived(final MarkerResponse response) {
- Logger.d(TAG, "接收到了地图大而全数据");
- if (!MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()
- && isACC_ON
- && !MarkerServiceHandler.getMogoStatusManager().isV2XShow()) {
- Handler handler = new Handler(Looper.getMainLooper());
- handler.post(new Runnable() {
- @Override
- public void run() {
- drawMapMarker(response);
- }
+ public void onMsgReceived( final MarkerResponse response ) {
+ if ( !ignoreDrawRequest() ) {
+ Logger.d( TAG, "接收到了地图大而全数据" );
+ runOnTargetThread( () -> {
+ drawMapMarker( response );
} );
}
}
+
+ private boolean ignoreDrawRequest() {
+ return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()
+ || MarkerServiceHandler.getMogoStatusManager().isV2XShow();
+ }
+
+ private void runOnTargetThread( Runnable runnable ) {
+ if ( runnable == null ) {
+ return;
+ }
+ ThreadPoolService.execute( runnable );
+ }
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java
index d620f20586..47d96799f4 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/refresh/AutoRefreshStrategy.java
@@ -21,9 +21,9 @@ public class AutoRefreshStrategy {
private long interval = 3 * ONE_MINUTE;
/**
- * 用户打断后的延时(s)
+ * 用户打断后的延时(s)【2.0.2后不再延时】
*/
- private long interruptInterval = 1 * ONE_MINUTE;
+ private long interruptInterval = 0 * ONE_MINUTE;
/**
* 距离(米)
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
index c5f43a8e08..1983c7fe4e 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
@@ -3,6 +3,7 @@ package com.mogo.service;
import android.content.Context;
import com.alibaba.android.arouter.facade.template.IProvider;
+import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
@@ -103,7 +104,7 @@ public interface IMogoServiceApis extends IProvider {
*
* @return
*/
- IMogoSettingManager getSettingManager();
+ IMogoSettingManager getSettingManagerApi();
/**
* 网络接口api
@@ -129,5 +130,12 @@ public interface IMogoServiceApis extends IProvider {
*
* @return
*/
- IMogoWindowManager getWindowManager();
+ IMogoWindowManager getWindowManagerApi();
+
+ /**
+ * 辅助驾驶控制接口
+ *
+ * @return
+ */
+ IMogoADASController getAdasControllerApi();
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
index 7d1bee9a1e..e200c4401a 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
@@ -132,6 +132,12 @@ public class MogoServicePaths {
@Deprecated
public static final String PATH_DATA_MANAGER = "/datamanager/api";
+ /**
+ * adas 控制
+ */
+ @Deprecated
+ public static final String PATH_ADAS_CONTROLLER = "/adascontroller/api";
+
/**
* 接口集合
*/
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java
new file mode 100644
index 0000000000..5a6f90560d
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java
@@ -0,0 +1,23 @@
+package com.mogo.service.adas;
+
+import com.alibaba.android.arouter.facade.template.IProvider;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-10
+ *
+ * v2x 页面控制
+ */
+public interface IMogoADASController extends IProvider {
+
+ /**
+ * 打开adas
+ */
+ void openADAS();
+
+ /**
+ * 关闭adas
+ */
+ void closeADAS();
+
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java
index 30c0ed5f17..7fa7b4eced 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java
@@ -17,6 +17,14 @@ public interface IMogoCardManager extends IProvider {
*/
void switch2( String cardType );
+ /**
+ * 切换卡片
+ *
+ * @param cardType 卡片类型
+ * @param lockCar 是否锁车[将视图拉回车位]
+ */
+ void switch2( String cardType, boolean lockCar );
+
/**
* 注册卡片切换监听
*/
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java
index 2e2d76ff12..74ab4be6ee 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java
@@ -1,7 +1,5 @@
package com.mogo.service.datamanager;
-import java.util.List;
-
/**
* @author congtaowang
* @since 2020-02-11
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
index 3297ec44fd..78df9b1960 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
@@ -8,6 +8,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.connection.socket.SocketManager;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
@@ -114,15 +115,20 @@ public class MogoServiceApis implements IMogoServiceApis {
}
@Override
- public IMogoSettingManager getSettingManager() {
+ public IMogoSettingManager getSettingManagerApi() {
return getApiInstance( IMogoSettingManager.class, MogoServicePaths.PATH_SETTING_MANAGER );
}
@Override
- public IMogoWindowManager getWindowManager() {
+ public IMogoWindowManager getWindowManagerApi() {
return getApiInstance( IMogoWindowManager.class, MogoServicePaths.PATH_WINDOW_MANAGER );
}
+ @Override
+ public IMogoADASController getAdasControllerApi() {
+ return getApiInstance( IMogoADASController.class, MogoServicePaths.PATH_ADAS_CONTROLLER );
+ }
+
private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) {
T inst = SingletonsHolder.get( clazz );
if ( inst == null ) {
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
new file mode 100644
index 0000000000..a988dc8a80
--- /dev/null
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
@@ -0,0 +1,79 @@
+package com.mogo.service.impl.adas;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.Intent;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.adas.IMogoADASController;
+import com.mogo.utils.logger.Logger;
+
+import org.json.JSONObject;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-10
+ *
+ * 描述
+ */
+@Route( path = MogoServicePaths.PATH_ADAS_CONTROLLER )
+public class MogoADASController implements IMogoADASController {
+
+ private static final String TAG = "MogoADASController";
+
+ public static final String ACTION = "com.zhidao.speech.awake.notify";
+ public static final String PARAM_COMMAND = "command";
+ public static final String VAL_COMMAND = "system.application.operation";
+ public static final String PARAM_DATA = "data";
+ public static final String PARAM_OBJECT = "object";
+ public static final String VAL_OBJECT = "辅助驾驶";
+ public static final String PARAM_OPERATION = "operation";
+ public static final String VAL_OPEN = "打开";
+ public static final String VAL_CLOSE = "关闭";
+
+ @Override
+ public void openADAS() {
+ Intent intent = new Intent( ACTION );
+ intent.putExtra( PARAM_COMMAND, VAL_COMMAND );
+ JSONObject object = new JSONObject();
+ try {
+ object.put( PARAM_OBJECT, VAL_OBJECT );
+ object.put( PARAM_OPERATION, VAL_OPEN );
+ intent.putExtra( PARAM_DATA, object.toString() );
+ sendBroadcast( intent );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+
+ @Override
+ public void closeADAS() {
+ Intent intent = new Intent( ACTION );
+ intent.putExtra( PARAM_COMMAND, VAL_COMMAND );
+ JSONObject object = new JSONObject();
+ try {
+ object.put( PARAM_OBJECT, VAL_OBJECT );
+ object.put( PARAM_OPERATION, VAL_CLOSE );
+ intent.putExtra( PARAM_DATA, object.toString() );
+ sendBroadcast( intent );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+
+ private void sendBroadcast( Intent intent ) {
+ Application app = AbsMogoApplication.getApp();
+ if ( app == null ) {
+ Logger.e( TAG, "un handle Application instance." );
+ return;
+ }
+ app.sendBroadcast( intent );
+ }
+
+ @Override
+ public void init( Context context ) {
+
+ }
+}