2) {
+ index = -1;
+ }
+ //很奇怪,但是位置就是相差
+ if (index == -1) {
+ index = -3;
+ }
+
+ Logger.d(TAG, "position--" + position + "index--" + index);
+ scroller.smoothScrollToPosition(scroller.getCurrentItem() + index);
+ currentPosition = position;
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java
index 3cc41b2db5..c9eff5c832 100644
--- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java
+++ b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java
@@ -5,6 +5,7 @@ import android.graphics.Point;
import android.graphics.PointF;
import android.os.Bundle;
import android.os.Parcelable;
+import android.util.DisplayMetrics;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
@@ -14,6 +15,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.accessibility.AccessibilityEventCompat;
import androidx.core.view.accessibility.AccessibilityRecordCompat;
+import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer;
@@ -23,7 +25,7 @@ import java.util.Locale;
/**
* Created by yarolegovich on 17.02.2017.
*/
-class DiscreteScrollLayoutManager extends RecyclerView.LayoutManager {
+class DiscreteScrollLayoutManager extends LinearLayoutManager {
static final int NO_POSITION = -1;
@@ -79,6 +81,7 @@ class DiscreteScrollLayoutManager extends RecyclerView.LayoutManager {
@NonNull Context c,
@NonNull ScrollStateListener scrollStateListener,
@NonNull DSVOrientation orientation) {
+ super(c);
this.context = c;
this.timeForItemSettle = DEFAULT_TIME_FOR_ITEM_SETTLE;
this.pendingPosition = NO_POSITION;
@@ -355,18 +358,39 @@ class DiscreteScrollLayoutManager extends RecyclerView.LayoutManager {
recyclerViewProxy.requestLayout();
}
+ //@Override
+ //public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
+ // if (currentPosition == position || pendingPosition != NO_POSITION) {
+ // return;
+ // }
+ // checkTargetPosition(state, position);
+ // if (currentPosition == NO_POSITION) {
+ // //Layout not happened yet
+ // currentPosition = position;
+ // } else {
+ // startSmoothPendingScroll(position);
+ // }
+ //}
+
+
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
- if (currentPosition == position || pendingPosition != NO_POSITION) {
- return;
- }
- checkTargetPosition(state, position);
- if (currentPosition == NO_POSITION) {
- //Layout not happened yet
- currentPosition = position;
- } else {
- startSmoothPendingScroll(position);
- }
+ LinearSmoothScroller smoothScroller =
+ new LinearSmoothScroller(recyclerView.getContext()) {
+ @Override
+ protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
+ // 返回:滑过1px时经历的时间(ms)。
+ return 150f / displayMetrics.densityDpi;
+ }
+
+ @Override
+ public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) {
+ return boxStart - viewStart;
+ }
+ };
+
+ smoothScroller.setTargetPosition(position);
+ startSmoothScroll(smoothScroller);
}
@Override
@@ -512,6 +536,9 @@ class DiscreteScrollLayoutManager extends RecyclerView.LayoutManager {
startSmoothPendingScroll();
}
+
+
+
@Override
public boolean isAutoMeasureEnabled() {
return true;
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 c9423eba96..4e040f1241 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
@@ -57,7 +57,7 @@ import java.util.List;
*/
public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView,
IMogoLocationListener,
- IMogoMarkerClickListener, IMogoIntentListener, IMogoCardChangedListener {
+ IMogoMarkerClickListener{
private static final String TAG = "MainActivity";
@@ -91,7 +91,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
private int mCurrentPosition = 0;
private ViewPager.OnPageChangeListener mOnPageChangeListener;
- private IMogoIntentManager mMogoIntentManager;
@Override
protected int getLayoutId() {
@@ -246,7 +245,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoCardManager = mServiceApis.getCardManagerApi();
- mMogoCardManager.registerCardChangedListener(TAG,this);
mMogoFragmentManager = mServiceApis.getFragmentManagerApi();
mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
@@ -257,19 +255,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
}
} );
- mMogoIntentManager = mServiceApis.getIntentManagerApi();
mMogoStatusManager = mServiceApis.getStatusManagerApi();
- registerVoiceCmd();
Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
}
- private void registerVoiceCmd() {
-
- for ( String cmd : VoiceConstants.sCmds ) {
- mMogoIntentManager.registerIntentListener( cmd, this );
- }
- }
-
private void startLocation() {
mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() );
mLocationClient.addLocationListener( this );
@@ -391,62 +380,4 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoFragmentManager = null;
AIAssist.getInstance( this ).release();
}
-
- @Override
- public void onIntentReceived( String intentStr, Intent intent ) {
- if ( TextUtils.isEmpty( intentStr ) ) {
- return;
- }
- int currentItem = mCardsContainer.getCurrentItem();
- int cardSize = mCardModulesAdapter.getCount();
-
- switch ( intentStr ) {
- case VoiceConstants.COMMAND_ZHIDAO_SWITCHCARD:
-
- String data = intent.getStringExtra( "data" );
-
- try {
- JSONObject jsonObject = new JSONObject( data );
-
- String card = jsonObject.getString( "card" );
-
- if ( TextUtils.equals( "多媒体", card ) ) {
- mCardsContainer.setCurrentItem( 1 );
-
- } else if ( TextUtils.equals( "探路", card ) ) {
- mCardsContainer.setCurrentItem( 3 );
-
-
- } else if ( TextUtils.equals( "在线车辆", card ) ) {
- mCardsContainer.setCurrentItem( 5 );
-
- }
- } catch ( JSONException e ) {
- e.printStackTrace();
- }
-
- break;
-
- case VoiceConstants.COMMAND_ZHIDAO_SWITCHCARD_NEXT:
- currentItem++;
- mCardsContainer.setCurrentItem( currentItem / cardSize );
-
- break;
-
- case VoiceConstants.COMMAND_ZHIDAO_SWITCHCARD_PREVIOUS:
- currentItem--;
- if ( currentItem < 0 ) {
- currentItem += cardSize;
- }
- mCardsContainer.setCurrentItem( currentItem / cardSize );
-
- break;
- default:
- break;
- }
- }
-
- @Override public void onSwitched(int position, String moduleName) {
- mCardsContainer.setCurrentItem( position );
- }
}
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 9ae4e40ac8..13b797fad2 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
@@ -29,6 +29,7 @@ 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.service.marker.MapMarkerManager;
import com.mogo.module.service.network.RefreshCallback;
import com.mogo.module.service.network.RefreshModel;
import com.mogo.module.service.receiver.MogoReceiver;
@@ -37,15 +38,21 @@ import com.mogo.module.service.refresh.CustomRefreshStrategy;
import com.mogo.module.service.refresh.RefreshObject;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.map.IMogoMapService;
+import com.mogo.service.module.MogoAction;
+import com.mogo.service.module.IMogoActionManager;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.logger.Logger;
+import org.json.JSONException;
+import org.json.JSONObject;
+
import java.util.List;
/**
@@ -93,6 +100,8 @@ public class MogoServices implements IMogoMapListener,
private IMogoMapUIController mUiController;
+ private IMogoCardManager mCardManager;
+
/**
* 是否已计算出地图显示状态
*/
@@ -118,6 +127,7 @@ public class MogoServices implements IMogoMapListener,
private IMogoMapService mMogoMapService;
private IMogoStatusManager mStatusManager;
private IMogoIntentManager mIntentManager;
+ private IMogoActionManager mFlipContentManager;
/**
* 地图视图初始化
@@ -248,7 +258,6 @@ public class MogoServices implements IMogoMapListener,
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ADAS_UI, this );
- //TODO 初始化地图地图绘制大而全的Marker
MarkerServiceHandler.init( mContext );
registerAIReceiver( context );
@@ -264,6 +273,9 @@ public class MogoServices implements IMogoMapListener,
mIntentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_NWD_ACC, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_UI, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_NEXT, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_PREVIOUS, this );
+ mIntentManager.registerIntentListener( ServiceConst.COMMAND_SWITCH_CARD, this );
initWorkThread();
}
@@ -679,6 +691,25 @@ public class MogoServices implements IMogoMapListener,
} else if ( TextUtils.equals( val, MogoReceiver.VALUE_SHOW ) ) {
mStatusManager.setVoiceUIShow( TAG, true );
}
+ } else if ( ServiceConst.COMMAND_NEXT.equals( command ) ) {
+ mFlipContentManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next );
+ } else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) {
+ mFlipContentManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev );
+ } else if ( ServiceConst.COMMAND_SWITCH_CARD.equals( command ) ) {
+ String data = intent.getStringExtra( "data" );
+ try {
+ JSONObject jsonObject = new JSONObject( data );
+ String card = jsonObject.getString( "card" );
+ if ( TextUtils.equals( "多媒体", card ) ) {
+ mCardManager.switch2( ServiceConst.CARD_TYPE_SHARE_MUSIC, true );
+ } else if ( TextUtils.equals( "探路", card ) ) {
+ mCardManager.switch2( ServiceConst.CARD_TYPE_ROAD_CONDITION, true );
+ } else if ( TextUtils.equals( "在线车辆", card ) ) {
+ mCardManager.switch2( ServiceConst.CARD_TYPE_USER_DATA, true );
+ }
+ } catch ( JSONException e ) {
+ e.printStackTrace();
+ }
}
}
}
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 f45cafaab4..63e53b212e 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
@@ -108,4 +108,20 @@ public class ServiceConst {
public static final int MSG_REQUEST_DATA = 0x201;
+ /**
+ * 切换上一张卡片
+ */
+ public static final String COMMAND_PREVIOUS = "com.zhidao.desk.switchCard.previous";
+
+ /**
+ * 切换下一张卡片
+ */
+ public static final String COMMAND_NEXT = "com.zhidao.desk.switchCard.next";
+
+ /**
+ * 查看多媒体卡片、探路卡片
+ */
+ public static final String COMMAND_SWITCH_CARD = "com.zhidao.desk.switchCard";
+
+
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/flipcontent/MogoActionManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/flipcontent/MogoActionManager.java
new file mode 100644
index 0000000000..648188904c
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/flipcontent/MogoActionManager.java
@@ -0,0 +1,39 @@
+package com.mogo.module.service.flipcontent;
+
+import android.content.Context;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.module.MogoAction;
+import com.mogo.service.module.IMogoActionListener;
+import com.mogo.service.module.IMogoActionManager;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-12
+ *
+ * 描述
+ */
+@Route( path = MogoServicePaths.PATH_ACTION_APIS )
+public class MogoActionManager implements IMogoActionManager {
+
+ @Override
+ public void registerActionListener( String biz, IMogoActionListener listener ) {
+ MogoFlipContentHandler.getInstance().registerActionListener( biz, listener );
+ }
+
+ @Override
+ public void unregisterActionListener( String biz, IMogoActionListener listener ) {
+ MogoFlipContentHandler.getInstance().unregisterActionListener( biz, listener );
+ }
+
+ @Override
+ public void invoke( String biz, MogoAction action ) {
+ MogoFlipContentHandler.getInstance().invoke( biz, action );
+ }
+
+ @Override
+ public void init( Context context ) {
+ MogoFlipContentHandler.getInstance().init( context );
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/flipcontent/MogoFlipContentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/flipcontent/MogoFlipContentHandler.java
new file mode 100644
index 0000000000..999cf76877
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/flipcontent/MogoFlipContentHandler.java
@@ -0,0 +1,85 @@
+package com.mogo.module.service.flipcontent;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.mogo.service.module.MogoAction;
+import com.mogo.service.module.IMogoActionListener;
+import com.mogo.service.module.IMogoActionManager;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-12
+ *
+ * 描述
+ */
+public class MogoFlipContentHandler implements IMogoActionManager {
+
+ private MogoFlipContentHandler() {
+ // private constructor
+ }
+
+ private static final class InstanceHolder {
+ private static final MogoFlipContentHandler INSTANCE = new MogoFlipContentHandler();
+ }
+
+ public static MogoFlipContentHandler getInstance() {
+ return InstanceHolder.INSTANCE;
+ }
+
+ private Object readResolve() {
+ // 阻止反序列化,必须实现 Serializable 接口
+ return InstanceHolder.INSTANCE;
+ }
+
+ private Map< String, List< IMogoActionListener > > mListeners = new ConcurrentHashMap<>();
+
+ @Override
+ public void registerActionListener( String biz, IMogoActionListener listener ) {
+ if ( TextUtils.isEmpty( biz ) || listener == null ) {
+ return;
+ }
+ if ( !mListeners.containsKey( biz ) ) {
+ mListeners.put( biz, new ArrayList<>() );
+ }
+ mListeners.get( biz ).add( listener );
+ }
+
+ @Override
+ public void unregisterActionListener( String biz, IMogoActionListener listener ) {
+ if ( TextUtils.isEmpty( biz ) || listener == null ) {
+ return;
+ }
+ if ( mListeners.containsKey( biz ) ) {
+ mListeners.get( biz ).remove( listener );
+ }
+ }
+
+ @Override
+ public void init( Context context ) {
+
+ }
+
+ @Override
+ public void invoke( String biz, MogoAction action ) {
+ if ( !mListeners.containsKey( biz ) ) {
+ return;
+ }
+ List< IMogoActionListener > listeners = mListeners.get( biz );
+ if ( listeners != null ) {
+ Iterator< IMogoActionListener > iterator = listeners.iterator();
+ while ( iterator.hasNext() ) {
+ IMogoActionListener listener = iterator.next();
+ if ( listener != null ) {
+ listener.onActionDone( action );
+ }
+ }
+ }
+ }
+}
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 4238da6512..f42faa84ae 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
@@ -752,4 +752,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
ThreadPoolService.execute( runnable );
}
+
+ public String getCurrentModuleName() {
+ return mCurrentModuleName;
+ }
}
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 1983c7fe4e..b9a99cd103 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
@@ -12,6 +12,7 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.map.IMogoMapService;
+import com.mogo.service.module.IMogoActionManager;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.module.IMogoSettingManager;
@@ -138,4 +139,11 @@ public interface IMogoServiceApis extends IProvider {
* @return
*/
IMogoADASController getAdasControllerApi();
+
+ /**
+ * 内容翻页
+ *
+ * @return
+ */
+ IMogoActionManager getFlipContentManager();
}
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 e200c4401a..239f026a65 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
@@ -142,4 +142,10 @@ public class MogoServicePaths {
* 接口集合
*/
public static final String PATH_SERVICE_APIS = "/mogoservice/apis";
+
+ /**
+ * 动作指令
+ */
+ @Deprecated
+ public static final String PATH_ACTION_APIS = "/mogoaction/api";
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionListener.java
new file mode 100644
index 0000000000..b5ab2b2e49
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionListener.java
@@ -0,0 +1,17 @@
+package com.mogo.service.module;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-12
+ *
+ * 翻页回调
+ */
+public interface IMogoActionListener {
+
+ /**
+ * 执行动作
+ *
+ * @param action
+ */
+ void onActionDone( MogoAction action );
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java
new file mode 100644
index 0000000000..efb6a8a9a8
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java
@@ -0,0 +1,36 @@
+package com.mogo.service.module;
+
+import com.alibaba.android.arouter.facade.template.IProvider;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-12
+ *
+ * 基础动作指令控制
+ */
+public interface IMogoActionManager extends IProvider {
+
+ /**
+ * 注册动作监听回调
+ *
+ * @param biz 具体业务
+ * @param listener 回调
+ */
+ void registerActionListener( String biz, IMogoActionListener listener );
+
+ /**
+ * 取消动作翻页回调
+ *
+ * @param biz 具体业务
+ * @param listener 回调
+ */
+ void unregisterActionListener( String biz, IMogoActionListener listener );
+
+ /**
+ * 回调
+ *
+ * @param biz 业务
+ * @param action 动作
+ */
+ void invoke( String biz, MogoAction action );
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/MogoAction.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/MogoAction.java
new file mode 100644
index 0000000000..07be8cb12d
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/MogoAction.java
@@ -0,0 +1,20 @@
+package com.mogo.service.module;
+
+/**
+ * @author congtaowang
+ * @since 2020-03-12
+ *
+ * 描述
+ */
+public enum MogoAction {
+
+ /**
+ * 上一个
+ */
+ Prev,
+
+ /**
+ * 下一个
+ */
+ Next
+}
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 78df9b1960..966d3d9fb6 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
@@ -21,6 +21,7 @@ import com.mogo.service.impl.intent.IntentManager;
import com.mogo.service.impl.singleton.SingletonsHolder;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.map.IMogoMapService;
+import com.mogo.service.module.IMogoActionManager;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.module.IMogoSettingManager;
@@ -129,6 +130,11 @@ public class MogoServiceApis implements IMogoServiceApis {
return getApiInstance( IMogoADASController.class, MogoServicePaths.PATH_ADAS_CONTROLLER );
}
+ @Override
+ public IMogoActionManager getFlipContentManager() {
+ return getApiInstance( IMogoActionManager.class, MogoServicePaths.PATH_ACTION_APIS );
+ }
+
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/intent/IntentManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/intent/IntentManager.java
index 85f48a4937..f3431b6918 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/intent/IntentManager.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/intent/IntentManager.java
@@ -12,6 +12,7 @@ import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -26,25 +27,6 @@ public class IntentManager implements IMogoIntentManager {
private static volatile IntentManager sInstance;
- public static final int MSG_COMMAND_RECEIVED = 2000;
-
-
- private Handler mHandler = new Handler( Looper.getMainLooper() ) {
- @Override
- public void handleMessage( @NonNull Message msg ) {
- super.handleMessage( msg );
- if ( msg.what == MSG_COMMAND_RECEIVED ) {
- MsgObject object = ( ( MsgObject ) msg.obj );
- List< IMogoIntentListener > listeners = mListeners.get( object.getCommand() );
- if ( listeners != null && !listeners.isEmpty() ) {
- for ( IMogoIntentListener listener : listeners ) {
- listener.onIntentReceived( object.getCommand(), object.getIntent() );
- }
- }
- }
- }
- };
-
private IntentManager() {
}
@@ -63,7 +45,6 @@ public class IntentManager implements IMogoIntentManager {
sInstance = null;
}
-
private Map< String, List< IMogoIntentListener > > mListeners = new ConcurrentHashMap<>();
@Override
@@ -91,9 +72,15 @@ public class IntentManager implements IMogoIntentManager {
@Override
public void invoke( String command, Intent intent ) {
- Message msg = Message.obtain();
- msg.what = MSG_COMMAND_RECEIVED;
- msg.obj = new MsgObject( command, intent );
- mHandler.sendMessage( msg );
+ List< IMogoIntentListener > listeners = mListeners.get( command );
+ if ( listeners != null && !listeners.isEmpty() ) {
+ Iterator< IMogoIntentListener > iterator = listeners.iterator();
+ while ( iterator.hasNext() ) {
+ IMogoIntentListener listener = iterator.next();
+ if ( listener != null ) {
+ listener.onIntentReceived( command, intent );
+ }
+ }
+ }
}
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MsgObject.java b/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MsgObject.java
deleted file mode 100644
index e6e286e97c..0000000000
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MsgObject.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.mogo.service.impl.intent;
-
-import android.content.Intent;
-
-/**
- * @author congtaowang
- * @since 2020-01-13
- *
- * 描述
- */
-public class MsgObject {
-
- private final String mCommand;
- private final Intent mIntent;
-
- public MsgObject( String command, Intent intent ) {
- this.mCommand = command;
- this.mIntent = intent;
- }
-
- public String getCommand() {
- return mCommand;
- }
-
- public Intent getIntent() {
- return mIntent;
- }
-}