From ae997d944bf1faf98587e739f5be16478bf30f5e Mon Sep 17 00:00:00 2001 From: liujing Date: Mon, 24 Aug 2020 11:31:00 +0800 Subject: [PATCH 01/22] msg --- .../com/mogo/module/v2x/fragment/V2XShareEventsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java index 6343fae9e7..961a08bc2a 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java @@ -205,7 +205,7 @@ public class V2XShareEventsFragment extends MvpFragment Date: Mon, 24 Aug 2020 16:48:58 +0800 Subject: [PATCH 02/22] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=85=8D=E5=94=A4=E9=86=92=E8=AF=8D=EF=BC=8C=E5=8F=AA=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E2=80=9C=E4=B8=8A=E6=8A=A5=E8=B7=AF=E5=86=B5=E2=80=9D?= =?UTF-8?q?=EF=BC=8C=E4=B8=94=E6=98=AF=E5=9C=A8=E6=98=BE=E7=A4=BA=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E6=97=B6=E5=80=99=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/share/ShareControl.java | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) 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 2ed2004c55..5d78e207c2 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 @@ -186,37 +186,41 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo intentManager.registerIntentListener(UNWAKE_UPLOAD_ROAD_CONDITION, this); // 免唤醒词注册 - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_BLOCK, - CMD_UPLOAD_BLOCK, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_TRAFFIC_CHECK, - CMD_TRAFFIC_CHECK, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CLOSURE, - CMD_ROAD_CLOSURE, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_CANCEL_SHARE, - CMD_CANCEL_SHARE, this); - if (DebugConfig.getAIType() == DebugConfig.AI_TYPE_TXZ) { - // 使用同行者语义你的话,增加如下免唤醒词 - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ACCIDENT, - CMD_UPLOAD_ACCIDENT, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC, - UPLOAD_REAL_TIME_TRAFFIC, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_SEEK_HELP, - UPLOAD_SEEK_HELP, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_STAGNANT_WATER, - UPLOAD_STAGNANT_WATER, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_ICY, - UPLOAD_ROAD_ICY, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_DENSE_FOG, - UPLOAD_DENSE_FOG, this); - AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CONSTRUCTION, - UPLOAD_ROAD_CONSTRUCTION, this); - } +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_BLOCK, +// CMD_UPLOAD_BLOCK, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_TRAFFIC_CHECK, +// CMD_TRAFFIC_CHECK, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CLOSURE, +// CMD_ROAD_CLOSURE, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_CANCEL_SHARE, +// CMD_CANCEL_SHARE, this); +// if (DebugConfig.getAIType() == DebugConfig.AI_TYPE_TXZ) { +// // 使用同行者语义你的话,增加如下免唤醒词 +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ACCIDENT, +// CMD_UPLOAD_ACCIDENT, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC, +// UPLOAD_REAL_TIME_TRAFFIC, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_SEEK_HELP, +// UPLOAD_SEEK_HELP, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_STAGNANT_WATER, +// UPLOAD_STAGNANT_WATER, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_ICY, +// UPLOAD_ROAD_ICY, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_DENSE_FOG, +// UPLOAD_DENSE_FOG, this); +// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CONSTRUCTION, +// UPLOAD_ROAD_CONSTRUCTION, this); +// } if(!DebugConfig.isLauncher()) { ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() { @Override public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { if (!isTrue) { + AIAssist.getInstance(mContext).unregisterUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC,ShareControl.this); dismissShareDialog(); + }else{ + AIAssist.getInstance(mContext).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC, + UPLOAD_REAL_TIME_TRAFFIC, ShareControl.this); } } }); From 8c7508e385f6b988492cfe534a713da7c904127e Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 25 Aug 2020 10:25:47 +0800 Subject: [PATCH 03/22] =?UTF-8?q?1.1.3=20=E5=B9=BF=E5=91=8A=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/functions/baseservices.gradle | 4 + app/functions/leftpanel.gradle | 4 + .../launchercard/LauncherCardRefresher.java | 236 ++++++++++++++++-- .../service/network/RefreshApiService.java | 7 +- .../module/service/network/RefreshModel.java | 4 + .../service/network/ZhidaoApiService.java | 28 +++ .../service/network/ZhidaoRefreshModel.java | 66 +++++ .../bean/LauncherCardAdvertisementData.java | 46 ++++ .../module/widgets/AutoNaviIntentHandler.java | 49 ++-- 9 files changed, 398 insertions(+), 46 deletions(-) create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java diff --git a/app/functions/baseservices.gradle b/app/functions/baseservices.gradle index 0372c05860..3472339744 100644 --- a/app/functions/baseservices.gradle +++ b/app/functions/baseservices.gradle @@ -7,10 +7,12 @@ project.dependencies { d82xImplementation rootProject.ext.dependencies.mogobaseserviceapk em1Implementation rootProject.ext.dependencies.mogobaseserviceapk d8xxImplementation rootProject.ext.dependencies.mogobaseserviceapk + d80xImplementation rootProject.ext.dependencies.mogobaseserviceapk em4Implementation rootProject.ext.dependencies.mogobaseserviceapk e8xxImplementation rootProject.ext.dependencies.mogobaseserviceapk e8xxImplementation rootProject.ext.dependencies.mogobaseserviceapk f8xxImplementation rootProject.ext.dependencies.mogobaseserviceapk + f80xImplementation rootProject.ext.dependencies.mogobaseserviceapk em3Implementation rootProject.ext.dependencies.mogobaseserviceapk } else { bydautoImplementation project(':foudations:mogo-base-services-sdk') @@ -18,9 +20,11 @@ project.dependencies { d82xImplementation project(':foudations:mogo-base-services-apk') em1Implementation project(':foudations:mogo-base-services-apk') d8xxImplementation project(':foudations:mogo-base-services-apk') + d80xImplementation project(':foudations:mogo-base-services-apk') em4Implementation project(':foudations:mogo-base-services-apk') e8xxImplementation project(':foudations:mogo-base-services-apk') f8xxImplementation project(':foudations:mogo-base-services-apk') + f80xImplementation project(':foudations:mogo-base-services-apk') em3Implementation project(':foudations:mogo-base-services-apk') } } \ No newline at end of file diff --git a/app/functions/leftpanel.gradle b/app/functions/leftpanel.gradle index 9af57c4e47..a1942225d4 100644 --- a/app/functions/leftpanel.gradle +++ b/app/functions/leftpanel.gradle @@ -7,10 +7,12 @@ project.dependencies { bydautoImplementation rootProject.ext.dependencies.moduleleftpanel d8xxImplementation rootProject.ext.dependencies.moduleleftpanelnoop + d80xImplementation rootProject.ext.dependencies.moduleleftpanelnoop em4Implementation rootProject.ext.dependencies.moduleleftpanelnoop e8xxImplementation rootProject.ext.dependencies.moduleleftpanelnoop e8xxImplementation rootProject.ext.dependencies.moduleleftpanelnoop f8xxImplementation rootProject.ext.dependencies.moduleleftpanelnoop + f80xImplementation rootProject.ext.dependencies.moduleleftpanelnoop em3Implementation rootProject.ext.dependencies.moduleleftpanelnoop } else { d82xImplementation project(':modules:mogo-module-left-panel') @@ -18,9 +20,11 @@ project.dependencies { bydautoImplementation project(':modules:mogo-module-left-panel') d8xxImplementation project(':modules:mogo-module-left-panel-noop') + d80xImplementation project(':modules:mogo-module-left-panel-noop') em4Implementation project(':modules:mogo-module-left-panel-noop') e8xxImplementation project(':modules:mogo-module-left-panel-noop') f8xxImplementation project(':modules:mogo-module-left-panel-noop') + f80xImplementation project(':modules:mogo-module-left-panel-noop') em3Implementation project(':modules:mogo-module-left-panel-noop') } } \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 825c071feb..57c9669bbd 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -5,10 +5,13 @@ import android.content.Intent; import android.os.Handler; import android.os.Looper; import android.os.Message; +import android.text.TextUtils; import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.network.ParamsProvider; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.commons.network.Utils; import com.mogo.commons.voice.AIAssist; -import com.mogo.commons.voice.VoicePreemptType; import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; import com.mogo.module.common.entity.MarkerResponse; @@ -16,10 +19,26 @@ import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.R; import com.mogo.module.service.network.RefreshCallback; import com.mogo.module.service.network.RefreshModel; +import com.mogo.module.service.network.ZhidaoApiService; +import com.mogo.module.service.network.ZhidaoRefreshModel; +import com.mogo.module.service.network.bean.LauncherCardAdvertisementData; import com.mogo.utils.AppUtils; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; import com.mogo.utils.storage.SharedPrefsMgr; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + public /** * @author congtaowang @@ -37,13 +56,24 @@ class LauncherCardRefresher { private static volatile LauncherCardRefresher sInstance; + // 刷新道路事件/车友 public static final int MSG_REFRESH = 2020; - public static final int MSG_TTS_TIP = 2021; - public static final long ONE_MINUTE = 15 * 1000L; + // 刷新卡片默认显示内容 + public static final int MSG_REFRESH_DEFAULT_CARD = 2021; + // 刷新卡片广告 + public static final int MSG_REFRESH_ADVERTISEMENT = 2022; + // 开始刷新广告数据 + public static final int MSG_START_REFRESH_ADVERTISEMENT = 2023; + public static final long ONE_MINUTE = 60 * 1000L; public static final long ONE_DAY = 24 * 60 * ONE_MINUTE; + private String mLaunchTTSText; + private LauncherCardAdvertisementData.LauncherCardAdvertisement mDefaultLauncherCardConfig; + private List< LauncherCardAdvertisementData.LauncherCardAdvertisement > mAdvertisements; private LauncherCardRefresher( Context context ) { mContext = context; + mRefreshModel = new RefreshModel( mContext ); + mZhidaoRefreshModel = new ZhidaoRefreshModel( mContext ); } public static LauncherCardRefresher getInstance( Context context ) { @@ -81,11 +111,18 @@ class LauncherCardRefresher { Logger.e( TAG, e, "error when refresh launcher card." ); } break; - case MSG_TTS_TIP: - playTTS(); + case MSG_REFRESH_DEFAULT_CARD: + renderDefaultLauncherCardConfig(); mRefreshStrategy = mRefreshStrategy.getNext(); restart(); break; + case MSG_REFRESH_ADVERTISEMENT: + int index = msg.arg1;// 当前广告索引 + loopRenderAdvertisements( index ); + break; + case MSG_START_REFRESH_ADVERTISEMENT: + startAdvertisementsStrategy(); + break; } } }; @@ -94,6 +131,7 @@ class LauncherCardRefresher { private boolean mRefreshStop = true; private boolean mStart = false; private RefreshModel mRefreshModel; + private ZhidaoRefreshModel mZhidaoRefreshModel; private LauncherCardRefreshStrategy mRefreshStrategy = new LauncherCardRefreshStrategy( 2 * ONE_MINUTE, new LauncherCardRefreshStrategy( @@ -103,7 +141,7 @@ class LauncherCardRefresher { null, MSG_REFRESH ), MSG_REFRESH ), - MSG_TTS_TIP + MSG_REFRESH_DEFAULT_CARD ); public void start() { @@ -113,7 +151,17 @@ class LauncherCardRefresher { if ( mStart ) { return; } + Logger.d( TAG, "start" ); + mLaunchTTSText = mContext.getString( R.string.module_service_open_app_tip ); + startExplorerWayStrategy(); + // 延时一分钟加载数据,已保证accOn之后网络恢复正常 + mHandler.sendEmptyMessageDelayed( MSG_START_REFRESH_ADVERTISEMENT, ONE_MINUTE ); + } + /** + * 道路事件和车友播报 + */ + private void startExplorerWayStrategy() { int counter = SharedPrefsMgr.getInstance( mContext ).getInt( KEY_LauncherCardTipCounter, 0 ); if ( counter >= 5 ) { long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L ); @@ -127,7 +175,6 @@ class LauncherCardRefresher { } } mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() ); - Logger.d( TAG, "start" ); mRefreshStop = false; mStart = true; @@ -139,7 +186,6 @@ class LauncherCardRefresher { mRefreshStop = true; mStart = false; mHandler.removeMessages( MSG_REFRESH ); - mHandler.removeMessages( MSG_TTS_TIP ); Logger.d( TAG, "stop" ); } @@ -149,14 +195,10 @@ class LauncherCardRefresher { } mRefreshStop = false; mHandler.removeMessages( MSG_REFRESH ); - mHandler.removeMessages( MSG_TTS_TIP ); mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() ); } private void handleRefreshMsg() { - if ( mRefreshModel == null ) { - mRefreshModel = new RefreshModel( mContext ); - } MogoLocation location = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); if ( location == null ) { restart(); @@ -177,7 +219,7 @@ class LauncherCardRefresher { new RefreshCallback< MarkerResponse >() { @Override public void onSuccess( MarkerResponse response ) { - notifyLauncherCard( LauncherCardRefreshType.ExploreWay, response ); + notifyLauncherCardExplorerWayChanged( LauncherCardRefreshType.ExploreWay, response ); mRefreshStrategy = mRefreshStrategy.getNext(); restart(); } @@ -199,7 +241,7 @@ class LauncherCardRefresher { new RefreshCallback< MarkerResponse >() { @Override public void onSuccess( MarkerResponse response ) { - notifyLauncherCard( LauncherCardRefreshType.OnlineCar, response ); + notifyLauncherCardExplorerWayChanged( LauncherCardRefreshType.OnlineCar, response ); mRefreshStrategy = mRefreshStrategy.getNext(); restart(); } @@ -213,7 +255,7 @@ class LauncherCardRefresher { } - private boolean notifyLauncherCard( LauncherCardRefreshType type, MarkerResponse response ) { + private boolean notifyLauncherCardExplorerWayChanged( LauncherCardRefreshType type, MarkerResponse response ) { if ( response == null || response.getResult() == null ) { return false; } @@ -224,28 +266,30 @@ class LauncherCardRefresher { return false; } int size = response.getResult().getExploreWay().size(); - speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ) ); - notifyLauncherCard( String.format( info, size, mRefreshStrategy.getDesc() ), size, tts ); + speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ), true ); + notifyLauncherCardExplorerWayChanged( String.format( info, size, mRefreshStrategy.getDesc() ), size, tts ); } else { if ( response.getResult().getOnlineCar() == null || response.getResult().getOnlineCar().isEmpty() ) { return false; } int size = response.getResult().getOnlineCar().size(); - speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ) ); - notifyLauncherCard( String.format( info, size, mRefreshStrategy.getDesc() ), size , tts); + speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ), true ); + notifyLauncherCardExplorerWayChanged( String.format( info, size, mRefreshStrategy.getDesc() ), size, tts ); } return true; } - private void speakTTS( String msg ) { - if ( AppUtils.isAppForeground( mContext ) ) { - return; + private void speakTTS( String msg, boolean checkAppForeground ) { + if ( checkAppForeground ) { + if ( AppUtils.isAppForeground( mContext ) ) { + return; + } } Logger.d( TAG, msg ); AIAssist.getInstance( mContext ).speakTTSVoice( msg ); } - private void notifyLauncherCard( String info, int amount, String tts ) { + private void notifyLauncherCardExplorerWayChanged( String info, int amount, String tts ) { Intent intent = new Intent( "com.mogo.launcher.v2x" ); intent.putExtra( "v2x_warning_type", "20000" ); intent.putExtra( "v2x_warining_timeout", 20 * 1000 ); @@ -256,11 +300,153 @@ class LauncherCardRefresher { Logger.d( TAG, "发送广播到桌面卡片." ); } - private void playTTS() { + /** + * 1. 刷新默认卡片样式 + *

