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);