Merge remote-tracking branch 'origin/qa_merge_shunyi_vr_map' into qa_merge_shunyi_vr_map

This commit is contained in:
tongchenfei
2021-01-05 10:46:59 +08:00
12 changed files with 114 additions and 71 deletions

View File

@@ -67,7 +67,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.7'
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.7.2'
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1'
}

View File

@@ -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;
@@ -87,6 +88,8 @@ public class AMapViewWrapper implements IMogoMapView,
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();
@@ -218,8 +221,6 @@ public class AMapViewWrapper implements IMogoMapView,
if ( mMapView != null ) {
mMapView.onCreate( bundle );
Logger.d( TAG, "map onCreate" );
initMapView();
initMyLocation();
}
}
@@ -243,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" );
}
}
@@ -299,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;
}
@@ -315,6 +322,7 @@ public class AMapViewWrapper implements IMogoMapView,
if ( ui == null ) {
return;
}
Logger.d( TAG, "设置的样式 = %s", ui );
if ( checkAMapView() ) {
switch ( ui ) {
case CarUp_2D:
@@ -349,7 +357,7 @@ public class AMapViewWrapper implements IMogoMapView,
}
private void setUIMode( EnumMapUI ui ) {
this.mCurrentUIMode = ui;
this.mCurrentCarUIMode = ui;
if ( mMapView.getMapAutoViewHelper() != null ) {
switch ( ui ) {
case CarUp_2D:
@@ -357,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;
}
@@ -440,6 +451,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 );
@@ -614,7 +628,7 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public EnumMapUI getCurrentUiMode() {
return mCurrentUIMode;
return mCurrentCarUIMode;
}
@Override
@@ -699,10 +713,21 @@ public class AMapViewWrapper implements IMogoMapView,
NaviClient.getInstance( getContext() ).syncCarLocation( sysLocation );
if ( checkAMapView() && mMapLoaded ) {
// 避免设置之后被其他初始化给重置为其他模式
UiThreadHandler.postDelayed( () -> {
// 地图初始化完成后每隔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 );
}, 5_000L );
}
}
}
@@ -728,6 +753,8 @@ public class AMapViewWrapper implements IMogoMapView,
cameraPosition.getBearing() );
Trace.endSection();
}
initMapView();
initMyLocation();
}
@Override
@@ -748,17 +775,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() ),
@@ -784,10 +811,14 @@ 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 ) {
@@ -797,10 +828,16 @@ 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.
@@ -809,7 +846,12 @@ public class AMapViewWrapper implements IMogoMapView,
changeMapMode( EnumMapUI.Type_Light );
return;
}
// if ( mVrModeAutoChangedFlag ) {
// mVrModeAutoChangedFlag = false;
// return;
// }
}
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
if ( mCurrentUI != null ) {
UiThreadHandler.post( () -> {
try {
@@ -831,20 +873,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 );
Logger.d( TAG, "自动切换为2D模式" );
if ( mIsLightStyle ) {
changeMapMode( EnumMapUI.Type_Light );
} else {
changeMapMode( EnumMapUI.Type_Night );
}
Logger.d( TAG, "自动切换为2D模式" );
}
}
}
private boolean mMatchRoadEnable = false;
@Override
public void matchRoadEnable( boolean enable ) {
try {
mMatchRoadEnable = !mMatchRoadEnable;
TipToast.shortTip( mMatchRoadEnable ? "已开启道路匹配" : "已关闭道路匹配" );
mMapView.getLocationClient().matchRoadEnable( mMatchRoadEnable );
} catch ( Exception e ) {
Logger.e( TAG, e, "matchRoadEnable" );
}
}
}

View File

@@ -238,7 +238,16 @@ public interface IMogoMapUIController {
}
default void testGpsData(){
default void testGpsData() {
}
/**
* 自研地图是否匹配道路
*
* @param enable
*/
default void matchRoadEnable( boolean enable ) {
}
}

View File

@@ -104,8 +104,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
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 ) ) );
}
}
@@ -200,8 +202,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
.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 ) );
}
@@ -209,7 +213,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
}
private int getVrModel() {
return R.raw.taxi;
return R.raw.carred;
}
private View inflateView( ADASRecognizedListResult data, boolean machineVision, double curSpeed ) {
@@ -225,7 +229,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;
}

View File

@@ -71,8 +71,6 @@ 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 boolean mIsVrMode = false;
@@ -95,17 +93,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
filterData( data.getAllList() );
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 );
for ( CloudRoadData cloudRoadData : allDatumsList ) {
if ( cloudRoadData == null ) {
@@ -119,7 +106,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
}
}
IMogoMarker marker = null;
String uniqueKey = cloudRoadData.getUniqueKey();
if ( TextUtils.isEmpty( uniqueKey ) ) {
@@ -142,6 +128,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode();
if ( mIsVrMode ) {
marker.getMogoMarkerOptions().set3DMode( true );
marker.use3DResource( getVrModel( cloudRoadData ) );
} else {
marker.getMogoMarkerOptions().set3DMode( false );
@@ -159,7 +146,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
List< MogoLatLng > points = new ArrayList<>();
points.add( new MogoLatLng( lastPosition.lat, lastPosition.lon ) );
points.add( new MogoLatLng( target.lat, target.lon ) );
marker.startSmoothInMs( points, SystemClock.elapsedRealtime() - mLastReceiveTime );
marker.startSmoothInMs( points, 1000 );
}
} else {
marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() );
@@ -257,8 +244,10 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen
// .position( new MogoLatLng( coor[POS_LAT], coor[POS_LON] ) );
.position( new MogoLatLng( data.getLat(), data.getLon() ) );
if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
options.set3DMode( true );
options.icon3DRes( getVrModel( data ) );
} else {
options.set3DMode( false );
options.icon( inflateView( data, machineVision, curSpeed ) );
}
return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options );
@@ -267,9 +256,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;
@@ -296,9 +285,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;

View File

@@ -274,7 +274,6 @@ public class MapCenterPointStrategy {
Logger.w( TAG, "vr 模式下忽略该设置" );
return;
}
Logger.e( TAG, "scene"+scene );
Map< Integer, Map< String, MapCenterPoint > > strategies = sCommonStrategies;
if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
strategies = sVrStrategies;

View File

@@ -839,11 +839,16 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
handler.post(() -> 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();
}
}
}

View File

@@ -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 );
}

View File

@@ -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 );

View File

@@ -59,7 +59,7 @@ public class V2XRoadVideoCarScenario extends AbsV2XScenario<V2XEventShowEntity>
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);

View File

@@ -140,20 +140,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_10"
android:background="#2651A6"
android:padding="@dimen/dp_10"
android:text="折行显示文案测试数据"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_22"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/btnTriggerParkEvent"
android:layout_width="wrap_content"

View File

@@ -120,8 +120,4 @@
<dimen name="v2x_driving_heigt">46px</dimen>
<dimen name="v2x_recommond_route_size">26px</dimen>
<!--适配贝塞尔曲线-->
<dimen name="v2x_bezier_x">1281px</dimen>
</resources>