Merge branch 'dev' into dev_custom_map

# Conflicts:
#	libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java
#	modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java
This commit is contained in:
wangcongtao
2020-08-14 16:24:47 +08:00
928 changed files with 25369 additions and 4487 deletions

View File

@@ -55,7 +55,6 @@ import com.mogo.service.module.MogoAction;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.TipToast;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -64,8 +63,6 @@ import org.json.JSONObject;
import java.util.List;
import retrofit2.http.HEAD;
/**
* @author congtaowang
* @since 2020-01-03
@@ -80,7 +77,6 @@ import retrofit2.http.HEAD;
public class MogoServices implements IMogoMapListener,
IMogoLocationListener,
IMogoNaviListener,
IMogoStatusChangedListener,
IMogoIntentListener,
IMogoAimlessModeListener,
IMogoVoiceCmdCallBack,
@@ -278,6 +274,68 @@ public class MogoServices implements IMogoMapListener,
private boolean mIsFirstAccOn = true;
private IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter() {
@Override
public void onUserInteracted( boolean userInteracted ) {
if ( userInteracted ) {
restartAutoRefreshAtTime( ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT );
}
}
@Override
public void onSearchUIShow( boolean visible ) {
if ( visible ) {
// 搜索时,不在自动刷新打点策略
stopAutoRefreshStrategy();
} else {
// 搜索后,打开打点策略
if ( mAutoRefreshCallback != null ) {
mAutoRefreshCallback.onSuccess( null );
}
}
}
@Override
public void onMainPageResumeStatusChanged( boolean resume ) {
if ( resume ) {
registerInternalUnWakeupWords();
if ( !mIsMainPageFirstResume ) {
restartAutoRefreshAtTime( 2_000L );
}
mIsMainPageFirstResume = false;
} else {
unregisterInternalUnWakeupWords();
stopAutoRefreshStrategy();
}
}
@Override
public void onSeekHelpingStatusChanged( boolean isSeekingHelping ) {
CarIconDisplayStrategy.getInstance().changeCarIconStatus( isSeekingHelping );
notifySeekHelpingStatusChanged( isSeekingHelping );
}
@Override
public void onAccStatusChanged( boolean accOn ) {
if ( accOn ) {
if ( mIsFirstAccOn ) {
mIsFirstAccOn = false;
return;
}
initLocationServiceProcess( mContext );
mADASController.showADAS();
MarkerServiceHandler.getApis().getMapServiceApi().getSingletonLocationClient( mContext ).start();
MarkerServiceHandler.getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers();
UiThreadHandler.postDelayed( () -> {
refreshStrategy();
}, 3_000L );
} else {
MarkerServiceHandler.getApis().getMapServiceApi().getSingletonLocationClient( mContext ).stop();
MarkerServiceHandler.getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers();
}
}
};
public void init( Context context ) {
mContext = context;
@@ -288,12 +346,11 @@ public class MogoServices implements IMogoMapListener,
mUiController = mMogoMapService.getMapUIController();
mNavi = mMogoMapService.getNavi( context );
mStatusManager = MarkerServiceHandler.getMogoStatusManager();
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ADAS_UI, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_RESUME, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEEK_HELPING, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ACC_STATUS, this );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, statusChangedListener );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, statusChangedListener );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_RESUME, statusChangedListener );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEEK_HELPING, statusChangedListener );
mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ACC_STATUS, statusChangedListener );
mStatusManager.setAIAssistReady( TAG, AIAssist.getInstance( mContext ).hasFlush() );
registerMogoReceiver( context );
@@ -325,6 +382,8 @@ public class MogoServices implements IMogoMapListener,
mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_USER_ONLINE, this );
mIntentManager.registerIntentListener( ServiceConst.COMMAND_ZHIDAO_NEARBY_FRIEND_BYLOCATION, this );
mIntentManager.registerIntentListener( ServiceConst.COMMAND_BACK, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER, this );
mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_SEND, this );
mADASController = MarkerServiceHandler.getADASController();
mLauncher = MarkerServiceHandler.getLauncher();
@@ -338,6 +397,7 @@ public class MogoServices implements IMogoMapListener,
if ( DebugConfig.isLaunchLocationService() ) {
initLocationServiceProcess( context );
}
}
private void initLocationServiceProcess( Context context ) {
@@ -370,6 +430,7 @@ public class MogoServices implements IMogoMapListener,
if ( msg.obj instanceof RefreshObject ) {
RefreshObject ro = ( ( RefreshObject ) msg.obj );
if ( ro.mLonLat == null ) {
invokeAutoRefreshStrategy();
Logger.w( TAG, "lonLat is null." );
return;
}
@@ -415,6 +476,8 @@ public class MogoServices implements IMogoMapListener,
filter.addAction( MogoReceiver.ACTION_VOICE_READY );
filter.addAction( MogoReceiver.ACTION_MOCK );
filter.addAction( Intent.ACTION_CLOSE_SYSTEM_DIALOGS );
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER );
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_SEND );
try {
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
Logger.i( TAG, "register voice receiver." );
@@ -690,74 +753,6 @@ public class MogoServices implements IMogoMapListener,
mThreadHandler.sendMessage( msg );
}
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
//Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue );
switch ( descriptor ) {
case USER_INTERACTED:
if ( isTrue ) {
restartAutoRefreshAtTime( ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT );
}
break;
case SEARCH_UI:
if ( isTrue ) {
// 搜索时,不在自动刷新打点策略
stopAutoRefreshStrategy();
} else {
// 搜索后,打开打点策略
if ( mAutoRefreshCallback != null ) {
mAutoRefreshCallback.onSuccess( null );
}
}
break;
case ADAS_UI:
try {
if ( isTrue ) {
onAdasOn();
} else {
onAdasClosed();
}
} catch ( Exception e ) {
e.printStackTrace();
}
break;
case MAIN_PAGE_RESUME:
if ( isTrue ) {
registerInternalUnWakeupWords();
if ( !mIsMainPageFirstResume ) {
restartAutoRefreshAtTime( 2_000L );
}
mIsMainPageFirstResume = false;
} else {
unregisterInternalUnWakeupWords();
stopAutoRefreshStrategy();
}
break;
case SEEK_HELPING:
CarIconDisplayStrategy.getInstance().changeCarIconStatus( isTrue );
notifySeekHelpingStatusChanged( isTrue );
break;
case ACC_STATUS:
if ( isTrue ) {
if ( mIsFirstAccOn ) {
mIsFirstAccOn = false;
return;
}
initLocationServiceProcess( mContext );
mADASController.showADAS();
MarkerServiceHandler.getApis().getMapServiceApi().getSingletonLocationClient( mContext ).start();
MarkerServiceHandler.getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers();
UiThreadHandler.postDelayed( () -> {
refreshStrategy();
}, 3_000L );
} else {
MarkerServiceHandler.getApis().getMapServiceApi().getSingletonLocationClient( mContext ).stop();
MarkerServiceHandler.getApis().getMapServiceApi().getMarkerManager( mContext ).removeMarkers();
}
break;
}
}
private void notifySeekHelpingStatusChanged( boolean seekHelpingStatus ) {
Intent intent = new Intent( "com.mogo.launcher.adas.app" );
try {
@@ -773,24 +768,11 @@ public class MogoServices implements IMogoMapListener,
}
}
private void onAdasOn() {
// ADAS 时,不在自动刷新打点策略
stopAutoRefreshStrategy();
}
private void onAdasClosed() {
refreshStrategy();
// ADAS关闭后打开打点策略
if ( mAutoRefreshCallback != null ) {
mAutoRefreshCallback.onSuccess( null );
}
}
public void restartAutoRefreshAtTime( long time ) {
restartAutoRefreshAtTime( time, true );
}
public void clearAllData(){
public void clearAllData() {
try {
MarkerServiceHandler.getMapService().getMarkerManager( mContext ).removeMarkers();
} catch ( Exception e ) {
@@ -800,8 +782,8 @@ public class MogoServices implements IMogoMapListener,
private void restartAutoRefreshAtTime( long time, boolean stopOnlineCarRefresh ) {
if ( time < 0 ) {
Logger.w( TAG, "ignore refresh request case time < 0" );
return;
Logger.w( TAG, "refresh request case time < 0, set to 0 and go on." );
time = 0;
}
stopAutoRefreshStrategy( stopOnlineCarRefresh );
mRefreshRemainingTime = time;
@@ -828,20 +810,22 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onUpdateTraffic2( MogoTraffic traffic ) {
if ( traffic != null ) {
if ( mCurrentLimit == traffic.getSpeedLimit() ) {
return;
}
mCurrentLimit = traffic.getSpeedLimit();
Logger.i( TAG, "speed = %d, desc = %s", traffic.getSpeedLimit(), traffic.getDesc() );
// 发送当前限速到 adas
Intent intent = new Intent( "com.mogo.launcher.adas" );
intent.putExtra( "adas_speed_limit", traffic.getSpeedLimit() );
mContext.sendBroadcast( intent );
if ( traffic == null ) {
return;
}
if ( mCurrentLimit == traffic.getSpeedLimit() ) {
return;
}
mCurrentLimit = traffic.getSpeedLimit();
Logger.i( TAG, "speed = %d, desc = %s", traffic.getSpeedLimit(), traffic.getDesc() );
// 发送当前限速到 adas
Intent intent = new Intent( "com.mogo.launcher.adas" );
intent.putExtra( "adas_speed_limit", traffic.getSpeedLimit() );
mContext.sendBroadcast( intent );
}
@Override

View File

@@ -0,0 +1,45 @@
package com.mogo.module.service;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
public
/**
* @author congtaowang
* @since 2020/8/6
*
* 描述
*/
abstract class StatusChangedAdapter implements IMogoStatusChangedListener {
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
switch ( descriptor ) {
case USER_INTERACTED:
onUserInteracted( isTrue );
break;
case SEARCH_UI:
onSearchUIShow( isTrue );
break;
case MAIN_PAGE_RESUME:
onMainPageResumeStatusChanged( isTrue );
break;
case SEEK_HELPING:
onSeekHelpingStatusChanged( isTrue );
break;
case ACC_STATUS:
onAccStatusChanged( isTrue );
break;
}
}
public abstract void onUserInteracted( boolean userInteracted );
public abstract void onSearchUIShow( boolean visible );
public abstract void onMainPageResumeStatusChanged( boolean resume );
public abstract void onSeekHelpingStatusChanged( boolean isSeekingHelping );
public abstract void onAccStatusChanged( boolean accOn );
}

