This commit is contained in:
wangcongtao
2020-03-24 11:08:59 +08:00
parent 339a61b35f
commit f457ec961b
5 changed files with 74 additions and 10 deletions

View File

@@ -9,6 +9,7 @@ import android.location.Location;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Trace;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
@@ -33,6 +34,7 @@ import com.amap.api.navi.AMapNaviViewOptions;
import com.amap.api.navi.enums.AMapNaviViewShowMode;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.model.NaviInfo;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoLatLng;
@@ -142,7 +144,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
// 设置是否显示道路信息view
options.setLaneInfoShow( false );
// 设置是否自动改变缩放等级
options.setAutoChangeZoom( true );
options.setAutoChangeZoom( false );
// 设置是否自动全览模式,即在算路成功后自动进入全览模式
options.setAutoDisplayOverview( false );
// 设置路线转向箭头隐藏和显示
@@ -390,6 +392,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void changeZoom( float zoom ) {
Logger.d( TAG, "changeZoom %s", zoom );
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
getMap().changeZoom( zoom );
}
@@ -430,11 +435,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
case CarUp_2D:
case CarUp_3D:
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
// TODO: 2020-03-16 车头朝上,需要固定车标
break;
case NorthUP_2D:
mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE );
// TODO: 2020-03-16 北朝上,需要动态改变车头车标
break;
}
if ( options == null ) {
@@ -466,6 +469,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
Logger.e( TAG, "latlng = null or is illegal" );
return;
}
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
loseLockMode();
mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) );
}
@@ -476,6 +482,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
if ( checkAMapView() ) {
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( visible );
@@ -492,6 +501,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
if ( checkAMapView() ) {
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( true );
@@ -533,6 +545,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void recoverLockMode() {
if ( checkAMapView() ) {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "锁车" );
mMapView.recoverLockMode();
}
@@ -540,6 +555,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void loseLockMode() {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
mockTouchEvent();
}
@@ -559,6 +577,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setLockZoom( int var1 ) {
if ( checkAMapView() ) {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "锁定锁车比例尺" );
mMapView.setLockZoom( var1 );
}
@@ -596,7 +617,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( false );
showMyLocation( true );
NaviClient.getInstance( getContext() ).startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
NaviClient.getInstance( getContext() ).startAimlessMode();
}
}
@@ -655,6 +676,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( checkAMapView() ) {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY );
AMapNaviViewOptions options = mMapView.getViewOptions();
options.setPointToCenter( mapCenterX, mapCenterY );
@@ -731,6 +755,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
return;
}
try {
if ( DebugConfig.isDebug() ) {
Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
}
LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds( carPosition, lonLats, lockCarPosition );
if ( !lockCarPosition ) {
loseLockMode();

View File

@@ -6,6 +6,7 @@ import android.location.Location;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.map.MogoLatLng;
@@ -263,12 +264,13 @@ public class NaviClient implements IMogoNavi {
}
}
public void startAimlessMode( int cameraAndSpecialroadDetected ) {
mAMapNavi.startAimlessMode( cameraAndSpecialroadDetected );
@Override
public void startAimlessMode() {
mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
}
@Override
public void stopAimlessMode() {
mAMapNavi.stopAimlessMode();
}
}

View File

@@ -148,4 +148,14 @@ public interface IMogoNavi {
* @param listener
*/
void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener );
/**
* 打开巡航模式
*/
void startAimlessMode();
/**
* 关闭巡航模式
*/
void stopAimlessMode();
}

View File

@@ -180,4 +180,18 @@ public class MogoNavi implements IMogoNavi {
mDelegate.registerCarLocationChangedListener( listener );
}
}
@Override
public void startAimlessMode() {
if ( mDelegate != null ) {
mDelegate.startAimlessMode();
}
}
@Override
public void stopAimlessMode() {
if ( mDelegate != null ) {
mDelegate.stopAimlessMode();
}
}
}

View File

@@ -23,6 +23,8 @@ import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import java.util.ArrayDeque;
@@ -87,7 +89,9 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
@Override
public void onReceive( Context context, Intent intent ) {
try {
refreshTimeAndDate();
WorkThreadHandler.getInstance().post( () -> {
refreshTimeAndDate();
} );
} catch ( Exception e ) {
Logger.e( TAG, e, "error. " );
}
@@ -164,7 +168,14 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
String timeStr = getContext().getResources().getString( R.string.module_ext_str_time_format, hour, minute > 9 ? String.valueOf( minute ) : "0" + minute );
String dateStr = getContext().getResources().getString( R.string.module_ext_str_date_format, month + 1, day, mWeeks[week - 1] );
mView.renderTime( dateStr, timeStr );
UiThreadHandler.post( () -> {
try {
mView.renderTime( dateStr, timeStr );
} catch ( Exception e ) {
e.printStackTrace();
}
} );
}
@Override
@@ -208,7 +219,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
changeAutoSwitchVoiceTipsWordsStatus( true );
}
private void changeAutoSwitchVoiceTipsWordsStatus(boolean autoChange){
private void changeAutoSwitchVoiceTipsWordsStatus( boolean autoChange ) {
if ( !mHasTipWords ) {
return;
}