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/app/build.gradle b/app/build.gradle
index 88b199e4e5..d8ebdb280d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -55,7 +55,7 @@ android {
sourceSets {
main {
- manifest.srcFile 'src/independent/AndroidManifest.xml'
+ manifest.srcFile 'src/main/AndroidManifest.xml'
}
launcher {
manifest.srcFile 'src/launcher/AndroidManifest.xml'
diff --git a/gradle.properties b/gradle.properties
index a74df430a0..d93260870c 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -70,7 +70,7 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT
# 在线车辆F
MOGO_MODULE_ONLINECAR_VERSION=1.0.3.2
# v2x
-MOGO_MODULE_V2X_VERSION=1.0.23
+MOGO_MODULE_V2X_VERSION=1.0.24
# 媒体卡片
MOGO_MODULE_MEDIA_VERSION=1.0.4.11
# 推送
diff --git a/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml b/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml
index fcfddb2b4a..0d4d401316 100644
--- a/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml
+++ b/main-extensions/mogo-module-main-independent/src/main/AndroidManifest.xml
@@ -29,6 +29,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java
index 52bf70be04..63c9099486 100644
--- a/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java
+++ b/main-extensions/mogo-module-main-independent/src/main/java/com/zhidao/mogo/module/main/independent/MainIndependentActivity.java
@@ -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
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java
index ac70be137a..7eadd38ab6 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java
@@ -14,7 +14,8 @@ import com.mogo.module.apps.R;
* 基础类:均衡器、方控学习、蓝牙、FM、车载设置、AUX
*/
public enum AppEnum {
-
+ // 爱趣听
+ WeCarFlow("爱趣听","com.tencent.wecarflow", R.drawable.module_apps_ic_we_car_flow ),
//"QQ音乐",
QQMusic( "QQ音乐", "com.pvetec.musics", R.drawable.module_apps_ic_qq_music ),
diff --git a/modules/mogo-module-apps/src/main/res/drawable/module_apps_ic_we_car_flow.png b/modules/mogo-module-apps/src/main/res/drawable/module_apps_ic_we_car_flow.png
new file mode 100644
index 0000000000..95734bb594
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable/module_apps_ic_we_car_flow.png differ
diff --git a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
index 20818c844d..4ded331a36 100644
--- a/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
+++ b/modules/mogo-module-back/src/main/java/com/mogo/module/back/BackToMainHomeManager.java
@@ -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();
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java
index c77dc49167..701bfa73c2 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/CustomNaviInterrupter.java
@@ -36,10 +36,14 @@ class CustomNaviInterrupter implements Interrupter {
sInstance = null;
}
+ /**
+ * 判断是否用自己的导航
+ * @return true-用高德公版车机版地图 false-用Launcher自己的导航
+ */
@Override
public boolean interrupt() {
if ( AppUtils.isAppInstalled( AbsMogoApplication.getApp(), "com.autonavi.amapauto" )
- || DebugConfig.isUseCustomNavi() ) {
+ || !DebugConfig.isUseCustomNavi() ) {
Logger.d( TAG, "do not use custom map function." );
return true;
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java
index 41dffb39d1..551ec8e41c 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java
@@ -11,8 +11,12 @@ import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.MvpFragment;
+import com.mogo.module.extensions.userinfo.UserInfo;
+import com.mogo.utils.logger.Logger;
/**
+ * 天气,消息,个人头像
+ *
* @author congtaowang
* @since 2020-01-05
*
@@ -92,4 +96,9 @@ public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsP
mMsgContainer.setVisibility( hasMsg ? View.VISIBLE : View.GONE );
mMsgCounter.setText( amount > MAX_DISPLAY_MSG_AMOUNT ? getString( R.string.module_ext_str_dots ) : String.valueOf( amount ) );
}
+
+ @Override
+ public void renderUserInfo(UserInfo userInfo) {
+ Logger.d(TAG, "renderUserInfo: " + userInfo);
+ }
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
index f779f76aec..85d0463965 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
@@ -1,17 +1,36 @@
package com.mogo.module.extensions;
+import android.util.ArrayMap;
+
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
+import com.mogo.module.extensions.net.UserInfoNetApiServices;
+import com.mogo.module.extensions.userinfo.UserInfo;
+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.extensions.weather.Phenomena;
import com.mogo.module.extensions.weather.WeatherCallback;
import com.mogo.module.extensions.weather.WeatherInfo;
import com.mogo.module.extensions.weather.WeatherModel;
+import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.statusmanager.IMogoMsgCenter;
import com.mogo.service.statusmanager.IMogoMsgCenterListener;
+import com.mogo.utils.digest.DigestUtils;
+import com.mogo.utils.logger.Logger;
+import com.zhidao.auto.platform.util.DeviceUtil;
+
+import java.util.Map;
+
+import io.reactivex.SingleObserver;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
/**
@@ -29,9 +48,13 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
private IMogoMsgCenter mMsgCenter;
+ private IMogoNetwork mNetWork;
+
public ExtensionsPresenter( ExtensionsView view ) {
super( view );
mWeatherModel = new WeatherModel( getContext() );
+ mNetWork =
+ ((IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(view.getContext())).getNetworkApi();
}
@Override
@@ -65,6 +88,10 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
@Override
public void onResume( @NonNull LifecycleOwner owner ) {
super.onResume( owner );
+ if(ExtensionsConfig.needRequestUserInfo()){
+ // 相当于每次onResume都会请求一下个人信息,目的是能够相对及时的同步手机端的个人信息修改
+ requestUserInfo();
+ }
}
@Override
@@ -82,4 +109,49 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
mMsgCenter.unregisterMsgCenterListener( this );
}
}
+
+ private UserInfo userInfo;
+ public void requestUserInfo() {
+ Map params = new ArrayMap<>();
+ params.put("sn", DeviceUtil.getSn());
+ params.put("source", "2");
+ String sign = createSign(params, "JGqZw9");
+ params.put("sig", sign);
+ mNetWork.create(UserInfoNetApiServices.class, UserInfoConstant.getUserInfoBaseUrl()).requestUserInfo(params).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ }
+
+ @Override
+ public void onSuccess(UserInfoResponse userInfoBaseResponse) {
+ userInfo = userInfoBaseResponse.getResult();
+ Logger.d(TAG, "获取个人信息成功: " + userInfo);
+ mView.renderUserInfo(userInfo);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ e.printStackTrace();
+ Logger.e(TAG, e, "获取个人信息失败==");
+ }
+ });
+ }
+
+ private String createSign(Map map, String salt) {
+ try {
+ StringBuilder queryString = new StringBuilder();
+ for (Map.Entry entry : map.entrySet()) {
+ queryString.append(entry.getKey())
+ .append("=")
+ .append(entry.getValue())
+ .append("&");
+ }
+ queryString.append("key=").append(DigestUtils.shaHex(salt));
+ return DigestUtils.shaHex(queryString.toString()).toUpperCase();
+ } catch (Exception e) {
+ e.printStackTrace();
+ Logger.e(TAG, e, "createSign()");
+ return "";
+ }
+ }
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java
index fa1ef5e128..873761780f 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java
@@ -1,6 +1,7 @@
package com.mogo.module.extensions;
import com.mogo.commons.mvp.IView;
+import com.mogo.module.extensions.userinfo.UserInfo;
import com.mogo.module.extensions.weather.WeatherInfo;
/**
@@ -27,4 +28,10 @@ public interface ExtensionsView extends IView {
* @param amount 消息数量
*/
void renderMsgInfo( boolean hasMsg, int amount );
+
+ /**
+ * 刷新个人信息
+ * @param userInfo 个人信息
+ */
+ void renderUserInfo(UserInfo userInfo);
}
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 9520ef3000..341cda917f 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
@@ -34,6 +34,7 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener;
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
import com.mogo.module.common.dialog.WMDialog;
+import com.mogo.module.common.map.CustomNaviInterrupter;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.Scene;
import com.mogo.module.extensions.ExtensionsModuleConst;
@@ -222,13 +223,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 +343,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 +400,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();
@@ -428,13 +433,19 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
@Override
public void onStartNavi() {
TopViewAnimHelper.getInstance().showNaviView();
- mExitNavi.setVisibility( View.VISIBLE );
mMApUIController.changeMapMode( mCameraMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D );
MapCenterPointStrategy.setMapCenterPointBySceneAndDelay( mMApUIController, Scene.NAVI, 500, () -> {
return !mMogoNavi.isNaviing();
} );
- mDisplayOverview.setVisibility( View.VISIBLE );
- mCameraMode.setVisibility( View.VISIBLE );
+ if(CustomNaviInterrupter.getInstance().interrupt()){
+ mDisplayOverview.setVisibility(View.GONE);
+ mCameraMode.setVisibility(View.GONE);
+ mExitNavi.setVisibility( View.GONE );
+ }else {
+ mExitNavi.setVisibility( View.VISIBLE );
+ mDisplayOverview.setVisibility(View.VISIBLE);
+ mCameraMode.setVisibility( View.VISIBLE );
+ }
mApis.getAnalyticsApi().track( "Navigation_begin", new HashMap<>() );
}
@@ -507,7 +518,11 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
} else {
mDisplayOverviewText.setText( "全览" );
mDisplayOverviewText.setTextSize( TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize( R.dimen.module_ext_display_overview_textSize_large ) );
- mCameraMode.setVisibility( View.VISIBLE );
+ if(CustomNaviInterrupter.getInstance().interrupt()){
+ mCameraMode.setVisibility(View.GONE);
+ }else {
+ mCameraMode.setVisibility(View.VISIBLE);
+ }
}
}
}
@@ -549,9 +564,4 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
// 30s 后无论成功与否,停止动画
mUploadFrameAnimHandler.sendEmptyMessageDelayed( MSG_STOP_ANIM, 30_000 );
}
-
- @Override
- public void refreshUserInfo( UserInfo userInfo ) {
- Logger.d( TAG, "刷新用户信息: " + userInfo );
- }
}
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 5a921c613f..80e64a0dd2 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
@@ -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,8 @@ 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.module.share.manager.UploadHelper;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
@@ -65,9 +66,6 @@ public class EntrancePresenter extends Presenter {
private String mVoiceCmdType; //一级命令
private String mVoiceCmdShareType; //对某些一级命令里面细分的类型做处理
private IMogoStatusManager mStatusManager;
- private IMogoNetwork mNetWork;
-
- private UserInfo userInfo = null;
public EntrancePresenter(Context context, EntranceView view,
IMogoAuthorizeModuleManager authorizeModuleManager) {
@@ -79,8 +77,6 @@ public class EntrancePresenter extends Presenter {
mogoIntentManager = apis.getIntentManagerApi();
mIMogoAuthorizeModuleManager = authorizeModuleManager;
mStatusManager = apis.getStatusManagerApi();
- mNetWork = apis.getNetworkApi();
-
registerUnWake();
registerAwakeVoice();
@@ -100,9 +96,6 @@ public class EntrancePresenter extends Presenter {
@Override
public void onResume(@NonNull LifecycleOwner owner) {
super.onResume(owner);
- if (ExtensionsConfig.needRequestUserInfo() && userInfo == null) {
- requestUserInfo();
- }
}
/**
@@ -119,7 +112,7 @@ public class EntrancePresenter extends Presenter {
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 +220,7 @@ public class EntrancePresenter extends Presenter {
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 +251,7 @@ public class EntrancePresenter extends Presenter {
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 +259,7 @@ public class EntrancePresenter extends Presenter {
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 +283,7 @@ public class EntrancePresenter extends Presenter {
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 +297,7 @@ public class EntrancePresenter extends Presenter {
uploadTrfficCheck();
}
} else {
- ShareControl.getInstance(mContext).showDialog();
+ ServiceApisManager.serviceApis.getShareManager().showShareDialog();
Log.d(TAG, "handleNeedAuthorizeCmd 我要分享 ----> ");
traceData("2");
}
@@ -333,7 +326,7 @@ public class EntrancePresenter extends Presenter {
sendShareReceiver(REPORT_TANLU_BLOCK);
Logger.d("EntrancePresenter", "mogoIntentListener 上报路况 ----> ");
traceTypeData("1");
- ShareControl.getInstance(mContext).dismissDialog();
+ ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
private void uploadTrfficCheck() {
@@ -341,7 +334,7 @@ public class EntrancePresenter extends Presenter {
sendShareReceiver(REPORT_TANLU_TRAFFIC_CHECK);
Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> ");
traceTypeData("3");
- ShareControl.getInstance(mContext).dismissDialog();
+ ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
private void uploadRoadClosed() {
@@ -349,7 +342,7 @@ public class EntrancePresenter extends Presenter {
sendShareReceiver(REPORT_TANLU_CLOSURE);
Logger.d("EntrancePresenter", "mogoIntentListener 分享封路 ----> ");
traceTypeData("4");
- ShareControl.getInstance(mContext).dismissDialog();
+ ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
/**
@@ -368,7 +361,7 @@ public class EntrancePresenter extends Presenter {
// intent.setData(Uri.parse("freshthing://com.zhidao.fresh.things/shareOilPrice"));
// getContext().startActivity(intent);
// traceTypeData("2");
-// ShareControl.getInstance(mContext).dismissDialog();
+// ServiceApisManager.serviceApis.getShareManager().dismissShareDialog();
}
/**
@@ -376,12 +369,7 @@ public class EntrancePresenter extends Presenter {
*/
private void sendShareReceiver(String type) {
Logger.d("EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->");
- Intent intent = new Intent();
- intent.setAction("com.zhidao.roadcondition.share");
- intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
- intent.putExtra("type", type);
- getContext().sendBroadcast(intent);
+ UploadHelper.INSTANCE.upload(getContext(),type);
}
/**
@@ -415,48 +403,4 @@ public class EntrancePresenter extends Presenter {
AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK);
AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE);
}
-
- public void requestUserInfo() {
- Map params = new ArrayMap<>();
- params.put("sn", DeviceUtil.getSn());
- params.put("source", "2");
- String sign = createSign(params, "JGqZw9");
- params.put("sig", sign);
- mNetWork.create(UserInfoNetApiServices.class, UserInfoConstant.getUserInfoBaseUrl()).requestUserInfo(params).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SingleObserver() {
- @Override
- public void onSubscribe(Disposable d) {
- }
-
- @Override
- public void onSuccess(UserInfoResponse userInfoBaseResponse) {
- userInfo = userInfoBaseResponse.getResult();
- Logger.d(TAG, "获取个人信息成功: " + userInfo);
- mView.refreshUserInfo(userInfo);
- }
-
- @Override
- public void onError(Throwable e) {
- e.printStackTrace();
- Logger.e(TAG, e, "获取个人信息失败==");
- }
- });
- }
-
- private String createSign(Map map, String salt) {
- try {
- StringBuilder queryString = new StringBuilder();
- for (Map.Entry entry : map.entrySet()) {
- queryString.append(entry.getKey())
- .append("=")
- .append(entry.getValue())
- .append("&");
- }
- queryString.append("key=").append(DigestUtils.shaHex(salt));
- return DigestUtils.shaHex(queryString.toString()).toUpperCase();
- } catch (Exception e) {
- e.printStackTrace();
- Logger.e(TAG, e, "createSign()");
- return "";
- }
- }
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java
index 51fe0b568f..5f37f0256d 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java
@@ -10,7 +10,4 @@ import com.mogo.module.extensions.userinfo.UserInfo;
* 描述
*/
public interface EntranceView extends IView {
-
- void refreshUserInfo(UserInfo userInfo);
-
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/userinfo/UserInfo.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/userinfo/UserInfo.java
index 9526e292a9..4a0fffd814 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/userinfo/UserInfo.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/userinfo/UserInfo.java
@@ -95,4 +95,19 @@ public class UserInfo {
public void setActiveTime(String activeTime) {
this.activeTime = activeTime;
}
+
+ @Override
+ public String toString() {
+ return "UserInfo{" +
+ "userId='" + userId + '\'' +
+ ", phone='" + phone + '\'' +
+ ", displayName='" + displayName + '\'' +
+ ", additionalOne=" + additionalOne +
+ ", headImgurl='" + headImgurl + '\'' +
+ ", ownerAuthState=" + ownerAuthState +
+ ", score=" + score +
+ ", memberLevel='" + memberLevel + '\'' +
+ ", activeTime='" + activeTime + '\'' +
+ '}';
+ }
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
index 14ec2be9ab..b477536dcf 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/SchemeIntent.java
@@ -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;
}
diff --git a/modules/mogo-module-media/build.gradle b/modules/mogo-module-media/build.gradle
index eccfa5b7fd..d028e927fd 100644
--- a/modules/mogo-module-media/build.gradle
+++ b/modules/mogo-module-media/build.gradle
@@ -35,7 +35,7 @@ android {
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation fileTree(dir: 'libs', include: ['*.aar'])
annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.arouter
diff --git a/modules/mogo-module-media/libs/OPENSDK_Flow_cdb1c1a_1.0.1.30_release.aar b/modules/mogo-module-media/libs/OPENSDK_Flow_cdb1c1a_1.0.1.30_release.aar
new file mode 100644
index 0000000000..72f411cce2
Binary files /dev/null and b/modules/mogo-module-media/libs/OPENSDK_Flow_cdb1c1a_1.0.1.30_release.aar differ
diff --git a/modules/mogo-module-media/src/main/AndroidManifest.xml b/modules/mogo-module-media/src/main/AndroidManifest.xml
index 2b857c6071..4292dc7f05 100644
--- a/modules/mogo-module-media/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-media/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
+
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewProvider.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewProvider.java
index 8741bc36e9..c2e341752b 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewProvider.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaCardViewProvider.java
@@ -14,15 +14,12 @@ import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
-import com.mogo.utils.logger.Logger;
@Route( path = MediaConstants.TAG )
public class MediaCardViewProvider implements IMogoModuleProvider {
private static final String TAG = "MediaCardViewProvider";
- private MediaWindow mMediaWindow;
-
@Override
public Fragment createFragment( Context context, Bundle data ) {
@@ -35,10 +32,8 @@ public class MediaCardViewProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
ServiceMediaHandler.init( context );
-
- mMediaWindow = new MediaWindow();
- mMediaWindow.initMedia(context);
-
+ MediaWindow2 mediaWindow2 = new MediaWindow2();
+ mediaWindow2.initMedia(context);
}
@Override
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java
index 107206a46a..f13b506d43 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow.java
@@ -181,8 +181,12 @@ public class MediaWindow implements MediaView{
}
if (first || mMediaInfoData.getPlayState() == 1 || mMediaInfoData.getPlayState() == 2) {
- if (mWindowMaxTime != null) mWindowMaxTime.setText(Utils.calculateTime((int) mMediaInfoData.getMaxTime()));
- if (mWindowCurrTime != null) mWindowCurrTime.setText(Utils.calculateTime((int) mMediaInfoData.getCurTime()));
+ if (mWindowMaxTime != null){
+ mWindowMaxTime.setText(Utils.calculateTime((int) mMediaInfoData.getMaxTime()));
+ }
+ if (mWindowCurrTime != null){
+ mWindowCurrTime.setText(Utils.calculateTime((int) mMediaInfoData.getCurTime()));
+ }
}
if (mCircleImg != null){
@@ -286,7 +290,9 @@ public class MediaWindow implements MediaView{
}
- if (mCircleImg != null) mCircleImg.stopAnim();
+ if (mCircleImg != null){
+ mCircleImg.stopAnim();
+ }
if (type == 1 || type == 2 || type ==3){
UiThreadHandler.removeCallbacks(mRunnable);
@@ -417,10 +423,18 @@ public class MediaWindow implements MediaView{
bookid = leTingNewsData.getSid();
}
- if (mediaName == null) mediaName = "";
- if (artist == null) artist = "";
- if (cover == null) cover = "";
- if (bookid == null) bookid = "";
+ if (mediaName == null){
+ mediaName = "";
+ }
+ if (artist == null){
+ artist = "";
+ }
+ if (cover == null){
+ cover = "";
+ }
+ if (bookid == null){
+ bookid = "";
+ }
}
} catch (Exception e) {
e.printStackTrace();
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java
new file mode 100644
index 0000000000..2c89aead5d
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/MediaWindow2.java
@@ -0,0 +1,242 @@
+package com.mogo.module.media;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.mogo.module.media.constants.MusicConstant;
+import com.mogo.module.media.listener.NoDoubleClickListener;
+import com.mogo.module.media.model.MediaInfoData;
+import com.mogo.module.media.presenter.WeCarFlowPresenter;
+import com.mogo.module.media.utils.LaunchUtils;
+import com.mogo.module.media.utils.MusicControlBroadCast;
+import com.mogo.module.media.utils.Utils;
+import com.mogo.module.media.view.IMusicView;
+import com.mogo.module.media.widget.AnimCircleImageView;
+import com.mogo.module.media.widget.NoScrollSeekBar;
+import com.mogo.module.media.widget.ScrollingTextView;
+import com.mogo.utils.TipToast;
+import com.mogo.utils.glide.GlideApp;
+import com.mogo.utils.logger.Logger;
+
+/**
+ * 适配爱趣听的window
+ *
+ * @author tongchenfei
+ */
+public class MediaWindow2 implements IMusicView {
+
+ public static final String TAG = MediaWindow2.class.getName();
+ private Context mContext;
+ private WeCarFlowPresenter mPresenter;
+
+ private MediaInfoData mMediaInfoData = new MediaInfoData();
+
+ private View mWindowView;
+ private AnimCircleImageView mCircleImg;
+ private ScrollingTextView mScrollText;
+ private ImageView mWindowPlayPause;
+ private ImageView mWindowPlayNext;
+ private LinearLayout mWindowMediaCenter;
+ private TextView mWindowCurrTime;
+ private TextView mWindowMaxTime;
+ private NoScrollSeekBar mWindowProgress;
+
+ private boolean mHasAddWindow = false;
+ private boolean mTwoChange = false;
+ private boolean isFirstPlay = false;
+
+ public void initMedia(Context context) {
+ mContext = context;
+ mPresenter = new WeCarFlowPresenter(this);
+ mPresenter.init(context);
+
+ isFirstPlay = true;
+ }
+
+ private void addWindowView() {
+ if (ServiceMediaHandler.getMogoWindowManager() == null) {
+ return;
+ }
+
+ if (!mHasAddWindow) {
+ mHasAddWindow = true;
+ mWindowView =
+ LayoutInflater.from(mContext).inflate(R.layout.module_media_music_window_alert_layout, null);
+ mWindowView.setVisibility(View.VISIBLE);
+ mCircleImg = mWindowView.findViewById(R.id.window_circle_img);
+ mScrollText = mWindowView.findViewById(R.id.window_scroll_txt);
+ mWindowPlayPause = mWindowView.findViewById(R.id.window_play_pause);
+ mWindowPlayNext = mWindowView.findViewById(R.id.window_music_next);
+ mWindowMediaCenter = mWindowView.findViewById(R.id.window_media_center);
+ mWindowCurrTime = mWindowView.findViewById(R.id.window_current_time);
+ mWindowMaxTime = mWindowView.findViewById(R.id.window_max_time);
+ mWindowProgress = mWindowView.findViewById(R.id.window_progress_bar);
+ if (mWindowPlayPause != null) {
+ mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause);
+ }
+ int yPos =
+ getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location);
+ int xPos =
+ getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location_x);
+ ServiceMediaHandler.getMogoWindowManager().addView(mWindowView, xPos, yPos, false);
+ updateWindowUI(true);
+ mWindowMediaCenter.setOnClickListener(new NoDoubleClickListener() {
+ @Override
+ public void onClicks(View view) {
+ openAqtApp();
+ }
+ });
+
+ mWindowPlayPause.setOnClickListener(new NoDoubleClickListener() {
+ @Override
+ public void onClicks(View view) {
+ if (mMediaInfoData != null) {
+ if (mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PAUSE_OR_STOP) {
+ mPresenter.play(mMediaInfoData);
+ } else {
+ // 没有做详细判断,不是暂停就是播放
+ mPresenter.pause(mMediaInfoData);
+ }
+ } else {
+ openAqtApp();
+ }
+ }
+ });
+
+ mWindowPlayNext.setOnClickListener(new NoDoubleClickListener() {
+ @Override
+ public void onClicks(View view) {
+ if (mPresenter != null) {
+ mPresenter.next();
+ }
+ }
+ });
+ }
+ }
+
+ private void updateWindowUI() {
+ updateWindowUI(false);
+ }
+
+ private void updateWindowUI(boolean first) {
+ if (mWindowView == null) {
+ return;
+ }
+ if (mMediaInfoData != null) {
+ if (mMediaInfoData.getType() == MusicConstant.PLAY_STATE_ERROR||isFirstPlay) {
+ mWindowView.setVisibility(View.GONE);
+ } else {
+ mWindowView.setVisibility(View.VISIBLE);
+ }
+ } else {
+ mWindowView.setVisibility(View.GONE);
+ return;
+ }
+
+ if (mScrollText != null) {
+ mScrollText.setText(mMediaInfoData.getMediaName());
+ }
+
+ if (first || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_BUFF) {
+ if (mWindowMaxTime != null) {
+ mWindowMaxTime.setText(Utils.calculateTime((int) mMediaInfoData.getMaxTime()));
+ }
+ if (mWindowCurrTime != null) {
+ mWindowCurrTime.setText(Utils.calculateTime((int) mMediaInfoData.getCurTime()));
+ }
+ }
+
+ if (mCircleImg != null) {
+ com.bumptech.glide.request.RequestOptions options =
+ new com.bumptech.glide.request.RequestOptions()
+ .placeholder(R.drawable.module_media_share_default_icon);
+ GlideApp.with(mContext).applyDefaultRequestOptions(options).load(mMediaInfoData.getMediaImg()).into(mCircleImg);
+ }
+
+ }
+
+ @Override
+ public Context getContext() {
+ return mContext;
+ }
+
+ @Override
+ public void onMusicPlaying() {
+ Logger.d(TAG, "onMusicPlaying===" + mMediaInfoData);
+ isFirstPlay = false;
+ updateWindowUI(false);
+ if (mWindowPlayPause != null) {
+ mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_play);
+ }
+
+ if (mCircleImg != null) {
+ mCircleImg.startAnim();
+ }
+ }
+
+ @Override
+ public void onMusicPause() {
+ Logger.d(TAG, "onMusicPause: ===" + mMediaInfoData);
+ if (mWindowPlayPause != null) {
+ mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause);
+ }
+
+ if (mCircleImg != null) {
+ mCircleImg.stopAnim();
+ }
+ }
+
+ @Override
+ public void onMusicStopped() {
+ Logger.d(TAG, "onMusicStopped===" + mMediaInfoData);
+ if (mWindowPlayPause != null) {
+ mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause);
+ }
+
+ if (mCircleImg != null) {
+ mCircleImg.stopAnim();
+ }
+ }
+
+ @Override
+ public void onMediaInfoChanged(MediaInfoData mediaInfoData) {
+ Logger.d(TAG, "onMediaInfoChanged: " + mediaInfoData);
+ mMediaInfoData = mediaInfoData;
+ addWindowView();
+ updateWindowUI();
+ }
+
+ @Override
+ public void onMusicProgress(long current, long total) {
+// Logger.d(TAG, "onMusicProgress==current: " + current + " total: " + total);
+ if (mMediaInfoData != null) {
+ mMediaInfoData.setCurTime((int) current);
+ mMediaInfoData.setMaxTime((int) total);
+ }
+ if (mWindowCurrTime != null) {
+ mWindowCurrTime.setText(Utils.calculateTime((int) current));
+ mWindowMaxTime.setText(Utils.calculateTime((int) total));
+ }
+ try {
+ int progress =
+ (int) ((current * 1.0f * 100) / (total * 1.0f));
+ if (mWindowProgress != null) {
+ mWindowProgress.setProgress(progress);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void openAqtApp() {
+ try {
+ LaunchUtils.launchByPkg(mContext, "com.tencent.wecarflow");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/constants/MusicConstant.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/constants/MusicConstant.java
new file mode 100644
index 0000000000..e26222ae1f
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/constants/MusicConstant.java
@@ -0,0 +1,13 @@
+package com.mogo.module.media.constants;
+
+/**
+ * 音频相关常量
+ *
+ * @author tongchenfei
+ */
+public class MusicConstant {
+ public static final int PLAY_STATE_PLAYING = 1;
+ public static final int PLAY_STATE_BUFF = 2;
+ public static final int PLAY_STATE_PAUSE_OR_STOP = 0;
+ public static final int PLAY_STATE_ERROR = -1;
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/model/MediaInfoData.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/model/MediaInfoData.java
index aafffdbe03..a0ddf0f210 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/model/MediaInfoData.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/model/MediaInfoData.java
@@ -1,5 +1,7 @@
package com.mogo.module.media.model;
+import com.mogo.module.media.constants.MusicConstant;
+
import java.io.Serializable;
public class MediaInfoData implements Serializable {
@@ -142,4 +144,13 @@ public class MediaInfoData implements Serializable {
public void setBookInfo(String bookInfo) {
this.bookInfo = bookInfo;
}
+
+ @Override
+ public String toString() {
+ return "MediaInfoData{" +
+ "mediaName='" + mediaName + '\'' +
+ ", mediaImg='" + mediaImg + '\'' +
+ ", playState=" + playState +
+ '}';
+ }
}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/BaseMediaPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/BaseMediaPresenter.java
new file mode 100644
index 0000000000..103528a49a
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/BaseMediaPresenter.java
@@ -0,0 +1,53 @@
+package com.mogo.module.media.presenter;
+
+import android.content.Context;
+
+import com.mogo.commons.mvp.IView;
+import com.mogo.commons.mvp.Presenter;
+import com.mogo.module.media.model.MediaInfoData;
+
+/**
+ * 媒体播放presenter基类,目前没有整合到原MediaPresenter中,原来的qq音乐,喜马拉雅和懒人听书下掉了
+ *
+ * @author tongchenfei
+ */
+public abstract class BaseMediaPresenter extends Presenter {
+ public BaseMediaPresenter(V view) {
+ super(view);
+ }
+
+ /**
+ * 初始化
+ *
+ * @param context 上下文
+ */
+ public abstract void init(Context context);
+
+ /**
+ * 播放音乐
+ * @param mediaInfoData 待播放音乐信息
+ */
+ public abstract void play(MediaInfoData mediaInfoData);
+
+ /**
+ * 暂停播放
+ * @param mediaInfoData 待暂停音乐信息
+ */
+ public abstract void pause(MediaInfoData mediaInfoData);
+
+ /**
+ * 停止播放
+ * @param mediaInfoData 待停止播放音乐信息
+ */
+ public abstract void stop(MediaInfoData mediaInfoData);
+
+ /**
+ * 上一首
+ */
+ public abstract void pre();
+
+ /**
+ * 下一首
+ */
+ public abstract void next();
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java
new file mode 100644
index 0000000000..66ab3efecc
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/presenter/WeCarFlowPresenter.java
@@ -0,0 +1,198 @@
+package com.mogo.module.media.presenter;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LifecycleOwner;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.module.media.MediaConstants;
+import com.mogo.module.media.constants.MusicConstant;
+import com.mogo.module.media.model.MediaInfoData;
+import com.mogo.module.media.view.IMusicView;
+import com.mogo.service.IMogoServiceApis;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.logger.Logger;
+import com.tencent.wecarflow.flowoutside.sdk.BindListener;
+import com.tencent.wecarflow.flowoutside.sdk.FlowPlayControl;
+import com.tencent.wecarflow.flowoutside.sdk.MediaChangeListener;
+import com.tencent.wecarflow.flowoutside.sdk.MediaInfo;
+import com.tencent.wecarflow.flowoutside.sdk.PlayStateListener;
+import com.tencent.wecarflow.flowoutside.sdk.QueryCallback;
+
+/**
+ * 爱趣听presenter
+ *
+ * @author tongchenfei
+ */
+public class WeCarFlowPresenter extends BaseMediaPresenter {
+ private static final String TAG = "WeCarFlowPresenter";
+ public WeCarFlowPresenter(IMusicView view) {
+ super(view);
+ }
+
+ private Context context;
+
+ private MediaInfoData currentMedia;
+
+ private boolean isBind = true;
+ private IMogoServiceApis serviceApis;
+
+ private QueryCallback isPlayingCallback = new QueryCallback() {
+ @Override
+ public void onError(int i) {
+
+ }
+
+ @Override
+ public void onSuccess(Boolean aBoolean) {
+ currentMedia.setPlayState(aBoolean ? MusicConstant.PLAY_STATE_PLAYING :
+ MusicConstant.PLAY_STATE_PAUSE_OR_STOP);
+ if (mView != null) {
+ mView.onMediaInfoChanged(currentMedia);
+ }
+ }
+ };
+
+ private QueryCallback currentCallback = new QueryCallback() {
+ @Override
+ public void onError(int i) {
+
+ }
+
+ @Override
+ public void onSuccess(MediaInfo mediaInfo) {
+ currentMedia.setMediaName(mediaInfo.getMediaName());
+ currentMedia.setMediaImg(mediaInfo.getMediaImage());
+ if (mView != null) {
+ mView.onMediaInfoChanged(currentMedia);
+ }
+ }
+ };
+
+ @Override
+ public void init(Context context) {
+ this.context = context;
+ currentMedia = new MediaInfoData();
+
+ serviceApis =
+ (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
+
+ serviceApis.getStatusManagerApi().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
+ @Override
+ public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
+ if (isTrue) {
+ Logger.d(TAG, "onResume, isBind: " + isBind);
+ // 需要在resume时候判断绑定关系是否正常
+ if (!isBind) {
+ // 未绑定,需要重新绑定,同时第一次绑定初始化也是在此处
+ FlowPlayControl.getInstance().bindPlayService(context);
+ }
+ }
+ }
+ });
+
+ FlowPlayControl.getInstance().addBindListener(new BindListener() {
+ @Override
+ public void onServiceConnected() {
+ Logger.d(TAG, "onServiceConnected===");
+ isBind = true;
+ FlowPlayControl.getInstance().queryPlaying(isPlayingCallback);
+ FlowPlayControl.getInstance().queryCurrent(currentCallback);
+ }
+
+ @Override
+ public void onServiceDisconnected() {
+ Logger.e(TAG, "onServiceDisconnected===");
+ isBind = false;
+ }
+
+ @Override
+ public void onBindDied() {
+ Logger.e(TAG, "onBindDied===");
+ isBind = false;
+ }
+ });
+
+ FlowPlayControl.getInstance().addMediaChangeListener(new MediaChangeListener() {
+ @Override
+ public void onMediaChange(MediaInfo mediaInfo) {
+ Logger.d(TAG, "onMediaChange: " + mediaInfo);
+ Logger.d(TAG, "onMediaChange, img: " + mediaInfo.getMediaImage());
+ currentMedia.setMediaName(mediaInfo.getMediaName());
+ currentMedia.setMediaImg(mediaInfo.getMediaImage());
+ mView.onMediaInfoChanged(currentMedia);
+ }
+
+ @Override
+ public void onFavorChange(boolean b) {
+
+ }
+ });
+
+ FlowPlayControl.getInstance().addPlayStateListener(new PlayStateListener() {
+ @Override
+ public void onStart() {
+ if (mView != null && currentMedia != null) {
+ currentMedia.setPlayState(MusicConstant.PLAY_STATE_PLAYING);
+ mView.onMusicPlaying();
+ mView.onMediaInfoChanged(currentMedia);
+ }
+ }
+
+ @Override
+ public void onPause() {
+ if (mView != null && currentMedia != null) {
+ currentMedia.setPlayState(MusicConstant.PLAY_STATE_PAUSE_OR_STOP);
+ mView.onMusicPause();
+ mView.onMediaInfoChanged(currentMedia);
+ }
+ }
+
+ @Override
+ public void onStop() {
+ if (mView != null && currentMedia != null) {
+ currentMedia.setPlayState(MusicConstant.PLAY_STATE_PAUSE_OR_STOP);
+ mView.onMusicStopped();
+ mView.onMediaInfoChanged(currentMedia);
+ }
+ }
+
+ @Override
+ public void onProgress(String s, long current, long total) {
+ if (mView != null) {
+ mView.onMusicProgress(current, total);
+ }
+ }
+ });
+
+ FlowPlayControl.getInstance().bindPlayService(context);
+ }
+
+ @Override
+ public void play(MediaInfoData mediaInfoData) {
+ FlowPlayControl.getInstance().doPlay();
+ }
+
+ @Override
+ public void pause(MediaInfoData mediaInfoData) {
+ FlowPlayControl.getInstance().doPause();
+ }
+
+ @Override
+ public void stop(MediaInfoData mediaInfoData) {
+ FlowPlayControl.getInstance().doStop();
+ }
+
+ @Override
+ public void pre() {
+ FlowPlayControl.getInstance().doPre();
+ }
+
+ @Override
+ public void next() {
+ FlowPlayControl.getInstance().doNext();
+ }
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/LaunchUtils.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/LaunchUtils.java
new file mode 100644
index 0000000000..653a77601e
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/LaunchUtils.java
@@ -0,0 +1,29 @@
+package com.mogo.module.media.utils;
+
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * @author congtaowang
+ * @since 2020-02-03
+ *
+ * 描述
+ */
+public class LaunchUtils {
+
+ /**
+ * 通过包名启动app
+ *
+ * @param context
+ * @param pkg 包名
+ */
+ public static void launchByPkg( Context context, String pkg ) throws Exception {
+ Intent intent = getLaunchIntentForPackage( context, pkg );
+ intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
+ context.startActivity( intent );
+ }
+
+ public static Intent getLaunchIntentForPackage( Context context, String pkg ) {
+ return context.getPackageManager().getLaunchIntentForPackage( pkg );
+ }
+}
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/MusicControlBroadCast.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/MusicControlBroadCast.java
index 4a7a247c71..6ec22f102e 100644
--- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/MusicControlBroadCast.java
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/utils/MusicControlBroadCast.java
@@ -459,21 +459,23 @@ public class MusicControlBroadCast {
}
}
-// return null;
- MediaInfoData mediaInfoData = new MediaInfoData();
- mediaInfoData.setMediaId("001jiOrk2g389Y");
- mediaInfoData.setBookInfo("");
- mediaInfoData.setType(1);
- mediaInfoData.setMediaName("恭喜发财 (广场舞)");
- mediaInfoData.setMediaSinger("刘德华");
- mediaInfoData.setMediaType("物流派");
- mediaInfoData.setPlayState(0);
- mediaInfoData.setLocalMedia(false);
- mediaInfoData.setCurTime(0);
- mediaInfoData.setMaxTime(410*1000);
- mediaInfoData.setMediaUrl("http://isure.stream.qqmusic.qq.com/C200000s2wCd3pzdnA.m4a?guid=2000001271&vkey=8CE1A876F5079A6E4E9BCB8306252EF152F3D4F237B3BF4C1450B50BA7E065D3D55A0735FD2E957B129E83FF7D7D5D398479D53FE2171DF0&uin=&fromtag=50");
- mediaInfoData.setMediaImg("http://music.qq.com/musicbox/img/uccpic_error.jpg");
- return mediaInfoData;//刘德华的恭喜发财
+ return null;
+
+ // 测试代码吧?
+// MediaInfoData mediaInfoData = new MediaInfoData();
+// mediaInfoData.setMediaId("001jiOrk2g389Y");
+// mediaInfoData.setBookInfo("");
+// mediaInfoData.setType(1);
+// mediaInfoData.setMediaName("恭喜发财 (广场舞)");
+// mediaInfoData.setMediaSinger("刘德华");
+// mediaInfoData.setMediaType("物流派");
+// mediaInfoData.setPlayState(0);
+// mediaInfoData.setLocalMedia(false);
+// mediaInfoData.setCurTime(0);
+// mediaInfoData.setMaxTime(410*1000);
+// mediaInfoData.setMediaUrl("http://isure.stream.qqmusic.qq.com/C200000s2wCd3pzdnA.m4a?guid=2000001271&vkey=8CE1A876F5079A6E4E9BCB8306252EF152F3D4F237B3BF4C1450B50BA7E065D3D55A0735FD2E957B129E83FF7D7D5D398479D53FE2171DF0&uin=&fromtag=50");
+// mediaInfoData.setMediaImg("http://music.qq.com/musicbox/img/uccpic_error.jpg");
+// return mediaInfoData;//刘德华的恭喜发财
}
/**
diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java
new file mode 100644
index 0000000000..d0379ff238
--- /dev/null
+++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/view/IMusicView.java
@@ -0,0 +1,21 @@
+package com.mogo.module.media.view;
+
+import com.mogo.commons.mvp.IView;
+import com.mogo.module.media.model.MediaInfoData;
+
+/**
+ * 音频显示类的接口
+ *
+ * @author tongchenfei
+ */
+public interface IMusicView extends IView {
+ void onMediaInfoChanged(MediaInfoData mediaInfoData);
+
+ void onMusicPlaying();
+
+ void onMusicPause();
+
+ void onMusicStopped();
+
+ void onMusicProgress(long current,long total);
+}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
index 5307736cd1..a5b5aba610 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java
@@ -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);
+ }
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt
index 0d99d1655b..b8695ceb5d 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt
@@ -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()
}
}
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
index 056450ac89..519f098dea 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java
@@ -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();
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
index 70050fb729..9a9c1d949f 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt
@@ -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(RequestOptions.create(context)) {
+ ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(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(RequestOptions.create(context)) {
+ ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(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
}
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/ServiceApisManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/ServiceApisManager.kt
new file mode 100644
index 0000000000..74c0ab300d
--- /dev/null
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/ServiceApisManager.kt
@@ -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
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt
index 906c291da8..27133e2c38 100644
--- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt
+++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/UploadHelper.kt
@@ -11,10 +11,10 @@ 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"
+ intent.action = "com.zhidao.share.roadcondition.action"
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
intent.putExtra("type", type)
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
index 647a236561..73ba95f5a2 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java
@@ -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();
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
index 93986037c7..d511aaf799 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
@@ -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";
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java
new file mode 100644
index 0000000000..2ed5841ad8
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/share/IMogoShareManager.java
@@ -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();
+}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
index 534de90589..30f5a47ab1 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java
@@ -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 ) {