T findViewById(int id) {
if (mRootView == null) {
- mRootView = getView().findViewById(id);
+ mRootView = getView();
}
if (mRootView != null) {
return (T) mRootView.findViewById(id);
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
index 5d9217849e..ab0aa03504 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
@@ -1,6 +1,7 @@
package com.mogo.commons.network;
import com.mogo.commons.data.BaseData;
+import com.mogo.commons.storage.SpStorage;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.Util;
diff --git a/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml b/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml
index 58389abf7c..b43a13e664 100644
--- a/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml
+++ b/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml
@@ -2,7 +2,7 @@
+ android:angle="180"
+ android:endColor="#FF3F4057"
+ android:startColor="#FF5E6079" />
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml
index 0b01115f63..cbf0032516 100644
--- a/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml
+++ b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml
@@ -1,27 +1,28 @@
-
+ android:paddingTop="@dimen/module_commons_toast_marginTop"
+ android:paddingBottom="@dimen/module_commons_toast_marginBottom"
+ android:paddingLeft="@dimen/module_commons_toast_marginLeft"
+ android:paddingRight="@dimen/module_commons_toast_marginRight">
-
\ No newline at end of file
+ tools:text="测试测试测试" />
+
+
+
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast_with_left_drawable.xml b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast_with_left_drawable.xml
new file mode 100644
index 0000000000..0f1ee821d3
--- /dev/null
+++ b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast_with_left_drawable.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml b/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml
index c1558d9ba0..ddb78a45af 100644
--- a/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml
+++ b/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml
@@ -1,13 +1,18 @@
- 50px
- 50px
+ 63px
+ 30px
+ 63px
32px
32px
+ 19px
+ 19px
40px
698px
900px
130px
+ 94px
+ 21px
diff --git a/foudations/mogo-commons/src/main/res/values/colors.xml b/foudations/mogo-commons/src/main/res/values/colors.xml
index a6b3daec93..7f7661f567 100644
--- a/foudations/mogo-commons/src/main/res/values/colors.xml
+++ b/foudations/mogo-commons/src/main/res/values/colors.xml
@@ -1,2 +1,4 @@
-
\ No newline at end of file
+
+ #fff
+
\ No newline at end of file
diff --git a/foudations/mogo-commons/src/main/res/values/dimens.xml b/foudations/mogo-commons/src/main/res/values/dimens.xml
index 54534fb37b..4056fd470a 100644
--- a/foudations/mogo-commons/src/main/res/values/dimens.xml
+++ b/foudations/mogo-commons/src/main/res/values/dimens.xml
@@ -1,11 +1,16 @@
- 30px
- 30px
+ 33px
+ 17px
+ 33px
16px
16px
+ 10px
+ 10px
22px
371px
500px
72px
+ 50px
+ 10px
\ No newline at end of file
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipDrawable.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipDrawable.java
new file mode 100644
index 0000000000..9be08550d2
--- /dev/null
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipDrawable.java
@@ -0,0 +1,77 @@
+package com.mogo.utils;
+
+import android.graphics.drawable.Drawable;
+
+/**
+ * TipToast弹出框的图片资源封装类
+ * 当前只支持添加一张图片,可添加到文字的 左{@link #TIP_DRAWABLE_GRAVITY_LEFT}, 上{@link #TIP_DRAWABLE_GRAVITY_TOP}, 右{@link #TIP_DRAWABLE_GRAVITY_RIGHT}, 下{@link #TIP_DRAWABLE_GRAVITY_BOTTOM}
+ *
+ * 当前仅支持添加左侧图片,所以{@link #gravity} 这个参数形同虚设
+ *
+ * @author tongchenfei
+ */
+public class TipDrawable {
+ public static final int TIP_DRAWABLE_GRAVITY_LEFT = 1;
+ public static final int TIP_DRAWABLE_GRAVITY_TOP = 2;
+ public static final int TIP_DRAWABLE_GRAVITY_RIGHT = 3;
+ public static final int TIP_DRAWABLE_GRAVITY_BOTTOM = 4;
+ private Drawable drawable;
+ private int gravity;
+ private int width;
+ private int height;
+
+ /**
+ * 默认图片居左,宽高使用{@link Drawable#getIntrinsicWidth()}和{@link Drawable#getIntrinsicHeight()}
+ * @param drawable 要展示的图片
+ */
+ public TipDrawable(Drawable drawable) {
+ this(drawable, TIP_DRAWABLE_GRAVITY_LEFT,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
+ }
+
+ /**
+ * 默认图片居左
+ * @param drawable 要展示的图片
+ * @param width 要展示的图片宽度
+ * @param height 要展示的图片高度
+ */
+ public TipDrawable(Drawable drawable, int width, int height) {
+ this(drawable, TIP_DRAWABLE_GRAVITY_LEFT,width,height);
+ }
+
+ /**
+ * 默认宽高使用{@link Drawable#getIntrinsicWidth()}和{@link Drawable#getIntrinsicHeight()}
+ * @param drawable 要展示的图片
+ * @param gravity 左{@link #TIP_DRAWABLE_GRAVITY_LEFT}, 上{@link #TIP_DRAWABLE_GRAVITY_TOP}, 右{@link #TIP_DRAWABLE_GRAVITY_RIGHT}, 下{@link #TIP_DRAWABLE_GRAVITY_BOTTOM}
+ */
+ public TipDrawable(Drawable drawable, int gravity) {
+ this(drawable, gravity,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
+ }
+
+ /**
+ * 可自定义展示位置
+ * @param drawable 要展示的图片
+ * @param gravity 左{@link #TIP_DRAWABLE_GRAVITY_LEFT}, 上{@link #TIP_DRAWABLE_GRAVITY_TOP}, 右{@link #TIP_DRAWABLE_GRAVITY_RIGHT}, 下{@link #TIP_DRAWABLE_GRAVITY_BOTTOM}
+ */
+ public TipDrawable(Drawable drawable, int gravity, int width, int height) {
+ this.drawable = drawable;
+ this.gravity = gravity;
+ this.width = width;
+ this.height = height;
+ }
+
+ public Drawable getDrawable() {
+ return drawable;
+ }
+
+ public int getGravity() {
+ return gravity;
+ }
+
+ public int getWidth() {
+ return width;
+ }
+
+ public int getHeight() {
+ return height;
+ }
+}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java
index ec457c6b04..446762315f 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java
@@ -4,6 +4,10 @@ package com.mogo.utils;
* 2016/1/1 by congtaowang
*
* @Version 1.0
+ *
+ * 增加了图片支持
+ *
+ * @Version 1.1
*/
import android.content.Context;
@@ -45,17 +49,17 @@ public final class TipToast {
sGenerator = null;
}
- private static void tip( final String message, int duration ) {
+ private static void tip( final String message, int duration ,TipDrawable tipDrawable) {
if ( !checkParams() ) {
return;
}
if ( TextUtils.isEmpty( message ) ) {
return;
}
- new ToastThread( new StringToastRunnable( sContext, message, duration ) ).start();
+ new ToastThread(new StringToastRunnable(sContext, message, duration, tipDrawable)).start();
}
- private static void tip( final int msgId, int duration ) {
+ private static void tip( final int msgId, int duration,TipDrawable tipDrawable ) {
if ( !checkParams() ) {
return;
}
@@ -66,7 +70,7 @@ public final class TipToast {
} catch ( Exception e ) {
return;
}
- tip( ResourcesHelper.getString( sContext, msgId ), duration );
+ tip( ResourcesHelper.getString( sContext, msgId ), duration ,tipDrawable);
}
private static boolean checkParams() {
@@ -82,27 +86,53 @@ public final class TipToast {
}
public static void tip( final String message ) {
- tip( message, Toast.LENGTH_SHORT );
+ tip( message, Toast.LENGTH_SHORT,null );
}
public static void tip( final int msgId ) {
- tip( msgId, Toast.LENGTH_SHORT );
+ tip( msgId, Toast.LENGTH_SHORT ,null);
}
public static void longTip( String message ) {
- tip( message, Toast.LENGTH_LONG );
+ tip( message, Toast.LENGTH_LONG ,null);
}
public static void longTip( int msgId ) {
- tip( msgId, Toast.LENGTH_LONG );
+ tip( msgId, Toast.LENGTH_LONG ,null);
}
public static void shortTip( String message ) {
- tip( message, Toast.LENGTH_SHORT );
+ tip( message, Toast.LENGTH_SHORT ,null);
}
public static void shortTip( int msgId ) {
- tip( msgId, Toast.LENGTH_SHORT );
+ tip( msgId, Toast.LENGTH_SHORT ,null);
+ }
+
+ // -===带图片的方法===-
+
+ public static void tip( final String message,TipDrawable tipDrawable ) {
+ tip( message, Toast.LENGTH_SHORT,tipDrawable );
+ }
+
+ public static void tip( final int msgId,TipDrawable tipDrawable ) {
+ tip( msgId, Toast.LENGTH_SHORT ,tipDrawable);
+ }
+
+ public static void longTip( String message,TipDrawable tipDrawable ) {
+ tip( message, Toast.LENGTH_LONG ,tipDrawable);
+ }
+
+ public static void longTip( int msgId ,TipDrawable tipDrawable) {
+ tip( msgId, Toast.LENGTH_LONG ,tipDrawable);
+ }
+
+ public static void shortTip( String message,TipDrawable tipDrawable ) {
+ tip( message, Toast.LENGTH_SHORT ,tipDrawable);
+ }
+
+ public static void shortTip( int msgId,TipDrawable tipDrawable ) {
+ tip( msgId, Toast.LENGTH_SHORT ,tipDrawable);
}
static class ToastThread extends Thread {
@@ -117,11 +147,13 @@ public final class TipToast {
Context context;
String msg;
int duration;
+ TipDrawable tipDrawable;
- public StringToastRunnable( Context context, String msg, int duration ) {
+ public StringToastRunnable( Context context, String msg, int duration,TipDrawable tipDrawable ) {
this.context = context;
this.msg = msg;
this.duration = duration;
+ this.tipDrawable = tipDrawable;
}
@Override
@@ -131,44 +163,40 @@ public final class TipToast {
return;
}
- sHandler.post( new Runnable() {
+ sHandler.post(() -> {
+ synchronized ( sSyncObject ) {
- @Override
- public void run() {
- synchronized ( sSyncObject ) {
+ if ( context == null ) {
+ return;
+ }
- if ( context == null ) {
- return;
- }
+ if ( sToast != null ) {
+ sToast.cancel();
+ }
- if ( sToast != null ) {
- sToast.cancel();
- }
-
- if ( sGenerator == null ) {
- sToast = Toast.makeText( context, msg, duration );
+ if ( sGenerator == null ) {
+ sToast = Toast.makeText( context, msg, duration );
+ } else {
+ sToast = new Toast( context );
+ final View view = sGenerator.make( context, msg, tipDrawable );
+ if ( view != null ) {
+ sToast.setView( view );
+ sToast.setGravity( sGenerator.gravity(), sGenerator.xOffset(), sGenerator.yOffset() );
+ sToast.setDuration( duration );
} else {
- sToast = new Toast( context );
- final View view = sGenerator.make( context, msg );
- if ( view != null ) {
- sToast.setView( view );
- sToast.setGravity( sGenerator.gravity(), sGenerator.xOffset(), sGenerator.yOffset() );
- sToast.setDuration( duration );
- } else {
- sToast = Toast.makeText( context, msg, duration );
- }
- }
- if ( sToast != null ) {
- sToast.show();
+ sToast = Toast.makeText( context, msg, duration );
}
}
+ if ( sToast != null ) {
+ sToast.show();
+ }
}
- } );
+ });
}
}
public interface ToastViewGenerator {
- View make( Context context, String message );
+ View make( Context context, String message,TipDrawable tipDrawable );
default int gravity() {
return Gravity.CENTER;
@@ -182,5 +210,4 @@ public final class TipToast {
return 0;
}
}
-
}
diff --git a/gradle.properties b/gradle.properties
index b372dbb337..fdbea566a9 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -65,7 +65,7 @@ MOGO_BASE_SERVICES_SDK_VERSION = 1.2.1.22
# 探路
MOGO_MODULE_TANLU_VERSION=1.3.1.24
# 车聊聊
-CARCHATTING_VERSION=1.5.1
+CARCHATTING_VERSION=1.5.3
# 车聊聊接口
CARCHATTINGPROVIDER_VERSION=1.3.4
# 视频引导
@@ -100,12 +100,20 @@ MOGO_MODULE_OBU_VERSION = 1.2.1.10-SNAPSHOT
# 闪屏页
MOGO_MODULE_SPLASH_VERSION = 1.0.0-SNAPSHOT
MOGO_MODULE_SPLASH_NOOP_VERSION = 1.0.0-SNAPSHOT
+MOGO_SKIN_SUPPORT_VERSION=1.0.0
+MOGO_SKIN_LIGHT_VERSION=1.0.0
+MOGO_SKIN_SUPPORT_IMPL_VERSION=1.0.0
+MOGO_SKIN_SUPPORT_NOOP_VERSION=1.0.0
# loglib
LOGLIB_VERSION = 1.0.4
# monitor
MOGO_MODULE_MONITOR_VERSION = 1.0.0-SNAPSHOT
+CRASHREPORT_VERSION = 1.0.0
+CRASHREPORT_BUGLY_VERSION = 1.0.0
+CRASHREPORT_NOOP_VERSION = 1.0.0
+
## 产品库必备配置,产品库自动对versionCode和versionName版本进行升级
applicationId=com.mogo.launcer
applicationName=IntelligentPilot
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java
index a318034ac3..1ae99ff4d1 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapBaseMapView.java
@@ -2,10 +2,10 @@ package com.mogo.map.impl.amap;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.ViewGroup;
import androidx.annotation.Nullable;
-import com.amap.api.navi.AMapNaviView;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoBaseMapView;
@@ -17,6 +17,8 @@ import com.mogo.map.MogoBaseMapView;
*/
public class AMapBaseMapView extends MogoBaseMapView {
+ private static final String TAG = "AMapBaseMapView";
+
public AMapBaseMapView( Context context ) {
super( context );
}
@@ -31,6 +33,11 @@ public class AMapBaseMapView extends MogoBaseMapView {
@Override
protected IMogoMapView createMapView( Context context ) {
- return new AMapNaviViewWrapper( new AMapNaviView( context ) );
+ IMogoMapView mapView = AMapViewHandler.getMapView();
+ if ( mapView.getMapView().getParent() != null ) {
+ ViewGroup group = ( ViewGroup ) mapView.getMapView().getParent();
+ group.removeView( mapView.getMapView() );
+ }
+ return AMapViewHandler.getMapView();
}
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
index a0cd07579b..24f557de14 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
@@ -93,7 +93,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public AMapNaviViewWrapper( AMapNaviView mapView ) {
this.mMapView = mapView;
- this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView, this );
+ this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView.getContext(), this );
try {
new BnHooker( mMapView.getMap(), mapView.getContext() );
} catch ( Exception e ) {
@@ -185,6 +185,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
aMap.setOnCameraChangeListener( this );
aMap.setOnMyLocationChangeListener( this );
}
+ AMapMessageManager.getInstance().clear();
AMapMessageManager.getInstance().registerAMapMessageListener( this );
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewHandler.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewHandler.java
new file mode 100644
index 0000000000..1eaa3557a3
--- /dev/null
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewHandler.java
@@ -0,0 +1,36 @@
+package com.mogo.map.impl.amap;
+
+import android.content.Context;
+
+import com.amap.api.maps.MapView;
+import com.amap.api.navi.AMapNaviView;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.map.IMogoMapView;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/10
+ *
+ * 描述
+ */
+class AMapViewHandler {
+
+ private static IMogoMapView sMapView;
+
+ public static void createMapView( Context context ) {
+ if ( DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) {
+ sMapView = new AMapViewWrapper( new MapView( context ) );
+ } else {
+ sMapView = new AMapNaviViewWrapper( new AMapNaviView( context ) );
+ }
+ }
+
+ public static IMogoMapView getMapView() {
+ return sMapView;
+ }
+
+ public static void destroy() {
+ sMapView = null;
+ }
+}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java
new file mode 100644
index 0000000000..7b6e72ea7a
--- /dev/null
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java
@@ -0,0 +1,821 @@
+package com.mogo.map.impl.amap;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.os.Trace;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.Interpolator;
+
+import com.amap.api.maps.AMap;
+import com.amap.api.maps.AMapUtils;
+import com.amap.api.maps.CameraUpdateFactory;
+import com.amap.api.maps.MapView;
+import com.amap.api.maps.TextureMapView;
+import com.amap.api.maps.model.BitmapDescriptorFactory;
+import com.amap.api.maps.model.CameraPosition;
+import com.amap.api.maps.model.CameraPositionCreator;
+import com.amap.api.maps.model.LatLng;
+import com.amap.api.maps.model.LatLngBounds;
+import com.amap.api.maps.model.Marker;
+import com.amap.api.maps.model.MyLocationStyle;
+import com.amap.api.maps.model.Poi;
+import com.amap.api.maps.model.Polyline;
+import com.amap.api.maps.model.animation.Animation;
+import com.amap.api.maps.model.animation.TranslateAnimation;
+import com.amap.api.navi.model.NaviInfo;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.map.IMogoMap;
+import com.mogo.map.IMogoMapView;
+import com.mogo.map.MogoLatLng;
+import com.mogo.map.impl.amap.hook.BnHooker;
+import com.mogo.map.impl.amap.marker.AMapMarkerWrapper;
+import com.mogo.map.impl.amap.message.AMapMessageListener;
+import com.mogo.map.impl.amap.message.AMapMessageManager;
+import com.mogo.map.impl.amap.navi.NaviClient;
+import com.mogo.map.impl.amap.utils.MogoMapUtils;
+import com.mogo.map.impl.amap.utils.ObjectUtils;
+import com.mogo.map.listener.MogoMapListenerHandler;
+import com.mogo.map.marker.IMogoMarker;
+import com.mogo.map.uicontroller.CarCursorOption;
+import com.mogo.map.uicontroller.EnumMapUI;
+import com.mogo.map.uicontroller.IMogoMapUIController;
+import com.mogo.map.uicontroller.MapCameraPosition;
+import com.mogo.map.uicontroller.MapControlResult;
+import com.mogo.utils.WindowUtils;
+import com.mogo.utils.logger.Logger;
+
+import java.util.List;
+
+/**
+ * @author congtaowang
+ * @since 2019-12-18
+ *
+ * 代理高德导航地图
+ */
+public class AMapViewWrapper implements IMogoMapView,
+ IMogoMapUIController,
+ AMap.OnMarkerClickListener,
+ AMap.OnMapLoadedListener,
+ AMap.OnMapTouchListener,
+ AMap.OnPOIClickListener,
+ AMap.OnMapClickListener,
+ AMap.OnPolylineClickListener,
+ AMapMessageListener,
+ AMap.OnCameraChangeListener,
+ AMap.OnMyLocationChangeListener {
+
+ private static final String TAG = "AMapViewWrapper";
+
+ private final MapView mMapView;
+ private IMogoMap mIMap;
+
+ private AMapMarkerClickHandler mMarkerClickHandler;
+ private EnumMapUI mCurrentUIMode;
+
+ private boolean mIsCarLocked = false;
+
+ private float mDefaultZoomLevel = 16.0f;
+ private final CarCursorOption DEFAULT_OPTION = new CarCursorOption.Builder()
+ .carCursorRes( R.drawable.map_api_ic_current_location2 )
+ .naviCursorRes( R.drawable.ic_amap_navi_cursor )
+ .build();
+ private CarCursorOption mCarCursorOption = DEFAULT_OPTION;
+
+ public AMapViewWrapper( MapView mapView ) {
+ this.mMapView = mapView;
+ this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView.getContext(), this );
+ try {
+ new BnHooker( mMapView.getMap(), mapView.getContext() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ private void initMapView() {
+ if ( mMapView == null ) {
+ return;
+ }
+// AMapNaviViewOptions options = mMapView.getViewOptions();
+// if ( options != null ) {
+// // 设置是否开启自动黑夜模式切换,默认为false,不自动切换
+// options.setAutoNaviViewNightMode( false );
+// // 设置6秒后是否自动锁车
+// options.setAutoLockCar( false );
+// // 设置路线上的摄像头气泡是否显示
+// options.setCameraBubbleShow( true );
+// // 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。
+// // options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
+// // 设置自车的图片对象
+// options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), DEFAULT_OPTION.getNaviCursorRes() ) );
+// // 设置指南针图标否在导航界面显示,默认显示。true,显示;false,隐藏。
+// options.setCompassEnabled( false );
+// // 黑夜模式
+// options.setNaviNight( true );
+// //设置路况光柱条是否显示(只适用于驾车导航,需要联网)。
+// options.setTrafficBarEnabled( false );
+// // 设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。
+// options.setTrafficLayerEnabled( false );
+// // 设置导航界面是否显示路线全览按钮。
+// options.setRouteListButtonShow( false );
+// // 设置屏幕是否常亮,默认开启
+// options.setScreenAlwaysBright( false );
+// // 设置交通播报是否打开(只适用于驾车导航,需要联网)。
+// options.setTrafficInfoUpdateEnabled( true );
+// // 设置摄像头播报是否打开(只适用于驾车导航)。
+// options.setCameraInfoUpdateEnabled( true );
+// // 设置菜单按钮是否在导航界面显示。
+// options.setSettingMenuEnabled( false );
+// // 设置是否绘制显示交通路况的线路(彩虹线),拥堵-红色,畅通-绿色,缓慢-黄色,未知-蓝色。默认不绘制彩虹线。
+// options.setTrafficLine( true );
+// // 设置是否绘制牵引线(当前位置到目的地的指引线)。默认不绘制牵引线。
+// options.setLeaderLineEnabled( -1 );
+// // 设置导航界面UI是否显示。
+// options.setLayoutVisible( false );
+// // 设置是否自动画路
+// options.setAutoDrawRoute( false );
+// // 设置是否显示路口放大图(实景图)
+// options.setRealCrossDisplayShow( false );
+// // 设置是否显示路口放大图(路口模型图)
+// options.setModeCrossDisplayShow( false );
+// // 设置是否显示道路信息view
+// options.setLaneInfoShow( false );
+// // 设置是否自动改变缩放等级
+// options.setAutoChangeZoom( false );
+// // 设置是否自动全览模式,即在算路成功后自动进入全览模式
+// options.setAutoDisplayOverview( false );
+// // 设置路线转向箭头隐藏和显示
+// options.setNaviArrowVisible( false );
+// // 通过路线是否自动置灰,仅支持驾车导航
+// options.setAfterRouteAutoGray( true );
+// options.setZoom( ( ( int ) mDefaultZoomLevel ) );
+// options.setPointToCenter( 0.7D, 0.5D );
+// // 2D模式
+// options.setTilt( 0 );
+// mMapView.setViewOptions( options );
+// }
+// mMapView.setRouteOverlayVisible( false );
+// mMapView.setCarOverlayVisible( false );
+ changeMapMode( EnumMapUI.CarUp_2D );
+ setTrafficEnabled( true );
+ mMapView.getMap().moveCamera( CameraUpdateFactory.zoomTo( mDefaultZoomLevel ) );
+ }
+
+ private void initListeners() {
+
+ mMarkerClickHandler = new AMapMarkerClickHandler();
+ final AMap aMap = mMapView.getMap();
+ if ( aMap != null ) {
+ aMap.setOnMarkerClickListener( this );
+ aMap.setOnMapLoadedListener( this );
+ aMap.setOnMapTouchListener( this );
+ aMap.setOnPolylineClickListener( this );
+ aMap.setOnCameraChangeListener( this );
+ aMap.setOnPOIClickListener( this );
+ aMap.setOnMapClickListener( this );
+ aMap.setOnCameraChangeListener( this );
+ aMap.setOnMyLocationChangeListener( this );
+ }
+ AMapMessageManager.getInstance().clear();
+ AMapMessageManager.getInstance().registerAMapMessageListener( this );
+ }
+
+ private Context getContext() {
+ return mMapView.getContext();
+ }
+
+ @Override
+ public View getMapView() {
+ return mMapView;
+ }
+
+ @Override
+ public IMogoMap getMap() {
+ return mIMap;
+ }
+
+ @Override
+ public void onCreate( Bundle bundle ) {
+ if ( mMapView != null ) {
+ mMapView.onCreate( bundle );
+ Logger.d( TAG, "map onCreate" );
+ initMapView();
+ initListeners();
+ initMyLocation();
+ }
+ }
+
+ @Override
+ public void onResume() {
+ if ( mMapView != null ) {
+ mMapView.onResume();
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ Logger.d( TAG, "map onResume" );
+ }
+ }
+
+ @Override
+ public void onPause() {
+ if ( mMapView != null ) {
+ mMapView.onPause();
+ Logger.d( TAG, "map onPause" );
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ if ( mMapView != null ) {
+ mMapView.onDestroy();
+ Logger.d( TAG, "map onDestroy" );
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState( Bundle outState ) {
+ if ( mMapView != null ) {
+ mMapView.onSaveInstanceState( outState );
+ Logger.d( TAG, "map onSaveInstanceState" );
+ }
+ }
+
+ @Override
+ public void onLowMemory() {
+ if ( mMapView != null ) {
+ mMapView.onLowMemory();
+ }
+ Logger.d( TAG, "map onLowMemory" );
+ }
+
+ /**
+ * 地图marker点击
+ */
+ @Override
+ public boolean onMarkerClick( Marker marker ) {
+ return mMarkerClickHandler.handleMarkerClicked( marker );
+ }
+
+ /**
+ * 地图加载完毕
+ */
+ @Override
+ public void onMapLoaded() {
+ MogoMapListenerHandler.getInstance().onMapLoaded();
+ }
+
+ /**
+ * 地图点击回调
+ */
+ @Override
+ public void onTouch( MotionEvent motionEvent ) {
+ MogoMapListenerHandler.getInstance().onTouch( motionEvent );
+ if ( mIsCarLocked ) {
+ loseLockMode();
+ }
+ }
+
+ /**
+ * POI 点击
+ */
+ @Override
+ public void onPOIClick( Poi poi ) {
+ if ( InterceptorHandler.getInstance().ignorePoiClicked( getContext() ) ) {
+ return;
+ }
+ MogoMapListenerHandler.getInstance().onPOIClick( ObjectUtils.fromAMap( poi ) );
+ }
+
+ @Override
+ public void onMapClick( LatLng latLng ) {
+ if ( InterceptorHandler.getInstance().ignoreMapClicked( getContext() ) ) {
+ return;
+ }
+ MogoMapListenerHandler.getInstance().onMapClick( ObjectUtils.fromAMap( latLng ) );
+ }
+
+ @Override
+ public void onPolylineClick( Polyline polyline ) {
+ if ( !NaviClient.getInstance( getContext() ).isNaviing() ) {
+ NaviClient.getInstance( getContext() ).handleClickedPolyline( polyline );
+ }
+ }
+
+ @Override
+ public void setTrafficEnabled( boolean visible ) {
+ if ( checkMapView() ) {
+ mMapView.getMap().setTrafficEnabled( true );
+ }
+ }
+
+ @Override
+ public MapControlResult changeZoom( boolean zoom ) {
+ if ( checkMapView() ) {
+ mDefaultZoomLevel = ( int ) ( getMap().getZoomLevel() + 0.5f );
+
+ if ( zoom ) {
+ if ( mDefaultZoomLevel >= 20 ) {
+ return MapControlResult.TARGET;
+ }
+ } else {
+ if ( mDefaultZoomLevel <= 3 ) {
+ return MapControlResult.TARGET;
+ }
+ }
+
+ if ( zoom ) {
+ mDefaultZoomLevel += 2f;
+ if ( mDefaultZoomLevel > 20 ) {
+ mDefaultZoomLevel = 20;
+ }
+ } else {
+ mDefaultZoomLevel -= 2f;
+ if ( mDefaultZoomLevel < 1 ) {
+ mDefaultZoomLevel = 1;
+ }
+ }
+ changeZoom( ( int ) mDefaultZoomLevel );
+ }
+ return MapControlResult.SUCCESS;
+ }
+
+ @Override
+ public MapControlResult changeZoom( float zoom ) {
+ Logger.d( TAG, "changeZoom %s", zoom );
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ getMap().changeZoom( zoom );
+ return MapControlResult.SUCCESS;
+ }
+
+ @Override
+ public void changeMapMode( EnumMapUI ui ) {
+ if ( ui == null ) {
+ return;
+ }
+ if ( checkMapView() ) {
+ switch ( ui ) {
+
+ case CarUp_3D:
+ mMapView.getMap().moveCamera( CameraUpdateFactory.changeTilt( 60 ) );
+ break;
+ case NorthUP_2D:
+ mMapView.getMap().moveCamera( CameraUpdateFactory.changeTilt( 0 ) );
+ break;
+ case CarUp_2D:
+ mMapView.getMap().moveCamera( CameraUpdateFactory.changeTilt( 0 ) );
+ break;
+ case Type_Light:
+ mMapView.getMap().setMapType( AMap.MAP_TYPE_NORMAL );
+ break;
+ case Type_Night:
+ mMapView.getMap().setMapType( AMap.MAP_TYPE_NIGHT );
+ break;
+ case Type_AUTO_LIGHT_Night:
+ break;
+ }
+ }
+ }
+
+ private boolean checkMapView() {
+ if ( mMapView == null || mMapView.getMap() == null ) {
+ Logger.e( TAG, "高德mapView实例为空,请检查" );
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void moveToCenter( MogoLatLng latLng, boolean animate ) {
+ Logger.d( TAG, "move to center %s", latLng );
+ if ( latLng == null || latLng.lat == 0.0d || latLng.lng == 0.0d ) {
+ Logger.e( TAG, "latlng = null or is illegal" );
+ return;
+ }
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ loseLockMode();
+ if ( animate ) {
+ mMapView.getMap().animateCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) );
+ } else {
+ mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) );
+ }
+ }
+
+ @Override
+ public void showMyLocation( boolean visible ) {
+ Logger.d( TAG, "showMyLocation1 %s", visible );
+ if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
+ return;
+ }
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ if ( checkMapView() ) {
+ MyLocationStyle style = getMyLocationStyle();
+ if ( style == null ) {
+ style = new MyLocationStyle();
+ }
+ style.showMyLocation( visible );
+ if ( visible ) {
+ // 强制刷新一遍车标
+ style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) );
+ }
+ mMapView.getMap().setMyLocationStyle( style );
+ }
+ }
+
+ @Override
+ public void showMyLocation( View view ) {
+ if ( NaviClient.getInstance( getContext() ).isNaviing() ) {
+ return;
+ }
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ if ( checkMapView() ) {
+ MyLocationStyle style = getMyLocationStyle();
+ if ( style == null ) {
+ style = new MyLocationStyle();
+ }
+ style.showMyLocation( true );
+ style.myLocationIcon( BitmapDescriptorFactory.fromView( view ) );
+ mMapView.getMap().setMyLocationStyle( style );
+ }
+ }
+
+ public void initMyLocation() {
+ if ( checkMapView() ) {
+ mMapView.getMap().setMyLocationEnabled( true );
+ MyLocationStyle style = getMyLocationStyle();
+ style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER );
+ style.interval( 1000 );
+ style.anchor( 0.5F, 0.5F );
+ style.strokeColor( Color.TRANSPARENT );
+ style.strokeWidth( 0 );
+ style.radiusFillColor( Color.TRANSPARENT );
+ mMapView.getMap().setMyLocationStyle( style );
+ }
+ }
+
+ private MyLocationStyle getMyLocationStyle() {
+ try {
+ return mMapView.getMap().getMyLocationStyle();
+ } catch ( Exception e ) {
+ return new MyLocationStyle();
+ }
+ }
+
+ @Override
+ public void recoverLockMode() {
+ if ( checkMapView() ) {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ Logger.d( TAG, "锁车" );
+ Location target = NaviClient.getInstance( getContext() ).getCarLocation2();
+ if ( target != null ) {
+ mMapView.getMap().animateCamera( CameraUpdateFactory.newCameraPosition(
+ new CameraPosition( new LatLng( target.getLatitude(), target.getLongitude() ),
+ mDefaultZoomLevel,
+ 0,
+ 0
+ )
+ ), new AMap.CancelableCallback() {
+ @Override
+ public void onFinish() {
+ changeMyLocationStyle();
+ }
+
+ @Override
+ public void onCancel() {
+ changeMyLocationStyle();
+ }
+ } );
+ } else {
+ changeMyLocationStyle();
+ }
+ mIsCarLocked = true;
+ }
+ }
+
+ private void changeMyLocationStyle() {
+ MyLocationStyle style = getMyLocationStyle();
+ if ( style == null ) {
+ style = new MyLocationStyle();
+ }
+ style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW );
+ mMapView.getMap().setMyLocationStyle( style );
+ }
+
+ @Override
+ public void loseLockMode() {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ Logger.d( TAG, "解锁锁车" );
+ MyLocationStyle style = getMyLocationStyle();
+ style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER );
+ mMapView.getMap().setMyLocationStyle( style );
+ mIsCarLocked = false;
+ }
+
+ /**
+ * 模拟点击事件,达到锁车->普通事件
+ */
+ private void mockTouchEvent() {
+ long downTime = SystemClock.uptimeMillis();
+ long eventTime = downTime + 1;
+ int metaState = 0;
+ MotionEvent motionEvent = MotionEvent.obtain( downTime, eventTime, MotionEvent.ACTION_DOWN, 0, 0, metaState );
+ mMapView.dispatchTouchEvent( motionEvent );
+ MotionEvent upEvent = MotionEvent.obtain( downTime + 1, eventTime + 2, MotionEvent.ACTION_UP, 0, 0, metaState );
+ mMapView.dispatchTouchEvent( upEvent );
+ }
+
+ @Override
+ public void setLockZoom( int var1 ) {
+ if ( checkMapView() ) {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ Logger.d( TAG, "Zoom锁定锁车比例尺 %s", var1 );
+ // TODO: 2020/8/27 设置锁车比例尺
+// mMapView.setLockZoom( var1 );
+ }
+ }
+
+ @Override
+ public void displayOverview( Rect bounds ) {
+ if ( checkMapView() ) {
+ if ( NaviClient.getInstance( getContext() ).isNaviing() ) {
+ loseLockMode();
+ NaviClient.getInstance( getContext() ).displayOverview( bounds );
+ }
+ }
+ }
+
+ @Override
+ public float getScalePerPixel() {
+ return getMap().getScalePerPixel();
+ }
+
+ @Override
+ public float getZoomLevel() {
+ return getMap().getZoomLevel();
+ }
+
+ @Override
+ public void onNaviStarted() {
+ if ( checkMapView() ) {
+ showMyLocation( false );
+ }
+ }
+
+ @Override
+ public void onNaviStopped() {
+ if ( checkMapView() ) {
+ showMyLocation( true );
+ NaviClient.getInstance( getContext() ).startAimlessMode();
+ }
+ }
+
+ @Override
+ public void onNaviInfoUpdat( NaviInfo naviInfo ) {
+
+ }
+
+ @Override
+ public void onCalculateSuccess() {
+ loseLockMode();
+ }
+
+ @Override
+ public void onCameraChange( CameraPosition cameraPosition ) {
+ }
+
+ @Override
+ public void onCameraChangeFinish( CameraPosition cameraPosition ) {
+ if ( cameraPosition != null ) {
+ Trace.beginSection( "timer.onCameraChangeFinish" );
+ MogoMapListenerHandler.getInstance().onMapChanged( ObjectUtils.fromAMap( cameraPosition.target ),
+ cameraPosition.zoom,
+ cameraPosition.tilt,
+ cameraPosition.bearing );
+ Trace.endSection();
+ }
+ }
+
+ @Override
+ public MogoLatLng getCameraNorthEastPosition() {
+ try {
+ return ObjectUtils.fromAMap( mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.northeast );
+ } catch ( Exception e ) {
+
+ }
+ return null;
+ }
+
+ @Override
+ public MogoLatLng getCameraSouthWestPosition() {
+ try {
+ return ObjectUtils.fromAMap( mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.southwest );
+ } catch ( Exception e ) {
+
+ }
+ return null;
+ }
+
+ @Override
+ public MogoLatLng getWindowCenterLocation() {
+ try {
+ return ObjectUtils.fromAMap( mMapView.getMap().getCameraPosition().target );
+ } catch ( Exception e ) {
+
+ }
+ return null;
+ }
+
+ @Override
+ public void setPointToCenter( double mapCenterX, double mapCenterY ) {
+ if ( checkMapView() ) {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY );
+ mMapView.getMap().setPointToCenter( ( ( int ) ( mapCenterX * WindowUtils.getScreenWidth( getContext() ) ) ),
+ ( ( int ) ( mapCenterY * WindowUtils.getScreenHeight( getContext() ) ) ) );
+ }
+ }
+
+ @Override
+ public Point getLocationPointInScreen( MogoLatLng latLng ) {
+ if ( checkMapView() ) {
+ try {
+ return mMapView.getMap()
+ .getProjection()
+ .toScreenLocation( ObjectUtils.fromMogo2( latLng ) );
+ } catch ( Exception e ) {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public MogoLatLng getLocationMogoLatLngInScreen( Point point ) {
+ if ( checkMapView() ) {
+ try {
+ return ObjectUtils.fromAMap(
+ mMapView.getMap().getProjection().fromScreenLocation( point ) );
+ } catch ( Exception e ) {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator,
+ long duration ) {
+ if ( marker == null || high <= 0.0f || interpolator == null || duration < 0 ) {
+ return;
+ }
+ try {
+ final LatLng latLng = ObjectUtils.fromMogo2( marker.getPosition() );
+ Point point = mMapView.getMap().getProjection().toScreenLocation( latLng );
+ point.y -= WindowUtils.dip2px( getContext(), high );
+ LatLng target = mMapView.getMap().getProjection().fromScreenLocation( point );
+ //使用TranslateAnimation,填写一个需要移动的目标点
+ Animation animation = new TranslateAnimation( target );
+ animation.setInterpolator( interpolator );
+ //整个移动所需要的时间
+ animation.setDuration( duration );
+ //设置动画
+ if ( marker instanceof AMapMarkerWrapper ) {
+ ( ( AMapMarkerWrapper ) marker ).getMarker().setAnimation( animation );
+ ( ( AMapMarkerWrapper ) marker ).getMarker().startAnimation();
+ }
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+
+ @Override
+ public void setRenderFps( int fps ) {
+ if ( checkMapView() ) {
+ if ( mMapView.getMap() != null ) {
+ mMapView.getMap().setRenderFps( fps );
+ Logger.d( TAG, "设置刷新帧率 fps = %s", fps );
+ }
+ }
+ }
+
+ @Override
+ public void showBounds( String tag, MogoLatLng carPosition, List< MogoLatLng > lonLats, Rect bound, boolean lockCarPosition ) {
+ if ( !checkMapView() ) {
+ return;
+ }
+ try {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds( carPosition, lonLats, lockCarPosition );
+ if ( !lockCarPosition ) {
+ loseLockMode();
+ }
+ mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLngBoundsRect( latLngBounds, bound.left, bound.right, bound.top, bound.bottom ) );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "%s error.", tag );
+ }
+ }
+
+ @Override
+ public void forceRender() {
+ if ( checkMapView() ) {
+ mMapView.getMap().runOnDrawFrame();
+ }
+ }
+
+ @Override
+ public float calculateLineDistance( MogoLatLng p1, MogoLatLng p2 ) throws Exception {
+ if ( p1 == null || p2 == null ) {
+ throw new Exception( "计算距离的点不能为 null" );
+ }
+ return AMapUtils.calculateLineDistance( ObjectUtils.fromMogo2( p1 ), ObjectUtils.fromMogo2( p2 ) );
+ }
+
+ @Override
+ public void onMyLocationChange( Location location ) {
+ NaviClient.getInstance( getContext() ).syncCarLocation( location );
+ }
+
+ @Override
+ public EnumMapUI getCurrentUiMode() {
+ return mCurrentUIMode;
+ }
+
+ @Override
+ public void changeMyLocation( Location location ) {
+ }
+
+ @Override
+ public synchronized boolean isCarLocked() {
+ return mIsCarLocked;
+ }
+
+ @Override
+ public void setCarCursorOption( CarCursorOption option ) {
+ if ( mCarCursorOption != null && mCarCursorOption != DEFAULT_OPTION ) {
+ mCarCursorOption.destroy();
+ }
+ if ( option != null ) {
+ try {
+ mCarCursorOption = option.clone();
+ } catch ( Exception e ) {
+ mCarCursorOption = DEFAULT_OPTION;
+ }
+ } else {
+ mCarCursorOption = DEFAULT_OPTION;
+ }
+ if ( !checkMapView() ) {
+ return;
+ }
+ if ( mMapView.getMap() == null ) {
+ return;
+ }
+ MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
+ if ( mCarCursorOption.getCarCursorBmp() != null && !mCarCursorOption.getCarCursorBmp().isRecycled() ) {
+ style.myLocationIcon( BitmapDescriptorFactory.fromBitmap( mCarCursorOption.getCarCursorBmp() ) );
+ } else {
+ if ( mCarCursorOption.getCarCursorRes() != 0 ) {
+ style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) );
+ } else {
+ style.myLocationIcon( BitmapDescriptorFactory.fromResource( DEFAULT_OPTION.getCarCursorRes() ) );
+ }
+ }
+ mMapView.getMap().setMyLocationStyle( style );
+ }
+
+ @Override
+ public MapCameraPosition getMapCameraPosition() {
+ if ( checkMapView() ) {
+ CameraPosition cameraPosition = mMapView.getMap().getCameraPosition();
+ return ObjectUtils.fromAMap( cameraPosition );
+ }
+ return null;
+ }
+
+ @Override
+ public void changeBearing( float bearing ) {
+ if ( checkMapView() ) {
+ mMapView.getMap().moveCamera( CameraUpdateFactory.changeBearing( bearing ) );
+ }
+ }
+}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
index c796d9134a..2965606844 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
@@ -4,7 +4,6 @@ import android.content.Context;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
-import com.amap.api.maps.LocationSource;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.Polyline;
@@ -14,7 +13,6 @@ import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoUiSettings;
import com.mogo.map.impl.amap.marker.AMapInfoWindowAdapter;
import com.mogo.map.impl.amap.marker.AMapMarkerWrapper;
-import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.impl.amap.overlay.AMapPolylineWrapper;
import com.mogo.map.impl.amap.uicontroller.AMapUIController;
import com.mogo.map.impl.amap.utils.ObjectUtils;
@@ -39,15 +37,15 @@ public class AMapWrapper implements IMogoMap {
private static final String TAG = "AMapWrapper";
private static AMap sAMap;
+ private final Context mContext;
private IMogoMapUIController mUIcontroller;
private AMap mAMap;
- private AMapNaviView mMapView;
private IMogoUiSettings mUiSettings;
- public AMapWrapper( AMap map, AMapNaviView mapView, IMogoMapUIController controller ) {
+ public AMapWrapper( AMap map, Context context, IMogoMapUIController controller ) {
this.mAMap = map;
sAMap = map;
- this.mMapView = mapView;
+ mContext = context;
mUIcontroller = controller;
// 设置实现自定义 info window
mAMap.setInfoWindowAdapter( new AMapInfoWindowAdapter() );
@@ -250,6 +248,6 @@ public class AMapWrapper implements IMogoMap {
}
private Context getContext() {
- return mMapView.getContext();
+ return mContext;
}
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/location/ALocationClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/location/ALocationClient.java
index 89dfeac7f4..daa049b376 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/location/ALocationClient.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/location/ALocationClient.java
@@ -145,7 +145,7 @@ public class ALocationClient implements IMogoLocationClient {
synchronized ( sListeners ) {
Iterator< IMogoLocationListener > listenerIterator = sListeners.iterator();
while ( listenerIterator.hasNext() ) {
- listenerIterator.next().onLocationChanged( mLastLocation.clone() );
+ listenerIterator.next().onLocationChanged( mLastLocation );
}
}
Trace.endSection();
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 8935812bcd..d4f71eb6a0 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
@@ -398,7 +398,7 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
AnimationSet animationSet = new AnimationSet( true );
animationSet.setDuration( duration );
- animationSet.setInterpolator( interpolator);
+ animationSet.setInterpolator( interpolator );
animationSet.setAnimationListener( new Animation.AnimationListener() {
@Override
public void onAnimationStart() {
@@ -510,4 +510,11 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
mMovingPointOverlay.startSmoothMove();
}
+ @Override
+ public boolean isInfoWindowShowing() {
+ if ( mMarker == null ) {
+ return false;
+ }
+ return mMarker.isInfoWindowShown();
+ }
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java
index dc3782aadc..caccdd97b0 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/message/AMapMessageManager.java
@@ -47,6 +47,12 @@ public class AMapMessageManager {
}
}
+ public synchronized void clear(){
+ if ( mListeners != null ) {
+ mListeners.clear();
+ }
+ }
+
public synchronized void unregisterAMapMessageListener( AMapMessageListener listener ) {
mListeners.remove( listener );
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java
index 963a177155..0a85cd595d 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java
@@ -9,6 +9,7 @@ import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.NaviType;
+import com.amap.api.navi.model.AMapNaviPath;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
@@ -30,6 +31,7 @@ import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
/**
* @author congtaowang
@@ -48,10 +50,9 @@ public class NaviClient implements IMogoNavi {
private final Context mContext;
private AMapNavi mAMapNavi;
- private final NaviListenerAdapter mAMapNaviListener;
+ private NaviListenerAdapter mAMapNaviListener;
-
- private final AimlessModeListenerAdapter mAimlessModeListener;
+ private AimlessModeListenerAdapter mAimlessModeListener;
/**
* 导航策略配置
@@ -77,10 +78,23 @@ public class NaviClient implements IMogoNavi {
private NaviClient( Context context ) {
mContext = context;
- mAMapNavi = AMapNavi.getInstance( context );
+ if ( DebugConfig.isUseCustomNavi() ) {
+ // 按需初始化导航组件
+ initAMapNavi();
+ }
+ }
+
+ /**
+ * 初始化导航组件
+ */
+ private void initAMapNavi() {
+ if ( mAMapNavi != null ) {
+ return;
+ }
+ mAMapNavi = AMapNavi.getInstance( mContext );
mAMapNavi.setEmulatorNaviSpeed( 120 );
- mAMapNavi.setUseInnerVoice( DebugConfig.isUseCustomNavi(), true );
- mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this );
+ mAMapNavi.setUseInnerVoice( DebugConfig.isUseCustomNavi(), false );
+ mAMapNaviListener = new NaviListenerAdapter( mContext, this );
mAimlessModeListener = new AimlessModeListenerAdapter() {
};
mAMapNavi.addAMapNaviListener( mAMapNaviListener );
@@ -165,10 +179,28 @@ public class NaviClient implements IMogoNavi {
}
}
+ public void stopAMapNavi() {
+ if ( mAMapNavi != null ) {
+ mAMapNavi.stopNavi();
+ }
+ }
+
+ public void selectAMapRouteId( int routeId ) {
+ if ( mAMapNavi != null ) {
+ mAMapNavi.selectRouteId( routeId );
+ }
+ }
+
+ public Map< Integer, AMapNaviPath > getAMapNaviPaths() {
+ if ( mAMapNavi != null ) {
+ return mAMapNavi.getNaviPaths();
+ }
+ return null;
+ }
@Override
public void startNavi( boolean isRealNavi ) {
- if ( mAMapNaviListener.isStopped() ) {
+ if ( mAMapNaviListener != null && mAMapNaviListener.isStopped() ) {
return;
}
mIsRealNavi = isRealNavi;
@@ -243,6 +275,9 @@ public class NaviClient implements IMogoNavi {
@Override
public boolean setBroadcastMode( int mode ) {
+ if ( checkAMapNavi() ) {
+ return false;
+ }
return mAMapNavi.setBroadcastMode( mode );
}
@@ -300,6 +335,9 @@ public class NaviClient implements IMogoNavi {
@Override
public void startAimlessMode() {
+ if ( checkAMapNavi() ) {
+ return;
+ }
if ( mAimlessModeStatus && !isNaviing() ) {
mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
mAimlessStatus = true;
@@ -312,6 +350,9 @@ public class NaviClient implements IMogoNavi {
@Override
public void stopAimlessMode() {
+ if ( checkAMapNavi() ) {
+ return;
+ }
mAMapNavi.stopAimlessMode();
mAimlessStatus = false;
Logger.d( TAG, "关闭巡航成功" );
@@ -341,6 +382,15 @@ public class NaviClient implements IMogoNavi {
@Override
public void setUseExtraGPSData( boolean use ) {
+ // 如果使用平台模拟位置变化,需要用到导航组件
+ if ( use ) {
+ initAMapNavi();
+ } else {
+ destroyAMapNavi();
+ }
+ if ( checkAMapNavi() ) {
+ return;
+ }
Logger.d( TAG, "设置外部gps源状态 %s", use );
mAMapNavi.setIsUseExtraGPSData( use );
if ( AMapWrapper.getAMap() == null ) {
@@ -364,8 +414,22 @@ public class NaviClient implements IMogoNavi {
AMapWrapper.getAMap().setMyLocationEnabled( true );
}
+ /**
+ * 销毁导航组件
+ */
+ private void destroyAMapNavi() {
+ if ( mAMapNavi != null ) {
+ mAMapNavi.removeAMapNaviListener( mAMapNaviListener );
+ mAMapNavi.removeAimlessModeListener( mAimlessModeListener );
+ mAMapNavi.destroy();
+ }
+ }
+
@Override
public void setExtraGPSData( double lon, double lat, float speed, float accuracy, float bearing, long timestamp ) {
+ if ( checkAMapNavi() ) {
+ return;
+ }
if ( !mAMapNavi.getIsUseExtraGPSData() ) {
Logger.d( TAG, "拒绝外部GPS数据" );
return;
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java
index 96578329ed..9aa69c5daa 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java
@@ -6,15 +6,10 @@ import android.os.Trace;
import android.text.TextUtils;
import com.amap.api.maps.model.Polyline;
-import com.amap.api.navi.AMapNavi;
-import com.amap.api.navi.AimlessModeListener;
-import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.CameraType;
-import com.amap.api.navi.enums.CarEnterCameraStatus;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.AMapCalcRouteResult;
import com.amap.api.navi.model.AMapNaviCameraInfo;
-import com.amap.api.navi.model.AMapNaviInfo;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.NaviInfo;
import com.mogo.commons.voice.AIAssist;
@@ -27,7 +22,6 @@ import com.mogo.map.navi.MogoNaviListenerHandler;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
import com.mogo.utils.UiThreadHandler;
-import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import java.util.List;
@@ -43,7 +37,6 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
private static final String TAG = "NaviListenerAdapter";
private Context mContext;
- private AMapNavi mAMapNavi;
private NaviClient mClient;
/**
* 导航状态:true - 导航 onStartNavi(int) 被调用, false - 到达目的地、手动挺固执
@@ -60,11 +53,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
*/
private NaviOverlayHelper mNaviOverlayHelper;
- public NaviListenerAdapter( Context mContext, AMapNavi mAMapNavi, NaviClient client ) {
+ public NaviListenerAdapter( Context mContext, NaviClient client ) {
this.mContext = mContext;
- this.mAMapNavi = mAMapNavi;
this.mClient = client;
- mNaviOverlayHelper = new NaviOverlayHelper( mAMapNavi, AMapWrapper.getAMap(), mContext );
+ mNaviOverlayHelper = new NaviOverlayHelper( AMapWrapper.getAMap(), mContext );
}
public void setNaviing( boolean mIsNaviing ) {
@@ -240,16 +232,15 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
mNaviOverlayHelper.clearCalculatedOverlay();
setStopped( true );
setNaviing( false );
- mAMapNavi.stopNavi();
+ mClient.stopAMapNavi();
MogoNaviListenerHandler.getInstance().onStopNavi();
AMapMessageManager.getInstance().postNaviStopped();
}
public void handleClickedPolyline( Polyline polyline ) {
if ( mNaviOverlayHelper != null ) {
-
mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() );
- mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() );
+ mClient.selectAMapRouteId( mNaviOverlayHelper.getSelectedPathId() );
mNaviOverlayHelper.showBoundsWithSettingBounds();
}
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
index c057446979..4da21b2f24 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java
@@ -14,7 +14,6 @@ import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.Polyline;
-import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviPath;
import com.amap.api.navi.model.NaviInfo;
@@ -55,7 +54,6 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
*/
public static final float AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED = 0.3f;
- private AMapNavi mAMapNavi;
private AMap mAMap;
private Context mContext;
// 规划的路线显示边距
@@ -73,8 +71,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
*/
private List< Marker > mMarkers = new ArrayList<>();
- public NaviOverlayHelper( AMapNavi mAMapNavi, AMap mAMap, Context mContext ) {
- this.mAMapNavi = mAMapNavi;
+ public NaviOverlayHelper( AMap mAMap, Context mContext ) {
this.mAMap = mAMap;
this.mContext = mContext;
calculateBoundArea();
@@ -125,7 +122,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
*/
private List< CalculatePathItem > getSortedPaths() {
checkAMapInstance();
- final Map< Integer, AMapNaviPath > pathMap = mAMapNavi.getNaviPaths();
+ final Map< Integer, AMapNaviPath > pathMap = NaviClient.getInstance( mContext ).getAMapNaviPaths();
if ( pathMap == null || pathMap.isEmpty() ) {
return null;
}
@@ -219,7 +216,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
mSelectedCalculatePathItem = item;
//wrapper.setStartBitmap( R.drawable.ic_navi_start )
// .setEndBitmap( R.drawable.ic_navi_target );
- mAMapNavi.selectRouteId( item.getId() );
+ NaviClient.getInstance( mContext ).selectAMapRouteId( item.getId() );
Logger.d( TAG, "renderPathOverlay set default path" );
}
wrapper.addToMap();
@@ -435,7 +432,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
@Override
public void onItemClicked( String tagId ) {
handleClickedPolyline( tagId );
- mAMapNavi.selectRouteId( getSelectedPathId() );
+ NaviClient.getInstance( mContext ).selectAMapRouteId( getSelectedPathId() );
showBounds( mBoundRect );
}
diff --git a/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java b/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java
index 4d6edfbc86..516be8652e 100644
--- a/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java
+++ b/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/AutoNaviReceiver.java
@@ -26,6 +26,9 @@ public class AutoNaviReceiver extends BroadcastReceiver {
private static AutoNaviReceiver autoNaviReceiver;
private static boolean sRegisterFlag = false;
+ private static MogoNaviInfo sNaviInfo;
+ private static MogoTraffic sTraffic;
+
public static void register( Context context ) {
IntentFilter filter = new IntentFilter();
@@ -85,23 +88,28 @@ public class AutoNaviReceiver extends BroadcastReceiver {
MapState.getInstance().setNaving( true );
MogoNaviListenerHandler.getInstance().onStartNavi();
}
- MogoNaviInfo naviInfo = new MogoNaviInfo();
- naviInfo.setCurrentLimitSpeed( cameraSpeed );
- naviInfo.setCurrentRoadName( intent.getStringExtra( GuideInfoExtraKey.CUR_ROAD_NAME ) );
- naviInfo.setCurrentSpeed( intent.getIntExtra( GuideInfoExtraKey.CUR_SPEED, 0 ) );
- naviInfo.setCurStepRetainDistance( intent.getIntExtra( GuideInfoExtraKey.SEG_REMAIN_DIS, 0 ) );
- naviInfo.setCurStepRetainTime( intent.getIntExtra( GuideInfoExtraKey.SEG_REMAIN_TIME, 0 ) );
- naviInfo.setIconResId( IconTypeUtils.getResIdByIconType( context, intent.getIntExtra( GuideInfoExtraKey.NEW_ICON, 0 ) ) );
- naviInfo.setNextRoadName( intent.getStringExtra( GuideInfoExtraKey.NEXT_ROAD_NAME ) );
- naviInfo.setPathRetainDistance( intent.getIntExtra( GuideInfoExtraKey.ROUTE_REMAIN_DIS, 0 ) );
- naviInfo.setPathRetainTime( intent.getIntExtra( GuideInfoExtraKey.ROUTE_REMAIN_TIME, 0 ) );
- MogoNaviListenerHandler.getInstance().onNaviInfoUpdate( naviInfo );
+ if ( sNaviInfo == null ) {
+ sNaviInfo = new MogoNaviInfo();
+ }
+ sNaviInfo.setCurrentLimitSpeed( cameraSpeed );
+ sNaviInfo.setCurrentRoadName( intent.getStringExtra( GuideInfoExtraKey.CUR_ROAD_NAME ) );
+ sNaviInfo.setCurrentSpeed( intent.getIntExtra( GuideInfoExtraKey.CUR_SPEED, 0 ) );
+ sNaviInfo.setCurStepRetainDistance( intent.getIntExtra( GuideInfoExtraKey.SEG_REMAIN_DIS, 0 ) );
+ sNaviInfo.setCurStepRetainTime( intent.getIntExtra( GuideInfoExtraKey.SEG_REMAIN_TIME, 0 ) );
+ sNaviInfo.setIconResId( IconTypeUtils.getResIdByIconType( context, intent.getIntExtra( GuideInfoExtraKey.NEW_ICON, 0 ) ) );
+ sNaviInfo.setNextRoadName( intent.getStringExtra( GuideInfoExtraKey.NEXT_ROAD_NAME ) );
+ sNaviInfo.setPathRetainDistance( intent.getIntExtra( GuideInfoExtraKey.ROUTE_REMAIN_DIS, 0 ) );
+ sNaviInfo.setPathRetainTime( intent.getIntExtra( GuideInfoExtraKey.ROUTE_REMAIN_TIME, 0 ) );
+ MogoNaviListenerHandler.getInstance().onNaviInfoUpdate( sNaviInfo );
}
- MogoTraffic mogoTraffic = new MogoTraffic( MapState.getInstance().isAimless() ? MogoTraffic.TYPE_AIM : MogoTraffic.TYPE_NAVI );
- mogoTraffic.setDistance( cameraDisc );
- mogoTraffic.setSpeedLimit( cameraSpeed );
- mogoTraffic.setTrafficType( cameraType );
- MogoNaviListenerHandler.getInstance().onUpdateTraffic2( mogoTraffic );
+ if ( sTraffic == null ) {
+ sTraffic = new MogoTraffic( MapState.getInstance().isAimless() ? MogoTraffic.TYPE_AIM : MogoTraffic.TYPE_NAVI );
+ }
+ sTraffic.setFromType( MapState.getInstance().isAimless() ? MogoTraffic.TYPE_AIM : MogoTraffic.TYPE_NAVI );
+ sTraffic.setDistance( cameraDisc );
+ sTraffic.setSpeedLimit( cameraSpeed );
+ sTraffic.setTrafficType( cameraType );
+ MogoNaviListenerHandler.getInstance().onUpdateTraffic2( sTraffic );
}
/**
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMapViewInstanceHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMapViewInstanceHandler.java
new file mode 100644
index 0000000000..55d5b23a2f
--- /dev/null
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMapViewInstanceHandler.java
@@ -0,0 +1,15 @@
+package com.mogo.map;
+
+import android.content.Context;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/10
+ *
+ * 描述
+ */
+interface IMogoMapViewInstanceHandler extends IDestroyable {
+
+ void createMapViewInstance( Context context );
+}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java
index ddfd895697..e51e933608 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoBaseMapView.java
@@ -37,7 +37,7 @@ public abstract class MogoBaseMapView extends FrameLayout implements ILifeCycle
init( context );
}
- private void init( Context context ) {
+ protected void init( Context context ) {
mMapView = createMapView( context );
if ( mMapView != null ) {
final View mapView = mMapView.getMapView();
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java
index 8301124d8b..841a240338 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java
@@ -318,4 +318,10 @@ public interface IMogoMarker {
* @param duration 时长
*/
void startSmooth( List< MogoLatLng > points, int duration );
+
+ /**
+ * info window 是否正在显示
+ * @return
+ */
+ boolean isInfoWindowShowing();
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java
index 20c21725d2..a848c57f7a 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java
@@ -3,9 +3,12 @@ package com.mogo.map;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
import androidx.annotation.Nullable;
+import com.amap.api.col.n3.lg;
import com.mogo.map.impl.amap.AMapBaseMapView;
import com.mogo.utils.logger.Logger;
@@ -30,6 +33,11 @@ public class MogoMapView extends AMapBaseMapView implements ILifeCycle {
super( context, attrs, defStyleAttr );
}
+ @Override
+ protected void init( Context context ) {
+ super.init( context );
+ }
+
@Override
public IMogoMap getMap() {
return super.getMap();
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapViewInstanceHandler.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapViewInstanceHandler.java
new file mode 100644
index 0000000000..b3e6bf7a2b
--- /dev/null
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapViewInstanceHandler.java
@@ -0,0 +1,49 @@
+package com.mogo.map;
+
+import android.content.Context;
+
+import com.mogo.map.impl.amap.AMapViewHandler;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/10
+ *
+ * 描述
+ */
+class MogoMapViewInstanceHandler implements IMogoMapViewInstanceHandler {
+
+ private static volatile MogoMapViewInstanceHandler sInstance;
+
+ private MogoMapViewInstanceHandler(){}
+
+ public static MogoMapViewInstanceHandler getInstance(){
+ if( sInstance == null ){
+ synchronized( MogoMapViewInstanceHandler.class ) {
+ if( sInstance == null ){
+ sInstance = new MogoMapViewInstanceHandler();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ public synchronized void release(){
+ sInstance = null;
+ }
+
+ private Object readResolve() {
+ // 阻止反序列化,必须实现 Serializable 接口
+ return sInstance;
+ }
+
+ @Override
+ public void createMapViewInstance( Context context ) {
+ AMapViewHandler.createMapView( context );
+ }
+
+ @Override
+ public void destroy() {
+ AMapViewHandler.destroy();
+ }
+}
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/Const.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/Const.kt
index 889aedacc7..cd278e9299 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/Const.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/Const.kt
@@ -68,6 +68,11 @@ const val UPLOAD_FROM_STRATEGY_CLOUD_CHECK = "4"
*/
const val UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO = "5"
+/**
+ * 策略上报集合
+ */
+val STRATEGY_UPLOAD_TYPE_ARRAY = arrayOf(UPLOAD_FROM_STRATEGY_BLOCK_AUTO,
+ UPLOAD_FROM_STRATEGY_CLOUD_CHECK, UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO)
/**
* 默认视频抓取时长,单位是秒
*/
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt
index 63bb1e8d6b..845db90855 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt
@@ -9,7 +9,6 @@ import com.mogo.utils.NetworkUtils
import com.zhidao.auto.carcorder.callback.TakePhotoCallback
import com.zhidao.auto.carcorder.callback.TakeVideoCallback
import com.zhidao.auto.carcorder.controller.ZdCarCoderController
-import com.zhidao.roadcondition.BuildConfig
import com.zhidao.roadcondition.constant.*
import com.zhidao.roadcondition.event.GetImageSuccessEvent
import com.zhidao.roadcondition.event.LatLngStickyEventBus
@@ -109,7 +108,7 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
this.mLatitude = latitude
if (DebugConfig.getCarMachineType() == 0) { //自研车机
outputVideoPath = getCompressVideoPath()
- CustomStatusHandler.offerVideoStatus(TakeEntity(isCustom, id))
+ CustomStatusHandler.offerVideoStatus(TakeEntity(isCustom, id,fromType))
zdCarCoderController.takeVideo(cameraId, duration)
trackGetVideo(1)
} else { //比亚迪
@@ -118,7 +117,7 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
// TipToast.shortTip("分享失败,请检查网络")
// } else {
//失败了,传空地址,发起请求
- val entity = TakeEntity(isCustom, id)
+ val entity = TakeEntity(isCustom, id,fromType)
videoAndThumbMap["video"] = ""
videoAndThumbMap["thumb"] = ""
@@ -272,6 +271,7 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
}
}
+
//获取视频成功
override fun onTakeVideoSuccess(camera: Int, videoPath: String?) {
var thumbnailPath =
@@ -283,8 +283,11 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
)
val entity = CustomStatusHandler.pollVideoStatus()
- if (!entity?.isCustom) {
- trackNormalEvent(CarNet_auto_upload_video, null)
+
+ entity?.let {
+ if (!entity.isCustom) {
+ trackNormalEvent(CarNet_auto_upload_video, null)
+ }
}
if (isSuccess) {
@@ -297,32 +300,31 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
getStrategyType("video")
)
var speed = LocationUtil.getInstance().getSpeed()
- //TODO
- if (BuildConfig.DEBUG) {
- //获取视频以及缩略图成功,开始上报
- compressVideo(videoPath, thumbnailPath, entity)
- return
- }
- if (entity?.isCustom) {
- compressVideo(videoPath, thumbnailPath, entity)
- } else {
- Log.d(
- TAG,
- "onTakeVideoSuccess maxSpeedVideo = $maxSpeedVideo --->speed= $speed + minSpeedVideo = $minSpeedVideo"
- )
- if (maxSpeedVideo == -1) {
- Log.d(TAG, "onTakeVideoSuccess 111 abs =" + (Math.abs(minSpeedVideo) / 3.6f))
- if (speed >= (Math.abs(minSpeedVideo) / 3.6f)) {
- //获取视频以及缩略图成功,开始上报
- compressVideo(videoPath, thumbnailPath, entity)
+ entity?.let {
+ if (entity.isCustom) {
+ compressVideo(videoPath, thumbnailPath, entity)
+ }else if (entity.fromType in STRATEGY_UPLOAD_TYPE_ARRAY) {
+ // 属于策略上报
+ compressVideo(videoPath, thumbnailPath, entity)
+ } else {
+ Log.d(
+ TAG,
+ "onTakeVideoSuccess maxSpeedVideo = $maxSpeedVideo --->speed= $speed + minSpeedVideo = $minSpeedVideo"
+ )
+ if (maxSpeedVideo == -1) {
+ Log.d(TAG, "onTakeVideoSuccess 111 abs =" + (Math.abs(minSpeedVideo) / 3.6f))
+ if (speed >= (Math.abs(minSpeedVideo) / 3.6f)) {
+ //获取视频以及缩略图成功,开始上报
+ compressVideo(videoPath, thumbnailPath, entity)
+ }
}
- }
- if (minSpeedVideo > 0 && maxSpeedVideo > 0) {
- Log.d(TAG, "onTakeVideoSuccess minSpeedVideo > 0 -- speed = $speed")
- if ((speed >= (minSpeedVideo / 3.6f)) && speed <= (maxSpeedVideo / 3.6f)) {
- compressVideo(videoPath, thumbnailPath, entity)
+ if (minSpeedVideo > 0 && maxSpeedVideo > 0) {
+ Log.d(TAG, "onTakeVideoSuccess minSpeedVideo > 0 -- speed = $speed")
+ if ((speed >= (minSpeedVideo / 3.6f)) && speed <= (maxSpeedVideo / 3.6f)) {
+ compressVideo(videoPath, thumbnailPath, entity)
+ }
}
}
}
@@ -339,10 +341,13 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
Log.e(TAG, "getVideo onTakeVideoFail")
getVideoFailed?.invoke()
val entity = CustomStatusHandler.pollVideoStatus()
- InformationUploadController.release(entity?.id)
- Log.e(TAG, "getVideo onTakeVideoFail entity?.isCustom =" + entity?.isCustom)
- if (entity?.isCustom) {
+
+ entity?.let {
+ InformationUploadController.release(entity.id)
+ Log.e(TAG, "getVideo onTakeVideoFail entity?.isCustom =" + entity?.isCustom)
+ if (entity?.isCustom) {
// sendGetInfoFailedReceiver(mType)
+ }
}
//失败了,传空地址,发起请求
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CosStatusController.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CosStatusController.kt
index 8502395eb3..290bbba5d7 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CosStatusController.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CosStatusController.kt
@@ -121,7 +121,6 @@ class CosStatusController : CosStatusCallback {
downloadUrl: String?,
localPath: String?
) {
- Log.d(TAG, "uploadFile mType= $mType")
Log.d(TAG, "uploadCosCompleted localPath = $localPath")
Log.d(TAG, "uploadCosCompleted downloadUrl = $downloadUrl")
Log.d(TAG, "uploadCosCompleted cosPath = $cosPath")
@@ -137,6 +136,7 @@ class CosStatusController : CosStatusCallback {
}
Log.d(TAG, "videoAndThumbMap ${videoAndThumbMap}")
if (videoAndThumbMap.size == 2) {
+ trackUploadCos(4)
Log.d(TAG, "videoAndThumbMap.size == 2 ")
var locationInfo = LocationUtil.getInstance().getLocationInfo()
val locationStr: String = Gson().toJson(locationInfo)
@@ -156,11 +156,12 @@ class CosStatusController : CosStatusCallback {
//上传录像以及缩略图成功
sendInformation(INFO_TYPE_VIDEO, videoAndThumbMap)
}
+ } else {
+ trackUploadCos(5)
}
} else {
//上传图片成功, 如果是上报路况,直接上传,TODO
- Log.d(TAG, "uploadCosCompleted 分享成功 ----mType = $mType")
-// if (mType.equals("1") || mType.equals("-1")) {
+ Log.d(TAG, "uploadCosCompleted 分享成功 ---- mType = $mType")
sendInformationDirectly(
INFO_TYPE_IMG,
mutableMapOf("pic" to downloadUrl as String),
@@ -170,7 +171,6 @@ class CosStatusController : CosStatusCallback {
mLongitude,
mLatitude
)
-// }
}
Log.d(TAG, "delete file: ${localPath!!}")
CosCallbackMapController.unregisterCallback(localPath)
@@ -195,17 +195,18 @@ class CosStatusController : CosStatusCallback {
type: Int,
map: Map,
poiType: String,
- entity: TakeEntity,
+ entity: TakeEntity?,
mainInfoId: Long,
longitude: Double,
latitude: Double
) {
- Log.d(TAG, "sendInformationDirectly isCustomSend = ${entity?.isCustom}")
Log.d(TAG, "sendInformationDirectly poiType= $poiType ---- mainInfoId= $mainInfoId")
- mainServiceHttpModel.sendInformationMessage(
+ //开始上传
+ entity?.isCustom?.let {
+ mainServiceHttpModel.sendInformationMessage(
type = type,
url = map,
- isCustom = entity?.isCustom,
+ isCustom = it,
poiType = poiType,
mainInfoId = mainInfoId,
longitude = longitude,
@@ -216,6 +217,7 @@ class CosStatusController : CosStatusCallback {
CosCallbackMapController.mainService?.sendCustomResult(success)
}
}
+ }
}
override fun onProgress(localPath: String?, progress: Float) {
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CustomStatusHandler.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CustomStatusHandler.kt
index bb31cb71f3..65955f847b 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CustomStatusHandler.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CustomStatusHandler.kt
@@ -23,9 +23,9 @@ object CustomStatusHandler {
takeVideoStatusQueue.offer(entity)
}
- fun pollVideoStatus(): TakeEntity = takeVideoStatusQueue.poll()
+ fun pollVideoStatus(): TakeEntity? = takeVideoStatusQueue.poll()
}
class TakeEntity(
- var isCustom: Boolean, var id: Long
+ var isCustom: Boolean, var id: Long, var fromType: String = "0"
)
\ No newline at end of file
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt
index 70e1074285..7e734f6140 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt
@@ -98,10 +98,11 @@ class MainService : Service() {
|| shareType == TANLU_ROAD_ACCIDENT || shareType == TANLU_ROAD_WORK
) {
// takePhoto(1, false, true)
- if (fromType != UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO) { // 是策略触发,不提示
- takeVideo(it.duration, isCustom = true, id = id)
- } else {
+ if (fromType == UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO || fromType == UPLOAD_FROM_STRATEGY_BLOCK_AUTO) {
+ // 如果是策略上报,isCustom = false
takeVideo(it.duration)
+ } else {
+ takeVideo(it.duration, isCustom = true, id = id)
}
}
}
@@ -247,6 +248,7 @@ class MainService : Service() {
getStrategyType("video")
)
Log.d("MainService", "handleReportStrategy picType = $picType ---videoType = $videoType")
+ shareType = TANLU_ROAD_CURRENT
if (picType == 1) {
takePhoto(1)
} else if (picType == 2) {
@@ -301,7 +303,7 @@ class MainService : Service() {
Log.d("MainService", "takeVideo --------1---->")
// if (isAuthorization(BaseApplication.getAppContext())) {
// log(TAG, "takeVideo --------2---->")
- CarCorderController.takeVideo(1, duration, isCustom, id, if (isCustom) shareType else TANLU_ROAD_CURRENT, mainInfoId, fromType, mLongitude, mLatitude)
+ CarCorderController.takeVideo(1, duration, isCustom, id, shareType, mainInfoId, fromType, mLongitude, mLatitude)
// }
postVideoAlarmTask(isInterval)
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt
index 58aff2ab9f..1d88520feb 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainServiceController.kt
@@ -231,10 +231,12 @@ class MainServiceController {
latitude: Double,
customSend: ((Boolean) -> Unit)? = null
) {
- Log.d(TAG, " sendInformationMessage poiType = $poiType");
+ Log.d(TAG, " sendInformationMessage poiType = $poiType")
//删除测试数据
- var locationInfo = LocationUtil.getInstance().getLocationInfo();
+ var locationInfo = LocationUtil.getInstance().getLocationInfo()
if (locationInfo.address.isNullOrEmpty()) {
+ Log.d(TAG, " sendInformationMessage locationInfo.address = $locationInfo.address")
+ trackUploadGeo(1)
geoLocation(type, url, locationInfo, isCustom,trafficInfoType, isShare, customSend,poiType,mainInfoId,longitude,latitude)
} else {
postInformationMessage(
@@ -270,8 +272,10 @@ class MainServiceController {
//转换失败的情况下再重试一次
geoRetryed = if (!geoRetryed) {
geoLocation(type, url, locationInfo, isCustom, trafficInfoType, isShare, customSend, poiType,mainInfoId,longitude,latitude)
+
true
} else {
+
false
}
})
@@ -310,4 +314,11 @@ class MainServiceController {
)
}
+ //上传
+ private fun trackUploadGeo(type: Int) {
+ trackNormalEvent(
+ CarNet_Geo, mutableMapOf("type" to type)
+ )
+ }
+
}
\ No newline at end of file
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/AnalyticsUtil.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/AnalyticsUtil.kt
index 042aad7327..3ef6ac2e10 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/AnalyticsUtil.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/AnalyticsUtil.kt
@@ -28,11 +28,13 @@ const val CarNet_Get_Strategy:String = "CarNet_Get_Strategy" //策略拉取成
const val CarNet_Create_Task:String = "CarNet_Create_Task" //创建定时任务
const val CarNet_Get_Picture:String = "CarNet_Get_Picture" //获取图片,type=1 调用, type=2 成功, type=3 失败
const val CarNet_Get_Video:String = "CarNet_Get_Video" //获取视频,type=1 调用,type=2 成功,type=3 失败
-const val CarNet_Cos_Upload:String = "CarNet_Cos_Upload" //上传COS, type=1 成功, type=2 失败, type=3 开始
+const val CarNet_Cos_Upload:String = "CarNet_Cos_Upload" //上传COS, type=1 成功, type=2 失败, type=3 开始, type=4 成功返回视频和缩略图,type=5 成功没有返回全视频和缩略图
const val CarNet_Servers_Upload:String = "CarNet_Servers_Upload" //上传服务端, type=1 成功,type=2 失败, type=3 开始
const val CarNet_Voice_Search:String = "CarNet_Voice_Search" //语音搜索路况,type=1 成功,type=2 失败
const val CarNet_USER_SHOW:String = "CarNet_user_show" //情报展示时长,showtime 加载列表时长
const val CarNet_USER_LOAD:String = "CarNet_user_load" //情报加载时长,type=1 视频,2图片
+const val CarNet_Geo:String = "CarNet_Geo_Location" //上传服务端, type=1开始 ,type=2 成功, type=3 失败
+
const val CarNet_live_broadcast = "CarNet_live_broadcast" // 地图页面点击直播(在线可直播车机)
//自定义埋点
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/LocationUtil.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/LocationUtil.kt
index 56719fc1fe..2e2de29b55 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/LocationUtil.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/LocationUtil.kt
@@ -183,12 +183,14 @@ class LocationUtil private constructor() {
geocoderSearch.setOnGeocodeSearchListener(object : GeocodeSearch.OnGeocodeSearchListener {
override fun onRegeocodeSearched(p0: RegeocodeResult?, p1: Int) {
if (p1 == 1000) {
+ trackUploadGeo(2);
var regeocodeAddress = p0?.regeocodeAddress
regeocodeAddress?.let {
var locInfo = regeocodeAddress.toLocInfo(regeocodeAddress, latlngPoint)
locGeoCode.invoke(locInfo)
}
} else {
+ trackUploadGeo(3);
onError.invoke("geoCode -> $p1")
}
}
@@ -198,6 +200,13 @@ class LocationUtil private constructor() {
})
}
+ //上传
+ private fun trackUploadGeo(type: Int) {
+ trackNormalEvent(
+ CarNet_Geo, mutableMapOf("type" to type)
+ )
+ }
+
fun getSpeed():Float{
return speed
}
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt
index cc4cb781f1..58352ad7c6 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt
@@ -31,8 +31,8 @@ fun getInformationBody(
isShare:Boolean,
poiType: String,
mainInfoId: Long,
- latitude: Double,
- longitude: Double
+ longitude: Double,
+ latitude: Double
): InformationBody {
var jsonArray = JsonArray()
var type: Int
diff --git a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java
index 5e8642fa01..6cb5363e2d 100644
--- a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java
+++ b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java
@@ -65,7 +65,7 @@ public class MainIndependentActivity extends MainActivity {
@Override
protected void onPause() {
super.onPause();
- mServiceApis.getAdasControllerApi().setUseAlgorithm( false );
+ mServiceApis.getAdasControllerApi().setUseAlgorithm( true );
}
@Override
diff --git a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java
index 48700344f5..48c9b4c52f 100644
--- a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java
+++ b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java
@@ -20,7 +20,6 @@ import com.mogo.service.intent.IMogoIntentListener;
public class MainLauncherActivity extends MainActivity implements IMogoIntentListener {
protected boolean mIsHomeKeyDown = false;
-
@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java
index 46ff541f23..225c7167c9 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListChangedLiveData.java
@@ -14,21 +14,24 @@ public class AppsListChangedLiveData extends MutableLiveData {
private Observer mObserver;
- private AppsListChangedLiveData(){
- // private constructor
- }
+ private static volatile AppsListChangedLiveData sInstance;
- private static final class InstanceHolder{
- private static final AppsListChangedLiveData INSTANCE = new AppsListChangedLiveData();
- }
+ private AppsListChangedLiveData(){}
public static AppsListChangedLiveData getInstance(){
- return InstanceHolder.INSTANCE;
+ if( sInstance == null ){
+ synchronized( AppsListChangedLiveData.class ) {
+ if( sInstance == null ){
+ sInstance = new AppsListChangedLiveData();
+ }
+ }
+ }
+ return sInstance;
}
- private Object readResolve(){
- // 阻止反序列化,必须实现 Serializable 接口
- return InstanceHolder.INSTANCE;
+ private Object readResolve() {
+ // 阻止反序列化,必须实现 Serializable 接口
+ return sInstance;
}
@Override
@@ -37,7 +40,9 @@ public class AppsListChangedLiveData extends MutableLiveData {
mObserver = observer;
}
- public void release(){
+ public synchronized void release(){
removeObserver( mObserver );
+ mObserver = null;
+ sInstance = null;
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
index d1a51e55a8..ed8d6d9ca8 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java
@@ -174,12 +174,7 @@ public class AppsPresenter extends Presenter< AppsView > {
int page = 0;
int counter = 0;
for ( AppInfo appInfo : list ) {
- if ( counter < AppsConst.TOTAL_SIZE_EACH_PAGE ) {
- counter++;
- } else {
- page++;
- counter = 0;
- }
+ page = counter++ / AppsConst.TOTAL_SIZE_EACH_PAGE;
if ( !result.containsKey( page ) ) {
result.put( page, new ArrayList<>() );
}
@@ -221,6 +216,12 @@ public class AppsPresenter extends Presenter< AppsView > {
AppsListChangedLiveData.getInstance().release();
mView = null;
mLauncher.destroy();
+ mAnalytics = null;
+ mCardManager = null;
+ if ( mLauncher != null ) {
+ mLauncher.destroy();
+ }
+ mLauncher = null;
}
public void exit() {
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java
index bf38719907..aad3f187c8 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/AnimWrapper.java
@@ -28,17 +28,8 @@ public class AnimWrapper implements Anim {
public void initAnim( ImageView target ) {
mTarget = target;
if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
- ThreadPoolService.execute( () -> {
- final AnimationDrawable drawable = new AnimationDrawable();
- for ( int i = 0; i < AnimRes.sRes.length; i++ ) {
- drawable.addFrame( target.getResources().getDrawable( AnimRes.sRes[i] ), 100 );
- }
- UiThreadHandler.post( () -> {
- target.setBackground( drawable );
- mDelegate = new OthersAnim( drawable );
- start();
- } );
- } );
+ mDelegate = new OthersAnim( target );
+ start();
} else {
mTarget.setImageResource( R.drawable.mogo_tts_icon_00000 );
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java
index 13156b1e7c..aa7259c6ae 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/anim/OthersAnim.java
@@ -1,6 +1,9 @@
package com.mogo.module.apps.anim;
-import android.graphics.drawable.AnimationDrawable;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.widget.ImageView;
/**
* @author congtaowang
@@ -8,25 +11,44 @@ import android.graphics.drawable.AnimationDrawable;
*
* 描述
*/
-public class OthersAnim implements Anim{
+public class OthersAnim implements Anim {
- private AnimationDrawable mDrawable;
+ private int mStartIndex = 0;
- public OthersAnim( AnimationDrawable drawable ) {
- this.mDrawable = drawable;
+ private final static int MSG_LOOP = 3003;
+ public static final long INTERVAL = 100L;
+ private boolean mStarted = false;
+
+ private final ImageView mImageView;
+
+ private Handler mHandler = new Handler( Looper.getMainLooper() ) {
+ @Override
+ public void handleMessage( Message msg ) {
+ super.handleMessage( msg );
+ switch ( msg.what ) {
+ case MSG_LOOP:
+ if ( mStarted ) {
+ mImageView.setImageResource( AnimRes.sRes[mStartIndex++ % AnimRes.sRes.length] );
+ mHandler.sendEmptyMessageDelayed( MSG_LOOP, INTERVAL );
+ }
+ break;
+ }
+ }
+ };
+
+ public OthersAnim( ImageView imageView ) {
+ this.mImageView = imageView;
}
@Override
public void start() {
- if ( mDrawable != null ) {
- mDrawable.start();
- }
+ mStarted = true;
+ mHandler.sendEmptyMessage( MSG_LOOP );
}
@Override
public void stop() {
- if ( mDrawable != null ) {
- mDrawable.stop();
- }
+ mStarted = false;
+ mHandler.removeMessages( MSG_LOOP );
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java
index 75af6c4455..8a948631fb 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/InternalFunctionLauncher.java
@@ -103,6 +103,7 @@ public class InternalFunctionLauncher extends BaseAppLauncher {
public void destroy() {
if ( getNext() != null ) {
getNext().destroy();
+ setNext( null );
}
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java
index 4463a9e69c..7bf13bcf63 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java
@@ -36,7 +36,7 @@ public class AppsModel {
private Map< Integer, List< AppInfo > > mPagedApps = new HashMap<>();
private AppsModel( Context context ) {
- mContext = context;
+ mContext = context.getApplicationContext();
}
public static AppsModel getInstance( Context context ) {
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_ai_assist_bkg.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_ai_assist_bkg.png
new file mode 100755
index 0000000000..c340cb9785
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_ai_assist_bkg.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_applist.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_applist.png
old mode 100644
new mode 100755
index f884758d3d..74d147a76d
Binary files a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_applist.png and b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_applist.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_im.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_im.png
old mode 100644
new mode 100755
index 7a959f1ca1..e15c5811c7
Binary files a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_im.png and b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_im.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_media.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_media.png
old mode 100644
new mode 100755
index d9f6df313d..d84c66fd70
Binary files a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_media.png and b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_media.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi.png
old mode 100644
new mode 100755
index 2401ce7c2a..0a756a1ecc
Binary files a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi.png and b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi_disable.png b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi_disable.png
old mode 100644
new mode 100755
index 3df9f14026..d4765dae41
Binary files a/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi_disable.png and b/modules/mogo-module-apps/src/main/res/drawable-mdpi/module_apps_ic_navigator_navi_disable.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png
old mode 100644
new mode 100755
index e86c3454df..79761a6c19
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ai_assist_bkg.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_apps.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_apps.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_icon.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_icon.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_unchecked.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_equlizer.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_equlizer.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fm.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fm.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fota.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_fota.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_icon_map.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_icon_map.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest_unchecked.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_lrts.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_lrts.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center_checked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center_checked.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_music.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_music.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigation.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigation.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png
index b95bc4576f..5bf7356145 100755
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_applist.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png
old mode 100755
new mode 100644
index 3ee3703675..0b47d2f33c
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_im.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png
index bcfdb9cfa9..a27975f9fb 100755
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_media.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png
index deee86ed15..930b016a25 100755
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png
old mode 100644
new mode 100755
index 6a00c94c9d..0cfd3f47cb
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_navigator_navi_disable.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news_unchecked.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car_unchecked.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_qiyi.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_qiyi.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_qq_music.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_qq_music.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_retract.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_retract.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_stee_product.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_stee_product.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu_unchecked.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_welfare.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_welfare.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ximalaya.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_ximalaya.png
old mode 100755
new mode 100644
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
index 4218f100d9..8cb7bec0c1 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
@@ -4,7 +4,7 @@
android:id="@+id/module_apps_id_apps_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#0C0C0C">
+ android:background="@color/module_app_page_bkg_color">
\ No newline at end of file
diff --git a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml
index a9ba5a2fef..c335dd18d9 100644
--- a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml
@@ -21,8 +21,8 @@
94px
94px
- 140px
- 140px
+ 160px
+ 160px
30px
100px
100px
diff --git a/modules/mogo-module-apps/src/main/res/values/colors.xml b/modules/mogo-module-apps/src/main/res/values/colors.xml
index 6fb34a3513..155daf49f1 100644
--- a/modules/mogo-module-apps/src/main/res/values/colors.xml
+++ b/modules/mogo-module-apps/src/main/res/values/colors.xml
@@ -16,5 +16,7 @@
#080625
#3E7FFC
+ #E6000000
+ #FFFFFF
diff --git a/modules/mogo-module-apps/src/main/res/values/dimens.xml b/modules/mogo-module-apps/src/main/res/values/dimens.xml
index 679816b821..d335541a42 100644
--- a/modules/mogo-module-apps/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-apps/src/main/res/values/dimens.xml
@@ -24,6 +24,6 @@
78px
78px
17px
- 60px
- 60px
+ 55px
+ 55px
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
index beac0c0246..00261fe76b 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt
@@ -12,6 +12,7 @@ import com.mogo.map.navi.IMogoNaviListener
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant.Companion.PATH_AGREEMENT_MODULE_NAME
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_MAIN
import com.mogo.module.authorize.authprovider.launcher.MogoMainAuthorize.Companion.mogoAuthShow
+import com.mogo.module.authorize.util.SharedPreferenceUtil.hasGuide
import com.mogo.service.MogoServicePaths
import com.mogo.service.auth.IMogoAuthManager
import com.mogo.service.module.IMogoModuleLifecycle
@@ -24,7 +25,7 @@ class MogoAuthorizeProvider : IMogoAuthManager {
const val TAG = "MogoAuthorizeProvider"
}
- private var mContext:Context? = null
+ private var mContext: Context? = null
override fun createFragment(context: Context?, data: Bundle?): Fragment? {
return null
@@ -62,10 +63,11 @@ class MogoAuthorizeProvider : IMogoAuthManager {
return null
}
- override fun showAuth(context: Context?) {
+ override fun showAuth(context: Context) {
mContext = context
- if (mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
- mogoAuthShow.invokeAuthorizeForShow(mContext!!)
+ mogoAuthShow.initContext(context)
+ if (hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
+ mogoAuthShow.invokeAuthorizeForShow()
} else {
//首次进入Launcher同步一下授权状态,防止由于用户清除数据造成首次加载还会出现授权状态不同步问题
mogoAuthShow.updateAuthorizeStatus(AUTHORIZE_TYPE_LAUNCHER_MAIN)
@@ -78,9 +80,7 @@ class MogoAuthorizeProvider : IMogoAuthManager {
}
override fun init(context: Context) {
- //todo 引导判断暂时去掉 后续引导流程更改完再放开
-// todo if (isDeviceOfD() && hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) {
- // todo F系列暂时没有授权功能 1.1需求中添加 全量上
+
}
override fun getAppPackage(): String? {
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
index 964594e655..681ffbd91e 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt
@@ -39,8 +39,11 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
MogoAuthorizeMainController.disAgreeAuthorize(tag, agrId, onSuccess, onError)
}
- fun invokeAuthorizeForShow(context: Context) {
- mContext = context
+ fun initContext(mContext: Context) {
+ this.mContext = mContext
+ }
+
+ fun invokeAuthorizeForShow() {
pushLayoutToMainWindow(AUTHORIZE_TYPE_LAUNCHER_MAIN)
}
@@ -74,6 +77,10 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog
}
private fun pushLayoutToMainWindow(tag: String) {
+ if (mContext == null) {
+ Logger.d(TAG, "Because of mContext has no init, the application has in background now")
+ return
+ }
if (authorizeDialog == null) {
authorizeDialog = AuthorizeDialog(tag, mContext!!)
authorizeDialog!!.setOnDismissListener {
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt
index e698249eee..c6061c6e64 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt
@@ -1,9 +1,13 @@
package com.mogo.module.authorize.authprovider.module
+import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.AbsMogoApplication
import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeManagerImpl
import com.mogo.module.authorize.authprovider.biz.MogoAuthorizeRegisterHandler
import com.mogo.module.authorize.authprovider.launcher.MogoMainAuthorize.Companion.mogoAuthShow
+import com.mogo.module.authorize.util.SharedPreferenceUtil
+import com.mogo.module.authorize.util.isDeviceOfD
+import com.mogo.service.module.IMogoModuleProvider
class MogoModuleAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMogoAuthorizeModuleProvider {
@@ -14,13 +18,21 @@ class MogoModuleAuthorize private constructor() : MogoAuthorizeManagerImpl(), IM
}
override fun invokeAuthorizeForShow() {
- mogoAuthShow.invokeAuthorizeForShow(AbsMogoApplication.getApp().applicationContext)
+ mogoAuthShow.invokeAuthorizeForShow()
}
override fun invokeAuthorization(tag: String) {
+ if(isDeviceOfD() && !SharedPreferenceUtil.hasGuide()){
+ val guideService = ARouter.getInstance().build("/guide/showFragment").navigation()
+ if(guideService is IMogoModuleProvider){
+ guideService.init(AbsMogoApplication.getApp().applicationContext)
+ }
+ val listener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag)
+ listener?.authorizeFailed("需要先执行用户引导")
+ return
+ }
mogoAuthShow.showAuthorizeView(tag, {
//todo SP存储状态
-
}, { errorMsg ->
val listener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag)
listener?.authorizeFailed(errorMsg)
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt
index 5d74894005..abe1cd043a 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/layout/AuthorizeDialog.kt
@@ -1,6 +1,7 @@
package com.mogo.module.authorize.layout
import android.content.Context
+import android.graphics.drawable.ColorDrawable
import android.text.Html
import android.view.View
import android.widget.Button
@@ -14,6 +15,7 @@ import com.mogo.module.authorize.voice.IVoiceAuthorizeIntentListener
import com.mogo.module.authorize.voice.IVoiceCommandListener
import com.mogo.module.authorize.voice.VoiceUtil
import com.mogo.module.common.dialog.BaseFloatDialog
+import com.mogo.module.common.utils.CarSeries
import com.mogo.utils.TipToast
import com.mogo.utils.logger.Logger
import kotlinx.coroutines.Dispatchers
@@ -62,7 +64,12 @@ class AuthorizeDialog : BaseFloatDialog, View.OnClickListener, IVoiceCommandList
private fun setWrapContent() {
val mWindow = window
if(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD){
- if (mWindow != null) {
+ if (mWindow != null && CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X) {
+ val lp = mWindow.attributes
+ lp.width = 1920
+ lp.height = 1080
+ mWindow.attributes = lp
+ }else{
val lp = mWindow.attributes
lp.width = 1024
lp.height = 600
@@ -78,7 +85,7 @@ class AuthorizeDialog : BaseFloatDialog, View.OnClickListener, IVoiceCommandList
}
}
- fun initViews() {
+ private fun initViews() {
Logger.d(TAG, "initView ")
AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_SHOW)
init()
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/DeviceUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/DeviceUtil.kt
new file mode 100644
index 0000000000..8884512894
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/DeviceUtil.kt
@@ -0,0 +1,10 @@
+package com.mogo.module.authorize.util
+
+import com.mogo.module.common.utils.CarSeries.*
+
+fun isDeviceOfD(): Boolean {
+ return when (getSeries()) {
+ CAR_SERIES_D80X, CAR_SERIES_D81X, CAR_SERIES_D82X, CAR_SERIES_D84X -> true
+ else -> false
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt
index d585622cde..6418cae142 100644
--- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt
+++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt
@@ -1,12 +1,12 @@
package com.mogo.module.authorize.util
import com.mogo.commons.AbsMogoApplication
+import com.mogo.commons.debug.DebugConfig.getSpGuide
import com.mogo.utils.storage.SharedPrefsMgr
object SharedPreferenceUtil {
private const val HAS_AUTH = "HAS_AUTH"
- private const val HAS_GUIDE = "HAS_GUIDE"
private const val AUTHORIZE_UPDATE_TIME = "AUTHORIZE_UPDATE_TIME"
fun needAuthorization(type: Int): Boolean {
@@ -30,6 +30,6 @@ object SharedPreferenceUtil {
}
fun hasGuide(): Boolean {
- return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_GUIDE, false)
+ return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(getSpGuide(), false)
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_corner.xml
index c2d1fec152..93b269154a 100644
--- a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_corner.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_corner.xml
@@ -3,13 +3,13 @@
-
-
+
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_left_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_left_corner.xml
index 8c950afee3..9d0ac5061d 100644
--- a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_left_corner.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_blue_left_corner.xml
@@ -3,13 +3,13 @@
-
-
+
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_dark_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_dark_corner.xml
index 86e673bca6..e9cb674da9 100644
--- a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_dark_corner.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_selector_dark_corner.xml
@@ -2,6 +2,7 @@
+ android:startColor="#2A2B38 " />
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_shape_drak_top_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_shape_drak_top_corner.xml
deleted file mode 100644
index 38ff34eb71..0000000000
--- a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1000/module_authorize_shape_drak_top_corner.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_blue_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_blue_corner.xml
new file mode 100644
index 0000000000..63144dcf3c
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_blue_corner.xml
@@ -0,0 +1,15 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/drawable/module_guide_selector_blue.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_blue_left_corner.xml
similarity index 70%
rename from modules/mogo-module-guide/src/main/res/drawable/module_guide_selector_blue.xml
rename to modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_blue_left_corner.xml
index 598aa0aa6d..9d0ac5061d 100644
--- a/modules/mogo-module-guide/src/main/res/drawable/module_guide_selector_blue.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_blue_left_corner.xml
@@ -2,14 +2,14 @@
-
-
-
+
+
-
-
-
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_dark_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_dark_corner.xml
new file mode 100644
index 0000000000..e9cb674da9
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_dark_corner.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_dark_right_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_dark_right_corner.xml
new file mode 100644
index 0000000000..086f0e93fa
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_selector_dark_right_corner.xml
@@ -0,0 +1,15 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_shape_top_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_shape_top_corner.xml
new file mode 100644
index 0000000000..47a3428433
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/drawable-xhdpi-1920x1080/module_authorize_shape_top_corner.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_corner.xml
index c2d1fec152..63144dcf3c 100644
--- a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_corner.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_corner.xml
@@ -2,14 +2,14 @@
-
-
-
+
+
-
-
-
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_left_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_left_corner.xml
index 6399ca294a..536fc2c742 100644
--- a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_left_corner.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_blue_left_corner.xml
@@ -3,13 +3,13 @@
-
-
+
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_dark_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_dark_corner.xml
index 1b8bbd3159..c366e79eea 100644
--- a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_dark_corner.xml
+++ b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_selector_dark_corner.xml
@@ -2,6 +2,7 @@
+ android:startColor="#2A2B38" />
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_shape_drak_top_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_shape_drak_top_corner.xml
deleted file mode 100644
index 0f2dab89cb..0000000000
--- a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_shape_drak_top_corner.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_shape_top_corner.xml b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_shape_top_corner.xml
new file mode 100644
index 0000000000..47e186f1e7
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/drawable/module_authorize_shape_top_corner.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml b/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml
index f3d940ee26..e3a16367f6 100644
--- a/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml
+++ b/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1000/module_authorize_fragment.xml
@@ -207,4 +207,4 @@
app:layout_constraintTop_toTopOf="parent" />
-
\ No newline at end of file
+
diff --git a/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1080/module_authorize_fragment.xml b/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1080/module_authorize_fragment.xml
new file mode 100644
index 0000000000..1642421fb0
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/layout-xhdpi-1920x1080/module_authorize_fragment.xml
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml b/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml
index c8b7f7aa56..1642421fb0 100644
--- a/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml
+++ b/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml
@@ -4,16 +4,16 @@
android:id="@+id/clAuthorizeTopParent"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#CC000000">
+ android:background="@color/module_authorize_color">
@@ -57,10 +57,10 @@
android:id="@+id/clLoadingErrorContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginLeft="@dimen/dp_330"
- android:layout_marginTop="@dimen/dp_90"
- android:layout_marginRight="@dimen/dp_330"
- android:layout_marginBottom="@dimen/dp_90"
+ android:layout_marginLeft="@dimen/dp_275"
+ android:layout_marginTop="@dimen/dp_125"
+ android:layout_marginRight="@dimen/dp_275"
+ android:layout_marginBottom="@dimen/dp_125"
android:background="@drawable/module_authorize_selector_dark_corner"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
@@ -69,22 +69,22 @@
@@ -108,10 +108,10 @@
android:id="@+id/clAuthorizeContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginLeft="@dimen/dp_330"
- android:layout_marginTop="@dimen/dp_90"
- android:layout_marginRight="@dimen/dp_330"
- android:layout_marginBottom="@dimen/dp_90"
+ android:layout_marginLeft="@dimen/dp_275"
+ android:layout_marginTop="@dimen/dp_125"
+ android:layout_marginRight="@dimen/dp_275"
+ android:layout_marginBottom="@dimen/dp_125"
android:background="@drawable/module_authorize_selector_dark_corner"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
@@ -125,7 +125,7 @@
android:background="@drawable/module_authorize_selector_blue_left_corner"
android:gravity="center"
android:text="@string/module_authorize_agreement_agree"
- android:textColor="@android:color/white"
+ android:textColor="@color/module_authorize_affirm_text"
android:textSize="@dimen/dp_55"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
@@ -139,7 +139,7 @@
android:background="@drawable/module_authorize_selector_dark_right_corner"
android:gravity="center"
android:text="@string/module_authorize_agreement_disagree"
- android:textColor="@android:color/white"
+ android:textColor="@color/module_authorize_text"
android:textSize="@dimen/dp_55"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
@@ -149,19 +149,18 @@
+ app:layout_constraintTop_toBottomOf="@+id/clAuthorizeTitle">
@@ -171,7 +170,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:lineSpacingExtra="@dimen/dp_15"
- android:textColor="@android:color/white"
+ android:textColor="@color/module_authorize_text"
android:textSize="@dimen/dp_44" />
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1000/module_authorize_title_left_symbol.png b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1000/module_authorize_title_left_symbol.png
new file mode 100644
index 0000000000..f2db41b61e
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1000/module_authorize_title_left_symbol.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1000/module_authorize_title_right_symbol.png b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1000/module_authorize_title_right_symbol.png
new file mode 100644
index 0000000000..cfea3c214b
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1000/module_authorize_title_right_symbol.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_loading_error.png b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_loading_error.png
new file mode 100644
index 0000000000..ea0bf284ed
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_loading_error.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_title_left_symbol.png b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_title_left_symbol.png
new file mode 100644
index 0000000000..f2db41b61e
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_title_left_symbol.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_title_right_symbol.png b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_title_right_symbol.png
new file mode 100644
index 0000000000..cfea3c214b
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap-xhdpi-1920x1080/module_authorize_title_right_symbol.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_loading_error.png b/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_loading_error.png
index 99343b84d3..c38cb07edd 100644
Binary files a/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_loading_error.png and b/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_loading_error.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_title_left_symbol.png b/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_title_left_symbol.png
new file mode 100644
index 0000000000..93005a1e4c
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_title_left_symbol.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_title_right_symbol.png b/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_title_right_symbol.png
new file mode 100644
index 0000000000..7411ef84c6
Binary files /dev/null and b/modules/mogo-module-authorize/src/main/res/mipmap/module_authorize_title_right_symbol.png differ
diff --git a/modules/mogo-module-authorize/src/main/res/values/colors.xml b/modules/mogo-module-authorize/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..5886e84810
--- /dev/null
+++ b/modules/mogo-module-authorize/src/main/res/values/colors.xml
@@ -0,0 +1,7 @@
+
+
+ #99FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #7F000000
+
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/glide/SkinAbleBitmapTarget.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/glide/SkinAbleBitmapTarget.java
new file mode 100644
index 0000000000..c80c227e8e
--- /dev/null
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/glide/SkinAbleBitmapTarget.java
@@ -0,0 +1,71 @@
+package com.mogo.module.common.glide;
+
+import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.bumptech.glide.request.RequestOptions;
+import com.bumptech.glide.request.target.SimpleTarget;
+import com.bumptech.glide.request.transition.Transition;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/2
+ *
+ * 描述
+ */
+class SkinAbleBitmapTarget extends SimpleTarget< Bitmap > {
+
+ private ImageView mTarget;
+ private RequestOptions mOptions;
+
+ public SkinAbleBitmapTarget( ImageView mTarget, RequestOptions mOptions ) {
+ super();
+ this.mTarget = mTarget;
+ this.mOptions = mOptions;
+ }
+
+ @Override
+ public void onResourceReady( @NonNull Bitmap resource, @Nullable Transition< ? super Bitmap > transition ) {
+ try {
+ mTarget.setImageResource( 0 );
+ mTarget.setImageBitmap(resource);
+ } catch( Exception e ){
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onLoadCleared( @Nullable Drawable placeholder ) {
+ super.onLoadCleared( placeholder );
+ try {
+ mTarget.setImageResource( mOptions.getPlaceholderId() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onLoadStarted( @Nullable Drawable placeholder ) {
+ super.onLoadStarted( placeholder );
+ try {
+ mTarget.setImageResource( mOptions.getPlaceholderId() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onLoadFailed( @Nullable Drawable errorDrawable ) {
+ super.onLoadFailed( errorDrawable );
+ try {
+ mTarget.setImageResource( mOptions.getErrorId() );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_round_gray.xml b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_dlg_round_bkg.xml
similarity index 73%
rename from modules/mogo-module-common/src/main/res/drawable/module_commons_shape_round_gray.xml
rename to modules/mogo-module-common/src/main/res/drawable/module_commons_shape_dlg_round_bkg.xml
index f4bb94cb0a..98f1fc7633 100644
--- a/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_round_gray.xml
+++ b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_dlg_round_bkg.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/modules/mogo-module-common/src/main/res/drawable/moddule_commons_shape_react_blue_grident.xml b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_left_btn_bkg.xml
similarity index 100%
rename from modules/mogo-module-common/src/main/res/drawable/moddule_commons_shape_react_blue_grident.xml
rename to modules/mogo-module-common/src/main/res/drawable/module_commons_shape_left_btn_bkg.xml
diff --git a/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_react_gray_grident.xml b/modules/mogo-module-common/src/main/res/drawable/module_commons_shape_right_btn_bkg.xml
similarity index 100%
rename from modules/mogo-module-common/src/main/res/drawable/module_commons_shape_react_gray_grident.xml
rename to modules/mogo-module-common/src/main/res/drawable/module_commons_shape_right_btn_bkg.xml
diff --git a/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml b/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml
index bec43b7c93..b4aaabda53 100644
--- a/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml
+++ b/modules/mogo-module-common/src/main/res/layout/module_commons_layout_wm_dialog.xml
@@ -4,14 +4,14 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#7f000000"
+ android:background="@color/module_commons_dlg_bkg"
android:layout_gravity="center">
+ android:background="@drawable/module_commons_shape_dlg_round_bkg">
40px
42px
48px
+ -10px
diff --git a/modules/mogo-module-common/src/main/res/values/colors.xml b/modules/mogo-module-common/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..993e412000
--- /dev/null
+++ b/modules/mogo-module-common/src/main/res/values/colors.xml
@@ -0,0 +1,5 @@
+
+
+ #7f000000
+ #FFFFFF
+
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/res/values/dimens.xml b/modules/mogo-module-common/src/main/res/values/dimens.xml
index 111cf6ee25..1e2c7b1cdc 100644
--- a/modules/mogo-module-common/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-common/src/main/res/values/dimens.xml
@@ -1043,4 +1043,5 @@
21.8750px
22.9688px
26.2500px
+ -8px
diff --git a/modules/mogo-module-common/src/main/res/values/styles.xml b/modules/mogo-module-common/src/main/res/values/styles.xml
index 5810a99910..10ca997feb 100644
--- a/modules/mogo-module-common/src/main/res/values/styles.xml
+++ b/modules/mogo-module-common/src/main/res/values/styles.xml
@@ -5,7 +5,7 @@
- @null
- true
- @android:color/transparent
- - 0.85
+ - 0.4
- true
- @null
- @android:color/transparent
diff --git a/modules/mogo-module-extensions/build.gradle b/modules/mogo-module-extensions/build.gradle
index e9737fc1a3..db3c0ee1a4 100644
--- a/modules/mogo-module-extensions/build.gradle
+++ b/modules/mogo-module-extensions/build.gradle
@@ -32,6 +32,12 @@ android {
sourceCompatibility 1.8
}
+ sourceSets {
+ main {
+ res.srcDirs = ['src/main/res', 'src/main/res-light']
+ }
+ }
+
}
dependencies {
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java
index 5dd939ff67..17078499eb 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java
@@ -2,6 +2,8 @@ package com.mogo.module.extensions.bean;
import android.view.View;
+import java.util.Objects;
+
/**
* 底层view封装
*
@@ -12,7 +14,8 @@ public class BottomLayerViewWrapper {
private int x;
private int y;
- public BottomLayerViewWrapper(){}
+ public BottomLayerViewWrapper() {
+ }
public BottomLayerViewWrapper(View view, int x, int y) {
this.view = view;
@@ -20,6 +23,25 @@ public class BottomLayerViewWrapper {
this.y = y;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ BottomLayerViewWrapper wrapper = (BottomLayerViewWrapper) o;
+ return x == wrapper.x &&
+ y == wrapper.y &&
+ view.equals(wrapper.view);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(view);
+ }
+
public View getView() {
return view;
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
index 827f9320e1..d1f640ec5a 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
@@ -1,6 +1,5 @@
package com.mogo.module.extensions.entrance;
-import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
@@ -9,15 +8,16 @@ import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.constraintlayout.widget.ConstraintSet;
import com.alibaba.android.arouter.launcher.ARouter;
+import com.bumptech.glide.request.RequestOptions;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.mvp.MvpFragment;
@@ -33,6 +33,7 @@ import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.dialog.WMDialog;
+import com.mogo.module.common.glide.SkinAbleBitmapTarget;
import com.mogo.module.common.map.CustomNaviInterrupter;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
@@ -47,6 +48,7 @@ import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.entrance.ButtonIndex;
+import com.mogo.service.fragmentmanager.IFragmentProvider;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.map.IMogoMapService;
@@ -57,6 +59,8 @@ import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.LaunchUtils;
import com.mogo.utils.ResourcesHelper;
+import com.mogo.utils.TipDrawable;
+import com.mogo.utils.TipToast;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.glide.GlideApp;
import com.mogo.utils.logger.Logger;
@@ -65,7 +69,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Random;
-
/**
* @author congtaowang
* @since 2020-01-07
@@ -78,7 +81,7 @@ public class EntranceFragment extends MvpFragment {
final MogoLocation location = mMogoLocationClient.getLastKnowLocation();
if (location != null) {
- if (!mStatusManager.isV2XShow()) {
- mStatusManager.setUserInteractionStatus(TAG, true, false);
- mMApUIController.setLockZoom(16);
- mMApUIController.changeZoom(16.0f);
- }
if (mStatusManager.isDisplayOverview()) {
mStatusManager.setDisplayOverview(TAG, false);
UiThreadHandler.removeCallbacks(mLockCarRunnable);
@@ -209,7 +207,7 @@ public class EntranceFragment extends MvpFragment{
+ mUploadRoadCondition.setOnLongClickListener(view -> {
mApis.getMogoMonitorApi().showLogDebugDialog();
return true;
});
@@ -293,7 +291,12 @@ public class EntranceFragment extends MvpFragment {
- ARouter.getInstance().build("/push/ui/message").navigation(getContext());
+ try {
+ IFragmentProvider provider = (IFragmentProvider)ARouter.getInstance().build("/push/ui/message").navigation(getContext());
+ provider.createFragment( getActivity(), mMogoFragmentManager.getMessageHistoryContainerId(), null );
+ } catch( Exception e ){
+
+ }
});
mMsgCounter = findViewById(R.id.module_ext_id_msg_counter);
mUserHeadImg.setOnClickListener(view -> {
@@ -302,7 +305,8 @@ public class EntranceFragment extends MvpFragment properties = new HashMap<>();
properties.put("type", 3);
- ServiceApisManager.serviceApis.getAnalyticsApi().track("Launcher_APP_Icon", properties);
+ ServiceApisManager.serviceApis.getAnalyticsApi().track("Launcher_APP_Icon",
+ properties);
} catch (Exception e) {
Logger.e(TAG, e, "打开个人中心Exception");
}
@@ -310,18 +314,36 @@ public class EntranceFragment extends MvpFragment{
+ findViewById(R.id.btnDebugAddBottomLayerView).setOnClickListener(v -> {
TextView tv = new TextView(getContext());
tv.setText("entrance add");
mApis.getEntranceButtonController().addBottomLayerView(tv, 50, 50);
});
+ findViewById(R.id.btnShowTextTip).setOnClickListener(v-> TipToast.tip("分享成功"));
+
+ findViewById(R.id.btnShowDrawableTip).setOnClickListener(v->{
+ mMsgContainer.setVisibility(View.VISIBLE);
+ TipDrawable drawable =
+ new TipDrawable(getResources().getDrawable(R.drawable.model_ext_default_user_head), 150, 150);
+ TipToast.tip("分享成功",drawable);
+ });
+
+ findViewById(R.id.btnShowDrawableTipNoSize).setOnClickListener(v->{
+ mMsgContainer.setVisibility(View.GONE);
+ TipDrawable drawable =
+ new TipDrawable(getResources().getDrawable(R.drawable.model_ext_default_user_head));
+ TipToast.tip("分享成功",drawable);
+ });
}
@Override
- public void onMapModeChanged( EnumMapUI ui ) {
- if ( mCameraMode == null ) {
+ public void onMapModeChanged(EnumMapUI ui) {
+ if (mCameraMode == null) {
return;
}
mCameraMode.setSelected(ui == EnumMapUI.NorthUP_2D);
- mCameraMode.setText(getString(ui == EnumMapUI.NorthUP_2D ? R.string.mode_car_up : R.string.mode_north_up));
+ mCameraMode.setText(getString(ui == EnumMapUI.NorthUP_2D ? R.string.mode_car_up :
+ R.string.mode_north_up));
}
@Override
public void onDestroy() {
super.onDestroy();
- if ( mMogoRegisterCenter != null ) {
+ if (mMogoRegisterCenter != null) {
mMogoRegisterCenter.unregisterMogoNaviListener(ExtensionsModuleConst.TYPE_ENTRANCE);
mMogoRegisterCenter.unregisterMogoMapListener(ExtensionsModuleConst.TYPE_ENTRANCE);
mMogoRegisterCenter.unregisterMogoAimlessModeListener(TAG);
}
- if ( mStatusManager != null ) {
+ if (mStatusManager != null) {
mStatusManager.unregisterStatusChangedListener(TAG, StatusDescriptor.UPLOADING, this);
- mStatusManager.unregisterStatusChangedListener(TAG, StatusDescriptor.DISPLAY_OVERVIEW, this);
+ mStatusManager.unregisterStatusChangedListener(TAG, StatusDescriptor.DISPLAY_OVERVIEW
+ , this);
}
- if ( mApis != null ) {
- if ( mApis.getIntentManagerApi() != null ) {
+ if (mApis != null) {
+ if (mApis.getIntentManagerApi() != null) {
mApis.getIntentManagerApi().unregisterIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV, this);
}
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
index b35687f42c..a9f64ad4a7 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
@@ -58,12 +58,26 @@ public class EntranceViewHolder {
"\n x: " + x + ", y: " + y);
BottomLayerViewWrapper wrapper = new BottomLayerViewWrapper(view, x, y);
if(rootViewGroup == null) {
- preAddView.add(wrapper);
+ if(!preAddView.contains(wrapper)) {
+ preAddView.add(wrapper);
+ }
}else{
- realAddView(wrapper);
+ if(!containView(view)) {
+ realAddView(wrapper);
+ }
}
}
+ private boolean containView(View view) {
+ int count = rootViewGroup.getChildCount();
+ for (int i = 0; i < count; i++) {
+ if(rootViewGroup.getChildAt(i).equals(view)){
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* 使用的时候需要预先判断rootViewGroup是否为空,本方法默认rootViewGroup不为空
*/
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
index 37ba24720c..465e2dbf3c 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
@@ -671,6 +671,7 @@ public class TopViewAnimHelper {
viewCaches.remove(child);
IMogoTopViewStatusListener listener = statusListenerMap.remove(child);
if (listener != null) {
+ listener.beforeViewRemoveAnim(child);
listener.onViewRemoved(child);
}
}
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_message2.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_message2.png
new file mode 100755
index 0000000000..b6f6c4dd25
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_ic_message2.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_shadow_bkg.9.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_shadow_bkg.9.png
new file mode 100644
index 0000000000..a4c313e353
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_ext_shadow_bkg.9.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_map_ic_move2_current_location.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_map_ic_move2_current_location.png
index c1183aff8d..b542105123 100644
Binary files a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_map_ic_move2_current_location.png and b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/module_map_ic_move2_current_location.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_ext_ic_message2.png b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_ext_ic_message2.png
new file mode 100755
index 0000000000..b6f6c4dd25
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_ext_ic_message2.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_ext_shadow_bkg.9.png b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_ext_shadow_bkg.9.png
new file mode 100644
index 0000000000..e73d76936f
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_ext_shadow_bkg.9.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_map_ic_move2_current_location.png b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_map_ic_move2_current_location.png
index c1183aff8d..b542105123 100644
Binary files a/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_map_ic_move2_current_location.png and b/modules/mogo-module-extensions/src/main/res/drawable-mdpi/module_map_ic_move2_current_location.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png
old mode 100644
new mode 100755
index 10f53d3374..b697913af8
Binary files a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message2.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_shadow_bkg.9.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_shadow_bkg.9.png
new file mode 100644
index 0000000000..239b9eb114
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_shadow_bkg.9.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_map_ic_move2_current_location.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_map_ic_move2_current_location.png
index 9d3d1e8b2a..8c8ce20e1d 100644
Binary files a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_map_ic_move2_current_location.png and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_map_ic_move2_current_location.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml
index 12a3b15758..f5b8b562ee 100644
--- a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml
+++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_container_bkg.xml
@@ -2,7 +2,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml
index 90fb7a2eaf..c710e38f52 100644
--- a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml
+++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_weather_bkg.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_shadow_bkg.9.png b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_shadow_bkg.9.png
new file mode 100644
index 0000000000..a4c313e353
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_shadow_bkg.9.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
index 495a892b37..b84ccdcde8 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
@@ -14,7 +14,8 @@
+ android:layout_height="wrap_content"
+ />
-
-
-
-
-
+ app:layout_constraintRight_toRightOf="parent" />
+
+
+
+
+
+
+ app:constraint_referenced_ids="btnShowDrawableTipNoSize,btnShowDrawableTip,btnShowTextTip,btnDebugCtrlNaviView,btnDebugCtrlSubView,btnDebugCtrlTopView,btnDebugAddBottomLayerView" />
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
index 222f293173..d4118d06e7 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
@@ -1,21 +1,23 @@
+
+
-
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:visibility="visible">
@@ -55,15 +63,13 @@
android:id="@+id/module_ext_id_msg_counter"
android:layout_width="@dimen/module_ext_msg_counter_width"
android:layout_height="@dimen/module_ext_msg_counter_height"
- android:layout_gravity="center"
- android:layout_marginLeft="@dimen/module_ext_msg_dot_marginLeft"
- android:layout_marginBottom="@dimen/module_ext_msg_dot_marginRight"
android:background="@drawable/module_ext_drawable_msg_bkg"
android:gravity="center"
+ android:layout_alignParentRight="true"
android:textColor="#FFFFFF"
android:textSize="@dimen/module_ext_msg_counter_textSize"
tools:text="···" />
-
+
+ app:layout_constraintTop_toTopOf="parent"
+ tools:visibility="visible" />
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml
new file mode 100644
index 0000000000..833a7c43be
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml
@@ -0,0 +1,4 @@
+
+
+ 26px
+
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml
index ad9dc6d8fb..0304873cfe 100644
--- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml
@@ -18,6 +18,7 @@
54px
100px
90px
+ 8px
180px
180px
@@ -54,7 +55,7 @@
20px
- 100px
+ 120px
60px
60px
32px
@@ -144,4 +145,5 @@
20px
40px
+ 45px
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml
index 7423964cdd..6e8de9e26f 100644
--- a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml
@@ -18,6 +18,7 @@
54px
100px
90px
+ 8px
180px
180px
@@ -54,7 +55,7 @@
20px
- 100px
+ 140px
60px
60px
32px
@@ -82,8 +83,8 @@
144px
159px
159px
- 70px
- 70px
+ 72px
+ 72px
56px
83px
24px
@@ -139,9 +140,12 @@
90px
6dp
15px
- 4px
+ 8px
10px
20px
34px
+ 175px
+ 30px
+ 45px
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values/colors.xml b/modules/mogo-module-extensions/src/main/res/values/colors.xml
index 550f80dff1..615814606a 100644
--- a/modules/mogo-module-extensions/src/main/res/values/colors.xml
+++ b/modules/mogo-module-extensions/src/main/res/values/colors.xml
@@ -1,4 +1,6 @@
#FFFFFF
+ #BF30334C
+ #fff
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml
index 26b9b2c5fe..2f344bce6f 100644
--- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml
@@ -56,10 +56,12 @@
8px
- 56px
+ 82px
32px
32px
+ 90px
+
22px
28px
22px
@@ -69,6 +71,7 @@
24px
18px
18.48px
+ 5px
16px
22px
16px
@@ -148,4 +151,7 @@
10px
19px
+ 16px
+ 26px
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/build.gradle b/modules/mogo-module-guide/build.gradle
index bc18471261..44fa50b8ed 100644
--- a/modules/mogo-module-guide/build.gradle
+++ b/modules/mogo-module-guide/build.gradle
@@ -52,6 +52,7 @@ dependencies {
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.aspectj
+ implementation rootProject.ext.dependencies.indicator
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogoutils
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/GuideBizManager.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/GuideBizManager.kt
index 789757ee9d..ce741dde37 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/GuideBizManager.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/GuideBizManager.kt
@@ -29,8 +29,9 @@ object GuideBizManager {
private fun initService() {
val mogoService = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation()
- if (mogoService is IMogoServiceApis) {
+ if (mogoService is IMogoServiceApis && serviceApi == null) {
serviceApi = mogoService
+ serviceApi?.adasControllerApi?.closeADAS()
}
}
@@ -50,6 +51,7 @@ object GuideBizManager {
serviceApi?.let {
it.fragmentManagerApi.pop()
}
+ serviceApi?.adasControllerApi?.showADAS()
}
fun invokeAuthorize() {
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/MogoGuideProvider.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/MogoGuideProvider.kt
index a9ed8285cd..6258977faa 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/MogoGuideProvider.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/MogoGuideProvider.kt
@@ -12,7 +12,6 @@ import com.mogo.map.navi.IMogoNaviListener
import com.mogo.module.guide.GuideConstant.Companion.PATH_GUIDE_FRAGMENT
import com.mogo.module.guide.GuideConstant.Companion.PATH_GUIDE_MODULE_NAME
import com.mogo.module.guide.util.isDeviceOfD
-import com.mogo.service.module.IMogoModuleLifecycle
import com.mogo.service.module.IMogoModuleProvider
import com.mogo.service.module.ModuleType
import com.mogo.utils.UiThreadHandler
@@ -36,10 +35,6 @@ class MogoGuideProvider : IMogoModuleProvider {
return PATH_GUIDE_MODULE_NAME
}
- override fun getCardLifecycle(): IMogoModuleLifecycle? {
- return null
- }
-
override fun getMapListener(): IMogoMapListener? {
return null
}
@@ -62,9 +57,7 @@ class MogoGuideProvider : IMogoModuleProvider {
override fun init(context: Context?) {
if (isDeviceOfD()) {
- UiThreadHandler.postDelayed({
- GuideBizManager.init()
- }, 5000L)
+ GuideBizManager.init()
} else {
Logger.d("MogoGuideProvider", "device type is not D")
}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideAdapter.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideAdapter.kt
index de1b0d7e81..af3660c13e 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideAdapter.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideAdapter.kt
@@ -17,23 +17,19 @@ class GuideAdapter(fragmentActivity: GuideFragment) : FragmentStateAdapter(fragm
private val guideList: MutableList = mutableListOf()
companion object {
- const val GUIDE_PAGE_START = 0
- const val GUIDE_PAGE_CARD = 1
- const val GUIDE_PAGE_ONLINE_CAR = 2
- const val GUIDE_PAGE_NAVIGATION = 3
- const val GUIDE_PAGE_LOCATION = 4
- const val GUIDE_PAGE_APP_LIST = 5
- const val GUIDE_PAGE_ENTRY_MAIN = 6
+ const val GUIDE_PAGE_ONE = 0
+ const val GUIDE_PAGE_TWO = 1
+ const val GUIDE_PAGE_THREE = 2
+ const val GUIDE_PAGE_FOUR = 3
+ const val GUIDE_PAGE_FIVE = 4
}
init {
- guideList.add(GUIDE_PAGE_START, GuideStartFragment(fragmentActivity))
- guideList.add(GUIDE_PAGE_CARD, GuideCardFragment(fragmentActivity))
- guideList.add(GUIDE_PAGE_ONLINE_CAR, GuideOnLineCarFragment(fragmentActivity))
- guideList.add(GUIDE_PAGE_NAVIGATION, GuideNavigationFragment(fragmentActivity))
- guideList.add(GUIDE_PAGE_LOCATION, GuideLocationFragment(fragmentActivity))
- guideList.add(GUIDE_PAGE_APP_LIST, GuideAppListFragment(fragmentActivity))
- guideList.add(GUIDE_PAGE_ENTRY_MAIN, GuideEntryMainFragment(fragmentActivity))
+ guideList.add(GUIDE_PAGE_ONE, GuideStageOneFragment(fragmentActivity))
+ guideList.add(GUIDE_PAGE_TWO, GuideStageTwoFragment(fragmentActivity))
+ guideList.add(GUIDE_PAGE_THREE, GuideStageThreeFragment(fragmentActivity))
+ guideList.add(GUIDE_PAGE_FOUR, GuideStageFourFragment(fragmentActivity))
+ guideList.add(GUIDE_PAGE_FIVE, GuideStageFiveFragment(fragmentActivity))
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt
index ef2d876f63..4bc53f8531 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt
@@ -1,10 +1,19 @@
package com.mogo.module.guide.fragment
+import android.view.View
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager2.widget.ViewPager2
import com.mogo.commons.mvp.MvpFragment
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.module.guide.GuideBizManager
import com.mogo.module.guide.R
+import com.mogo.module.guide.util.speak
import com.mogo.utils.logger.Logger
+import com.zhpan.indicator.enums.IndicatorSlideMode
+import com.zhpan.indicator.enums.IndicatorStyle
import kotlinx.android.synthetic.main.module_guide_fragment.*
+import kotlinx.android.synthetic.main.module_guide_item_include.*
+
class GuideFragment : MvpFragment(), GuideConstract.View {
@@ -26,6 +35,38 @@ class GuideFragment : MvpFragment(), GuideC
Logger.d(TAG, "init Views")
adapter = GuideAdapter(this)
moduleGuideViewPager.adapter = adapter
+ (moduleGuideViewPager.getChildAt(0) as RecyclerView).layoutManager!!.isItemPrefetchEnabled = false
+ moduleGuideIndicator.setSliderColor(context!!.resources.getColor(R.color.module_guide_indicator_dark),context!!.resources.getColor(R.color.module_guide_indicator_white))
+ .setSliderWidth(context!!.resources.getDimension(R.dimen.dp_22))
+ .setSlideMode(IndicatorSlideMode.NORMAL)
+ .setIndicatorStyle(IndicatorStyle.CIRCLE)
+ .setupWithViewPager(moduleGuideViewPager)
+ visibleRight()
+ module_guide_page_left.setOnClickListener {
+ moveToBack()
+ }
+ module_guide_page_right.setOnClickListener {
+ moveToNext()
+ }
+ module_guide_tv_jump.setOnClickListener {
+ closeGuideFragment()
+ }
+ }
+
+ fun visibleLeft(){
+ module_guide_page_left.visibility = View.VISIBLE
+ }
+
+ fun invisibleLeft(){
+ module_guide_page_left.visibility = View.GONE
+ }
+
+ fun visibleRight(){
+ module_guide_page_right.visibility = View.VISIBLE
+ }
+
+ fun invisibleRight(){
+ module_guide_page_right.visibility = View.GONE
}
fun moveToNext() {
@@ -35,8 +76,12 @@ class GuideFragment : MvpFragment(), GuideC
}
}
- fun moveToLast() {
- moduleGuideViewPager.setCurrentItem(adapter!!.itemCount, false)
+ private fun moveToBack() {
+ val count = adapter?.itemCount
+ val backCount = moduleGuideViewPager.currentItem - 1
+ if (moduleGuideViewPager.currentItem != count) {
+ moduleGuideViewPager.currentItem = backCount
+ }
}
fun closeGuideFragment() {
@@ -45,6 +90,11 @@ class GuideFragment : MvpFragment(), GuideC
}
private fun destroy() {
+ speak(context!!,context!!.resources.getString(R.string.module_guide_voice_page_end),object : IMogoVoiceCmdCallBack {
+ override fun onTTSEnd(ttsId: String?, tts: String?) {
+
+ }
+ })
GuideBizManager.removeGuideFragmentToStack()
}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideAppListFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideAppListFragment.kt
deleted file mode 100644
index 2bd448fc24..0000000000
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideAppListFragment.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.mogo.module.guide.guide
-
-import android.view.View
-import com.mogo.commons.mvp.IView
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.commons.mvp.Presenter
-import com.mogo.module.guide.R
-import com.mogo.module.guide.fragment.GuideFragment
-import com.mogo.module.guide.util.AnalyticsUtil
-import kotlinx.android.synthetic.main.module_guide_item_app_list.*
-
-class GuideAppListFragment : MvpFragment>, View.OnClickListener {
-
- private var containerFragment: GuideFragment? = null
-
- constructor(containerFragment: GuideFragment) {
- this.containerFragment = containerFragment
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_guide_item_app_list
- }
-
- override fun createPresenter(): Presenter {
- return GuideAppListPresenter(this)
- }
-
- override fun initViews() {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 6))
- moduleGuideAppListNext.setOnClickListener(this)
- moduleGuideAppListSkip.setOnClickListener(this)
- }
-
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideAppListNext -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 6, "button_type" to 1))
- containerFragment?.moveToNext()
- }
- R.id.moduleGuideAppListSkip -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 6, "button_type" to 2))
- containerFragment?.moveToLast()
- }
- }
- }
-
- class GuideAppListPresenter : Presenter {
-
- constructor(view: IView?) : super(view)
- }
-
-}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideCardFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideCardFragment.kt
deleted file mode 100644
index aef2a84ef7..0000000000
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideCardFragment.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.mogo.module.guide.guide
-
-import android.view.View
-import com.mogo.commons.mvp.IView
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.commons.mvp.Presenter
-import com.mogo.module.guide.R
-import com.mogo.module.guide.fragment.GuideFragment
-import com.mogo.module.guide.util.AnalyticsUtil
-import com.mogo.module.guide.util.AnalyticsUtil.INVOKE_TRACK_CLICK
-import com.mogo.module.guide.util.AnalyticsUtil.INVOKE_TRACK_SHOW
-import kotlinx.android.synthetic.main.module_guide_item_card.*
-
-class GuideCardFragment : MvpFragment>, View.OnClickListener {
-
- private var containerFragment: GuideFragment? = null
-
- constructor(containerFragment: GuideFragment) {
- this.containerFragment = containerFragment
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_guide_item_card
- }
-
- override fun createPresenter(): Presenter {
- return GuideCardPresenter(this)
- }
-
- override fun initViews() {
- AnalyticsUtil.track(INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 2))
- moduleGuideCardNext.setOnClickListener(this)
- moduleGuideCardSkip.setOnClickListener(this)
- }
-
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideCardNext -> {
- AnalyticsUtil.track(INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 2, "button_type" to 1))
- containerFragment?.moveToNext()
- }
- R.id.moduleGuideCardSkip -> {
- AnalyticsUtil.track(INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 2, "button_type" to 2))
- containerFragment?.moveToLast()
- }
- }
- }
-
- class GuideCardPresenter : Presenter {
-
- constructor(view: IView?) : super(view)
- }
-
-}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideEntryMainFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideEntryMainFragment.kt
deleted file mode 100644
index b5217ff094..0000000000
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideEntryMainFragment.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.mogo.module.guide.guide
-
-import android.view.View
-import com.mogo.commons.mvp.IView
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.commons.mvp.Presenter
-import com.mogo.module.guide.R
-import com.mogo.module.guide.fragment.GuideFragment
-import com.mogo.module.guide.util.AnalyticsUtil
-import kotlinx.android.synthetic.main.module_guide_item_entry_main.*
-
-class GuideEntryMainFragment : MvpFragment>, View.OnClickListener {
-
- private var containerFragment: GuideFragment? = null
-
- constructor(containerFragment: GuideFragment) {
- this.containerFragment = containerFragment
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_guide_item_entry_main
- }
-
- override fun createPresenter(): Presenter {
- return GuideEntryPresenter(this)
- }
-
- override fun initViews() {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 7))
- moduleGuideEntryMain.setOnClickListener(this)
- }
-
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideEntryMain -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 7, "button_type" to 3))
- containerFragment?.closeGuideFragment()
- }
- }
- }
-
- class GuideEntryPresenter : Presenter {
-
- constructor(view: IView?) : super(view)
- }
-
-}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideLocationFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideLocationFragment.kt
deleted file mode 100644
index 9068ac8ece..0000000000
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideLocationFragment.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.mogo.module.guide.guide
-
-import android.view.View
-import com.mogo.commons.mvp.IView
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.commons.mvp.Presenter
-import com.mogo.module.guide.R
-import com.mogo.module.guide.fragment.GuideFragment
-import com.mogo.module.guide.util.AnalyticsUtil
-import kotlinx.android.synthetic.main.module_guide_item_location.*
-
-class GuideLocationFragment : MvpFragment>, View.OnClickListener {
-
- private var containerFragment: GuideFragment? = null
-
- constructor(containerFragment: GuideFragment) {
- this.containerFragment = containerFragment
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_guide_item_location
- }
-
- override fun createPresenter(): Presenter {
- return GuideLocationPresenter(this)
- }
-
- override fun initViews() {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 5))
- moduleGuideLocationNext.setOnClickListener(this)
- moduleGuideLocationSkip.setOnClickListener(this)
- }
-
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideLocationNext -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 5, "button_type" to 1))
- containerFragment?.moveToNext()
- }
- R.id.moduleGuideLocationSkip -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 5, "button_type" to 2))
- containerFragment?.moveToLast()
- }
- }
- }
-
- class GuideLocationPresenter : Presenter {
-
- constructor(view: IView?) : super(view)
- }
-
-}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideNavigationFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideNavigationFragment.kt
deleted file mode 100644
index f5ea2fd476..0000000000
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideNavigationFragment.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.mogo.module.guide.guide
-
-import android.view.View
-import com.mogo.commons.mvp.IView
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.commons.mvp.Presenter
-import com.mogo.module.guide.R
-import com.mogo.module.guide.fragment.GuideFragment
-import com.mogo.module.guide.util.AnalyticsUtil
-import kotlinx.android.synthetic.main.module_guide_item_navigation.*
-
-class GuideNavigationFragment : MvpFragment>, View.OnClickListener {
-
- private var containerFragment: GuideFragment? = null
-
- constructor(containerFragment: GuideFragment) {
- this.containerFragment = containerFragment
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_guide_item_navigation
- }
-
- override fun createPresenter(): Presenter {
- return GuideNavigationPresenter(this)
- }
-
- override fun initViews() {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 4))
- moduleGuideNavigationNext.setOnClickListener(this)
- moduleGuideNavigationSkip.setOnClickListener(this)
- }
-
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideNavigationNext -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 4, "button_type" to 1))
- containerFragment?.moveToNext()
- }
- R.id.moduleGuideNavigationSkip -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 4, "button_type" to 2))
- containerFragment?.moveToLast()
- }
- }
- }
-
- class GuideNavigationPresenter : Presenter {
-
- constructor(view: IView?) : super(view)
- }
-
-}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideOnLineCarFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideOnLineCarFragment.kt
deleted file mode 100644
index 2d5a1edebc..0000000000
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideOnLineCarFragment.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.mogo.module.guide.guide
-
-import android.view.View
-import com.mogo.commons.mvp.IView
-import com.mogo.commons.mvp.MvpFragment
-import com.mogo.commons.mvp.Presenter
-import com.mogo.module.guide.R
-import com.mogo.module.guide.fragment.GuideFragment
-import com.mogo.module.guide.util.AnalyticsUtil
-import kotlinx.android.synthetic.main.module_guide_item_online_car.*
-
-class GuideOnLineCarFragment : MvpFragment>, View.OnClickListener {
-
- private var containerFragment: GuideFragment? = null
-
- constructor(containerFragment: GuideFragment) {
- this.containerFragment = containerFragment
- }
-
- override fun getLayoutId(): Int {
- return R.layout.module_guide_item_online_car
- }
-
- override fun createPresenter(): Presenter {
- return GuideOnLineCarPresenter(this)
- }
-
- override fun initViews() {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 3))
- moduleGuideOnLineCarNext.setOnClickListener(this)
- moduleGuideOnLineCarSkip.setOnClickListener(this)
- }
-
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideOnLineCarNext -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 3, "button_type" to 1))
- containerFragment?.moveToNext()
- }
- R.id.moduleGuideOnLineCarSkip -> {
- AnalyticsUtil.track(AnalyticsUtil.INVOKE_TRACK_CLICK, hashMapOf("pages_num" to 3, "button_type" to 2))
- containerFragment?.moveToLast()
- }
- }
- }
-
- class GuideOnLineCarPresenter : Presenter {
-
- constructor(view: IView?) : super(view)
- }
-
-}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt
new file mode 100644
index 0000000000..814a846509
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt
@@ -0,0 +1,49 @@
+package com.mogo.module.guide.guide
+
+import com.mogo.commons.mvp.IView
+import com.mogo.commons.mvp.MvpFragment
+import com.mogo.commons.mvp.Presenter
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
+import com.mogo.module.guide.R
+import com.mogo.module.guide.fragment.GuideFragment
+import com.mogo.module.guide.util.speak
+
+class GuideStageFiveFragment : MvpFragment> {
+
+ private var containerFragment: GuideFragment? = null
+
+ constructor(containerFragment: GuideFragment) {
+ this.containerFragment = containerFragment
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.module_guide_item_stage_five
+ }
+
+ override fun createPresenter(): Presenter {
+ return GuideLocationPresenter(this)
+ }
+
+ override fun initViews() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ containerFragment?.invisibleRight()
+ speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_five), object : IMogoVoiceCmdCallBack {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
+ containerFragment?.closeGuideFragment()
+ }
+ })
+ }
+
+ class GuideLocationPresenter : Presenter {
+
+ constructor(view: IView?) : super(view)
+ }
+
+}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt
new file mode 100644
index 0000000000..5770e9a986
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt
@@ -0,0 +1,50 @@
+package com.mogo.module.guide.guide
+
+import com.mogo.commons.mvp.IView
+import com.mogo.commons.mvp.MvpFragment
+import com.mogo.commons.mvp.Presenter
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
+import com.mogo.module.guide.R
+import com.mogo.module.guide.fragment.GuideFragment
+import com.mogo.module.guide.util.speak
+
+class GuideStageFourFragment : MvpFragment> {
+
+ private var containerFragment: GuideFragment? = null
+
+ constructor(containerFragment: GuideFragment) {
+ this.containerFragment = containerFragment
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.module_guide_item_stage_four
+ }
+
+ override fun createPresenter(): Presenter {
+ return GuideNavigationPresenter(this)
+ }
+
+ override fun initViews() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ containerFragment?.visibleLeft()
+ containerFragment?.visibleRight()
+ speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_four), object : IMogoVoiceCmdCallBack {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
+ containerFragment?.moveToNext()
+ }
+ })
+ }
+
+ class GuideNavigationPresenter : Presenter {
+
+ constructor(view: IView?) : super(view)
+ }
+
+}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStartFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt
similarity index 54%
rename from modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStartFragment.kt
rename to modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt
index c06da62a58..1b2aaccc94 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStartFragment.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt
@@ -1,20 +1,17 @@
package com.mogo.module.guide.guide
-import android.graphics.Color
-import android.graphics.LinearGradient
-import android.graphics.Shader
-import android.view.View
import com.mogo.commons.mvp.IView
import com.mogo.commons.mvp.MvpFragment
import com.mogo.commons.mvp.Presenter
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.module.guide.R
import com.mogo.module.guide.fragment.GuideFragment
import com.mogo.module.guide.util.AnalyticsUtil
import com.mogo.module.guide.util.AnalyticsUtil.INVOKE_TRACK_SHOW
-import kotlinx.android.synthetic.main.module_guide_item_start.*
+import com.mogo.module.guide.util.speak
-class GuideStartFragment : MvpFragment>, View.OnClickListener {
+class GuideStageOneFragment : MvpFragment> {
private var containerFragment: GuideFragment? = null
@@ -23,7 +20,7 @@ class GuideStartFragment : MvpFragment>, View.OnClickLis
}
override fun getLayoutId(): Int {
- return R.layout.module_guide_item_start
+ return R.layout.module_guide_item_stage_one
}
override fun createPresenter(): Presenter {
@@ -32,19 +29,20 @@ class GuideStartFragment : MvpFragment>, View.OnClickLis
override fun initViews() {
AnalyticsUtil.track(INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 1))
- val mLinearGradient = LinearGradient(0f, 0f, 0f, moduleGuideTvStart.paint.textSize,
- Color.parseColor("#B3B3B3"), Color.parseColor("#EBEBEB"), Shader.TileMode.CLAMP)
- moduleGuideTvStart.paint.shader = mLinearGradient
- moduleGuideTvStart.setOnClickListener(this)
- moduleGuideIvStart.setOnClickListener(this)
+ containerFragment?.visibleRight()
}
- override fun onClick(v: View) {
- when (v.id) {
- R.id.moduleGuideTvStart, R.id.moduleGuideIvStart -> {
+ override fun onResume() {
+ super.onResume()
+ containerFragment?.invisibleLeft()
+ speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_one), object : IMogoVoiceCmdCallBack {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
containerFragment?.moveToNext()
}
- }
+ })
}
class GuideStartPresenter : Presenter {
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt
new file mode 100644
index 0000000000..f8cb5fdcc3
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt
@@ -0,0 +1,50 @@
+package com.mogo.module.guide.guide
+
+import com.mogo.commons.mvp.IView
+import com.mogo.commons.mvp.MvpFragment
+import com.mogo.commons.mvp.Presenter
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
+import com.mogo.module.guide.R
+import com.mogo.module.guide.fragment.GuideFragment
+import com.mogo.module.guide.util.speak
+
+class GuideStageThreeFragment : MvpFragment> {
+
+ private var containerFragment: GuideFragment? = null
+
+ constructor(containerFragment: GuideFragment) {
+ this.containerFragment = containerFragment
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.module_guide_item_stage_three
+ }
+
+ override fun createPresenter(): Presenter {
+ return GuideOnLineCarPresenter(this)
+ }
+
+ override fun initViews() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ containerFragment?.visibleLeft()
+ containerFragment?.visibleRight()
+ speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_three), object : IMogoVoiceCmdCallBack {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
+ containerFragment?.moveToNext()
+ }
+ })
+ }
+
+ class GuideOnLineCarPresenter : Presenter {
+
+ constructor(view: IView?) : super(view)
+ }
+
+}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt
new file mode 100644
index 0000000000..862148061c
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt
@@ -0,0 +1,50 @@
+package com.mogo.module.guide.guide
+
+import com.mogo.commons.mvp.IView
+import com.mogo.commons.mvp.MvpFragment
+import com.mogo.commons.mvp.Presenter
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
+import com.mogo.module.guide.R
+import com.mogo.module.guide.fragment.GuideFragment
+import com.mogo.module.guide.util.speak
+
+class GuideStageTwoFragment : MvpFragment> {
+
+ private var containerFragment: GuideFragment? = null
+
+ constructor(containerFragment: GuideFragment) {
+ this.containerFragment = containerFragment
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.module_guide_item_stage_two
+ }
+
+ override fun createPresenter(): Presenter {
+ return GuideCardPresenter(this)
+ }
+
+ override fun initViews() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ containerFragment?.visibleLeft()
+ containerFragment?.visibleRight()
+ speak(context!!, context!!.resources.getString(R.string.module_guide_voice_page_two), object : IMogoVoiceCmdCallBack {
+ override fun onSpeakEnd(speakText: String?) {
+ if(!isVisible){
+ return
+ }
+ containerFragment?.moveToNext()
+ }
+ })
+ }
+
+ class GuideCardPresenter : Presenter {
+
+ constructor(view: IView?) : super(view)
+ }
+
+}
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt
index 5a1fcb87e3..e34e5b0bbf 100644
--- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/SharedPreferenceUtil.kt
@@ -1,18 +1,17 @@
package com.mogo.module.guide.util
import com.mogo.commons.AbsMogoApplication
+import com.mogo.commons.debug.DebugConfig
import com.mogo.utils.storage.SharedPrefsMgr
object SharedPreferenceUtil {
- const val HAS_GUIDE = "HAS_GUIDE"
-
fun hasGuide(): Boolean {
- return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_GUIDE, false)
+ return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(DebugConfig.getSpGuide(), false)
}
fun setGuideFinish() {
- SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putBoolean(HAS_GUIDE, true)
+ SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putBoolean(DebugConfig.getSpGuide(), true)
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/VoiceUtil.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/VoiceUtil.kt
new file mode 100644
index 0000000000..c0184db527
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/util/VoiceUtil.kt
@@ -0,0 +1,10 @@
+package com.mogo.module.guide.util
+
+import android.content.Context
+import com.mogo.commons.voice.AIAssist
+import com.mogo.commons.voice.IMogoVoiceCmdCallBack
+import com.mogo.commons.voice.VoicePreemptType
+
+fun speak(context: Context, text: String, callBack: IMogoVoiceCmdCallBack?) {
+ AIAssist.getInstance(context).speakTTSVoice(text, VoicePreemptType.PREEMPT_TYPE_IMMEADIATELY, callBack)
+}
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/drawable/module_guide_blue_corner.xml b/modules/mogo-module-guide/src/main/res/drawable/module_guide_blue_corner.xml
new file mode 100644
index 0000000000..c21deebfbf
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/drawable/module_guide_blue_corner.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml
index d8c3c419fb..c0ab9b03e5 100644
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml
@@ -12,4 +12,17 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_app_list.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_app_list.xml
deleted file mode 100644
index ff6613a6ab..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_app_list.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_card.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_card.xml
deleted file mode 100644
index ec9030cac3..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_card.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_entry_main.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_entry_main.xml
deleted file mode 100644
index e7c167e59c..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_entry_main.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml
new file mode 100644
index 0000000000..c46d99fe5c
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_include.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_location.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_location.xml
deleted file mode 100644
index fab64de64d..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_location.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_navigation.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_navigation.xml
deleted file mode 100644
index c2c09f075d..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_navigation.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_online_car.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_online_car.xml
deleted file mode 100644
index 31f1619a91..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_online_car.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_five.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_five.xml
new file mode 100644
index 0000000000..586f730d9b
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_five.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_four.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_four.xml
new file mode 100644
index 0000000000..69c79b5c8c
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_four.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_one.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_one.xml
new file mode 100644
index 0000000000..b1115882b3
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_one.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_three.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_three.xml
new file mode 100644
index 0000000000..52de1ceff2
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_three.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_two.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_two.xml
new file mode 100644
index 0000000000..4e402f8994
--- /dev/null
+++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_two.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_start.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_item_start.xml
deleted file mode 100644
index 0a0cf2730d..0000000000
--- a/modules/mogo-module-guide/src/main/res/layout/module_guide_item_start.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_app_list.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_app_list.png
deleted file mode 100644
index 21b6cb9d2e..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_app_list.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_card.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_card.png
deleted file mode 100644
index ad448fdb0c..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_card.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_entry_main.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_entry_main.png
deleted file mode 100644
index ee612b77e0..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_entry_main.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_location.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_location.png
deleted file mode 100644
index 5e3d0ba8b1..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_location.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_navigation.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_navigation.png
deleted file mode 100644
index 0b766fe07e..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_navigation.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_online_car.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_online_car.png
deleted file mode 100644
index 63f55e2426..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_online_car.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_five.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_five.png
new file mode 100644
index 0000000000..557649bc77
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_five.png differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_four.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_four.png
new file mode 100644
index 0000000000..004af0e8eb
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_four.png differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_one.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_one.png
new file mode 100644
index 0000000000..66e03cd5ec
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_one.png differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_three.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_three.png
new file mode 100644
index 0000000000..1e9484f335
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_three.png differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_two.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_two.png
new file mode 100644
index 0000000000..9b9fc95fe5
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_stage_two.png differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_start.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_start.png
deleted file mode 100644
index ba7f209b9f..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_start.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_start_scroll.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_start_scroll.png
deleted file mode 100644
index 23ca7ad659..0000000000
Binary files a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_item_start_scroll.png and /dev/null differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_left_page.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_left_page.png
new file mode 100644
index 0000000000..da94ba4a48
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_left_page.png differ
diff --git a/modules/mogo-module-guide/src/main/res/mipmap/module_guide_right_page.png b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_right_page.png
new file mode 100644
index 0000000000..f25becf47a
Binary files /dev/null and b/modules/mogo-module-guide/src/main/res/mipmap/module_guide_right_page.png differ
diff --git a/modules/mogo-module-guide/src/main/res/values/color.xml b/modules/mogo-module-guide/src/main/res/values/color.xml
index 7ee5cd71b6..5405f26c5a 100644
--- a/modules/mogo-module-guide/src/main/res/values/color.xml
+++ b/modules/mogo-module-guide/src/main/res/values/color.xml
@@ -1,4 +1,6 @@
#3B91FF
+ #33ffffff
+ #ffffff
\ No newline at end of file
diff --git a/modules/mogo-module-guide/src/main/res/values/strings.xml b/modules/mogo-module-guide/src/main/res/values/strings.xml
index 4cc90ce4d9..653d0616bf 100644
--- a/modules/mogo-module-guide/src/main/res/values/strings.xml
+++ b/modules/mogo-module-guide/src/main/res/values/strings.xml
@@ -3,5 +3,12 @@
左滑了解更多
进入首页
下一步
- 跳过教程
+ 跳过
+
+ 欢迎使用蘑菇出行,您下次可以直接对我说,打开蘑菇出行来直接进入应用,点击左下方按钮进行摄像头设置
+ 左边是道路事件的播报,点击右边地图上的事件标示可以查看事件详情
+ 这里是道路信息显示,点击后可查看事件详情
+ 这里是事件汇总,您可以查看您参与的事件和您的分享记录
+ 更多设置,在左上角的设置功能中,点击右下角的分享,可以把路况分享给其他车友
+ 我们希望让您的出行更加安全高效,更多功能等着你去发现,快去体验体验吧
diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle
index f900dbe293..cec34c9537 100644
--- a/modules/mogo-module-main/build.gradle
+++ b/modules/mogo-module-main/build.gradle
@@ -40,6 +40,8 @@ dependencies {
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ compileOnly rootProject.ext.dependencies.adasapi
+ compileOnly rootProject.ext.dependencies.adasconfigapi
if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.mogoutils
api rootProject.ext.dependencies.mogocommons
@@ -50,6 +52,7 @@ dependencies {
api rootProject.ext.dependencies.moduleservice
api rootProject.ext.dependencies.moduleapps
api rootProject.ext.dependencies.moduleextensions
+ compileOnly rootProject.ext.dependencies.skinsupport
} else {
api project(":foudations:mogo-utils")
api project(":foudations:mogo-commons")
@@ -60,6 +63,7 @@ dependencies {
api project(':services:mogo-service')
api project(':modules:mogo-module-apps')
api project(':modules:mogo-module-extensions')
+ compileOnly project(':skin:mogo-skin-support')
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java
index 61c20a0d37..1b7de74777 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java
@@ -20,8 +20,12 @@ import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.main.registercenter.MogoRegisterCenterHandler;
+import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.obu.IMogoObuDataChangedListener;
import com.mogo.utils.logger.Logger;
+import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode;
+import com.zhidao.adasconfig.listener.IAdasSettingUIListener;
+import com.zhidao.adasconfig.listener.IAdasSkinStyleListener;
import com.zhidao.smartv2x.model.obu.CarEventInfo;
import com.zhidao.smartv2x.model.obu.CarLocationInfo;
import com.zhidao.smartv2x.model.obu.TrafficLightInfo;
@@ -42,7 +46,9 @@ public class EventDispatchCenter implements
IMogoMapListener,
IMogoNaviListener2,
IMogoLocationListener,
- IMogoObuDataChangedListener {
+ IMogoObuDataChangedListener,
+ IAdasSettingUIListener,
+ IAdasSkinStyleListener {
private static volatile EventDispatchCenter sInstance;
@@ -523,4 +529,99 @@ public class EventDispatchCenter implements
iterator.next().showCarEventInfo( info );
}
}
+
+ @Override
+ public void northModel() {
+ Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
+ if ( iterator == null ) {
+ return;
+ }
+ while ( iterator.hasNext() ) {
+ IMogoADASControlStatusChangedListener listener = iterator.next();
+ if ( listener == null ) {
+ continue;
+ }
+ try {
+ listener.onMapUiModeChanged( EnumMapUI.NorthUP_2D );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "onMapUiModeChanged" );
+ }
+ }
+ }
+
+ @Override
+ public void carHeadUp() {
+ Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
+ if ( iterator == null ) {
+ return;
+ }
+ while ( iterator.hasNext() ) {
+ IMogoADASControlStatusChangedListener listener = iterator.next();
+ if ( listener == null ) {
+ continue;
+ }
+ try {
+ listener.onMapUiModeChanged( EnumMapUI.CarUp_2D );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "onMapUiModeChanged" );
+ }
+ }
+ }
+
+ @Override
+ public void switchCarChat( EnumCarChatIncognitoMode enumCarChatIncognitoMode ) {
+ Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
+ if ( iterator == null ) {
+ return;
+ }
+ while ( iterator.hasNext() ) {
+ IMogoADASControlStatusChangedListener listener = iterator.next();
+ if ( listener == null ) {
+ continue;
+ }
+ try {
+ listener.onCarStatusChanged( enumCarChatIncognitoMode == EnumCarChatIncognitoMode.OPEN );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "onMapUiModeChanged" );
+ }
+ }
+ }
+
+ @Override
+ public void whiteModel() {
+ Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
+ if ( iterator == null ) {
+ return;
+ }
+ while ( iterator.hasNext() ) {
+ IMogoADASControlStatusChangedListener listener = iterator.next();
+ if ( listener == null ) {
+ continue;
+ }
+ try {
+ listener.onMapUiModeChanged( EnumMapUI.Type_Light );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "onMapUiModeChanged" );
+ }
+ }
+ }
+
+ @Override
+ public void blackModel() {
+ Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
+ if ( iterator == null ) {
+ return;
+ }
+ while ( iterator.hasNext() ) {
+ IMogoADASControlStatusChangedListener listener = iterator.next();
+ if ( listener == null ) {
+ continue;
+ }
+ try {
+ listener.onMapUiModeChanged( EnumMapUI.Type_Night );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "onMapUiModeChanged" );
+ }
+ }
+ }
}
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 9cb389a04d..9a21d22d01 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
@@ -2,7 +2,6 @@ package com.mogo.module.main;
import android.content.Intent;
import android.os.Bundle;
-import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
@@ -18,23 +17,25 @@ import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
-import com.mogo.module.common.utils.CarSeries;
import com.mogo.module.main.cards.MogoModulesManager;
import com.mogo.module.main.service.MogoMainService;
import com.mogo.module.main.windowview.FloatingViewHandler;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
-import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleProvider;
-import com.mogo.service.monitor.IMogoMonitorProvider;
import com.mogo.service.obu.IMogoObuManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.mogo.skin.support.SkinMode;
import com.mogo.utils.logger.Logger;
+import com.zhidao.adasconfig.api.AdasConfigApiController;
+import com.zhidao.adasconfig.common.log.LoggerController;
import com.zhidao.autopilot.support.api.AutopilotServiceManage;
import java.util.List;
@@ -47,7 +48,8 @@ import java.util.List;
*/
public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView,
IMogoLocationListener,
- IMogoMarkerClickListener {
+ IMogoMarkerClickListener,
+ IMogoADASControlStatusChangedListener {
protected static final String TAG = MainActivity.class.getSimpleName();
@@ -61,6 +63,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
protected View mApps;
protected View mEntrance;
protected View mEventPanel;
+ protected View mHistoryMessagePanel;
protected FrameLayout mFloatingLayout;
protected View mCoverUpLayout;
protected FrameLayout mLeftPanelLayout;
@@ -71,6 +74,23 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
return R.layout.module_main_activity_main;
}
+ @Override
+ protected void beforeSetContentView( Bundle savedInstanceState ) {
+ init();
+ installSkinManager( savedInstanceState );
+ }
+
+ /**
+ * 安装皮肤支持
+ *
+ * @param savedInstanceState
+ */
+ private void installSkinManager( Bundle savedInstanceState ) {
+ mServiceApis.getMapServiceApi().getMapViewInstanceHandler().createMapViewInstance( this );
+ mServiceApis.getSkinSupportInstallerApi().install( getApplication() );
+ mServiceApis.getSkinSupportInstallerApi().onCompensateActivityCreated( this, savedInstanceState );
+ }
+
@Override
protected void initViews() {
@@ -84,6 +104,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame );
mCoverUpLayout = findViewById( R.id.module_main_id_cover_up );
mLeftPanelLayout = findViewById( R.id.module_main_id_left_panel_fragment_container );
+ mHistoryMessagePanel = findViewById( R.id.module_main_id_message_history_fragment_container );
// 避免事件穿透导致地图被滑动
mLeftShadowFrame.setOnClickListener( view -> {
@@ -110,7 +131,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
- init();
mPresenter.postLoadModuleMsg();
}
@@ -144,6 +164,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
obuManager.registerObuDataChangedListener(EventDispatchCenter.getInstance());
}
+ initAdasControlStatusListener();
EventDispatchCenter.getInstance().setMapLoadedCallback( () -> {
Logger.d( TAG, "map loaded." + Thread.currentThread().getName() );
@@ -166,6 +187,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoFragmentManager = mServiceApis.getFragmentManagerApi();
mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
+ mMogoFragmentManager.initMessageHistoryContainerId( R.id.module_main_id_message_history_fragment_container );
mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
if ( size == 0 ) {
showLayout();
@@ -177,7 +199,15 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
// 初始化MonitorModule
// IMogoMonitorProvider monitorProvider = (IMogoMonitorProvider) ARouter.getInstance().build(MogoServicePaths.PATH_MOGO_MONITOR).navigation(this);
// monitorProvider.resetActivityContext(this);
- mServiceApis.getMogoMonitorApi().resetActivityContext(this);
+ mServiceApis.getMogoMonitorApi().resetActivityContext( this );
+ }
+
+ private void initAdasControlStatusListener() {
+ mServiceApis.getRegisterCenterApi().registerADASControlStatusChangedListener( TAG, this );
+ AdasConfigApiController.getInstance().registerAdasSettingUiListener( EventDispatchCenter.getInstance() );
+ AdasConfigApiController.getInstance().registerAdasSettingSkinModelListener( EventDispatchCenter.getInstance() );
+ AdasConfigApiController.getInstance().init( getApplicationContext() );
+ LoggerController.setPrinterLog( DebugConfig.isDebug() );
}
private void startBaseService() {
@@ -200,12 +230,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
public void loadCardModules() {
-
List< IMogoModuleProvider > providers = MogoModulesManager.getInstance().loadCardsModule();
-// mCardModulesAdapter = new CardModulesAdapter( this, providers );
-// mCardsContainer.setOffscreenPageLimit( providers.size() );
-// mCardsContainer.setPageTransformer( true, mTransformer );
-// mCardsContainer.setAdapter( mCardModulesAdapter );
}
@Override
@@ -230,6 +255,18 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
return false;
}
+ @Override
+ public void onMapUiModeChanged( EnumMapUI mapUI ) {
+ switch ( mapUI ) {
+ case Type_Night:
+ mServiceApis.getSkinSupportInstallerApi().loadSkin( SkinMode.Night );
+ break;
+ case Type_Light:
+ mServiceApis.getSkinSupportInstallerApi().loadSkin( SkinMode.Light );
+ break;
+ }
+ }
+
@Override
protected void onResume() {
super.onResume();
@@ -251,7 +288,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
}
}
- protected boolean shouldCloseADASPanelWhenPause(){
+ protected boolean shouldCloseADASPanelWhenPause() {
// m4 系列因为按home键会造成页面pause后resume,造成adas panel 闪烁
// f 系列加上上滑返回桌面后会走 mIsHomeKeyDown = true,但是不会造成页面pause
// 独立 app 任何情况下都需要隐藏 adas
@@ -306,6 +343,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoMapService = null;
mMogoMapUIController = null;
mMogoFragmentManager = null;
+ mServiceApis.getMapServiceApi().getMapViewInstanceHandler().destroy();
+ AdasConfigApiController.getInstance().release();
mServiceApis.getAdasControllerApi().release();
Logger.d( TAG, "destroy." );
mServiceApis.getRefreshStrategyControllerApi().clearAllData();
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
index c0ce50ba8b..d8e6e15f60 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
@@ -37,6 +37,8 @@ public class SchemeIntent implements IMogoStatusChangedListener {
public static final String TYPE_NAVI = "navi";
+ public static final String TYPE_SEARCH_ROAD_CONDITION = "search-road-condition";
+
public static final String TYPE_LAUNCH = "launch";
private IMogoServiceApis mApis;
@@ -122,10 +124,24 @@ public class SchemeIntent implements IMogoStatusChangedListener {
case TYPE_LAUNCH:
handleLaunchIntent( target );
break;
+ case TYPE_SEARCH_ROAD_CONDITION:
+ handleSearchRoadCondition(target);
+ break;
+ default:
+ break;
}
}
+ private void handleSearchRoadCondition(Uri target) {
+ if (mApis == null) {
+ return;
+ }
+ mApis.getTanluUiApi().searchRoadCondition(target.getQueryParameter("intentStr"),
+ target.getQueryParameter("data"), target.getQueryParameter("city"),
+ target.getQueryParameter("keywords"));
+ }
+
private void handleSwitchCardIntent( String type ) {
CardSwitchLiveData.getInstance().postValue( new CardInfo( type, true ) );
}
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 289e76249d..355c6324b5 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
@@ -185,7 +185,7 @@ public class MogoModulesManager implements MogoModulesHandler {
return;
}
mActivity.getSupportFragmentManager().beginTransaction()
- .add( containerId, fragment, provider.getModuleName() )
+ .replace( containerId, fragment, provider.getModuleName() )
.commitAllowingStateLoss();
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java
index 34be3beb93..ec029d7bac 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java
@@ -10,6 +10,7 @@ import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.obu.IMogoObuDataChangedListener;
@@ -92,7 +93,7 @@ public class MogoRegisterCenter implements IMogoRegisterCenter {
@Override
public void registerCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener ) {
- MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener( tag, listener);
+ MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener( tag, listener );
}
@Override
@@ -101,13 +102,28 @@ public class MogoRegisterCenter implements IMogoRegisterCenter {
}
@Override
- public void registerObuDataListener(String tag, IMogoObuDataChangedListener listener) {
- MogoRegisterCenterHandler.getInstance().registerObuDataListener(tag, listener);
+ public void registerObuDataListener( String tag, IMogoObuDataChangedListener listener ) {
+ MogoRegisterCenterHandler.getInstance().registerObuDataListener( tag, listener );
}
@Override
- public void unregisterObuDataListener(String tag) {
- MogoRegisterCenterHandler.getInstance().unregisterObuDataListener(tag);
+ public void unregisterObuDataListener( String tag ) {
+ MogoRegisterCenterHandler.getInstance().unregisterObuDataListener( tag );
+ }
+
+ @Override
+ public void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ) {
+ MogoRegisterCenterHandler.getInstance().registerADASControlStatusChangedListener( tag, listener );
+ }
+
+ @Override
+ public void unregisterADASControlStatusChangedListener( String tag ) {
+ MogoRegisterCenterHandler.getInstance().unregisterADASControlStatusChangedListener( tag );
+ }
+
+ @Override
+ public Iterator< IMogoADASControlStatusChangedListener > getAdasControlStatusChangedListeners() {
+ return MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners();
}
@Override
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java
index cc9148a3e5..060bfe8d67 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java
@@ -8,6 +8,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.obu.IMogoObuDataChangedListener;
@@ -33,7 +34,8 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
private Map< String, IMogoMarkerClickListener > mMarker = new HashMap<>();
private Map< String, IMogoAimlessModeListener > mAimless = new HashMap<>();
private Map< String, IMogoCarLocationChangedListener > mCarLocations = new HashMap<>();
- private Map mObus = new HashMap<>();
+ private Map< String, IMogoObuDataChangedListener > mObus = new HashMap<>();
+ private Map< String, IMogoADASControlStatusChangedListener > mADAS = new HashMap<>();
private MogoRegisterCenterHandler() {
}
@@ -125,13 +127,23 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
}
@Override
- public void registerObuDataListener(String tag, IMogoObuDataChangedListener listener) {
- mObus.put(tag, listener);
+ public void registerObuDataListener( String tag, IMogoObuDataChangedListener listener ) {
+ mObus.put( tag, listener );
}
@Override
- public void unregisterObuDataListener(String tag) {
- mObus.remove(tag);
+ public void unregisterObuDataListener( String tag ) {
+ mObus.remove( tag );
+ }
+
+ @Override
+ public void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ) {
+ mADAS.put( tag, listener );
+ }
+
+ @Override
+ public void unregisterADASControlStatusChangedListener( String tag ) {
+ mADAS.remove( tag );
}
@Override
@@ -170,9 +182,10 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
return mNavi.values().iterator();
}
- public Iterator getObuDataChangedListeners(){
+ public Iterator< IMogoObuDataChangedListener > getObuDataChangedListeners() {
return mObus.values().iterator();
}
+
@Override
public Iterator< IMogoLocationListener > getLocationListeners() {
return mLocation.values().iterator();
@@ -191,4 +204,8 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
return mCarLocations.values().iterator();
}
+ @Override
+ public Iterator getAdasControlStatusChangedListeners(){
+ return mADAS.values().iterator();
+ }
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java
index 788d0c81db..077ec59994 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java
@@ -42,11 +42,11 @@ class MogoMainService extends Service implements IMogoLocationListener {
Logger.d(TAG, "基本服务启动");
mServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation();
initAndStartLocation();
- initGpsSimulatorListener();
UiThreadHandler.postDelayed(() -> {
loadBaseModules();
startTanluService();
initADAS();
+ initGpsSimulatorListener();
}, 2_000L
);
}
diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_launcher_bg.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_launcher_bg.png
index 7dd08094f0..6d9cfaf591 100644
Binary files a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_launcher_bg.png and b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_launcher_bg.png differ
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index ce44459946..a9cf9fe2a5 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -53,7 +53,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/module_main_id_entrance_fragment_container_marginLeft"
- android:padding="@dimen/module_main_entrance_fragment_container_padding" />
+ android:padding="@dimen/module_event_fragment_container_padding" />
+
+
599px
200px
- 30px
+ 20px
30px
830px
590px
@@ -25,5 +25,6 @@
635px
1263px
+ 20px
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml
index 9f6dd8ba91..38353f4b23 100644
--- a/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml
@@ -16,7 +16,7 @@
599px
200px
- 30px
+ 20px
30px
830px
800px
@@ -25,4 +25,5 @@
340px
1313px
+ 20px
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/res/values/dimens.xml b/modules/mogo-module-main/src/main/res/values/dimens.xml
index a1a96a40ba..abb5b70e10 100644
--- a/modules/mogo-module-main/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-main/src/main/res/values/dimens.xml
@@ -24,7 +24,7 @@
350px
16px
16px
-
658px
+ 8px
\ No newline at end of file
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
index a563efc7da..353af2b392 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
@@ -63,6 +63,14 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
initMapView();
}
+ @Override
+ public void onSaveInstanceState( @NonNull Bundle outState ) {
+ super.onSaveInstanceState( outState );
+ if ( mMogoMapView != null ) {
+ mMogoMapView.onSaveInstanceState( outState );
+ }
+ }
+
@Override
public void onPause() {
super.onPause();
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java
index a45306c822..f0316ac8e9 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java
@@ -24,6 +24,7 @@ import com.mogo.map.uicontroller.MapControlResult;
import com.mogo.module.common.map.CustomNaviInterrupter;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.launcher.IMogoLauncher;
@@ -50,9 +51,11 @@ public class MapPresenter extends Presenter< MapView > implements
IMogoIntentListener,
IMogoVoiceCmdCallBack,
IMogoNaviListener2,
- OnMapControlCallback {
+ OnMapControlCallback,
+ IMogoADASControlStatusChangedListener {
private static final String TAG = "MapPresenter";
+ private IMogoServiceApis mApis;
private IMogoMapService mMogoMapService;
private IMogoIntentManager mMogoIntentManager;
private IMogoSearchManager mSearchManager;
@@ -79,6 +82,7 @@ public class MapPresenter extends Presenter< MapView > implements
public MapPresenter( MapView view ) {
super( view );
+
}
@Override
@@ -89,11 +93,18 @@ public class MapPresenter extends Presenter< MapView > implements
@Override
public void onCameraModeChanged( EnumMapUI mode ) {
mView.getUIController().changeMapMode( mode );
+ mApis.getAdasControllerApi().changeAdasControlMode( mode );
}
@Override
public void onDayNightModeChanged( EnumMapUI mode ) {
mView.getUIController().changeMapMode( mode );
+ mApis.getAdasControllerApi().changeAdasControlMode( mode );
+ }
+
+ @Override
+ public void onMapUiModeChanged( EnumMapUI mapUI ) {
+ mView.getUIController().changeMapMode( mapUI );
}
@Override
@@ -237,16 +248,16 @@ public class MapPresenter extends Presenter< MapView > implements
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
- IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() );
- mMogoMapService = apis.getMapServiceApi();
- mMogoIntentManager = apis.getIntentManagerApi();
- mSearchManager = apis.getSearchManagerApi();
- mRefreshStrategyController = apis.getRefreshStrategyControllerApi();
- mStatusManager = apis.getStatusManagerApi();
- mRegisterCenter = apis.getRegisterCenterApi();
+ mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() );
+ mMogoMapService = mApis.getMapServiceApi();
+ mMogoIntentManager = mApis.getIntentManagerApi();
+ mSearchManager = mApis.getSearchManagerApi();
+ mRefreshStrategyController = mApis.getRefreshStrategyControllerApi();
+ mStatusManager = mApis.getStatusManagerApi();
+ mRegisterCenter = mApis.getRegisterCenterApi();
mRegisterCenter.registerMogoNaviListener( TAG, this );
- mLauncher = apis.getLauncherApi();
- mMogoSearchManager = apis.getSearchManagerApi();
+ mLauncher = mApis.getLauncherApi();
+ mMogoSearchManager = mApis.getSearchManagerApi();
IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() );
mogoNavi.setCalculatePathDisplayBounds( new Rect(
@@ -266,10 +277,17 @@ public class MapPresenter extends Presenter< MapView > implements
for ( String cmd : VoiceConstants.sUnUnRegisterCmds ) {
mMogoIntentManager.registerIntentListener( cmd, this );
}
+ for ( Map.Entry< String, String[] > entry : VoiceConstants.sUnRegisterVoiceCmds.entrySet() ) {
+ AIAssist.getInstance( getContext() ).registerUnWakeupCommand( entry.getKey(), entry.getValue(), this );
+ }
initBroadcast();
mCustomVoiceCommandHandler = new MapControlCommandHandler();
mCustomVoiceCommandHandler.setCallback( this );
+ mRegisterCenter.registerADASControlStatusChangedListener( TAG, this );
+
+ final EnumMapUI mapUI = mApis.getAdasControllerApi().getCurrentSkinMode();
+ mMogoMapService.getMapUIController().changeMapMode( mapUI );
}
private void initBroadcast() {
@@ -296,6 +314,15 @@ public class MapPresenter extends Presenter< MapView > implements
if ( mAutoNaviReceiver != null ) {
mAutoNaviReceiver.unregister( mMogoIntentManager );
}
+ mRegisterCenter.unregisterMogoNaviListener( TAG );
+ mRegisterCenter.unregisterADASControlStatusChangedListener( TAG );
+
+ for ( String cmd : VoiceConstants.sUnUnRegisterCmds ) {
+ mMogoIntentManager.unregisterIntentListener( cmd, this );
+ }
+ for ( Map.Entry< String, String[] > entry : VoiceConstants.sUnRegisterVoiceCmds.entrySet() ) {
+ AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( entry.getKey(), this );
+ }
}
private void registerVoiceCmd() {
@@ -348,4 +375,5 @@ public class MapPresenter extends Presenter< MapView > implements
public void onStopNavi() {
MapBroadCastHelper.getInstance( getContext() ).stopNavi();
}
+
}
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
index aff22c0b1c..1cf7743744 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/VoiceConstants.java
@@ -158,8 +158,13 @@ public class VoiceConstants {
public static final String CMD_MAP_SPEAK_REMAIN_UN_WAKEUP = "CMD_MAP_SPEAK_REMAIN_UN_WAKEUP";
public static final String[] CMD_MAP_SPEAK_REMAIN_TRIGGER_WORDS = {"还有多久", "多久到", "还有多远"};
+ // 免唤醒
public static final Map< String, String[] > sVoiceCmds = new HashMap<>();
+ // 不注销的免唤醒
+ public static final Map< String, String[] > sUnRegisterVoiceCmds = new HashMap<>();
+ // 唤醒
public static final List< String > sCmds = new ArrayList<>();
+ // 不注销的唤醒
public static final List< String > sUnUnRegisterCmds = new ArrayList<>();
static {
@@ -168,9 +173,6 @@ public class VoiceConstants {
sVoiceCmds.put( VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP, VoiceConstants.CMD_MAP_ZOOM_OUT_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_2D_UN_WAKEUP, VoiceConstants.CMD_MAP_2D_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_3D_UN_WAKEUP, VoiceConstants.CMD_MAP_3D_TRIGGER_WORDS );
- sVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
- sVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
- sVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_TRAFFIC_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_TRIGGER_WORDS );
@@ -185,16 +187,18 @@ public class VoiceConstants {
sVoiceCmds.put( VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_TRIGGER_WORDS );
sVoiceCmds.put( VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_TRIGGER_WORDS );
//sVoiceCmds.put( VoiceConstants.CMD_MAP_SPEAK_REMAIN_UN_WAKEUP, VoiceConstants.CMD_MAP_SPEAK_REMAIN_TRIGGER_WORDS );
+
+ sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_DAY_TIME_MODE_TRIGGER_WORDS );
+ sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_NIGHT_MODE_TRIGGER_WORDS );
+ sUnRegisterVoiceCmds.put( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP, VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_TRIGGER_WORDS );
+
// 唤醒
sCmds.add( VoiceConstants.CMD_MAP_ZOOM_IN );
sCmds.add( VoiceConstants.CMD_MAP_ZOOM_OUT );
sCmds.add( VoiceConstants.CMD_MAP_2D );
sCmds.add( VoiceConstants.CMD_MAP_3D );
- sCmds.add( VoiceConstants.CMD_MAP_DAY_TIME_MODE );
- sCmds.add( VoiceConstants.CMD_MAP_NIGHT_MODE );
sCmds.add( VoiceConstants.CMD_MAP_TRAFFIC_MODE );
sCmds.add( VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE );
- sCmds.add( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE );
sCmds.add( VoiceConstants.CMD_MAP_CAR_UP_MODE );
sCmds.add( VoiceConstants.CMD_MAP_NORTH_UP_MODE );
sCmds.add( VoiceConstants.CMD_MAP_STOP_NAVI_MODE );
@@ -206,5 +210,8 @@ public class VoiceConstants {
sUnUnRegisterCmds.add( VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE );
sUnUnRegisterCmds.add( VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE );
sUnUnRegisterCmds.add( VoiceConstants.CMD_MAP_HISTORY );
+ sUnUnRegisterCmds.add( VoiceConstants.CMD_MAP_DAY_TIME_MODE );
+ sUnUnRegisterCmds.add( VoiceConstants.CMD_MAP_NIGHT_MODE );
+ sUnUnRegisterCmds.add( VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE );
}
}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java
index 52651147a6..2d7e5713f4 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewFragment.java
@@ -14,6 +14,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
+import android.widget.SeekBar;
import android.widget.TextView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
@@ -59,7 +60,6 @@ import com.mogo.module.media.widget.NoScrollSeekBar;
import com.mogo.module.media.widget.RoundedImageView;
import com.mogo.module.media.widget.ScrollingTextView;
import com.mogo.module.media.widget.surfaceview.FrameTextureView;
-import com.mogo.module.service.marker.MapMarkerManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
@@ -71,6 +71,7 @@ import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.glide.GlideApp;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -130,14 +131,14 @@ public class MediaCardViewFragment extends MvpFragment
-
@@ -62,7 +62,7 @@
android:id="@+id/window_max_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textColor="#7aFFFFFF"
+ android:textColor="@color/modules_media_music_time_text_color"
tools:text = "06:50"
app:layout_constraintTop_toTopOf="@+id/window_divide"
app:layout_constraintLeft_toRightOf="@+id/window_divide"
@@ -92,7 +92,7 @@
android:background="@drawable/module_media_next_bg_selector"
android:src="@drawable/module_media_next_song" />
-
- #008577
- #00574B
- #D81B60
+ #fff
+ #7affffff
diff --git a/modules/mogo-module-push-noop/build.gradle b/modules/mogo-module-push-noop/build.gradle
index 369d2a1a49..c8d6872f33 100644
--- a/modules/mogo-module-push-noop/build.gradle
+++ b/modules/mogo-module-push-noop/build.gradle
@@ -43,14 +43,14 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// 小智语音,免唤醒词等服务
- compileOnly rootProject.ext.dependencies.mogoserviceapi
- compileOnly rootProject.ext.dependencies.arouter
+ implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
-
if( Boolean.valueOf(RELEASE) ){
implementation rootProject.ext.dependencies.modulepushbase
+ implementation rootProject.ext.dependencies.mogoserviceapi
} else {
implementation project(":modules:mogo-module-push-base")
+ implementation project(':services:mogo-service-api')
}
}
diff --git a/modules/mogo-module-push/build.gradle b/modules/mogo-module-push/build.gradle
index 80fa923f80..8abc8b1c11 100644
--- a/modules/mogo-module-push/build.gradle
+++ b/modules/mogo-module-push/build.gradle
@@ -43,16 +43,11 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// 小智语音,免唤醒词等服务
- compileOnly rootProject.ext.dependencies.mogomap
- compileOnly rootProject.ext.dependencies.mogoutils
- compileOnly rootProject.ext.dependencies.mogocommons
- compileOnly rootProject.ext.dependencies.mogoserviceapi
- compileOnly rootProject.ext.dependencies.modulecommon
- compileOnly rootProject.ext.dependencies.androidxconstraintlayout
- compileOnly rootProject.ext.dependencies.arouter
- compileOnly rootProject.ext.dependencies.aiassist
+ implementation rootProject.ext.dependencies.androidxconstraintlayout
+ implementation rootProject.ext.dependencies.arouter
+ implementation rootProject.ext.dependencies.aiassist
kapt rootProject.ext.dependencies.aroutercompiler
- compileOnly rootProject.ext.dependencies.androidxrecyclerview
+ implementation rootProject.ext.dependencies.androidxrecyclerview
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.kotlinstdlibjdk7
implementation rootProject.ext.dependencies.androidxccorektx
@@ -63,8 +58,18 @@ dependencies {
if( Boolean.valueOf(RELEASE) ){
implementation rootProject.ext.dependencies.modulepushbase
+ implementation rootProject.ext.dependencies.mogomap
+ implementation rootProject.ext.dependencies.mogoutils
+ implementation rootProject.ext.dependencies.mogocommons
+ implementation rootProject.ext.dependencies.modulecommon
+ implementation rootProject.ext.dependencies.mogoserviceapi
} else {
implementation project(":modules:mogo-module-push-base")
+ implementation project(':libraries:mogo-map')
+ implementation project(':foudations:mogo-utils')
+ implementation project(':foudations:mogo-commons')
+ implementation project(':modules:mogo-module-common')
+ implementation project(':services:mogo-service-api')
}
}
diff --git a/modules/mogo-module-push/src/main/AndroidManifest.xml b/modules/mogo-module-push/src/main/AndroidManifest.xml
index 3334a218b2..6a39ac26a4 100644
--- a/modules/mogo-module-push/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-push/src/main/AndroidManifest.xml
@@ -4,14 +4,4 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/PushHistoryUiProvider.java b/modules/mogo-module-push/src/main/java/com/mogo/module/push/PushHistoryUiProvider.java
new file mode 100644
index 0000000000..dd389a6bdb
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/PushHistoryUiProvider.java
@@ -0,0 +1,39 @@
+package com.mogo.module.push;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.module.push.base.PushUIConstants;
+import com.mogo.module.push.fragment.MessageHistoryFragment;
+import com.mogo.service.fragmentmanager.IFragmentProvider;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/1
+ *
+ * 描述
+ */
+@Route( path = PushUIConstants.Push_MESSAGE_ACTIVITY_PATH )
+class PushHistoryUiProvider implements IFragmentProvider {
+
+ @Override
+ public Fragment createFragment( FragmentActivity activity, int containerId, Bundle date ) {
+ Fragment fragment = new MessageHistoryFragment();
+ activity.getSupportFragmentManager()
+ .beginTransaction()
+ .add( containerId, fragment, PushUIConstants.Push_MESSAGE_ACTIVITY_PATH )
+ .show( fragment )
+ .commitNowAllowingStateLoss();
+ return fragment;
+ }
+
+ @Override
+ public void init( Context context ) {
+
+ }
+}
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/activity/PushMessageActivity.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/activity/PushMessageActivity.kt
deleted file mode 100644
index 195aa828ab..0000000000
--- a/modules/mogo-module-push/src/main/java/com/mogo/module/push/activity/PushMessageActivity.kt
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.mogo.module.push.activity
-
-import android.content.Intent
-import android.os.Bundle
-import android.view.View
-import androidx.appcompat.app.AppCompatActivity
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.alibaba.android.arouter.facade.annotation.Route
-import com.mogo.module.push.Config
-import com.mogo.module.push.R
-import com.mogo.module.push.adapter.PushMessageAdapter
-import com.mogo.module.push.base.PushUIConstants
-import com.mogo.module.push.model.PushBean
-import com.mogo.module.push.repository.PushRepository
-import com.mogo.module.push.utils.AnalyticsUtils
-import com.mogo.module.push.utils.HandlerUtils
-import com.mogo.module.push.utils.startClearAnimator
-import com.mogo.module.push.view.PushItemAnimator
-import com.mogo.module.push.view.SwipeItemLayout
-import com.mogo.module.push.view.getApis
-import com.mogo.module.push.viewmodel.MessageViewModel
-import com.mogo.service.intent.IMogoIntentListener
-import com.mogo.utils.UiThreadHandler
-import com.mogo.utils.logger.Logger
-import kotlinx.android.synthetic.main.module_push_message_activity.*
-
-@Route(path = PushUIConstants.Push_MESSAGE_ACTIVITY_PATH)
-class PushMessageActivity : AppCompatActivity(), IMogoIntentListener {
- private lateinit var viewModel: MessageViewModel
- private var adapter = PushMessageAdapter()
- private var clearing = false
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-// window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
- setContentView(R.layout.module_push_message_activity)
- AnalyticsUtils.track(Config.NEWS_HISTORY_OPEN)
- module_push_activity_close.setOnClickListener {
- AnalyticsUtils.track(Config.NEWS_HISTORY_CLOSE)
- finish()
- }
- module_push_activity_clear.setOnClickListener {
- AnalyticsUtils.track(Config.NEWS_HISTORY_ALL_CLEAR)
- if (!clearing) {
- clearing = true
- startClearAnimator(module_push_activity_recycler_view) {
- viewModel.deleteAll()
- clearing = false
- }
- }
- }
- adapter.deletePushBean = object : PushMessageAdapter.PushAdapterListener {
- override fun lastItemShow(show: Boolean) {
- if (!show && !clearing) {
- val size = viewModel.list?.size ?: 0
- if (size > 0 && size < module_push_activity_recycler_view.childCount) {
- return
- }
- }
- module_push_activity_clear.visibility =
- if (show) View.VISIBLE else View.GONE
- }
-
- override fun deleteBean(bean: PushBean, action: Boolean) {
- if (clearing) return
- viewModel.delete(bean)
- if (action) {
- AnalyticsUtils.track(Config.NEWS_HISTORY_ONE_CLICK, "title", bean.title)
- finish()
- } else {
- AnalyticsUtils.track(Config.NEWS_HISTORY_ONE_CLEAR, "title", bean.title)
- adapter.removeItem(bean)
- if (adapter.datas?.size ?: 0 == 0) {
- module_push_activity_not_data.visibility = View.VISIBLE
- }
- updateHistoryMessageCount()
- }
- }
- }
- module_push_activity_recycler_view.layoutManager = LinearLayoutManager(this)
- module_push_activity_recycler_view.adapter = adapter
- module_push_activity_recycler_view.itemAnimator = PushItemAnimator()
- module_push_activity_recycler_view.addOnItemTouchListener(
- SwipeItemLayout.OnSwipeItemTouchListener(this)
- )
- viewModel = MessageViewModel(object :
- MessageViewModel.MessageListChange {
- override fun messageListChange(list: MutableList?) {
- runOnUiThread {
- var size = list?.size ?: 0
- adapter.datas = list
- module_push_activity_not_data.visibility = if (size > 0) View.GONE else View.VISIBLE
- updateHistoryMessageCount()
- }
- }
- })
-
- getApis(this).intentManagerApi.registerIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this)
- }
-
- private fun updateHistoryMessageCount(){
- HandlerUtils.mBgHandler.post{
- var count = PushRepository.pushRepository.pushBeanDao.getAllCount()
- UiThreadHandler.post {
- module_push_activity_title.text = if (count > 0) "历史消息(${count})" else "历史消息"
- }
- }
- }
-
- override fun onResume() {
- super.onResume()
- adapter.notifyDataSetChanged()
- }
-
- override fun onIntentReceived(intentStr: String?, intent: Intent?) {
- if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intentStr)) {
- Logger.d("PushMessageActivity", "close by home key.")
- finish()
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- getApis(this).intentManagerApi.unregisterIntentListener(Intent.ACTION_CLOSE_SYSTEM_DIALOGS, this)
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt
index 868a609d29..25f45bd3c3 100644
--- a/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/adapter/PushMessageAdapter.kt
@@ -45,7 +45,7 @@ class PushMessageAdapter : RecyclerView.Adapter= 0) {
it.removeAt(position)
- notifyItemRemoved(position)
+ notifyDataSetChanged()
}
if (itemCount == 0) {
deletePushBean.lastItemShow(false)
@@ -57,8 +57,7 @@ class PushMessageAdapter : RecyclerView.Adapter implements MessageHistoryView, IMogoMsgCenterListener {
+
+ private static final String TAG = "MessageHistoryFragment";
+
+ private View mClear;
+ private RecyclerView mHistoryList;
+ private TextView mTitle;
+ private View mEmptyPlaceHolder;
+ private View mClose;
+
+ private boolean mClearing = false;
+ private PushMessageAdapter mAdapter = new PushMessageAdapter();
+ private MessageViewModel mViewModel;
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.module_push_message_hisotry_fragment;
+ }
+
+ @Override
+ protected void initViews() {
+ mClear = findViewById( R.id.module_push_id_clear );
+ mHistoryList = findViewById( R.id.module_push_id_recycler_view );
+ mTitle = findViewById( R.id.module_push_id_title );
+ mEmptyPlaceHolder = findViewById( R.id.module_push_id_not_data );
+ mClose = findViewById( R.id.module_push_id_close );
+
+ AnalyticsUtils.track( Config.NEWS_HISTORY_OPEN, null );
+ mClose.setOnClickListener( view -> {
+ exitSelf();
+ } );
+ mClear.setOnClickListener( view -> {
+ AnalyticsUtils.track( Config.NEWS_HISTORY_ALL_CLEAR, null );
+ if ( !mClearing ) {
+ mClearing = true;
+ AnimatorUtilsKt.startClearAnimator(
+ mHistoryList,
+ () -> {
+ mViewModel.deleteAll();
+ mClearing = false;
+ }
+ );
+ }
+ } );
+ mAdapter.deletePushBean = new PushMessageAdapter.PushAdapterListener() {
+ @Override
+ public void deleteBean( @NotNull PushBean bean, boolean action ) {
+ if ( mClearing ) {
+ return;
+ }
+ mViewModel.delete( bean );
+ if ( action ) {
+ Map< String, Object > prop = new HashMap<>();
+ prop.put( "title", bean.getTitle() );
+ AnalyticsUtils.track( Config.NEWS_HISTORY_ONE_CLICK, prop );
+ exitSelf();
+ } else {
+ AnalyticsUtils.track( Config.NEWS_HISTORY_ONE_CLEAR, null );
+ mAdapter.removeItem( bean );
+ if ( mAdapter.getItemCount() == 0 ) {
+ mEmptyPlaceHolder.setVisibility( View.VISIBLE );
+ }
+ updateHistoryMessageCount();
+ }
+ }
+
+ @Override
+ public void lastItemShow( boolean show ) {
+ if ( !show && !mClearing ) {
+ if ( mViewModel.getList() != null ) {
+ int size = mViewModel.getList().size();
+ if ( size > 0 && size < mHistoryList.getChildCount() ) {
+ return;
+ }
+ }
+ }
+ mClear.setVisibility( show ? View.VISIBLE : View.GONE );
+ }
+ };
+ mViewModel = new MessageViewModel( list -> {
+ UiThreadHandler.post( () -> {
+ int size = list == null ? 0 : list.size();
+ mAdapter.setDatas( list );
+ mEmptyPlaceHolder.setVisibility( size > 0 ? View.GONE : View.VISIBLE );
+ updateHistoryMessageCount();
+ } );
+ } );
+
+ mHistoryList.setLayoutManager( new LinearLayoutManager( AbsMogoApplication.getApp() ) );
+ mHistoryList.setAdapter( mAdapter );
+ mHistoryList.setItemAnimator( new PushItemAnimator() );
+ mHistoryList.addOnItemTouchListener( new SwipeItemLayout.OnSwipeItemTouchListener( getContext() ) );
+
+ mRootView.setOnClickListener( view -> {
+ } );
+ GlobalToolsKt.getApis( getContext() ).getMsgCenterApi().registerMsgCenterListener( this );
+ }
+
+ private void exitSelf() {
+ try {
+ getActivity().getSupportFragmentManager().beginTransaction()
+ .remove( this )
+ .commitNowAllowingStateLoss();
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ private void updateHistoryMessageCount() {
+ HandlerUtils.INSTANCE.getMBgHandler().post( () -> {
+ int count = 0;
+ try {
+ count = PushRepository.Companion.getPushRepository().getPushBeanDao().getAllCount();
+ } catch ( Exception e ) {
+ count = 0;
+ }
+ renderHistoryMessageCount( count );
+ } );
+ }
+
+ private void renderHistoryMessageCount( int count ) {
+ UiThreadHandler.post( () -> {
+ try {
+ mTitle.setText( count > 0 ? "历史消息(" + count + ")" : "历史消息" );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ } );
+ }
+
+ @Override
+ public void onMsgChanged( boolean hasMsg, int amount ) {
+ HandlerUtils.INSTANCE.getMBgHandler().post( () -> {
+ mViewModel.setList( PushRepository.Companion.getPushRepository().getAll() );
+ } );
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ }
+
+ @NonNull
+ @Override
+ protected MessageHistoryPresenter createPresenter() {
+ return new MessageHistoryPresenter( this );
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ GlobalToolsKt.getApis( getContext() ).getMsgCenterApi().unregisterMsgCenterListener( this );
+ }
+}
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryPresenter.java b/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryPresenter.java
new file mode 100644
index 0000000000..836da23c93
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryPresenter.java
@@ -0,0 +1,17 @@
+package com.mogo.module.push.fragment;
+
+import com.mogo.commons.mvp.Presenter;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/1
+ *
+ * 描述
+ */
+class MessageHistoryPresenter extends Presenter< MessageHistoryView > {
+
+ public MessageHistoryPresenter( MessageHistoryView view ) {
+ super( view );
+ }
+}
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryView.java b/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryView.java
new file mode 100644
index 0000000000..4ad76d5b6b
--- /dev/null
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryView.java
@@ -0,0 +1,13 @@
+package com.mogo.module.push.fragment;
+
+import com.mogo.commons.mvp.IView;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/9/1
+ *
+ * 描述
+ */
+interface MessageHistoryView extends IView {
+}
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/repository/PushRepository.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/repository/PushRepository.kt
index c48ae6ea08..9c50449846 100644
--- a/modules/mogo-module-push/src/main/java/com/mogo/module/push/repository/PushRepository.kt
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/repository/PushRepository.kt
@@ -85,6 +85,12 @@ class PushRepository(mContext: Context) {
}
pushBeanQueue.offer(bean)
}
+ if ( bean != null) {
+ HandlerUtils.mBgHandler.post {
+ pushBeanDao.insertAll(bean)
+ updateMsgNum()
+ }
+ }
startIterate()
}
})
@@ -158,13 +164,6 @@ class PushRepository(mContext: Context) {
}
fun iterateNext(needSave: Boolean = false) {
- if (needSave && pushViewModel.pushBean != null) {
- val bean = pushViewModel.pushBean!!
- HandlerUtils.mBgHandler.post {
- pushBeanDao.insertAll(bean)
- updateMsgNum()
- }
- }
try {
val nextBean = pushBeanQueue.peek()
if (nextBean == null) {
diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/utils/AnimatorUtils.kt b/modules/mogo-module-push/src/main/java/com/mogo/module/push/utils/AnimatorUtils.kt
index 44f9b5b7fe..e121e2e957 100644
--- a/modules/mogo-module-push/src/main/java/com/mogo/module/push/utils/AnimatorUtils.kt
+++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/utils/AnimatorUtils.kt
@@ -4,8 +4,11 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.get
import androidx.core.view.isNotEmpty
+import com.mogo.utils.logger.Logger
-fun startClearAnimator(root: ViewGroup, method: () -> Unit) {
+val TAG: String = "AnimatorUtils.kt"
+
+fun startClearAnimator(root: ViewGroup, runnable: Runnable) {
if (root.isNotEmpty()) {
var view: View
var size = root.childCount - 1
@@ -13,13 +16,19 @@ fun startClearAnimator(root: ViewGroup, method: () -> Unit) {
view = root[i]
view.animate().translationX(-view.width.toFloat()).apply {
if (i == 0) {
- withEndAction(method)
+ try {
+ withEndAction(runnable)
+ } catch (e: Exception) {
+ Logger.e(TAG, e, "startClearAnimator->withEndAction")
+ }
}
duration = 200
startDelay = 100 * (size - i).toLong()
}
}
} else {
- method()
+ runnable?.apply {
+ run()
+ }
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_close.png b/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_close.png
old mode 100644
new mode 100755
index 73e64634fd..c1381dc44c
Binary files a/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_close.png and b/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_close.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_message_background.9.png b/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_message_background.9.png
new file mode 100644
index 0000000000..a4c313e353
Binary files /dev/null and b/modules/mogo-module-push/src/main/res/drawable-ldpi/module_push_message_background.9.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable-mdpi/module_push_close.png b/modules/mogo-module-push/src/main/res/drawable-mdpi/module_push_close.png
new file mode 100755
index 0000000000..c1381dc44c
Binary files /dev/null and b/modules/mogo-module-push/src/main/res/drawable-mdpi/module_push_close.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable-mdpi/module_push_message_background.9.png b/modules/mogo-module-push/src/main/res/drawable-mdpi/module_push_message_background.9.png
new file mode 100644
index 0000000000..a4c313e353
Binary files /dev/null and b/modules/mogo-module-push/src/main/res/drawable-mdpi/module_push_message_background.9.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_close.png b/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_close.png
old mode 100644
new mode 100755
index 71a46c2cc2..bb3e2b1195
Binary files a/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_close.png and b/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_close.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_message_background.9.png b/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_message_background.9.png
new file mode 100644
index 0000000000..1de561aa65
Binary files /dev/null and b/modules/mogo-module-push/src/main/res/drawable-xhdpi/module_push_message_background.9.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable/module_push_activity_clear_bg.xml b/modules/mogo-module-push/src/main/res/drawable/module_push_clear_bg.xml
similarity index 100%
rename from modules/mogo-module-push/src/main/res/drawable/module_push_activity_clear_bg.xml
rename to modules/mogo-module-push/src/main/res/drawable/module_push_clear_bg.xml
diff --git a/modules/mogo-module-push/src/main/res/drawable/module_push_close.png b/modules/mogo-module-push/src/main/res/drawable/module_push_close.png
old mode 100644
new mode 100755
index 71a46c2cc2..c1381dc44c
Binary files a/modules/mogo-module-push/src/main/res/drawable/module_push_close.png and b/modules/mogo-module-push/src/main/res/drawable/module_push_close.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable/module_push_message_background.9.png b/modules/mogo-module-push/src/main/res/drawable/module_push_message_background.9.png
new file mode 100644
index 0000000000..a4c313e353
Binary files /dev/null and b/modules/mogo-module-push/src/main/res/drawable/module_push_message_background.9.png differ
diff --git a/modules/mogo-module-push/src/main/res/drawable/module_push_recycler_item_background.xml b/modules/mogo-module-push/src/main/res/drawable/module_push_recycler_item_background.xml
index d755aba46d..2c16e3f684 100644
--- a/modules/mogo-module-push/src/main/res/drawable/module_push_recycler_item_background.xml
+++ b/modules/mogo-module-push/src/main/res/drawable/module_push_recycler_item_background.xml
@@ -2,8 +2,8 @@
-
-
+
+
- true
- @android:style/Animation.Translucent
- - @drawable/module_push_message_activity_background
+ - @drawable/module_push_message_background
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt
index 1c2ccc322d..fe57ab63b7 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt
@@ -149,13 +149,13 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
SettingManager.mapType = checkedId
when (checkedId) {
R.id.rb_navi_day -> {
- SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_Light)
+ SearchApisHolder.getApis().adasControllerApi.changeAdasControlMode(EnumMapUI.Type_Light)
}
R.id.rb_navi_night -> {
- SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_Night)
+ SearchApisHolder.getApis().adasControllerApi.changeAdasControlMode(EnumMapUI.Type_Night)
}
R.id.rb_navi_auto -> {
- SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night)
+ SearchApisHolder.getApis().adasControllerApi.changeAdasControlMode(EnumMapUI.Type_AUTO_LIGHT_Night)
}
}
}
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 05fbe60ff6..37d8c41c8d 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
@@ -30,6 +30,7 @@ import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
+import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
import com.mogo.module.service.intent.IntentHandlerFactory;
@@ -224,9 +225,10 @@ public class MogoServices implements IMogoMapListener,
/**
* 手动刷新回调
*/
- private RefreshCallback mCustomRefreshCallback = new RefreshCallback() {
+ private RefreshCallback mCustomRefreshCallback = new RefreshCallback< MarkerResponse >() {
@Override
- public void onSuccess( Object o ) {
+ public void onSuccess( MarkerResponse o ) {
+ MapMarkerManager.getInstance().onSyncMarkerResponse( o );
mLoopRequest = false;
// 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略
mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true );
@@ -241,9 +243,10 @@ public class MogoServices implements IMogoMapListener,
/**
* 自动刷新回调
*/
- private RefreshCallback mAutoRefreshCallback = new RefreshCallback() {
+ private RefreshCallback mAutoRefreshCallback = new RefreshCallback() {
@Override
- public void onSuccess( Object o ) {
+ public void onSuccess( MarkerResponse o ) {
+ MapMarkerManager.getInstance().onSyncMarkerResponse( o );
mLoopRequest = false;
Logger.d( TAG, "request Success." );
invokeAutoRefreshStrategy();
@@ -269,7 +272,7 @@ public class MogoServices implements IMogoMapListener,
/**
* 当前限速
*/
- private int mCurrentLimit = 0;
+ private int mCurrentLimit = -1;
private boolean mIsMainPageFirstResume = true;
@@ -436,7 +439,7 @@ public class MogoServices implements IMogoMapListener,
Logger.w( TAG, "lonLat is null." );
return;
}
- mRefreshModel.refreshData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback );
+ mRefreshModel.refreshExplorerWayData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback );
MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount );
@@ -481,6 +484,7 @@ public class MogoServices implements IMogoMapListener,
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER );
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_SEND );
filter.addAction( MogoReceiver.ACTION_MOGO );
+ filter.addAction(MogoReceiver.ACTION_TXZ_BLOCK_SEARCH);
try {
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
Logger.i( TAG, "register voice receiver." );
@@ -817,7 +821,6 @@ public class MogoServices implements IMogoMapListener,
return;
}
-
if ( mCurrentLimit == traffic.getSpeedLimit() ) {
return;
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
index 54cc5110db..6339b4f7f8 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
@@ -335,6 +335,9 @@ public class MockIntentHandler implements IntentHandler {
case 17:
DebugConfig.setRequestOnlineCarData( intent.getBooleanExtra( "status", true ) );
break;
+ case 30:
+ MarkerServiceHandler.getMapService().getMapUIController().forceRender();
+ break;
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java
index 32eb7a0152..ab59552339 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java
@@ -32,6 +32,10 @@ public class LauncherCardRefreshStrategy {
return type;
}
+ public void next(){
+ getType();
+ }
+
public int getLimit() {
return type.limit;
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java
index 825c071feb..40935255db 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java
@@ -5,10 +5,12 @@ import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.text.TextUtils;
import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.ParamsProvider;
+import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.voice.AIAssist;
-import com.mogo.commons.voice.VoicePreemptType;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.entity.MarkerResponse;
@@ -16,10 +18,23 @@ import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.network.RefreshCallback;
import com.mogo.module.service.network.RefreshModel;
+import com.mogo.module.service.network.ZhidaoRefreshModel;
+import com.mogo.module.service.network.bean.LauncherCardAdvertisementData;
+import com.mogo.service.passport.IMogoTicketCallback;
import com.mogo.utils.AppUtils;
+import com.mogo.utils.NetworkUtils;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.storage.SharedPrefsMgr;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
public
/**
* @author congtaowang
@@ -37,13 +52,39 @@ class LauncherCardRefresher {
private static volatile LauncherCardRefresher sInstance;
- public static final int MSG_REFRESH = 2020;
- public static final int MSG_TTS_TIP = 2021;
- public static final long ONE_MINUTE = 15 * 1000L;
+ // 刷新道路事件/车友
+ public static final int MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA = 2020;
+ // 开始引导策略
+ public static final int MSG_INDUCE = 2019;
+ // 刷新卡片默认显示内容
+ public static final int MSG_REFRESH_DEFAULT_CARD = 2021;
+ // 刷新卡片广告
+ public static final int MSG_REFRESH_ADVERTISEMENT = 2022;
+ // 加载网络配置数据
+ public static final int MSG_LOAD_NET_CONFIG = 2023;
+ // 默认播报
+ public static final int MSG_START_LOOP_DEFAULT_CARD = 2024;
+ public static final long ONE_MINUTE = 60 * 1000L;
public static final long ONE_DAY = 24 * 60 * ONE_MINUTE;
+ private String mLaunchTTSText;
+ private long mDefaultTTSPlayInterval = 30 * ONE_MINUTE;
+ private LauncherCardAdvertisementData.LauncherCardAdvertisement mDefaultLauncherCardConfig;
+ private List< LauncherCardAdvertisementData.LauncherCardAdvertisement > mAdvertisements;
+
+ /**
+ * 默认播报/后台配置播报次数限制
+ */
+ private int mDefaultConfigCounter = 0;
+
+ /**
+ * 因为缓存ticket失效导致失败的情况,需要重新请求ticket然后再次获取数据,这里重试3次
+ */
+ private int mRefreshTicketCounter = 0;
private LauncherCardRefresher( Context context ) {
mContext = context;
+ mRefreshModel = new RefreshModel( mContext );
+ mZhidaoRefreshModel = new ZhidaoRefreshModel( mContext );
}
public static LauncherCardRefresher getInstance( Context context ) {
@@ -74,17 +115,30 @@ class LauncherCardRefresher {
return;
}
switch ( msg.what ) {
- case MSG_REFRESH:
+ case MSG_LOAD_NET_CONFIG:
+ loadNetworkConfigStrategy();
+ break;
+ case MSG_REFRESH_DEFAULT_CARD:
+ renderDefaultLauncherCardConfig( false );
+ mRefreshStrategy = mRefreshStrategy.getNext();
+ restart();
+ break;
+ case MSG_INDUCE:
+ handleInduceStrategy();
+ break;
+ case MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA:
try {
- handleRefreshMsg();
+ handleRefreshExplorerWayOrOnlineCarMsg();
} catch ( Exception e ) {
Logger.e( TAG, e, "error when refresh launcher card." );
}
break;
- case MSG_TTS_TIP:
- playTTS();
- mRefreshStrategy = mRefreshStrategy.getNext();
- restart();
+ case MSG_START_LOOP_DEFAULT_CARD:
+ renderDefaultLauncherCardConfig( false );
+ break;
+ case MSG_REFRESH_ADVERTISEMENT:
+ int index = msg.arg1;// 当前广告索引
+ loopRenderAdvertisements( index );
break;
}
}
@@ -94,17 +148,18 @@ class LauncherCardRefresher {
private boolean mRefreshStop = true;
private boolean mStart = false;
private RefreshModel mRefreshModel;
- private LauncherCardRefreshStrategy mRefreshStrategy = new LauncherCardRefreshStrategy(
- 2 * ONE_MINUTE,
- new LauncherCardRefreshStrategy(
- 3 * ONE_MINUTE,
- new LauncherCardRefreshStrategy(
- 20 * ONE_MINUTE,
- null,
- MSG_REFRESH ),
- MSG_REFRESH ),
- MSG_TTS_TIP
+ private ZhidaoRefreshModel mZhidaoRefreshModel;
+
+ private LauncherCardRefreshStrategy mExplorerWayOrOnlineCarDataStrategy = new LauncherCardRefreshStrategy(
+ 20 * ONE_MINUTE,null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA
);
+ private LauncherCardRefreshStrategy mInduceStrategy = new LauncherCardRefreshStrategy(
+ 3 * ONE_MINUTE,mExplorerWayOrOnlineCarDataStrategy, MSG_INDUCE
+ );
+ private LauncherCardRefreshStrategy mLauncherCardConfigStrategy = new LauncherCardRefreshStrategy(
+ 2 * ONE_MINUTE,mInduceStrategy, MSG_REFRESH_DEFAULT_CARD
+ );
+ private LauncherCardRefreshStrategy mRefreshStrategy = mLauncherCardConfigStrategy;
public void start() {
if ( DebugConfig.isLauncher() || DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_BYD ) {
@@ -113,33 +168,38 @@ class LauncherCardRefresher {
if ( mStart ) {
return;
}
-
- int counter = SharedPrefsMgr.getInstance( mContext ).getInt( KEY_LauncherCardTipCounter, 0 );
- if ( counter >= 5 ) {
- long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L );
- if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_DAY ) {
- stop();
- return;
- } else {
- SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, 0 );
- counter = 0;
- SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, 0L );
- }
- }
- mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() );
Logger.d( TAG, "start" );
+ mLaunchTTSText = mContext.getString( R.string.module_service_open_app_tip );
+ mDefaultConfigCounter = 0;
+ mRefreshTicketCounter = 0;
+ mRefreshStrategy = mLauncherCardConfigStrategy;
+ // 延时加载数据,已保证accOn之后网络恢复正常
+ long delay = ONE_MINUTE;
+ if ( NetworkUtils.isConnected( mContext ) ) {
+ delay = 0L;
+ }
+ mHandler.sendEmptyMessageDelayed( MSG_LOAD_NET_CONFIG, delay );
+ startInduceStrategy();
+ }
+
+ /**
+ * 引导策略:本地策略 & 网络策略
+ */
+ private void startInduceStrategy() {
+ mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() );
mRefreshStop = false;
mStart = true;
-
- SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, ++counter );
- SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, System.currentTimeMillis() );
}
public void stop() {
mRefreshStop = true;
mStart = false;
- mHandler.removeMessages( MSG_REFRESH );
- mHandler.removeMessages( MSG_TTS_TIP );
+ mHandler.removeMessages( MSG_INDUCE );
+ mHandler.removeMessages( MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA );
+ mHandler.removeMessages( MSG_REFRESH_DEFAULT_CARD );
+ mHandler.removeMessages( MSG_START_LOOP_DEFAULT_CARD );
+ mHandler.removeMessages( MSG_REFRESH_ADVERTISEMENT );
+ mHandler.removeMessages( MSG_LOAD_NET_CONFIG );
Logger.d( TAG, "stop" );
}
@@ -148,104 +208,112 @@ class LauncherCardRefresher {
return;
}
mRefreshStop = false;
- mHandler.removeMessages( MSG_REFRESH );
- mHandler.removeMessages( MSG_TTS_TIP );
+ mHandler.removeMessages( mRefreshStrategy.getMsgType() );
mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() );
}
- private void handleRefreshMsg() {
- if ( mRefreshModel == null ) {
- mRefreshModel = new RefreshModel( mContext );
+ /**
+ * 开始诱导策略
+ * 第一次如果有活动,则优先播报活动,否则播报道路事件/车友
+ * 后面的按各自的时间间隔播报
+ */
+ private void handleInduceStrategy() {
+ if ( mAdvertisements != null && !mAdvertisements.isEmpty() ) {
+ loopRenderAdvertisements( 0 );
+ startNextRefreshStrategy();
+ } else {
+ handleRefreshExplorerWayOrOnlineCarMsg();
}
+ }
+
+ private void startNextRefreshStrategy() {
+ mRefreshStrategy = mRefreshStrategy.getNext();
+ restart();
+ }
+
+ private void handleRefreshExplorerWayOrOnlineCarMsg() {
MogoLocation location = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation();
if ( location == null ) {
restart();
return;
}
MogoLatLng latLng = new MogoLatLng( location.getLatitude(), location.getLongitude() );
- if ( mRefreshStrategy.getType() == LauncherCardRefreshType.ExploreWay ) {
- handleRefreshExplorerWayData( latLng );
- } else {
- handleRefreshOnlineCarData( latLng );
- }
+ handleRefreshExplorerWayOrOnlineCarData( latLng, mRefreshStrategy.getType() );
}
- private void handleRefreshExplorerWayData( MogoLatLng latLng ) {
+ private void handleRefreshExplorerWayOrOnlineCarData( MogoLatLng latLng, LauncherCardRefreshType type ) {
mRefreshModel.refreshDataSync( latLng,
mRefreshStrategy.getRadius(),
mRefreshStrategy.getLimit(),
new RefreshCallback< MarkerResponse >() {
@Override
public void onSuccess( MarkerResponse response ) {
- notifyLauncherCard( LauncherCardRefreshType.ExploreWay, response );
- mRefreshStrategy = mRefreshStrategy.getNext();
- restart();
+ notifyRefreshChanged( type, response );
+ startNextRefreshStrategy();
}
@Override
public void onFail() {
- mRefreshStrategy = mRefreshStrategy.getNext();
- restart();
- }
- } );
- }
-
- private void handleRefreshOnlineCarData( MogoLatLng latLng ) {
- mRefreshModel.queryOnLineCarWithRoute( latLng,
- false,
- true,
- mRefreshStrategy.getRadius(),
- mRefreshStrategy.getLimit(),
- new RefreshCallback< MarkerResponse >() {
- @Override
- public void onSuccess( MarkerResponse response ) {
- notifyLauncherCard( LauncherCardRefreshType.OnlineCar, response );
- mRefreshStrategy = mRefreshStrategy.getNext();
- restart();
- }
-
- @Override
- public void onFail() {
- mRefreshStrategy = mRefreshStrategy.getNext();
- restart();
+ startNextRefreshStrategy();
}
} );
}
- private boolean notifyLauncherCard( LauncherCardRefreshType type, MarkerResponse response ) {
+ private boolean notifyRefreshChanged( LauncherCardRefreshType type, MarkerResponse response ) {
if ( response == null || response.getResult() == null ) {
return false;
}
String tts = mContext.getString( R.string.module_service_launcher_card_tips );
String info = mContext.getString( R.string.module_service_launcher_card_info );
+
+ LauncherCardRefreshType target = null;
+ int size = 0;
if ( type == LauncherCardRefreshType.ExploreWay ) {
- if ( response.getResult().getExploreWay() == null || response.getResult().getExploreWay().isEmpty() ) {
- return false;
+ if ( response.getResult().getExploreWay() != null && !response.getResult().getExploreWay().isEmpty() ) {
+ target = type;
+ size = response.getResult().getExploreWay().size();
+ } else if ( response.getResult().getOnlineCar() != null && !response.getResult().getOnlineCar().isEmpty() ) {
+ target = LauncherCardRefreshType.OnlineCar;
+ size = response.getResult().getOnlineCar().size();
}
- int size = response.getResult().getExploreWay().size();
- speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ) );
- notifyLauncherCard( String.format( info, size, mRefreshStrategy.getDesc() ), size, tts );
- } else {
- if ( response.getResult().getOnlineCar() == null || response.getResult().getOnlineCar().isEmpty() ) {
- return false;
+ } else if ( type == LauncherCardRefreshType.OnlineCar ) {
+ if ( response.getResult().getOnlineCar() != null && !response.getResult().getOnlineCar().isEmpty() ) {
+ target = type;
+ size = response.getResult().getOnlineCar().size();
+ } else if ( response.getResult().getExploreWay() != null && !response.getResult().getExploreWay().isEmpty() ) {
+ target = LauncherCardRefreshType.ExploreWay;
+ size = response.getResult().getExploreWay().size();
}
- int size = response.getResult().getOnlineCar().size();
- speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ) );
- notifyLauncherCard( String.format( info, size, mRefreshStrategy.getDesc() ), size , tts);
}
+
+ Logger.d( TAG, "返回数据情况:道路事件:%s, 车友: %s", response.getResult().getExploreWay() == null ? 0 : response.getResult().getExploreWay().size(),
+ response.getResult().getOnlineCar() == null ? 0 : response.getResult().getOnlineCar().size() );
+
+ if ( size == 0 ) {
+ return false;
+ }
+
+ if ( target != type ) {
+ mRefreshStrategy.next();// 本次请求到的数据类型和播报类型不一致,则下次再次请求本次类型~
+ }
+
+ speakTTS( tts = String.format( tts, size, target.desc ), true );
+ notifyRefreshChanged( String.format( info, size, target.desc ), size, tts );
return true;
}
- private void speakTTS( String msg ) {
- if ( AppUtils.isAppForeground( mContext ) ) {
- return;
+ private void speakTTS( String msg, boolean checkAppForeground ) {
+ if ( checkAppForeground ) {
+ if ( AppUtils.isAppForeground( mContext ) ) {
+ return;
+ }
}
Logger.d( TAG, msg );
AIAssist.getInstance( mContext ).speakTTSVoice( msg );
}
- private void notifyLauncherCard( String info, int amount, String tts ) {
+ private void notifyRefreshChanged( String info, int amount, String tts ) {
Intent intent = new Intent( "com.mogo.launcher.v2x" );
intent.putExtra( "v2x_warning_type", "20000" );
intent.putExtra( "v2x_warining_timeout", 20 * 1000 );
@@ -256,11 +324,211 @@ class LauncherCardRefresher {
Logger.d( TAG, "发送广播到桌面卡片." );
}
- private void playTTS() {
+ /**
+ * 1. 刷新默认卡片样式
+ *
+ * 2. 播报默认卡片语音
+ *
+ * @param sendConfigOnly 仅发送配置到
+ */
+ private void renderDefaultLauncherCardConfig( boolean sendConfigOnly ) {
+ if ( mDefaultLauncherCardConfig != null ) {
+ long curr = System.currentTimeMillis();
+ if ( mDefaultLauncherCardConfig.endTime > curr && mDefaultLauncherCardConfig.startTime < curr ) {
+ Intent intent = new Intent( "com.mogo.launcher.v2x.card" );
+ intent.putExtra( "v2x_card_title", mDefaultLauncherCardConfig.name );
+ intent.putExtra( "v2x_card_icon", mDefaultLauncherCardConfig.filePath );
+ intent.putExtra( "v2x_card_content", mDefaultLauncherCardConfig.cardContent );
+ intent.putExtra( "v2x_card_button_name", mDefaultLauncherCardConfig.buttonContent );
+ intent.putExtra( "v2x_card_startTime", mDefaultLauncherCardConfig.startTime );
+ intent.putExtra( "v2x_card_endTime", mDefaultLauncherCardConfig.endTime );
+ intent.putExtra( "v2x_card_is_default", true );
+ mContext.sendBroadcast( intent );
+ Logger.d( TAG, "发送默认配置广播到桌面卡片." );
+ if ( !TextUtils.isEmpty( mDefaultLauncherCardConfig.content ) ) {
+ mLaunchTTSText = mDefaultLauncherCardConfig.content;
+ }
+ if ( mDefaultLauncherCardConfig.popupNum > 0 ) {
+ mDefaultTTSPlayInterval = mDefaultLauncherCardConfig.popupNum * ONE_MINUTE;
+ }
+ }
+ }
+
+ if ( sendConfigOnly ) {
+ return;
+ }
+
+ if ( mDefaultConfigCounter++ >= 3 ) {
+ return;
+ }
+
+ int counter = SharedPrefsMgr.getInstance( mContext ).getInt( KEY_LauncherCardTipCounter, 0 );
+ if ( counter >= 5 ) {
+ long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L );
+ if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_DAY ) {
+ return;
+ } else {
+ SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, 0 );
+ counter = 0;
+ SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, 0L );
+ }
+ }
+ SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, ++counter );
+ SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, System.currentTimeMillis() );
+
try {
- AIAssist.getInstance( mContext ).speakTTSVoice( mContext.getString( R.string.module_service_open_app_tip ) );
+ speakTTS( mLaunchTTSText, true );
} catch ( Exception e ) {
e.printStackTrace();
}
+ startLoopDefaultConfigStrategy();
+ }
+
+ /**
+ * 请求广告数据
+ */
+ private void loadNetworkConfigStrategy() {
+ final Map< String, Object > query = new ParamsProvider.Builder( mContext )
+ .append( "modelType", 30 )
+ .build();
+ mZhidaoRefreshModel.getRefreshApiService().getCarAdvertisingList( query )
+ .subscribeOn( Schedulers.io() )
+ .observeOn( AndroidSchedulers.mainThread() )
+ .subscribe( new SubscribeImpl< LauncherCardAdvertisementData >( RequestOptions.create( mContext ) ) {
+ @Override
+ public void onError( Throwable e ) {
+ super.onError( e );
+ Logger.e( TAG, e, "获取配置失败" );
+ }
+
+ @Override
+ public void onSuccess( LauncherCardAdvertisementData data ) {
+ super.onSuccess( data );
+ if ( data == null || data.result == null ) {
+ Logger.d( TAG, "carAdvertisingList is empty." );
+ return;
+ }
+ Logger.d( TAG, "获取配置成功" );
+ handleGotCarAdvertisingList( data.result );
+ }
+
+ @Override
+ public void onError( String message, int code ) {
+ super.onError( message, code );
+ if ( code == 100046 ) {
+ refreshTicket();
+ }
+ Logger.e( TAG, "获取配置失败 msg = %s, code = %s", message, code );
+ }
+ } );
+
+ }
+
+ private void refreshTicket() {
+ mRefreshTicketCounter++;
+ Logger.d( TAG, "刷新ticket" );
+ MarkerServiceHandler.getApis().getPassportManagerApi().requestTicket( new IMogoTicketCallback() {
+ @Override
+ public void onTicketGot( String ticket ) {
+ Logger.d( TAG, "ticket=%s", ticket );
+ if ( mRefreshTicketCounter < 3 ) {
+ loadNetworkConfigStrategy();
+ }
+ }
+
+ @Override
+ public void onError( int code, String msg ) {
+ Logger.d( TAG, "code=%s, msg=%s", code, msg );
+ }
+
+ @Override
+ public void onLoginSuccess( String token, String sn ) {
+ Logger.d( TAG, "token=%s, sn=%s", token, sn );
+ }
+ } );
+ }
+
+ private void handleGotCarAdvertisingList( List< LauncherCardAdvertisementData.LauncherCardAdvertisement > data ) {
+ if ( data == null ) {
+ mAdvertisements = null;
+ return;
+ }
+
+ mAdvertisements = new ArrayList<>();
+ for ( LauncherCardAdvertisementData.LauncherCardAdvertisement launcherCardAdvertisement : data ) {
+ if ( launcherCardAdvertisement == null ) {
+ continue;
+ }
+ if ( launcherCardAdvertisement.cardType == LauncherCardAdvertisementData.TYPE_DEFAULT_CONFIG ) {
+ mDefaultLauncherCardConfig = launcherCardAdvertisement;
+ renderDefaultLauncherCardConfig( true );
+ } else if ( launcherCardAdvertisement.cardType == LauncherCardAdvertisementData.TYPE_ACTIVITY ) {
+ long curr = System.currentTimeMillis();
+ if ( curr > launcherCardAdvertisement.startTime && curr < launcherCardAdvertisement.endTime ) {
+ mAdvertisements.add( launcherCardAdvertisement );
+ } else {
+ Logger.w( TAG, "广告已过期 %s", launcherCardAdvertisement.cardContent );
+ }
+ }
+ }
+
+ if ( !mAdvertisements.isEmpty() && mAdvertisements.size() > 1 ) {
+ LauncherCardAdvertisementData.LauncherCardAdvertisement[] sorted = new LauncherCardAdvertisementData.LauncherCardAdvertisement[mAdvertisements.size()];
+ sorted = mAdvertisements.toArray( sorted );
+ Arrays.sort( sorted, ( ( o1, o2 ) -> {
+ return o1.sort > o2.sort ? 1 : ( o1.sort == o2.sort ? 0 : -1 );
+ } ) );
+ mAdvertisements = Arrays.asList( sorted );
+ }
+ }
+
+ /**
+ * 默认播报 / 后台配置默认项播报策略
+ */
+ private void startLoopDefaultConfigStrategy() {
+ Message msg = Message.obtain();
+ msg.what = MSG_START_LOOP_DEFAULT_CARD;
+ mHandler.sendMessageDelayed( msg, mDefaultTTSPlayInterval );
+ }
+
+ private void loopRenderAdvertisements( int index ) {
+ try {
+ index = index % mAdvertisements.size();
+ LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement = mAdvertisements.get( index );
+ Message msg = Message.obtain();
+ msg.what = MSG_REFRESH_ADVERTISEMENT;
+ msg.arg1 = ++index;
+ mHandler.sendMessageDelayed( msg, advertisement.popupNum * ONE_MINUTE );
+ renderAdvertisement( advertisement );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "loopRenderAdvertisements" );
+ }
+ }
+
+ /**
+ * 刷新广告
+ */
+ private void renderAdvertisement( LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement ) {
+ if ( advertisement == null ) {
+ return;
+ }
+ long curr = System.currentTimeMillis();
+ if ( advertisement.endTime > curr && advertisement.startTime < curr ) {
+ Intent intent = new Intent( "com.mogo.launcher.v2x.card" );
+ intent.putExtra( "v2x_card_title", advertisement.name );
+ intent.putExtra( "v2x_card_icon", advertisement.filePath );
+ intent.putExtra( "v2x_card_content", advertisement.cardContent );
+ intent.putExtra( "v2x_card_button_name", advertisement.buttonContent );
+ intent.putExtra( "v2x_card_startTime", advertisement.startTime );
+ intent.putExtra( "v2x_card_endTime", advertisement.endTime );
+ intent.putExtra( "v2x_card_activity_id", advertisement.id );
+ intent.putExtra( "v2x_card_timeout", 20 * 1000 );
+ intent.putExtra( "v2x_card_is_default", false );
+ mContext.sendBroadcast( intent );
+ if ( !AppUtils.isAppForeground( mContext ) ) {
+ speakTTS( advertisement.content, true );
+ }
+ Logger.d( TAG, "发送广告配置广播到桌面卡片." );
+ }
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java
index cbc4d5ab89..195bd75c83 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java
@@ -13,16 +13,12 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.entity.MarkerExploreWay;
-import com.mogo.module.common.entity.MarkerNoveltyInfo;
-import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
-import java.util.Random;
-
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
@@ -56,7 +52,7 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
}
protected void initView( Context context ) {
- LayoutInflater.from( context ).inflate( R.layout.view_map_marker_info, this );
+ LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout_info, this );
ivUserHead = findViewById( R.id.ivUserHead );
ivIcon = findViewById( R.id.ivIcon );
clMarkerContent = findViewById( R.id.clMarkerContent );
@@ -94,10 +90,10 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
ivIcon.setImageResource( R.drawable.icon_map_marker_refuel );
break;
case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2_white );
break;
case MarkerPoiTypeEnum.ROAD_CLOSED:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2_white );
break;
case MarkerPoiTypeEnum.SHOP_DISCOUNT:
ivIcon.setImageResource( R.drawable.icon_map_marker_shop_discount );
@@ -106,43 +102,43 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
ivIcon.setImageResource( R.drawable.icon_map_marker_4s );
break;
case MarkerPoiTypeEnum.FOURS_ROAD_WORK:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2_white );
break;
case MarkerPoiTypeEnum.FOURS_BLOCK_UP:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_white );
break;
case MarkerPoiTypeEnum.FOURS_PONDING:
- ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2_white );
break;
case MarkerPoiTypeEnum.FOURS_SHOP_FREE:
ivIcon.setImageResource( R.drawable.icon_map_marker_shop );
break;
case MarkerPoiTypeEnum.FOURS_FOG:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2_light );
+ ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2_white );
break;
case MarkerPoiTypeEnum.FOURS_ICE:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2_light );
+ ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2_white );
break;
case MarkerPoiTypeEnum.FOURS_PARKING:
ivIcon.setImageResource( R.drawable.module_service_ic_rc_parking2 );
break;
case MarkerPoiTypeEnum.FOURS_ACCIDENT:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3_light );
+ ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3_white );
break;
case MarkerPoiTypeEnum.FOURS_NEALY:
ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news );
break;
case MarkerPoiTypeEnum.FOURS_LIVING:
- ivIcon.setImageResource( R.drawable.icon_map_marker_living_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_living_white );
break;
case MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park_light );
+ ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park_white );
break;
case MarkerPoiTypeEnum.ROAD_SLIPPERY:
ivIcon.setImageResource( R.drawable.module_service_ic_rc_road_slippery_light );
break;
default:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_light );
+ ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_white );
break;
}
}
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 ef109221fe..63427473cf 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
@@ -14,6 +14,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.marker.anim.OnMarkerAnimationListener;
+import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.ModuleNames;
import com.mogo.module.common.entity.MarkerCarPois;
import com.mogo.module.common.entity.MarkerCardResult;
@@ -32,8 +33,10 @@ import com.mogo.module.service.Utils;
import com.mogo.module.service.network.RefreshCallback;
import com.mogo.module.service.network.RefreshModel;
import com.mogo.module.service.utils.ViewUtils;
+import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.module.IMogoBizActionDoneListener;
+import com.mogo.utils.AppUtils;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.UiThreadHandler;
@@ -58,7 +61,8 @@ import java.util.Map;
*/
public class MapMarkerManager implements IMogoMarkerClickListener,
IMogoOnMessageListener< MarkerResponse >,
- IMogoBizActionDoneListener {
+ IMogoBizActionDoneListener,
+ IMogoADASControlStatusChangedListener {
private static final String TAG = "MapMarkerManager";
private Context mContext;
@@ -105,9 +109,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
mContext = context.getApplicationContext();
mRefreshModel = new RefreshModel( mContext );
- // 长连接
- MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this );
+ // 长连接 - 长链变短链
+// MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this );
MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this );
+ MarkerServiceHandler.getApis().getRegisterCenterApi().registerADASControlStatusChangedListener( TAG, this );
}
// ACC ON 的时候重置为true,ACC OFF 设置为 false
@@ -668,7 +673,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
try {
return drawMapMarkerImpl( markerShowEntity, zIndex );
} catch ( Exception e ) {
- e.printStackTrace();
+ Logger.e( TAG, e, "drawMapMarker" );
return null;
}
}
@@ -715,6 +720,16 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
} );
}
+ public void onSyncMarkerResponse( MarkerResponse response ) {
+ if ( ignoreDrawRequest() ) {
+ return;
+ }
+ Logger.d( TAG, "接收到了地图大而全数据" );
+ runOnTargetThread( () -> {
+ drawMapMarker( response );
+ } );
+ }
+
public void syncLocation( double lon, double lat ) {
mCarLatLng = new MogoLatLng( lat, lon );
}
@@ -864,6 +879,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
// 平滑移动
private void startSmooth( IMogoMarker iMogoMarker, MarkerOnlineCar markerOnlineCar,
MarkerLocation markerLocation ) {
+ if ( iMogoMarker == null ) {
+ return;
+ }
List< MarkerCarPois > poiList = markerOnlineCar.getPois();
if ( filterErrorPoint( poiList ) ) {
return;
@@ -966,4 +984,21 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
}
}
+
+ @Override
+ public void onMapUiModeChanged( EnumMapUI mapUI ) {
+ switch ( mapUI ) {
+ case Type_Light:
+ case Type_Night:
+ if ( !AppUtils.isAppForeground( mContext ) ) {
+ return;
+ }
+ if ( mLastDataResult != null ) {
+ MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_ROAD_CONDITION );
+ drawMarkerByCurrentType( mLastDataResult );
+ mLastCheckMarker = null;
+ }
+ break;
+ }
+ }
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
index c79ba0cfb6..23bd427c71 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
@@ -3,7 +3,6 @@ package com.mogo.module.service.marker;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
-import android.widget.ImageView;
import androidx.annotation.Nullable;
@@ -43,7 +42,7 @@ public class MapMarkerView extends MapMarkerBaseView {
}
protected void initView( Context context ) {
- LayoutInflater.from( context ).inflate( R.layout.view_map_marker, this );
+ LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout, this );
ivIcon = findViewById( R.id.ivIcon );
ivCar = findViewById( R.id.ivCar );
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java
index b038ac044e..42048bc2eb 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/UserDataMarkerInfoWindowAdapter.java
@@ -8,7 +8,6 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.map.marker.IMogoInfoWindowAdapter;
@@ -22,7 +21,6 @@ import com.mogo.module.service.R;
import com.mogo.module.service.network.RefreshApiService;
import com.mogo.module.service.network.RefreshModel;
import com.mogo.module.service.network.bean.DemoUserInfoEntity;
-import com.mogo.service.MogoServicePaths;
import com.mogo.service.imageloader.MogoImageView;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.utils.UiThreadHandler;
@@ -92,7 +90,7 @@ public class UserDataMarkerInfoWindowAdapter implements IMogoInfoWindowAdapter {
}
if ( mInfoWindowView == null ) {
- mInfoWindowView = LayoutInflater.from( mContext ).inflate( R.layout.view_map_data_user_info_window, null );
+ mInfoWindowView = LayoutInflater.from( mContext ).inflate( R.layout.modudle_services_marker_info_window_layout, null );
mContentContainer = mInfoWindowView.findViewById( R.id.module_service_id_marker_content );
mUserHeader = mInfoWindowView.findViewById( R.id.module_service_id_user_header );
mContent = mInfoWindowView.findViewById( R.id.module_service_id_content );
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java
index 27c5136805..8f58de2d68 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java
@@ -7,12 +7,10 @@ import com.mogo.module.service.network.bean.DemoUserInfoEntity;
import java.util.Map;
import io.reactivex.Observable;
-import io.reactivex.Single;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
-import retrofit2.http.QueryMap;
/**
* @author congtaowang
@@ -32,12 +30,11 @@ public interface RefreshApiService {
@FormUrlEncoded
@POST( "/yycp-launcherSnapshot/user/queryOnLineCarWithRoute" )
- Observable queryOnLineCarWithRoute(@FieldMap Map< String, Object > parameters );
+ Observable< MarkerResponse > queryOnLineCarWithRoute( @FieldMap Map< String, Object > parameters );
/**
* 查询演示车用户信息
*/
- @GET("/yycp-launcherSnapshot/mock/getMockUserInfos")
+ @GET( "/yycp-launcherSnapshot/mock/getMockUserInfos" )
Observable< DemoUserInfoEntity > getMockUsers();
-
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java
index 1634eaa782..c368ec6956 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java
@@ -17,6 +17,7 @@ import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
+import java.util.List;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -47,6 +48,10 @@ public class RefreshModel {
this.mRefreshApiService = network.create( RefreshApiService.class, getNetHost() );
}
+ public RefreshApiService getRefreshApiService() {
+ return mRefreshApiService;
+ }
+
public static String getNetHost() {
switch ( DebugConfig.getNetMode() ) {
case DebugConfig.NET_MODE_DEV:
@@ -105,6 +110,51 @@ public class RefreshModel {
}
}
+ public void refreshExplorerWayData( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
+ if ( mRefreshApiService != null ) {
+ final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
+ final RefreshBody refreshBody = new RefreshBody();
+ refreshBody.limit = limit;
+ refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng );
+ refreshBody.radius = radius;
+ refreshBody.dataType.add( ServiceConst.CARD_TYPE_ROAD_CONDITION );
+
+ String data = GsonUtil.jsonFromObject( refreshBody );
+ query.put( "data", data );
+ Logger.d( TAG, data );
+
+
+ mRefreshApiService.refreshDataSync( query )
+ .subscribeOn( Schedulers.io() )
+ .observeOn( AndroidSchedulers.mainThread() )
+ .subscribe( new SubscribeImpl< MarkerResponse >( RequestOptions.create( mContext ) ) {
+ @Override
+ public void onSuccess( MarkerResponse o ) {
+ super.onSuccess( o );
+ if ( callback != null ) {
+ callback.onSuccess( o );
+ }
+ }
+
+ @Override
+ public void onError( Throwable e ) {
+ super.onError( e );
+ if ( callback != null ) {
+ callback.onFail();
+ }
+ }
+
+ @Override
+ public void onError( String message, int code ) {
+ super.onError( message, code );
+ if ( callback != null ) {
+ callback.onFail();
+ }
+ }
+ } );
+ }
+ }
+
public void refreshDataSync( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
if ( mRefreshApiService != null ) {
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
@@ -113,6 +163,7 @@ public class RefreshModel {
refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng );
refreshBody.radius = radius;
refreshBody.dataType.add( ServiceConst.CARD_TYPE_ROAD_CONDITION );
+ refreshBody.dataType.add( ServiceConst.CARD_TYPE_USER_DATA );
String data = GsonUtil.jsonFromObject( refreshBody );
query.put( "data", data );
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java
new file mode 100644
index 0000000000..50a7870617
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java
@@ -0,0 +1,28 @@
+package com.mogo.module.service.network;
+
+import com.mogo.module.service.network.bean.LauncherCardAdvertisementData;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.QueryMap;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 接口描述
+ */
+public interface ZhidaoApiService {
+
+ /**
+ * 获取桌面卡片配置
+ *
+ * @param parameters
+ * @return
+ */
+ @GET( "/marketing/advertisingPosition/getCarAdvertisingList" )
+ Observable< LauncherCardAdvertisementData > getCarAdvertisingList( @QueryMap Map< String, Object > parameters );
+
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java
new file mode 100644
index 0000000000..599e2883bb
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java
@@ -0,0 +1,66 @@
+package com.mogo.module.service.network;
+
+import android.content.Context;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.commons.data.BaseData;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.ParamsProvider;
+import com.mogo.commons.network.SubscribeImpl;
+import com.mogo.commons.network.Utils;
+import com.mogo.map.MogoLatLng;
+import com.mogo.module.common.entity.MarkerResponse;
+import com.mogo.module.service.ServiceConst;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.network.IMogoNetwork;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
+import com.mogo.utils.network.utils.GsonUtil;
+
+import java.util.Map;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 使用智道的域名
+ */
+public class ZhidaoRefreshModel {
+
+ private static final String TAG = "RefreshModel";
+
+ public static final String HOST_DEV = "http://carlife-test.zhidaohulian.com";
+ public static final String HOST_TEST = "http://carlife-test.zhidaohulian.com";
+ public static final String HOST_DEMO = "http://carlife-test.zhidaohulian.com";
+ public static final String HOST_PRODUCT = "https://api.zhidaohulian.com";
+
+ private final Context mContext;
+ private ZhidaoApiService mRefreshApiService;
+
+ public ZhidaoRefreshModel( Context context ) {
+ this.mContext = context;
+ IMogoNetwork network = ( IMogoNetwork ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_NETWORK ).navigation( context );
+ this.mRefreshApiService = network.create( ZhidaoApiService.class, getNetHost() );
+ }
+
+ public ZhidaoApiService getRefreshApiService() {
+ return mRefreshApiService;
+ }
+
+ public static String getNetHost() {
+ switch ( DebugConfig.getNetMode() ) {
+ case DebugConfig.NET_MODE_DEV:
+ return HOST_DEV;
+ case DebugConfig.NET_MODE_QA:
+ return HOST_TEST;
+ case DebugConfig.NET_MODE_DEMO:
+ return HOST_DEMO;
+ default:
+ return HOST_PRODUCT;
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java
new file mode 100644
index 0000000000..5edeb7193f
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java
@@ -0,0 +1,47 @@
+package com.mogo.module.service.network.bean;
+
+import com.mogo.commons.data.BaseData;
+
+import java.util.List;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/8/24
+ *
+ * 描述
+ */
+class LauncherCardAdvertisementData extends BaseData {
+
+ // 启动展示
+ public static final int TYPE_DEFAULT_CONFIG = 1;
+ // 活动
+ public static final int TYPE_ACTIVITY = 2;
+
+ public List< LauncherCardAdvertisement > result;
+
+ /**
+ * 卡片名称 name
+ * 卡片类型 fileType 1-启动展示、2-活动播报
+ * 卡片样式 filePath
+ * 卡片文案 cardContent
+ * 按钮文案 url
+ * 语音文案 content
+ * 活动期限 是时间戳 ,还是标准时间 startTime endTime Date类型
+ * 播报频次(间隔):popupNum
+ * 活动展示顺序 sort
+ */
+ public static class LauncherCardAdvertisement {
+ public String id;
+ public String name;
+ public int cardType;
+ public String filePath;
+ public String cardContent;
+ public String buttonContent;
+ public String content;
+ public int sort;
+ public long startTime;
+ public long endTime;
+ public int popupNum; // 间隔时间:分钟
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java
index a5d1c55c1c..8e3a0abc71 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java
@@ -6,6 +6,7 @@ import android.content.Intent;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.intent.IntentHandlerFactory;
+import com.mogo.utils.logger.Logger;
public
/**
@@ -15,6 +16,8 @@ public
* 描述
*/
class AccStatusReceiver extends BroadcastReceiver {
+
+ private static final String TAG = "AccStatusReceiver";
// 诺威达 acc 状态
public static final String PARAM_ACC_STATUS = "extra_mcu_state";
@@ -24,6 +27,7 @@ class AccStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive( Context context, Intent intent ) {
+ Logger.d(TAG, "收到诺威达acc广播");
MarkerServiceHandler.init( context );
IntentHandlerFactory.getInstance().handle( context, intent.getAction(), intent );
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java
index d1c1876a1e..b6294cb3e6 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java
@@ -60,6 +60,9 @@ public class MogoReceiver extends BroadcastReceiver {
public static final String ACTION_MOGO = "com.mogo.ACTION";
+ // 同行者 查询xxx堵不堵发送的广播
+ public static final String ACTION_TXZ_BLOCK_SEARCH = "com.zhidao.roadcondition.roadinfo";
+
private IMogoIntentManager mMogoIntentManager;
public MogoReceiver(Context context) {
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_living_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_pondingl2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_off2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_block_up2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_check2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_road_work2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident3_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_illegal_park_light.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_illegal_park_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_illegal_park_light.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_illegal_park_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/bg_map_marker_dark.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_services_marker_bkg.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-ldpi/bg_map_marker_dark.png
rename to modules/mogo-module-service/src/main/res/drawable-ldpi/module_services_marker_bkg.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/bg_map_marker_dark.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/bg_map_marker_dark.png
deleted file mode 100644
index f12819ecfc..0000000000
Binary files a/modules/mogo-module-service/src/main/res/drawable-mdpi/bg_map_marker_dark.png and /dev/null differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_living_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_living_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_living_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_living_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_pondingl2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_pondingl2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_pondingl2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_pondingl2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_off2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_off2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_off2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_off2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_up2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_up2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_up2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_block_up2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_check2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_check2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_check2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_check2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_work2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_work2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_work2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/icon_map_marker_road_work2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_accident3_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_accident3_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_accident3_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_accident3_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_dark_frog2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_dark_frog2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_dark_frog2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_dark_frog2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_freeze2_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_freeze2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_freeze2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_freeze2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_illegal_park_light.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_illegal_park_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_illegal_park_light.png
rename to modules/mogo-module-service/src/main/res/drawable-mdpi/module_service_ic_rc_illegal_park_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-mdpi/module_services_marker_bkg.png b/modules/mogo-module-service/src/main/res/drawable-mdpi/module_services_marker_bkg.png
new file mode 100755
index 0000000000..2dff68497d
Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-mdpi/module_services_marker_bkg.png differ
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_living_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_pondingl2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_off2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_block_up2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_check2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_road_work2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident3_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_illegal_park_light.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_illegal_park_white.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_illegal_park_light.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_illegal_park_white.png
diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_services_marker_bkg.png
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable-xhdpi/bg_map_marker_dark.png
rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/module_services_marker_bkg.png
diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_driver_blue_info.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_driver_info_window_bkg.xml
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable/module_services_driver_blue_info.xml
rename to modules/mogo-module-service/src/main/res/drawable/module_services_driver_info_window_bkg.xml
diff --git a/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_triangle_grey.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_info_window_cursor.xml
similarity index 100%
rename from modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_triangle_grey.xml
rename to modules/mogo-module-service/src/main/res/drawable/module_services_info_window_cursor.xml
diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_info_window_layout.xml
similarity index 94%
rename from modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml
rename to modules/mogo-module-service/src/main/res/layout/modudle_services_marker_info_window_layout.xml
index fe110eba36..80cb17242d 100644
--- a/modules/mogo-module-service/src/main/res/layout/view_map_data_user_info_window.xml
+++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_info_window_layout.xml
@@ -14,7 +14,7 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/module_services_info_window_height"
android:paddingRight="@dimen/module_service_id_marker_content_paddingRight"
- android:background="@drawable/module_services_driver_blue_info"
+ android:background="@drawable/module_services_driver_info_window_bkg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -40,7 +40,7 @@
android:ellipsize="end"
android:minWidth="@dimen/module_service_content_minWidth"
android:singleLine="true"
- android:textColor="#ffffff"
+ android:textColor="@color/module_service_info_window_content_textColor"
android:textSize="@dimen/module_service_content_textSize"
app:layout_constraintStart_toEndOf="@+id/module_service_id_user_header"
app:layout_constraintTop_toTopOf="@+id/module_service_id_user_header"
@@ -86,7 +86,7 @@
+ android:src="@drawable/module_services_info_window_cursor" />
\ No newline at end of file
diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
similarity index 95%
rename from modules/mogo-module-service/src/main/res/layout/view_map_marker.xml
rename to modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
index 7651639cf3..c8b06a6245 100644
--- a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml
+++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
@@ -12,7 +12,7 @@
+
+ #ffffff
+
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index 2ed2004c55..7f0c7b741d 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -3,53 +3,61 @@ package com.mogo.module.share;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
+import android.os.Handler;
+import android.os.Message;
+import android.util.ArrayMap;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.SubscribeImpl;
+import com.mogo.commons.network.Utils;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
-import com.mogo.map.listener.IMogoMapListener;
-import com.mogo.map.location.IMogoLocationListener;
-import com.mogo.map.marker.IMogoMarkerClickListener;
-import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.map.location.MogoLocation;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant;
import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
+import com.mogo.module.common.dialog.BaseFloatDialog;
+import com.mogo.module.share.bean.FixableButton;
+import com.mogo.module.share.bean.ShareButtonConfigResponse;
+import com.mogo.module.share.bean.ShareConfigRequest;
import com.mogo.module.share.bean.StepAfterAuth;
+import com.mogo.module.share.constant.HttpConstant;
import com.mogo.module.share.constant.ShareConstants;
+import com.mogo.module.share.dialog.GridFixableShareDialog;
import com.mogo.module.share.dialog.LaucherShareDialog;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.module.share.manager.UploadHelper;
+import com.mogo.module.share.net.ShareApiService;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
-import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.share.IMogoShareManager;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.tanlu.IMogoTanluProvider;
import com.mogo.service.tanlu.TanluUploadParams;
+import com.mogo.utils.NetworkUtils;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.mogo.utils.storage.SharedPrefsMgr;
import org.jetbrains.annotations.NotNull;
import org.json.JSONObject;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.schedulers.Schedulers;
+
import static com.mogo.module.share.bean.StepAfterAuthKt.STEP_AFTER_AUTH_TYPE_SEEK_HELP;
import static com.mogo.module.share.bean.StepAfterAuthKt.STEP_AFTER_AUTH_TYPE_SHOW_DIALOG;
import static com.mogo.module.share.bean.StepAfterAuthKt.STEP_AFTER_AUTH_TYPE_UPLOAD;
-import static com.mogo.module.share.constant.ShareConstants.CMD_CANCEL_SHARE;
-import static com.mogo.module.share.constant.ShareConstants.CMD_ROAD_CLOSURE;
-import static com.mogo.module.share.constant.ShareConstants.CMD_TRAFFIC_CHECK;
-import static com.mogo.module.share.constant.ShareConstants.CMD_UPLOAD_ACCIDENT;
-import static com.mogo.module.share.constant.ShareConstants.CMD_UPLOAD_BLOCK;
+import static com.mogo.module.share.constant.ShareConstants.KEY_SHARE_CONFIG;
import static com.mogo.module.share.constant.ShareConstants.UNWAKE_CANCEL_SHARE;
import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_ACCIDENT;
import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_DENSE_FOG;
@@ -62,12 +70,7 @@ import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_ROAD_I
import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_SEEK_HELP;
import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_STAGNANT_WATER;
import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_TRAFFIC_CHECK;
-import static com.mogo.module.share.constant.ShareConstants.UPLOAD_DENSE_FOG;
import static com.mogo.module.share.constant.ShareConstants.UPLOAD_REAL_TIME_TRAFFIC;
-import static com.mogo.module.share.constant.ShareConstants.UPLOAD_ROAD_CONSTRUCTION;
-import static com.mogo.module.share.constant.ShareConstants.UPLOAD_ROAD_ICY;
-import static com.mogo.module.share.constant.ShareConstants.UPLOAD_SEEK_HELP;
-import static com.mogo.module.share.constant.ShareConstants.UPLOAD_STAGNANT_WATER;
import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_GO_TO_SHARE;
import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_NO_REPLY_SHARE_DIALOG_CLOSE;
import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_PUB_ROAD_CONDITION;
@@ -91,11 +94,14 @@ import static com.mogo.service.tanlu.IMogoTanluProvider.TYPE_TRAFFIC_CHECK;
* @since 2020-01-10
*/
@Route(path = MogoServicePaths.PATH_SHARE)
-public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMogoVoiceCmdCallBack {
+public class ShareControl implements IMogoShareManager, IMogoIntentListener,
+ IMogoVoiceCmdCallBack, Handler.Callback {
private static final String TAG = "ShareControl";
private Context mContext;
- private LaucherShareDialog mShareDialog;
+// private LaucherShareDialog mShareDialog;
+
+ private BaseFloatDialog mShareDialog;
private IMogoAuthorizeModuleManager authorizeModuleManager;
private IMogoIntentManager intentManager;
@@ -112,7 +118,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
@Override
public void dismissShareDialog() {
if (mShareDialog != null) {
- Logger.d(TAG,"dismissShareDialog");
+ Logger.d(TAG, "dismissShareDialog");
mShareDialog.dismiss();
}
}
@@ -124,8 +130,12 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
private void realShowDialog() {
if (mShareDialog == null) {
- Logger.d(TAG,"realShowDialog context : " + mContext);
- mShareDialog = new LaucherShareDialog(mContext);
+ Logger.d(TAG, "realShowDialog context : " + mContext);
+ if(DebugConfig.isLauncher()){
+ mShareDialog = new LaucherShareDialog(mContext);
+ }else {
+ mShareDialog = new GridFixableShareDialog(mContext);
+ }
mShareDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
@@ -136,11 +146,11 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
mShareDialog.show();
}
- private StepAfterAuth stepAfterAuth = new StepAfterAuth(-1, "",false);
+ private StepAfterAuth stepAfterAuth = new StepAfterAuth(-1, "", false);
@Override
public void init(Context context) {
- Logger.d(TAG,"start init====");
+ Logger.d(TAG, "start init====");
mContext = context;
ServiceApisManager.INSTANCE.init(context);
authorizeModuleManager =
@@ -154,8 +164,10 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case STEP_AFTER_AUTH_TYPE_UPLOAD:
TanluUploadParams params =
- new TanluUploadParams(stepAfterAuth.getUploadType(), IMogoTanluProvider.UPLOAD_FROM_VOICE);
- UploadHelper.INSTANCE.upload(mContext, params,stepAfterAuth.getForcePlayVoice());
+ new TanluUploadParams(stepAfterAuth.getUploadType(),
+ IMogoTanluProvider.UPLOAD_FROM_VOICE);
+ UploadHelper.INSTANCE.upload(mContext, params,
+ stepAfterAuth.getForcePlayVoice());
dismissShareDialog();
break;
case STEP_AFTER_AUTH_TYPE_SEEK_HELP:
@@ -185,33 +197,11 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
intentManager.registerIntentListener(VOICE_CMD_NO_REPLY_SHARE_DIALOG_CLOSE, this);
intentManager.registerIntentListener(UNWAKE_UPLOAD_ROAD_CONDITION, this);
- // 免唤醒词注册
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_BLOCK,
- CMD_UPLOAD_BLOCK, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_TRAFFIC_CHECK,
- CMD_TRAFFIC_CHECK, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CLOSURE,
- CMD_ROAD_CLOSURE, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_CANCEL_SHARE,
- CMD_CANCEL_SHARE, this);
- if (DebugConfig.getAIType() == DebugConfig.AI_TYPE_TXZ) {
- // 使用同行者语义你的话,增加如下免唤醒词
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ACCIDENT,
- CMD_UPLOAD_ACCIDENT, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC,
- UPLOAD_REAL_TIME_TRAFFIC, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_SEEK_HELP,
- UPLOAD_SEEK_HELP, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_STAGNANT_WATER,
- UPLOAD_STAGNANT_WATER, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_ICY,
- UPLOAD_ROAD_ICY, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_DENSE_FOG,
- UPLOAD_DENSE_FOG, this);
- AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CONSTRUCTION,
- UPLOAD_ROAD_CONSTRUCTION, this);
- }
- if(!DebugConfig.isLauncher()) {
+ // 免唤醒词注册,全局免唤醒
+ AIAssist.getInstance(mContext).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC,
+ UPLOAD_REAL_TIME_TRAFFIC, ShareControl.this);
+
+ if (!DebugConfig.isLauncher()) {
ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
@@ -221,7 +211,23 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
}
});
}
- Logger.d(TAG,"init over====");
+
+ if (!DebugConfig.isLauncher()) {
+ ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.ACC_STATUS, new IMogoStatusChangedListener() {
+ @Override
+ public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
+ if (isTrue) {
+ queryShareConfigRetryTime = 0;
+ queryShareButtonConfig();
+ }
+ }
+ });
+
+ // 获取分享框配置信息
+ queryShareConfigRetryTime = 0;
+ queryShareButtonConfig();
+ }
+ Logger.d(TAG, "init over====");
}
@Override
@@ -233,42 +239,42 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case UNWAKE_UPLOAD_ROAD_BLOCK:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK, false);
} else {
uploadFromVoice(TYPE_BLOCK);
}
break;
case UNWAKE_UPLOAD_TRAFFIC_CHECK:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK, false);
} else {
uploadFromVoice(TYPE_TRAFFIC_CHECK);
}
break;
case UNWAKE_UPLOAD_ROAD_CLOSURE:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE, false);
} else {
uploadFromVoice(TYPE_CLOSURE);
}
break;
case UNWAKE_UPLOAD_ACCIDENT:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT, false);
} else {
uploadFromVoice(TYPE_ACCIDENT);
}
break;
case UNWAKE_UPLOAD_REAL_TIME_TRAFFIC:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC, false);
} else {
uploadFromVoice(TYPE_REAL_TIME_TRAFFIC);
}
break;
case UNWAKE_UPLOAD_SEEK_HELP:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_BLOCK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_BLOCK, false);
} else {
seekHelp();
}
@@ -276,28 +282,28 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case UNWAKE_UPLOAD_STAGNANT_WATER:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER, false);
} else {
uploadFromVoice(TYPE_STAGNANT_WATER);
}
break;
case UNWAKE_UPLOAD_ROAD_ICY:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY, false);
} else {
uploadFromVoice(TYPE_ROAD_ICY);
}
break;
case UNWAKE_UPLOAD_DENSE_FOG:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG, false);
} else {
uploadFromVoice(TYPE_DENSE_FOG);
}
break;
case UNWAKE_UPLOAD_ROAD_CONSTRUCTION:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION, false);
} else {
uploadFromVoice(TYPE_ROAD_CONSTRUCTION);
}
@@ -306,6 +312,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
}
}
+
@Override
public void onIntentReceived(String intentStr, Intent intent) {
// 此处只接受处理语音相关广播
@@ -314,7 +321,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
switch (intentStr) {
case VOICE_CMD_PUB_TROUBLE_HELP:
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG, false);
} else {
// 开启服务,准备上报求助
seekHelp();
@@ -328,7 +335,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
switch (ob) {
case "积水":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER, false);
} else {
uploadFromVoice(TYPE_STAGNANT_WATER);
dismissShareDialog();
@@ -336,7 +343,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "积冰":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY, false);
} else {
uploadFromVoice(TYPE_ROAD_ICY);
dismissShareDialog();
@@ -344,7 +351,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "雾":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG, false);
} else {
uploadFromVoice(TYPE_DENSE_FOG);
dismissShareDialog();
@@ -352,7 +359,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "交通事故":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT, false);
} else {
uploadFromVoice(TYPE_ACCIDENT);
dismissShareDialog();
@@ -360,7 +367,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "施工":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION, false);
} else {
uploadFromVoice(TYPE_ROAD_CONSTRUCTION);
dismissShareDialog();
@@ -368,7 +375,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "封路":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE, false);
} else {
uploadFromVoice(TYPE_CLOSURE);
dismissShareDialog();
@@ -376,7 +383,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "交通检查":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK, false);
} else {
uploadFromVoice(TYPE_TRAFFIC_CHECK);
dismissShareDialog();
@@ -385,6 +392,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
default:
break;
}
+ break;
case VOICE_CMD_PUB_ROAD_CONDITION:
String obCondition =
new JSONObject(intent.getStringExtra("data")).opt("obj").toString();
@@ -392,7 +400,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
switch (obCondition) {
case "路况":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC, false);
} else {
Logger.d(TAG, "分享框准备触发上报实时路况");
uploadFromVoice(TYPE_REAL_TIME_TRAFFIC);
@@ -401,7 +409,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
break;
case "拥堵":
if (needAuth()) {
- goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK,false);
+ goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK, false);
} else {
Logger.d(TAG, "分享框准备触发上报拥堵");
uploadFromVoice(TYPE_BLOCK);
@@ -433,7 +441,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
private void uploadFromVoice(String eventType) {
TanluUploadParams params = new TanluUploadParams(eventType,
IMogoTanluProvider.UPLOAD_FROM_VOICE);
- UploadHelper.INSTANCE.upload(mContext, params,false);
+ UploadHelper.INSTANCE.upload(mContext, params, false);
}
private void seekHelp() {
@@ -447,66 +455,84 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo
return authorizeModuleManager.needAuthorize(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE);
}
- private void goAuth(int type, String uploadType,boolean forcePlayVoice) {
+ private void goAuth(int type, String uploadType, boolean forcePlayVoice) {
stepAfterAuth.setType(type);
stepAfterAuth.setUploadType(uploadType);
stepAfterAuth.setForcePlayVoice(forcePlayVoice);
authorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE);
}
- @Override
- public Fragment createFragment(Context context, Bundle data) {
- return null;
+ private void queryShareButtonConfig() {
+ if (NetworkUtils.isConnected(mContext)) {
+ // 有网,直接请求
+ MogoLocation location =
+ ServiceApisManager.serviceApis.getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
+ Map params = new ArrayMap<>();
+ ShareConfigRequest request = new ShareConfigRequest(Utils.getSn(),
+ location.getAdCode());
+ params.put("data", request.toJson());
+ ServiceApisManager.serviceApis.getNetworkApi().create(ShareApiService.class,
+ HttpConstant.Companion.getNetHost()).queryShareButtonConfig(params).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(ShareButtonConfigResponse o) {
+ super.onSuccess(o);
+ String config = "";
+ if (o.getResult() != null) {
+ List btnList = o.getResult().getData();
+ if (btnList != null && !btnList.isEmpty()) {
+ config = GsonUtil.jsonFromObject(btnList);
+ Logger.d(TAG, "获取分享框成功:" + config);
+ } else {
+ Logger.d(TAG, "获取分享框成功,但是data没有内容");
+ }
+ } else {
+ Logger.d(TAG, "获取分享框成功,但是detailMsg没有内容");
+ }
+ Logger.d(TAG, "获取分享框配置成功: " + config);
+ SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ super.onError(e);
+ Logger.d(TAG, "获取分享框配置失败: " + e.getMessage());
+ retryQueryShareConfig();
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ Logger.d(TAG, "获取分享框配置失败: " + code + ", " + message);
+ retryQueryShareConfig();
+ }
+ });
+ } else {
+ // 重试
+ retryQueryShareConfig();
+ }
+ queryShareConfigRetryTime++;
}
- @Override
- public View createView(Context context) {
- return null;
+ private static final int MSG_QUERY_SHARE_CONFIG_RETRY = 1001;
+ private int queryShareConfigRetryTime = 0;
+ private static final int QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD = 10;
+
+ private void retryQueryShareConfig() {
+ if (queryShareConfigRetryTime > QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD) {
+ // 重试次数超过QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD,不再重试
+ return;
+ }
+ handler.sendEmptyMessageDelayed(MSG_QUERY_SHARE_CONFIG_RETRY, 3000);
}
- @NonNull
- @Override
- public String getModuleName() {
- return "ShareControl";
- }
+ private Handler handler = new Handler(this);
@Override
- public IMogoModuleLifecycle getCardLifecycle() {
- return null;
- }
-
- @Override
- public IMogoMapListener getMapListener() {
- return null;
- }
-
- @Override
- public int getType() {
- return 0;
- }
-
- @Override
- public IMogoNaviListener getNaviListener() {
- return null;
- }
-
- @Override
- public IMogoLocationListener getLocationListener() {
- return null;
- }
-
- @Override
- public IMogoMarkerClickListener getMarkerClickListener() {
- return null;
- }
-
- @Override
- public String getAppPackage() {
- return "";
- }
-
- @Override
- public String getAppName() {
- return "";
+ public boolean handleMessage(Message msg) {
+ if (msg.what == MSG_QUERY_SHARE_CONFIG_RETRY) {
+ queryShareButtonConfig();
+ return true;
+ }
+ return false;
}
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt
index eb49f7af20..a09b3a53c0 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt
@@ -4,9 +4,11 @@ import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.facade.template.IProvider
import com.alibaba.android.arouter.launcher.ARouter
+import com.mogo.commons.debug.DebugConfig
import com.mogo.module.share.constant.ACCIDENT_STRATEGY_SHARE_PUSH_TYPE
import com.mogo.module.share.constant.S_TAG
import com.mogo.module.share.strategyreceiver.AccidentStrategyReceiver
+import com.mogo.module.share.strategyreceiver.BlockStrategy
import com.mogo.service.IMogoServiceApis
import com.mogo.service.MogoServicePaths
import com.mogo.utils.logger.Logger
@@ -18,10 +20,19 @@ import com.mogo.utils.logger.Logger
*/
@Route(path = MogoServicePaths.PATH_STRATEGY_SHARE)
class StrategyShareProvider : IProvider {
- override fun init(context: Context?) {
+ private lateinit var blockStrategy: BlockStrategy
+ override fun init(context: Context) {
Logger.d(S_TAG, "策略上报Provider初始化====")
val apis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis
+ blockStrategy = BlockStrategy(context, apis)
// 注册事故
apis.getSocketManagerApi(context).registerOnMessageListener(ACCIDENT_STRATEGY_SHARE_PUSH_TYPE, AccidentStrategyReceiver(apis))
+ if(!DebugConfig.isLauncher()) {
+ apis.registerCenterApi.registerMogoLocationListener(MogoServicePaths.PATH_STRATEGY_SHARE) {
+// Logger.d(S_TAG,"定位发生变化,准备记录速度: ${it.speed}")
+
+ blockStrategy.recordSpeed(it.speed * 3.6F)
+ }
+ }
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt
new file mode 100644
index 0000000000..a0fa5d68ab
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt
@@ -0,0 +1,47 @@
+package com.mogo.module.share.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.mogo.module.share.R
+import com.mogo.module.share.bean.FixableButton
+import com.mogo.utils.glide.GlideApp
+
+/**
+ * 可配置按钮适配器
+ *
+ * @author tongchenfei
+ */
+class ShareBtnAdapter(val context:Context): RecyclerView.Adapter() {
+ private val btnList = ArrayList()
+ var btnClickListener:((btn:FixableButton)->Unit)? = null
+ fun setFixableButtonList(btns:ArrayList) {
+ btnList.clear()
+ btnList.addAll(btns)
+ notifyDataSetChanged()
+ }
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShareBtnViewHolder {
+ val view = LayoutInflater.from(context).inflate(R.layout.item_share_btn, parent,false)
+ return ShareBtnViewHolder(view)
+ }
+
+ override fun getItemCount(): Int =btnList.size
+
+ override fun onBindViewHolder(holder: ShareBtnViewHolder, position: Int) = holder.bindData(btnList[position])
+
+ inner class ShareBtnViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
+ private val ivIcon:ImageView = itemView.findViewById(R.id.ivShareIcon)
+ private val tvContent:TextView = itemView.findViewById(R.id.tvShareContent)
+ fun bindData(btn: FixableButton) {
+ GlideApp.with(context).load(btn.iconRes).into(ivIcon)
+ tvContent.text = btn.title
+ ivIcon.setOnClickListener {
+ btnClickListener?.invoke(btn)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt
new file mode 100644
index 0000000000..bb747b4a14
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt
@@ -0,0 +1,6 @@
+package com.mogo.module.share.bean
+
+import com.mogo.commons.data.BaseData
+
+data class AverateSpeedResponse(var result:Result):BaseData()
+data class Result(var upload:Boolean,var poiType:String)
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt
new file mode 100644
index 0000000000..27a3faa812
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/FixableButton.kt
@@ -0,0 +1,33 @@
+package com.mogo.module.share.bean
+
+import com.mogo.commons.data.BaseData
+import com.mogo.module.share.R
+import com.mogo.service.tanlu.IMogoTanluProvider
+import com.mogo.service.tanlu.IMogoTanluProvider.*
+
+/**
+ * 可配置按钮封装
+ * @author tongchenfei
+ */
+class FixableButton(val id: Int = 0, val poiType: String = "10007", val iconUrl: String = "", val title: String = "拥堵") {
+ val iconRes: Int
+ get() = when (poiType) {
+ TYPE_SEEK_HELP -> R.drawable.share_seek_help
+ TYPE_DENSE_FOG -> R.drawable.share_dense_fog
+ TYPE_ROAD_ICY -> R.drawable.share_road_icy
+ TYPE_STAGNANT_WATER -> R.drawable.share_stagnant_water
+ TYPE_REAL_TIME_TRAFFIC -> R.drawable.share_real_time_traffic
+ TYPE_ROAD_CONSTRUCTION -> R.drawable.share_road_construction
+ TYPE_ACCIDENT -> R.drawable.share_accident
+ TYPE_CLOSURE -> R.drawable.share_road_closure
+ TYPE_TRAFFIC_CHECK -> R.drawable.share_traffic_check
+ TYPE_BLOCK -> R.drawable.share_block_up
+ else -> R.drawable.share_block_up
+ }
+}
+
+class ShareButtonConfigResponse : BaseData() {
+ var result: ShareButtonConfigDetailMsg? = null
+}
+
+data class ShareButtonConfigDetailMsg(var data: List)
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/ShareConfigRequest.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/ShareConfigRequest.kt
new file mode 100644
index 0000000000..7eb289d236
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/ShareConfigRequest.kt
@@ -0,0 +1,9 @@
+package com.mogo.module.share.bean
+
+import com.mogo.utils.network.utils.GsonUtil
+
+class ShareConfigRequest(val sn:String,val adCode:String) {
+ fun toJson():String{
+ return GsonUtil.jsonFromObject(this)
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java
index 242ce5b7b4..e55fcb61c9 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java
@@ -80,6 +80,10 @@ public class ShareConstants {
/**
* 这个是实时路况,不是拥堵,拥堵放在了extention模块里面处理
*/
- public static final String VOICE_CMD_PUB_ROAD_CONDITION = "com.zhidao.pathfinder.report" +
- ".roadCondition";
+ public static final String VOICE_CMD_PUB_ROAD_CONDITION = "com.zhidao.pathfinder.report.roadCondition";
+
+ /**
+ * 分享框配置本地缓存的key
+ */
+ public static final String KEY_SHARE_CONFIG = "SHARE_BUTTON_CONFIG";
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt
index 014701a56d..5866b734f9 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt
@@ -1,4 +1,8 @@
package com.mogo.module.share.constant
const val S_TAG = "StrategyShare"
+
+/**
+ * 目前两个策略上报(事故,拥堵)都是走的这个push
+ */
const val ACCIDENT_STRATEGY_SHARE_PUSH_TYPE = 401013
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt
new file mode 100644
index 0000000000..8b8eaa14ee
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt
@@ -0,0 +1,133 @@
+package com.mogo.module.share.dialog
+
+import android.content.Context
+import android.widget.FrameLayout
+import com.alibaba.android.arouter.launcher.ARouter
+import com.mogo.commons.debug.DebugConfig
+import com.mogo.module.common.dialog.BaseFloatDialog
+import com.mogo.module.common.utils.CarSeries
+import com.mogo.module.share.R
+import com.mogo.module.share.bean.FixableButton
+import com.mogo.module.share.manager.GridBtnManager
+import com.mogo.module.share.manager.ISeekHelpListener
+import com.mogo.module.share.manager.SeekHelpManager
+import com.mogo.module.share.manager.SeekHelpManager.seekHelp
+import com.mogo.module.share.manager.UploadHelper
+import com.mogo.service.IMogoServiceApis
+import com.mogo.service.MogoServicePaths
+import com.mogo.service.analytics.IMogoAnalytics
+import com.mogo.service.statusmanager.IMogoStatusManager
+import com.mogo.service.tanlu.IMogoTanluProvider
+import com.mogo.service.tanlu.TanluUploadParams
+import com.mogo.utils.logger.Logger
+import kotlin.random.Random
+
+/**
+ * 可动态配置的分享对话框
+ *
+ * @author tongchenfei
+ */
+class GridFixableShareDialog(context: Context) : BaseFloatDialog(context) {
+ private val isShown = false
+ private val mAnalytics: IMogoAnalytics
+ private val mStatusManager: IMogoStatusManager
+ private val mApis: IMogoServiceApis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis
+
+ private fun setWrapContent() {
+ val window = window
+ if (CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X) {
+ if (window != null) {
+ val lp = window.attributes
+ lp.width = 1920
+ lp.height = 1080
+ window.attributes = lp
+ }
+ } else {
+ if (window != null) {
+ val lp = window.attributes
+ lp.width = 1024
+ lp.height = 600
+ window.attributes = lp
+ }
+ }
+ }
+
+ private lateinit var gridBtnManager: GridBtnManager
+ private fun initView() {
+ Logger.d(TAG, "test-------3")
+ setContentView(R.layout.dialog_share_with_gridlayout)
+ setWrapContent()
+ gridBtnManager = GridBtnManager(context, findViewById(R.id.moduleShareBtnGridLayout),findViewById(R.id.ivTmpShow))
+ gridBtnManager.setShareClickListener {
+ Logger.d(TAG, "share btn click: $it")
+ if (it.poiType == IMogoTanluProvider.TYPE_SEEK_HELP) {
+ // 发起故障求助
+ Logger.d(TAG, "发起故障求助====")
+ seekHelp(context, seekListener, true)
+ } else {
+ // 上报道路事件
+ Logger.d(TAG, "上报道路事件=====")
+ sendShareReceiver(it.poiType)
+ }
+ dismiss()
+ }
+ findViewById(R.id.flShareDialogContainer).setOnClickListener { dismiss() }
+ }
+
+ private fun randomGenerateBtn() {
+ val random = Random.nextInt(1, 10)
+ gridBtnManager.resetContainer()
+ for (i in 0 until random) {
+ gridBtnManager.generateShareButton(FixableButton(id = i))
+ }
+ }
+
+ private val seekListener: ISeekHelpListener = object : ISeekHelpListener {
+ override fun onSeekHelpSuccess() {
+ Logger.d(TAG, "上报求助完成,成功")
+ SeekHelpManager.removeSeekHelpListener(this)
+ dismiss()
+ }
+
+ override fun onSeekHelpFail() {
+ Logger.d(TAG, "上报求助完成,失败")
+ SeekHelpManager.removeSeekHelpListener(this)
+ dismiss()
+ }
+ }
+
+ /**
+ * 发送广播 1拥堵,2交通检查,3封路
+ */
+ private fun sendShareReceiver(type: String) {
+ val params = TanluUploadParams(type, IMogoTanluProvider.UPLOAD_FROM_USER)
+ UploadHelper.upload(context, params, true)
+ }
+
+ override fun show() {
+ Logger.d(TAG, "onShow====")
+ if (!DebugConfig.isLauncher()) {
+ mApis.adasControllerApi.closeADAS()
+ }
+ gridBtnManager.showShareButton()
+ super.show()
+ }
+
+ override fun dismiss() {
+ Logger.d(TAG, "onDismiss=====")
+ if (!DebugConfig.isLauncher() && mApis.statusManagerApi.isMainPageOnResume) {
+ mApis.adasControllerApi.showADAS()
+ }
+ super.dismiss()
+ }
+
+ companion object {
+ private const val TAG = "GridFixableShareDialog"
+ }
+
+ init {
+ mAnalytics = mApis.analyticsApi
+ mStatusManager = mApis.statusManagerApi
+ initView()
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
index a07777a45f..238667d7fb 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
@@ -2,12 +2,14 @@ package com.mogo.module.share.dialog;
import android.content.Context;
import android.view.View;
+import android.view.Window;
import android.view.WindowManager;
-import android.widget.TextView;
+import android.widget.ImageView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.module.common.dialog.BaseFloatDialog;
+import com.mogo.module.common.utils.CarSeries;
import com.mogo.module.share.R;
import com.mogo.module.share.manager.ISeekHelpListener;
import com.mogo.module.share.manager.SeekHelpManager;
@@ -33,17 +35,17 @@ public class LaucherShareDialog extends BaseFloatDialog implements View.OnClickL
private boolean isShown = false;
- private TextView tvBlock;
- private TextView tvTrafficCheck;
- private TextView tvClosure;
- private TextView tvNeedHelp;
+ private ImageView ivBlock;
+ private ImageView ivTrafficCheck;
+ private ImageView ivClosure;
+ private ImageView ivNeedHelp;
- private TextView tvAccident;
- private TextView tvRealTimeTraffic;
- private TextView tvStagnantWater;
- private TextView tvRoadIcy;
- private TextView tvDenseFog;
- private TextView tvConstruction;
+ private ImageView ivAccident;
+ private ImageView ivRealTimeTraffic;
+ private ImageView ivStagnantWater;
+ private ImageView ivRoadIcy;
+ private ImageView ivDenseFog;
+ private ImageView ivConstruction;
private Context mContext;
private IMogoAnalytics mAnalytics;
@@ -73,7 +75,31 @@ public class LaucherShareDialog extends BaseFloatDialog implements View.OnClickL
initView();
initListener();
}
-
+ private void setWrapContent() {
+ Window window = getWindow();
+ if(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD){
+ if (window != null) {
+ WindowManager.LayoutParams lp = window.getAttributes();
+ lp.width = 1024;
+ lp.height = 600;
+ window.setAttributes(lp);
+ }
+ }else if(CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X){
+ if (window != null) {
+ WindowManager.LayoutParams lp = window.getAttributes();
+ lp.width = 1920;
+ lp.height = 1080;
+ window.setAttributes(lp);
+ }
+ }else{
+ if (window != null) {
+ WindowManager.LayoutParams lp = window.getAttributes();
+ lp.width = 1024;
+ lp.height = 600;
+ window.setAttributes(lp);
+ }
+ }
+ }
private void initView() {
Logger.d(TAG, "test-------3");
setContentView(R.layout.launcher_dialog_share_2);
@@ -86,83 +112,83 @@ public class LaucherShareDialog extends BaseFloatDialog implements View.OnClickL
// });
- tvBlock = findViewById(R.id.tvBlock);
- tvTrafficCheck = findViewById(R.id.tvTrafficCheck);
- tvClosure = findViewById(R.id.tvClosure);
- tvNeedHelp = findViewById(R.id.tvSeekHelp);
+ ivBlock = findViewById(R.id.ivBlock);
+ ivTrafficCheck = findViewById(R.id.ivTrafficCheck);
+ ivClosure = findViewById(R.id.ivClosure);
+ ivNeedHelp = findViewById(R.id.ivSeekHelp);
- tvAccident = findViewById(R.id.tvAccident);
- tvRealTimeTraffic = findViewById(R.id.tvRealTimeTraffic);
- tvStagnantWater = findViewById(R.id.tvStagnantWater);
- tvRoadIcy = findViewById(R.id.tvRoadIcy);
- tvDenseFog = findViewById(R.id.tvDenseFog);
- tvConstruction = findViewById(R.id.tvConstruction);
+ ivAccident = findViewById(R.id.ivAccident);
+ ivRealTimeTraffic = findViewById(R.id.ivRealTimeTraffic);
+ ivStagnantWater = findViewById(R.id.ivStagnantWater);
+ ivRoadIcy = findViewById(R.id.ivRoadIcy);
+ ivDenseFog = findViewById(R.id.ivDenseFog);
+ ivConstruction = findViewById(R.id.ivConstruction);
}
private void initListener() {
- tvBlock.setOnClickListener(this);
- tvNeedHelp.setOnClickListener(this);
- tvTrafficCheck.setOnClickListener(this);
- tvClosure.setOnClickListener(this);
+ ivBlock.setOnClickListener(this);
+ ivNeedHelp.setOnClickListener(this);
+ ivTrafficCheck.setOnClickListener(this);
+ ivClosure.setOnClickListener(this);
- tvAccident.setOnClickListener(this);
- tvRealTimeTraffic.setOnClickListener(this);
- tvStagnantWater.setOnClickListener(this);
- tvRoadIcy.setOnClickListener(this);
- tvDenseFog.setOnClickListener(this);
- tvConstruction.setOnClickListener(this);
+ ivAccident.setOnClickListener(this);
+ ivRealTimeTraffic.setOnClickListener(this);
+ ivStagnantWater.setOnClickListener(this);
+ ivRoadIcy.setOnClickListener(this);
+ ivDenseFog.setOnClickListener(this);
+ ivConstruction.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int id = view.getId();
- if (id == R.id.tvBlock) {
+ if (id == R.id.ivBlock) {
//拥堵
Logger.d(TAG,"点击拥堵");
sendShareReceiver(IMogoTanluProvider.TYPE_BLOCK);
dismiss();
- } else if (id == R.id.tvTrafficCheck) {
+ } else if (id == R.id.ivTrafficCheck) {
//交通检查
Logger.d(TAG,"点击交通检查");
sendShareReceiver(IMogoTanluProvider.TYPE_TRAFFIC_CHECK);
dismiss();
- } else if (id == R.id.tvClosure) {
+ } else if (id == R.id.ivClosure) {
//封路
Logger.d(TAG,"点击封路");
sendShareReceiver(IMogoTanluProvider.TYPE_CLOSURE);
dismiss();
- } else if (id == R.id.tvSeekHelp) {
+ } else if (id == R.id.ivSeekHelp) {
// 故障求助
Logger.d(TAG,"点击求助");
SeekHelpManager.INSTANCE.seekHelp(mContext,seekListener,true);
dismiss();
- } else if (id == R.id.tvAccident) {
+ } else if (id == R.id.ivAccident) {
// 事故
Logger.d(TAG,"点击事故");
sendShareReceiver(IMogoTanluProvider.TYPE_ACCIDENT);
dismiss();
- } else if (id == R.id.tvConstruction) {
+ } else if (id == R.id.ivConstruction) {
// 道路施工
Logger.d(TAG,"点击道路施工");
sendShareReceiver(IMogoTanluProvider.TYPE_ROAD_CONSTRUCTION);
dismiss();
- } else if (id == R.id.tvRealTimeTraffic) {
+ } else if (id == R.id.ivRealTimeTraffic) {
// 实时路况
Logger.d(TAG,"点击实时路况");
sendShareReceiver(IMogoTanluProvider.TYPE_REAL_TIME_TRAFFIC);
dismiss();
- } else if (id == R.id.tvStagnantWater) {
+ } else if (id == R.id.ivStagnantWater) {
// 道路积水
Logger.d(TAG,"点击道路积水");
sendShareReceiver(IMogoTanluProvider.TYPE_STAGNANT_WATER);
dismiss();
- } else if (id == R.id.tvRoadIcy) {
+ } else if (id == R.id.ivRoadIcy) {
// 道路结冰
Logger.d(TAG,"点击道路结冰");
sendShareReceiver(IMogoTanluProvider.TYPE_ROAD_ICY);
dismiss();
- } else if (id == R.id.tvDenseFog) {
+ } else if (id == R.id.ivDenseFog) {
// 浓雾
Logger.d(TAG,"点击浓雾");
sendShareReceiver(IMogoTanluProvider.TYPE_DENSE_FOG);
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt
new file mode 100644
index 0000000000..0ff0380ca3
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt
@@ -0,0 +1,78 @@
+package com.mogo.module.share.manager
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.GridLayout
+import android.widget.ImageView
+import android.widget.TextView
+import com.mogo.module.share.R
+import com.mogo.module.share.bean.FixableButton
+import com.mogo.module.share.constant.ShareConstants
+import com.mogo.service.tanlu.IMogoTanluProvider
+import com.mogo.utils.glide.GlideApp
+import com.mogo.utils.logger.Logger
+import com.mogo.utils.network.utils.GsonUtil
+import com.mogo.utils.storage.SharedPrefsMgr
+
+/**
+ * 用来管理生成对应的分享按钮
+ */
+class GridBtnManager(val context: Context, private val container: GridLayout, private val tmpImg: ImageView) {
+ companion object {
+ const val TAG = "GridBtnManager"
+ }
+
+ private val inflater = LayoutInflater.from(context)
+
+ fun resetContainer() {
+ container.removeAllViews()
+ }
+
+ fun generateShareButton(button: FixableButton): View {
+ val view = inflater.inflate(R.layout.item_share_btn, container, false)
+ val img = view.findViewById(R.id.ivShareIcon)
+ val content = view.findViewById(R.id.tvShareContent)
+ // 优先加载url图片,然后加载资源图片
+ if (button.iconUrl.isNotEmpty()) {
+ GlideApp.with(context).load(button.iconUrl).placeholder(button.iconRes).error(button.iconRes).into(img)
+ } else {
+ GlideApp.with(context).load(button.iconRes).placeholder(button.iconRes).error(button.iconRes).into(img)
+ }
+ content.text = button.title
+ view.setOnClickListener {
+ btnClickListener?.invoke(button)
+ }
+ container.addView(view)
+ return view
+ }
+
+ fun showShareButton() {
+ resetContainer()
+ val config = SharedPrefsMgr.getInstance(context).getString(ShareConstants.KEY_SHARE_CONFIG)
+ Logger.d(TAG, "showDefaultBtns: $config")
+ if (config.isEmpty()) {
+ // 默认的全部十个按钮
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_BLOCK, title = "拥堵"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_TRAFFIC_CHECK, title = "交通检查"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_CLOSURE, title = "封路"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ACCIDENT, title = "事故"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_CONSTRUCTION, title = "道路施工"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_REAL_TIME_TRAFFIC, title = "实时路况"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_SEEK_HELP, title = "故障求助"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_STAGNANT_WATER, title = "道路积水"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_ICY, title = "道路结冰"))
+ generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_DENSE_FOG, title = "浓雾"))
+ } else {
+ val btnList = GsonUtil.arrayFromJson(config, FixableButton::class.java)
+ btnList.forEach { btn ->
+ generateShareButton(btn)
+ }
+ }
+ }
+
+ private var btnClickListener: ((fixableButton: FixableButton) -> Unit)? = null
+ fun setShareClickListener(listener: ((fixableButton: FixableButton) -> Unit)) {
+ btnClickListener = listener
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt
index 770b17831e..62cc8b2584 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt
@@ -6,9 +6,12 @@ import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.voice.AIAssist
import com.mogo.map.MogoLatLng
import com.mogo.map.location.MogoLocation
+import com.mogo.module.share.R
import com.mogo.module.share.ShareControl
import com.mogo.module.share.dialog.LaucherShareDialog
import com.mogo.service.tanlu.TanluUploadParams
+import com.mogo.utils.NetworkUtils
+import com.mogo.utils.TipDrawable
import com.mogo.utils.TipToast
import com.mogo.utils.logger.Logger
@@ -16,26 +19,46 @@ import com.mogo.utils.logger.Logger
* 上报工具类
*/
object UploadHelper {
- fun upload(context:Context, type: TanluUploadParams,forcePlayVoice:Boolean = false) {
- if(ServiceApisManager.serviceApis.statusManagerApi.isUploading){
- Logger.d("UploadHelper", "正在上报===")
- TipToast.tip("正在上报,请稍后重试")
- }else {
- ServiceApisManager.serviceApis.statusManagerApi.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true)
- if(DebugConfig.getAIType() == DebugConfig.AI_TYPE_TXZ||forcePlayVoice) {
- AIAssist.getInstance(context).speakTTSVoice("感谢分享,正在上传")
+ fun upload(context: Context, type: TanluUploadParams, forcePlayVoice: Boolean = false) {
+ if (DebugConfig.isLauncher()) {
+ if (ServiceApisManager.serviceApis.statusManagerApi.isUploading) {
+ // 上报即成功,当前还有正在上报的事件,仅做界面展示,不做具体操作
+ Logger.d("UploadHelper", "正在上报===")
+ TipToast.tip("正在上报,请稍后重试")
+ } else {
+ ServiceApisManager.serviceApis.statusManagerApi.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true)
+ if (DebugConfig.getAIType() == DebugConfig.AI_TYPE_TXZ || forcePlayVoice) {
+ // 因为思必驰语音分享时,语音助手会自己播报一段文字
+ AIAssist.getInstance(context).speakTTSVoice("感谢分享,正在上传")
+ }
+ val location = ServiceApisManager.serviceApis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation
+ val latLon = MogoLatLng(location.latitude, location.longitude)
+ type.location = latLon
+ Logger.d("UploadHelper", "upload ----> $type")
+ ServiceApisManager.serviceApis.tanluApi.uploadRoadCondition(type)
+ }
+ } else {
+ if (ServiceApisManager.serviceApis.statusManagerApi.isUploading) {
+ // 上报即成功,当前还有正在上报的事件,仅做界面展示,不做具体操作
+ ServiceApisManager.serviceApis.tanluUiApi.shareSuccess(type.eventType, type.location)
+ } else {
+ // 判断当前网络状态
+ if (NetworkUtils.isConnected(context)) {
+ // 有网就正常上报
+ ServiceApisManager.serviceApis.statusManagerApi.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true)
+ // 上报即成功
+ ServiceApisManager.serviceApis.tanluUiApi.shareSuccess(type.eventType, type.location)
+ val location = ServiceApisManager.serviceApis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation
+ val latLon = MogoLatLng(location.latitude, location.longitude)
+ type.location = latLon
+ Logger.d("UploadHelper", "upload ----> $type")
+ ServiceApisManager.serviceApis.tanluApi.uploadRoadCondition(type)
+ } else {
+ // 没网就直接提示失败
+ AIAssist.getInstance(context).speakTTSVoice("分享失败,请检查网络")
+ TipToast.tip("分享失败,请检查网络", TipDrawable(context.resources.getDrawable(R.drawable.module_share_upload_fail)))
+ }
}
- val location = ServiceApisManager.serviceApis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation
- val latLon = MogoLatLng(location.latitude, location.longitude)
- type.location = latLon
- Logger.d("UploadHelper", "upload ----> $type")
- ServiceApisManager.serviceApis.tanluApi.uploadRoadCondition(type)
-// val intent = Intent()
-// intent.action = "com.zhidao.share.roadcondition.action"
-// intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
-// intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
-// intent.putExtra("type", type)
-// context.sendBroadcast(intent)
}
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt
index 1db5feccf8..fb427784f0 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt
@@ -1,7 +1,11 @@
package com.mogo.module.share.net
import com.mogo.commons.data.BaseData
+import com.mogo.module.share.bean.AverateSpeedResponse
+import com.mogo.module.share.bean.ShareButtonConfigResponse
import io.reactivex.Observable
+import io.reactivex.Single
+import okhttp3.RequestBody
import retrofit2.http.*
/**
@@ -14,4 +18,18 @@ interface ShareApiService {
@FormUrlEncoded
@POST("/yycp-realtimeLocations/vehicleTypeManage/car/updateVehicleType/v1")
fun sendHelpSignal(@FieldMap param: Map): Observable
+
+ /**
+ * 拥堵策略,上报平均速度
+ */
+ @Headers("Content-type:application/json;charset=UTF-8")
+ @POST("/deva/car/path/no/poiStrategyCheck/v1")
+ fun sendAverageSpeedForBlockStrategy(@Body request:RequestBody,@Query("sn") sn:String):Observable
+
+ /**
+ * 获取分享框服务端配置
+ */
+ @FormUrlEncoded
+ @POST("/deva/car/poiType/no/poiTypeList")
+ fun queryShareButtonConfig(@FieldMap param: Map):Observable
}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt
index 330c56f8cf..ec20e86046 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt
@@ -1,11 +1,26 @@
package com.mogo.module.share.strategyreceiver
+
+
data class AccidentStrategyPushWrapper(
/**
- * 策略类型,1代表事故
+ * 策略类型,[TYPE_ACCIDENT],[TYPE_BLOCK]
*/
val type: Int,
/**
* 触发点的事件id
*/
- val id: Long, val lat: Double, val lon: Double)
+ val id: Long, val lat: Double, val lon: Double){
+
+ companion object{
+ /**
+ * 服务端下发push,通知收集事故视频
+ */
+ const val TYPE_ACCIDENT = 1
+
+ /**
+ * 服务端下发push,通知收集拥堵
+ */
+ const val TYPE_BLOCK = 2
+ }
+}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt
index 7ed36e0f56..242faf2381 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt
@@ -2,6 +2,8 @@ package com.mogo.module.share.strategyreceiver
import com.mogo.map.MogoLatLng
import com.mogo.module.share.constant.S_TAG
+import com.mogo.module.share.strategyreceiver.AccidentStrategyPushWrapper.Companion.TYPE_ACCIDENT
+import com.mogo.module.share.strategyreceiver.AccidentStrategyPushWrapper.Companion.TYPE_BLOCK
import com.mogo.service.IMogoServiceApis
import com.mogo.service.connection.IMogoOnMessageListener
import com.mogo.service.tanlu.IMogoTanluProvider
@@ -12,14 +14,22 @@ import com.mogo.utils.logger.Logger
* 车辆经过事故事件,上报视频
* @author tong
*/
-class AccidentStrategyReceiver(private val apis: IMogoServiceApis):IMogoOnMessageListener {
+class AccidentStrategyReceiver(private val apis: IMogoServiceApis) : IMogoOnMessageListener {
override fun target(): Class = AccidentStrategyPushWrapper::class.java
override fun onMsgReceived(obj: AccidentStrategyPushWrapper?) {
obj?.let {
Logger.d(S_TAG, "Accident strategy share onMessageReceived: $obj")
- // 调用探路接口上报,现在只接入了事故事件上报这一种策略上报,所以poiType固定为TypeAccident
- apis.tanluApi.uploadRoadCondition(TanluUploadParams(IMogoTanluProvider.TYPE_ACCIDENT, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO, it.id, MogoLatLng(it.lat, it.lon)))
+ when (obj.type) {
+ TYPE_ACCIDENT -> {
+ // 收集事故视频
+ apis.tanluApi.uploadRoadCondition(TanluUploadParams(IMogoTanluProvider.TYPE_ACCIDENT, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO, it.id, MogoLatLng(it.lat, it.lon)))
+ }
+ TYPE_BLOCK -> {
+ // 收集拥堵视频
+ apis.tanluApi.uploadRoadCondition(TanluUploadParams(IMogoTanluProvider.TYPE_BLOCK, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_CLOUD_CHECK, it.id, MogoLatLng(it.lat, it.lon)))
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt
new file mode 100644
index 0000000000..1cc241dddc
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt
@@ -0,0 +1,119 @@
+package com.mogo.module.share.strategyreceiver
+
+import android.content.Context
+import android.os.SystemClock
+import android.util.ArrayMap
+import com.mogo.commons.network.SubscribeImpl
+import com.mogo.commons.network.Utils
+import com.mogo.map.MogoLatLng
+import com.mogo.module.share.bean.AverateSpeedResponse
+import com.mogo.module.share.constant.HttpConstant
+import com.mogo.module.share.manager.ServiceApisManager
+import com.mogo.module.share.net.ShareApiService
+import com.mogo.service.IMogoServiceApis
+import com.mogo.service.tanlu.IMogoTanluProvider
+import com.mogo.service.tanlu.TanluUploadParams
+import com.mogo.utils.DeviceIdUtils
+import com.mogo.utils.logger.Logger
+import com.mogo.utils.network.RequestOptions
+import com.mogo.utils.network.utils.GsonUtil
+import io.reactivex.schedulers.Schedulers
+import okhttp3.MediaType
+import okhttp3.RequestBody
+
+
+/**
+ * 速度记录间隔,单位是毫秒
+ */
+private const val SPEED_RECORD_TIME_INTERVAL = 2 * 60 * 1000L
+
+/**
+ * 停车标志位阈值,单位是次,两秒一次
+ */
+private const val STOP_FLAG_THRESHOLD = 30
+private const val TAG = "BlockUploadStrategy"
+
+/**
+ * 用于计算拥堵策略
+ */
+class BlockStrategy(private val context: Context, private val apis: IMogoServiceApis) {
+ private var startRecordTime: Long = 0
+ private var speedCacheList = ArrayList()
+
+ /**
+ * 停车标志位,当速度为0时加1,超过[STOP_FLAG_THRESHOLD]判定为停车,不认为是拥堵,这组数据无效
+ */
+ private var stopFlag = 0
+
+ /**
+ * 拥堵速度计算上报策略
+ * 计算[SPEED_RECORD_TIME_INTERVAL]内的平均速度,并上报
+ *
+ * 定义的此方法是每两秒钟调用一次, 两分钟为一段进行计算 |--两分钟--|--两分钟--|--两分钟--|
+ *
+ * 里面有一个小策略,使用了一个停车标志位,如果速度为0,停车标志位加一,一个两分钟时间段内,
+ * 停车标志为累加超过[STOP_FLAG_THRESHOLD]判定为停车,不是拥堵,舍弃掉整个两分钟数据,不进行上报,
+ * 否则上报服务端,返回是否抓取视频
+ *
+ * @param speed 当前速度,单位需要是Km/h
+ */
+ fun recordSpeed(speed: Float) {
+ val current = SystemClock.uptimeMillis()
+ if (startRecordTime == 0L) {
+ // 数据初始化
+ startRecordTime = current
+ stopFlag = 0
+ speedCacheList.clear()
+ }
+
+ speedCacheList.add(speed)
+
+ if (speed == 0F) {
+ stopFlag++
+ } else if (stopFlag < STOP_FLAG_THRESHOLD) {
+ // 如果本次计算期间,stopFlag还没超过阈值,就置为零,如果超过阈值了,说明本次计算期间存在超过阈值的停止次数,就舍弃掉本次计算
+ stopFlag = 0
+ }
+
+ if (current - startRecordTime >= SPEED_RECORD_TIME_INTERVAL) {
+ // 到达时间限制,上报速度,数据清空
+ if (stopFlag < STOP_FLAG_THRESHOLD) {
+ // 停车标志位小于阈值,判定不是停车,计算平均值,进行上报
+ var sum = 0F
+ speedCacheList.forEach {
+ sum += it
+ }
+ val ave = sum / speedCacheList.size
+ Logger.d(TAG, "平均速度为: $ave")
+ // 上报平均速度
+ uploadAverageSpeed(ave)
+ } else {
+ Logger.d(TAG, "判定为停车,不进行上报")
+ }
+ startRecordTime = 0
+ }
+ }
+
+ private fun uploadAverageSpeed(average: Float) {
+ val params = ArrayMap()
+ params["speed"] = average.toInt()
+ val body = RequestBody.create(MediaType.parse("Content-type:application/json;charset=UTF-8"), GsonUtil.jsonFromObject(params))
+ val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(body, Utils.getSn()).subscribeOn(Schedulers.io()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) {
+ override fun onSuccess(response: AverateSpeedResponse?) {
+ super.onSuccess(response)
+ response?.let {
+ Logger.d(TAG, "收到服务端返回结果: $it")
+ // 收到服务端回调,视情况进行视频上报
+ if (it.result.upload) {
+ val p = TanluUploadParams(it.result.poiType, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_BLOCK_AUTO)
+ val location = ServiceApisManager.serviceApis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation
+ val latLon = MogoLatLng(location.latitude, location.longitude)
+ p.location = latLon
+ apis.tanluApi.uploadRoadCondition(p)
+ }
+ }
+ }
+
+ })
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/module_share_upload_fail.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/module_share_upload_fail.png
new file mode 100644
index 0000000000..f11f2cb3cd
Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/module_share_upload_fail.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/module_share_upload_success.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/module_share_upload_success.png
new file mode 100644
index 0000000000..19829a2454
Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/module_share_upload_success.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png
index 9dd6d425c9..25a48d3421 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_accident.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png
index b504cffe87..84938b8857 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png
index 6a16103d0e..191880b2b9 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_dense_fog.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png
index 7defe6986d..87f712f8c7 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_real_time_traffic.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png
index d20dacee3a..57e9e67c75 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png
index 3c2ba1225c..f41703de30 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_construction.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png
index 53585d40d1..3ff45f0ed0 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_icy.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png
index 30f26921aa..4f6774eae8 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png
index f125b9f22e..32224d0816 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_stagnant_water.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png
index 1b5af5fe54..e27aa13c0a 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/module_share_upload_fail.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/module_share_upload_fail.png
new file mode 100644
index 0000000000..f11f2cb3cd
Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-mdpi/module_share_upload_fail.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/module_share_upload_success.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/module_share_upload_success.png
new file mode 100644
index 0000000000..19829a2454
Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-mdpi/module_share_upload_success.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_accident.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_accident.png
index 9dd6d425c9..25a48d3421 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_accident.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_accident.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_block_up.png
index b504cffe87..84938b8857 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_block_up.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_dense_fog.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_dense_fog.png
index 6a16103d0e..191880b2b9 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_dense_fog.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_dense_fog.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_real_time_traffic.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_real_time_traffic.png
index 7defe6986d..87f712f8c7 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_real_time_traffic.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_real_time_traffic.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_closure.png
index d20dacee3a..57e9e67c75 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_closure.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_construction.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_construction.png
index 3c2ba1225c..f41703de30 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_construction.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_construction.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_icy.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_icy.png
index 53585d40d1..3ff45f0ed0 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_icy.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_road_icy.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_seek_help.png
index 30f26921aa..4f6774eae8 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_seek_help.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_seek_help.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_stagnant_water.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_stagnant_water.png
index f125b9f22e..32224d0816 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_stagnant_water.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_stagnant_water.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_traffic_check.png
index 1b5af5fe54..e27aa13c0a 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-mdpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-mdpi/share_traffic_check.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_title_icon.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_title_icon.png
deleted file mode 100644
index cb48ea6deb..0000000000
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_title_icon.png and /dev/null differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_upload_fail.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_upload_fail.png
new file mode 100644
index 0000000000..4511f314bb
Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_upload_fail.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_upload_success.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_upload_success.png
new file mode 100644
index 0000000000..1ad96fc40f
Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/module_share_upload_success.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png
index cfcb9eb87f..5a3fbe67df 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_accident.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png
index 0a54b48bad..e13c42513d 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png
index 160cdee6a6..85ab743696 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_dense_fog.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png
index d9434fe5f1..049d213148 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_real_time_traffic.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png
index a050e2b61c..1e25f9439b 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png
index 4b82b87aa7..56f1d320ab 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_construction.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png
index 9edf8ac119..b360bb4960 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_icy.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png
index 6ac62048b6..79ee716a3f 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png
index de26656f73..60bcfd519d 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_stagnant_water.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png
index a4660d5e0b..776f73a59c 100644
Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png differ
diff --git a/modules/mogo-module-share/src/main/res/drawable/module_share_btn_bg.xml b/modules/mogo-module-share/src/main/res/drawable/module_share_btn_bg.xml
index ad3b19773d..a332210f9b 100644
--- a/modules/mogo-module-share/src/main/res/drawable/module_share_btn_bg.xml
+++ b/modules/mogo-module-share/src/main/res/drawable/module_share_btn_bg.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/res/drawable/shape_bg_222533_20px.xml b/modules/mogo-module-share/src/main/res/drawable/module_share_dialog_bg.xml
similarity index 100%
rename from modules/mogo-module-share/src/main/res/drawable/shape_bg_222533_20px.xml
rename to modules/mogo-module-share/src/main/res/drawable/module_share_dialog_bg.xml
diff --git a/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml b/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml
new file mode 100644
index 0000000000..8ca5255de6
--- /dev/null
+++ b/modules/mogo-module-share/src/main/res/layout/dialog_share_with_gridlayout.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml b/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml
index c732a3e2e5..8ae0f36968 100644
--- a/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml
+++ b/modules/mogo-module-share/src/main/res/layout/item_share_btn.xml
@@ -3,24 +3,33 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/module_share_btn_margin_left"
+ android:paddingTop="@dimen/module_share_btn_margin_top">
+
+
+
+
+
-
diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml
index 3e9ca3ab44..dae881e4e8 100644
--- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml
+++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml
@@ -13,7 +13,7 @@
android:clickable="true"
android:focusable="true"
android:layout_gravity="center"
- android:background="@drawable/shape_bg_222533_20px">
+ android:background="@drawable/module_share_dialog_bg">
@@ -56,7 +56,7 @@
android:layout_marginTop="@dimen/share_module_tv_margin_top"
android:gravity="center"
android:text="上报拥堵"
- android:textColor="@color/white"
+ android:textColor="@color/module_share_dialog_icon_text_color"
android:textSize="@dimen/share_module_item"
android:textStyle="bold" />
@@ -83,7 +83,7 @@
android:layout_marginTop="@dimen/share_module_tv_margin_top"
android:gravity="center"
android:text="分享油价"
- android:textColor="@color/white"
+ android:textColor="@color/module_share_dialog_icon_text_color"
android:textSize="@dimen/share_module_item"
android:textStyle="bold" />
@@ -109,7 +109,7 @@
android:layout_marginTop="@dimen/share_module_tv_margin_top"
android:gravity="center"
android:text="上报交通检查"
- android:textColor="@color/white"
+ android:textColor="@color/module_share_dialog_icon_text_color"
android:textSize="@dimen/share_module_item"
android:textStyle="bold" />
@@ -135,7 +135,7 @@
android:layout_marginTop="@dimen/share_module_tv_margin_top"
android:gravity="center"
android:text="上报封路"
- android:textColor="@color/white"
+ android:textColor="@color/module_share_dialog_icon_text_color"
android:textSize="@dimen/share_module_item"
android:textStyle="bold" />
@@ -148,7 +148,7 @@
android:layout_marginTop="@dimen/share_module_bottom_margin_top"
android:gravity="center"
android:text="可以对小智说:上报拥堵、上报交通检查、上报封路"
- android:textColor="@color/white_40"
+ android:textColor="@color/module_share_dialog_notice_text_color"
android:textSize="@dimen/share_module_bottom_size"
android:textStyle="bold" />
diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml
index 448fef5d09..6f1557fc09 100644
--- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml
+++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml
@@ -9,7 +9,7 @@
android:layout_width="@dimen/share_module_width"
android:layout_height="@dimen/share_module_height"
android:layout_gravity="center"
- android:background="@drawable/shape_bg_222533_20px"
+ android:background="@drawable/module_share_dialog_bg"
android:clickable="true"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
@@ -22,149 +22,258 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/share_module_title_margin_top"
- android:text="我要分享"
- android:textColor="@color/white"
android:drawableLeft="@drawable/module_share_title_icon_left"
android:drawableRight="@drawable/module_share_title_icon_right"
android:drawablePadding="@dimen/dp_40"
+ android:text="我要分享"
+ android:textColor="@color/module_share_dialog_title_text_color"
android:textSize="@dimen/share_module_title_content"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@+id/vBg"
app:layout_constraintStart_toStartOf="@+id/vBg"
app:layout_constraintTop_toTopOf="@+id/vBg" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:text="拥堵"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivBlock"
+ app:layout_constraintRight_toRightOf="@id/ivBlock"
+ app:layout_constraintTop_toBottomOf="@id/ivBlock" />
+
+ android:text="交通检查"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivTrafficCheck"
+ app:layout_constraintRight_toRightOf="@id/ivTrafficCheck"
+ app:layout_constraintTop_toBottomOf="@id/ivTrafficCheck" />
+
+ android:text="封路"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivClosure"
+ app:layout_constraintRight_toRightOf="@id/ivClosure"
+ app:layout_constraintTop_toBottomOf="@id/ivClosure" />
+
+ android:text="事故"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivAccident"
+ app:layout_constraintRight_toRightOf="@id/ivAccident"
+ app:layout_constraintTop_toBottomOf="@id/ivAccident" />
+
+ android:text="施工"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivConstruction"
+ app:layout_constraintRight_toRightOf="@id/ivConstruction"
+ app:layout_constraintTop_toBottomOf="@id/ivConstruction" />
+
+ android:text="实时路况"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivRealTimeTraffic"
+ app:layout_constraintRight_toRightOf="@id/ivRealTimeTraffic"
+ app:layout_constraintTop_toBottomOf="@id/ivRealTimeTraffic" />
+
+ android:text="故障求助"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivSeekHelp"
+ app:layout_constraintRight_toRightOf="@id/ivSeekHelp"
+ app:layout_constraintTop_toBottomOf="@id/ivSeekHelp" />
+
+ android:text="道路积水"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivStagnantWater"
+ app:layout_constraintRight_toRightOf="@id/ivStagnantWater"
+ app:layout_constraintTop_toBottomOf="@id/ivStagnantWater" />
+
+ android:text="道路结冰"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivRoadIcy"
+ app:layout_constraintRight_toRightOf="@id/ivRoadIcy"
+ app:layout_constraintTop_toBottomOf="@id/ivRoadIcy" />
+
+ android:text="浓雾"
+ android:textColor="@color/module_share_dialog_icon_text_color"
+ android:textSize="@dimen/share_module_btn_text_size"
+ app:layout_constraintLeft_toLeftOf="@id/ivDenseFog"
+ app:layout_constraintRight_toRightOf="@id/ivDenseFog"
+ app:layout_constraintTop_toBottomOf="@id/ivDenseFog" />
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml
index 566d8d9d02..d39998ae78 100644
--- a/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml
@@ -21,6 +21,16 @@
28px
32px
+ 114px
+ 83px
+ 6px
+ 123px
+ 110px
+
+ 75px
+ 165px
+ 967px
+
diff --git a/modules/mogo-module-share/src/main/res/values/colors.xml b/modules/mogo-module-share/src/main/res/values/colors.xml
index 4313d3f44b..b24059e5d9 100644
--- a/modules/mogo-module-share/src/main/res/values/colors.xml
+++ b/modules/mogo-module-share/src/main/res/values/colors.xml
@@ -1,22 +1,6 @@
- #000000
- #000000
- #1F7FFF
-
- #FF1B1B
- #FFFFFF
- #80FFFFFF
- #99FFFFFF
- #F8F8F8
- #333333
- #DADAE2
- #1C1C1C
- #545362
- #99191C25
- #666666
- #999999
- #000000
- #00FFFFFF
-
+ #fff
+ #fff
+ #99FFFFFF
diff --git a/modules/mogo-module-share/src/main/res/values/dimens.xml b/modules/mogo-module-share/src/main/res/values/dimens.xml
index 0e92e92f36..044d40bc47 100644
--- a/modules/mogo-module-share/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-share/src/main/res/values/dimens.xml
@@ -8,7 +8,7 @@
100px
118px
15px
- 85px
+ 88px
110px
28px
42.6px
@@ -22,4 +22,14 @@
15px
17.5px
+ 60px
+ 44px
+ 5px
+ 65px
+ 58px
+
+ 40px
+ 89px
+ 514px
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/build.gradle b/modules/mogo-module-tanlu/build.gradle
index fb48f1e204..c1b444cdc9 100644
--- a/modules/mogo-module-tanlu/build.gradle
+++ b/modules/mogo-module-tanlu/build.gradle
@@ -51,13 +51,21 @@ dependencies {
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.rxandroid
-
- compileOnly rootProject.ext.dependencies.mogomap
- compileOnly rootProject.ext.dependencies.mogoutils
- compileOnly rootProject.ext.dependencies.mogocommons
- compileOnly rootProject.ext.dependencies.mogoserviceapi
- compileOnly rootProject.ext.dependencies.modulecommon
- compileOnly rootProject.ext.dependencies.moduleshare
+ if (Boolean.valueOf(RELEASE)) {
+ compileOnly rootProject.ext.dependencies.mogomap
+ compileOnly rootProject.ext.dependencies.mogoutils
+ compileOnly rootProject.ext.dependencies.mogocommons
+ compileOnly rootProject.ext.dependencies.mogoserviceapi
+ compileOnly rootProject.ext.dependencies.modulecommon
+ compileOnly rootProject.ext.dependencies.moduleshare
+ }else{
+ compileOnly project(":libraries:mogo-map")
+ compileOnly project(":foudations:mogo-utils")
+ compileOnly project(":foudations:mogo-commons")
+ compileOnly project(":services:mogo-service-api")
+ compileOnly project(":modules:mogo-module-common")
+ compileOnly project(":modules:mogo-module-share")
+ }
compileOnly rootProject.ext.dependencies.carcallprovider
implementation rootProject.ext.dependencies.videoarmv7
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java
index a033351035..9f3d7c34ae 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java
@@ -64,7 +64,10 @@ public class TanluConstants {
//打开探路 唤醒
public static final String OPEN_ROADCONDITION_AWAKE_COMMAND = "system.application.operation";
- //xx堵不堵 唤醒
+ // 同行者 xx堵不堵 唤醒
+ public static final String TXZ_SPECIFIEDROAD_SEARCH = "com.zhidao.roadcondition.roadinfo";
+
+ //思必驰 xx堵不堵 唤醒
public static final String SPECIFIEDROAD_SEARCH = "com.zhidao.pathfinder.specifiedroad.search";
//播放 免唤醒
public static final String PLAY_VIDEO = "com.zhidao.tanlu.play";
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
index bf34e2ba13..e7485bdc8c 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
@@ -1,23 +1,37 @@
package com.mogo.module.tanlu.fragment;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.map.MogoLatLng;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.module.tanlu.callback.DataSetChangedAdapter;
+import com.mogo.module.tanlu.model.event.MarkerInfo;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
import com.mogo.module.tanlu.constant.TanluConstants;
+import com.mogo.service.tanlu.IMogoTanluUiProvider;
import com.mogo.utils.logger.Logger;
+import org.greenrobot.eventbus.EventBus;
+
+import io.reactivex.Single;
+import io.reactivex.SingleEmitter;
+import io.reactivex.SingleOnSubscribe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.functions.Consumer;
+import io.reactivex.schedulers.Schedulers;
+
/**
* @author congtaowang
* @since 2019-12-24
@@ -25,77 +39,43 @@ import com.mogo.utils.logger.Logger;
* 描述
*/
@Route( path = TanluConstants.TAG )
-public class TanluCardViewProvider implements IMogoModuleProvider {
+public class TanluCardViewProvider implements IMogoTanluUiProvider {
private static final String TAG = "TanluCardViewProvider";
- private TanluCardViewFragment fragment;
-
- @Override
- public Fragment createFragment( Context context, Bundle data ) {
- fragment = new TanluCardViewFragment();
- fragment.setArguments( data );
- Logger.i( TAG, "createFragment" );
- return fragment;
- }
+ private TanluListWindow tanluListWindow;
@Override
public void init( Context context ) {
Logger.d(TAG, "init --------------> 1");
TanluServiceManager.init( context );
TanluServiceManager.getDataManager().registerDataListener( TanluConstants.MODEL_NAME, DataSetChangedAdapter.getInstance() );
- TanluListWindow tanluListWindow = new TanluListWindow(context);
+ tanluListWindow = new TanluListWindow(context);
tanluListWindow.initWindow();
}
@Override
- public String getModuleName() {
- return "CARD_TYPE_ROAD_CONDITION";
+ public void searchRoadCondition(String intentStr, String data, String city, String keywords) {
+ Disposable disposable = Single.create((SingleOnSubscribe) emitter -> {
+ Logger.d(TAG, "searchRoadCondition---> intentStr: " + intentStr + " data: " + data + " " +
+ "city: " + city + " keywords: " + keywords);
+ Intent intent = new Intent(intentStr);
+ intent.putExtra("data", data);
+ intent.putExtra("city", city);
+ intent.putExtra("keywords", keywords);
+ Thread.sleep(3000);
+ emitter.onSuccess(intent);
+ }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(intent -> {
+ Logger.d(TAG, "searchRoadCondition---go real share");
+ tanluListWindow.realShare(intentStr, intent);
+ });
}
@Override
- public IMogoModuleLifecycle getCardLifecycle() {
- return fragment;
+ public void shareSuccess(String poiType, MogoLatLng location) {
+ MarkerInfo markerInfo = new MarkerInfo(poiType, "", location.lon, location.lat, true, "1");
+ EventBus.getDefault().post(markerInfo);
}
- @Override
- public View createView( Context context ) {
- // don't
- return null;
- }
- @Override
- public IMogoMapListener getMapListener() {
- return fragment;
- }
-
- @Override
- public int getType() {
- return ModuleType.TYPE_CARD_FRAGMENT;
- }
-
- @Override
- public IMogoNaviListener getNaviListener() {
- return null;
- }
-
- @Override
- public IMogoLocationListener getLocationListener() {
- return fragment;
- }
-
- @Override
- public IMogoMarkerClickListener getMarkerClickListener() {
- return null;
- }
-
- @Override
- public String getAppPackage() {
- return "";
- }
-
- @Override
- public String getAppName() {
- return "探路";
- }
}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java
index 6440669f53..f9f27f4699 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
+import android.net.Uri;
import android.os.CountDownTimer;
import android.os.Handler;
import android.text.TextUtils;
@@ -93,6 +94,7 @@ import com.mogo.service.module.MogoAction;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
import com.mogo.utils.NetworkUtils;
+import com.mogo.utils.TipDrawable;
import com.mogo.utils.TipToast;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -117,6 +119,7 @@ import static com.mogo.module.tanlu.constant.ConstKt.VOICE_COMMAND_QUERY_ROAD_CL
import static com.mogo.module.tanlu.constant.ConstKt.VOICE_COMMAND_QUERY_TRAFFIC_CHECK;
import static com.mogo.module.tanlu.constant.TanluConstants.PLAY_VIDEO_AWAKEN;
import static com.mogo.module.tanlu.constant.TanluConstants.SPECIFIEDROAD_SEARCH;
+import static com.mogo.module.tanlu.constant.TanluConstants.TXZ_SPECIFIEDROAD_SEARCH;
import static com.mogo.module.tanlu.video.VideoInitKt.initVideo;
/**
@@ -181,7 +184,6 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL
}
public void initWindow() {
- Logger.d("liyz", "initWindow --------->");
EventBus.getDefault().register(this);
initInterface();
initModelData();
@@ -477,6 +479,10 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL
*/
private void initListener() {
if (mogoIntentManager != null) {
+ // 同行者 xxx堵不堵唤醒词语音注册
+ Logger.d(TAG, "initListener====");
+ mogoIntentManager.registerIntentListener(TXZ_SPECIFIEDROAD_SEARCH,mogoIntentListener);
+ // 通用唤醒词语音注册
mogoIntentManager.registerIntentListener(SPECIFIEDROAD_SEARCH, mogoIntentListener);
mogoIntentManager.registerIntentListener(PLAY_VIDEO_AWAKEN, mogoIntentListener);
mogoIntentManager.registerIntentListener(VOICE_COMMAND_QUERY_TRAFFIC_CHECK, mogoIntentListener);
@@ -497,75 +503,97 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL
/**
* 唤醒语音
*/
- private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() {
- @Override
- public void onIntentReceived(String intentStr, Intent intent) {
- String data = intent.getStringExtra("data");
- Logger.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data);
- VoiceCmdData voiceData = null;
- switch (intentStr) {
- case VOICE_COMMAND_QUERY_TRAFFIC_CHECK:
- // 搜索交通检查
- Logger.d(TAG, "搜索交通检查");
- voiceData = Utils.parseTOVoiceCmdData(data);
- voiceData.setObj(TYPE_NAME_TRAFFIC_CHECK);
- break;
- case VOICE_COMMAND_QUERY_ROAD_CLOSED:
- // 搜索封路
- Logger.d(TAG, "搜索封路");
- voiceData = Utils.parseTOVoiceCmdData(data);
- voiceData.setLocation(voiceData.getObj());
- voiceData.setObj(TYPE_NAME_CLOSURE);
- break;
- case SPECIFIEDROAD_SEARCH:
- // 拥堵和路况
- Logger.d(TAG, "拥堵和路况");
- voiceData = Utils.parseTOVoiceCmdData(data);
- voiceData.setObj(TYPE_NAME_BLOCK);
- break;
- case VOICE_COMMAND_NOVELTY_QUERY:
- Logger.d(TAG, "其他");
- voiceData = Utils.parseTOVoiceCmdData(data);
- break;
- case PLAY_VIDEO_AWAKEN:
- Logger.d(TAG, "mogoIntentListener 播放路况 唤醒 ----> ");
- delayTime();
- break;
- default:
- break;
- }
-
- if (voiceData != null) {
- mTanluModelData.queryRodeInfo(voiceData, new RoadInfoCallback() {
- @Override
- public void onQueryRoadInfoSuccess(@NotNull List extends MarkerExploreWay> roadInfoList) {
- if (roadInfoList == null || (roadInfoList != null && roadInfoList.size() <= 0)) {
- speakFailVoice("未找到其他车主分享的路况信息");
- moveToMarcker(currentLat, currentLon);
- return;
- }
- Logger.d(TAG, "onQueryRoadInfoSuccess roadInfoList.size() = " + roadInfoList.size()
- + " >>currentLat = " + currentLat + " -->currentLon = " + currentLon);
- initData(null, (List) roadInfoList);
- addMarkersAction((List) roadInfoList, currentLat, currentLon);
- }
-
- @Override
- public void onQueryRoadInfoFail(@NotNull String msg, int code) {
- Logger.e(TAG, "onQueryRoadInfoFail ----- msg = " + msg);
- speakFailVoice(searchfaileVoiceStrings[2]);
- }
-
- @Override
- public void onLocatSuccess(double lat, double lon) {
- currentLat = lat;
- currentLon = lon;
- }
- });
- }
+ private IMogoIntentListener mogoIntentListener = (intentStr, intent) -> {
+ if (TanluServiceManager.getMogoStatusManager().isMainPageOnResume()) {
+ // 直接执行相关查询操作
+ Logger.d(TAG, "智慧出行在前台,可直接分享--->");
+ realShare(intentStr, intent);
+ }else{
+ // 需要打开智慧驾驶,然后执行操作
+ Logger.d(TAG, "智慧出行没在前台,需要打开 --->");
+ intent.setAction(Intent.ACTION_VIEW);
+ String data = intent.getStringExtra("data") == null ? "" : intent.getStringExtra("data");
+ String city = intent.getStringExtra("city") == null ? "" : intent.getStringExtra("city");
+ String keywords = intent.getStringExtra("keywords") == null ? "" : intent.getStringExtra("keywords");
+ intent.setData(Uri.parse("mogo://launcher/main/switch2?type=search-road-condition" +
+ "&intentStr=" + intentStr + "&data=" + data + "&city=" + city + "&keywords=" + keywords));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
}
};
+ public void realShare(String intentStr, Intent intent){
+ String data = intent.getStringExtra("data");
+ Logger.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data);
+ VoiceCmdData voiceData = null;
+ switch (intentStr) {
+ case VOICE_COMMAND_QUERY_TRAFFIC_CHECK:
+ // 搜索交通检查
+ Logger.d(TAG, "搜索交通检查");
+ voiceData = Utils.parseTOVoiceCmdData(data);
+ voiceData.setObj(TYPE_NAME_TRAFFIC_CHECK);
+ break;
+ case VOICE_COMMAND_QUERY_ROAD_CLOSED:
+ // 搜索封路
+ Logger.d(TAG, "搜索封路");
+ voiceData = Utils.parseTOVoiceCmdData(data);
+ voiceData.setLocation(voiceData.getObj());
+ voiceData.setObj(TYPE_NAME_CLOSURE);
+ break;
+ case SPECIFIEDROAD_SEARCH:
+ // 拥堵和路况
+ Logger.d(TAG, "拥堵和路况");
+ voiceData = Utils.parseTOVoiceCmdData(data);
+ voiceData.setObj(TYPE_NAME_BLOCK);
+ break;
+ case VOICE_COMMAND_NOVELTY_QUERY:
+ Logger.d(TAG, "其他");
+ voiceData = Utils.parseTOVoiceCmdData(data);
+ break;
+ case PLAY_VIDEO_AWAKEN:
+ Logger.d(TAG, "mogoIntentListener 播放路况 唤醒 ----> ");
+ delayTime();
+ break;
+ case TXZ_SPECIFIEDROAD_SEARCH:
+ Logger.d(TAG, "同行者--xx堵不堵--唤醒--->");
+ String keyWords = intent.getStringExtra("keywords");
+ String city = intent.getStringExtra("city");
+ voiceData = new VoiceCmdData("", city + keyWords, TYPE_NAME_BLOCK);
+ break;
+ default:
+ break;
+ }
+
+ if (voiceData != null) {
+ mTanluModelData.queryRodeInfo(voiceData, new RoadInfoCallback() {
+ @Override
+ public void onQueryRoadInfoSuccess(@NotNull List extends MarkerExploreWay> roadInfoList) {
+ if (roadInfoList == null || (roadInfoList != null && roadInfoList.size() <= 0)) {
+ speakFailVoice("未找到其他车主分享的路况信息");
+ moveToMarcker(currentLat, currentLon);
+ return;
+ }
+ Logger.d(TAG, "onQueryRoadInfoSuccess roadInfoList.size() = " + roadInfoList.size()
+ + " >>currentLat = " + currentLat + " -->currentLon = " + currentLon);
+ initData(null, (List) roadInfoList);
+ addMarkersAction((List) roadInfoList, currentLat, currentLon);
+ }
+
+ @Override
+ public void onQueryRoadInfoFail(@NotNull String msg, int code) {
+ Logger.e(TAG, "onQueryRoadInfoFail ----- msg = " + msg);
+ speakFailVoice(searchfaileVoiceStrings[2]);
+ }
+
+ @Override
+ public void onLocatSuccess(double lat, double lon) {
+ currentLat = lat;
+ currentLon = lon;
+ }
+ });
+ }
+ }
+
/**
* 添加marker
*/
@@ -1057,8 +1085,8 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL
}
if (!NetworkUtils.isConnected(getContext())) { //没有网络
- TipToast.shortTip("分享失败,请检查网络");
- } else {
+ TipToast.shortTip("分享失败,请检查网络",new TipDrawable(getResources().getDrawable(R.drawable.module_tanlu_upload_fail)));
+ } else if(TanluServiceManager.getMogoStatusManager().isMainPageOnResume()) {
float bearing = TanluServiceManager.getLocationClient().getLastKnowLocation().getBearing(); //角度
Logger.d(TAG, "onMarkerInfo event.type = " + event.type + " >>event.lat = " + event.lat + " >>event.lon = " + event.lon + " >>event.imageUrl =" + event.imageUrl);
String poiType = event.type;
@@ -1089,7 +1117,7 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL
AIAssist.getInstance(getContext()).speakTTSVoice((
String.format(voiceShareSuccessTts, getMathRandom())), null);
- TipToast.shortTip("分享成功");
+ TipToast.shortTip("分享成功",new TipDrawable(getResources().getDrawable(R.drawable.module_tanlu_upload_success)));
IMogoMarker mogoMarker = TanluServiceManager.getServiceApis().getMarkerService().drawMarker(markerShowEntity);
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/recycler/TanluSlideAdapterNew.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/recycler/TanluSlideAdapterNew.java
index f17ac07572..15e3a450ea 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/recycler/TanluSlideAdapterNew.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/recycler/TanluSlideAdapterNew.java
@@ -19,13 +19,13 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.module.common.entity.MarkerExploreWay;
+import com.mogo.module.common.glide.SkinAbleBitmapTarget;
import com.mogo.module.tanlu.R;
import com.mogo.module.tanlu.callback.IThumbsUpCallback;
import com.mogo.module.tanlu.constant.TanluConstants;
import com.mogo.module.tanlu.model.TanluModelData;
import com.mogo.module.tanlu.model.event.CloseWindowInfo;
import com.mogo.module.tanlu.model.event.ControlClickUpInfo;
-import com.mogo.module.tanlu.model.event.DataErrorInfo;
import com.mogo.module.tanlu.model.event.StartPlayInfo;
import com.mogo.module.tanlu.model.event.VoiceControlUpInfo;
import com.mogo.module.tanlu.util.ChartUtil;
@@ -372,9 +372,10 @@ public class TanluSlideAdapterNew extends RecyclerView.Adapterlat =" + lat + "----lon =" + lon + " --custom = " + custom + "---imageUrl =" + imageUrl)
- EventBus.getDefault().post(MarkerInfo(type, imageUrl,lon, lat, custom, fromType))
+ if(DebugConfig.isLauncher()) {
+ EventBus.getDefault().post(MarkerInfo(type, imageUrl, lon, lat, custom, fromType))
+ }
}
}
}
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/module_tanlu_upload_fail.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/module_tanlu_upload_fail.png
new file mode 100644
index 0000000000..f11f2cb3cd
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/module_tanlu_upload_fail.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/module_tanlu_upload_success.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/module_tanlu_upload_success.png
new file mode 100644
index 0000000000..19829a2454
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/module_tanlu_upload_success.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-mdpi/module_tanlu_upload_fail.png b/modules/mogo-module-tanlu/src/main/res/drawable-mdpi/module_tanlu_upload_fail.png
new file mode 100644
index 0000000000..f11f2cb3cd
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-mdpi/module_tanlu_upload_fail.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-mdpi/module_tanlu_upload_success.png b/modules/mogo-module-tanlu/src/main/res/drawable-mdpi/module_tanlu_upload_success.png
new file mode 100644
index 0000000000..19829a2454
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-mdpi/module_tanlu_upload_success.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/module_tanlu_upload_fail.png b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/module_tanlu_upload_fail.png
new file mode 100644
index 0000000000..4511f314bb
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/module_tanlu_upload_fail.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/module_tanlu_upload_success.png b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/module_tanlu_upload_success.png
new file mode 100644
index 0000000000..1ad96fc40f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/module_tanlu_upload_success.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler_new.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler_new.xml
index bab3d66b73..81c7cc2c7d 100644
--- a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler_new.xml
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler_new.xml
@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/tanlu_module_card_height"
+ xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/tanlu_gradual_change_bg">
@@ -37,7 +38,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
- android:src="@drawable/tanlu_normal_image"
+ tools:src="@drawable/tanlu_normal_image"
android:scaleType="fitXY" />
@@ -89,7 +90,7 @@
android:gravity="center_vertical"
android:maxLines="1"
android:text="东城区北三环中路辅路小黄庄西路68号"
- android:textColor="@color/white"
+ android:textColor="@color/tanlu_white"
android:textSize="@dimen/tanlu_module_full_title_content"
android:textStyle="bold" />
diff --git a/modules/mogo-module-tanlu/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-tanlu/src/main/res/values-xhdpi-1920x1000/dimens.xml
index 3dc0047c7a..f67c962818 100644
--- a/modules/mogo-module-tanlu/src/main/res/values-xhdpi-1920x1000/dimens.xml
+++ b/modules/mogo-module-tanlu/src/main/res/values-xhdpi-1920x1000/dimens.xml
@@ -80,7 +80,8 @@
300px
480px
270px
-
+ 80px
+
20px
15px
25px
diff --git a/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml
index ff75ac58ed..bfd073df5f 100644
--- a/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml
@@ -80,7 +80,7 @@
350px
480px
320px
- 45px
+ 80px
23px
15px
diff --git a/modules/mogo-module-tanlu/src/main/res/values/colors.xml b/modules/mogo-module-tanlu/src/main/res/values/colors.xml
index 48a00d3b8d..24181bdd65 100644
--- a/modules/mogo-module-tanlu/src/main/res/values/colors.xml
+++ b/modules/mogo-module-tanlu/src/main/res/values/colors.xml
@@ -39,5 +39,6 @@
#999999
#99FFFFFF
#59FFFFFF
+ #FFFFFF
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java
index 4b101c27e5..67b2f03b53 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XEventPanelModuleProvider.java
@@ -34,6 +34,7 @@ public class V2XEventPanelModuleProvider implements
@Override
public Fragment createFragment(Context context, Bundle data) {
+ V2XServiceManager.init(context);
return V2XEventPanelFragment.Companion.getInstance();
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java
index 69497f597a..3556667786 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java
@@ -5,7 +5,9 @@ import android.os.Handler;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
+import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.v2x.listener.V2XLocationListener;
+import com.mogo.module.v2x.network.V2XRefreshCallback;
import com.mogo.module.v2x.network.V2XRefreshModel;
import com.mogo.utils.logger.Logger;
@@ -18,7 +20,7 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
* desc :
* version: 1.0
*/
-public class V2XMarkerService {
+public class V2XMarkerService implements V2XRefreshCallback {
private final String TAG = "V2XMarkerService";
// 一分钟获取一次最新的路况信息
@@ -48,12 +50,13 @@ public class V2XMarkerService {
public void refreshMarkerData(MogoLocation location) {
try {
if (mV2XRefreshModel != null && location != null) {
- //Logger.d(MODULE_NAME, "V2X道路事件:执行气泡刷新操作。");
+ Logger.d(MODULE_NAME, "V2X道路事件:执行气泡刷新操作。");
// 获取目前最新的周边的poi点
- mV2XRefreshModel.querySnapshotAsync(
+ mV2XRefreshModel.querySnapshotSync(
new MogoLatLng(location.getLatitude(), location.getLongitude()),
(int) getMapCameraFactWidth(),
- 999);
+ 999,
+ this);
}
} catch (Exception e) {
e.printStackTrace();
@@ -105,4 +108,16 @@ public class V2XMarkerService {
}
refreshHandler.post(refreshRunnable);
}
+
+ @Override
+ public void onSuccess(MarkerResponse result) {
+ if (V2XSocketManager.getInstance().getV2XMessageListener_401011() != null) {
+ V2XSocketManager.getInstance().getV2XMessageListener_401011().onMsgReceived(result);
+ }
+ }
+
+ @Override
+ public void onFail(String msg) {
+ Logger.e(TAG, "刷新V2X道路事件异常请检查参数");
+ }
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
index 84eb75fb33..86aebccd1a 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
@@ -275,6 +275,7 @@ public class V2XModuleProvider implements
* 刷新自车求助状态
*/
private void initCarForHelpStatus() {
+ Logger.d(MODULE_NAME, "刷新自车求助状态……");
//本地查询是否超时
V2XServiceManager.getV2XRefreshModel().getHelpSignal(new V2XRefreshCallback() {
@Override
@@ -282,18 +283,15 @@ public class V2XModuleProvider implements
if (result != null) {
V2XSeekHelpRes.ResultBean resultBean = result.getResult();
if (resultBean != null) {
+ Logger.d(MODULE_NAME, "刷新自车求助状态 resultBean:"+resultBean);
int vehicleType = resultBean.getVehicleType();
//故障车
if (vehicleType == 4) {
- if (!V2XServiceManager.getMoGoStatusManager().isSeekHelping()) {
- refreshMeSeekHelp(true);
- V2XServiceManager.getMoGoStatusManager().setSeekHelping(MODULE_NAME, true);
- }
+ refreshMeSeekHelp(true);
+ V2XServiceManager.getMoGoStatusManager().setSeekHelping(MODULE_NAME, true);
} else {
- if (V2XServiceManager.getMoGoStatusManager().isSeekHelping()) {
- refreshMeSeekHelp(false);
- V2XServiceManager.getMoGoStatusManager().setSeekHelping(MODULE_NAME, false);
- }
+ refreshMeSeekHelp(false);
+ V2XServiceManager.getMoGoStatusManager().setSeekHelping(MODULE_NAME, false);
}
}
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java
index 9aac886249..823faa7f2f 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java
@@ -11,10 +11,10 @@ import com.mogo.map.search.geo.IMogoGeoSearch;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
import com.mogo.module.v2x.alarm.V2XCalculateServer;
-import com.mogo.module.v2x.network.V2XRefreshModel;
import com.mogo.module.v2x.manager.IMoGoV2XMarkerManager;
import com.mogo.module.v2x.manager.IMoGoV2XPolylineManager;
import com.mogo.module.v2x.manager.IMoGoV2XStatusManager;
+import com.mogo.module.v2x.network.V2XRefreshModel;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
@@ -45,6 +45,9 @@ import com.zhidao.carchattingprovider.CallChattingProviderConstant;
*/
public class V2XServiceManager {
private static final String TAG = "V2XServiceManager";
+
+ private static boolean isInit;
+
private static Context mContext;
private static IMogoServiceApis mMogoServiceApis;
@@ -88,45 +91,49 @@ public class V2XServiceManager {
public static void init(final Context context) {
- mContext = context;
- mMogoServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
+ if (!isInit) {
+ isInit = true;
- mMapService = mMogoServiceApis.getMapServiceApi();
- mImageLoader = mMogoServiceApis.getImageLoaderApi();
- mMogoStatusManager = mMogoServiceApis.getStatusManagerApi();
- mMogoSocketManager = mMogoServiceApis.getSocketManagerApi(context);
- mMogoAnalytics = mMogoServiceApis.getAnalyticsApi();
- mIMogoWindowManager = mMogoServiceApis.getWindowManagerApi();
- mMogoRegisterCenter = mMogoServiceApis.getRegisterCenterApi();
- mIMogoRefreshStrategyController = mMogoServiceApis.getRefreshStrategyControllerApi();
- mIMogoADASController = mMogoServiceApis.getAdasControllerApi();
- mMogoEntranceButtonController = mMogoServiceApis.getEntranceButtonController();
- mMogoActionManager = mMogoServiceApis.getActionManagerApi();
- mMogoTopViewManager = mMogoServiceApis.getTopViewManager();
- mIMogoSearchManager = mMogoServiceApis.getSearchManagerApi();
- mIMogoMarkerService = mMogoServiceApis.getMarkerService();
- mIMogoShareManager = mMogoServiceApis.getShareManager();
- mIMogoTanluProvider = mMogoServiceApis.getTanluApi();
+ mContext = context;
+ mMogoServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
- mMarkerManager = mMapService.getMarkerManager(context);
- mNavi = mMapService.getNavi(context);
- mMapUIController = mMapService.getMapUIController();
- mMogoLocationClient = mMapService.getSingletonLocationClient(context);
- mMogoOverlayManager = mMapService.getOverlayManager(context);
- mIMogoGeoSearch = mMapService.getGeoSearch(context);
+ mMapService = mMogoServiceApis.getMapServiceApi();
+ mImageLoader = mMogoServiceApis.getImageLoaderApi();
+ mMogoStatusManager = mMogoServiceApis.getStatusManagerApi();
+ mMogoSocketManager = mMogoServiceApis.getSocketManagerApi(context);
+ mMogoAnalytics = mMogoServiceApis.getAnalyticsApi();
+ mIMogoWindowManager = mMogoServiceApis.getWindowManagerApi();
+ mMogoRegisterCenter = mMogoServiceApis.getRegisterCenterApi();
+ mIMogoRefreshStrategyController = mMogoServiceApis.getRefreshStrategyControllerApi();
+ mIMogoADASController = mMogoServiceApis.getAdasControllerApi();
+ mMogoEntranceButtonController = mMogoServiceApis.getEntranceButtonController();
+ mMogoActionManager = mMogoServiceApis.getActionManagerApi();
+ mMogoTopViewManager = mMogoServiceApis.getTopViewManager();
+ mIMogoSearchManager = mMogoServiceApis.getSearchManagerApi();
+ mIMogoMarkerService = mMogoServiceApis.getMarkerService();
+ mIMogoShareManager = mMogoServiceApis.getShareManager();
+ mIMogoTanluProvider = mMogoServiceApis.getTanluApi();
- mCarsChattingProvider = (ICarsChattingProvider) ARouter.getInstance().build(CallChattingProviderConstant.CAR_CALL_PROVIDER).navigation();
- mMogoIntentManager = mMogoServiceApis.getIntentManagerApi();
+ mMarkerManager = mMapService.getMarkerManager(context);
+ mNavi = mMapService.getNavi(context);
+ mMapUIController = mMapService.getMapUIController();
+ mMogoLocationClient = mMapService.getSingletonLocationClient(context);
+ mMogoOverlayManager = mMapService.getOverlayManager(context);
+ mIMogoGeoSearch = mMapService.getGeoSearch(context);
- mV2XRefreshModel = V2XRefreshModel.getInstance(context);
- mV2XMarkerService = V2XMarkerService.getInstance(context);
- mV2XStatusManager = V2XStatusManager.getInstance();
- mV2XSocketManager = V2XSocketManager.getInstance();
- mV2XCalculateServer = V2XCalculateServer.getInstance();
+ mCarsChattingProvider = (ICarsChattingProvider) ARouter.getInstance().build(CallChattingProviderConstant.CAR_CALL_PROVIDER).navigation();
+ mMogoIntentManager = mMogoServiceApis.getIntentManagerApi();
- moGoV2XMarkerManager = (IMoGoV2XMarkerManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_MARKER_MANAGER).navigation(context);
- moGoV2XPolylineManager = (IMoGoV2XPolylineManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_POLYLINE_MANAGER).navigation(context);
- moGoV2XStatusManager = (IMoGoV2XStatusManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STATUS_MANAGER).navigation(context);
+ mV2XRefreshModel = V2XRefreshModel.getInstance(context);
+ mV2XMarkerService = V2XMarkerService.getInstance(context);
+ mV2XStatusManager = V2XStatusManager.getInstance();
+ mV2XSocketManager = V2XSocketManager.getInstance();
+ mV2XCalculateServer = V2XCalculateServer.getInstance();
+
+ moGoV2XMarkerManager = (IMoGoV2XMarkerManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_MARKER_MANAGER).navigation(context);
+ moGoV2XPolylineManager = (IMoGoV2XPolylineManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_POLYLINE_MANAGER).navigation(context);
+ moGoV2XStatusManager = (IMoGoV2XStatusManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STATUS_MANAGER).navigation(context);
+ }
}
public static Context getContext() {
@@ -258,5 +265,4 @@ public class V2XServiceManager {
}
-
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java
index 1d29df1df1..36c68f8619 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java
@@ -120,6 +120,10 @@ public class V2XSocketManager {
);
}
+ public V2XMessageListener_401011 getV2XMessageListener_401011() {
+ return v2XMessageListener_401011;
+ }
+
/**
* 道路事件,服务端下发
*/
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java
index 224fcfef4d..1b00b259ca 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XSurroundingAdapter.java
@@ -11,7 +11,9 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
+import com.mogo.module.common.glide.SkinAbleBitmapTarget;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.entity.panel.SurroundingConstruction;
import com.mogo.module.v2x.listener.SurroundingItemClickListener;
@@ -84,22 +86,20 @@ public class V2XSurroundingAdapter extends RecyclerView.Adapter mV2XHistoryScenarioData = new ArrayList<>();
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java
index eb784416f2..7d893ee97e 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XSurroundingFragment.java
@@ -182,7 +182,8 @@ public class V2XSurroundingFragment extends MvpFragment refreshHeartBeat(@FieldMap Map liveBroadcast);
/**
- * 刷新地图气泡点
+ * 刷新地图气泡点,异步获取
*/
@FormUrlEncoded
@POST("/yycp-launcherSnapshot/launcherSnapshot/querySnapshotAsync")
Observable querySnapshotAsync(@FieldMap Map parameters);
+ /**
+ * 刷新地图气泡点,同步获取
+ */
+ @FormUrlEncoded
+ @POST("/yycp-launcherSnapshot/launcherSnapshot/querySnapshotSync")
+ Observable querySnapshotSync(@FieldMap Map parameters);
+
/**
* 直播点赞
*/
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java
index 947cdffe39..f5de5e4ca9 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java
@@ -67,7 +67,7 @@ public class V2XRefreshModel {
}
/**
- * 刷新地图点数据
+ * 刷新地图点数据,同步获取
*/
public void querySnapshotAsync(MogoLatLng latLng, int radius, int limit) {
if (mV2XApiService != null) {
@@ -96,6 +96,42 @@ public class V2XRefreshModel {
}
}
+ /**
+ * 刷新地图点数据,同步获取
+ */
+ public void querySnapshotSync(MogoLatLng latLng, int radius, int limit, final V2XRefreshCallback callback) {
+ if (mV2XApiService != null) {
+ final Map query = new ParamsProvider.Builder(mContext).build();
+ final RefreshBody refreshBody = new RefreshBody();
+ refreshBody.limit = limit;
+ refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lon);
+ refreshBody.radius = radius;
+ refreshBody.dataType.add(ServiceConst.CARD_TYPE_ROAD_CONDITION);
+ refreshBody.viewPush = true;
+ query.put("data", GsonUtil.jsonFromObject(refreshBody));
+ mV2XApiService.querySnapshotSync(query)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(MarkerResponse o) {
+ super.onSuccess(o);
+ if (callback != null) {
+ callback.onSuccess(o);
+ }
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ if (callback != null) {
+ callback.onFail(message);
+ }
+ }
+ });
+ }
+ }
+
/**
* 触发刷新直播心跳
*
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java
index 5cc1180a9a..ffce83b1a0 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java
@@ -10,8 +10,6 @@ import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
-import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpButton;
-import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpDialog;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java
similarity index 94%
rename from modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java
rename to modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java
index 5adcb00886..54ba834788 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpButton.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java
@@ -1,4 +1,4 @@
-package com.mogo.module.v2x.scenario.scene.seek;
+package com.mogo.module.v2x.scenario.scene.help;
import android.content.Intent;
import android.view.View;
@@ -70,12 +70,12 @@ public class V2XSeekHelpButton implements IV2XButton {
if (tv != null) {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("将为您取消", null);
tv.setVisibility(View.GONE);
- V2XServiceManager
- .getV2XRefreshModel().cancelHelpSignal(new V2XRefreshCallback() {
+ V2XServiceManager.getV2XRefreshModel().cancelHelpSignal(new V2XRefreshCallback() {
@Override
public void onSuccess(BaseData result) {
tv.setVisibility(View.GONE);
}
+
@Override
public void onFail(String msg) {
tv.setVisibility(View.VISIBLE);
@@ -85,6 +85,7 @@ public class V2XSeekHelpButton implements IV2XButton {
}
unRegisterVoice();
}
+
@Override
public void registerVoice() {
V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP, cancelCb);
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpDialog.java
similarity index 99%
rename from modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java
rename to modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpDialog.java
index e88c985170..a4d8161609 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpDialog.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpDialog.java
@@ -1,4 +1,4 @@
-package com.mogo.module.v2x.scenario.scene.seek;
+package com.mogo.module.v2x.scenario.scene.help;
import android.content.Context;
import android.content.Intent;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundConstraintLayout.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundConstraintLayout.java
index 9927476c71..607d8a3a04 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundConstraintLayout.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/RoundConstraintLayout.java
@@ -1,5 +1,6 @@
package com.mogo.module.v2x.view;
+import android.app.Application;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
@@ -7,9 +8,19 @@ import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatCallback;
+import androidx.appcompat.app.AppCompatDelegate;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.module.v2x.R;
+import com.mogo.skin.support.IMogoSkinCompatSupportable;
+import com.mogo.skin.support.IMogoSkinSupportInstaller;
+import com.mogo.skin.support.MogoSkinManager;
+import com.mogo.skin.support.SkinMode;
+import com.mogo.skin.support.helper.MogoSkinCompatBackgroundHelperDelegate;
+import com.mogo.skin.support.helper.MogoSkinCompatHelperDelegate;
+import com.mogo.skin.support.helper.MogoSkinCompatTextHelperDelegate;
/**
* author : donghongyu
@@ -18,23 +29,19 @@ import com.mogo.module.v2x.R;
* desc :
* version: 1.0
*/
-public class RoundConstraintLayout extends ConstraintLayout {
+public class RoundConstraintLayout extends ConstraintLayout implements IMogoSkinCompatSupportable {
private float roundLayoutRadius = 14f;
private Path roundPath;
private RectF rectF;
+ private MogoSkinCompatBackgroundHelperDelegate mBackgroundTintHelper;
public RoundConstraintLayout(Context context) {
this(context, null);
}
- public RoundConstraintLayout(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs);
- }
-
public RoundConstraintLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
-
+ this(context, attrs, 0);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundLayout);
roundLayoutRadius = typedArray.getDimensionPixelSize(R.styleable.RoundLayout_roundLayoutRadius, (int) roundLayoutRadius);
typedArray.recycle();
@@ -42,6 +49,13 @@ public class RoundConstraintLayout extends ConstraintLayout {
init();
}
+ public RoundConstraintLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ mBackgroundTintHelper = new MogoSkinCompatBackgroundHelperDelegate(this);
+ mBackgroundTintHelper.loadFromAttributes(attrs, defStyleAttr);
+ }
+
+
private void init() {
setWillNotDraw(false);//如果你继承的是ViewGroup,注意此行,否则draw方法是不会回调的;
roundPath = new Path();
@@ -74,4 +88,12 @@ public class RoundConstraintLayout extends ConstraintLayout {
}
super.draw(canvas);
}
+
+ @Override
+ public void applySkin() {
+ if (mBackgroundTintHelper != null) {
+ mBackgroundTintHelper.applySkin();
+ }
+ }
+
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XEventPanelHistoryCountView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XEventPanelHistoryCountView.java
index b372bc373d..0eefde7372 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XEventPanelHistoryCountView.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XEventPanelHistoryCountView.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java
index cf25fe1b0d..5099c33fbb 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XLiveGSYVideoView.java
@@ -24,6 +24,7 @@ import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
+import com.mogo.skin.support.IMogoSkinCompatSupportable;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.tencent.rtmp.ITXLivePlayListener;
@@ -41,7 +42,7 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
* desc :
* version: 1.0
*/
-public class V2XLiveGSYVideoView extends RoundLayout {
+public class V2XLiveGSYVideoView extends RoundLayout implements IMogoSkinCompatSupportable {
private final String TAG = "V2XLiveGSYVideoView";
private TXCloudVideoView mTxcVideoView;
@@ -278,4 +279,9 @@ public class V2XLiveGSYVideoView extends RoundLayout {
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_REFRESH_LIVE_UN_WAKEUP);
super.onDetachedFromWindow();
}
+
+ @Override
+ public void applySkin() {
+
+ }
}
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_blank_history_event.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_blank_history_event.png
deleted file mode 100644
index c77748e661..0000000000
Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_blank_history_event.png and /dev/null differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png
index e7c778c377..c3372edaf2 100644
Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png
index 893d02518c..2c5aece9b2 100644
Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/panel_shadow_bg.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/panel_shadow_bg.png
new file mode 100644
index 0000000000..a3d240de1e
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/panel_shadow_bg.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_panel_close.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_panel_close.png
new file mode 100644
index 0000000000..892b93afaf
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_panel_close.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png
new file mode 100644
index 0000000000..6ab0b1547c
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_choose.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_choose.png
new file mode 100644
index 0000000000..a4ea109054
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_choose.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_second.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_second.png
new file mode 100644
index 0000000000..6e4cd579d9
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_second.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_unchoose.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_unchoose.png
new file mode 100644
index 0000000000..a116ac63ce
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_enthusiasm_unchoose.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_event_panel_more.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_event_panel_more.png
new file mode 100644
index 0000000000..ab63bcf60e
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/icon_event_panel_more.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png
new file mode 100644
index 0000000000..2466405ac2
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_choose.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_choose.png
new file mode 100644
index 0000000000..a62533c607
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_choose.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_second.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_second.png
new file mode 100644
index 0000000000..84c49a0052
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_second.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_unchoose.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_unchoose.png
new file mode 100644
index 0000000000..79ae51a734
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_enthusiasm_unchoose.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_event_panel_more.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_event_panel_more.png
new file mode 100644
index 0000000000..2cf79cfff6
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_event_panel_more.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_share_empty.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_share_empty.png
new file mode 100644
index 0000000000..4d860aba9b
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_share_empty.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_panel_close.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_panel_close.png
new file mode 100644
index 0000000000..892b93afaf
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_panel_close.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png
new file mode 100644
index 0000000000..239b9eb114
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml
index 10fe9e7433..a7d161b299 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_description.xml
@@ -1,7 +1,7 @@
-
+
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_go_to_share.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_go_to_share.xml
index 4ef10f4bc0..3d72d093db 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_go_to_share.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_go_to_share.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml
index d45ca08f1b..4d7ff1b8b4 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_refresh.xml
@@ -4,6 +4,6 @@
+ android:endColor="#5CC1FF"
+ android:startColor="#256BFF" />
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_bkg_dark_light_same.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_bkg_dark_light_same.xml
new file mode 100644
index 0000000000..df4fdef366
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_bkg_dark_light_same.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_bg.xml
index fb63dbc5f6..f44cd7ff67 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_bg.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_bg.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_left_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_left_bg.xml
index a8867acd28..8bf4d9a93a 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_left_bg.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_left_bg.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_right_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_right_bg.xml
index 9c3812f50e..a7017424a7 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_right_bg.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_dialog_right_bg.xml
@@ -3,7 +3,7 @@
-
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_more_bkg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_more_bkg.xml
deleted file mode 100644
index 05b8d4a553..0000000000
--- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_more_bkg.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
- -
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_panel_color_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_panel_color_bg.xml
new file mode 100644
index 0000000000..2c862044c3
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_panel_color_bg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_shadow_shape_view.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_shadow_shape_view.xml
index 7ac15899e1..12e6ec50cf 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_shadow_shape_view.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_shadow_shape_view.xml
@@ -1,8 +1,9 @@
+
+ android:endColor="@color/panel_shadow_shape_color"/>
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_seek_help.xml b/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_seek_help.xml
index d82d598dd3..cc386cac0d 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_seek_help.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/dialog_v2x_seek_help.xml
@@ -3,10 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#88000000">
+ android:layout_height="match_parent">
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_share_load_more.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_share_load_more.xml
index f4be8180bf..9861467021 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_share_load_more.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_share_load_more.xml
@@ -7,14 +7,14 @@
+ android:textSize="@dimen/dp_34" />
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml
index 3c6389b1f9..073241387f 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fatigue_driving.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml
index 328ace0186..a7fe228083 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help.xml
@@ -1,20 +1,17 @@
-
+ android:background="@drawable/bg_v2x_event_list_item">
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking.xml
index b7d53a2321..ec8da8c971 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking.xml
@@ -1,5 +1,5 @@
-
+ android:paddingEnd="@dimen/dp_40">
-
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml
index a2c65f66b0..48bdbca7bd 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_live_video.xml
@@ -1,5 +1,5 @@
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_road_live_car_detail.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_road_live_car_detail.xml
index e25e2db5f7..aec79a948f 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_road_live_car_detail.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_road_live_car_detail.xml
@@ -6,45 +6,52 @@
android:layout_width="match_parent"
android:layout_height="@dimen/module_v2x_event_window_height">
-
+ android:layout_height="match_parent"
+ app:cardBackgroundColor="#FFFFFF"
+ app:cardCornerRadius="12px"
+ app:layout_constraintTop_toTopOf="parent">
-
+
-
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history.xml
index 2452269d9f..7bd7a12d7a 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history.xml
@@ -1,20 +1,20 @@
-
+ android:layout_marginLeft="10px"
+ android:layout_marginRight="10px"
+ android:layout_marginBottom="14px"
+ android:background="@drawable/bg_v2x_event_list_item">
@@ -58,11 +61,12 @@
android:id="@+id/tvAddress"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/dp_24"
android:layout_marginTop="@dimen/dp_24"
android:layout_marginRight="@dimen/dp_30"
android:ellipsize="end"
android:maxLines="1"
- android:textColor="#FFFFFF"
+ android:textColor="@color/v2x_FFF_333"
android:textSize="@dimen/dp_34"
app:layout_constraintEnd_toStartOf="@+id/llIllegalParkingLike"
app:layout_constraintStart_toEndOf="@+id/ivIconP"
@@ -77,7 +81,7 @@
android:layout_marginBottom="@dimen/dp_24"
android:alpha="0.6"
android:gravity="center_vertical"
- android:textColor="#FFFFFF"
+ android:textColor="@color/v2x_FFF_666"
android:textSize="@dimen/dp_30"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/tvAddress"
@@ -98,8 +102,10 @@
android:id="@+id/llIllegalParkingUnLike"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginRight="26px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
+
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml
index bc036adf46..70bb272cf3 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml
@@ -1,29 +1,30 @@
-
+ android:layout_marginLeft="10px"
+ android:layout_marginRight="10px"
+ android:layout_marginBottom="14px"
+ android:background="@drawable/bg_v2x_event_list_item">
@@ -106,9 +104,9 @@
android:textColor="#FFF"
android:textSize="@dimen/dp_80"
android:textStyle="bold"
- app:layout_constraintBottom_toBottomOf="@+id/tvFaultHelpEventTime"
+ app:layout_constraintBottom_toBottomOf="@+id/ivFaultHelpEventCall"
app:layout_constraintEnd_toStartOf="@+id/ivFaultHelpEventCall"
- app:layout_constraintStart_toEndOf="@+id/tvFaultHelpEventTime"
+ app:layout_constraintTop_toTopOf="@+id/ivFaultHelpEventCall"
tools:text="300M" />
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml b/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml
index f96911d38e..1a1e878f3a 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_event_panel_fragment_surrounding.xml
@@ -3,8 +3,7 @@
xmlns:androud="http://schemas.android.com/apk/res-auto"
android:id="@+id/clPanelContainer"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/bg_v2x_event_surrounding_item">
+ android:layout_height="match_parent">
+ android:visibility="visible">
@@ -49,13 +47,13 @@
android:layout_below="@+id/layout_top"
android:layout_marginLeft="@dimen/module_v2x_surrounding_root_margin_left"
android:layout_marginRight="@dimen/module_v2x_surrounding_root_margin_left"
- android:layout_marginBottom="@dimen/module_v2x_surrounding_margin_left">
+ android:layout_marginBottom="@dimen/module_v2x_panel_surrounding_marginbottom">
@@ -84,7 +82,7 @@
android:layout_marginTop="@dimen/module_v2x_surrounding_empty_tv_margin_top"
android:gravity="center_horizontal"
android:text="周边5公里,暂无交通事件"
- android:textColor="@color/transparent_white_30"
+ android:textColor="@color/v2x_FFF_333"
android:textSize="@dimen/module_v2x_surrounding_top_textsize"
android:textStyle="bold" />
@@ -97,38 +95,46 @@
android:layout_marginTop="1px"
android:gravity="center_horizontal"
android:text="你可以试着分享一个事件给其他车主"
- android:textColor="@color/transparent_white_30"
+ android:textColor="@color/v2x_FFF_333"
android:textSize="@dimen/module_v2x_surrounding_top_textsize"
android:textStyle="bold" />
-
+ android:layout_marginTop="@dimen/module_v2x_surrounding_empty_bt_margin_top">
-
+
+
+
+
+
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_fragment_surrounding_event_item.xml b/modules/mogo-module-v2x/src/main/res/layout/module_fragment_surrounding_event_item.xml
index 5e497f6ba6..71284be35c 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_fragment_surrounding_event_item.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_fragment_surrounding_event_item.xml
@@ -34,7 +34,7 @@
android:layout_toRightOf="@+id/iv_event_type"
android:layout_marginLeft="@dimen/module_v2x_surrounding_item_marigin_bottom_left"
android:textSize="@dimen/module_v2x_surrounding_item_bottom_left_textsize"
- android:textColor="@color/white"
+ android:textColor="@color/v2x_item_white"
android:text="求助" />
-
@@ -53,7 +50,7 @@
android:textStyle="bold" />
@@ -79,6 +76,7 @@
android:overScrollMode="never"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rgTabSelect" />
@@ -86,15 +84,16 @@
android:id="@+id/btnHidePanels"
android:layout_width="@dimen/dp_88"
android:layout_height="@dimen/dp_88"
- android:background="@drawable/icon_window_close"
+ android:layout_marginRight="28px"
+ android:background="@drawable/v2x_panel_close"
app:layout_constraintBottom_toBottomOf="@+id/rgTabSelect"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/rgTabSelect" />
-
+
+
+
+
+
-
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_scenario_history.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_scenario_history.xml
index 4f91e0dbcb..ade8f9ebe6 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_scenario_history.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_scenario_history.xml
@@ -12,30 +12,23 @@
android:visibility="gone"
tools:visibility="visible" />
-
-
-
-
-
-
+ android:paddingStart="@dimen/dp_60"
+ android:paddingBottom="@dimen/dp_27"
+ android:text="今日出行遇到的交通事件"
+ android:textColor="@color/v2x_FFF_333"
+ android:textSize="@dimen/dp_36"
+ android:textStyle="bold"
+ app:layout_scrollFlags="scroll|enterAlways" />
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml
index 90a57dcea2..b9d812a392 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_description.xml
@@ -20,7 +20,7 @@
android:paddingTop="10px"
android:text="小窍门:分享路况,点赞其他车主,有助于提高热心指数"
android:textColor="#FFFFFF"
- android:textSize="16px">
+ android:textSize="@dimen/share_top_text_size">
@@ -42,17 +42,17 @@
android:gravity="center_horizontal|center"
android:text="0"
android:textColor="#FFFFFF"
- android:textSize="36px" />
+ android:textSize="@dimen/share_des_num_size" />
+ android:textSize="@dimen/share_index_des_size" />
@@ -76,17 +76,17 @@
android:gravity="center_horizontal|top"
android:text="0"
android:textColor="#FFFFFF"
- android:textSize="36px" />
+ android:textSize="@dimen/share_des_num_size" />
+ android:textSize="@dimen/share_index_des_size" />
@@ -101,9 +101,9 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
+ android:gravity="center"
android:orientation="vertical"
- android:paddingTop="17px"
- android:gravity="center">
+ android:paddingTop="@dimen/v2x_index_rating_top">
+ android:paddingTop="@dimen/share_index_bottom_padding"
+ android:text="热心指数"
+ android:textColor="#FFFFFF"
+ android:textSize="@dimen/share_index_des_size" />
+
-
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_empty.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_empty.xml
index a0f5bd3e2c..f382cc0a4d 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_empty.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_empty.xml
@@ -7,8 +7,8 @@
@@ -18,46 +18,46 @@
android:layout_height="wrap_content"
android:layout_below="@+id/no_share_image"
android:layout_centerHorizontal="true"
- android:layout_marginTop="12.6px"
+ android:layout_marginTop="@dimen/share_empty_btn_padding"
android:alpha="0.7"
android:gravity="bottom"
android:text="你还没有分享过道路事件,快去试试吧"
- android:textColor="#FFFFFF"
- android:textSize="18px" />
+ android:textColor="@color/v2x_FFF_333"
+ android:textSize="@dimen/dp_34" />
+ android:layout_marginTop="@dimen/share_empty_btn_padding">
+ android:textSize="@dimen/dp_34" />
+ android:textSize="@dimen/dp_34" />
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_item.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_item.xml
index 7bdd96bc8a..551aca571d 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_item.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_item.xml
@@ -1,113 +1,101 @@
-
+ android:layout_marginBottom="14px"
+ android:background="@drawable/bg_v2x_event_list_item">
-
+ android:layout_marginLeft="20px"
+ android:layout_marginTop="@dimen/dp_24"
+ android:background="@drawable/bg_v2x_event_type_read"
+ android:gravity="center"
+ android:paddingLeft="@dimen/dp_10"
+ android:paddingTop="@dimen/dp_3"
+ android:paddingRight="@dimen/dp_10"
+ android:paddingBottom="@dimen/dp_3"
+ android:text="道路类型"
+ android:textColor="#FFFFFF"
+ android:textSize="@dimen/dp_28" />
-
+
-
+
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_recylerview.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_recylerview.xml
index 237458f7a2..93ff8fbf3c 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_recylerview.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_share_recylerview.xml
@@ -11,7 +11,7 @@
android:layout_height="match_parent"
android:orientation="vertical"
android:overScrollMode="never"
- app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager">
+ app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml b/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml
index 3358bb6463..50e6726c0c 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml
@@ -3,17 +3,17 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/llEventMore"
- android:layout_width="@dimen/dp_132"
- android:layout_height="@dimen/dp_132"
- android:background="@drawable/v2x_drawable_event_more_bkg"
+ android:layout_width="@dimen/module_v2x_panel_width"
+ android:layout_height="@dimen/module_v2x_panel_width"
+ android:background="@drawable/v2x_shadow_bg"
+ android:translationY="@dimen/v2x_panel_btn_translationY"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- tools:translationZ="1dp">
+ app:layout_constraintTop_toTopOf="parent">
diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_history_empty.xml b/modules/mogo-module-v2x/src/main/res/layout/view_history_empty.xml
index 7bb1bf469b..7e74267929 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/view_history_empty.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/view_history_empty.xml
@@ -8,8 +8,8 @@
android:id="@+id/ivEmptyView"
android:layout_width="@dimen/dp_355"
android:layout_height="@dimen/dp_355"
- android:layout_marginTop="@dimen/dp_120"
- android:src="@drawable/icon_blank_history_event"
+ android:layout_marginTop="60px"
+ android:src="@drawable/icon_share_empty"
app:layout_constraintBottom_toTopOf="@+id/tvTrip"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -23,7 +23,7 @@
android:gravity="center"
android:text="周边5公里,暂无交通事件\n
你可以试着分享一个交通事件给其他车主"
- android:textColor="@color/transparent_white_30"
+ android:textColor="@color/v2x_FFF_333"
android:textSize="@dimen/dp_36"
app:layout_constraintBottom_toTopOf="@+id/btnShear"
app:layout_constraintEnd_toEndOf="parent"
@@ -32,8 +32,8 @@