+ * 2. 播报默认卡片语音 + */ + private void renderDefaultLauncherCardConfig() { + if ( mDefaultLauncherCardConfig != null ) { + long curr = System.currentTimeMillis(); + if ( mDefaultLauncherCardConfig.endTime > curr && mDefaultLauncherCardConfig.startTime < curr ) { + Intent intent = new Intent( "com.mogo.launcher.v2x.card" ); + intent.putExtra( "v2x_card_title", mDefaultLauncherCardConfig.name ); + intent.putExtra( "v2x_card_icon", mDefaultLauncherCardConfig.filePath ); + intent.putExtra( "v2x_card_content", mDefaultLauncherCardConfig.cardContent ); + intent.putExtra( "v2x_card_button_name", mDefaultLauncherCardConfig.buttonContent ); + intent.putExtra( "v2x_card_startTime", mDefaultLauncherCardConfig.startTime ); + intent.putExtra( "v2x_card_endTime", mDefaultLauncherCardConfig.endTime ); + mContext.sendBroadcast( intent ); + Logger.d( TAG, "发送默认配置广播到桌面卡片." ); + if ( !TextUtils.isEmpty( mDefaultLauncherCardConfig.content ) ) { + mLaunchTTSText = mDefaultLauncherCardConfig.content; + } + } + } try { - AIAssist.getInstance( mContext ).speakTTSVoice( mContext.getString( R.string.module_service_open_app_tip ) ); + speakTTS( mLaunchTTSText, true ); } catch ( Exception e ) { e.printStackTrace(); } + startLoopRenderAdvertisements(); + } + + /** + * 请求广告数据 + */ + private void startAdvertisementsStrategy() { + final Map< String, Object > query = new ParamsProvider.Builder( mContext ) + .append( "modelType", 30 ) + .build(); + mZhidaoRefreshModel.getRefreshApiService().getCarAdvertisingList( query ) + .subscribeOn( Schedulers.io() ) + .observeOn( AndroidSchedulers.mainThread() ) + .subscribe( new SubscribeImpl< LauncherCardAdvertisementData >( RequestOptions.create( mContext ) ) { + @Override + public void onError( Throwable e ) { + super.onError( e ); + Logger.e( TAG, e, "获取配置失败" ); + } + + @Override + public void onSuccess( LauncherCardAdvertisementData data ) { + super.onSuccess( data ); + if ( data == null || data.result == null ) { + Logger.d( TAG, "carAdvertisingList is empty." ); + return; + } + Logger.d( TAG, "获取配置成功" ); + handleGotCarAdvertisingList( data.result ); + } + + @Override + public void onError( String message, int code ) { + super.onError( message, code ); + Logger.e( TAG, "获取配置失败 msg = %s, code = %s", message, code ); + } + } ); + } + + private void handleGotCarAdvertisingList( List< LauncherCardAdvertisementData.LauncherCardAdvertisement > data ) { + if ( data == null ) { + mAdvertisements = null; + return; + } + + mAdvertisements = new ArrayList<>(); + for ( LauncherCardAdvertisementData.LauncherCardAdvertisement launcherCardAdvertisement : data ) { + if ( launcherCardAdvertisement == null ) { + continue; + } + if ( launcherCardAdvertisement.cardType == LauncherCardAdvertisementData.TYPE_DEFAULT_CONFIG ) { + mDefaultLauncherCardConfig = launcherCardAdvertisement; + } else if ( launcherCardAdvertisement.cardType == LauncherCardAdvertisementData.TYPE_ACTIVITY ) { + long curr = System.currentTimeMillis(); + if ( curr > launcherCardAdvertisement.startTime && curr < launcherCardAdvertisement.endTime ) { + mAdvertisements.add( launcherCardAdvertisement ); + } else { + Logger.w( TAG, "广告已过期 %s", launcherCardAdvertisement.cardContent ); + } + } + } + + if ( !mAdvertisements.isEmpty() && mAdvertisements.size() > 1 ) { + LauncherCardAdvertisementData.LauncherCardAdvertisement[] sorted = new LauncherCardAdvertisementData.LauncherCardAdvertisement[mAdvertisements.size()]; + Arrays.sort( sorted, ( ( o1, o2 ) -> { + return o1.sort < o2.sort ? 1 : ( o1.sort == o2.sort ? 0 : -1 ); + } ) ); + mAdvertisements = Arrays.asList( sorted ); + } + } + + /** + * 开始按策略展示广告 + */ + private void startLoopRenderAdvertisements() { + if ( mAdvertisements == null || mAdvertisements.isEmpty() ) { + return; + } + Message msg = Message.obtain(); + msg.what = MSG_REFRESH_ADVERTISEMENT; + msg.arg1 = 0; + mHandler.sendMessage( msg ); + } + + private void loopRenderAdvertisements( int index ) { + try { + index = index % mAdvertisements.size(); + LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement = mAdvertisements.get( index ); + Message msg = Message.obtain(); + msg.what = MSG_REFRESH_ADVERTISEMENT; + msg.arg1 = ++index; + mHandler.sendMessageDelayed( msg, advertisement.popupNum * ONE_MINUTE ); + renderAdvertisement( advertisement ); + } catch ( Exception e ) { + Logger.e( TAG, e, "loopRenderAdvertisements" ); + } + } + + /** + * 刷新广告 + */ + private void renderAdvertisement( LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement ) { + if ( advertisement == null ) { + return; + } + long curr = System.currentTimeMillis(); + if ( advertisement.endTime > curr && advertisement.startTime < curr ) { + Intent intent = new Intent( "com.mogo.launcher.v2x.card" ); + intent.putExtra( "v2x_card_title", advertisement.name ); + intent.putExtra( "v2x_card_icon", advertisement.filePath ); + intent.putExtra( "v2x_card_content", advertisement.cardContent ); + intent.putExtra( "v2x_card_button_name", advertisement.buttonContent ); + intent.putExtra( "v2x_card_startTime", advertisement.startTime ); + intent.putExtra( "v2x_card_endTime", advertisement.endTime ); + mContext.sendBroadcast( intent ); + if ( !AppUtils.isAppForeground( mContext ) ) { + speakTTS( advertisement.content, true ); + } + Logger.d( TAG, "发送广告配置广播到桌面卡片." ); + } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java index 27c5136805..8f58de2d68 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java @@ -7,12 +7,10 @@ import com.mogo.module.service.network.bean.DemoUserInfoEntity; import java.util.Map; import io.reactivex.Observable; -import io.reactivex.Single; import retrofit2.http.FieldMap; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; -import retrofit2.http.QueryMap; /** * @author congtaowang @@ -32,12 +30,11 @@ public interface RefreshApiService { @FormUrlEncoded @POST( "/yycp-launcherSnapshot/user/queryOnLineCarWithRoute" ) - Observable queryOnLineCarWithRoute(@FieldMap Map< String, Object > parameters ); + Observable< MarkerResponse > queryOnLineCarWithRoute( @FieldMap Map< String, Object > parameters ); /** * 查询演示车用户信息 */ - @GET("/yycp-launcherSnapshot/mock/getMockUserInfos") + @GET( "/yycp-launcherSnapshot/mock/getMockUserInfos" ) Observable< DemoUserInfoEntity > getMockUsers(); - } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index 1634eaa782..b9db170473 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -47,6 +47,10 @@ public class RefreshModel { this.mRefreshApiService = network.create( RefreshApiService.class, getNetHost() ); } + public RefreshApiService getRefreshApiService() { + return mRefreshApiService; + } + public static String getNetHost() { switch ( DebugConfig.getNetMode() ) { case DebugConfig.NET_MODE_DEV: diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java new file mode 100644 index 0000000000..50a7870617 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoApiService.java @@ -0,0 +1,28 @@ +package com.mogo.module.service.network; + +import com.mogo.module.service.network.bean.LauncherCardAdvertisementData; + +import java.util.Map; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.QueryMap; + +/** + * @author congtaowang + * @since 2020-01-03 + *

+ * 接口描述 + */ +public interface ZhidaoApiService { + + /** + * 获取桌面卡片配置 + * + * @param parameters + * @return + */ + @GET( "/marketing/advertisingPosition/getCarAdvertisingList" ) + Observable< LauncherCardAdvertisementData > getCarAdvertisingList( @QueryMap Map< String, Object > parameters ); + +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java new file mode 100644 index 0000000000..599e2883bb --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java @@ -0,0 +1,66 @@ +package com.mogo.module.service.network; + +import android.content.Context; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.data.BaseData; +import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.network.ParamsProvider; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.commons.network.Utils; +import com.mogo.map.MogoLatLng; +import com.mogo.module.common.entity.MarkerResponse; +import com.mogo.module.service.ServiceConst; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.network.IMogoNetwork; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; +import com.mogo.utils.network.utils.GsonUtil; + +import java.util.Map; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + + +/** + * @author congtaowang + * @since 2020-01-03 + *

+ * 使用智道的域名 + */ +public class ZhidaoRefreshModel { + + private static final String TAG = "RefreshModel"; + + public static final String HOST_DEV = "http://carlife-test.zhidaohulian.com"; + public static final String HOST_TEST = "http://carlife-test.zhidaohulian.com"; + public static final String HOST_DEMO = "http://carlife-test.zhidaohulian.com"; + public static final String HOST_PRODUCT = "https://api.zhidaohulian.com"; + + private final Context mContext; + private ZhidaoApiService mRefreshApiService; + + public ZhidaoRefreshModel( Context context ) { + this.mContext = context; + IMogoNetwork network = ( IMogoNetwork ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_NETWORK ).navigation( context ); + this.mRefreshApiService = network.create( ZhidaoApiService.class, getNetHost() ); + } + + public ZhidaoApiService getRefreshApiService() { + return mRefreshApiService; + } + + public static String getNetHost() { + switch ( DebugConfig.getNetMode() ) { + case DebugConfig.NET_MODE_DEV: + return HOST_DEV; + case DebugConfig.NET_MODE_QA: + return HOST_TEST; + case DebugConfig.NET_MODE_DEMO: + return HOST_DEMO; + default: + return HOST_PRODUCT; + } + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java new file mode 100644 index 0000000000..cd633c1872 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/bean/LauncherCardAdvertisementData.java @@ -0,0 +1,46 @@ +package com.mogo.module.service.network.bean; + +import com.mogo.commons.data.BaseData; + +import java.util.List; + +public +/** + * @author congtaowang + * @since 2020/8/24 + * + * 描述 + */ +class LauncherCardAdvertisementData extends BaseData { + + // 启动展示 + public static final int TYPE_DEFAULT_CONFIG = 1; + // 活动 + public static final int TYPE_ACTIVITY = 2; + + public List< LauncherCardAdvertisement > result; + + /** + * 卡片名称 name + * 卡片类型 fileType 1-启动展示、2-活动播报 + * 卡片样式 filePath + * 卡片文案 cardContent + * 按钮文案 url + * 语音文案 content + * 活动期限 是时间戳 ,还是标准时间 startTime endTime Date类型 + * 播报频次(间隔):popupNum + * 活动展示顺序 sort + */ + public static class LauncherCardAdvertisement { + public String name; + public int cardType; + public String filePath; + public String cardContent; + public String buttonContent; + public String content; + public int sort; + public long startTime; + public long endTime; + public int popupNum; // 间隔时间:分钟 + } +} diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java index 77f525cb39..f9b9070d03 100644 --- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java +++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java @@ -2,11 +2,14 @@ package com.mogo.module.widgets; import android.content.Context; import android.content.Intent; +import android.text.TextUtils; import android.view.Gravity; import android.view.WindowManager; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.voice.AIAssist; +import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.module.common.wm.WindowManagerView; import com.mogo.utils.CommonUtils; import com.mogo.utils.LaunchUtils; @@ -23,9 +26,10 @@ public *

* 描述 */ -class AutoNaviIntentHandler { +class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack { private static final String TAG = "AutoNaviIntentHandler"; + public static final String OPEN = "OPEN_APP"; private static volatile AutoNaviIntentHandler sInstance; @@ -94,26 +98,31 @@ class AutoNaviIntentHandler { .position( ResourcesHelper.getDimensionPixelSize( context, R.dimen.module_widgets_app_entrance_x ), ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_widgets_app_entrance_y ) ) .showInWindowManager(); mWindowManagerView.attachTouchEvent( view -> { - try { - if ( DebugConfig.isLauncher() ) { - MogoWidgetManger.getInstance().getApis().getLauncherApi().backToLauncher( context ); - } else { - LaunchUtils.launchByPkg( context, "com.mogo.launcher.app" ); - } - if ( mProperties.isEmpty() ) { - mProperties.put( "appname", CommonUtils.getAppName( context ) ); - mProperties.put( "appversion", CommonUtils.getVersionName( context ) ); - mProperties.put( "from", 9 ); - } - MogoWidgetManger.getInstance().getApis().getAnalyticsApi().track( "appenterfront", mProperties ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } + enterApp( context ); } ); } try { mWindowManagerView.show(); MogoWidgetManger.getInstance().getApis().getAnalyticsApi().track( "NAVI_button_show", null ); + AIAssist.getInstance( context ).registerUnWakeupCommand( OPEN, new String[]{"切换到辅助驾驶模式"}, this ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + + private void enterApp( Context context ) { + try { + if ( DebugConfig.isLauncher() ) { + MogoWidgetManger.getInstance().getApis().getLauncherApi().backToLauncher( context ); + } else { + LaunchUtils.launchByPkg( context, "com.mogo.launcher.app" ); + } + if ( mProperties.isEmpty() ) { + mProperties.put( "appname", CommonUtils.getAppName( context ) ); + mProperties.put( "appversion", CommonUtils.getVersionName( context ) ); + mProperties.put( "from", 9 ); + } + MogoWidgetManger.getInstance().getApis().getAnalyticsApi().track( "appenterfront", mProperties ); } catch ( Exception e ) { Logger.e( TAG, e, "error." ); } @@ -125,6 +134,7 @@ class AutoNaviIntentHandler { } try { mWindowManagerView.dismiss(); + AIAssist.getInstance( AbsMogoApplication.getApp() ).unregisterUnWakeupCommand( OPEN, this ); } catch ( Exception e ) { Logger.e( TAG, e, "error." ); } @@ -145,5 +155,12 @@ class AutoNaviIntentHandler { intent.putExtra( "EXTRA_REQUEST_AUTO_STATE", 1 ); context.sendBroadcast( intent ); } + + @Override + public void onCmdSelected( String cmd ) { + if ( TextUtils.equals( OPEN, cmd ) ) { + enterApp( AbsMogoApplication.getApp() ); + } + } } From 16f0c8180b60cc7cc694f6044c5010afb4f53b04 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 25 Aug 2020 14:30:56 +0800 Subject: [PATCH 04/22] =?UTF-8?q?1.=20=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=8A=9F=E8=83=BD=EF=BC=9A=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=8C=89=E9=9C=80=E5=8A=A0=E8=BD=BD=202.=201.1.3=20=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E7=A0=94=E5=8F=91=EF=BC=9A=E5=AF=BC=E8=88=AA=E6=82=AC?= =?UTF-8?q?=E6=B5=AE=E6=8C=89=E9=92=AE=E3=80=81=E6=A1=8C=E9=9D=A2=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E6=92=AD=E6=8A=A5=E7=AD=96=E7=95=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../com/mogo/map/impl/amap/AMapWrapper.java | 2 - .../mogo/map/impl/amap/navi/NaviClient.java | 78 +++++++++++++++++-- .../impl/amap/navi/NaviListenerAdapter.java | 17 +--- .../map/impl/amap/navi/NaviOverlayHelper.java | 11 +-- .../module/main/service/MogoMainService.java | 2 +- .../module/widgets/AutoNaviIntentHandler.java | 4 + 7 files changed, 85 insertions(+), 31 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index cd77a1f062..21e99e2dc0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file 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 c796d9134a..ae7aef62c8 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 @@ -4,7 +4,6 @@ import android.content.Context; import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdateFactory; -import com.amap.api.maps.LocationSource; import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.Polyline; @@ -14,7 +13,6 @@ import com.mogo.map.IMogoMap; import com.mogo.map.IMogoUiSettings; import com.mogo.map.impl.amap.marker.AMapInfoWindowAdapter; import com.mogo.map.impl.amap.marker.AMapMarkerWrapper; -import com.mogo.map.impl.amap.navi.NaviClient; import com.mogo.map.impl.amap.overlay.AMapPolylineWrapper; import com.mogo.map.impl.amap.uicontroller.AMapUIController; import com.mogo.map.impl.amap.utils.ObjectUtils; diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index 963a177155..0a85cd595d 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -9,6 +9,7 @@ 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.AMapNaviPath; import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; @@ -30,6 +31,7 @@ import com.mogo.utils.storage.SharedPrefsMgr; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; /** * @author congtaowang @@ -48,10 +50,9 @@ public class NaviClient implements IMogoNavi { private final Context mContext; private AMapNavi mAMapNavi; - private final NaviListenerAdapter mAMapNaviListener; + private NaviListenerAdapter mAMapNaviListener; - - private final AimlessModeListenerAdapter mAimlessModeListener; + private AimlessModeListenerAdapter mAimlessModeListener; /** * 导航策略配置 @@ -77,10 +78,23 @@ public class NaviClient implements IMogoNavi { private NaviClient( Context context ) { mContext = context; - mAMapNavi = AMapNavi.getInstance( context ); + if ( DebugConfig.isUseCustomNavi() ) { + // 按需初始化导航组件 + initAMapNavi(); + } + } + + /** + * 初始化导航组件 + */ + private void initAMapNavi() { + if ( mAMapNavi != null ) { + return; + } + mAMapNavi = AMapNavi.getInstance( mContext ); mAMapNavi.setEmulatorNaviSpeed( 120 ); - mAMapNavi.setUseInnerVoice( DebugConfig.isUseCustomNavi(), true ); - mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this ); + mAMapNavi.setUseInnerVoice( DebugConfig.isUseCustomNavi(), false ); + mAMapNaviListener = new NaviListenerAdapter( mContext, this ); mAimlessModeListener = new AimlessModeListenerAdapter() { }; mAMapNavi.addAMapNaviListener( mAMapNaviListener ); @@ -165,10 +179,28 @@ public class NaviClient implements IMogoNavi { } } + public void stopAMapNavi() { + if ( mAMapNavi != null ) { + mAMapNavi.stopNavi(); + } + } + + public void selectAMapRouteId( int routeId ) { + if ( mAMapNavi != null ) { + mAMapNavi.selectRouteId( routeId ); + } + } + + public Map< Integer, AMapNaviPath > getAMapNaviPaths() { + if ( mAMapNavi != null ) { + return mAMapNavi.getNaviPaths(); + } + return null; + } @Override public void startNavi( boolean isRealNavi ) { - if ( mAMapNaviListener.isStopped() ) { + if ( mAMapNaviListener != null && mAMapNaviListener.isStopped() ) { return; } mIsRealNavi = isRealNavi; @@ -243,6 +275,9 @@ public class NaviClient implements IMogoNavi { @Override public boolean setBroadcastMode( int mode ) { + if ( checkAMapNavi() ) { + return false; + } return mAMapNavi.setBroadcastMode( mode ); } @@ -300,6 +335,9 @@ public class NaviClient implements IMogoNavi { @Override public void startAimlessMode() { + if ( checkAMapNavi() ) { + return; + } if ( mAimlessModeStatus && !isNaviing() ) { mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); mAimlessStatus = true; @@ -312,6 +350,9 @@ public class NaviClient implements IMogoNavi { @Override public void stopAimlessMode() { + if ( checkAMapNavi() ) { + return; + } mAMapNavi.stopAimlessMode(); mAimlessStatus = false; Logger.d( TAG, "关闭巡航成功" ); @@ -341,6 +382,15 @@ public class NaviClient implements IMogoNavi { @Override public void setUseExtraGPSData( boolean use ) { + // 如果使用平台模拟位置变化,需要用到导航组件 + if ( use ) { + initAMapNavi(); + } else { + destroyAMapNavi(); + } + if ( checkAMapNavi() ) { + return; + } Logger.d( TAG, "设置外部gps源状态 %s", use ); mAMapNavi.setIsUseExtraGPSData( use ); if ( AMapWrapper.getAMap() == null ) { @@ -364,8 +414,22 @@ public class NaviClient implements IMogoNavi { AMapWrapper.getAMap().setMyLocationEnabled( true ); } + /** + * 销毁导航组件 + */ + private void destroyAMapNavi() { + if ( mAMapNavi != null ) { + mAMapNavi.removeAMapNaviListener( mAMapNaviListener ); + mAMapNavi.removeAimlessModeListener( mAimlessModeListener ); + mAMapNavi.destroy(); + } + } + @Override public void setExtraGPSData( double lon, double lat, float speed, float accuracy, float bearing, long timestamp ) { + if ( checkAMapNavi() ) { + return; + } if ( !mAMapNavi.getIsUseExtraGPSData() ) { Logger.d( TAG, "拒绝外部GPS数据" ); return; diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index 96578329ed..9aa69c5daa 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -6,15 +6,10 @@ import android.os.Trace; import android.text.TextUtils; import com.amap.api.maps.model.Polyline; -import com.amap.api.navi.AMapNavi; -import com.amap.api.navi.AimlessModeListener; -import com.amap.api.navi.enums.AimLessMode; import com.amap.api.navi.enums.CameraType; -import com.amap.api.navi.enums.CarEnterCameraStatus; import com.amap.api.navi.enums.NaviType; import com.amap.api.navi.model.AMapCalcRouteResult; import com.amap.api.navi.model.AMapNaviCameraInfo; -import com.amap.api.navi.model.AMapNaviInfo; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.NaviInfo; import com.mogo.commons.voice.AIAssist; @@ -27,7 +22,6 @@ import com.mogo.map.navi.MogoNaviListenerHandler; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.UiThreadHandler; -import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import java.util.List; @@ -43,7 +37,6 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { private static final String TAG = "NaviListenerAdapter"; private Context mContext; - private AMapNavi mAMapNavi; private NaviClient mClient; /** * 导航状态:true - 导航 onStartNavi(int) 被调用, false - 到达目的地、手动挺固执 @@ -60,11 +53,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { */ private NaviOverlayHelper mNaviOverlayHelper; - public NaviListenerAdapter( Context mContext, AMapNavi mAMapNavi, NaviClient client ) { + public NaviListenerAdapter( Context mContext, NaviClient client ) { this.mContext = mContext; - this.mAMapNavi = mAMapNavi; this.mClient = client; - mNaviOverlayHelper = new NaviOverlayHelper( mAMapNavi, AMapWrapper.getAMap(), mContext ); + mNaviOverlayHelper = new NaviOverlayHelper( AMapWrapper.getAMap(), mContext ); } public void setNaviing( boolean mIsNaviing ) { @@ -240,16 +232,15 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { mNaviOverlayHelper.clearCalculatedOverlay(); setStopped( true ); setNaviing( false ); - mAMapNavi.stopNavi(); + mClient.stopAMapNavi(); MogoNaviListenerHandler.getInstance().onStopNavi(); AMapMessageManager.getInstance().postNaviStopped(); } public void handleClickedPolyline( Polyline polyline ) { if ( mNaviOverlayHelper != null ) { - mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() ); - mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() ); + mClient.selectAMapRouteId( mNaviOverlayHelper.getSelectedPathId() ); mNaviOverlayHelper.showBoundsWithSettingBounds(); } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java index c057446979..4da21b2f24 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java @@ -14,7 +14,6 @@ import com.amap.api.maps.model.LatLngBounds; import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.Polyline; -import com.amap.api.navi.AMapNavi; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.AMapNaviPath; import com.amap.api.navi.model.NaviInfo; @@ -55,7 +54,6 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { */ public static final float AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED = 0.3f; - private AMapNavi mAMapNavi; private AMap mAMap; private Context mContext; // 规划的路线显示边距 @@ -73,8 +71,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { */ private List< Marker > mMarkers = new ArrayList<>(); - public NaviOverlayHelper( AMapNavi mAMapNavi, AMap mAMap, Context mContext ) { - this.mAMapNavi = mAMapNavi; + public NaviOverlayHelper( AMap mAMap, Context mContext ) { this.mAMap = mAMap; this.mContext = mContext; calculateBoundArea(); @@ -125,7 +122,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { */ private List< CalculatePathItem > getSortedPaths() { checkAMapInstance(); - final Map< Integer, AMapNaviPath > pathMap = mAMapNavi.getNaviPaths(); + final Map< Integer, AMapNaviPath > pathMap = NaviClient.getInstance( mContext ).getAMapNaviPaths(); if ( pathMap == null || pathMap.isEmpty() ) { return null; } @@ -219,7 +216,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { mSelectedCalculatePathItem = item; //wrapper.setStartBitmap( R.drawable.ic_navi_start ) // .setEndBitmap( R.drawable.ic_navi_target ); - mAMapNavi.selectRouteId( item.getId() ); + NaviClient.getInstance( mContext ).selectAMapRouteId( item.getId() ); Logger.d( TAG, "renderPathOverlay set default path" ); } wrapper.addToMap(); @@ -435,7 +432,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { @Override public void onItemClicked( String tagId ) { handleClickedPolyline( tagId ); - mAMapNavi.selectRouteId( getSelectedPathId() ); + NaviClient.getInstance( mContext ).selectAMapRouteId( getSelectedPathId() ); showBounds( mBoundRect ); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java index 788d0c81db..077ec59994 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/service/MogoMainService.java @@ -42,11 +42,11 @@ class MogoMainService extends Service implements IMogoLocationListener { Logger.d(TAG, "基本服务启动"); mServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(); initAndStartLocation(); - initGpsSimulatorListener(); UiThreadHandler.postDelayed(() -> { loadBaseModules(); startTanluService(); initADAS(); + initGpsSimulatorListener(); }, 2_000L ); } diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java index f9b9070d03..9602906ce0 100644 --- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java +++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/AutoNaviIntentHandler.java @@ -102,6 +102,9 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack { } ); } try { + if ( mWindowManagerView.isShowing() ) { + return; + } mWindowManagerView.show(); MogoWidgetManger.getInstance().getApis().getAnalyticsApi().track( "NAVI_button_show", null ); AIAssist.getInstance( context ).registerUnWakeupCommand( OPEN, new String[]{"切换到辅助驾驶模式"}, this ); @@ -159,6 +162,7 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack { @Override public void onCmdSelected( String cmd ) { if ( TextUtils.equals( OPEN, cmd ) ) { + Logger.d(TAG, "recognized open command."); enterApp( AbsMogoApplication.getApp() ); } } From 7ab8ef4147b5368ae7611617dcd89ff91aaf41e1 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Aug 2020 17:40:44 +0800 Subject: [PATCH 05/22] fix bug of NPE --- .../authorize/authprovider/launcher/MogoMainAuthorize.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt index 964594e655..a8102b84ad 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt @@ -74,6 +74,10 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog } private fun pushLayoutToMainWindow(tag: String) { + if(mContext == null){ + Logger.d(TAG, "Because of mContext has no init, the application has in background now") + return + } if (authorizeDialog == null) { authorizeDialog = AuthorizeDialog(tag, mContext!!) authorizeDialog!!.setOnDismissListener { From bb97b71eb258f5b59ecb70e4c04f4d6a00aef85c Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 25 Aug 2020 19:38:42 +0800 Subject: [PATCH 06/22] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=EF=BC=9A=E6=8B=A5=E5=A0=B5=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/share/StrategyShareProvider.kt | 7 +++ .../mogo/module/share/net/ShareApiService.kt | 6 ++ .../share/strategyreceiver/BlockStrategy.kt | 63 +++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt index eb49f7af20..bb7a0e59c2 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt @@ -7,6 +7,7 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.module.share.constant.ACCIDENT_STRATEGY_SHARE_PUSH_TYPE import com.mogo.module.share.constant.S_TAG import com.mogo.module.share.strategyreceiver.AccidentStrategyReceiver +import com.mogo.module.share.strategyreceiver.BlockStrategy import com.mogo.service.IMogoServiceApis import com.mogo.service.MogoServicePaths import com.mogo.utils.logger.Logger @@ -18,10 +19,16 @@ import com.mogo.utils.logger.Logger */ @Route(path = MogoServicePaths.PATH_STRATEGY_SHARE) class StrategyShareProvider : IProvider { + private lateinit var blockStrategy: BlockStrategy override fun init(context: Context?) { Logger.d(S_TAG, "策略上报Provider初始化====") val apis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis + blockStrategy = BlockStrategy(apis) // 注册事故 apis.getSocketManagerApi(context).registerOnMessageListener(ACCIDENT_STRATEGY_SHARE_PUSH_TYPE, AccidentStrategyReceiver(apis)) + apis.registerCenterApi.registerMogoLocationListener(MogoServicePaths.PATH_STRATEGY_SHARE){ + Logger.d(S_TAG,"定位发生变化,准备记录速度: ${it.speed}") + blockStrategy.recordSpeed(it.speed) + } } } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt index 1db5feccf8..454111f885 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt @@ -14,4 +14,10 @@ interface ShareApiService { @FormUrlEncoded @POST("/yycp-realtimeLocations/vehicleTypeManage/car/updateVehicleType/v1") fun sendHelpSignal(@FieldMap param: Map): Observable + + /** + * 拥堵策略,上报平均速度 + */ + @POST("") + fun sendAverageSpeedForBlockStrategy(@FieldMap param:Map):Observable } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt new file mode 100644 index 0000000000..125ebab3b6 --- /dev/null +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt @@ -0,0 +1,63 @@ +package com.mogo.module.share.strategyreceiver + +import android.os.SystemClock +import android.util.ArrayMap +import com.mogo.module.share.constant.HttpConstant +import com.mogo.module.share.net.ShareApiService +import com.mogo.service.IMogoServiceApis +import com.mogo.service.network.IMogoNetwork +import com.mogo.service.tanlu.IMogoTanluProvider +import com.mogo.service.tanlu.TanluUploadParams +import com.mogo.utils.logger.Logger + + +/** + * 速度记录间隔,单位是毫秒 + */ +private const val SPEED_RECORD_TIME_INTERVAL = 2 * 60 * 1000L +private const val TAG = "BlockUploadStrategy" +/** + * 用于计算拥堵策略 + */ +class BlockStrategy(private val apis:IMogoServiceApis) { + private var startRecordTime: Long = 0 + private var speedCacheList = ArrayList() + + /** + * 拥堵速度计算上报策略 + * 计算[SPEED_RECORD_TIME_INTERVAL]内的平均速度,并上报 + * @param speed 当前速度,单位需要是Km/h + */ + fun recordSpeed(speed: Float) { + val current = SystemClock.uptimeMillis() + if (startRecordTime == 0L) { + // 数据初始化 + startRecordTime = current + speedCacheList.clear() + } + + speedCacheList.add(speed) + + if (current - startRecordTime >= SPEED_RECORD_TIME_INTERVAL) { + // 到达时间限制,上报速度,数据清空 + var sum = 0F + speedCacheList.forEach { + sum += it + } + val ave = sum / speedCacheList.size + Logger.d(TAG, "平均速度为: $ave") + // 上报平均速度 + uploadAverageSpeed(ave) + } + } + + private fun uploadAverageSpeed(average: Float) { + val params = ArrayMap() + params["aveSpeed"] = average.toString() + val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(params).subscribe { + // todo 收到服务端回调,视情况进行视频上报 + val p = TanluUploadParams(IMogoTanluProvider.TYPE_BLOCK, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_BLOCK_AUTO) + apis.tanluApi.uploadRoadCondition(p) + } + } +} \ No newline at end of file From af819a4241cf4162618d4caafa20a5b6ae609808 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 25 Aug 2020 20:45:33 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8B=A5=E5=A0=B5?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../share/strategyreceiver/BlockStrategy.kt | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt index 125ebab3b6..ff0e58de14 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt @@ -5,7 +5,6 @@ import android.util.ArrayMap import com.mogo.module.share.constant.HttpConstant import com.mogo.module.share.net.ShareApiService import com.mogo.service.IMogoServiceApis -import com.mogo.service.network.IMogoNetwork import com.mogo.service.tanlu.IMogoTanluProvider import com.mogo.service.tanlu.TanluUploadParams import com.mogo.utils.logger.Logger @@ -15,17 +14,35 @@ import com.mogo.utils.logger.Logger * 速度记录间隔,单位是毫秒 */ private const val SPEED_RECORD_TIME_INTERVAL = 2 * 60 * 1000L + +/** + * 停车标志位阈值,单位是次,两秒一次 + */ +private const val STOP_FLAG_THRESHOLD = 30 private const val TAG = "BlockUploadStrategy" + /** * 用于计算拥堵策略 */ -class BlockStrategy(private val apis:IMogoServiceApis) { +class BlockStrategy(private val apis: IMogoServiceApis) { private var startRecordTime: Long = 0 private var speedCacheList = ArrayList() + /** + * 停车标志位,当速度为0时加1,超过[STOP_FLAG_THRESHOLD]判定为停车,不认为是拥堵,这组数据无效 + */ + private var stopFlag = 0 + /** * 拥堵速度计算上报策略 * 计算[SPEED_RECORD_TIME_INTERVAL]内的平均速度,并上报 + * + * 定义的此方法是每两秒钟调用一次, 两分钟为一段进行计算 |--两分钟--|--两分钟--|--两分钟--| + * + * 里面有一个小策略,使用了一个停车标志位,如果速度为0,停车标志位加一,一个两分钟时间段内, + * 停车标志为累加超过[STOP_FLAG_THRESHOLD]判定为停车,不是拥堵,舍弃掉整个两分钟数据,不进行上报, + * 否则上报服务端,返回是否抓取视频 + * * @param speed 当前速度,单位需要是Km/h */ fun recordSpeed(speed: Float) { @@ -33,21 +50,32 @@ class BlockStrategy(private val apis:IMogoServiceApis) { if (startRecordTime == 0L) { // 数据初始化 startRecordTime = current + stopFlag = 0 speedCacheList.clear() } speedCacheList.add(speed) + if (speed == 0F) { + stopFlag++ + }else{ + stopFlag = 0 + } + if (current - startRecordTime >= SPEED_RECORD_TIME_INTERVAL) { // 到达时间限制,上报速度,数据清空 - var sum = 0F - speedCacheList.forEach { - sum += it + if(stopFlag < STOP_FLAG_THRESHOLD) { + // 停车标志位小于阈值,判定不是停车,计算平均值,进行上报 + var sum = 0F + speedCacheList.forEach { + sum += it + } + val ave = sum / speedCacheList.size + Logger.d(TAG, "平均速度为: $ave") + // 上报平均速度 + uploadAverageSpeed(ave) } - val ave = sum / speedCacheList.size - Logger.d(TAG, "平均速度为: $ave") - // 上报平均速度 - uploadAverageSpeed(ave) + startRecordTime = 0 } } From 90f28c1d11be012714af8ff58178ff66db79e4c4 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 26 Aug 2020 14:19:37 +0800 Subject: [PATCH 08/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BE=BF=E4=BA=8E?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=EF=BC=8C=E8=BF=98=E8=A6=81=E6=94=B9=E5=9B=9E?= =?UTF-8?q?=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/service/launchercard/LauncherCardRefresher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 57c9669bbd..f517eaed1f 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -137,7 +137,7 @@ class LauncherCardRefresher { new LauncherCardRefreshStrategy( 3 * ONE_MINUTE, new LauncherCardRefreshStrategy( - 20 * ONE_MINUTE, + 5 * ONE_MINUTE, null, MSG_REFRESH ), MSG_REFRESH ), From 43a7b54fa6b03509476f2ffa95e83f537d2eb583 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 26 Aug 2020 16:00:03 +0800 Subject: [PATCH 09/22] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=92=AD=E6=8A=A5?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BA3=E5=88=86=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../launchercard/LauncherCardRefresher.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index f517eaed1f..962b759127 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -64,6 +64,8 @@ class LauncherCardRefresher { public static final int MSG_REFRESH_ADVERTISEMENT = 2022; // 开始刷新广告数据 public static final int MSG_START_REFRESH_ADVERTISEMENT = 2023; + // 默认播报 + public static final int MSG_START_LOOP_DEFAULT_CARD = 2024; public static final long ONE_MINUTE = 60 * 1000L; public static final long ONE_DAY = 24 * 60 * ONE_MINUTE; private String mLaunchTTSText; @@ -116,6 +118,9 @@ class LauncherCardRefresher { mRefreshStrategy = mRefreshStrategy.getNext(); restart(); break; + case MSG_START_LOOP_DEFAULT_CARD: + renderDefaultLauncherCardConfig(); + break; case MSG_REFRESH_ADVERTISEMENT: int index = msg.arg1;// 当前广告索引 loopRenderAdvertisements( index ); @@ -403,13 +408,21 @@ class LauncherCardRefresher { * 开始按策略展示广告 */ private void startLoopRenderAdvertisements() { - if ( mAdvertisements == null || mAdvertisements.isEmpty() ) { - return; - } Message msg = Message.obtain(); - msg.what = MSG_REFRESH_ADVERTISEMENT; - msg.arg1 = 0; - mHandler.sendMessage( msg ); + if ( mAdvertisements == null || mAdvertisements.isEmpty() ) { + msg.what = MSG_START_LOOP_DEFAULT_CARD; + mHandler.sendMessageDelayed( msg, 3 * ONE_MINUTE ); + } else { + try { + LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement = mAdvertisements.get( 0 ); + msg.what = MSG_REFRESH_ADVERTISEMENT; + msg.arg1 = 1; + mHandler.sendMessageDelayed( msg, advertisement.popupNum * ONE_MINUTE ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + } private void loopRenderAdvertisements( int index ) { From 999b59fed7d25374f694f16ee6bd3cfe5d2aacef Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 26 Aug 2020 16:24:08 +0800 Subject: [PATCH 10/22] =?UTF-8?q?=E6=80=9D=E5=BF=85=E9=A9=B0=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E9=81=93=E8=B7=AF=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E5=85=8D=E5=94=A4=E9=86=92=E8=BD=AC=E5=94=A4=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../com/mogo/launcher/MogoApplication.java | 2 +- .../com/mogo/module/main/SchemeIntent.java | 16 ++ .../com/mogo/module/share/ShareControl.java | 35 +--- .../module/share/StrategyShareProvider.kt | 2 +- .../module/share/constant/ShareConstants.java | 3 +- .../share/strategyreceiver/BlockStrategy.kt | 2 + modules/mogo-module-tanlu/build.gradle | 22 ++- .../module/tanlu/constant/TanluConstants.java | 5 +- .../tanlu/fragment/TanluCardViewProvider.java | 86 +++------- .../tanlu/fragment/TanluListWindow.java | 161 ++++++++++-------- .../com/mogo/service/IMogoServiceApis.java | 6 + .../com/mogo/service/MogoServicePaths.java | 6 + .../service/tanlu/IMogoTanluUiProvider.java | 19 +++ .../mogo/service/impl/MogoServiceApis.java | 6 + 15 files changed, 204 insertions(+), 169 deletions(-) create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/tanlu/IMogoTanluUiProvider.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 21e99e2dc0..cd77a1f062 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 6c241e16fd..36b3f3b139 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -68,7 +68,7 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) ); } MogoModulePaths.addModule( new MogoModule( TanluApiConst.MODULE_PATH, TanluApiConst.MODULE_NAME ) ); - MogoModulePaths.addModule( new MogoModule( TanluConstants.TAG, TanluConstants.MODEL_NAME ) ); + MogoModulePaths.addBaseModule( new MogoModule( TanluConstants.TAG, TanluConstants.MODEL_NAME ) ); MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SHARE, "ShareControl" ) ); MogoModulePaths.addModule( new MogoModule( LeftPanelConst.PATH_NAME, LeftPanelConst.MODULE_NAME ) ); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java index c0ce50ba8b..d8e6e15f60 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java @@ -37,6 +37,8 @@ public class SchemeIntent implements IMogoStatusChangedListener { public static final String TYPE_NAVI = "navi"; + public static final String TYPE_SEARCH_ROAD_CONDITION = "search-road-condition"; + public static final String TYPE_LAUNCH = "launch"; private IMogoServiceApis mApis; @@ -122,10 +124,24 @@ public class SchemeIntent implements IMogoStatusChangedListener { case TYPE_LAUNCH: handleLaunchIntent( target ); break; + case TYPE_SEARCH_ROAD_CONDITION: + handleSearchRoadCondition(target); + break; + default: + break; } } + private void handleSearchRoadCondition(Uri target) { + if (mApis == null) { + return; + } + mApis.getTanluUiApi().searchRoadCondition(target.getQueryParameter("intentStr"), + target.getQueryParameter("data"), target.getQueryParameter("city"), + target.getQueryParameter("keywords")); + } + private void handleSwitchCardIntent( String type ) { CardSwitchLiveData.getInstance().postValue( new CardInfo( type, true ) ); } 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 5d78e207c2..cd1ec6fa3b 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 @@ -185,42 +185,16 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo intentManager.registerIntentListener(VOICE_CMD_NO_REPLY_SHARE_DIALOG_CLOSE, this); intentManager.registerIntentListener(UNWAKE_UPLOAD_ROAD_CONDITION, this); - // 免唤醒词注册 -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_BLOCK, -// CMD_UPLOAD_BLOCK, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_TRAFFIC_CHECK, -// CMD_TRAFFIC_CHECK, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CLOSURE, -// CMD_ROAD_CLOSURE, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_CANCEL_SHARE, -// CMD_CANCEL_SHARE, this); -// if (DebugConfig.getAIType() == DebugConfig.AI_TYPE_TXZ) { -// // 使用同行者语义你的话,增加如下免唤醒词 -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ACCIDENT, -// CMD_UPLOAD_ACCIDENT, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC, -// UPLOAD_REAL_TIME_TRAFFIC, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_SEEK_HELP, -// UPLOAD_SEEK_HELP, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_STAGNANT_WATER, -// UPLOAD_STAGNANT_WATER, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_ICY, -// UPLOAD_ROAD_ICY, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_DENSE_FOG, -// UPLOAD_DENSE_FOG, this); -// AIAssist.getInstance(context).registerUnWakeupCommand(UNWAKE_UPLOAD_ROAD_CONSTRUCTION, -// UPLOAD_ROAD_CONSTRUCTION, this); -// } + // 免唤醒词注册,全局免唤醒 + AIAssist.getInstance(mContext).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC, + UPLOAD_REAL_TIME_TRAFFIC, ShareControl.this); + if(!DebugConfig.isLauncher()) { ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() { @Override public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { if (!isTrue) { - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC,ShareControl.this); dismissShareDialog(); - }else{ - AIAssist.getInstance(mContext).registerUnWakeupCommand(UNWAKE_UPLOAD_REAL_TIME_TRAFFIC, - UPLOAD_REAL_TIME_TRAFFIC, ShareControl.this); } } }); @@ -389,6 +363,7 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo default: break; } + break; case VOICE_CMD_PUB_ROAD_CONDITION: String obCondition = new JSONObject(intent.getStringExtra("data")).opt("obj").toString(); diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt index bb7a0e59c2..0d2d07744c 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt @@ -27,7 +27,7 @@ class StrategyShareProvider : IProvider { // 注册事故 apis.getSocketManagerApi(context).registerOnMessageListener(ACCIDENT_STRATEGY_SHARE_PUSH_TYPE, AccidentStrategyReceiver(apis)) apis.registerCenterApi.registerMogoLocationListener(MogoServicePaths.PATH_STRATEGY_SHARE){ - Logger.d(S_TAG,"定位发生变化,准备记录速度: ${it.speed}") +// Logger.d(S_TAG,"定位发生变化,准备记录速度: ${it.speed}") blockStrategy.recordSpeed(it.speed) } } 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 242ce5b7b4..580a25a8f4 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 @@ -80,6 +80,5 @@ public class ShareConstants { /** * 这个是实时路况,不是拥堵,拥堵放在了extention模块里面处理 */ - public static final String VOICE_CMD_PUB_ROAD_CONDITION = "com.zhidao.pathfinder.report" + - ".roadCondition"; + public static final String VOICE_CMD_PUB_ROAD_CONDITION = "com.zhidao.pathfinder.report.roadCondition"; } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt index ff0e58de14..9ca3f12001 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt @@ -74,6 +74,8 @@ class BlockStrategy(private val apis: IMogoServiceApis) { Logger.d(TAG, "平均速度为: $ave") // 上报平均速度 uploadAverageSpeed(ave) + }else{ + Logger.d(TAG,"判定为停车,不进行上报") } startRecordTime = 0 } diff --git a/modules/mogo-module-tanlu/build.gradle b/modules/mogo-module-tanlu/build.gradle index fb48f1e204..c1b444cdc9 100644 --- a/modules/mogo-module-tanlu/build.gradle +++ b/modules/mogo-module-tanlu/build.gradle @@ -51,13 +51,21 @@ dependencies { implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.rxandroid - - compileOnly rootProject.ext.dependencies.mogomap - compileOnly rootProject.ext.dependencies.mogoutils - compileOnly rootProject.ext.dependencies.mogocommons - compileOnly rootProject.ext.dependencies.mogoserviceapi - compileOnly rootProject.ext.dependencies.modulecommon - compileOnly rootProject.ext.dependencies.moduleshare + if (Boolean.valueOf(RELEASE)) { + compileOnly rootProject.ext.dependencies.mogomap + compileOnly rootProject.ext.dependencies.mogoutils + compileOnly rootProject.ext.dependencies.mogocommons + compileOnly rootProject.ext.dependencies.mogoserviceapi + compileOnly rootProject.ext.dependencies.modulecommon + compileOnly rootProject.ext.dependencies.moduleshare + }else{ + compileOnly project(":libraries:mogo-map") + compileOnly project(":foudations:mogo-utils") + compileOnly project(":foudations:mogo-commons") + compileOnly project(":services:mogo-service-api") + compileOnly project(":modules:mogo-module-common") + compileOnly project(":modules:mogo-module-share") + } compileOnly rootProject.ext.dependencies.carcallprovider implementation rootProject.ext.dependencies.videoarmv7 diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java index a033351035..9f3d7c34ae 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java @@ -64,7 +64,10 @@ public class TanluConstants { //打开探路 唤醒 public static final String OPEN_ROADCONDITION_AWAKE_COMMAND = "system.application.operation"; - //xx堵不堵 唤醒 + // 同行者 xx堵不堵 唤醒 + public static final String TXZ_SPECIFIEDROAD_SEARCH = "com.zhidao.roadcondition.roadinfo"; + + //思必驰 xx堵不堵 唤醒 public static final String SPECIFIEDROAD_SEARCH = "com.zhidao.pathfinder.specifiedroad.search"; //播放 免唤醒 public static final String PLAY_VIDEO = "com.zhidao.tanlu.play"; diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java index bf34e2ba13..9823abb814 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java @@ -1,6 +1,7 @@ package com.mogo.module.tanlu.fragment; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.view.View; @@ -16,8 +17,17 @@ import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.ModuleType; import com.mogo.module.tanlu.constant.TanluConstants; +import com.mogo.service.tanlu.IMogoTanluUiProvider; import com.mogo.utils.logger.Logger; +import io.reactivex.Single; +import io.reactivex.SingleEmitter; +import io.reactivex.SingleOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; + /** * @author congtaowang * @since 2019-12-24 @@ -25,77 +35,35 @@ import com.mogo.utils.logger.Logger; * 描述 */ @Route( path = TanluConstants.TAG ) -public class TanluCardViewProvider implements IMogoModuleProvider { +public class TanluCardViewProvider implements IMogoTanluUiProvider { private static final String TAG = "TanluCardViewProvider"; - private TanluCardViewFragment fragment; - - @Override - public Fragment createFragment( Context context, Bundle data ) { - fragment = new TanluCardViewFragment(); - fragment.setArguments( data ); - Logger.i( TAG, "createFragment" ); - return fragment; - } + private TanluListWindow tanluListWindow; @Override public void init( Context context ) { Logger.d(TAG, "init --------------> 1"); TanluServiceManager.init( context ); TanluServiceManager.getDataManager().registerDataListener( TanluConstants.MODEL_NAME, DataSetChangedAdapter.getInstance() ); - TanluListWindow tanluListWindow = new TanluListWindow(context); + tanluListWindow = new TanluListWindow(context); tanluListWindow.initWindow(); } @Override - public String getModuleName() { - return "CARD_TYPE_ROAD_CONDITION"; - } - - @Override - public IMogoModuleLifecycle getCardLifecycle() { - return fragment; - } - - @Override - public View createView( Context context ) { - // don't - return null; - } - - @Override - public IMogoMapListener getMapListener() { - return fragment; - } - - @Override - public int getType() { - return ModuleType.TYPE_CARD_FRAGMENT; - } - - @Override - public IMogoNaviListener getNaviListener() { - return null; - } - - @Override - public IMogoLocationListener getLocationListener() { - return fragment; - } - - @Override - public IMogoMarkerClickListener getMarkerClickListener() { - return null; - } - - @Override - public String getAppPackage() { - return ""; - } - - @Override - public String getAppName() { - return "探路"; + public void searchRoadCondition(String intentStr, String data, String city, String keywords) { + Disposable disposable = Single.create((SingleOnSubscribe) emitter -> { + Logger.d(TAG, "searchRoadCondition---> intentStr: " + intentStr + " data: " + data + " " + + "city: " + city + " keywords: " + keywords); + Intent intent = new Intent(intentStr); + intent.putExtra("data", data); + intent.putExtra("city", city); + intent.putExtra("keywords", keywords); + Thread.sleep(3000); + emitter.onSuccess(intent); + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(intent -> { + Logger.d(TAG, "searchRoadCondition---go real share"); + tanluListWindow.realShare(intentStr, intent); + }); } } diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java index 6440669f53..792707484c 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Rect; +import android.net.Uri; import android.os.CountDownTimer; import android.os.Handler; import android.text.TextUtils; @@ -117,6 +118,7 @@ import static com.mogo.module.tanlu.constant.ConstKt.VOICE_COMMAND_QUERY_ROAD_CL import static com.mogo.module.tanlu.constant.ConstKt.VOICE_COMMAND_QUERY_TRAFFIC_CHECK; import static com.mogo.module.tanlu.constant.TanluConstants.PLAY_VIDEO_AWAKEN; import static com.mogo.module.tanlu.constant.TanluConstants.SPECIFIEDROAD_SEARCH; +import static com.mogo.module.tanlu.constant.TanluConstants.TXZ_SPECIFIEDROAD_SEARCH; import static com.mogo.module.tanlu.video.VideoInitKt.initVideo; /** @@ -477,6 +479,9 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL */ private void initListener() { if (mogoIntentManager != null) { + // 同行者 xxx堵不堵唤醒词语音注册 + mogoIntentManager.registerIntentListener(TXZ_SPECIFIEDROAD_SEARCH,mogoIntentListener); + // 通用唤醒词语音注册 mogoIntentManager.registerIntentListener(SPECIFIEDROAD_SEARCH, mogoIntentListener); mogoIntentManager.registerIntentListener(PLAY_VIDEO_AWAKEN, mogoIntentListener); mogoIntentManager.registerIntentListener(VOICE_COMMAND_QUERY_TRAFFIC_CHECK, mogoIntentListener); @@ -497,75 +502,97 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL /** * 唤醒语音 */ - private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() { - @Override - public void onIntentReceived(String intentStr, Intent intent) { - String data = intent.getStringExtra("data"); - Logger.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data); - VoiceCmdData voiceData = null; - switch (intentStr) { - case VOICE_COMMAND_QUERY_TRAFFIC_CHECK: - // 搜索交通检查 - Logger.d(TAG, "搜索交通检查"); - voiceData = Utils.parseTOVoiceCmdData(data); - voiceData.setObj(TYPE_NAME_TRAFFIC_CHECK); - break; - case VOICE_COMMAND_QUERY_ROAD_CLOSED: - // 搜索封路 - Logger.d(TAG, "搜索封路"); - voiceData = Utils.parseTOVoiceCmdData(data); - voiceData.setLocation(voiceData.getObj()); - voiceData.setObj(TYPE_NAME_CLOSURE); - break; - case SPECIFIEDROAD_SEARCH: - // 拥堵和路况 - Logger.d(TAG, "拥堵和路况"); - voiceData = Utils.parseTOVoiceCmdData(data); - voiceData.setObj(TYPE_NAME_BLOCK); - break; - case VOICE_COMMAND_NOVELTY_QUERY: - Logger.d(TAG, "其他"); - voiceData = Utils.parseTOVoiceCmdData(data); - break; - case PLAY_VIDEO_AWAKEN: - Logger.d(TAG, "mogoIntentListener 播放路况 唤醒 ----> "); - delayTime(); - break; - default: - break; - } - - if (voiceData != null) { - mTanluModelData.queryRodeInfo(voiceData, new RoadInfoCallback() { - @Override - public void onQueryRoadInfoSuccess(@NotNull List roadInfoList) { - if (roadInfoList == null || (roadInfoList != null && roadInfoList.size() <= 0)) { - speakFailVoice("未找到其他车主分享的路况信息"); - moveToMarcker(currentLat, currentLon); - return; - } - Logger.d(TAG, "onQueryRoadInfoSuccess roadInfoList.size() = " + roadInfoList.size() - + " >>currentLat = " + currentLat + " -->currentLon = " + currentLon); - initData(null, (List) roadInfoList); - addMarkersAction((List) roadInfoList, currentLat, currentLon); - } - - @Override - public void onQueryRoadInfoFail(@NotNull String msg, int code) { - Logger.e(TAG, "onQueryRoadInfoFail ----- msg = " + msg); - speakFailVoice(searchfaileVoiceStrings[2]); - } - - @Override - public void onLocatSuccess(double lat, double lon) { - currentLat = lat; - currentLon = lon; - } - }); - } + private IMogoIntentListener mogoIntentListener = (intentStr, intent) -> { + if (TanluServiceManager.getMogoStatusManager().isMainPageOnResume()) { + // 直接执行相关查询操作 + Logger.d(TAG, "智慧出行在前台,可直接分享--->"); + realShare(intentStr, intent); + }else{ + // 需要打开智慧驾驶,然后执行操作 + Logger.d(TAG, "智慧出行没在前台,需要打开 --->"); + intent.setAction(Intent.ACTION_VIEW); + String data = intent.getStringExtra("data") == null ? "" : intent.getStringExtra("data"); + String city = intent.getStringExtra("city") == null ? "" : intent.getStringExtra("city"); + String keywords = intent.getStringExtra("keywords") == null ? "" : intent.getStringExtra("keywords"); + intent.setData(Uri.parse("mogo://launcher/main/switch2?type=search-road-condition" + + "&intentStr=" + intentStr + "&data=" + data + "&city=" + city + "&keywords=" + keywords)); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); } }; + public void realShare(String intentStr, Intent intent){ + String data = intent.getStringExtra("data"); + Logger.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data); + VoiceCmdData voiceData = null; + switch (intentStr) { + case VOICE_COMMAND_QUERY_TRAFFIC_CHECK: + // 搜索交通检查 + Logger.d(TAG, "搜索交通检查"); + voiceData = Utils.parseTOVoiceCmdData(data); + voiceData.setObj(TYPE_NAME_TRAFFIC_CHECK); + break; + case VOICE_COMMAND_QUERY_ROAD_CLOSED: + // 搜索封路 + Logger.d(TAG, "搜索封路"); + voiceData = Utils.parseTOVoiceCmdData(data); + voiceData.setLocation(voiceData.getObj()); + voiceData.setObj(TYPE_NAME_CLOSURE); + break; + case SPECIFIEDROAD_SEARCH: + // 拥堵和路况 + Logger.d(TAG, "拥堵和路况"); + voiceData = Utils.parseTOVoiceCmdData(data); + voiceData.setObj(TYPE_NAME_BLOCK); + break; + case VOICE_COMMAND_NOVELTY_QUERY: + Logger.d(TAG, "其他"); + voiceData = Utils.parseTOVoiceCmdData(data); + break; + case PLAY_VIDEO_AWAKEN: + Logger.d(TAG, "mogoIntentListener 播放路况 唤醒 ----> "); + delayTime(); + break; + case TXZ_SPECIFIEDROAD_SEARCH: + Logger.d(TAG, "同行者--xx堵不堵--唤醒--->"); + String keyWords = intent.getStringExtra("keywords"); + String city = intent.getStringExtra("city"); + voiceData = new VoiceCmdData("", city + keyWords, TYPE_NAME_BLOCK); + break; + default: + break; + } + + if (voiceData != null) { + mTanluModelData.queryRodeInfo(voiceData, new RoadInfoCallback() { + @Override + public void onQueryRoadInfoSuccess(@NotNull List roadInfoList) { + if (roadInfoList == null || (roadInfoList != null && roadInfoList.size() <= 0)) { + speakFailVoice("未找到其他车主分享的路况信息"); + moveToMarcker(currentLat, currentLon); + return; + } + Logger.d(TAG, "onQueryRoadInfoSuccess roadInfoList.size() = " + roadInfoList.size() + + " >>currentLat = " + currentLat + " -->currentLon = " + currentLon); + initData(null, (List) roadInfoList); + addMarkersAction((List) roadInfoList, currentLat, currentLon); + } + + @Override + public void onQueryRoadInfoFail(@NotNull String msg, int code) { + Logger.e(TAG, "onQueryRoadInfoFail ----- msg = " + msg); + speakFailVoice(searchfaileVoiceStrings[2]); + } + + @Override + public void onLocatSuccess(double lat, double lon) { + currentLat = lat; + currentLon = lon; + } + }); + } + } + /** * 添加marker */ @@ -1058,7 +1085,7 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL if (!NetworkUtils.isConnected(getContext())) { //没有网络 TipToast.shortTip("分享失败,请检查网络"); - } else { + } else if(TanluServiceManager.getMogoStatusManager().isMainPageOnResume()) { float bearing = TanluServiceManager.getLocationClient().getLastKnowLocation().getBearing(); //角度 Logger.d(TAG, "onMarkerInfo event.type = " + event.type + " >>event.lat = " + event.lat + " >>event.lon = " + event.lon + " >>event.imageUrl =" + event.imageUrl); String poiType = event.type; diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index b349d857ce..a1f549ff81 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -32,6 +32,7 @@ import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; import com.mogo.service.tanlu.IMogoTanluProvider; +import com.mogo.service.tanlu.IMogoTanluUiProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; @@ -257,4 +258,9 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoMonitorProvider getMogoMonitorApi(); + /** + * 获取探路ui服务 + * @return + */ + IMogoTanluUiProvider getTanluUiApi(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java index f5a78c3c34..eb5523443f 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java @@ -244,4 +244,10 @@ public class MogoServicePaths { */ @Deprecated public static final String PATH_STRATEGY_SHARE = "/share/strategy"; + + /** + * 探路ui + */ + @Deprecated + public static final String PATH_TANLU_UI_API = "/tanlu/ui"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/tanlu/IMogoTanluUiProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/tanlu/IMogoTanluUiProvider.java new file mode 100644 index 0000000000..2d20ed3b98 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/tanlu/IMogoTanluUiProvider.java @@ -0,0 +1,19 @@ +package com.mogo.service.tanlu; + +import com.alibaba.android.arouter.facade.template.IProvider; + +/** + * 探路相关ui provider + * + * @author tongchenfei + */ +public interface IMogoTanluUiProvider extends IProvider { + /** + * 搜索道路事件接口,当前只在应用在后台时,收到搜索相关唤醒词指令,需跳转前台时使用 + * @param intentStr action + * @param data 思必驰相关事件 + * @param city 同行者-xx堵不堵-北京 + * @param keywords 同行者-xx堵不堵-中关村 + */ + void searchRoadCondition(String intentStr, String data, String city, String keywords); +} diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index 08b9f47901..223df257fa 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -40,6 +40,7 @@ import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; import com.mogo.service.tanlu.IMogoTanluProvider; +import com.mogo.service.tanlu.IMogoTanluUiProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; import com.mogo.utils.logger.Logger; @@ -218,6 +219,11 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance(IMogoMonitorProvider.class,MogoServicePaths.PATH_MOGO_MONITOR); } + @Override + public IMogoTanluUiProvider getTanluUiApi(){ + return getApiInstance(IMogoTanluUiProvider.class, MogoServicePaths.PATH_TANLU_UI_API); + } + private static < T extends IProvider > T getApiInstance(Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) { From f5a2ebc38469848fc5281e348918d256e4805e3e Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 26 Aug 2020 17:02:21 +0800 Subject: [PATCH 11/22] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E6=92=AD=E6=8A=A5=E4=B8=BA10=E5=88=86=E9=92=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/service/launchercard/LauncherCardRefresher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 962b759127..4a770d61bb 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -170,7 +170,7 @@ class LauncherCardRefresher { int counter = SharedPrefsMgr.getInstance( mContext ).getInt( KEY_LauncherCardTipCounter, 0 ); if ( counter >= 5 ) { long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L ); - if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_DAY ) { + if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_MINUTE ) { stop(); return; } else { From 49a0ce8627bcfbd96fe15a6961d3ae1d94b6765e Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 26 Aug 2020 19:11:04 +0800 Subject: [PATCH 12/22] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8B=A5=E5=A0=B5?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=B8=8A=E6=8A=A5=E6=8E=A5=E5=8F=A3=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/share/StrategyShareProvider.kt | 7 ++-- .../module/share/bean/AverateSpeedResponse.kt | 6 +++ .../share/constant/StrategyShareConst.kt | 4 ++ .../mogo/module/share/net/ShareApiService.kt | 5 ++- .../AccidentStrategyPushWrapper.kt | 19 ++++++++- .../AccidentStrategyReceiver.kt | 16 ++++++-- .../share/strategyreceiver/BlockStrategy.kt | 40 ++++++++++++++----- 7 files changed, 76 insertions(+), 21 deletions(-) create mode 100644 modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt index 0d2d07744c..b0e1973ec9 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/StrategyShareProvider.kt @@ -20,15 +20,16 @@ import com.mogo.utils.logger.Logger @Route(path = MogoServicePaths.PATH_STRATEGY_SHARE) class StrategyShareProvider : IProvider { private lateinit var blockStrategy: BlockStrategy - override fun init(context: Context?) { + override fun init(context: Context) { Logger.d(S_TAG, "策略上报Provider初始化====") val apis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis - blockStrategy = BlockStrategy(apis) + blockStrategy = BlockStrategy(context, apis) // 注册事故 apis.getSocketManagerApi(context).registerOnMessageListener(ACCIDENT_STRATEGY_SHARE_PUSH_TYPE, AccidentStrategyReceiver(apis)) apis.registerCenterApi.registerMogoLocationListener(MogoServicePaths.PATH_STRATEGY_SHARE){ // Logger.d(S_TAG,"定位发生变化,准备记录速度: ${it.speed}") - blockStrategy.recordSpeed(it.speed) + + blockStrategy.recordSpeed(it.speed * 3.6F) } } } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt new file mode 100644 index 0000000000..5f843cd862 --- /dev/null +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt @@ -0,0 +1,6 @@ +package com.mogo.module.share.bean + +import com.mogo.commons.data.BaseData + +data class AverateSpeedResponse(var result:Result):BaseData() +data class Result(var upload:Boolean) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt index 014701a56d..5866b734f9 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/StrategyShareConst.kt @@ -1,4 +1,8 @@ package com.mogo.module.share.constant const val S_TAG = "StrategyShare" + +/** + * 目前两个策略上报(事故,拥堵)都是走的这个push + */ const val ACCIDENT_STRATEGY_SHARE_PUSH_TYPE = 401013 \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt index 454111f885..c67c0c53c6 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt @@ -1,6 +1,7 @@ package com.mogo.module.share.net import com.mogo.commons.data.BaseData +import com.mogo.module.share.bean.AverateSpeedResponse import io.reactivex.Observable import retrofit2.http.* @@ -18,6 +19,6 @@ interface ShareApiService { /** * 拥堵策略,上报平均速度 */ - @POST("") - fun sendAverageSpeedForBlockStrategy(@FieldMap param:Map):Observable + @POST("/deva/car/path/no/poiStrategyCheck/v1") + fun sendAverageSpeedForBlockStrategy(@FieldMap param:Map):Observable } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt index 330c56f8cf..ec20e86046 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyPushWrapper.kt @@ -1,11 +1,26 @@ package com.mogo.module.share.strategyreceiver + + data class AccidentStrategyPushWrapper( /** - * 策略类型,1代表事故 + * 策略类型,[TYPE_ACCIDENT],[TYPE_BLOCK] */ val type: Int, /** * 触发点的事件id */ - val id: Long, val lat: Double, val lon: Double) + val id: Long, val lat: Double, val lon: Double){ + + companion object{ + /** + * 服务端下发push,通知收集事故视频 + */ + const val TYPE_ACCIDENT = 1 + + /** + * 服务端下发push,通知收集拥堵 + */ + const val TYPE_BLOCK = 2 + } +} diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt index 7ed36e0f56..242faf2381 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/AccidentStrategyReceiver.kt @@ -2,6 +2,8 @@ package com.mogo.module.share.strategyreceiver import com.mogo.map.MogoLatLng import com.mogo.module.share.constant.S_TAG +import com.mogo.module.share.strategyreceiver.AccidentStrategyPushWrapper.Companion.TYPE_ACCIDENT +import com.mogo.module.share.strategyreceiver.AccidentStrategyPushWrapper.Companion.TYPE_BLOCK import com.mogo.service.IMogoServiceApis import com.mogo.service.connection.IMogoOnMessageListener import com.mogo.service.tanlu.IMogoTanluProvider @@ -12,14 +14,22 @@ import com.mogo.utils.logger.Logger * 车辆经过事故事件,上报视频 * @author tong */ -class AccidentStrategyReceiver(private val apis: IMogoServiceApis):IMogoOnMessageListener { +class AccidentStrategyReceiver(private val apis: IMogoServiceApis) : IMogoOnMessageListener { override fun target(): Class = AccidentStrategyPushWrapper::class.java override fun onMsgReceived(obj: AccidentStrategyPushWrapper?) { obj?.let { Logger.d(S_TAG, "Accident strategy share onMessageReceived: $obj") - // 调用探路接口上报,现在只接入了事故事件上报这一种策略上报,所以poiType固定为TypeAccident - apis.tanluApi.uploadRoadCondition(TanluUploadParams(IMogoTanluProvider.TYPE_ACCIDENT, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO, it.id, MogoLatLng(it.lat, it.lon))) + when (obj.type) { + TYPE_ACCIDENT -> { + // 收集事故视频 + apis.tanluApi.uploadRoadCondition(TanluUploadParams(IMogoTanluProvider.TYPE_ACCIDENT, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO, it.id, MogoLatLng(it.lat, it.lon))) + } + TYPE_BLOCK -> { + // 收集拥堵视频 + apis.tanluApi.uploadRoadCondition(TanluUploadParams(IMogoTanluProvider.TYPE_BLOCK, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_CLOUD_CHECK, it.id, MogoLatLng(it.lat, it.lon))) + } + } } } } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt index 9ca3f12001..ccf5bd7020 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt @@ -1,13 +1,19 @@ package com.mogo.module.share.strategyreceiver +import android.content.Context import android.os.SystemClock import android.util.ArrayMap +import com.mogo.commons.network.SubscribeImpl +import com.mogo.map.MogoLatLng +import com.mogo.module.share.bean.AverateSpeedResponse import com.mogo.module.share.constant.HttpConstant +import com.mogo.module.share.manager.ServiceApisManager import com.mogo.module.share.net.ShareApiService import com.mogo.service.IMogoServiceApis import com.mogo.service.tanlu.IMogoTanluProvider import com.mogo.service.tanlu.TanluUploadParams import com.mogo.utils.logger.Logger +import com.mogo.utils.network.RequestOptions /** @@ -24,7 +30,7 @@ private const val TAG = "BlockUploadStrategy" /** * 用于计算拥堵策略 */ -class BlockStrategy(private val apis: IMogoServiceApis) { +class BlockStrategy(private val context: Context, private val apis: IMogoServiceApis) { private var startRecordTime: Long = 0 private var speedCacheList = ArrayList() @@ -58,13 +64,13 @@ class BlockStrategy(private val apis: IMogoServiceApis) { if (speed == 0F) { stopFlag++ - }else{ + } else { stopFlag = 0 } if (current - startRecordTime >= SPEED_RECORD_TIME_INTERVAL) { // 到达时间限制,上报速度,数据清空 - if(stopFlag < STOP_FLAG_THRESHOLD) { + if (stopFlag < STOP_FLAG_THRESHOLD) { // 停车标志位小于阈值,判定不是停车,计算平均值,进行上报 var sum = 0F speedCacheList.forEach { @@ -74,8 +80,8 @@ class BlockStrategy(private val apis: IMogoServiceApis) { Logger.d(TAG, "平均速度为: $ave") // 上报平均速度 uploadAverageSpeed(ave) - }else{ - Logger.d(TAG,"判定为停车,不进行上报") + } else { + Logger.d(TAG, "判定为停车,不进行上报") } startRecordTime = 0 } @@ -83,11 +89,23 @@ class BlockStrategy(private val apis: IMogoServiceApis) { private fun uploadAverageSpeed(average: Float) { val params = ArrayMap() - params["aveSpeed"] = average.toString() - val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(params).subscribe { - // todo 收到服务端回调,视情况进行视频上报 - val p = TanluUploadParams(IMogoTanluProvider.TYPE_BLOCK, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_BLOCK_AUTO) - apis.tanluApi.uploadRoadCondition(p) - } + params["speed"] = average.toString() + val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(params).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { + override fun onSuccess(response: AverateSpeedResponse?) { + super.onSuccess(response) + response?.let { + Logger.d(TAG, "收到服务端返回结果: $it") + // 收到服务端回调,视情况进行视频上报 + if (it.result.upload) { + val p = TanluUploadParams(IMogoTanluProvider.TYPE_BLOCK, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_BLOCK_AUTO) + val location = ServiceApisManager.serviceApis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation + val latLon = MogoLatLng(location.latitude, location.longitude) + p.location = latLon + apis.tanluApi.uploadRoadCondition(p) + } + } + } + + }) } } \ No newline at end of file From 010d9e767a12a06acf394a333e581b0c6cb7588f Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 26 Aug 2020 20:20:20 +0800 Subject: [PATCH 13/22] opt --- .../main/java/com/mogo/module/share/net/ShareApiService.kt | 4 +++- .../mogo/module/share/strategyreceiver/BlockStrategy.kt | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt index c67c0c53c6..88b2e6262d 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt @@ -3,6 +3,7 @@ package com.mogo.module.share.net import com.mogo.commons.data.BaseData import com.mogo.module.share.bean.AverateSpeedResponse import io.reactivex.Observable +import okhttp3.RequestBody import retrofit2.http.* /** @@ -19,6 +20,7 @@ interface ShareApiService { /** * 拥堵策略,上报平均速度 */ + @Headers("Content-type:application/json;charset=UTF-8") @POST("/deva/car/path/no/poiStrategyCheck/v1") - fun sendAverageSpeedForBlockStrategy(@FieldMap param:Map):Observable + fun sendAverageSpeedForBlockStrategy(@Body request:RequestBody):Observable } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt index ccf5bd7020..59a672b20a 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt @@ -14,6 +14,10 @@ import com.mogo.service.tanlu.IMogoTanluProvider import com.mogo.service.tanlu.TanluUploadParams import com.mogo.utils.logger.Logger import com.mogo.utils.network.RequestOptions +import com.mogo.utils.network.utils.GsonUtil +import io.reactivex.schedulers.Schedulers +import okhttp3.MediaType +import okhttp3.RequestBody /** @@ -90,7 +94,8 @@ class BlockStrategy(private val context: Context, private val apis: IMogoService private fun uploadAverageSpeed(average: Float) { val params = ArrayMap() params["speed"] = average.toString() - val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(params).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { + val body = RequestBody.create(MediaType.parse("Content-type:application/json;charset=UTF-8"), GsonUtil.jsonFromObject(params)) + val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(body).subscribeOn(Schedulers.io()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { override fun onSuccess(response: AverateSpeedResponse?) { super.onSuccess(response) response?.let { From f13c3298104cef0551dd820caca82e237e6f3965 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 26 Aug 2020 20:28:17 +0800 Subject: [PATCH 14/22] =?UTF-8?q?=E7=AD=96=E7=95=A5=E4=B8=8A=E6=8A=A5=20?= =?UTF-8?q?=E4=BA=8B=E6=95=85=E5=92=8C=E6=8B=A5=E5=A0=B5=20=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E5=8F=82=E6=95=B0=E4=B8=ADisCustom=3Dfalse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zhidao/roadcondition/service/MainService.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt index 70e1074285..15a67e4a3b 100644 --- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt +++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/MainService.kt @@ -98,10 +98,11 @@ class MainService : Service() { || shareType == TANLU_ROAD_ACCIDENT || shareType == TANLU_ROAD_WORK ) { // takePhoto(1, false, true) - if (fromType != UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO) { // 是策略触发,不提示 - takeVideo(it.duration, isCustom = true, id = id) - } else { + if (fromType == UPLOAD_FROM_STRATEGY_ACCIDENT_AUTO || fromType == UPLOAD_FROM_STRATEGY_BLOCK_AUTO) { + // 如果是策略上报,isCustom = false takeVideo(it.duration) + } else { + takeVideo(it.duration, isCustom = true, id = id) } } } From 011f9ee7aa5931fd5f40b29ac359179704c82693 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 27 Aug 2020 11:37:55 +0800 Subject: [PATCH 15/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=92=AD=E6=8A=A5/=E5=90=8E=E5=8F=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=92=AD=E6=8A=A5=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../launchercard/LauncherCardRefresher.java | 56 +++++++++++++------ 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 4a770d61bb..283006d91f 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -72,6 +72,11 @@ class LauncherCardRefresher { private LauncherCardAdvertisementData.LauncherCardAdvertisement mDefaultLauncherCardConfig; private List< LauncherCardAdvertisementData.LauncherCardAdvertisement > mAdvertisements; + /** + * 默认播报/后台配置播报次数限制 + */ + private int mDefaultConfigCounter = 0; + private LauncherCardRefresher( Context context ) { mContext = context; mRefreshModel = new RefreshModel( mContext ); @@ -161,36 +166,24 @@ class LauncherCardRefresher { startExplorerWayStrategy(); // 延时一分钟加载数据,已保证accOn之后网络恢复正常 mHandler.sendEmptyMessageDelayed( MSG_START_REFRESH_ADVERTISEMENT, ONE_MINUTE ); + mDefaultConfigCounter = 0; } /** * 道路事件和车友播报 */ private void startExplorerWayStrategy() { - int counter = SharedPrefsMgr.getInstance( mContext ).getInt( KEY_LauncherCardTipCounter, 0 ); - if ( counter >= 5 ) { - long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L ); - if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_MINUTE ) { - stop(); - return; - } else { - SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, 0 ); - counter = 0; - SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, 0L ); - } - } mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() ); mRefreshStop = false; mStart = true; - - SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, ++counter ); - SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, System.currentTimeMillis() ); } public void stop() { mRefreshStop = true; mStart = false; mHandler.removeMessages( MSG_REFRESH ); + mHandler.removeMessages( MSG_REFRESH_DEFAULT_CARD ); + mHandler.removeMessages( MSG_START_LOOP_DEFAULT_CARD ); Logger.d( TAG, "stop" ); } @@ -328,11 +321,32 @@ class LauncherCardRefresher { } } } + + if ( mDefaultConfigCounter++ >= 3 ) { + return; + } + + int counter = SharedPrefsMgr.getInstance( mContext ).getInt( KEY_LauncherCardTipCounter, 0 ); + if ( counter >= 5 ) { + long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L ); + if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_MINUTE ) { + stop(); + return; + } else { + SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, 0 ); + counter = 0; + SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, 0L ); + } + } + SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, ++counter ); + SharedPrefsMgr.getInstance( mContext ).putLong( KEY_LauncherCardTipLastTipTime, System.currentTimeMillis() ); + try { speakTTS( mLaunchTTSText, true ); } catch ( Exception e ) { e.printStackTrace(); } + startLoopDefaultConfigStrategy(); startLoopRenderAdvertisements(); } @@ -404,14 +418,22 @@ class LauncherCardRefresher { } } + /** + * 默认播报 / 后台配置默认项播报策略 + */ + private void startLoopDefaultConfigStrategy() { + Message msg = Message.obtain(); + msg.what = MSG_START_LOOP_DEFAULT_CARD; + mHandler.sendMessageDelayed( msg, 3 * ONE_MINUTE ); + } + /** * 开始按策略展示广告 */ private void startLoopRenderAdvertisements() { Message msg = Message.obtain(); if ( mAdvertisements == null || mAdvertisements.isEmpty() ) { - msg.what = MSG_START_LOOP_DEFAULT_CARD; - mHandler.sendMessageDelayed( msg, 3 * ONE_MINUTE ); + return; } else { try { LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement = mAdvertisements.get( 0 ); From 8cfd60c94dec670dc8e45cce3ee9eac8b5efb82e Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 27 Aug 2020 11:45:02 +0800 Subject: [PATCH 16/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=92=AD=E6=8A=A5/=E5=90=8E=E5=8F=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=92=AD=E6=8A=A5=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/service/launchercard/LauncherCardRefresher.java | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 283006d91f..bfc5391f90 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -330,7 +330,6 @@ class LauncherCardRefresher { if ( counter >= 5 ) { long lastTipTime = SharedPrefsMgr.getInstance( mContext ).getLong( KEY_LauncherCardTipLastTipTime, 0L ); if ( System.currentTimeMillis() - lastTipTime < 10 * ONE_MINUTE ) { - stop(); return; } else { SharedPrefsMgr.getInstance( mContext ).putInt( KEY_LauncherCardTipCounter, 0 ); From fa2e735f1c2cca22b8cc5afdf253d0488f619fdc Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 27 Aug 2020 14:07:07 +0800 Subject: [PATCH 17/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=92=AD=E6=8A=A5/=E9=85=8D=E7=BD=AE=E6=92=AD=E6=8A=A5?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E9=99=90=E5=88=B6=E4=B9=8B=E5=90=8E=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=92=AD=E6=8A=A5=E5=B9=BF=E5=91=8A=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/launchercard/LauncherCardRefresher.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index bfc5391f90..53ae493404 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -322,6 +322,9 @@ class LauncherCardRefresher { } } + // 开启广告 + startLoopRenderAdvertisements(); + if ( mDefaultConfigCounter++ >= 3 ) { return; } @@ -346,7 +349,6 @@ class LauncherCardRefresher { e.printStackTrace(); } startLoopDefaultConfigStrategy(); - startLoopRenderAdvertisements(); } /** From 187df05167680d6b364b3933636a9006a5250755 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 27 Aug 2020 14:15:14 +0800 Subject: [PATCH 18/22] =?UTF-8?q?=E7=AD=96=E7=95=A5=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=EF=BC=9A=E8=87=AA=E5=8A=A8=E6=8B=A5=E5=A0=B5=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/share/bean/AverateSpeedResponse.kt | 2 +- .../java/com/mogo/module/share/net/ShareApiService.kt | 2 +- .../module/share/strategyreceiver/BlockStrategy.kt | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt index 5f843cd862..bb747b4a14 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/AverateSpeedResponse.kt @@ -3,4 +3,4 @@ package com.mogo.module.share.bean import com.mogo.commons.data.BaseData data class AverateSpeedResponse(var result:Result):BaseData() -data class Result(var upload:Boolean) +data class Result(var upload:Boolean,var poiType:String) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt index 88b2e6262d..a0cf947886 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt @@ -22,5 +22,5 @@ interface ShareApiService { */ @Headers("Content-type:application/json;charset=UTF-8") @POST("/deva/car/path/no/poiStrategyCheck/v1") - fun sendAverageSpeedForBlockStrategy(@Body request:RequestBody):Observable + fun sendAverageSpeedForBlockStrategy(@Body request:RequestBody,@Query("sn") sn:String):Observable } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt index 59a672b20a..1d4ef2cf98 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/strategyreceiver/BlockStrategy.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.SystemClock import android.util.ArrayMap import com.mogo.commons.network.SubscribeImpl +import com.mogo.commons.network.Utils import com.mogo.map.MogoLatLng import com.mogo.module.share.bean.AverateSpeedResponse import com.mogo.module.share.constant.HttpConstant @@ -12,6 +13,7 @@ import com.mogo.module.share.net.ShareApiService import com.mogo.service.IMogoServiceApis import com.mogo.service.tanlu.IMogoTanluProvider import com.mogo.service.tanlu.TanluUploadParams +import com.mogo.utils.DeviceIdUtils import com.mogo.utils.logger.Logger import com.mogo.utils.network.RequestOptions import com.mogo.utils.network.utils.GsonUtil @@ -92,17 +94,17 @@ class BlockStrategy(private val context: Context, private val apis: IMogoService } private fun uploadAverageSpeed(average: Float) { - val params = ArrayMap() - params["speed"] = average.toString() + val params = ArrayMap() + params["speed"] = average.toInt() val body = RequestBody.create(MediaType.parse("Content-type:application/json;charset=UTF-8"), GsonUtil.jsonFromObject(params)) - val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(body).subscribeOn(Schedulers.io()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { + val disposable = apis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendAverageSpeedForBlockStrategy(body, Utils.getSn()).subscribeOn(Schedulers.io()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { override fun onSuccess(response: AverateSpeedResponse?) { super.onSuccess(response) response?.let { Logger.d(TAG, "收到服务端返回结果: $it") // 收到服务端回调,视情况进行视频上报 if (it.result.upload) { - val p = TanluUploadParams(IMogoTanluProvider.TYPE_BLOCK, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_BLOCK_AUTO) + val p = TanluUploadParams(it.result.poiType, IMogoTanluProvider.UPLOAD_FROM_STRATEGY_BLOCK_AUTO) val location = ServiceApisManager.serviceApis.mapServiceApi.getSingletonLocationClient(context).lastKnowLocation val latLon = MogoLatLng(location.latitude, location.longitude) p.location = latLon From f7aad35b4b2f7a5aba08d21f7daa53aa62512cb3 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 27 Aug 2020 14:29:17 +0800 Subject: [PATCH 19/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=92=AD=E6=8A=A5/=E9=85=8D=E7=BD=AE=E6=92=AD=E6=8A=A5?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E9=99=90=E5=88=B6=E4=B9=8B=E5=90=8E=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=92=AD=E6=8A=A5=E5=B9=BF=E5=91=8A=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/service/launchercard/LauncherCardRefresher.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 53ae493404..48653ad999 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -120,6 +120,8 @@ class LauncherCardRefresher { break; case MSG_REFRESH_DEFAULT_CARD: renderDefaultLauncherCardConfig(); + // 开启广告 + startLoopRenderAdvertisements(); mRefreshStrategy = mRefreshStrategy.getNext(); restart(); break; @@ -322,9 +324,6 @@ class LauncherCardRefresher { } } - // 开启广告 - startLoopRenderAdvertisements(); - if ( mDefaultConfigCounter++ >= 3 ) { return; } From f0f583733e496641ba751571d9093f4f2d25c8cc Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 27 Aug 2020 16:10:17 +0800 Subject: [PATCH 20/22] =?UTF-8?q?=E5=90=8C=E8=A1=8C=E8=80=85=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E5=85=8D=E5=94=A4=E9=86=92=E8=AF=8D=E6=94=B9=E5=94=A4?= =?UTF-8?q?=E9=86=92=E8=AF=8D=EF=BC=8C=E9=80=82=E9=85=8Dxxx=E5=A0=B5?= =?UTF-8?q?=E4=B8=8D=E5=A0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/module/service/MogoServices.java | 1 + .../java/com/mogo/module/service/receiver/MogoReceiver.java | 3 +++ .../java/com/mogo/module/tanlu/fragment/TanluListWindow.java | 1 + 3 files changed, 5 insertions(+) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 05fbe60ff6..414fce1e7e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -481,6 +481,7 @@ public class MogoServices implements IMogoMapListener, filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER ); filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_SEND ); filter.addAction( MogoReceiver.ACTION_MOGO ); + filter.addAction(MogoReceiver.ACTION_TXZ_BLOCK_SEARCH); try { context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter ); Logger.i( TAG, "register voice receiver." ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java index d1c1876a1e..b6294cb3e6 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java @@ -60,6 +60,9 @@ public class MogoReceiver extends BroadcastReceiver { public static final String ACTION_MOGO = "com.mogo.ACTION"; + // 同行者 查询xxx堵不堵发送的广播 + public static final String ACTION_TXZ_BLOCK_SEARCH = "com.zhidao.roadcondition.roadinfo"; + private IMogoIntentManager mMogoIntentManager; public MogoReceiver(Context context) { diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java index 792707484c..74044e6225 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluListWindow.java @@ -480,6 +480,7 @@ public class TanluListWindow extends RelativeLayout implements IMogoMarkerClickL private void initListener() { if (mogoIntentManager != null) { // 同行者 xxx堵不堵唤醒词语音注册 + Logger.d(TAG, "initListener===="); mogoIntentManager.registerIntentListener(TXZ_SPECIFIEDROAD_SEARCH,mogoIntentListener); // 通用唤醒词语音注册 mogoIntentManager.registerIntentListener(SPECIFIEDROAD_SEARCH, mogoIntentListener); From 7078fd3e6b6cbc577ef3c32f8db38744cb160c01 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 27 Aug 2020 16:47:44 +0800 Subject: [PATCH 21/22] bugfix --- .../LauncherCardRefreshStrategy.java | 4 + .../launchercard/LauncherCardRefresher.java | 86 ++++++++----------- .../module/service/network/RefreshModel.java | 2 + .../service/receiver/AccStatusReceiver.java | 4 + 4 files changed, 47 insertions(+), 49 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java index 32eb7a0152..ab59552339 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefreshStrategy.java @@ -32,6 +32,10 @@ public class LauncherCardRefreshStrategy { return type; } + public void next(){ + getType(); + } + public int getLimit() { return type.limit; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 48653ad999..7675cc9b51 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -10,7 +10,6 @@ import android.text.TextUtils; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.ParamsProvider; import com.mogo.commons.network.SubscribeImpl; -import com.mogo.commons.network.Utils; import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; @@ -19,7 +18,6 @@ import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.R; import com.mogo.module.service.network.RefreshCallback; import com.mogo.module.service.network.RefreshModel; -import com.mogo.module.service.network.ZhidaoApiService; import com.mogo.module.service.network.ZhidaoRefreshModel; import com.mogo.module.service.network.bean.LauncherCardAdvertisementData; import com.mogo.utils.AppUtils; @@ -29,12 +27,8 @@ import com.mogo.utils.storage.SharedPrefsMgr; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; @@ -69,6 +63,7 @@ class LauncherCardRefresher { public static final long ONE_MINUTE = 60 * 1000L; public static final long ONE_DAY = 24 * 60 * ONE_MINUTE; private String mLaunchTTSText; + private long mDefaultTTSPlayInterval = 3 * ONE_MINUTE; private LauncherCardAdvertisementData.LauncherCardAdvertisement mDefaultLauncherCardConfig; private List< LauncherCardAdvertisementData.LauncherCardAdvertisement > mAdvertisements; @@ -205,43 +200,17 @@ class LauncherCardRefresher { return; } MogoLatLng latLng = new MogoLatLng( location.getLatitude(), location.getLongitude() ); - if ( mRefreshStrategy.getType() == LauncherCardRefreshType.ExploreWay ) { - handleRefreshExplorerWayData( latLng ); - } else { - handleRefreshOnlineCarData( latLng ); - } + handleRefreshData( latLng, mRefreshStrategy.getType() ); } - private void handleRefreshExplorerWayData( MogoLatLng latLng ) { + private void handleRefreshData( MogoLatLng latLng, LauncherCardRefreshType type ) { mRefreshModel.refreshDataSync( latLng, mRefreshStrategy.getRadius(), mRefreshStrategy.getLimit(), new RefreshCallback< MarkerResponse >() { @Override public void onSuccess( MarkerResponse response ) { - notifyLauncherCardExplorerWayChanged( LauncherCardRefreshType.ExploreWay, response ); - mRefreshStrategy = mRefreshStrategy.getNext(); - restart(); - } - - @Override - public void onFail() { - mRefreshStrategy = mRefreshStrategy.getNext(); - restart(); - } - } ); - } - - private void handleRefreshOnlineCarData( MogoLatLng latLng ) { - mRefreshModel.queryOnLineCarWithRoute( latLng, - false, - true, - mRefreshStrategy.getRadius(), - mRefreshStrategy.getLimit(), - new RefreshCallback< MarkerResponse >() { - @Override - public void onSuccess( MarkerResponse response ) { - notifyLauncherCardExplorerWayChanged( LauncherCardRefreshType.OnlineCar, response ); + notifyRefreshChanged( type, response ); mRefreshStrategy = mRefreshStrategy.getNext(); restart(); } @@ -255,27 +224,43 @@ class LauncherCardRefresher { } - private boolean notifyLauncherCardExplorerWayChanged( LauncherCardRefreshType type, MarkerResponse response ) { + private boolean notifyRefreshChanged( LauncherCardRefreshType type, MarkerResponse response ) { if ( response == null || response.getResult() == null ) { return false; } String tts = mContext.getString( R.string.module_service_launcher_card_tips ); String info = mContext.getString( R.string.module_service_launcher_card_info ); + + LauncherCardRefreshType target = null; + int size = 0; if ( type == LauncherCardRefreshType.ExploreWay ) { - if ( response.getResult().getExploreWay() == null || response.getResult().getExploreWay().isEmpty() ) { - return false; + if ( response.getResult().getExploreWay() != null && !response.getResult().getExploreWay().isEmpty() ) { + target = type; + size = response.getResult().getExploreWay().size(); + } else if ( response.getResult().getOnlineCar() != null && !response.getResult().getOnlineCar().isEmpty() ) { + target = LauncherCardRefreshType.OnlineCar; + size = response.getResult().getOnlineCar().size(); } - int size = response.getResult().getExploreWay().size(); - speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ), true ); - notifyLauncherCardExplorerWayChanged( String.format( info, size, mRefreshStrategy.getDesc() ), size, tts ); - } else { - if ( response.getResult().getOnlineCar() == null || response.getResult().getOnlineCar().isEmpty() ) { - return false; + } else if ( type == LauncherCardRefreshType.OnlineCar ) { + if ( response.getResult().getOnlineCar() != null && !response.getResult().getOnlineCar().isEmpty() ) { + target = type; + size = response.getResult().getOnlineCar().size(); + } else if ( response.getResult().getExploreWay() != null && !response.getResult().getExploreWay().isEmpty() ) { + target = LauncherCardRefreshType.ExploreWay; + size = response.getResult().getExploreWay().size(); } - int size = response.getResult().getOnlineCar().size(); - speakTTS( tts = String.format( tts, size, mRefreshStrategy.getDesc() ), true ); - notifyLauncherCardExplorerWayChanged( String.format( info, size, mRefreshStrategy.getDesc() ), size, tts ); } + + if ( size == 0 ) { + return false; + } + + if ( target != type ) { + mRefreshStrategy.next();// 本次请求到的数据类型和播报类型不一致,则下次再次请求本次类型~ + } + + speakTTS( tts = String.format( tts, size, target.desc ), true ); + notifyRefreshChanged( String.format( info, size, target.desc ), size, tts ); return true; } @@ -289,7 +274,7 @@ class LauncherCardRefresher { AIAssist.getInstance( mContext ).speakTTSVoice( msg ); } - private void notifyLauncherCardExplorerWayChanged( String info, int amount, String tts ) { + private void notifyRefreshChanged( String info, int amount, String tts ) { Intent intent = new Intent( "com.mogo.launcher.v2x" ); intent.putExtra( "v2x_warning_type", "20000" ); intent.putExtra( "v2x_warining_timeout", 20 * 1000 ); @@ -321,6 +306,9 @@ class LauncherCardRefresher { if ( !TextUtils.isEmpty( mDefaultLauncherCardConfig.content ) ) { mLaunchTTSText = mDefaultLauncherCardConfig.content; } + if ( mDefaultLauncherCardConfig.popupNum > 0 ) { + mDefaultTTSPlayInterval = mDefaultLauncherCardConfig.popupNum * ONE_MINUTE; + } } } @@ -424,7 +412,7 @@ class LauncherCardRefresher { private void startLoopDefaultConfigStrategy() { Message msg = Message.obtain(); msg.what = MSG_START_LOOP_DEFAULT_CARD; - mHandler.sendMessageDelayed( msg, 3 * ONE_MINUTE ); + mHandler.sendMessageDelayed( msg, mDefaultTTSPlayInterval ); } /** diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index b9db170473..9cb03e4c88 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -17,6 +17,7 @@ import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; +import java.util.List; import java.util.Map; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -117,6 +118,7 @@ public class RefreshModel { refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng ); refreshBody.radius = radius; refreshBody.dataType.add( ServiceConst.CARD_TYPE_ROAD_CONDITION ); + refreshBody.dataType.add( ServiceConst.CARD_TYPE_USER_DATA ); String data = GsonUtil.jsonFromObject( refreshBody ); query.put( "data", data ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java index a5d1c55c1c..8e3a0abc71 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/AccStatusReceiver.java @@ -6,6 +6,7 @@ import android.content.Intent; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.intent.IntentHandlerFactory; +import com.mogo.utils.logger.Logger; public /** @@ -15,6 +16,8 @@ public * 描述 */ class AccStatusReceiver extends BroadcastReceiver { + + private static final String TAG = "AccStatusReceiver"; // 诺威达 acc 状态 public static final String PARAM_ACC_STATUS = "extra_mcu_state"; @@ -24,6 +27,7 @@ class AccStatusReceiver extends BroadcastReceiver { @Override public void onReceive( Context context, Intent intent ) { + Logger.d(TAG, "收到诺威达acc广播"); MarkerServiceHandler.init( context ); IntentHandlerFactory.getInstance().handle( context, intent.getAction(), intent ); } From 4bbab8d82bc620912f9857a0c07745416f02246e Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Fri, 28 Aug 2020 10:33:39 +0800 Subject: [PATCH 22/22] =?UTF-8?q?bug=20fix=20=E4=BA=8B=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/roadcondition/service/CarCorderController.kt | 7 ------- .../src/main/java/com/zhidao/roadcondition/util/PdUtil.kt | 4 ++-- .../mogo/module/main/launcher/MainLauncherActivity.java | 1 - 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt index 63bb1e8d6b..1cde4c21cf 100644 --- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt +++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/service/CarCorderController.kt @@ -9,7 +9,6 @@ import com.mogo.utils.NetworkUtils import com.zhidao.auto.carcorder.callback.TakePhotoCallback import com.zhidao.auto.carcorder.callback.TakeVideoCallback import com.zhidao.auto.carcorder.controller.ZdCarCoderController -import com.zhidao.roadcondition.BuildConfig import com.zhidao.roadcondition.constant.* import com.zhidao.roadcondition.event.GetImageSuccessEvent import com.zhidao.roadcondition.event.LatLngStickyEventBus @@ -297,12 +296,6 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback { getStrategyType("video") ) var speed = LocationUtil.getInstance().getSpeed() - //TODO - if (BuildConfig.DEBUG) { - //获取视频以及缩略图成功,开始上报 - compressVideo(videoPath, thumbnailPath, entity) - return - } if (entity?.isCustom) { compressVideo(videoPath, thumbnailPath, entity) diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt index cc4cb781f1..58352ad7c6 100644 --- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt +++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/util/PdUtil.kt @@ -31,8 +31,8 @@ fun getInformationBody( isShare:Boolean, poiType: String, mainInfoId: Long, - latitude: Double, - longitude: Double + longitude: Double, + latitude: Double ): InformationBody { var jsonArray = JsonArray() var type: Int diff --git a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java index 48700344f5..48c9b4c52f 100644 --- a/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java +++ b/main-extensions/mogo-module-main-launcher/src/main/java/com/zhidao/mogo/module/main/launcher/MainLauncherActivity.java @@ -20,7 +20,6 @@ import com.mogo.service.intent.IMogoIntentListener; public class MainLauncherActivity extends MainActivity implements IMogoIntentListener { protected boolean mIsHomeKeyDown = false; - @Override protected void onCreate( @Nullable Bundle savedInstanceState ) { super.onCreate( savedInstanceState );