diff --git a/.idea/misc.xml b/.idea/misc.xml index 2dc54c489f..707ee6e613 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-extensions/build.gradle b/modules/mogo-module-extensions/build.gradle index 1434fe9a58..165459ff0d 100644 --- a/modules/mogo-module-extensions/build.gradle +++ b/modules/mogo-module-extensions/build.gradle @@ -51,6 +51,7 @@ dependencies { api rootProject.ext.dependencies.mogoserviceapi implementation rootProject.ext.dependencies.modulecommon implementation rootProject.ext.dependencies.moduleshare + implementation rootProject.ext.dependencies.mogomoduleauth } else { api project(":libraries:mogo-map") api project(":libraries:mogo-map-api") @@ -59,6 +60,7 @@ dependencies { api project(':services:mogo-service-api') implementation project(':modules:mogo-module-common') implementation project(':modules:mogo-module-share') + implementation project(':modules:mogo-module-authorize') } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 9578f5079f..cdb32f7fd5 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -2,6 +2,7 @@ package com.mogo.module.extensions.entrance; import android.graphics.Color; import android.os.Bundle; +import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; @@ -28,6 +29,12 @@ import com.mogo.map.overlay.IMogoPolyline; import com.mogo.map.overlay.MogoPolylineOptions; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; +import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; +import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListener; +import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeRegister; +import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; +import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.common.MogoModulePaths; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; @@ -61,7 +68,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent implements EntranceView, IMogoNaviListener, IMogoMapListener, - IMogoAimlessModeListener { + IMogoAimlessModeListener, + IMogoAcquireAuthorizeListener { private static final String TAG = "EntranceFragment"; @@ -95,6 +103,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private IMogoRegisterCenter mMogoRegisterCenter; private IMogoAnalytics mAnalytics; private IMogoStatusManager mMogoStatusManager; + private EntrancePresenter mEntrancePresenter; + private IMogoAuthorizeModuleManager mIMogoAuthorizeModuleManager; /** * 搜索莫模块 @@ -112,9 +122,11 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override protected void initViews() { - mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); + mIMogoAuthorizeModuleManager = (IMogoAuthorizeModuleManager) ARouter.getInstance().build(AuthorizeConstant.PROVIDER_MODULE).navigation(getContext()); + mIMogoAuthorizeModuleManager.registerAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY, this); + mEntrancePresenter = new EntrancePresenter(getContext(), this, mIMogoAuthorizeModuleManager); mMogoFragmentManager = mApis.getFragmentManagerApi(); mMogoAddressManager = mApis.getAddressManagerApi(); @@ -208,7 +220,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @NonNull @Override protected EntrancePresenter createPresenter() { - return new EntrancePresenter( getContext(), this ); + return mEntrancePresenter; } @Override @@ -229,6 +241,34 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mMogoMarkerManager = mService.getMarkerManager( getContext() ); } + @Override + public void onDestroyView() { + super.onDestroyView(); + if (mEntrancePresenter != null) { + mEntrancePresenter.unregisterUnWake(); + } + + mIMogoAuthorizeModuleManager.unregisterAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } + + + @Override + public void authorizeSuccess() { + Log.d(TAG, "authorizeSuccess --------> "); + mEntrancePresenter.handleNeedAuthorizeCmd(); + } + + @Override + public void authorizeFailed(String errorMsg) { + Log.e(TAG, "authorizeFailed --------> "); + } + + @Override + public void forbiddenVoiceWhenAuthorize(String cmd) { + Log.d(TAG, "forbiddenVoiceWhenAuthorize --------> "); + + } + @Override public void onInitNaviFailure() { } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java index 400d6b39c3..93465a16f1 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java @@ -10,6 +10,8 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; +import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; +import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.share.ShareControl; import com.mogo.service.MogoServicePaths; @@ -35,18 +37,23 @@ public class EntrancePresenter extends Presenter { private IMogoAnalytics mAnalytics; private static final String TAG = "EntrancePresenter"; private IMogoIntentManager mogoIntentManager; + private IMogoAuthorizeModuleManager mIMogoAuthorizeModuleManager; + private String mVoiceCmdType; //一级命令 + private String mVoiceCmdShareType; //对某些一级命令里面细分的类型做处理 - public EntrancePresenter(Context context, EntranceView view) { + public EntrancePresenter(Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager) { super(view); mContext = context; mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(getContext()); mogoIntentManager = (IMogoIntentManager) ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation(getContext()); + mIMogoAuthorizeModuleManager = authorizeModuleManager; registerUnWake(); registerAwakeVoice(); } + private void registerUnWake() { AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CLOSE, ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener); @@ -67,15 +74,33 @@ public class EntrancePresenter extends Presenter { private IMogoVoiceCmdCallBack mogoVoiceListener = new IMogoVoiceCmdCallBack() { @Override public void onCmdSelected(String cmd) { + Log.d(TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize() + " >>>cmd = " + cmd); + mVoiceCmdType = cmd; if (cmd.equals(ExtensionsModuleConst.CANCLE_SHARE) || cmd.equals(ExtensionsModuleConst.CLOSE)) { //取消分享,关闭页面 - ShareControl.getInstance(mContext).dismissDialog(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + ShareControl.getInstance(mContext).dismissDialog(); + } } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵 - uploadRoadCondition(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + uploadRoadCondition(); + } } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 - uploadTrfficCheck(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + uploadTrfficCheck(); + } } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 - uploadRoadClosed(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + uploadRoadClosed(); + } } } @@ -103,8 +128,7 @@ public class EntrancePresenter extends Presenter { mogoIntentManager.registerIntentListener(ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener); mogoIntentManager.registerIntentListener(ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener); mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE,mogoIntentListener); - + mogoIntentManager.registerIntentListener(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener); } /** @@ -113,8 +137,9 @@ public class EntrancePresenter extends Presenter { private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() { @Override public void onIntentReceived(String intentStr, Intent intent) { + mVoiceCmdType = intentStr; String data = intent.getStringExtra("data"); - Logger.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data); + Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize()); if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok String conditionData = intent.getStringExtra("data"); Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData); @@ -122,41 +147,112 @@ public class EntrancePresenter extends Presenter { JSONObject jsonObject = new JSONObject(data); String typeString = jsonObject.get("ob").toString(); Log.d(TAG, "mogoIntentListener specified typeString = " + typeString); + mVoiceCmdShareType = typeString; if (!TextUtils.isEmpty(typeString)) { if (typeString.equals("封路")) { - Log.d(TAG, "mogoIntentListener 封路 -------> "); - uploadRoadClosed(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + Log.d(TAG, "mogoIntentListener 封路 -------> "); + uploadRoadClosed(); + } } else if (typeString.equals("油价")) { - Log.d(TAG, "mogoIntentListener 油价 -------> "); - shareOilPrice(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + Log.d(TAG, "mogoIntentListener 油价 -------> "); + shareOilPrice(); + } } else if (typeString.equals("交通检查")) { - Log.d(TAG, "mogoIntentListener 交通检查 -------> "); - uploadTrfficCheck(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + Log.d(TAG, "mogoIntentListener 交通检查 -------> "); + uploadTrfficCheck(); + } } } else { - ShareControl.getInstance(mContext).showDialog(); - Log.d(TAG, "mogoIntentListener 我要分享 ----> "); - traceData("2"); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + ShareControl.getInstance(mContext).showDialog(); + Log.d(TAG, "mogoIntentListener 我要分享 ----> "); + traceData("2"); + } } } catch (Exception e) { e.printStackTrace(); } } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) { //分享路况/上报路况/上报拥堵 唤醒 - Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> "); - uploadRoadCondition(); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + uploadRoadCondition(); + Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> "); + } } else if (intentStr.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE)) { //关闭分享框 唤醒 - ShareControl.getInstance(mContext).dismissDialog(); - Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> "); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + ShareControl.getInstance(mContext).dismissDialog(); + Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> "); + } } else if (intentStr.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { // 两次未回复关闭对话框 - ShareControl.getInstance(mContext).dismissDialog(); - Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框"); + if (mIMogoAuthorizeModuleManager.needAuthorize()) { + mIMogoAuthorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY); + } else { + ShareControl.getInstance(mContext).dismissDialog(); + Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框"); + } } } }; + /** + * 处理需要授权的命令 TODO + */ + public void handleNeedAuthorizeCmd() { + Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType); + if (!TextUtils.isEmpty(mVoiceCmdType)) { + if (mVoiceCmdType.equals(ExtensionsModuleConst.CANCLE_SHARE) || mVoiceCmdType.equals(ExtensionsModuleConst.CLOSE) + || mVoiceCmdType.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE) || mVoiceCmdType.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { //关闭分享弹框 + ShareControl.getInstance(mContext).dismissDialog(); + } else if (mVoiceCmdType.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //打开分享弹框 + if (!TextUtils.isEmpty(mVoiceCmdShareType)) { + if (mVoiceCmdShareType.equals("封路")) { + Log.d(TAG, "handleNeedAuthorizeCmd 封路 -------> "); + uploadRoadClosed(); + } else if (mVoiceCmdShareType.equals("油价")) { + Log.d(TAG, "handleNeedAuthorizeCmd 油价 -------> "); + shareOilPrice(); + } else if (mVoiceCmdShareType.equals("交通检查")) { + Log.d(TAG, "handleNeedAuthorizeCmd 交通检查 -------> "); + uploadTrfficCheck(); + } + } else { + ShareControl.getInstance(mContext).showDialog(); + Log.d(TAG, "handleNeedAuthorizeCmd 我要分享 ----> "); + traceData("2"); + } + } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 + Log.d(TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> "); + uploadTrfficCheck(); + } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 + Log.d(TAG, "handleNeedAuthorizeCmd 上报封路 ----> "); + uploadRoadClosed(); + } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK) + || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) { //上报拥堵, 分享路况, 上报路况 + Log.d(TAG, "handleNeedAuthorizeCmd 上报路况 ----> "); + uploadRoadCondition(); + } + } else { + Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null "); + } + } + private void uploadRoadCondition() { traceTanluData("2"); sendShareReceiver("1"); @@ -235,7 +331,7 @@ public class EntrancePresenter extends Presenter { } - private void unregisterUnWake() { + public void unregisterUnWake() { AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE); AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CLOSE);