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() ); + } + } }