package com.mogo.map; import android.content.Context; import android.graphics.Rect; import android.location.Location; import com.mogo.commons.debug.DebugConfig; import com.mogo.map.impl.amap.navi.NaviClient; import com.mogo.map.impl.automap.navi.AutoNaviClient; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.MogoNaviConfig; import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.AppUtils; import java.util.List; /** * @author congtaowang * @since 2019-12-25 *
* 导航代理 */ public class MogoNavi implements IMogoNavi { private IMogoNavi mDelegate; private static volatile MogoNavi sInstance; private MogoNavi( Context context ) { if ( DebugConfig.isUseCustomNavi() ) { mDelegate = NaviClient.getInstance( context ); } else if ( AppUtils.isAppInstalled( context, "com.autonavi.amapauto" ) ) { mDelegate = AutoNaviClient.getInstance( context ); } else { mDelegate = NaviClient.getInstance( context ); } } public static MogoNavi getInstance( Context context ) { if ( sInstance == null ) { synchronized ( MogoNavi.class ) { if ( sInstance == null ) { sInstance = new MogoNavi( context ); } } } return sInstance; } public synchronized void release() { sInstance = null; } @Override public void naviTo( MogoLatLng endPoint ) { if ( mDelegate != null ) { mDelegate.naviTo( endPoint ); } } @Override public void naviTo( MogoLatLng endPoint, MogoNaviConfig config ) { if ( mDelegate != null ) { mDelegate.naviTo( endPoint, config ); } } @Override public void naviTo( MogoLatLng endPoint, List< MogoLatLng > wayPoints ) { if ( mDelegate != null ) { mDelegate.naviTo( endPoint, wayPoints ); } } @Override public void naviTo( MogoLatLng endPoint, List< MogoLatLng > wayPoints, MogoNaviConfig config ) { if ( mDelegate != null ) { mDelegate.naviTo( endPoint, wayPoints, config ); } } @Override public void reCalculateRoute( MogoNaviConfig config ) { if ( mDelegate != null ) { mDelegate.reCalculateRoute( config ); } } @Override public void stopNavi() { if ( mDelegate != null ) { mDelegate.stopNavi(); } } @Override public void startNavi( boolean isRealNavi ) { if ( mDelegate != null ) { mDelegate.startNavi( isRealNavi ); } } @Override public boolean isNaviing() { if ( mDelegate != null ) { return mDelegate.isNaviing(); } return false; } @Override public List< MogoCalculatePath > getCalculatedStrategies() { if ( mDelegate != null ) { return mDelegate.getCalculatedStrategies(); } return null; } @Override public List< MogoLatLng > getCalculatedPathPos() { if ( mDelegate != null ) { return mDelegate.getCalculatedPathPos(); } return null; } @Override public OnCalculatePathItemClickInteraction getItemClickInteraction() { if ( mDelegate != null ) { return mDelegate.getItemClickInteraction(); } return null; } @Override public void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction ) { if ( mDelegate != null ) { mDelegate.setLineClickInteraction( itemClickInteraction ); } } @Override public void clearCalculatePaths() { if ( mDelegate != null ) { mDelegate.clearCalculatePaths(); } } @Override public void setCalculatePathDisplayBounds( Rect bounds ) { if ( mDelegate != null ) { mDelegate.setCalculatePathDisplayBounds( bounds ); } } @Override public MogoNaviConfig getNaviConfig() { if ( mDelegate != null ) { return mDelegate.getNaviConfig(); } return null; } @Override public boolean setBroadcastMode( int mode ) { if ( mDelegate != null ) { return mDelegate.setBroadcastMode( mode ); } return false; } @Override public List< MogoLatLng > getNaviPathCoordinates() { if ( mDelegate != null ) { return mDelegate.getNaviPathCoordinates(); } return null; } @Override public MogoLatLng getCarLocation() { if ( mDelegate != null ) { return mDelegate.getCarLocation(); } return null; } @Override public Location getCarLocation2() { if ( mDelegate != null ) { return mDelegate.getCarLocation2(); } return null; } @Override public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) { if ( mDelegate != null ) { mDelegate.registerCarLocationChangedListener( listener ); } } @Override public void startAimlessMode() { if ( mDelegate != null ) { mDelegate.startAimlessMode(); } } @Override public void stopAimlessMode() { if ( mDelegate != null ) { mDelegate.stopAimlessMode(); } } @Override public void setAimlessModeStatus( boolean open ) { if ( mDelegate != null ) { mDelegate.setAimlessModeStatus( open ); } } @Override public void displayOverview( Rect bounds ) { if ( mDelegate != null ) { mDelegate.displayOverview( bounds ); } } @Override public void setUseExtraGPSData( boolean use ) { if ( mDelegate != null ) { mDelegate.setUseExtraGPSData( use ); } } @Override public void setExtraGPSData( double lon, double lat, float speed, float accuracy, float bearing, long timestamp ) { if ( mDelegate != null ) { mDelegate.setExtraGPSData( lon, lat, speed, accuracy, bearing, timestamp ); } } }