diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 8efbfa420e..9d8d20d50d 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -59,7 +59,6 @@
-
diff --git a/.idea/misc.xml b/.idea/misc.xml
index e082ea7475..97b9126cee 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/bak/screenrecord b/bak/screenrecord
new file mode 100644
index 0000000000..76347d6414
Binary files /dev/null and b/bak/screenrecord differ
diff --git a/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java b/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java
index fdf50007aa..5cd0e7df49 100644
--- a/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java
+++ b/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java
@@ -26,13 +26,13 @@ class HttpDnsNoop implements IMogoHttpDns {
@Override
public String getCachedHttpDnsIps( String host,int type ) {
- return null;
+ return host;
}
@Override
public void getHttpDnsIp( String host,int type, boolean useCache, IHttpDnsCallback callback ) {
if ( callback != null ) {
- callback.onParsed( null );
+ callback.onParsed( host );
}
}
diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java
index 7835571391..a3baa975a1 100644
--- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java
+++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java
@@ -8,11 +8,11 @@ import com.mogo.commons.debug.DebugConfig;
@Keep
public class WebSocketConstant {
- private static final String HOST_DEV = "ws://62.234.196.121";
- private static final String HOST_QA = "ws://62.234.196.121";
- private static final String HOST_DEMO = "ws://62.234.196.121";
+ private static final String HOST_DEV = "ws://119.45.249.167";
+ private static final String HOST_QA = "ws://119.45.249.167";
+ private static final String HOST_DEMO = "ws://119.45.249.167";
@Keep
- private static final String HOST_RELEASE = "ws://62.234.196.121";
+ private static final String HOST_RELEASE = "ws://119.45.249.167";
// private static final String PORT = ":14001/ws";
@Keep
public static final String PATH = "/ws";
diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java
index 1ad96357ef..fd995df8df 100644
--- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java
+++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java
@@ -2,6 +2,7 @@ package com.mogo.base.websocket;
import android.content.Context;
import android.os.SystemClock;
+import android.util.Log;
import androidx.annotation.Keep;
@@ -186,7 +187,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
@Override
public void handleMessage(String message) {
- Logger.d(TAG, "websocket received msg = " + message);
+ Logger.d(TAG, "websocket received msg = %s", message);
WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class);
int msgType = webSocketData.getMsgType();
Logger.d(TAG, "websocket received msg type = " + msgType);
@@ -198,9 +199,11 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
while (iterator.hasNext()) {
IMogoOnWebSocketMessageListener listener = iterator.next();
if (listener != null) {
- Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData());
+ Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = %s", webSocketData.getData());
Object receiveObj = GsonUtil.objectFromJson(webSocketData.getData(),listener.target());
+ final long start = System.currentTimeMillis();
listener.onMsgReceived(receiveObj);
+ Logger.d("WebSocketManager-sdk-timer", "cost " + (System.currentTimeMillis() - start) + "ms");
}
}
}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/CoordinateUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/CoordinateUtils.java
index cccab09de0..0b7281621a 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/CoordinateUtils.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/CoordinateUtils.java
@@ -76,4 +76,44 @@ public class CoordinateUtils {
return var10000;
}
+ /**
+ * @param lon1
+ * @param lat1
+ * @param lon2
+ * @param lat2
+ * @return 两坐标的距离 单位:米(M)
+ */
+ public static float calculateLineDistance( double lon1, double lat1, double lon2, double lat2 ) {
+ try {
+ double var2 = lon1;
+ double var4 = lat1;
+ double var6 = lon2;
+ double var8 = lat2;
+ var2 *= 0.01745329251994329D;
+ var4 *= 0.01745329251994329D;
+ var6 *= 0.01745329251994329D;
+ var8 *= 0.01745329251994329D;
+ double var10 = Math.sin( var2 );
+ double var12 = Math.sin( var4 );
+ double var14 = Math.cos( var2 );
+ double var16 = Math.cos( var4 );
+ double var18 = Math.sin( var6 );
+ double var20 = Math.sin( var8 );
+ double var22 = Math.cos( var6 );
+ double var24 = Math.cos( var8 );
+ double[] var28 = new double[3];
+ double[] var29 = new double[3];
+ var28[0] = var16 * var14;
+ var28[1] = var16 * var10;
+ var28[2] = var12;
+ var29[0] = var24 * var22;
+ var29[1] = var24 * var18;
+ var29[2] = var20;
+ return ( float ) ( Math.asin( Math.sqrt( ( var28[0] - var29[0] ) * ( var28[0] - var29[0] ) + ( var28[1] - var29[1] ) * ( var28[1] - var29[1] ) + ( var28[2] - var29[2] ) * ( var28[2] - var29[2] ) ) / 2.0D ) * 1.27420015798544E7D );
+ } catch ( Throwable var26 ) {
+ var26.printStackTrace();
+ return 0.0F;
+ }
+ }
+
}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java
index dfd92bd7e1..195de14f7c 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java
@@ -20,11 +20,12 @@ public class ViewUtils {
view.destroyDrawingCache();
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
- Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas( bitmap );
- view.draw( canvas );
- return bitmap;
-// return (bitmap = view.getDrawingCache()) != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null;
+// Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
+// Canvas canvas = new Canvas( bitmap );
+// view.draw( canvas );
+// return bitmap;
+ Bitmap bitmap = null;
+ return (bitmap = view.getDrawingCache()) != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null;
}
public static void processChildView(View view) {
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 15d1b0b9a5..c5371e1e3b 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
@@ -239,7 +239,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public void onDestroy() {
if ( mMapView != null ) {
mMapView.onDestroy();
- AMapUIController.getInstance().release();
+ AMapUIController.release();
AMapWrapper.release();
Logger.d( TAG, "map onDestroy" );
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java
index 68a8f2fd5d..79a180d0cd 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java
@@ -47,11 +47,16 @@ public class AMapUIController implements IMogoMapUIController {
}
public void initClient(IMogoMapUIController client) {
+ Logger.d( "whatthefuck-AMapUIController", "init %s", this );
this.mClient = client;
}
- public synchronized void release() {
+ public synchronized void destroy(){
mClient = null;
+ }
+
+ public static synchronized void release() {
+ sInstance.destroy();
sInstance = null;
}
@@ -80,6 +85,7 @@ public class AMapUIController implements IMogoMapUIController {
@Override
public void changeMapMode(EnumMapUI mode) {
+ Logger.d( "whatthefuck-AMapUIController", "%s", this );
if (mClient != null) {
mClient.changeMapMode(mode);
}
diff --git a/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/MogoMapApi.java b/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/MogoMapApi.java
index 1f99ae45d0..b776f80279 100644
--- a/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/MogoMapApi.java
+++ b/libraries/map-autonavi/src/main/java/com/mogo/map/impl/automap/navi/MogoMapApi.java
@@ -17,7 +17,9 @@ class MogoMapApi {
public static IMogoMapApiBuilder getApiBuilder() {
if ( sApiBuilder == null ) {
synchronized ( AutoNaviClient.class ) {
- sApiBuilder = ARouter.getInstance().navigation( IMogoMapApiBuilder.class );
+ if ( sApiBuilder == null ) {
+ sApiBuilder = ARouter.getInstance().navigation( IMogoMapApiBuilder.class );
+ }
}
}
return sApiBuilder;
diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle
index bc98d7bbf5..7be264997b 100644
--- a/libraries/map-custom/build.gradle
+++ b/libraries/map-custom/build.gradle
@@ -67,7 +67,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
- implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.7'
+ implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.8.1'
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1'
}
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
index aec9e0f31a..12afb20a67 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
@@ -26,6 +26,7 @@ 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.TipToast;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
@@ -70,7 +71,7 @@ public class AMapViewWrapper implements IMogoMapView,
private IMogoMap mIMap;
private AMapMarkerClickHandler mMarkerClickHandler;
- private EnumMapUI mCurrentUIMode;
+ private EnumMapUI mCurrentCarUIMode;
private boolean mIsCarLocked = false;
private int mLockZoom = 16;
@@ -85,6 +86,10 @@ public class AMapViewWrapper implements IMogoMapView,
private Location mLastDriveLocationShadow = null;
private EnumMapUI mCurrentUI;
+ private boolean mIsLightStyle = false;
+ private boolean mMapLoaded = false;
+ private boolean mIsFirstLocated = true;
+ private boolean mIsDelayed = false;
public AMapViewWrapper( MapAutoView mMapView ) {
startTime = System.currentTimeMillis();
@@ -216,8 +221,6 @@ public class AMapViewWrapper implements IMogoMapView,
if ( mMapView != null ) {
mMapView.onCreate( bundle );
Logger.d( TAG, "map onCreate" );
- initMapView();
- initMyLocation();
}
}
@@ -241,6 +244,12 @@ public class AMapViewWrapper implements IMogoMapView,
public void onDestroy() {
if ( mMapView != null ) {
mMapView.onDestroy();
+ mMapView.setOnMarkClickListener( null );
+ mMapView.setOnMapLoadedListener( null );
+ mMapView.setOnMapTouchListener( null );
+ mMapView.setOnMapClickListener( null );
+ mMapView.getLocationClient().unRegisterListener( this );
+ mMapView.setMOnCameraChangeListener( null );
Logger.d( TAG, "map onDestroy" );
}
}
@@ -297,13 +306,13 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public MapControlResult changeZoom( float zoom ) {
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return MapControlResult.ERROR;
+ }
Logger.d( TAG, "changeZoom %s", zoom );
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
- if ( mCurrentUI == EnumMapUI.Type_VR ) {
- return MapControlResult.ERROR;
- }
getMap().changeZoom( zoom );
return MapControlResult.SUCCESS;
}
@@ -313,6 +322,7 @@ public class AMapViewWrapper implements IMogoMapView,
if ( ui == null ) {
return;
}
+ Logger.d( TAG, "设置的样式 = %s", ui );
if ( checkAMapView() ) {
switch ( ui ) {
case CarUp_2D:
@@ -326,10 +336,12 @@ public class AMapViewWrapper implements IMogoMapView,
case Type_Light:
mMapView.getMapAutoViewHelper().setAutoSwitchStyle( false );
mMapView.getMapAutoViewHelper().setMapStyle( MapAutoApi.MAP_STYLE_DAY );
+ mIsLightStyle = true;
break;
case Type_Night:
mMapView.getMapAutoViewHelper().setAutoSwitchStyle( false );
mMapView.getMapAutoViewHelper().setMapStyle( MapAutoApi.MAP_STYLE_NIGHT );
+ mIsLightStyle = false;
break;
case Type_AUTO_LIGHT_Night:
mMapView.getMapAutoViewHelper().setAutoSwitchStyle( true );
@@ -341,11 +353,11 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void moveToCenter( MogoLatLng latLng ) {
-
+ moveToCenter( latLng, true );
}
private void setUIMode( EnumMapUI ui ) {
- this.mCurrentUIMode = ui;
+ this.mCurrentCarUIMode = ui;
if ( mMapView.getMapAutoViewHelper() != null ) {
switch ( ui ) {
case CarUp_2D:
@@ -353,6 +365,9 @@ public class AMapViewWrapper implements IMogoMapView,
mMapView.getMapAutoViewHelper().setMapViewPerspective( MapAutoApi.MAP_PERSPECTIVE_UP_CAR );
break;
case NorthUP_2D:
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
+ }
mMapView.getMapAutoViewHelper().setMapViewPerspective( MapAutoApi.MAP_PERSPECTIVE_UP_NORTH );
break;
}
@@ -369,6 +384,9 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void moveToCenter( MogoLatLng latLng, boolean animate ) {
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
+ }
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" );
@@ -384,6 +402,11 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void showMyLocation( boolean visible ) {
Logger.d( TAG, "showMyLocation1 %s", visible );
+
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
+ }
+
if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
@@ -436,6 +459,9 @@ public class AMapViewWrapper implements IMogoMapView,
// if ( DebugConfig.isDebug() ) {
// Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
// }
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
+ }
Logger.d( TAG, "锁车" );
// mMapView.getMapAutoViewHelper().setZoom(mLockZoom);
mMapView.getMapAutoViewHelper().setLockMode( true );
@@ -445,8 +471,8 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void loseLockMode() {
- if ( DebugConfig.isDebug() ) {
- Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
}
Logger.d( TAG, "解锁锁车" );
mMapView.getMapAutoViewHelper().setLockMode( false );
@@ -501,6 +527,9 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( checkAMapView() ) {
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
+ }
Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY );
mMapView.getMapAutoViewHelper().setPointToCenter( ( float ) mapCenterX, ( float ) mapCenterY );
}
@@ -572,11 +601,12 @@ public class AMapViewWrapper implements IMogoMapView,
if ( !checkAMapView() ) {
return;
}
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ Logger.w( TAG, "vr 模式下忽略该设置" );
+ return;
+ }
Logger.i( TAG, "showBounds:%s -%s-%s- %b ", tag, carPosition.toString(), bound.toShortString(), lockCarPosition );
try {
- if ( DebugConfig.isDebug() ) {
- Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
- }
LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds( carPosition, lonLats, lockCarPosition );
if ( !lockCarPosition ) {
loseLockMode();
@@ -606,7 +636,7 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public EnumMapUI getCurrentUiMode() {
- return mCurrentUIMode;
+ return mCurrentCarUIMode;
}
@Override
@@ -620,6 +650,9 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void setCarCursorOption( CarCursorOption option ) {
+ if ( mCurrentUI == EnumMapUI.Type_VR ) {
+ return;
+ }
if ( mCarCursorOption != null && mCarCursorOption != DEFAULT_OPTION ) {
mCarCursorOption.destroy();
}
@@ -690,7 +723,23 @@ public class AMapViewWrapper implements IMogoMapView,
}
NaviClient.getInstance( getContext() ).syncCarLocation( sysLocation );
- MapStyleController.getInstance().onLocationChanged( location, this );
+ if ( checkAMapView() && mMapLoaded ) {
+ // 地图初始化完成后,每隔5s自动判断当前地图的模式
+ if ( mIsFirstLocated ) {
+ if ( !mIsDelayed ) {
+ mIsDelayed = true;
+ UiThreadHandler.postDelayed( () -> {
+ Logger.d( TAG, "倒计时结束" );
+ mIsFirstLocated = false;
+ }, 5_000L );
+ }
+ } else {
+ mIsFirstLocated = true;
+ mIsDelayed = false;
+ Logger.d( TAG, "同步定位" );
+ MapStyleController.getInstance().onLocationChanged( location, this );
+ }
+ }
}
@Override
@@ -705,6 +754,7 @@ public class AMapViewWrapper implements IMogoMapView,
public void onMapLoaded() {
Logger.i( TAG, "autoop--onMapLoaded: " );
MogoMapListenerHandler.getInstance().onMapLoaded();
+ mMapLoaded = true;
CameraPosition cameraPosition = mMapView.getMapAutoViewHelper().getCameraPosition();
if ( cameraPosition != null ) {
Trace.beginSection( "timer.onCameraChangeFinish" );
@@ -714,9 +764,8 @@ public class AMapViewWrapper implements IMogoMapView,
cameraPosition.getBearing() );
Trace.endSection();
}
-
- getMap().getUIController().setAnchorRate( 0.01f );
- getMap().getUIController().setAnchorScale( 1.2f, 2.7f );
+ initMapView();
+ initMyLocation();
}
@Override
@@ -737,17 +786,17 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void onMapStatusChanged( int type, int value ) {
- Logger.i( TAG, "mapop--onMapStatusChanged-: " + type + "," + value );
+// Logger.i( TAG, "mapop--onMapStatusChanged-: " + type + "," + value );
}
@Override
public void onCameraChange( int type, int value ) {
- Logger.i( TAG, "mapop--onCameraChange-: " + type + "," + value );
+// Logger.i( TAG, "mapop--onCameraChange-: " + type + "," + value );
}
@Override
public void onCameraChangeFinish( @Nullable CameraPosition cameraPosition ) {
- Logger.i( TAG, "mapop--onCameraChangeFinish-: " + cameraPosition + "cost:" + ( System.currentTimeMillis() - startTime ) );
+// Logger.i( TAG, "mapop--onCameraChangeFinish-: " + cameraPosition + "cost:" + ( System.currentTimeMillis() - startTime ) );
if ( cameraPosition != null ) {
Trace.beginSection( "timer.onCameraChangeFinish" );
MogoMapListenerHandler.getInstance().onMapChanged( ObjectUtils.fromAMap( cameraPosition.getTarget() ),
@@ -773,8 +822,15 @@ public class AMapViewWrapper implements IMogoMapView,
}
+ //目前切换完vr之后,会立即回调其他样式,这里做一个判断
+// private boolean mVrModeAutoChangedFlag = false;
+
@Override
public void onChangeMapStyle( int i ) {
+
+ EnumMapUI last = mCurrentUI;
+ Logger.d( TAG, "currentMapStyle = %s", i );
+
if ( i == MapAutoApi.MAP_STYLE_DAY
|| i == MapAutoApi.MAP_STYLE_DAY_NAV ) {
mCurrentUI = EnumMapUI.Type_Light;
@@ -783,11 +839,30 @@ public class AMapViewWrapper implements IMogoMapView,
mCurrentUI = EnumMapUI.Type_Night;
} else if ( i == MapAutoApi.MAP_STYLE_VR ) {
mCurrentUI = EnumMapUI.Type_VR;
- } else if ( i == MapAutoApi.MAP_PERSPECTIVE_2D ) {
- mCurrentUI = EnumMapUI.CarUp_2D;
- } else if ( i == MapAutoApi.MAP_PERSPECTIVE_3D ) {
- mCurrentUI = EnumMapUI.CarUp_3D;
}
+// else if ( i == MapAutoApi.MAP_PERSPECTIVE_2D ) {
+// mCurrentUI = EnumMapUI.CarUp_2D;
+// } else if ( i == MapAutoApi.MAP_PERSPECTIVE_3D ) {
+// mCurrentUI = EnumMapUI.CarUp_3D;
+// }
+
+ if ( last == mCurrentUI ) {
+ Logger.d( TAG, "currentUI is same as last = %s", mCurrentUI );
+ return;
+ }
+
+ // vr 模式切换到普通模式下,保持之前的白天模式 wtf.
+ if ( last == EnumMapUI.Type_VR && mCurrentUI != last ) {
+ if ( mIsLightStyle ) {
+ changeMapMode( EnumMapUI.Type_Light );
+ return;
+ }
+// if ( mVrModeAutoChangedFlag ) {
+// mVrModeAutoChangedFlag = false;
+// return;
+// }
+ }
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
if ( mCurrentUI != null ) {
UiThreadHandler.post( () -> {
try {
@@ -809,16 +884,32 @@ public class AMapViewWrapper implements IMogoMapView,
public void onStyleAutoChanged( boolean isVrMode ) {
if ( isVrMode ) {
if ( mCurrentUI != EnumMapUI.Type_VR ) {
- changeZoom( 20 );
- changeMapMode( EnumMapUI.Type_VR );
Logger.d( TAG, "自动切换为vr模式" );
+// mVrModeAutoChangedFlag = true;
+ changeMapMode( EnumMapUI.Type_VR );
}
} else {
if ( mCurrentUI == EnumMapUI.Type_VR ) {
- changeZoom( 16 );
- changeMapMode( EnumMapUI.Type_Night );
Logger.d( TAG, "自动切换为2D模式" );
+ if ( mIsLightStyle ) {
+ changeMapMode( EnumMapUI.Type_Light );
+ } else {
+ changeMapMode( EnumMapUI.Type_Night );
+ }
}
}
}
+
+ private boolean mRtkEnable = false;
+
+ @Override
+ public void rtkEnable( boolean enable ) {
+ try {
+ mRtkEnable = !mRtkEnable;
+ TipToast.shortTip( mRtkEnable ? "已开启gps道路匹配" : "已开启rtk道路匹配" );
+ mMapView.getLocationClient().rtkEnable( mRtkEnable );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "rtkEnable" );
+ }
+ }
}
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java
index 4e9a9a7885..6468999171 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java
@@ -3,6 +3,7 @@ package com.mogo.map.impl.custom;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.CoordinatesTransformer;
import com.mogo.map.IMogoMapApiBuilder;
import com.mogo.map.IMogoMapView;
@@ -92,16 +93,14 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder {
@Override
public IMogoMapView getMapView( Context context ) {
NavAutoApi.INSTANCE.init( context, MapParams.Companion.init()
- .setDebugMode( true )
+ .setDebugMode( DebugConfig.isDebug() )
.setCoordinateType( MapParams.COORDINATETYPE_GCJ02 )
.setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D )
- .setStyleDir( "sdcard/shmdata_asset/mogo_style" )
- .setCachePath( "sdcard/tiles" )
.setZoom( 16 )
.setPointToCenter( 0.734375f, 0.5f )
.setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() );
- MapAutoView mapAutoView = new MapAutoView( context );
- IMogoMapView mapView = new AMapViewWrapper( mapAutoView );
+ MapAutoView mapAutoView = new MapAutoView(context);
+ IMogoMapView mapView = new AMapViewWrapper(mapAutoView);
return mapView;
}
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java
index 949dc5ac62..1d7da13ced 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java
@@ -61,7 +61,6 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
marker.setMObject( this );
MarkerWrapperClickHelper.getInstance().setMogoMarkerMap( marker.getId(), this );
}
- marker.setSaveBitmapEnable( true );
setObject( mogoMarkerOptions.getObject() );
this.mMogoMarkerOptions = mogoMarkerOptions;
mMogoMarkerOptions.addObserver( this );
@@ -141,12 +140,12 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
if ( icons == null || icons.isEmpty() ) {
return;
}
- ArrayList descriptors = new ArrayList<>();
+ ArrayList< BitmapDescriptor > descriptors = new ArrayList<>();
for ( Bitmap icon : icons ) {
if ( icon == null || icon.isRecycled() ) {
continue;
}
- descriptors.add( BitmapDescriptorFactory.INSTANCE.fromBitmap(icon));
+ descriptors.add( BitmapDescriptorFactory.INSTANCE.fromBitmap( icon ) );
}
if ( descriptors.isEmpty() ) {
return;
@@ -265,16 +264,16 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
@Override
public void setOnMarkerClickListener( IMogoMarkerClickListener listener ) {
mMogoMarkerClickListener = listener;
- if ( mMarker != null ) {
- mMarker.setOnMarkClickListener( new OnMarkClickListener() {
- @Override
- public void onMarkClick( @NotNull Marker marker ) {
- if ( mMogoMarkerClickListener != null ) {
- mMogoMarkerClickListener.onMarkerClicked( AMapMarkerWrapper.this );
- }
- }
- } );
- }
+// if ( mMarker != null ) {
+// mMarker.setOnMarkClickListener( new OnMarkClickListener() {
+// @Override
+// public void onMarkClick( @NotNull Marker marker ) {
+// if ( mMogoMarkerClickListener != null ) {
+// mMogoMarkerClickListener.onMarkerClicked( AMapMarkerWrapper.this );
+// }
+// }
+// } );
+// }
}
@Override
@@ -505,9 +504,14 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
@Override
public void use3DResource( int model3D ) {
try {
- mMarker.setMarkerOptions( mMarker.getMarkeOptions().marker3DIcon( model3D ) );
+ mMarker.setMarkerOptions( mMarker.getMarkeOptions().anchorColor("#00FF00").marker3DIcon( model3D ) );
} catch ( Exception e ) {
Logger.e( TAG, e, "use3DResource" );
}
}
+
+ @Override
+ public void setAnchorColor( String anchorColor ) {
+ mMarker.setMarkerOptions( mMarker.getMarkeOptions().anchorColor( anchorColor ) );
+ }
}
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/uicontroller/AMapUIController.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/uicontroller/AMapUIController.java
index a9d388951a..8b4516726c 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/uicontroller/AMapUIController.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/uicontroller/AMapUIController.java
@@ -7,14 +7,12 @@ import android.view.View;
import android.view.animation.Interpolator;
import com.mogo.map.MogoLatLng;
-import com.mogo.map.MogoMap;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.MapCameraPosition;
import com.mogo.map.uicontroller.MapControlResult;
-import com.mogo.utils.logger.Logger;
import java.util.List;
@@ -291,4 +289,11 @@ public class AMapUIController implements IMogoMapUIController {
public void setAnchorRate( float rate ) {
}
+
+ @Override
+ public void rtkEnable( boolean enable ) {
+ if ( mClient != null ) {
+ mClient.rtkEnable( enable );
+ }
+ }
}
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java
index 29574c7749..9bc315a7b6 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java
@@ -1,6 +1,7 @@
package com.mogo.map.impl.custom.utils;
import android.graphics.Bitmap;
+import android.graphics.Color;
import android.text.TextUtils;
import android.view.View;
@@ -89,6 +90,11 @@ public class ObjectUtils {
}
if (opt.getIcon3DRes() != 0) {
markerOptions.marker3DIcon(opt.getIcon3DRes());
+ try {
+ Color.parseColor(opt.getAnchorColor());
+ markerOptions.anchorColor( opt.getAnchorColor() );
+ } catch ( Exception e ) {
+ }
}
if (!TextUtils.isEmpty(opt.getTitle())) {
markerOptions.title(opt.getTitle());
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 b00ed1c4bf..54a1e1c30f 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
@@ -349,4 +349,12 @@ public interface IMogoMarker {
default void use3DResource( @RawRes int model3D ) {
}
+
+ /**
+ * 设置3D车模颜色
+ * @param anchorColor
+ */
+ default void setAnchorColor(String anchorColor){
+
+ }
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java
index fbff166089..aba47f247f 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java
@@ -75,6 +75,7 @@ public class MogoMarkerOptions extends Observable {
private @RawRes
int mIcon3DRes = 0;
+ private String mAnchorColor;
private boolean mIs3DMode = false;
@@ -233,6 +234,11 @@ public class MogoMarkerOptions extends Observable {
return this;
}
+ public MogoMarkerOptions anchorColor( String anchorColor ) {
+ this.mAnchorColor = anchorColor;
+ return this;
+ }
+
public double getLatitude() {
return latitude;
}
@@ -334,6 +340,10 @@ public class MogoMarkerOptions extends Observable {
return mIcon3DRes;
}
+ public String getAnchorColor() {
+ return mAnchorColor;
+ }
+
@Override
public String toString() {
return "MogoMarkerOptions{" +
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
index a0ccbae772..21f3ed6515 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
@@ -238,7 +238,20 @@ public interface IMogoMapUIController {
}
- default void testGpsData(){
+ default void testGpsData() {
+
+ }
+
+ /**
+ * 自研地图是否匹配道路
+ *
+ * @param enable
+ */
+ default void rtkEnable( boolean enable ) {
+
+ }
+
+ default void destroy(){
}
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
index 68868c9f4f..d390ef0148 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
@@ -23,7 +23,7 @@ import java.util.List;
* 描述
*/
public class MogoMapUIController implements IMogoMapUIController {
-
+
private static final String TAG = "MogoMapUIController";
private IMogoMapUIController mDelegate;
@@ -31,13 +31,13 @@ public class MogoMapUIController implements IMogoMapUIController {
private static volatile MogoMapUIController sInstance;
private MogoMapUIController() {
- mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
+ initDelegate();
}
public static MogoMapUIController getInstance() {
- if (sInstance == null) {
- synchronized (MogoMapUIController.class) {
- if (sInstance == null) {
+ if ( sInstance == null ) {
+ synchronized ( MogoMapUIController.class ) {
+ if ( sInstance == null ) {
sInstance = new MogoMapUIController();
}
}
@@ -49,53 +49,54 @@ public class MogoMapUIController implements IMogoMapUIController {
this.mDelegate = mDelegate;
}
- public synchronized void release() {
+ public static synchronized void release() {
sInstance = null;
}
@Override
- public void setTrafficEnabled(boolean visible) {
- if (mDelegate != null) {
- mDelegate.setTrafficEnabled(visible);
+ public void setTrafficEnabled( boolean visible ) {
+ if ( mDelegate != null ) {
+ mDelegate.setTrafficEnabled( visible );
}
}
@Override
- public MapControlResult changeZoom( boolean zoom) {
- if (mDelegate != null) {
- return mDelegate.changeZoom(zoom);
+ public MapControlResult changeZoom( boolean zoom ) {
+ if ( mDelegate != null ) {
+ return mDelegate.changeZoom( zoom );
}
return MapControlResult.ERROR;
}
@Override
- public MapControlResult changeZoom(float zoom) {
- if (mDelegate != null) {
- return mDelegate.changeZoom(zoom);
+ public MapControlResult changeZoom( float zoom ) {
+ if ( mDelegate != null ) {
+ return mDelegate.changeZoom( zoom );
}
return MapControlResult.ERROR;
}
@Override
- public void changeMapMode(EnumMapUI mode) {
- if (mDelegate != null) {
+ public void changeMapMode( EnumMapUI mode ) {
+ if ( mDelegate != null ) {
+ Logger.d( "whatthefuck-MogoMapUIController", "%s", this );
Logger.d( TAG, "set type: %s", mode.name() );
- mDelegate.changeMapMode(mode);
+ mDelegate.changeMapMode( mode );
}
}
@Override
- public void moveToCenter(MogoLatLng latLng, boolean animate) {
- if (mDelegate != null) {
- mDelegate.moveToCenter(latLng, animate);
+ public void moveToCenter( MogoLatLng latLng, boolean animate ) {
+ if ( mDelegate != null ) {
+ mDelegate.moveToCenter( latLng, animate );
}
}
@Override
- public void showMyLocation(boolean visible) {
- if (mDelegate != null) {
- mDelegate.showMyLocation(visible);
+ public void showMyLocation( boolean visible ) {
+ if ( mDelegate != null ) {
+ mDelegate.showMyLocation( visible );
}
}
@@ -115,7 +116,7 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public void recoverLockMode() {
- if (mDelegate != null) {
+ if ( mDelegate != null ) {
mDelegate.recoverLockMode();
}
}
@@ -128,22 +129,22 @@ public class MogoMapUIController implements IMogoMapUIController {
}
@Override
- public void setLockZoom(int var1) {
- if (mDelegate != null) {
- mDelegate.setLockZoom(var1);
+ public void setLockZoom( int var1 ) {
+ if ( mDelegate != null ) {
+ mDelegate.setLockZoom( var1 );
}
}
@Override
public void displayOverview( Rect bounds ) {
- if (mDelegate != null) {
- mDelegate.displayOverview(bounds);
+ if ( mDelegate != null ) {
+ mDelegate.displayOverview( bounds );
}
}
@Override
public float getScalePerPixel() {
- if (mDelegate != null) {
+ if ( mDelegate != null ) {
return mDelegate.getScalePerPixel();
}
return 0;
@@ -151,7 +152,7 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public float getZoomLevel() {
- if (mDelegate != null) {
+ if ( mDelegate != null ) {
return mDelegate.getZoomLevel();
}
return 0;
@@ -159,7 +160,7 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public MogoLatLng getCameraNorthEastPosition() {
- if (mDelegate != null) {
+ if ( mDelegate != null ) {
return mDelegate.getCameraNorthEastPosition();
}
return null;
@@ -167,38 +168,39 @@ public class MogoMapUIController implements IMogoMapUIController {
@Override
public MogoLatLng getCameraSouthWestPosition() {
- if (mDelegate != null) {
+ if ( mDelegate != null ) {
return mDelegate.getCameraSouthWestPosition();
}
return null;
}
- @Override public MogoLatLng getWindowCenterLocation() {
- if (mDelegate != null) {
+ @Override
+ public MogoLatLng getWindowCenterLocation() {
+ if ( mDelegate != null ) {
return mDelegate.getWindowCenterLocation();
}
return null;
}
@Override
- public void setPointToCenter(double mapCenterX, double mapCenterY) {
- if (mDelegate != null) {
- mDelegate.setPointToCenter(mapCenterX, mapCenterY);
+ public void setPointToCenter( double mapCenterX, double mapCenterY ) {
+ if ( mDelegate != null ) {
+ mDelegate.setPointToCenter( mapCenterX, mapCenterY );
}
}
@Override
public Point getLocationPointInScreen( MogoLatLng latLng ) {
- if (mDelegate != null) {
- return mDelegate.getLocationPointInScreen(latLng);
+ if ( mDelegate != null ) {
+ return mDelegate.getLocationPointInScreen( latLng );
}
return null;
}
@Override
- public MogoLatLng getLocationMogoLatLngInScreen(Point point) {
- if (mDelegate != null) {
- return mDelegate.getLocationMogoLatLngInScreen(point);
+ public MogoLatLng getLocationMogoLatLngInScreen( Point point ) {
+ if ( mDelegate != null ) {
+ return mDelegate.getLocationMogoLatLngInScreen( point );
}
return null;
}
@@ -218,7 +220,7 @@ public class MogoMapUIController implements IMogoMapUIController {
}
@Override
- public void showBounds(String tag, MogoLatLng carPosition, List< MogoLatLng > lonLats, Rect bound, boolean lockCarPosition ) {
+ public void showBounds( String tag, MogoLatLng carPosition, List< MogoLatLng > lonLats, Rect bound, boolean lockCarPosition ) {
if ( mDelegate != null ) {
mDelegate.showBounds( tag, carPosition, lonLats, bound, lockCarPosition );
}
@@ -283,4 +285,23 @@ public class MogoMapUIController implements IMogoMapUIController {
mDelegate.changeBearing( bearing );
}
}
+
+ @Override
+ public void rtkEnable( boolean enable ) {
+ if ( mDelegate != null ) {
+ mDelegate.rtkEnable( enable );
+ }
+ }
+
+ @Override
+ public void destroy() {
+ mDelegate = null;
+ release();
+ }
+
+ private void initDelegate() {
+ if ( mDelegate == null ) {
+ mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
+ }
+ }
}
diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt
index 3d71a35b3e..53036c37c7 100644
--- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt
+++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt
@@ -7,7 +7,7 @@ class HttpConstants {
companion object {
const val DEV_BASE_URL_OWNER = "http://dzt-test.zhidaozhixing.com/"
- const val RELEASE_BASE_URL_OWNER = "http://dzt.zhidaohulian.com/"
+ const val RELEASE_BASE_URL_OWNER = "http://dzt.zhidaozhixing.com/"
const val SHOW_BASE_URL_OWNER = "http://dzt-show.zhidaozhixing.com/"
fun getBaseUrl(): String {
diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle
index 99e827b866..e6efc88b0b 100644
--- a/modules/mogo-module-common/build.gradle
+++ b/modules/mogo-module-common/build.gradle
@@ -12,7 +12,6 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
}
-
buildTypes {
release {
minifyEnabled false
@@ -34,6 +33,7 @@ dependencies {
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
implementation rootProject.ext.dependencies.callchatprovider
+ api "com.mogo.libs:hook:1.0"
if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.mogomap
api rootProject.ext.dependencies.mogomapapi
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java
index 2bed0dae80..2e3b93492d 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java
@@ -73,11 +73,27 @@ public class BezierAnimationView extends RelativeLayout implements View.OnClickL
runnable.run();
}
+ public void bezierAnimationStart(){
+ runnable = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Log.d("点赞--", "");
+ bezierAnimation(resource);
+ handler.postDelayed(this, 500);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ };
+ runnable.run();
+ }
+
private void bezierAnimation(int resource) {
final ImageView imageView = new ImageView(context);
imageView.setBackgroundResource(animation_drawable[resource]);
RelativeLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- params.addRule(ALIGN_BOTTOM);
+// params.addRule(ALIGN_BOTTOM);
params.addRule(CENTER_HORIZONTAL);
imageView.setLayoutParams(params);
addView(imageView);
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java
index 2026a34c70..768b3c522b 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java
@@ -13,10 +13,8 @@ import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.R;
-import com.mogo.module.common.constants.AdasRecognizedType;
import com.mogo.module.common.constants.DataTypes;
import com.mogo.service.adas.entity.ADASRecognizedListResult;
-import com.mogo.utils.ViewUtils;
import java.util.ArrayList;
import java.util.HashMap;
@@ -68,8 +66,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
// adas marker 缓存
private Map< String, IMogoMarker > mAdasRecognizedMarkersCaches = new ConcurrentHashMap<>();
- private boolean mIsVrMode = false;
-
public void renderAdasRecognizedResult( List< ADASRecognizedListResult > resultList, boolean machineVision, double curSpeed ) {
if ( resultList == null || resultList.isEmpty() ) {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers( DataTypes.TYPE_MARKER_ADAS );
@@ -100,15 +96,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
continue;
}
mAdasRecognizedMarkersCaches.put( uniqueKey, marker );
- } else {
- if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
- mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode();
- if ( mIsVrMode ) {
- marker.use3DResource( getVrModel() );
- } else {
- marker.setIcon( ViewUtils.fromView( inflateView( recognizedListResult, machineVision, 0 ) ) );
- }
- }
}
MogoLatLng lastPosition = mLastPositions.get( uniqueKey );
@@ -122,8 +109,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
if ( latLon == null ) {
continue;
}
-// double targetPos[] = transformGcj02ToFitMap( latLon.lat, latLon.lon );
-// points.add( endLatLon = new MogoLatLng( targetPos[POS_LAT], targetPos[POS_LON] ) );
points.add( endLatLon = new MogoLatLng( latLon.lat, latLon.lon ) );
}
@@ -135,8 +120,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
continue;
}
points.add( lastPosition );
-// double targetPos[] = transformGcj02ToFitMap( latLon.lat, latLon.lon );
-// points.add( endLatLon = new MogoLatLng( targetPos[POS_LAT], targetPos[POS_LON] ) );
points.add( endLatLon = new MogoLatLng( latLon.lat, latLon.lon ) );
}
mLastPositions.put( uniqueKey, endLatLon );
@@ -191,25 +174,18 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
return null;
}
-// double targetPos[] = transformGcj02ToFitMap( recognizedListResult.latLonList.get( 0 ).lat, recognizedListResult.latLonList.get( 0 ).lon );
MogoMarkerOptions options = new MogoMarkerOptions()
.owner( DataTypes.TYPE_MARKER_ADAS )
.anchor( 0.5f, 0.5f )
+ .set3DMode( true )
+ .icon3DRes( getVrModel() )
.rotate( ( float ) recognizedListResult.heading )
-// .position( new MogoLatLng( targetPos[POS_LAT], targetPos[POS_LON] ) );
.position( new MogoLatLng( recognizedListResult.latLonList.get( 0 ).lat, recognizedListResult.latLonList.get( 0 ).lon ) );
-
- if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
- options.icon3DRes( getVrModel() );
- } else {
- options.icon( inflateView( recognizedListResult, machineVision, curSpeed ) );
- }
-
return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_ADAS, options );
}
private int getVrModel() {
- return R.raw.taxi;
+ return R.raw.carred;
}
private View inflateView( ADASRecognizedListResult data, boolean machineVision, double curSpeed ) {
@@ -225,7 +201,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
// safeType
// ) );
- iv.setImageResource( R.drawable.icon_map_marker_car_type_taxi );
+ iv.setImageResource( R.drawable.icon_map_marker_car_gray );
return rootView;
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java
index 000b8ddc32..19b0c39582 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java
@@ -1,7 +1,6 @@
package com.mogo.module.common.drawer;
import android.content.Context;
-import android.os.SystemClock;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -9,15 +8,20 @@ import android.widget.ImageView;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.MogoLatLng;
+import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.MogoMarkerOptions;
+import com.mogo.map.uicontroller.MapCameraPosition;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.R;
import com.mogo.module.common.api.CallChatApi;
import com.mogo.module.common.constants.DataTypes;
import com.mogo.module.common.entity.CloudRoadData;
import com.mogo.module.common.entity.MogoSnapshotSetData;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.ViewUtils;
import com.mogo.utils.logger.Logger;
import com.zhidao.carchattingprovider.ICarsChattingProvider;
@@ -36,16 +40,19 @@ public
*
* 云端数据绘制
*/
-class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListener {
+class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListener, IMogoStatusChangedListener {
private static final String TAG = "SnapshotSetDataDrawer";
private static volatile SnapshotSetDataDrawer sInstance;
private Context mContext;
+ private boolean mChangeCarModeStatus;
private SnapshotSetDataDrawer() {
mContext = AbsMogoApplication.getApp();
+ MogoApisHandler.getInstance().getApis()
+ .getStatusManagerApi().registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
}
public static SnapshotSetDataDrawer getInstance() {
@@ -71,13 +78,38 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
// 云端 marker 缓存
private Map< String, IMogoMarker > mCloudSnapshotMarkersCaches = new ConcurrentHashMap<>();
- private int mPurseCounter = 0;
-
- private Map< String, MogoLatLng > mLastPositions = new ConcurrentHashMap<>();
+ private Map< String, CloudRoadData > mLastPositions = new ConcurrentHashMap<>();
private boolean mIsVrMode = false;
- private long mLastReceiveTime = 0L;
+// private long mLastReceiveTime = 0L;
+// private long mAnimationDuration = 500L;
+
+ @Override
+ public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
+ Logger.d( TAG, "%s - %s", descriptor, isTrue );
+ mChangeCarModeStatus = true;
+ ThreadPoolService.execute( () -> {
+ clearOldStyleMarkers();
+ } );
+ }
+
+ private void clearOldStyleMarkers() {
+ try {
+ MogoApisHandler.getInstance().getApis()
+ .getMapServiceApi().getMarkerManager( mContext )
+ .removeMarkers( DataTypes.TYPE_MARKER_CLOUD_DATA );
+ mLastPositions.clear();
+ mCloudSnapshotMarkersCaches.clear();
+ } catch ( Exception e ) {
+ }
+ try {
+ MogoApisHandler.getInstance().getApis()
+ .getMapServiceApi().getMarkerManager( mContext )
+ .removeMarkers( DataTypes.TYPE_MARKER_ADAS );
+ } catch ( Exception e ) {
+ }
+ }
/**
* 其他车辆、rsu 车辆数据
@@ -86,6 +118,10 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
*/
public void renderSnapshotData( MogoSnapshotSetData data,
boolean machineVision ) {
+ recordTimeFlag();
+ if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
+ return;
+ }
if ( data == null || (
( data.getAllList() == null || data.getAllList().isEmpty() ) &&
( data.getNearList() == null || data.getNearList().isEmpty() ) ) ) {
@@ -93,19 +129,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
return;
}
List< CloudRoadData > allDatumsList = new ArrayList<>();
- allDatumsList.addAll( data.getAllList() );
-// allDatumsList.addAll( data.getNearList() );
-// if ( machineVision ) {
-// allDatumsList.addAll( data.getAllList() );
-// allDatumsList.addAll( data.getNearList() );
-// } else {
-// allDatumsList.addAll( data.getAllList() );
-// }
- mPurseCounter++;
- if ( mPurseCounter >= 100 ) {
- mPurseCounter = 0;
- }
- purgeCloudSnapshotData( allDatumsList );
+ prepareData( data.getAllList(), allDatumsList );
for ( CloudRoadData cloudRoadData : allDatumsList ) {
if ( cloudRoadData == null ) {
continue;
@@ -118,7 +142,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
}
}
-
IMogoMarker marker = null;
String uniqueKey = cloudRoadData.getUniqueKey();
if ( TextUtils.isEmpty( uniqueKey ) ) {
@@ -127,7 +150,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
if ( mCloudSnapshotMarkersCaches.containsKey( uniqueKey ) ) {
marker = mCloudSnapshotMarkersCaches.get( uniqueKey );
}
- MogoLatLng target = new MogoLatLng( cloudRoadData.getLat(), cloudRoadData.getLon() );
if ( marker == null || marker.isDestroyed() ) {
marker = drawSnapshotDataMarker( cloudRoadData, machineVision, data.curSpeed );
if ( marker == null ) {
@@ -138,38 +160,104 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
}
mCloudSnapshotMarkersCaches.put( uniqueKey, marker );
} else {
- if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ if ( mChangeCarModeStatus ) {
+ mChangeCarModeStatus = false;
mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode();
if ( mIsVrMode ) {
+ Logger.d( TAG, "3D模型-%s", uniqueKey );
+ marker.getMogoMarkerOptions().set3DMode( true );
marker.use3DResource( getVrModel( cloudRoadData ) );
} else {
+ Logger.d( TAG, "2D贴图-%s", uniqueKey );
marker.getMogoMarkerOptions().set3DMode( false );
marker.setIcon( ViewUtils.fromView( inflateView( cloudRoadData, machineVision, 0 ) ) );
}
}
- MogoLatLng lastPosition = mLastPositions.get( uniqueKey );
-// double targetPos[] = transformGcj02ToFitMap( target.lat, target.lon );
-// double lastPos[] = transformGcj02ToFitMap( lastPosition.lat, lastPosition.lon );
+ CloudRoadData lastPosition = mLastPositions.get( uniqueKey );
if ( lastPosition != null ) {
- if ( lastPosition.equals( target ) ) {
- marker.setPosition( lastPosition.lat, lastPosition.lon );
+ if ( lastPosition.equals( cloudRoadData ) ) {
+ if ( ( ( int ) cloudRoadData.getSpeed() ) == 0 ) {
+ MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition();
+ if ( position != null ) {
+ marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() );
+ } else {
+ marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
+ }
+ }
+ Logger.d( TAG, "保持位置 - %s", uniqueKey );
+ marker.setPosition( lastPosition.getLat(), lastPosition.getLon() );
} else {
List< MogoLatLng > points = new ArrayList<>();
- points.add( new MogoLatLng( lastPosition.lat, lastPosition.lon ) );
- points.add( new MogoLatLng( target.lat, target.lon ) );
- marker.startSmoothInMs( points, 500L );
+ points.add( new MogoLatLng( lastPosition.getLat(), lastPosition.getLon() ) );
+ points.add( new MogoLatLng( cloudRoadData.getLat(), cloudRoadData.getLon() ) );
+ marker.startSmoothInMs( points, cloudRoadData.getSystemTime() - lastPosition.getSystemTime() );
+ Logger.d( TAG, "平滑移动 - %s duration = %s", uniqueKey, cloudRoadData.getSystemTime() - lastPosition.getSystemTime() );
}
} else {
- marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
- marker.setPosition( target.lat, target.lon );
+ MapCameraPosition position = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getMapCameraPosition();
+ if ( position != null ) {
+ marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() - position.getBearing() );
+ } else {
+ marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
+ }
+ marker.setPosition( cloudRoadData.getLat(), cloudRoadData.getLon() );
}
}
- mLastPositions.put( uniqueKey, target );
- mLastReceiveTime = SystemClock.elapsedRealtime();
+ mLastPositions.put( uniqueKey, cloudRoadData );
}
}
+ /**
+ * 过滤数据
+ *
+ * @param in 输入集合
+ * @param out 输出集合
+ */
+ private void prepareData( List< CloudRoadData > in, List< CloudRoadData > out ) {
+ filterData( in );
+ out.addAll( in );
+ purgeCloudSnapshotData( out );
+ }
+
+ /**
+ * 记录时间
+ */
+ private void recordTimeFlag() {
+// if ( mLastReceiveTime != 0 ) {
+// mAnimationDuration = System.currentTimeMillis() - mLastReceiveTime;
+// if ( mAnimationDuration > 1000L ) {
+// mAnimationDuration = 500L;
+// }
+// } else {
+// mAnimationDuration = 500L;
+// }
+// mLastReceiveTime = System.currentTimeMillis();
+ }
+
+ /**
+ * vr 模式下显示合并数据,否则只显示上报位置的车辆
+ *
+ * @param dataList
+ */
+ private void filterData( List< CloudRoadData > dataList ) {
+ if ( dataList == null || dataList.isEmpty() ) {
+ return;
+ }
+ if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ return;
+ }
+ List< CloudRoadData > newList = new ArrayList<>();
+ for ( CloudRoadData cloudRoadData : dataList ) {
+ if ( cloudRoadData.getFromType() != CloudRoadData.FROM_MY_LOCATION ) {
+ continue;
+ }
+ newList.add( cloudRoadData );
+ }
+ dataList.clear();
+ dataList.addAll( newList );
+ }
+
private void bindClickListener( IMogoMarker marker ) {
if ( marker == null || marker.isDestroyed() ) {
return;
@@ -224,17 +312,20 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
}
Logger.d( TAG, "draw marker uniqueKey = %s", data.getUniqueKey() );
-// double coor[] = transformGcj02ToFitMap( data.getLat(), data.getLon() );
MogoMarkerOptions options = new MogoMarkerOptions()
.owner( DataTypes.TYPE_MARKER_CLOUD_DATA )
.anchor( 0.5f, 0.5f )
.rotate( ( float ) data.getHeading() )
.object( data )
-// .position( new MogoLatLng( coor[POS_LAT], coor[POS_LON] ) );
.position( new MogoLatLng( data.getLat(), data.getLon() ) );
- if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ options.set3DMode( true );
+ options.anchorColor( "#00FF00" );
+ Logger.d( TAG, "3D模型 - %s", data.getUniqueKey() );
options.icon3DRes( getVrModel( data ) );
} else {
+ options.set3DMode( false );
+ Logger.d( TAG, "2D贴图 - %s", data.getUniqueKey() );
options.icon( inflateView( data, machineVision, curSpeed ) );
}
return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options );
@@ -243,9 +334,9 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
private int getVrModel( CloudRoadData data ) {
switch ( data.getFromType() ) {
case CloudRoadData.FROM_ADAS:
- return R.raw.taxi;
+// return R.raw.taxi;
case CloudRoadData.FROM_ROAD_UNIT:
- return R.raw.bus;
+// return R.raw.bus;
case CloudRoadData.FROM_MY_LOCATION:
default:
return R.raw.carred;
@@ -272,9 +363,9 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
private int get2DModel( CloudRoadData data ) {
switch ( data.getFromType() ) {
case CloudRoadData.FROM_ADAS:
- return R.drawable.icon_map_marker_car_type_taxi;
+// return R.drawable.icon_map_marker_car_type_taxi;
case CloudRoadData.FROM_ROAD_UNIT:
- return R.drawable.icon_map_marker_car_type_bus;
+// return R.drawable.icon_map_marker_car_type_bus;
case CloudRoadData.FROM_MY_LOCATION:
default:
return R.drawable.icon_map_marker_car_gray;
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java
index 8a130a1f59..7ec3052510 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java
@@ -50,10 +50,10 @@ public class MapMarkerAdapter {
* @return MarkerView
*/
public static IMarkerView getMarkerInfoWindowView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) {
- if ( markerShowEntity.isChecked() ) {
- return new MapMarkerInfoView( context, markerShowEntity, options );
- } else {
- return new MapMarkerView( context, markerShowEntity, options );
- }
+// if ( markerShowEntity.isChecked() ) {
+// return new MapMarkerInfoView( context, markerShowEntity, options );
+// } else {
+// }
+ return new MapMarkerView( context, markerShowEntity, options );
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java
index c3cbc4149e..f01929b1e5 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java
@@ -90,7 +90,9 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV
}
private void loadPoiTypeIconInUiThread(String url,int res) {
-
+ if (mMarker != null) {
+ mMarker.setIcon( ViewUtils.fromView(MapMarkerBaseView.this));
+ }
if (!url.isEmpty()) {
ivIcon.setPlaceHolder(res);
ivIcon.setFailureHolder(res);
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java
index 2bacde6a7e..627b15f3a9 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java
@@ -52,7 +52,11 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
public MapMarkerInfoView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) {
super( context );
mOptions = options;
- updateView( markerShowEntity );
+ try {
+ updateView( markerShowEntity );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
}
@Override
@@ -60,7 +64,7 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout_info, this );
ivUserHead = findViewById( R.id.ivUserHead );
// ivIcon = findViewById( R.id.ivIcon );
- ivIcon = findViewById(R.id.ivIcon);
+ ivIcon = findViewById( R.id.ivIcon );
clMarkerContent = findViewById( R.id.clMarkerContent );
ivReverseTriangle = findViewById( R.id.ivReverseTriangle );
ivCar = findViewById( R.id.ivCar );
@@ -69,84 +73,80 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
@Override
public void updateView( MarkerShowEntity markerShowEntity ) {
- try {
- Object bindObj = markerShowEntity.getBindObj();
+ Object bindObj = markerShowEntity.getBindObj();
- if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
- ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow_vr );
- } else {
- ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow );
- }
- clMarkerContent.setBackgroundResource( R.drawable.bg_map_marker_yellow_info );
- ivReverseTriangle.setImageResource( R.drawable.bg_shape_reverse_yellow );
- switch ( markerShowEntity.getMarkerType() ) {
- case ModuleNames.CARD_TYPE_CARS_CHATTING:
- case ModuleNames.CARD_TYPE_USER_DATA:
- ivUserHead.setVisibility( View.VISIBLE );
- ivIcon.setVisibility( View.INVISIBLE );
- loadImageWithMarker( markerShowEntity );
- ivCar.setImageResource( R.drawable.icon_map_marker_car_gray );
- //ivCar.setRotation(new Random().nextInt(360));
- ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() );
- break;
- case ModuleNames.CARD_TYPE_ROAD_CONDITION:
- case ModuleNames.CARD_TYPE_NOVELTY:
- ivUserHead.setVisibility( View.INVISIBLE );
- ivIcon.setVisibility( View.VISIBLE );
-
- if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) {
- // 根据poiType获取对应的图片
- String poiType = ((MarkerExploreWay) bindObj).getPoiType();
- PoiWrapper poiWrapper =
- CloudPoiManager.getInstance().getWrapperByPoiType(poiType);
- if (poiWrapper != null) {
- // 加载图片
- loadPoiTypeIcon(poiWrapper.getIconInfoUrl(),poiWrapper.getIconInfoRes());
- }else{
- Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType);
- }
- }
- break;
- case ModuleNames.CARD_TYPE_SHARE_MUSIC:
- ivUserHead.setVisibility( View.INVISIBLE );
- ivIcon.setVisibility( View.VISIBLE );
-
- if ( bindObj instanceof MarkerShareMusic ) {
- // 2 为书籍听书,3 为新闻,1 为qq音乐,int
- switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) {
- case 1:
- ivIcon.setImageResource( R.drawable.icon_map_marker_misic );
- break;
- case 2:
- ivIcon.setImageResource( R.drawable.icon_map_marker_book );
- break;
- case 3:
- ivIcon.setImageResource( R.drawable.icon_map_marker_news );
- break;
- default:
- ivIcon.setImageResource( R.drawable.icon_map_marker_misic );
- break;
- }
- }
-
- break;
- default:
- break;
- }
- if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) {
- String content;
- if ( markerShowEntity.getTextContent().length() > 8 ) {
- content = markerShowEntity.getTextContent().substring( 0, 7 ) + "...";
- } else {
- content = markerShowEntity.getTextContent();
- }
- tvMarkerContent.setText( content );
- }
-
- } catch ( Exception e ) {
- e.printStackTrace();
+ if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow_vr );
+ } else {
+ ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow );
}
+ clMarkerContent.setBackgroundResource( R.drawable.bg_map_marker_yellow_info );
+ ivReverseTriangle.setImageResource( R.drawable.bg_shape_reverse_yellow );
+ switch ( markerShowEntity.getMarkerType() ) {
+ case ModuleNames.CARD_TYPE_CARS_CHATTING:
+ case ModuleNames.CARD_TYPE_USER_DATA:
+ ivUserHead.setVisibility( View.VISIBLE );
+ ivIcon.setVisibility( View.INVISIBLE );
+ loadImageWithMarker( markerShowEntity );
+ ivCar.setImageResource( R.drawable.icon_map_marker_car_gray );
+ //ivCar.setRotation(new Random().nextInt(360));
+ ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() );
+ break;
+ case ModuleNames.CARD_TYPE_ROAD_CONDITION:
+ case ModuleNames.CARD_TYPE_NOVELTY:
+ ivUserHead.setVisibility( View.INVISIBLE );
+ ivIcon.setVisibility( View.VISIBLE );
+
+ if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) {
+ // 根据poiType获取对应的图片
+ String poiType = ( ( MarkerExploreWay ) bindObj ).getPoiType();
+ PoiWrapper poiWrapper =
+ CloudPoiManager.getInstance().getWrapperByPoiType( poiType );
+ if ( poiWrapper != null ) {
+ // 加载图片
+ loadPoiTypeIcon( poiWrapper.getIconInfoUrl(), poiWrapper.getIconInfoRes() );
+ } else {
+ Logger.e( TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType );
+ }
+ }
+ break;
+ case ModuleNames.CARD_TYPE_SHARE_MUSIC:
+ ivUserHead.setVisibility( View.INVISIBLE );
+ ivIcon.setVisibility( View.VISIBLE );
+
+ if ( bindObj instanceof MarkerShareMusic ) {
+ // 2 为书籍听书,3 为新闻,1 为qq音乐,int
+ switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) {
+ case 1:
+ ivIcon.setImageResource( R.drawable.icon_map_marker_misic );
+ break;
+ case 2:
+ ivIcon.setImageResource( R.drawable.icon_map_marker_book );
+ break;
+ case 3:
+ ivIcon.setImageResource( R.drawable.icon_map_marker_news );
+ break;
+ default:
+ ivIcon.setImageResource( R.drawable.icon_map_marker_misic );
+ break;
+ }
+ }
+
+ break;
+ default:
+ break;
+ }
+ if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) {
+ String content;
+ if ( markerShowEntity.getTextContent().length() > 8 ) {
+ content = markerShowEntity.getTextContent().substring( 0, 7 ) + "...";
+ } else {
+ content = markerShowEntity.getTextContent();
+ }
+ tvMarkerContent.setText( content );
+ }
+
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java
index 694414bf7b..9201252762 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java
@@ -24,11 +24,11 @@ import com.mogo.utils.logger.Logger;
* desc : 地图Marker图标
* version: 1.0
*/
-public class
-MapMarkerView extends MapMarkerBaseView {
+public class MapMarkerView extends MapMarkerBaseView {
private String TAG = "MapMarkerView";
private FrameLayout clMarkerTopView;
+ private MarkerShowEntity mMarkerShowEntity;
public MapMarkerView( Context context ) {
super( context );
@@ -45,7 +45,12 @@ MapMarkerView extends MapMarkerBaseView {
public MapMarkerView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) {
super( context );
mOptions = options;
- updateView( markerShowEntity );
+ mMarkerShowEntity = markerShowEntity;
+ try {
+ updateView( markerShowEntity );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
}
@Override
@@ -55,37 +60,35 @@ MapMarkerView extends MapMarkerBaseView {
} else {
LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout, this );
}
- ivIcon = findViewById( R.id.ivIcon );
clMarkerTopView = findViewById( R.id.clMarkerTopView );
+ ivIcon = findViewById( R.id.ivIcon );
ivCar = findViewById( R.id.ivCar );
}
@Override
public void updateView( MarkerShowEntity markerShowEntity ) {
- try {
- Object bindObj = markerShowEntity.getBindObj();
- switch ( markerShowEntity.getMarkerType() ) {
- case ModuleNames.CARD_TYPE_ROAD_CONDITION:
- case ModuleNames.CARD_TYPE_NOVELTY:
- if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) {
- // 根据poiType获取对应的图片
- String poiType = ( ( MarkerExploreWay ) bindObj ).getPoiType();
- PoiWrapper poiWrapper =
- CloudPoiManager.getInstance().getWrapperByPoiType( poiType );
- if ( poiWrapper != null ) {
- // 加载图片
- loadPoiTypeIcon( poiWrapper.getIconUrl(), poiWrapper.getIconRes() );
- } else {
- Logger.e( TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType );
- }
+ Object bindObj = markerShowEntity.getBindObj();
+ switch ( markerShowEntity.getMarkerType() ) {
+ case ModuleNames.CARD_TYPE_ROAD_CONDITION:
+ case ModuleNames.CARD_TYPE_NOVELTY:
+ if ( mMarkerShowEntity != null && mMarkerShowEntity.isChecked() ) {
+ clMarkerTopView.setBackgroundResource( R.drawable.module_services_marker_vr_bkg_checked );
+ }
+ if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) {
+ // 根据poiType获取对应的图片
+ String poiType = ( ( MarkerExploreWay ) bindObj ).getPoiType();
+ PoiWrapper poiWrapper =
+ CloudPoiManager.getInstance().getWrapperByPoiType( poiType );
+ if ( poiWrapper != null ) {
+ // 加载图片
+ loadPoiTypeIcon( poiWrapper.getIconUrl(), poiWrapper.getIconRes() );
+ } else {
+ Logger.e( TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType );
}
- break;
- default:
- break;
- }
-
- } catch ( Exception e ) {
- e.printStackTrace();
+ }
+ break;
+ default:
+ break;
}
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/RoadConditionInfoWindow3DAdapter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/RoadConditionInfoWindow3DAdapter.java
index 063be888e7..aada64a315 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/RoadConditionInfoWindow3DAdapter.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/RoadConditionInfoWindow3DAdapter.java
@@ -7,6 +7,7 @@ import com.mogo.map.marker.IMogoInfoWindowAdapter;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.entity.MarkerShowEntity;
+import com.mogo.utils.logger.Logger;
public
/**
@@ -17,6 +18,8 @@ public
*/
class RoadConditionInfoWindow3DAdapter implements IMogoInfoWindowAdapter {
+ private static final String TAG = "RoadConditionInfoWindow3DAdapter";
+
private MarkerShowEntity mEntity;
private Context mContext;
private MogoMarkerOptions mOptions;
@@ -31,6 +34,7 @@ class RoadConditionInfoWindow3DAdapter implements IMogoInfoWindowAdapter {
@Override
public View getInfoWindow( IMogoMarker marker ) {
+ Logger.d( TAG, "创建marker的infowindow" );
IMarkerView creator = MapMarkerAdapter.getMarkerInfoWindowView( mContext, mEntity, mOptions );
return creator.getView();
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudLocationInfo.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudLocationInfo.java
index 80d9306709..8c23c046ac 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudLocationInfo.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudLocationInfo.java
@@ -3,6 +3,7 @@ package com.mogo.module.common.entity;
import android.os.Parcel;
import android.os.Parcelable;
+import com.mogo.map.MogoLatLng;
import com.mogo.utils.CoordinateUtils;
import java.util.Objects;
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudRoadData.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudRoadData.java
index 61cc4892ad..d9d46e0918 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudRoadData.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/CloudRoadData.java
@@ -133,7 +133,7 @@ public class CloudRoadData implements Parcelable {
this.coordinates = coordinates;
}
- public void setUuid(String uuid) {
+ public void setUuid( String uuid ) {
this.uuid = uuid;
}
@@ -222,4 +222,19 @@ public class CloudRoadData implements Parcelable {
return new CloudRoadData[size];
}
};
+
+ @Override
+ public boolean equals( Object o ) {
+ if ( this == o ) {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() ) {
+ return false;
+ }
+ CloudRoadData that = ( CloudRoadData ) o;
+ return Double.compare( that.lat, lat ) == 0 &&
+ Double.compare( that.lon, lon ) == 0;
+ }
+
+
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
index 7e8a557f30..022550f286 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java
@@ -270,7 +270,10 @@ public class MapCenterPointStrategy {
if ( controller == null ) {
return;
}
- Logger.e( TAG, "scene"+scene );
+ if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+ Logger.w( TAG, "vr 模式下忽略该设置" );
+ return;
+ }
Map< Integer, Map< String, MapCenterPoint > > strategies = sCommonStrategies;
if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
strategies = sVrStrategies;
diff --git a/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_services_marker_vr_bkg_checked.png b/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_services_marker_vr_bkg_checked.png
new file mode 100644
index 0000000000..b82a2b5226
Binary files /dev/null and b/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_services_marker_vr_bkg_checked.png differ
diff --git a/modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml b/modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml
new file mode 100644
index 0000000000..f5838417a5
--- /dev/null
+++ b/modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/res/raw/car.n3d b/modules/mogo-module-common/src/main/res/raw/car.n3d
new file mode 100644
index 0000000000..ef51f1ee6a
Binary files /dev/null and b/modules/mogo-module-common/src/main/res/raw/car.n3d differ
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 63500218e2..ffa4c10a6e 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
@@ -839,11 +839,16 @@ public class EntranceFragment extends MvpFragment seekHelpGroup.setVisibility(View.GONE));
}
} else if (descriptor == StatusDescriptor.VR_MODE) {
- if (isTrue) {
- enterVrMode();
- } else {
- exitVrMode();
+ try {
+ if (isTrue) {
+ enterVrMode();
+ } else {
+ exitVrMode();
+ }
+ } catch( Exception e ){
+ e.printStackTrace();
}
+
}
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java
index 43b17f467a..cee3d0dce0 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java
@@ -16,6 +16,8 @@ import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.module.extensions.R;
import com.mogo.module.extensions.view.VerticalTrafficLightView;
+import static com.mogo.module.common.constants.TrafficLightConst.TRAFFIC_LIGHT_COLOR_GRAY;
+
/**
* vr模式下导航信息封装
*
@@ -28,14 +30,14 @@ public class VrModeNavInfoView extends BaseNaviInfoView implements Handler.Callb
private final VerticalTrafficLightView turnAroundLight, turnLeftLight, straightLight, turnRightLight;
private final ImageView ivTurnIcon;
- private final TextView tvDistance,tvDistanceUnit, tvNextRoad;
+ private final TextView tvDistance, tvDistanceUnit, tvNextRoad;
private final TextView tvCurrentSpeed;
private final Handler handler = new Handler(this);
public VrModeNavInfoView(Context context) {
- this(context,null);
+ this(context, null);
}
public VrModeNavInfoView(Context context, AttributeSet attrs) {
@@ -72,7 +74,7 @@ public class VrModeNavInfoView extends BaseNaviInfoView implements Handler.Callb
}
public void refreshLimitSpeed(int limitSpeed) {
- if(getVisibility() != View.VISIBLE){
+ if (getVisibility() != View.VISIBLE) {
return;
}
handler.removeMessages(MSG_HIDE_LIMIT_SPEED);
@@ -91,6 +93,14 @@ public class VrModeNavInfoView extends BaseNaviInfoView implements Handler.Callb
private int[] lightArray = new int[4];
private String[] surplusTimeArray = new String[4];
+ /**
+ * 将红绿灯状态全部置灰,相当于隐藏红绿灯状态
+ */
+ public void hideTrafficLightStatus() {
+ handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT);
+ refreshTrafficLightStatus(new int[]{TRAFFIC_LIGHT_COLOR_GRAY, TRAFFIC_LIGHT_COLOR_GRAY, TRAFFIC_LIGHT_COLOR_GRAY, TRAFFIC_LIGHT_COLOR_GRAY}, new String[]{"", "", "", ""});
+ }
+
/**
* 刷新红绿灯显示状态
*
@@ -107,12 +117,15 @@ public class VrModeNavInfoView extends BaseNaviInfoView implements Handler.Callb
turnRightLight.setTrafficLightStatus(laneLight[3], surplusTime[3]);
// todo 再根据当前所在车道,置灰不需关注的灯
+ handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT);
+ handler.sendEmptyMessageDelayed(MSG_HIDE_TRAFFIC_LIGHT, HIDE_TRAFFIC_LIGHT_DELAY);
+
}
/**
* 根据所在车道,控制红绿灯展示
*/
- public void refreshLaneStatus(){
+ public void refreshLaneStatus() {
}
@@ -136,16 +149,24 @@ public class VrModeNavInfoView extends BaseNaviInfoView implements Handler.Callb
public boolean isVisible() {
return navGroup.getVisibility() == View.VISIBLE;
}
+
private static final int MSG_HIDE_LIMIT_SPEED = 1001;
private static final long HIDE_LIMIT_SPEED_DELAY = 5000;
+
+ private static final int MSG_HIDE_TRAFFIC_LIGHT = 1002;
+ private static final long HIDE_TRAFFIC_LIGHT_DELAY = 1000;
+
@Override
public boolean handleMessage(Message msg) {
- if (!isAttachedToWindow()||getVisibility() != View.VISIBLE) {
+ if (!isAttachedToWindow() || getVisibility() != View.VISIBLE) {
return false;
}
if (msg.what == MSG_HIDE_LIMIT_SPEED) {
tvLimitSpeed.setVisibility(View.GONE);
return true;
+ } else if (msg.what == MSG_HIDE_TRAFFIC_LIGHT) {
+ hideTrafficLightStatus();
+ return true;
}
return false;
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java
index b27e21bfd1..962100bdfc 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java
@@ -158,8 +158,9 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
String obuLightAction = intent.getStringExtra("action");
if ("1".equals(obuLightAction)) {
// 隐藏红绿灯
- handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
- handler.sendEmptyMessage(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
+ vrModeNavInfoView.hideTrafficLightStatus();
+// handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
+// handler.sendEmptyMessage(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
} else {
// 红绿灯处理
String data = intent.getStringExtra("data");
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java
index 98112de258..36c04a5a06 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java
@@ -100,7 +100,7 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener
@@ -85,6 +89,7 @@
android:text="北三环东路辅路"
android:textColor="#f1f1f1"
android:textSize="@dimen/module_ext_navi_in_vr_next_info_road_txt_size"
+ app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_next_info_road_turn_icon_in_vr_mode"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_navi_next_info_distance_in_vr_mode"
app:layout_constraintTop_toBottomOf="@id/module_map_id_navi_next_info_distance_in_vr_mode" />
@@ -94,6 +99,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/module_ext_navi_in_vr_limit_speed_margin_end"
+ android:layout_marginTop="@dimen/module_ext_navi_in_vr_limit_speed_margin_top"
android:background="@drawable/module_ext_vr_mode_limit_speed_bg"
android:gravity="center"
android:text="80"
@@ -148,14 +154,14 @@
android:layout_height="wrap_content"
app:constraint_referenced_ids="module_ext_id_tv_speed,module_ext_id_tv_speed_unit"
android:visibility="gone"
- tools:visibility="gone" />
+ tools:visibility="visible" />
diff --git a/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml b/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml
index 9c14f81fb8..4dacff9734 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml
@@ -23,12 +23,13 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="12"
+ android:layout_marginTop="@dimen/module_ext_navi_in_vr_traffic_light_left_time_margin_top"
android:textColor="#fff"
app:layout_constraintHorizontal_chainStyle="packed"
android:textSize="@dimen/module_ext_navi_in_vr_traffic_light_left_time_txt_size"
app:layout_constraintLeft_toLeftOf="@id/module_ext_id_traffic_light_icon"
app:layout_constraintRight_toLeftOf="@id/module_ext_id_traffic_light_left_time_unit"
- app:layout_constraintTop_toBottomOf="@id/module_ext_id_traffic_light_icon" />
+ app:layout_constraintTop_toTopOf="@id/module_ext_id_traffic_light_icon" />
60px
100px
30px
- 30px
+ 15px
70px
22px
78px
66px
- 43px
+ 23px
+ 30px
+ 20px
40px
20px
17px
36px
+ 60px
21px
- 21px
+ 11px
400px
300px
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 f9c9b3e85f..9f2b9ccc07 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
@@ -159,14 +159,14 @@ public class EventDispatchCenter implements
this.mMapLoadedCallback = callback;
}
- private boolean mIsMapLoaded = false;
+// private boolean mIsMapLoaded = false;
@Override
public void onMapLoaded() {
- if ( mIsMapLoaded ) {
- return;
- }
- mIsMapLoaded = true;
+// if ( mIsMapLoaded ) {
+// return;
+// }
+// mIsMapLoaded = true;
if ( mMapLoadedCallback != null ) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;
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 e23dc28f2f..1a3630b846 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
@@ -182,6 +182,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
EventDispatchCenter.getInstance().setMapLoadedCallback( () -> {
Logger.d( TAG, "map loaded." + Thread.currentThread().getName() );
resetMapCenterPoint();
+ resetMapUiStyle();
loadOthersModules();
Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
} );
@@ -203,6 +204,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
}
+ private void resetMapUiStyle(){
+ final EnumMapUI mapUI = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getCurrentSkinMode();
+ mServiceApis.getMapServiceApi().getMapUIController().changeMapMode( mapUI );
+ }
+
private void resetMapCenterPoint() {
// 右移地图中心点
MapCenterPointStrategy.init();
@@ -374,6 +380,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoFragmentManager.unregisterMainFragmentStackTransactionListener();
mMogoFragmentManager = null;
mServiceApis.getMapServiceApi().getMapViewInstanceHandler().destroy();
+ mServiceApis.getMapServiceApi().getMapUIController().destroy();
AdasConfigApiController.getInstance().release();
mServiceApis.getAdasControllerApi().release();
Logger.d( TAG, "destroy." );
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 626d665366..9940ca26a2 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
@@ -154,10 +154,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
if ( mMogoMap.getUIController() != null ) {
mMogoMap.getUIController().changeMapMode( EnumMapUI.CarUp_2D );
}
-
-
- final EnumMapUI mapUI = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getCurrentSkinMode();
- getUIController().changeMapMode( mapUI );
}
}
diff --git a/modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml b/modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml
new file mode 100644
index 0000000000..4f0286a260
--- /dev/null
+++ b/modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml
index 2469ea2ba7..9002881140 100644
--- a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml
+++ b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml
@@ -7,45 +7,59 @@
-
+ app:layout_constraintTop_toTopOf="parent" />
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
diff --git a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt
index b67be3a6fe..ff4743d73e 100644
--- a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt
+++ b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt
@@ -45,7 +45,7 @@ class MockUtil:Handler.Callback {
if (msg.what == 1001) {
Logger.d(TAG,"准备添加调试view")
val api = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis
- api.windowManagerApi.addView(view, 500, 300, false)
+ api.windowManagerApi.addView(view, 800, 300, false)
}
return false
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
index b1402fee9b..fd8276d2da 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
@@ -103,8 +103,8 @@ public class MogoServiceProvider implements IMogoModuleProvider {
MogoRTKLocation.getInstance().init();
}
MogoServices.getInstance().preInit( context );
+ MogoServices.getInstance().init( AbsMogoApplication.getApp() );
UiThreadHandler.postDelayed( () -> {
- MogoServices.getInstance().init( AbsMogoApplication.getApp() );
}, 5_000L );
}
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 25460261f1..4070427fd0 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
@@ -326,6 +326,7 @@ public class MogoServices implements IMogoMapListener,
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.TOP_VIEW, statusChangedListener );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_IS_BACKGROUND, statusChangedListener );
mStatusManager.setAIAssistReady( TAG, AIAssist.getInstance( mContext ).hasFlush() );
+
}
public void init( Context context ) {
@@ -337,9 +338,9 @@ public class MogoServices implements IMogoMapListener,
registerInternalUnWakeupWords();
mRegisterCenter = MarkerServiceHandler.getRegisterCenter();
+ mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this );
mRegisterCenter.registerMogoLocationListener( ServiceConst.TYPE, this );
mRegisterCenter.registerMogoNaviListener( ServiceConst.TYPE, this );
- mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this );
mRegisterCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this );
mRegisterCenter.registerCarLocationChangedListener( ServiceConst.TYPE, this );
@@ -555,6 +556,8 @@ public class MogoServices implements IMogoMapListener,
MapMarkerManager.getInstance().syncLocation( latLng.lon, latLng.lat );
+ Logger.d( TAG, "zoom = %s", zoom );
+
if ( mIsCameraInited ) {
mLastZoomLevel = zoom;
mLastCustomRefreshCenterLocation = latLng;
@@ -925,16 +928,26 @@ public class MogoServices implements IMogoMapListener,
return mLastCarLocation;
}
+ private boolean mLastStatusIsVr = false;
+
@Override
public void onMapModeChanged( EnumMapUI ui ) {
if ( ui == EnumMapUI.Type_VR ) {
- MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true );
- MapCenterPointStrategy.resetByChangeMode();
- MapMarkerManager.getInstance().redrawMarkerByStyleChanged();
+ if ( !mLastStatusIsVr ) {
+ MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true );
+ MapCenterPointStrategy.resetByChangeMode();
+ MapMarkerManager.getInstance().redrawMarkerByStyleChanged();
+ AIAssist.getInstance( mContext ).speakTTSVoice( "你已进入鹰眼模式" );
+ mLastStatusIsVr = true;
+ }
} else {
- MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false );
- MapCenterPointStrategy.resetByChangeMode();
- MapMarkerManager.getInstance().redrawMarkerByStyleChanged();
+ if ( mLastStatusIsVr ) {
+ mLastStatusIsVr = false;
+ MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false );
+ MapCenterPointStrategy.resetByChangeMode();
+ MapMarkerManager.getInstance().redrawMarkerByStyleChanged();
+ AIAssist.getInstance( mContext ).speakTTSVoice( "你已离开鹰眼模式" );
+ }
}
}
}
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 321bcbf68a..bcb6785d5f 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
@@ -383,6 +383,10 @@ public class MockIntentHandler implements IntentHandler {
centerMarker.destroy();
}
break;
+ case 38:
+ MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController()
+ .rtkEnable( false );
+ 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 90e726234d..7a5e25d61c 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
@@ -158,16 +158,13 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
@Override
public void onMsgReceived( MogoSnapshotSetData data ) {
- if ( data == null ) {
- return;
- }
- if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
-// return;
- }
-
- if ( MogoServices.getInstance().getLastCarLocation() != null ) {
- data.curSpeed = MogoServices.getInstance().getLastCarLocation().getSpeed();
- }
+// if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
+//// return;
+// }
+//
+// if ( MogoServices.getInstance().getLastCarLocation() != null ) {
+// data.curSpeed = MogoServices.getInstance().getLastCarLocation().getSpeed();
+// }
SnapshotSetDataDrawer.getInstance().renderSnapshotData( data, false );
// VrModeController.getInstance().renderMogoSnapshotSetData( data );
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/uploadintime/SnapshotUploadInTime.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/uploadintime/SnapshotUploadInTime.java
index 5409333c6c..78b861f954 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/uploadintime/SnapshotUploadInTime.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/uploadintime/SnapshotUploadInTime.java
@@ -90,13 +90,13 @@ class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener {
locationResult.lastCoordinate = lastInfo;
locationResult.mortonCode = MortonCode.wrapEncodeMorton( lastInfo.getLon(), lastInfo.getLat() );
}
- locationResult.coordinates = new ArrayList<>();
+// locationResult.coordinates = new ArrayList<>();
locationResult.sn = com.mogo.commons.network.Utils.getSn();
- if ( cloudLocationInfo == null ) {
- locationResult.coordinates.addAll( new ArrayList<>() );
- } else {
- locationResult.coordinates.addAll( cloudLocationInfo );
- }
+// if ( cloudLocationInfo == null ) {
+// locationResult.coordinates.addAll( new ArrayList<>() );
+// } else {
+// locationResult.coordinates.addAll( cloudLocationInfo );
+// }
}
List< ADASRecognizedResult > recognizedResults = MarkerServiceHandler.getADASController().getLastADASRecognizedResult();
OnePerSecondSendContent content = new OnePerSecondSendContent();
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 07a102a9cc..c9a7816550 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
@@ -17,6 +17,7 @@ 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.constants.HostConst;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.common.utils.CloudPoiManager;
import com.mogo.module.share.bean.FixableButton;
@@ -193,13 +194,13 @@ public class ShareControl implements IMogoShareManager, Handler.Callback {
// if (!DebugConfig.isLauncher()) {
ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG,
StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
- @Override
- public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
- if (!isTrue) {
- dismissShareDialog();
- }
- }
- });
+ @Override
+ public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
+ if (!isTrue) {
+ dismissShareDialog();
+ }
+ }
+ });
// }
// if (!DebugConfig.isLauncher()) {
@@ -300,6 +301,9 @@ public class ShareControl implements IMogoShareManager, Handler.Callback {
}
break;
case VOICE_CMD_PUB_TROUBLE_HELP:
+ if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
+ return;
+ }
if (needAuth()) {
goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG, false);
} else {
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/TanluServiceManager.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/TanluServiceManager.java
index b726823121..de27299bef 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/TanluServiceManager.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/TanluServiceManager.java
@@ -7,6 +7,7 @@ import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.navi.IMogoAimless;
import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
@@ -35,7 +36,7 @@ public class TanluServiceManager {
private static IMogoAimless mIMogoAimless;
public static void init(Context context) {
- mServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
+ mServiceApis = MogoApisHandler.getInstance().getApis();
mMapService = mServiceApis.getMapServiceApi();
mIMogoStatusManager = mServiceApis.getStatusManagerApi();
mAnalytics = mServiceApis.getAnalyticsApi();
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 9f00b1a153..e9abfd429b 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
@@ -23,7 +23,7 @@ public class ShareConstants {
// 此处只记录了事故、实时路况、道路积水、道路结冰、浓雾,至于拥堵、交通检查和封路是在extention模块里面管理
public static final String VOICE_CMD_PUB_TROUBLE_HELP = "com.zhidao.auxiliaryDriving" +
- ".pubTroubleHelp";
+ ".pubTroubleHelp";/*唤醒词 发起故障求助*/
public static final String VOICE_CMD_GO_TO_SHARE = "com.zhidao.share";
public static final String TAG = "/tanlu/ui";
diff --git a/modules/mogo-module-smp/src/main/AndroidManifest.xml b/modules/mogo-module-smp/src/main/AndroidManifest.xml
index 32b078729c..33c6adff88 100644
--- a/modules/mogo-module-smp/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-smp/src/main/AndroidManifest.xml
@@ -2,10 +2,10 @@
-
+
\ No newline at end of file
diff --git a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java
new file mode 100644
index 0000000000..cd406be8a7
--- /dev/null
+++ b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java
@@ -0,0 +1,186 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package com.amap.api.col.n3;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.Resources.Theme;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.ContextThemeWrapper;
+import android.view.LayoutInflater;
+import android.view.LayoutInflater.Factory;
+import android.view.View;
+import android.view.ViewStub;
+
+import com.android.internal.policy.MyPhoneLayoutInflater;
+
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.HashSet;
+
+public final class le2 extends ContextThemeWrapper {
+ private Resources a = lg.a();
+ private Theme b;
+ private LayoutInflater c;
+ private ClassLoader d;
+ private int e;
+ private static final String[] f = new String[]{"android.widget", "android.webkit", "android.app"};
+ private le2.a g = new le2.a();
+ private Factory h = new Factory() {
+ public final View onCreateView(String var1, Context var2, AttributeSet var3) {
+ return le2.this.a(var1, var2, var3);
+ }
+ };
+
+ public le2(Context var1, int var2, ClassLoader var3) {
+ super(var1, var2);
+ this.d = var3;
+ this.b = lg.b();
+ this.e = var2;
+ super.onApplyThemeResource(this.b, this.e, true);
+ (new StringBuilder("classloader:")).append(this.d);
+ }
+
+ public final Resources getResources() {
+ return this.a != null ? this.a : super.getResources();
+ }
+
+ public final void a(int var1) {
+ if (var1 != this.e) {
+ this.e = var1;
+ super.onApplyThemeResource(this.b, this.e, true);
+ }
+
+ }
+
+ public final Theme getTheme() {
+ return this.b != null ? this.b : super.getTheme();
+ }
+
+ public final Object getSystemService(String var1) {
+ if ("layout_inflater".equals(var1)) {
+ if (this.c == null) {
+ // 这里构建一个自己对的布局填充器
+ // 与已经被修改的context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
+ // 隔离从而保证高德地图SDK能正常初始化
+ LayoutInflater var2 = new MyPhoneLayoutInflater(getBaseContext());
+ this.c = var2.cloneInContext(this);
+ this.c.setFactory(this.h);
+ this.c = this.c.cloneInContext(this);
+ }
+
+ return this.c;
+ } else {
+ return super.getSystemService(var1);
+ }
+ }
+
+ private final View a(String var1, Context var2, AttributeSet var3) {
+ if (this.g.a.contains(var1)) {
+ return null;
+ } else {
+ Constructor var4;
+ if ((var4 = (Constructor) this.g.b.get(var1)) == null) {
+ Class var5 = null;
+ boolean var6 = false;
+ String var7 = "api.navi";
+
+ label71:
+ {
+ label70:
+ {
+ Throwable var10000;
+ label79:
+ {
+ boolean var10001;
+ try {
+ if (var1.contains(var7)) {
+ var5 = this.d.loadClass(var1);
+ } else {
+ String[] var17;
+ int var8 = (var17 = f).length;
+ int var9 = 0;
+
+ while (var9 < var8) {
+ String var10 = var17[var9];
+
+ try {
+ var5 = this.d.loadClass(var10 + "." + var1);
+ break;
+ } catch (Throwable var13) {
+ ++var9;
+ }
+ }
+ }
+
+ if (var5 == null) {
+ break label71;
+ }
+ } catch (Throwable var15) {
+ var10000 = var15;
+ var10001 = false;
+ break label79;
+ }
+
+ if (var5 == ViewStub.class) {
+ break label71;
+ }
+
+ try {
+ if (var5.getClassLoader() != this.d) {
+ break label71;
+ }
+ break label70;
+ } catch (Throwable var14) {
+ var10000 = var14;
+ var10001 = false;
+ }
+ }
+
+ Throwable var18 = var10000;
+ (new StringBuilder("load view err:")).append(Log.getStackTraceString(var18));
+ break label71;
+ }
+
+ var6 = true;
+ }
+
+ if (!var6) {
+ this.g.a.add(var1);
+ return null;
+ }
+
+ try {
+ var4 = var5.getConstructor(Context.class, AttributeSet.class);
+ this.g.b.put(var1, var4);
+ } catch (Throwable var12) {
+ (new StringBuilder("create view err:")).append(Log.getStackTraceString(var12));
+ }
+ }
+
+ try {
+ View var16 = null;
+ if (var4 != null) {
+ var16 = (View) var4.newInstance(var2, var3);
+ }
+
+ return var16;
+ } catch (Throwable var11) {
+ (new StringBuilder("create view err:")).append(Log.getStackTraceString(var11));
+ return null;
+ }
+ }
+ }
+
+ public static class a {
+ public HashSet a = new HashSet();
+ public HashMap> b = new HashMap();
+
+ public a() {
+ }
+ }
+}
diff --git a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java
new file mode 100644
index 0000000000..347f98ddc6
--- /dev/null
+++ b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java
@@ -0,0 +1,40 @@
+package com.amap.api.col.n3;
+
+import android.content.Context;
+import android.content.res.XmlResourceParser;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * 这里是为了解决 使用换肤框架后,高德地图初始化有问题加入的
+ * 问题原因是:
+ * skin 框架会替换 LayoutInflater 中的 setFactory2 从而导致高德 le 中的 setFactory 失效。
+ * 解决方案为:
+ * 直接通过内存地址替换整个 ArtMethod,来将需要修改的高德SDK中的方法指向我们修改过后的方法。
+ */
+public class lg2 extends lg {
+ static le2 b;
+
+ public static View a(Context var0, int var1, ViewGroup var2) {
+ XmlResourceParser var9 = a().getXml(var1);
+ if (!a) {
+ return LayoutInflater.from(var0).inflate(var9, var2);
+ } else {
+ try {
+ if (b == null) {
+ b = new le2(var0, c == -1 ? 0 : c, lg.class.getClassLoader());
+ }
+ b.a(c == -1 ? 0 : c);
+ View var3 = LayoutInflater.from(b).inflate(var9, var2);
+ return var3;
+ } catch (Throwable var7) {
+ var7.printStackTrace();
+ np.c(var7, "ResourcesUtil", "selfInflate(Activity activity, int resource, ViewGroup root)");
+ } finally {
+ var9.close();
+ }
+ return null;
+ }
+ }
+}
diff --git a/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java b/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java
new file mode 100644
index 0000000000..4a2d262764
--- /dev/null
+++ b/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java
@@ -0,0 +1,60 @@
+package com.android.internal.policy;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+
+/**
+ * @author donghongyu
+ * @date 12/25/20 5:12 PM
+ */
+public class MyPhoneLayoutInflater extends LayoutInflater {
+ private static final String[] sClassPrefixList = {
+ "android.widget.",
+ "android.webkit.",
+ "android.app."
+ };
+
+ /**
+ * Instead of instantiating directly, you should retrieve an instance
+ * through {@link Context#getSystemService}
+ *
+ * @param context The Context in which in which to find resources and other
+ * application-specific things.
+ * @see Context#getSystemService
+ */
+ public MyPhoneLayoutInflater(Context context) {
+ super(context);
+ }
+
+ protected MyPhoneLayoutInflater(LayoutInflater original, Context newContext) {
+ super(original, newContext);
+ }
+
+ /**
+ * Override onCreateView to instantiate names that correspond to the
+ * widgets known to the Widget factory. If we don't find a match,
+ * call through to our super class.
+ */
+ @Override
+ protected View onCreateView(String name, AttributeSet attrs) throws ClassNotFoundException {
+ for (String prefix : sClassPrefixList) {
+ try {
+ View view = createView(name, prefix, attrs);
+ if (view != null) {
+ return view;
+ }
+ } catch (ClassNotFoundException e) {
+ // In this case we want to let the base class take a crack
+ // at it.
+ }
+ }
+
+ return super.onCreateView(name, attrs);
+ }
+
+ public LayoutInflater cloneInContext(Context newContext) {
+ return new MyPhoneLayoutInflater(this, newContext);
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java
index dec53d8d38..f0b81e2222 100644
--- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java
+++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java
@@ -37,6 +37,7 @@ public class SmallMapDirectionView extends RelativeLayout {
private AMapNaviView mAMapNaviView;
private DirectionRotateAnimation mRotateAnimation;
private int lastAngle = 0;
+ private int zoomLevel = 15;
public SmallMapDirectionView(Context context) {
this(context, null);
@@ -133,19 +134,19 @@ public class SmallMapDirectionView extends RelativeLayout {
options.setNaviArrowVisible(false);
// 通过路线是否自动置灰,仅支持驾车导航
options.setAfterRouteAutoGray(false);
- options.setZoom(((int) 9));
+ //options.setZoom(((int) 9));
//options.setPointToCenter(0.7D, 0.5D);
// 2D模式
options.setTilt(0);
// 黑夜模式
-// options.setNaviNight(true);
+ // options.setNaviNight(true);
// 自定义地图样式
options.setCustomMapStylePath(styleFilePath);
mAMapNaviView.setViewOptions(options);
}
//设置希望展示的地图缩放级别
- CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12);
+ CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
aMap.moveCamera(cameraUpdate);
aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
@@ -175,55 +176,53 @@ public class SmallMapDirectionView extends RelativeLayout {
}
//设置希望展示的地图缩放级别
- CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12);
+ CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
aMap.moveCamera(cameraUpdate);
}
});
try {
// 判断是否有样式文件存在
- File styleExit = new File(styleFilePath);
- if (!styleExit.exists()) {
- FileUtils.copy(
- context.getAssets().open("small_map_style.data"),
- styleFilePath,
- new FileUtils.FileCopyListener() {
+ //File styleExit = new File(styleFilePath);
+ FileUtils.copy(
+ context.getAssets().open("small_map_style.data"),
+ styleFilePath,
+ new FileUtils.FileCopyListener() {
- @Override
- public void onStart() {
- Log.w("FileCopyListener", "onStart=");
+ @Override
+ public void onStart() {
+ Log.w("FileCopyListener", "onStart=");
- }
-
- @Override
- public void onFail(Exception e) {
- Log.w("FileCopyListener", "onFail=");
- e.printStackTrace();
- }
-
- @Override
- public void onProcess(int process) {
- Log.w("FileCopyListener", "onProcess=" + process);
-
- }
-
- @Override
- public void onFinish(String toPath) {
- Log.w("FileCopyListener", "onFinish toPath=" + toPath);
-
- // 高德地图有bug,所以需要多次调用设置皮肤才能成功
- if (options != null) {
- options.setCustomMapStylePath(styleFilePath);
- mAMapNaviView.setViewOptions(options);
- }
-
- //设置希望展示的地图缩放级别
- CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12);
- aMap.moveCamera(cameraUpdate);
- }
}
- );
- }
+
+ @Override
+ public void onFail(Exception e) {
+ Log.w("FileCopyListener", "onFail=");
+ e.printStackTrace();
+ }
+
+ @Override
+ public void onProcess(int process) {
+ Log.w("FileCopyListener", "onProcess=" + process);
+
+ }
+
+ @Override
+ public void onFinish(String toPath) {
+ Log.w("FileCopyListener", "onFinish toPath=" + toPath);
+
+ // 高德地图有bug,所以需要多次调用设置皮肤才能成功
+ if (options != null) {
+ options.setCustomMapStylePath(styleFilePath);
+ mAMapNaviView.setViewOptions(options);
+ }
+
+ //设置希望展示的地图缩放级别
+ CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
+ aMap.moveCamera(cameraUpdate);
+ }
+ }
+ );
} catch (IOException e) {
e.printStackTrace();
}
diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java
index 10fb9139b9..9dc29557a2 100644
--- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java
+++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java
@@ -1,22 +1,30 @@
package com.mogo.module.small.map;
import android.content.Context;
-import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
+import android.view.Gravity;
import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route;
-import com.mogo.commons.AbsMogoApplication;
+import com.amap.api.col.n3.lg;
+import com.amap.api.col.n3.lg2;
+import com.mogo.hook.HookManager;
import com.mogo.module.common.MogoApisHandler;
+import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoSmallMapProvider;
import com.mogo.service.module.ModuleType;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.logger.Logger;
+
+import java.lang.reflect.Method;
/**
* @author donghongyu
@@ -26,9 +34,11 @@ import com.mogo.service.statusmanager.StatusDescriptor;
public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener {
private final String TAG = "SmallVisionProvider";
- private Intent mSmallMapServiceIntent;
private Context mContext;
+ private WindowManagerView mWindowManagerView;
+ private SmallMapDirectionView mSmallMapDirectionView;
+
@Override
public Fragment createFragment(Context context, Bundle data) {
return null;
@@ -76,22 +86,22 @@ public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusCh
public void onDestroy() {
Log.d(TAG, "小地图模块销毁……");
hidePanel();
+ // 释放组件内存
+ mSmallMapDirectionView = null;
+ mWindowManagerView = null;
}
@Override
public void showPanel() {
Log.d(TAG, "小地图模块触发展示……");
- if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
- mSmallMapServiceIntent = new Intent(mContext, SmallMapService.class);
- mContext.startService(mSmallMapServiceIntent);
- }
+ addSmallMapView();
}
@Override
public void hidePanel() {
Log.d(TAG, "小地图模块触发隐藏……");
- if (mSmallMapServiceIntent != null) {
- AbsMogoApplication.getApp().stopService(mSmallMapServiceIntent);
+ if (mWindowManagerView != null && mWindowManagerView.isShowing()) {
+ mWindowManagerView.dismiss();
}
}
@@ -122,4 +132,44 @@ public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusCh
}
}
}
+
+
+ /**
+ * 添加小地图View
+ */
+ private void addSmallMapView() {
+ Logger.d(TAG, "addSmallMapView");
+
+ try {
+ // 替换高德地图的方法,解决因为加入换肤框架导致地图初始化失败
+ Method srcMethod = lg.class.getDeclaredMethod("a", Context.class, int.class, ViewGroup.class);
+ Method destMethod = lg2.class.getDeclaredMethod("a", Context.class, int.class, ViewGroup.class);
+ HookManager.get().hookMethod(srcMethod, destMethod);
+ Logger.d(TAG, "hook 高德地图成功");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ // 初始化小地图控件
+ if (mSmallMapDirectionView == null) {
+ mSmallMapDirectionView = new SmallMapDirectionView(mContext);
+ }
+
+ if (mWindowManagerView == null) {
+ mWindowManagerView = new WindowManagerView.Builder(mContext)
+ .contentView(mSmallMapDirectionView)
+ .size(
+ WindowManager.LayoutParams.WRAP_CONTENT,
+ WindowManager.LayoutParams.WRAP_CONTENT
+ )
+ .position(
+ mContext.getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_x),
+ mContext.getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_y)
+ )
+ .gravity(Gravity.TOP | Gravity.LEFT)
+ .showInWindowManager();
+ }
+ mWindowManagerView.show();
+ }
+
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java
index 14074c55c8..901c5f05fc 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java
@@ -13,6 +13,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.location.MogoLocation;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XObuEventEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
@@ -178,6 +179,10 @@ public class V2XObuManager implements IObuCallback, Handler.Callback {
@Override
public void onEventInfoCallback(MogoObuEventInfo info) {
Logger.d("V2X_OBU_EVENT", "carEventInfo==" + info);
+ if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
+ Logger.d("V2X_OBU_EVENT","vr模式下不展示obu事件");
+ return;
+ }
Long last = intervalMap.get(info.getTypeCode());
if (last == null) {
last = 0L;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java
index f269856f7b..d94f0c7d15 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java
@@ -3,6 +3,7 @@ package com.mogo.module.v2x.adapter.holder;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
+import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
@@ -10,11 +11,13 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
+import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.module.common.animation.BezierAnimationView;
import com.mogo.module.common.entity.MarkerExploreWay;
@@ -23,6 +26,7 @@ import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XLiveCarInfoEntity;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.entity.net.V2XUserInfoRes;
@@ -81,7 +85,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder {
private HeartLikeView ivEventZan;
private ViewGroup mViewGroup;
-
+ private WindowManagerView mWindowManagerView;
// 上传事件的用户信息
private MarkerUserInfo mUserInfo;
@@ -312,7 +316,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder {
e.printStackTrace();
}
}
-
+
/*
* 展示事件的图片/视频资源
* */
@@ -364,6 +368,53 @@ public class V2XRoadEventVH extends V2XBaseViewHolder {
}
}
+ private void bezierAnimation(int[] loc) {
+ if (mWindowManagerView == null) {
+ Log.d(TAG, "bezierAnimation:null");
+ mWindowManagerView = new WindowManagerView.Builder(mContext.getApplicationContext())
+ .contentView(R.layout.module_common_bezier_layout)
+ .size(WindowManager.LayoutParams.WRAP_CONTENT,
+ WindowManager.LayoutParams.WRAP_CONTENT)
+ .position(loc[0], loc[1])
+ .gravity(Gravity.TOP | Gravity.LEFT)
+ .showInWindowManager();
+ }
+ try {
+ if (mWindowManagerView.isShowing()) {
+ return;
+ }
+ mWindowManagerView.show();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ BezierAnimationView bezierAnimationView = mWindowManagerView.findViewById(R.id.bezier_view);
+ bezierAnimationView.bezierAnimationStart();
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+// mWindowManagerView.dismiss();
+ }
+ }, 2000);
+
+ }
+
+ public int[] getLocation(View v) {
+ int[] loc = new int[4];
+ int[] location = new int[2];
+ v.getLocationOnScreen(location);
+ loc[0] = location[0];
+ loc[1] = location[1];
+ int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
+ int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
+ v.measure(w, h);
+
+ loc[2] = v.getMeasuredWidth();
+ loc[3] = v.getMeasuredHeight();
+
+ //base = computeWH();
+ return loc;
+ }
+
/**
* 为了给车聊聊更多的信息需要重新查询一次
*
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java
index 41e131b359..154e90da24 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java
@@ -1,6 +1,7 @@
package com.mogo.module.v2x.scenario.impl;
import android.content.Intent;
+import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
@@ -91,7 +92,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
mV2XScenario = new V2XIllegalParkScenario();
break;
case V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING:
- mV2XScenario = new V2XEventUgcScenario();
+ mV2XScenario = V2XServiceManager.getMoGoStatusManager().isVrMode() ? null : new V2XEventUgcScenario();
break;
case V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW:
mV2XScenario = new V2XVoiceCallLiveScenario();
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java
index 853faca1d0..def8a1c7ac 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java
@@ -59,7 +59,7 @@ public class V2XRoadVideoCarScenario extends AbsV2XScenario
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources()
- .getDimension(R.dimen.v2x_video_window_height));
+ .getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode()? R.dimen.dp_394:R.dimen.v2x_video_window_height));
V2XServiceManager
.getMogoTopViewManager()
.addViewNoLinkage(getV2XWindow().getView(), layoutParams, this);
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml
index c4f2fd14aa..d0d64e7d06 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml
@@ -36,7 +36,7 @@
-
-