Merge branch 'dev_scheme' into dev

This commit is contained in:
tongchenfei
2020-06-08 10:26:43 +08:00
16 changed files with 136 additions and 74 deletions

View File

@@ -29,6 +29,15 @@
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<data
android:host="launcher"
android:path="/main/share"
android:scheme="mogo" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
</application>
</manifest>

View File

@@ -17,6 +17,8 @@ public class MainIndependentActivity extends MainActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 独立app需要在onCreate里面增加处理scheme的情况
mPresenter.handleSchemeIntent(getIntent());
}
@Override

View File

@@ -34,7 +34,10 @@ public class BackToMainHomeManager {
}
public static void backToLauncher() {
if (mStatusManager == null) {
Logger.e(TAG,"未初始化完成");
return;
}
if ( mStatusManager.isMainPageOnResume() ) {
if ( mStatusManager.isSearchUIShow() ) {
mFragmentManager.clearAll();

View File

@@ -222,13 +222,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
// }
// });
// 原始逻辑
isClickShare = true;
if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
ShareControl.getInstance( getActivity() ).showDialog();
traceData( "1" );
}
showShareDialog();
} );
mDisplayOverview = findViewById( R.id.module_ext_id_display_overview );
@@ -348,6 +342,16 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mNaviInfo.inflate( rootView );
}
public void showShareDialog() {
isClickShare = true;
if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE );
} else {
mApis.getShareManager().showShareDialog();
traceData( "1" );
}
}
private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV";
@NonNull
@@ -395,7 +399,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
public void authorizeSuccess() {
Log.d( TAG, "authorizeSuccess --------> isClickShare = " + isClickShare );
if ( isClickShare ) {
ShareControl.getInstance( getActivity() ).showDialog();
mApis.getShareManager().showShareDialog();
traceData( "1" );
} else {
mEntrancePresenter.handleNeedAuthorizeCmd();

View File

@@ -14,7 +14,6 @@ import com.mogo.commons.mvp.Presenter;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
import com.mogo.module.authorize.model.BaseResponse;
import com.mogo.module.extensions.ExtensionsModuleConst;
import com.mogo.module.extensions.net.UserInfoNetApiServices;
import com.mogo.module.extensions.userinfo.UserInfo;
@@ -22,6 +21,7 @@ import com.mogo.module.extensions.userinfo.UserInfoConstant;
import com.mogo.module.extensions.userinfo.UserInfoResponse;
import com.mogo.module.extensions.utils.ExtensionsConfig;
import com.mogo.module.share.ShareControl;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
@@ -119,7 +119,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).dismissDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
} else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵
if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
@@ -227,7 +227,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).showDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
Log.d(TAG, "mogoIntentListener 我要分享 ----> ");
traceData("2");
}
@@ -258,7 +258,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).dismissDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> ");
}
} else if (intentStr.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) {
@@ -266,7 +266,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) {
mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE);
} else {
ShareControl.getInstance(mContext).dismissDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框");
}
} else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报路况
@@ -290,7 +290,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
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();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
} else if (mVoiceCmdType.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //打开分享弹框
if (!TextUtils.isEmpty(mVoiceCmdShareType)) {
if (mVoiceCmdShareType.equals("封路")) {
@@ -304,7 +304,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
uploadTrfficCheck();
}
} else {
ShareControl.getInstance(mContext).showDialog();
ServiceApisManager.serviceApis.getShareManager().showShareDialog();
Log.d(TAG, "handleNeedAuthorizeCmd 我要分享 ----> ");
traceData("2");
}
@@ -333,7 +333,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
sendShareReceiver(REPORT_TANLU_BLOCK);
Logger.d("EntrancePresenter", "mogoIntentListener 上报路况 ----> ");
traceTypeData("1");
ShareControl.getInstance(mContext).dismissDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
private void uploadTrfficCheck() {
@@ -341,7 +341,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
sendShareReceiver(REPORT_TANLU_TRAFFIC_CHECK);
Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> ");
traceTypeData("3");
ShareControl.getInstance(mContext).dismissDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
private void uploadRoadClosed() {
@@ -349,7 +349,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
sendShareReceiver(REPORT_TANLU_CLOSURE);
Logger.d("EntrancePresenter", "mogoIntentListener 分享封路 ----> ");
traceTypeData("4");
ShareControl.getInstance(mContext).dismissDialog();
ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
/**
@@ -368,7 +368,7 @@ public class EntrancePresenter extends Presenter<EntranceView> {
// intent.setData(Uri.parse("freshthing://com.zhidao.fresh.things/shareOilPrice"));
// getContext().startActivity(intent);
// traceTypeData("2");
// ShareControl.getInstance(mContext).dismissDialog();
// ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
/**

View File

@@ -80,6 +80,12 @@ public class SchemeIntent implements IMogoStatusChangedListener {
case "/main/switch2":
handleSwitch2Action( target );
break;
case "/main/share":
Logger.d(TAG,"收到打开分享框的scheme准备打开分享框");
mApis.getShareManager().showShareDialog();
break;
default:
break;
}

View File

@@ -2,10 +2,13 @@ package com.mogo.module.share;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.share.dialog.LaucherShareDialog;
import com.mogo.module.share.manager.ServiceApisManager;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.share.IMogoShareManager;
import com.mogo.utils.logger.Logger;
/**
@@ -13,55 +16,28 @@ import com.mogo.utils.logger.Logger;
* @description 分享弹框接口
* @since 2020-01-10
*/
public class ShareControl implements IShareControl {
@Route(path = MogoServicePaths.PATH_SHARE)
public class ShareControl implements IMogoShareManager {
private static volatile ShareControl sInstance;
private Context mContext;
private LaucherShareDialog mShareDialog;
private IMogoServiceApis mogoServiceApis;
private ShareControl(Context context) {
mContext = context;
mogoServiceApis =
(IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
}
public IMogoServiceApis getMogoServiceApis(){
return mogoServiceApis;
}
public static ShareControl getInstance(Context context) {
if (sInstance == null) {
synchronized (ShareControl.class) {
if (sInstance == null) {
sInstance = new ShareControl(context);
}
}
}
return sInstance;
}
@Override
public void showDialog() {
boolean isAdasShow = mogoServiceApis.getStatusManagerApi().isADASShow();
Logger.d("ShareControl", "showDialog 判断adas是否展示: " + isAdasShow);
// if (isAdasShow) {
// mogoServiceApis.getAdasControllerApi().closeADAS();
// }
public void showShareDialog() {
mShareDialog = new LaucherShareDialog(mContext);
// mShareDialog.setCanceledOnTouchOutside(true);
mShareDialog.show();
}
@Override
public void dismissDialog() {
public void dismissShareDialog() {
if (mShareDialog != null) {
mShareDialog.dismiss();
}
}
@Override
public void init(Context context) {
mContext = context;
ServiceApisManager.INSTANCE.init(context);
}
}

View File

@@ -5,6 +5,7 @@ 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
@@ -24,7 +25,8 @@ class ShareVoiceCmdReceiver : BroadcastReceiver() {
val seekHelp = Intent(context, VoiceCmdService::class.java)
seekHelp.putExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY, ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP)
context.startService(seekHelp)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
VOICE_CMD_GO_TO_SHARE ->{
val ob = JSONObject(intent.getStringExtra("data") ?: "").opt("ob")
@@ -32,23 +34,28 @@ class ShareVoiceCmdReceiver : BroadcastReceiver() {
when (ob) {
"积水"->{
UploadHelper.upload(context, TYPE_STAGNANT_WATER)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
"积冰"->{
UploadHelper.upload(context, TYPE_ROAD_ICY)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
""->{
UploadHelper.upload(context, TYPE_DENSE_FOG)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
"交通事故"->{
UploadHelper.upload(context, TYPE_ACCIDENT)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
"施工"->{
UploadHelper.upload(context, TYPE_ROAD_CONSTRUCTION)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
}
}
@@ -59,7 +66,8 @@ class ShareVoiceCmdReceiver : BroadcastReceiver() {
// 上报实时路况
Logger.d(TAG, "分享框准备触发上报实时路况")
UploadHelper.upload(context, TYPE_REAL_TIME_TRAFFIC)
ShareControl.getInstance(context).dismissDialog()
ServiceApisManager.serviceApis.shareManager.dismissShareDialog()
// ShareControl.getInstance(context).dismissDialog()
}
}
}

View File

@@ -66,8 +66,8 @@ public class LaucherShareDialog implements View.OnClickListener {
public LaucherShareDialog(@NonNull Context context) {
this.mContext = context;
mAnalytics = ShareControl.getInstance(context).getMogoServiceApis().getAnalyticsApi();
mApis = (IMogoServiceApis) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(context);
mAnalytics = mApis.getAnalyticsApi();
mStatusManager = mApis.getStatusManagerApi();
}

View File

@@ -7,7 +7,6 @@ import com.mogo.commons.data.BaseData
import com.mogo.commons.network.SubscribeImpl
import com.mogo.commons.voice.AIAssist
import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.module.share.ShareControl
import com.mogo.module.share.bean.SeekRecord
import com.mogo.module.share.bean.SeekRequest
import com.mogo.module.share.bean.getJson
@@ -20,7 +19,6 @@ import com.mogo.utils.storage.SharedPrefsMgr
import com.zhidao.auto.platform.util.DeviceUtil
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.util.*
/**
* 故障求助管理类,相关故障求助操作的具体实现类
@@ -73,7 +71,6 @@ object SeekHelpManager {
}
/**
* 寻求帮助,是开始故障求助的入口
* 由于当前需求仅需要提供这一个方法所以context的初始化放到了此方法后面如果有增加需要把这部分提出去
@@ -88,7 +85,8 @@ object SeekHelpManager {
this.context = context
}
aiAssist = AIAssist.getInstance(context)
isSeekHelp = ShareControl.getInstance(SeekHelpManager.context).mogoServiceApis.statusManagerApi.isSeekHelping
isSeekHelp = ServiceApisManager.serviceApis.statusManagerApi.isSeekHelping
Logger.d(TAG, "开始故障求助上报---${isSeekHelp}")
seekListenerList.add(seekHelpListener)
when {
@@ -157,11 +155,11 @@ object SeekHelpManager {
val seekRequest = SeekRequest(DeviceUtil.getSn())
val param = mutableMapOf("data" to seekRequest.getJson())
ShareControl.getInstance(context).mogoServiceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl<BaseData>(RequestOptions.create(context)) {
ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl<BaseData>(RequestOptions.create(context)) {
override fun onSuccess(o: BaseData?) {
super.onSuccess(o)
// 接口请求成功内部同步v2x状态通知adas改变自车图标
ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog", true)
ServiceApisManager.serviceApis.statusManagerApi.setSeekHelping("ShareDialog", true)
SharedPrefsMgr.getInstance(context!!).putLong("seek_help_time", System.currentTimeMillis())
isSeekHelp = true
aiAssist?.speakTTSVoice("已发布求助信息,将为你通知其他车主")
@@ -213,11 +211,11 @@ object SeekHelpManager {
fun debugCancelSeek() {
val seekRequest = SeekRequest(DeviceUtil.getSn(), 0)
val param = mutableMapOf("data" to seekRequest.getJson())
ShareControl.getInstance(context).mogoServiceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl<BaseData>(RequestOptions.create(context)) {
ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl<BaseData>(RequestOptions.create(context)) {
override fun onSuccess(o: BaseData?) {
super.onSuccess(o)
// 接口请求成功内部同步v2x状态通知adas改变自车图标
ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog", false)
ServiceApisManager.serviceApis.statusManagerApi.setSeekHelping("ShareDialog", false)
isSeekHelp = false
}

View File

@@ -0,0 +1,17 @@
package com.mogo.module.share.manager
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.service.IMogoServiceApis
import com.mogo.service.MogoServicePaths
/**
* 全局管理IMogoServiceApis
*/
object ServiceApisManager {
lateinit var serviceApis: IMogoServiceApis
fun init(context: Context) {
serviceApis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis
}
}

View File

@@ -11,7 +11,7 @@ import com.mogo.utils.logger.Logger
*/
object UploadHelper {
fun upload(context:Context, type: String) {
ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true)
ServiceApisManager.serviceApis.statusManagerApi.setUploadingStatus("CARD_TYPE_ROAD_CONDITION", true)
Logger.d("UploadHelper", "upload ----> $type")
val intent = Intent()
intent.action = "com.zhidao.roadcondition.share"

View File

@@ -21,6 +21,7 @@ import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.module.IMogoSettingManager;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.share.IMogoShareManager;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
@@ -194,4 +195,10 @@ public interface IMogoServiceApis extends IProvider {
* @return
*/
IMogoMarkerService getMarkerService();
/**
* 其他模块调用分享框的显示和隐藏
* @return
*/
IMogoShareManager getShareManager();
}

View File

@@ -170,6 +170,7 @@ public class MogoServicePaths {
/**
* 顶部1/2屏管理
*/
@Deprecated
public static final String PATH_EXTENSIONS_TOP_VIEW_MANAGER = "/topview/api";
/**
@@ -177,4 +178,10 @@ public class MogoServicePaths {
*/
@Deprecated
public static final String PATH_MARKER_SERVICE = "/mogomarker/api";
/**
* 其他模块调用分享框
*/
@Deprecated
public static final String PATH_SHARE = "/extensions/share";
}

View File

@@ -0,0 +1,19 @@
package com.mogo.service.share;
import com.alibaba.android.arouter.facade.template.IProvider;
/**
* 分享框管理接口
* @author tongchenfei
*/
public interface IMogoShareManager extends IProvider {
/**
* 显示分享框
*/
void showShareDialog();
/**
* 隐藏分享框
*/
void dismissShareDialog();
}

View File

@@ -30,6 +30,7 @@ import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.module.IMogoSettingManager;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.share.IMogoShareManager;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
@@ -171,7 +172,12 @@ public class MogoServiceApis implements IMogoServiceApis {
return getApiInstance( IMogoMarkerService.class, MogoServicePaths.PATH_MARKER_SERVICE );
}
private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) {
@Override
public IMogoShareManager getShareManager() {
return getApiInstance(IMogoShareManager.class,MogoServicePaths.PATH_SHARE);
}
private static < T extends IProvider > T getApiInstance(Class< T > clazz, String path ) {
T inst = SingletonsHolder.get( clazz );
if ( inst == null ) {
synchronized ( sLock ) {