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