diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 5974cf305a..9d8d20d50d 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -84,6 +84,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 733acb1920..97b9126cee 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,7 +8,7 @@
-
+
\ No newline at end of file
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/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 5e110bb8ea..20eeee20b7 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;
@@ -183,7 +184,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);
@@ -195,9 +196,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/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/AMapWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
index b22bfc46a6..a1e9cea21c 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
@@ -45,7 +45,7 @@ public class AMapWrapper implements IMogoMap {
public AMapWrapper( AMap map, Context context, IMogoMapUIController controller ) {
this.mAMap = map;
sAMap = map;
- mContext = context;
+ mContext = context.getApplicationContext();
mUIcontroller = controller;
// 设置实现自定义 info window
if(mAMap!=null) {
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 e5a3a283d4..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.7.9'
+ 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 27fd4f0f76..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
@@ -384,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" );
@@ -399,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;
}
@@ -463,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 );
@@ -519,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 );
}
@@ -596,9 +607,6 @@ public class AMapViewWrapper implements IMogoMapView,
}
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();
@@ -642,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();
}
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 5660221fb5..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
@@ -100,12 +100,6 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder {
.setPointToCenter( 0.734375f, 0.5f )
.setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() );
MapAutoView mapAutoView = new MapAutoView(context);
- Logger.w(TAG, "mapAutoView==" + mapAutoView);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
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/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/map-custom/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png b/libraries/map-custom/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png
index 5f91be07f3..eb8ca757dc 100644
Binary files a/libraries/map-custom/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png and b/libraries/map-custom/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png differ
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 38a8427a1a..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
@@ -250,4 +250,8 @@ public interface IMogoMapUIController {
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 e3a0c0e25c..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 );
}
@@ -290,4 +292,16 @@ public class MogoMapUIController implements IMogoMapUIController {
mDelegate.rtkEnable( enable );
}
}
+
+ @Override
+ public void destroy() {
+ mDelegate = null;
+ release();
+ }
+
+ private void initDelegate() {
+ if ( mDelegate == null ) {
+ mDelegate = MogoMapDelegateFactory.getMapUIControllerDelegate();
+ }
+ }
}
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
index 952ece3f5c..76ad6b0406 100644
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
+++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToLauncherModuleProvider.java
@@ -53,6 +53,7 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider {
switch ( product ) {
case "f80x":
case "f8xx":
+ case "f8Amap":
BackToMainHomeManager.addMainHomeView();
break;
case "changanauto":
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 9b06caa126..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,17 +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.getMogoMarkerOptions().set3DMode( true );
- marker.use3DResource( getVrModel() );
- } else {
- marker.getMogoMarkerOptions().set3DMode( false );
- marker.setIcon( ViewUtils.fromView( inflateView( recognizedListResult, machineVision, 0 ) ) );
- }
- }
}
MogoLatLng lastPosition = mLastPositions.get( uniqueKey );
@@ -124,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 ) );
}
@@ -137,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 );
@@ -193,22 +174,13 @@ 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.set3DMode( true );
- options.icon3DRes( getVrModel() );
- } else {
- options.set3DMode( false );
- options.icon( inflateView( recognizedListResult, machineVision, curSpeed ) );
- }
-
return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_ADAS, options );
}
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 64c1533873..e9f70b9b43 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,12 +78,42 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
// 云端 marker 缓存
private Map< String, IMogoMarker > mCloudSnapshotMarkersCaches = new ConcurrentHashMap<>();
- private Map< String, MogoLatLng > mLastPositions = new ConcurrentHashMap<>();
+ private Map< String, CloudRoadData > mLastPositions = new ConcurrentHashMap<>();
private boolean mIsVrMode = false;
- private long mLastReceiveTime = 0L;
- private long mAnimationDuration = 500L;
+// 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 ) {
+ }
+ clearTargetTypeMarkers();
+ }
+
+ private void clearTargetTypeMarkers() {
+ try {
+ MogoApisHandler.getInstance().getApis()
+ .getMapServiceApi().getMarkerManager( mContext )
+ .removeMarkers( DataTypes.TYPE_MARKER_ADAS );
+ } catch ( Exception e ) {
+ }
+ }
/**
* 其他车辆、rsu 车辆数据
@@ -85,22 +122,20 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
*/
public void renderSnapshotData( MogoSnapshotSetData data,
boolean machineVision ) {
- if ( mLastReceiveTime != 0 ) {
- mAnimationDuration = SystemClock.elapsedRealtime() - mLastReceiveTime;
- } else {
- mAnimationDuration = 500L;
+ if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
+ if ( !mCloudSnapshotMarkersCaches.isEmpty() ) {
+ clearOldStyleMarkers();
+ }
+ return;
}
- mLastReceiveTime = SystemClock.elapsedRealtime();
if ( data == null || (
( data.getAllList() == null || data.getAllList().isEmpty() ) &&
( data.getNearList() == null || data.getNearList().isEmpty() ) ) ) {
- MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( AbsMogoApplication.getApp() ).removeMarkers( DataTypes.TYPE_MARKER_CLOUD_DATA );
+ clearOldStyleMarkers();
return;
}
- filterData( data.getAllList() );
List< CloudRoadData > allDatumsList = new ArrayList<>();
- allDatumsList.addAll( data.getAllList() );
- purgeCloudSnapshotData( allDatumsList );
+ prepareData( data.getAllList(), allDatumsList );
for ( CloudRoadData cloudRoadData : allDatumsList ) {
if ( cloudRoadData == null ) {
continue;
@@ -121,7 +156,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 ) {
@@ -132,42 +166,66 @@ 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模型" );
+ Logger.d( TAG, "3D模型-%s", uniqueKey );
marker.getMogoMarkerOptions().set3DMode( true );
marker.use3DResource( getVrModel( cloudRoadData ) );
} else {
- Logger.d( TAG, "2D贴图" );
+ 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 ) ) {
+ 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.lat, lastPosition.lon );
+ 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, mAnimationDuration );
- Logger.d( TAG, "平滑移动 - %s duration = %s", uniqueKey, mAnimationDuration );
+ 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 );
+ mLastPositions.put( uniqueKey, cloudRoadData );
}
}
+ /**
+ * 过滤数据
+ *
+ * @param in 输入集合
+ * @param out 输出集合
+ */
+ private void prepareData( List< CloudRoadData > in, List< CloudRoadData > out ) {
+ filterData( in );
+ out.addAll( in );
+ purgeCloudSnapshotData( out );
+ }
+
/**
* vr 模式下显示合并数据,否则只显示上报位置的车辆
*
@@ -245,21 +303,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 );
- Logger.d( TAG, "3D模型" );
+ options.anchorColor( "#00FF00" );
+ Logger.d( TAG, "3D模型 - %s", data.getUniqueKey() );
options.icon3DRes( getVrModel( data ) );
} else {
options.set3DMode( false );
- Logger.d( TAG, "2D贴图" );
+ 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 );
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/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 0a604bf00c..404eb91537 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
@@ -346,7 +346,7 @@ public class EntranceFragment extends MvpFragment seekHelpNoticeListener =
new IMogoOnMessageListener() {
@Override
@@ -1054,7 +1055,7 @@ public class EntranceFragment extends MvpFragment {
- seekHelpGroup.setVisibility(View.VISIBLE);
+ seekHelpGroup.setVisibility(localIsVrMode ? View.INVISIBLE : View.VISIBLE);
seekHelpNum.setText("" + finalSeekNum);
});
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java
index c76f444a51..e32d5850ff 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java
@@ -28,13 +28,11 @@ import com.mogo.service.module.ModuleType;
@Route( path = MogoModulePaths.PATH_ENTRANCE )
public class EntranceProvider implements IMogoModuleProvider {
- EntranceFragment mFragment;
-
@Override
public Fragment createFragment( Context context, Bundle data ) {
- mFragment = new EntranceFragment();
+ EntranceFragment mFragment = new EntranceFragment();
mFragment.setArguments( data );
- ExtensionServiceManager.init(context);
+ ExtensionServiceManager.init( context );
return mFragment;
}
@@ -76,7 +74,7 @@ public class EntranceProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
- ExtensionServiceManager.init(context);
+ ExtensionServiceManager.init( context );
}
@Override
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
index d756160652..47e6bbb908 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java
@@ -273,6 +273,8 @@ public class EntranceViewHolder {
public void release(){
rootViewGroup = null;
+ featureViewGroup = null;
+ leftNoticeContainer = null;
}
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
index 8269900c47..de88f7ac66 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java
@@ -473,6 +473,8 @@ public class TopViewAnimHelper {
topMotionLayout = null;
topContainer = null;
cameraMode = null;
+ animNavInfoView = null;
+ vrModeNavInfoView = null;
}
public void enterVrMode() {
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 7e1b136d68..f2cc701298 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
@@ -3,14 +3,11 @@ package com.mogo.module.main;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
-import com.alibaba.android.arouter.launcher.ARouter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.core.view.LayoutInflaterCompat;
import com.mogo.commons.context.ContextHolderUtil;
import com.mogo.commons.debug.DebugConfig;
@@ -18,8 +15,6 @@ import com.mogo.commons.mvp.MvpActivity;
import com.mogo.commons.voice.AIAssist;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.api.CallChatApi;
@@ -30,12 +25,12 @@ import com.mogo.module.main.service.MogoMainService;
import com.mogo.module.main.windowview.FloatingViewHandler;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
+import com.mogo.service.fragmentmanager.FragmentStackTransactionListener;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.skin.support.SkinMode;
import com.mogo.utils.NetworkUtils;
-import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
import com.zhidao.adasconfig.api.AdasConfigApiController;
import com.zhidao.adasconfig.common.log.LoggerController;
@@ -43,9 +38,6 @@ import com.zhidao.autopilot.support.api.AutopilotServiceManage;
import java.util.List;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
/**
* @author congtaowang
* @since 2019-12-23
@@ -54,8 +46,8 @@ import androidx.annotation.Nullable;
*/
public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView,
IMogoLocationListener,
- IMogoMarkerClickListener,
- IMogoADASControlStatusChangedListener {
+ IMogoADASControlStatusChangedListener,
+ FragmentStackTransactionListener {
protected static final String TAG = MainActivity.class.getSimpleName();
@@ -139,10 +131,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
- ContextHolderUtil.holdContext(this);
+ ContextHolderUtil.holdContext( this );
mPresenter.postLoadModuleMsg();
- NetworkUtils.listenNetStrength(this);
+ NetworkUtils.listenNetStrength( this );
}
private void init() {
@@ -170,7 +162,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mServiceApis.getMapServiceApi().getHostListenerRegister().registerHostMapListener( EventDispatchCenter.getInstance() );
mServiceApis.getMapServiceApi().getHostListenerRegister().registerHostNaviListener( EventDispatchCenter.getInstance() );
mServiceApis.getMapServiceApi().getHostListenerRegister().registerHostAimlessModeListener( EventDispatchCenter.getInstance() );
- mServiceApis.getMapServiceApi().getHostListenerRegister().registerMarkerClickListener( this );
+ mServiceApis.getMapServiceApi().getHostListenerRegister().registerMarkerClickListener( EventDispatchCenter.getInstance() );
}
}
@@ -194,14 +186,16 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoFragmentManager = mServiceApis.getFragmentManagerApi();
mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
mMogoFragmentManager.initMessageHistoryContainerId( R.id.module_main_id_message_history_fragment_container );
- mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
- if ( size == 0 ) {
- showLayout();
- } else if ( size == 1 ) {
- hideLayout();
- }
- } );
+ mMogoFragmentManager.registerMainFragmentStackTransactionListener( this );
+ }
+ @Override
+ public void onTransaction( int size ) {
+ if ( size == 0 ) {
+ showLayout();
+ } else if ( size == 1 ) {
+ hideLayout();
+ }
}
private void resetMapUiStyle(){
@@ -272,12 +266,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
EventDispatchCenter.getInstance().onLocationChanged( location );
}
- @Override
- public boolean onMarkerClicked( IMogoMarker marker ) {
- EventDispatchCenter.getInstance().onMarkerClicked( marker );
- return false;
- }
-
@Override
public void onMapUiModeChanged( EnumMapUI mapUI ) {
switch ( mapUI ) {
@@ -375,11 +363,13 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterHostAimlessModeListener();
mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterHostNaviListener();
mServiceApis.getMapServiceApi().getHostListenerRegister().unregisterHostMapListener();
+ mServiceApis.getRegisterCenterApi().unregisterADASControlStatusChangedListener( TAG );
mMogoStatusManager.setMainPageLaunchedStatus( TAG, false );
mMogoStatusManager.setMainPageIsBackgroundStatus( TAG, false );
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-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 7b2d457dab..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,12 +158,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
@Override
public void onMsgReceived( MogoSnapshotSetData data ) {
- if ( data == null ) {
- return;
- }
- if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
- return;
- }
// if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
//// return;
// }
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 25ff93e4f4..e006a9cc53 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
@@ -16,6 +16,7 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant;
import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.common.utils.CloudPoiManager;
import com.mogo.module.share.bean.FixableButton;
@@ -192,13 +193,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()) {
@@ -299,6 +300,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-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/fragment/V2XEventPanelFragment.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt
index 64a2b39735..6928b349a0 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt
@@ -271,6 +271,7 @@ class V2XEventPanelFragment : MvpFragment mV2XHistoryScenarioData = new ArrayList<>();
+ private IMoGoV2XStatusChangedListener mListener;
@Override
protected int getLayoutId() {
@@ -88,24 +89,25 @@ public class V2XScenarioHistoryFragment
});
+ mListener = new IMoGoV2XStatusChangedListener() {
+ @Override
+ public void onStatusChanged( V2XStatusDescriptor descriptor, boolean isTrue ) {
+ Logger.d( TAG, descriptor + " initViews --------> " + isTrue );
+ if ( descriptor == V2XStatusDescriptor.EventPanelWindow_UI ) {
+ mPresenter.loadHistory();
+ }
+ }
+
+ @Override
+ public void init( Context context ) {
+ Logger.d( TAG, "init --------> " );
+ }
+ };
V2XServiceManager.getMoGoV2XStatusManager()
.registerStatusChangedListener(
TAG,
V2XStatusDescriptor.EventPanelWindow_UI,
- new IMoGoV2XStatusChangedListener() {
- @Override
- public void onStatusChanged(V2XStatusDescriptor descriptor, boolean isTrue) {
- Logger.d(TAG, descriptor + " initViews --------> " + isTrue);
- if (descriptor == V2XStatusDescriptor.EventPanelWindow_UI) {
- mPresenter.loadHistory();
- }
- }
-
- @Override
- public void init(Context context) {
- Logger.d(TAG, "init --------> ");
- }
- });
+ mListener );
}
/**
@@ -180,4 +182,13 @@ public class V2XScenarioHistoryFragment
protected ScenarioHistoryPresenter createPresenter() {
return new ScenarioHistoryPresenter(this);
}
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ V2XServiceManager.getMoGoV2XStatusManager().unregisterStatusChangedListener( TAG,
+ V2XStatusDescriptor.EventPanelWindow_UI,
+ mListener
+ );
+ }
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
index 6c54f4d423..3f8c687b43 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
@@ -118,6 +118,9 @@ public class MogoADASController implements IMogoADASController {
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
return;
}
+ if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
+ return;
+ }
handleAdasRecognizedData( rectInfo );
}
@@ -179,9 +182,6 @@ public class MogoADASController implements IMogoADASController {
}
private void invokeCallbackPerSecond( List< RectInfo > data ) {
- if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
- return;
- }
List< RectInfo > newRef = data;
List< ADASRecognizedListResult > recognizedListResults = AdasObjectUtils.regroupData( newRef );
if ( recognizedListResults == null || recognizedListResults.isEmpty() ) {
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java b/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java
index 6fda89ea96..fb97918009 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/singleton/SingletonsHolder.java
@@ -1,6 +1,7 @@
package com.mogo.service.impl.singleton;
import com.alibaba.android.arouter.facade.template.IProvider;
+import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.impl.fragmentmanager.MogoFragmentManager;
import com.mogo.service.impl.map.MogoMapService;
@@ -11,6 +12,8 @@ import com.mogo.service.map.IMogoMapService;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.mogo.service.strategy.IMogoRefreshStrategyController;
+import com.mogo.service.windowview.IMogoTopViewManager;
import com.mogo.utils.logger.Logger;
import java.util.Map;
@@ -34,9 +37,10 @@ public class SingletonsHolder {
sSingletons.put( IMogoNetwork.class, new MogoNetWorkService() );
sSingletons.put( IMogoMsgCenter.class, new MogoMsgCenter() );
sSingletons.put( IMogoStatusManager.class, new MogoStatusManager() );
+ sSingletons.put( IMogoRefreshStrategyController.class, ARouter.getInstance().navigation( IMogoRefreshStrategyController.class ) );
}
- public static < T > T get( Class clazz ) {
+ public static < T > T get( Class< T > clazz ) {
return ( T ) sSingletons.get( clazz );
}
diff --git a/skin/skin-support/src/main/java/skin/support/SkinCompatManager.java b/skin/skin-support/src/main/java/skin/support/SkinCompatManager.java
index 6c7dcd9bcf..c4522b2fae 100755
--- a/skin/skin-support/src/main/java/skin/support/SkinCompatManager.java
+++ b/skin/skin-support/src/main/java/skin/support/SkinCompatManager.java
@@ -154,7 +154,6 @@ public class SkinCompatManager extends SkinObservable {
public static void destroy(){
sInstance.onDestroy();
- sInstance = null;
}
public void onDestroy(){
diff --git a/skin/skin-support/src/main/java/skin/support/app/SkinCompatDelegate.java b/skin/skin-support/src/main/java/skin/support/app/SkinCompatDelegate.java
index 814105646e..33097b29d8 100755
--- a/skin/skin-support/src/main/java/skin/support/app/SkinCompatDelegate.java
+++ b/skin/skin-support/src/main/java/skin/support/app/SkinCompatDelegate.java
@@ -70,12 +70,16 @@ public class SkinCompatDelegate implements LayoutInflater.Factory2 {
}
List wrapperList = SkinCompatManager.getInstance().getWrappers();
- for (SkinWrapper wrapper : wrapperList) {
- Context wrappedContext = wrapper.wrapContext(mContext, parent, attrs);
- if (wrappedContext != null) {
- context = wrappedContext;
+
+ if ( wrapperList != null ) {
+ for (SkinWrapper wrapper : wrapperList) {
+ Context wrappedContext = wrapper.wrapContext(mContext, parent, attrs);
+ if (wrappedContext != null) {
+ context = wrappedContext;
+ }
}
}
+
return mSkinCompatViewInflater.createView(parent, name, context, attrs);
}