From d158ab5ba209eb77c05f19c09ddcbf1ab1a757a2 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 20 Oct 2020 20:21:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E7=A6=BB=E5=88=86=E4=BA=AB=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=B8=AD=E7=9A=84=E5=94=A4=E9=86=92=E8=AF=8D=E5=92=8C?= =?UTF-8?q?=E5=85=8D=E5=94=A4=E9=86=92=E6=8C=87=E4=BB=A4=EF=BC=8C=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E5=88=86=E4=BA=AB=E6=A8=A1=E5=9D=97=E7=9A=84baseModul?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/launcher/MogoApplication.java | 4 +- .../com/mogo/module/main/SchemeIntent.java | 10 ++ .../service/unwake/GlobalUnwakeConst.java | 5 +- .../service/unwake/GlobalUnwakeManager.java | 32 +++- .../com/mogo/module/share/ShareControl.java | 169 ++++++++---------- .../com/mogo/service/MogoServicePaths.java | 5 + .../mogo/service/share/IMogoShareManager.java | 3 +- .../voice/IMogoGlobalVoiceManager.java | 16 ++ 8 files changed, 150 insertions(+), 94 deletions(-) create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoGlobalVoiceManager.java diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index b77aa4cede..6e680df8e7 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -78,7 +78,7 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addModule( new MogoModule( TanluApiConst.MODULE_PATH, TanluApiConst.MODULE_NAME ) ); MogoModulePaths.addBaseModule( new MogoModule( TanluConstants.TAG, TanluConstants.MODEL_NAME ) ); - MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_SHARE, "ShareControl" ) ); + MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SHARE, "ShareControl" ) ); MogoModulePaths.addModule( new MogoModule( LeftPanelConst.PATH_NAME, LeftPanelConst.MODULE_NAME ) ); @@ -88,6 +88,8 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_MOGO_MONITOR, "MogoMonitor" ) ); MogoModulePaths.addModule( new MogoModule( PushUIConstants.PATH, PushUIConstants.NAME ) ); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_GLOBAL_UNWAKE,"GlobalUnwake")); + if ( !DebugConfig.isLauncher() ) { PersistentManager.getInstance().initManager( this ); Intent intent = new Intent( this, MogoMainService.class ); 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 81d435746f..afe5deee67 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_SHOW_ONLINE_CAR_PANEL = "showOnlineCarPanel"; + public static final String TYPE_SHOW_SHARE_PANEL = "showSharePanel"; + private IMogoServiceApis mApis; private Context mContext; @@ -150,6 +152,9 @@ public class SchemeIntent implements IMogoStatusChangedListener { break; case TYPE_SHOW_ONLINE_CAR_PANEL: handleShowOnlineCarPanel( target ); + case TYPE_SHOW_SHARE_PANEL: + handleShowSharePanel(); + break; default: break; @@ -199,6 +204,11 @@ public class SchemeIntent implements IMogoStatusChangedListener { mApis.getOnlineCarPanelApi().showPanel(); } + private void handleShowSharePanel() { + Logger.d(TAG, "handleShowSharePanel"); + // todo 跳转到热心指数 + } + @Override public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { if ( descriptor == StatusDescriptor.MAIN_PAGE_RESUME ) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeConst.java index 7f9ea74ab2..fd85c4e3f7 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeConst.java @@ -7,7 +7,6 @@ package com.mogo.module.service.unwake; */ public class GlobalUnwakeConst { public static final String MODULE_NAME = "GlobalUnwakeManager"; - public static final String PATH_NAME = "/global/unwake"; // command public static final String VOICE_CMD_GO_TO_SHARE = "com.zhidao.share"; @@ -38,6 +37,10 @@ public class GlobalUnwakeConst { */ public static final String UNWAKE_UPLOAD_REAL_TIME_TRAFFIC = "command_upload_real_time_traffic"; + /** + * 唤醒词查询热心指数 + */ + public static final String VOICE_QUERY_HEART_INDEX = "com.zhidao.query.myshare.index"; // 词 public static final String[] UPLOAD_REAL_TIME_TRAFFIC = {"上报实时路况", "上报路况"}; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeManager.java index 6a19314179..e98f703a5a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/unwake/GlobalUnwakeManager.java @@ -2,11 +2,14 @@ package com.mogo.module.service.unwake; import android.content.Context; import android.content.Intent; +import android.net.Uri; +import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.module.common.MogoApisHandler; +import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.utils.logger.Logger; @@ -19,18 +22,23 @@ import static com.mogo.module.service.unwake.GlobalUnwakeConst.VOICE_CMD_NO_REPL import static com.mogo.module.service.unwake.GlobalUnwakeConst.VOICE_CMD_PUB_ROAD_CONDITION; import static com.mogo.module.service.unwake.GlobalUnwakeConst.VOICE_CMD_PUB_TROUBLE_HELP; import static com.mogo.module.service.unwake.GlobalUnwakeConst.VOICE_CMD_SHARE_DIALOG_CLOSE; +import static com.mogo.module.service.unwake.GlobalUnwakeConst.VOICE_QUERY_HEART_INDEX; /** * 全局免唤醒管理 + * 包括唤醒词指令和全局免唤醒词指令 * 有几个Module仅仅是因为要注册全局免唤醒词,加到了BaseModule中,为了将这部分Module从BaseModule中去掉,特抽离全局免唤醒词注册监听逻辑 * * @author tongchenfei */ +@Route(path = MogoServicePaths.PATH_GLOBAL_UNWAKE) public class GlobalUnwakeManager implements IProvider, IMogoIntentListener, IMogoVoiceCmdCallBack { private IMogoIntentManager intentManager; + private Context context; private static final String TAG = "GlobalUnwakeManager"; @Override public void init(Context context) { + Logger.d(TAG, "全局免唤醒模块初始化===="); intentManager = MogoApisHandler.getInstance().getApis().getIntentManagerApi(); intentManager.registerIntentListener(VOICE_CMD_GO_TO_SHARE, this); intentManager.registerIntentListener(VOICE_CMD_PUB_TROUBLE_HELP, this); @@ -49,9 +57,31 @@ public class GlobalUnwakeManager implements IProvider, IMogoIntentListener, IMog // 此处只接受处理语音相关广播 Logger.d(TAG, "收到唤醒词指令: " + intentStr); switch (intentStr) { - + // 分享相关唤醒词 + case VOICE_CMD_GO_TO_SHARE: + case VOICE_CMD_PUB_TROUBLE_HELP: + case VOICE_CMD_PUB_ROAD_CONDITION: + case VOICE_CMD_SHARE_DIALOG_CLOSE: + case VOICE_CMD_NO_REPLY_SHARE_DIALOG_CLOSE: + case UNWAKE_UPLOAD_ROAD_CONDITION: + MogoApisHandler.getInstance().getApis().getShareManager().onGlobalUnwake(intentStr, intent); + break; + case VOICE_QUERY_HEART_INDEX: + Intent start = new Intent( Intent.ACTION_VIEW ); + start.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); + start.setData( Uri.parse( "mogo://launcher/main/switch2?type=showSharePanel" ) ); + context.startActivity( start ); + break; default: break; } } + + @Override + public void onCmdSelected(String cmd) { + Logger.d(TAG, "收到免唤醒词指令: " + cmd); + if (UNWAKE_UPLOAD_REAL_TIME_TRAFFIC.equals(cmd)) { + MogoApisHandler.getInstance().getApis().getShareManager().onGlobalUnwake(cmd, null); + } + } } 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 3a7982f76e..2b98266a01 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 @@ -97,8 +97,7 @@ import static com.mogo.service.share.IMogoTanluProvider.TYPE_TRAFFIC_CHECK; * @since 2020-01-10 */ @Route(path = MogoServicePaths.PATH_SHARE) -public class ShareControl implements IMogoShareManager, IMogoIntentListener, - IMogoVoiceCmdCallBack, Handler.Callback { +public class ShareControl implements IMogoShareManager, Handler.Callback { private static final String TAG = "ShareControl"; private Context mContext; @@ -228,94 +227,83 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, } @Override - public void onCmdSelected(String cmd) { - Logger.d(TAG, "收到免唤醒词指令: " + cmd); - switch (cmd) { - case UNWAKE_CANCEL_SHARE: - dismissShareDialog(); - break; - case UNWAKE_UPLOAD_ROAD_BLOCK: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK, false); - } else { - uploadFromVoice(TYPE_BLOCK); - } - break; - case UNWAKE_UPLOAD_TRAFFIC_CHECK: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK, false); - } else { - uploadFromVoice(TYPE_TRAFFIC_CHECK); - } - break; - case UNWAKE_UPLOAD_ROAD_CLOSURE: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE, false); - } else { - uploadFromVoice(TYPE_CLOSURE); - } - break; - case UNWAKE_UPLOAD_ACCIDENT: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT, false); - } else { - uploadFromVoice(TYPE_ACCIDENT); - } - break; - case UNWAKE_UPLOAD_REAL_TIME_TRAFFIC: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC, false); - } else { - uploadFromVoice(TYPE_REAL_TIME_TRAFFIC); - } - break; - case UNWAKE_UPLOAD_SEEK_HELP: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_BLOCK, false); - } else { - seekHelp(); - } - - break; - case UNWAKE_UPLOAD_STAGNANT_WATER: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER, false); - } else { - uploadFromVoice(TYPE_STAGNANT_WATER); - } - break; - case UNWAKE_UPLOAD_ROAD_ICY: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY, false); - } else { - uploadFromVoice(TYPE_ROAD_ICY); - } - break; - case UNWAKE_UPLOAD_DENSE_FOG: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG, false); - } else { - uploadFromVoice(TYPE_DENSE_FOG); - } - break; - case UNWAKE_UPLOAD_ROAD_CONSTRUCTION: - if (needAuth()) { - goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION, false); - } else { - uploadFromVoice(TYPE_ROAD_CONSTRUCTION); - } - break; - default: - break; - } - } - - @Override - public void onIntentReceived(String intentStr, Intent intent) { - // 此处只接受处理语音相关广播 - Logger.d(TAG, "收到唤醒词指令: " + intentStr); + public void onGlobalUnwake(String cmd, Intent intent) { try { - switch (intentStr) { + switch (cmd) { + case UNWAKE_CANCEL_SHARE: + dismissShareDialog(); + break; + case UNWAKE_UPLOAD_ROAD_BLOCK: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_BLOCK, false); + } else { + uploadFromVoice(TYPE_BLOCK); + } + break; + case UNWAKE_UPLOAD_TRAFFIC_CHECK: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_TRAFFIC_CHECK, false); + } else { + uploadFromVoice(TYPE_TRAFFIC_CHECK); + } + break; + case UNWAKE_UPLOAD_ROAD_CLOSURE: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_CLOSURE, false); + } else { + uploadFromVoice(TYPE_CLOSURE); + } + break; + case UNWAKE_UPLOAD_ACCIDENT: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ACCIDENT, false); + } else { + uploadFromVoice(TYPE_ACCIDENT); + } + break; + case UNWAKE_UPLOAD_REAL_TIME_TRAFFIC: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_REAL_TIME_TRAFFIC, false); + } else { + uploadFromVoice(TYPE_REAL_TIME_TRAFFIC); + } + break; + case UNWAKE_UPLOAD_SEEK_HELP: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_BLOCK, false); + } else { + seekHelp(); + } + + break; + case UNWAKE_UPLOAD_STAGNANT_WATER: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_STAGNANT_WATER, false); + } else { + uploadFromVoice(TYPE_STAGNANT_WATER); + } + break; + case UNWAKE_UPLOAD_ROAD_ICY: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_ICY, false); + } else { + uploadFromVoice(TYPE_ROAD_ICY); + } + break; + case UNWAKE_UPLOAD_DENSE_FOG: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_DENSE_FOG, false); + } else { + uploadFromVoice(TYPE_DENSE_FOG); + } + break; + case UNWAKE_UPLOAD_ROAD_CONSTRUCTION: + if (needAuth()) { + goAuth(STEP_AFTER_AUTH_TYPE_UPLOAD, TYPE_ROAD_CONSTRUCTION, false); + } else { + uploadFromVoice(TYPE_ROAD_CONSTRUCTION); + } + break; case VOICE_CMD_PUB_TROUBLE_HELP: if (needAuth()) { goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG, false); @@ -431,7 +419,8 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, break; } } catch (Exception e) { - Logger.e(TAG, e, "ShareControl exception"); + Logger.e(TAG, e, "onGlobalUnwake exception"); + e.printStackTrace(); } } 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 bca6a29631..4cb53099a2 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 @@ -260,4 +260,9 @@ public class MogoServicePaths { * 在线好友面板 */ public static final String PATH_ONLINE_CAR_PANEL = "/onlinecar/panel"; + + /** + * 全局免唤醒 + */ + public static final String PATH_GLOBAL_UNWAKE = "/global/unwake"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java index ca0285449c..6ec41a931a 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java @@ -4,12 +4,13 @@ import android.content.Context; import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.service.module.IMogoModuleProvider; +import com.mogo.service.voice.IMogoGlobalVoiceManager; /** * 分享框管理接口 * @author tongchenfei */ -public interface IMogoShareManager extends IProvider { +public interface IMogoShareManager extends IProvider, IMogoGlobalVoiceManager { /** * 显示分享框 */ diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoGlobalVoiceManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoGlobalVoiceManager.java new file mode 100644 index 0000000000..b16230830c --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoGlobalVoiceManager.java @@ -0,0 +1,16 @@ +package com.mogo.service.voice; + +import android.content.Intent; + +/** + * 全局免唤醒指令处理监听 + * + * @author tongchenfei + */ +public interface IMogoGlobalVoiceManager { + /** + * 收到全局免唤醒指令和唤醒词指令 + * @param cmd 具体指令 + */ + void onGlobalUnwake(String cmd, Intent intent); +}