去掉了自身的broadcast receiver
This commit is contained in:
@@ -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')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user