View File

@@ -17,6 +17,6 @@ public class EmptyIntentHandler implements IntentHandler {
@Override
public void handle( Context context, Intent intent ) {
Logger.w( TAG, "空实现." );
Logger.w( TAG, "空实现. %s", intent.getAction() );
}
}

View File

@@ -67,11 +67,7 @@ public class RefreshModel {
refreshBody.limit = limit;
refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng );
refreshBody.radius = radius;
refreshBody.dataType.add( ServiceConst.CARD_TYPE_CARS_CHATTING );
refreshBody.dataType.add( ServiceConst.CARD_TYPE_ROAD_CONDITION );
refreshBody.dataType.add( ServiceConst.CARD_TYPE_SHARE_MUSIC );
// refreshBody.dataType.add(ServiceConst.CARD_TYPE_USER_DATA);
refreshBody.dataType.add( ServiceConst.CARD_TYPE_NOVELTY );
String data = GsonUtil.jsonFromObject( refreshBody );
query.put( "data", data );

View File

@@ -53,6 +53,11 @@ public class MogoReceiver extends BroadcastReceiver {
public static final String ACTION_MOCK = "com.mogo.mock";
// 接受其他app发给高德的广播
public static final String ACTION_AUTO_NAVI_RECEIVER = "AUTONAVI_STANDARD_BROADCAST_RECV";
// 接受高德发过来的广播
public static final String ACTION_AUTO_NAVI_SEND = "AUTONAVI_STANDARD_BROADCAST_SEND";
private IMogoIntentManager mMogoIntentManager;
public MogoReceiver(Context context) {