去掉了自身的broadcast receiver

This commit is contained in:
tongchenfei
2020-06-08 15:30:42 +08:00
parent b8617ed402
commit c712b6f03b
4 changed files with 134 additions and 82 deletions

View File

@@ -46,10 +46,12 @@ dependencies {
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.modulecommon
implementation rootProject.ext.dependencies.mogomoduleauth
} else {
implementation project(":foudations:mogo-utils")
api project(":foudations:mogo-commons")
implementation project(':modules:mogo-module-common')
implementation project(':modules:mogo-module-authorize')
}
}

View File

@@ -2,10 +2,5 @@
package="com.mogo.module.share" >
<application>
<service android:name=".VoiceCmdService" />
<receiver android:name=".ShareVoiceCmdReceiver">
<intent-filter>
<action android:name="com.zhidao.speech.awake.notify" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -1,31 +1,66 @@
package com.mogo.module.share;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
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.module.IMogoAcquireAuthorizeListener;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
import com.mogo.module.authorize.model.bean.Agreement;
import com.mogo.module.share.constant.ShareConstants;
import com.mogo.module.share.dialog.LaucherShareDialog;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.module.share.manager.UploadHelper;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.share.IMogoShareManager;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
import static com.mogo.module.share.constant.ShareConstants.TYPE_ACCIDENT;
import static com.mogo.module.share.constant.ShareConstants.TYPE_DENSE_FOG;
import static com.mogo.module.share.constant.ShareConstants.TYPE_REAL_TIME_TRAFFIC;
import static com.mogo.module.share.constant.ShareConstants.TYPE_ROAD_CONSTRUCTION;
import static com.mogo.module.share.constant.ShareConstants.TYPE_ROAD_ICY;
import static com.mogo.module.share.constant.ShareConstants.TYPE_STAGNANT_WATER;
import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_GO_TO_SHARE;
import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_PUB_ROAD_CONDITION;
import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_PUB_TROUBLE_HELP;
/**
* 分享框的逻辑都放到这里吧
*
* @author lixiaopeng
* @description 分享弹框接口
* @since 2020-01-10
*/
@Route(path = MogoServicePaths.PATH_SHARE)
public class ShareControl implements IMogoShareManager {
private static final String TAG = "ShareControl";
private Context mContext;
private LaucherShareDialog mShareDialog;
private IMogoAuthorizeModuleManager authorizeModuleManager;
@Override
public void showShareDialog() {
mShareDialog = new LaucherShareDialog(mContext);
mShareDialog.show();
if (authorizeModuleManager.needAuthorize(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
authorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE);
}else{
realShowDialog();
}
}
@Override
@@ -35,9 +70,104 @@ public class ShareControl implements IMogoShareManager {
}
}
private void realShowDialog(){
if (mShareDialog == null) {
mShareDialog = new LaucherShareDialog(mContext);
}
mShareDialog.show();
}
@Override
public void init(Context context) {
mContext = context;
ServiceApisManager.INSTANCE.init(context);
authorizeModuleManager =
(IMogoAuthorizeModuleManager) ARouter.getInstance().build(AuthorizeConstant.PROVIDER_MODULE).navigation(context);
authorizeModuleManager.registerAuthorizeListener(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE, new IMogoAcquireAuthorizeListener() {
@Override
public void authorizeSuccess() {
realShowDialog();
}
@Override
public void authorizeFailed(@NotNull String errorMsg) {
TipToast.tip("未授权,无法分享");
}
@Override
public void forbiddenVoiceWhenAuthorize(@NotNull String cmd) {
TipToast.tip("未授权,无法分享");
}
});
ServiceApisManager.serviceApis.getIntentManagerApi().registerIntentListener("ShareDialog", new IMogoIntentListener() {
@Override
public void onIntentReceived(String intentStr, Intent intent) {
// 此处只接受处理语音相关广播
String command = intent.getStringExtra("command");
Logger.d(TAG, "收到唤醒词指令: " + command);
try {
switch (command) {
case VOICE_CMD_PUB_TROUBLE_HELP: {
// 开启服务,准备上报求助
Intent seekHelp = new Intent(mContext, VoiceCmdService.class);
seekHelp.putExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY,
ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP);
mContext.startService(seekHelp);
dismissShareDialog();
break;
}
case VOICE_CMD_GO_TO_SHARE: {
String ob = new JSONObject(intent.getStringExtra("data")).opt("ob").toString();
Logger.d(TAG, "ob: $ob");
switch (ob) {
case "积水": {
UploadHelper.INSTANCE.upload(mContext, TYPE_STAGNANT_WATER);
dismissShareDialog();
break;
}
case "积冰": {
UploadHelper.INSTANCE.upload(mContext, TYPE_ROAD_ICY);
dismissShareDialog();
break;
}
case "": {
UploadHelper.INSTANCE.upload(mContext, TYPE_DENSE_FOG);
dismissShareDialog();
break;
}
case "交通事故": {
UploadHelper.INSTANCE.upload(mContext, TYPE_ACCIDENT);
dismissShareDialog();
break;
}
case "施工": {
UploadHelper.INSTANCE.upload(mContext, TYPE_ROAD_CONSTRUCTION);
dismissShareDialog();
break;
}
default:
break;
}
}
case VOICE_CMD_PUB_ROAD_CONDITION: {
String ob =
new JSONObject(intent.getStringExtra("data")).opt("obj").toString();
Logger.d(TAG, "ob:" + ob);
if ("路况".equals(ob)) {
// 上报实时路况
Logger.d(TAG, "分享框准备触发上报实时路况");
UploadHelper.INSTANCE.upload(mContext, TYPE_REAL_TIME_TRAFFIC);
dismissShareDialog();
break;
}
}
default:
break;
}
} catch (Exception e) {
Logger.e(TAG, e, "ShareControl exception");
}
}
});
}
}

View File

@@ -1,75 +0,0 @@
package com.mogo.module.share
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.mogo.module.share.constant.ShareConstants
import com.mogo.module.share.constant.ShareConstants.*
import com.mogo.module.share.manager.ServiceApisManager
import com.mogo.module.share.manager.UploadHelper
import com.mogo.utils.logger.Logger
import org.json.JSONObject
/**
* 用于接收唤醒词指令,现在只接收 com.zhidao.speech.awake.notify 这一条广播
*/
class ShareVoiceCmdReceiver : BroadcastReceiver() {
private val TAG = "ShareVoiceCmdReceiver"
override fun onReceive(context: Context, intent: Intent) {
// 接收唤醒词指令
val command = intent.getStringExtra("command")?:""
Logger.d(TAG, "收到唤醒词指令: $command")
when (command) {
VOICE_CMD_PUB_TROUBLE_HELP -> {
// 开启服务,准备上报求助
val seekHelp = Intent(context, VoiceCmdService::class.java)
seekHelp.putExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY, ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP)
context.startService(seekHelp)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
VOICE_CMD_GO_TO_SHARE ->{
val ob = JSONObject(intent.getStringExtra("data") ?: "").opt("ob")
Logger.d(TAG, "ob: $ob")
when (ob) {
"积水"->{
UploadHelper.upload(context, TYPE_STAGNANT_WATER)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
"积冰"->{
UploadHelper.upload(context, TYPE_ROAD_ICY)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
""->{
UploadHelper.upload(context, TYPE_DENSE_FOG)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
"交通事故"->{
UploadHelper.upload(context, TYPE_ACCIDENT)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
"施工"->{
UploadHelper.upload(context, TYPE_ROAD_CONSTRUCTION)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
}
}
VOICE_CMD_PUB_ROAD_CONDITION->{
val ob = JSONObject(intent.getStringExtra("data") ?: "").opt("obj")
Logger.d(TAG, "ob: $ob")
if(ob == "路况") {
// 上报实时路况
Logger.d(TAG, "分享框准备触发上报实时路况")
UploadHelper.upload(context, TYPE_REAL_TIME_TRAFFIC)
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
}
}
}
}