diff --git a/config.gradle b/config.gradle index 0cdac5de2e..ca2e153a19 100644 --- a/config.gradle +++ b/config.gradle @@ -84,6 +84,7 @@ targetSdkVersion : 22, // material material : 'com.google.android.material:material:1.1.0', + indicator : 'com.github.zhpanvip:viewpagerindicator:1.0.4', // modules moduletanlu : "com.mogo.module:module-tanlu:${MOGO_MODULE_TANLU_VERSION}", diff --git a/modules/mogo-module-guide/build.gradle b/modules/mogo-module-guide/build.gradle index bc18471261..44fa50b8ed 100644 --- a/modules/mogo-module-guide/build.gradle +++ b/modules/mogo-module-guide/build.gradle @@ -52,6 +52,7 @@ dependencies { implementation rootProject.ext.dependencies.arouter kapt rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.aspectj + implementation rootProject.ext.dependencies.indicator if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.mogoutils diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt index b9fbdb5303..bf596646f4 100644 --- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt +++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/fragment/GuideFragment.kt @@ -1,13 +1,17 @@ package com.mogo.module.guide.fragment +import androidx.recyclerview.widget.RecyclerView import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.voice.IMogoVoiceCmdCallBack import com.mogo.module.guide.GuideBizManager import com.mogo.module.guide.R import com.mogo.module.guide.util.speak import com.mogo.utils.logger.Logger +import com.zhpan.indicator.enums.IndicatorSlideMode +import com.zhpan.indicator.enums.IndicatorStyle import kotlinx.android.synthetic.main.module_guide_fragment.* + class GuideFragment : MvpFragment(), GuideConstract.View { companion object { @@ -28,6 +32,12 @@ class GuideFragment : MvpFragment(), GuideC Logger.d(TAG, "init Views") adapter = GuideAdapter(this) moduleGuideViewPager.adapter = adapter + (moduleGuideViewPager.getChildAt(0) as RecyclerView).layoutManager!!.isItemPrefetchEnabled = false + moduleGuideIndicator.setSliderColor(context!!.resources.getColor(R.color.module_guide_indicator_dark),context!!.resources.getColor(R.color.module_guide_indicator_white)) + .setSliderWidth(context!!.resources.getDimension(R.dimen.dp_11)) + .setSlideMode(IndicatorSlideMode.NORMAL) + .setIndicatorStyle(IndicatorStyle.CIRCLE) + .setupWithViewPager(moduleGuideViewPager) } fun moveToNext() { diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt index 9b2313a63f..50da098a41 100644 --- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt +++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFiveFragment.kt @@ -29,6 +29,10 @@ class GuideStageFiveFragment : MvpFragment>, View.OnClic override fun initViews() { module_guide_page_left.setOnClickListener(this) module_guide_tv_jump.setOnClickListener(this) + } + + override fun onResume() { + super.onResume() speak(context!!,context!!.resources.getString(R.string.module_guide_voice_page_five),object : IMogoVoiceCmdCallBack { override fun onTTSEnd(ttsId: String?, tts: String?) { containerFragment?.closeGuideFragment() diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt index 23730d54d6..3af2541b61 100644 --- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt +++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageFourFragment.kt @@ -30,6 +30,10 @@ class GuideStageFourFragment : MvpFragment>, View.OnClic module_guide_page_left.setOnClickListener(this) module_guide_page_right.setOnClickListener(this) module_guide_tv_jump.setOnClickListener(this) + } + + override fun onResume() { + super.onResume() speak(context!!,context!!.resources.getString(R.string.module_guide_voice_page_four),object : IMogoVoiceCmdCallBack { override fun onTTSEnd(ttsId: String?, tts: String?) { containerFragment?.moveToNext() diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt index 1f92a4ad19..4a288fbb1c 100644 --- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt +++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageOneFragment.kt @@ -33,6 +33,10 @@ class GuideStageOneFragment : MvpFragment>, View.OnClick AnalyticsUtil.track(INVOKE_TRACK_SHOW, hashMapOf("pages_num" to 1)) module_guide_page_right.setOnClickListener(this) module_guide_tv_jump.setOnClickListener(this) + } + + override fun onResume() { + super.onResume() speak(context!!,context!!.resources.getString(R.string.module_guide_voice_page_one),object : IMogoVoiceCmdCallBack { override fun onTTSEnd(ttsId: String?, tts: String?) { containerFragment?.moveToNext() diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt index 47c22aa36b..6dc6a4ac4a 100644 --- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt +++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageThreeFragment.kt @@ -30,6 +30,10 @@ class GuideStageThreeFragment : MvpFragment>, View.OnCli module_guide_page_left.setOnClickListener(this) module_guide_page_right.setOnClickListener(this) module_guide_tv_jump.setOnClickListener(this) + } + + override fun onResume() { + super.onResume() speak(context!!,context!!.resources.getString(R.string.module_guide_voice_page_three),object : IMogoVoiceCmdCallBack { override fun onTTSEnd(ttsId: String?, tts: String?) { containerFragment?.moveToNext() diff --git a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt index d103ac8ed9..23a59b8afc 100644 --- a/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt +++ b/modules/mogo-module-guide/src/main/java/com/mogo/module/guide/guide/GuideStageTwoFragment.kt @@ -30,6 +30,10 @@ class GuideStageTwoFragment : MvpFragment>, View.OnClick module_guide_page_left.setOnClickListener(this) module_guide_page_right.setOnClickListener(this) module_guide_tv_jump.setOnClickListener(this) + } + + override fun onResume() { + super.onResume() speak(context!!,context!!.resources.getString(R.string.module_guide_voice_page_two),object : IMogoVoiceCmdCallBack { override fun onTTSEnd(ttsId: String?, tts: String?) { containerFragment?.moveToNext() diff --git a/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml b/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml index d8c3c419fb..40809dd6ff 100644 --- a/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml +++ b/modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml @@ -12,4 +12,13 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + \ No newline at end of file diff --git a/modules/mogo-module-guide/src/main/res/values/color.xml b/modules/mogo-module-guide/src/main/res/values/color.xml index 7ee5cd71b6..1620e6c437 100644 --- a/modules/mogo-module-guide/src/main/res/values/color.xml +++ b/modules/mogo-module-guide/src/main/res/values/color.xml @@ -1,4 +1,6 @@ #3B91FF + #ccffffff + #ffffff \ No newline at end of file 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 f9e0479657..b5e29e66bc 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 @@ -3,56 +3,60 @@ package com.mogo.module.share; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.os.Bundle; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; +import android.os.Handler; +import android.os.Message; +import android.util.ArrayMap; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.commons.network.Utils; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; -import com.mogo.map.listener.IMogoMapListener; -import com.mogo.map.location.IMogoLocationListener; -import com.mogo.map.marker.IMogoMarkerClickListener; -import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.location.MogoLocation; import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.common.dialog.BaseFloatDialog; +import com.mogo.module.share.bean.FixableButton; +import com.mogo.module.share.bean.ShareButtonConfigResponse; +import com.mogo.module.share.bean.ShareConfigRequest; import com.mogo.module.share.bean.StepAfterAuth; +import com.mogo.module.share.constant.HttpConstant; import com.mogo.module.share.constant.ShareConstants; -import com.mogo.module.share.dialog.FixableShareDialog; import com.mogo.module.share.dialog.GridFixableShareDialog; -import com.mogo.module.share.dialog.LaucherShareDialog; import com.mogo.module.share.manager.ServiceApisManager; import com.mogo.module.share.manager.UploadHelper; +import com.mogo.module.share.net.ShareApiService; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; -import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.share.IMogoShareManager; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.service.tanlu.IMogoTanluProvider; import com.mogo.service.tanlu.TanluUploadParams; +import com.mogo.utils.NetworkUtils; import com.mogo.utils.TipToast; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; +import com.mogo.utils.network.utils.GsonUtil; +import com.mogo.utils.storage.SharedPrefsMgr; import org.jetbrains.annotations.NotNull; import org.json.JSONObject; +import java.util.List; +import java.util.Map; + +import io.reactivex.schedulers.Schedulers; + import static com.mogo.module.share.bean.StepAfterAuthKt.STEP_AFTER_AUTH_TYPE_SEEK_HELP; import static com.mogo.module.share.bean.StepAfterAuthKt.STEP_AFTER_AUTH_TYPE_SHOW_DIALOG; import static com.mogo.module.share.bean.StepAfterAuthKt.STEP_AFTER_AUTH_TYPE_UPLOAD; -import static com.mogo.module.share.constant.ShareConstants.CMD_CANCEL_SHARE; -import static com.mogo.module.share.constant.ShareConstants.CMD_ROAD_CLOSURE; -import static com.mogo.module.share.constant.ShareConstants.CMD_TRAFFIC_CHECK; -import static com.mogo.module.share.constant.ShareConstants.CMD_UPLOAD_ACCIDENT; -import static com.mogo.module.share.constant.ShareConstants.CMD_UPLOAD_BLOCK; +import static com.mogo.module.share.constant.ShareConstants.KEY_SHARE_CONFIG; import static com.mogo.module.share.constant.ShareConstants.UNWAKE_CANCEL_SHARE; import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_ACCIDENT; import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_DENSE_FOG; @@ -65,12 +69,7 @@ import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_ROAD_I import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_SEEK_HELP; import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_STAGNANT_WATER; import static com.mogo.module.share.constant.ShareConstants.UNWAKE_UPLOAD_TRAFFIC_CHECK; -import static com.mogo.module.share.constant.ShareConstants.UPLOAD_DENSE_FOG; import static com.mogo.module.share.constant.ShareConstants.UPLOAD_REAL_TIME_TRAFFIC; -import static com.mogo.module.share.constant.ShareConstants.UPLOAD_ROAD_CONSTRUCTION; -import static com.mogo.module.share.constant.ShareConstants.UPLOAD_ROAD_ICY; -import static com.mogo.module.share.constant.ShareConstants.UPLOAD_SEEK_HELP; -import static com.mogo.module.share.constant.ShareConstants.UPLOAD_STAGNANT_WATER; import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_GO_TO_SHARE; import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_NO_REPLY_SHARE_DIALOG_CLOSE; import static com.mogo.module.share.constant.ShareConstants.VOICE_CMD_PUB_ROAD_CONDITION; @@ -94,7 +93,7 @@ import static com.mogo.service.tanlu.IMogoTanluProvider.TYPE_TRAFFIC_CHECK; * @since 2020-01-10 */ @Route(path = MogoServicePaths.PATH_SHARE) -public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMogoVoiceCmdCallBack { +public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMogoVoiceCmdCallBack, Handler.Callback { private static final String TAG = "ShareControl"; private Context mContext; @@ -204,6 +203,20 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo } }); } + + ServiceApisManager.serviceApis.getStatusManagerApi().registerStatusChangedListener(TAG, StatusDescriptor.ACC_STATUS, new IMogoStatusChangedListener() { + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + if (isTrue) { + queryShareConfigRetryTime = 0; + queryShareButtonConfig(); + } + } + }); + + // 获取分享框配置信息 + queryShareConfigRetryTime = 0; + queryShareButtonConfig(); Logger.d(TAG,"init over===="); } @@ -438,59 +451,73 @@ public class ShareControl implements IMogoShareManager, IMogoIntentListener, IMo authorizeModuleManager.invokeAuthorization(AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE); } - @Override - public Fragment createFragment(Context context, Bundle data) { - return null; + private void queryShareButtonConfig(){ + if (NetworkUtils.isConnected(mContext)) { + // 有网,直接请求 + MogoLocation location = ServiceApisManager.serviceApis.getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation(); + Map params = new ArrayMap<>(); + ShareConfigRequest request = new ShareConfigRequest(Utils.getSn(), location.getAdCode()); + params.put("data", request.toJson()); + ServiceApisManager.serviceApis.getNetworkApi().create(ShareApiService.class, + HttpConstant.Companion.getNetHost()).queryShareButtonConfig(params).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { + @Override + public void onSuccess(ShareButtonConfigResponse o) { + super.onSuccess(o); + String config = ""; + if (o.getDetailMsg() != null) { + List btnList = o.getDetailMsg().getData(); + if(btnList != null&&!btnList.isEmpty()) { + config = GsonUtil.jsonFromObject(o.getDetailMsg().getData()); + Logger.d(TAG, "获取分享框成功:" + config); + }else { + Logger.d(TAG, "获取分享框成功,但是data没有内容"); + } + }else{ + Logger.d(TAG,"获取分享框成功,但是detailMsg没有内容"); + } + Logger.d(TAG, "获取分享框配置成功: " + config); + SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG, "获取分享框配置失败: " + e.getMessage()); + retryQueryShareConfig(); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + Logger.d(TAG, "获取分享框配置失败: " + code + ", " + message); + retryQueryShareConfig(); + } + }); + }else{ + // 重试 + retryQueryShareConfig(); + } + queryShareConfigRetryTime++; } - @Override - public View createView(Context context) { - return null; - } - - @NonNull - @Override - public String getModuleName() { - return "ShareControl"; + private static final int MSG_QUERY_SHARE_CONFIG_RETRY = 1001; + private int queryShareConfigRetryTime = 0; + private static final int QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD = 10; + private void retryQueryShareConfig(){ + if(queryShareConfigRetryTime > QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD){ + // 重试次数超过QUERY_SHARE_CONFIG_RETRY_TIME_THRESHOLD,不再重试 + return; + } + handler.sendEmptyMessageDelayed(MSG_QUERY_SHARE_CONFIG_RETRY, 3000); } + private Handler handler = new Handler(this); @Override - public IMogoModuleLifecycle getCardLifecycle() { - return null; - } - - @Override - public IMogoMapListener getMapListener() { - return null; - } - - @Override - public int getType() { - return 0; - } - - @Override - public IMogoNaviListener getNaviListener() { - return null; - } - - @Override - public IMogoLocationListener getLocationListener() { - return null; - } - - @Override - public IMogoMarkerClickListener getMarkerClickListener() { - return null; - } - - @Override - public String getAppPackage() { - return ""; - } - - @Override - public String getAppName() { - return ""; + public boolean handleMessage(Message msg) { + if (msg.what == MSG_QUERY_SHARE_CONFIG_RETRY) { + queryShareButtonConfig(); + return true; + } + return false; } } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt index bb720041a5..a0fa5d68ab 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/adapter/ShareBtnAdapter.kt @@ -38,7 +38,7 @@ class ShareBtnAdapter(val context:Context): RecyclerView.Adapter) \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/ShareConfigRequest.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/ShareConfigRequest.kt new file mode 100644 index 0000000000..7eb289d236 --- /dev/null +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/bean/ShareConfigRequest.kt @@ -0,0 +1,9 @@ +package com.mogo.module.share.bean + +import com.mogo.utils.network.utils.GsonUtil + +class ShareConfigRequest(val sn:String,val adCode:String) { + fun toJson():String{ + return GsonUtil.jsonFromObject(this) + } +} \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java index 580a25a8f4..e55fcb61c9 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java @@ -81,4 +81,9 @@ public class ShareConstants { * 这个是实时路况,不是拥堵,拥堵放在了extention模块里面处理 */ public static final String VOICE_CMD_PUB_ROAD_CONDITION = "com.zhidao.pathfinder.report.roadCondition"; + + /** + * 分享框配置本地缓存的key + */ + public static final String KEY_SHARE_CONFIG = "SHARE_BUTTON_CONFIG"; } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/FixableShareDialog.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/FixableShareDialog.kt deleted file mode 100644 index 0148f6fe3a..0000000000 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/FixableShareDialog.kt +++ /dev/null @@ -1,140 +0,0 @@ -package com.mogo.module.share.dialog - -import android.content.Context -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter -import com.mogo.commons.debug.DebugConfig -import com.mogo.module.common.dialog.BaseFloatDialog -import com.mogo.module.common.utils.CarSeries -import com.mogo.module.share.R -import com.mogo.module.share.adapter.ShareBtnAdapter -import com.mogo.module.share.bean.FixableButton -import com.mogo.module.share.manager.ISeekHelpListener -import com.mogo.module.share.manager.SeekHelpManager.removeSeekHelpListener -import com.mogo.module.share.manager.UploadHelper.upload -import com.mogo.service.IMogoServiceApis -import com.mogo.service.MogoServicePaths -import com.mogo.service.analytics.IMogoAnalytics -import com.mogo.service.statusmanager.IMogoStatusManager -import com.mogo.service.tanlu.IMogoTanluProvider -import com.mogo.service.tanlu.TanluUploadParams -import com.mogo.utils.logger.Logger -import kotlin.random.Random - - -/** - * 可动态设置内容的Dialog - * 由于和左侧Adas冲突,改成了windowManager方式实现,这种实现方式的问题是,无法监测back键的事件 - * @since 2020-01-10 - * @author tongchenfei - */ -class FixableShareDialog(private val mContext: Context) : BaseFloatDialog(mContext) { - private val isShown = false - private val mAnalytics: IMogoAnalytics - private val mStatusManager: IMogoStatusManager - private val mApis: IMogoServiceApis - private lateinit var btnRecycler: RecyclerView - private lateinit var btnAdapter:ShareBtnAdapter - - private fun setWrapContent() { - val window = window - if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD) { - if (window != null) { - val lp = window.attributes - lp.width = 1024 - lp.height = 600 - window.attributes = lp - } - } else if (CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X) { - if (window != null) { - val lp = window.attributes - lp.width = 1920 - lp.height = 1080 - window.attributes = lp - } - } else { - if (window != null) { - val lp = window.attributes - lp.width = 1024 - lp.height = 600 - window.attributes = lp - } - } - } - - private fun initView() { - Logger.d(TAG, "test-------3") - setContentView(R.layout.launcher_dialog_share_with_gride) - setWrapContent() - - btnRecycler = findViewById(R.id.moduleShareBtnRecyclerView) - val manager = GridLayoutManager(mContext, 5, GridLayoutManager.VERTICAL, false) - manager.isAutoMeasureEnabled = true - btnAdapter = ShareBtnAdapter(mContext) - btnRecycler.adapter = btnAdapter - btnAdapter.btnClickListener = { - Logger.d(TAG, "btn click: $it") - randomGenerateBtn() - } - randomGenerateBtn() - } - - private fun randomGenerateBtn(){ - val random = Random.nextInt(1, 10) - val list = ArrayList() - for (i in 0 until random) { - list.add(FixableButton()) - } - btnAdapter.setFixableButtonList(list) - } - - private val seekListener: ISeekHelpListener = object : ISeekHelpListener { - override fun onSeekHelpSuccess() { - Logger.d(TAG, "上报求助完成,成功") - removeSeekHelpListener(this) - dismiss() - } - - override fun onSeekHelpFail() { - Logger.d(TAG, "上报求助完成,失败") - removeSeekHelpListener(this) - dismiss() - } - } - - /** - * 发送广播 1拥堵,2交通检查,3封路 - */ - private fun sendShareReceiver(type: String) { - val params = TanluUploadParams(type, IMogoTanluProvider.UPLOAD_FROM_USER) - upload(mContext, params, true) - } - - override fun show() { - Logger.d(TAG, "onShow====") - if (!DebugConfig.isLauncher()) { - mApis.adasControllerApi.closeADAS() - } - super.show() - } - - override fun dismiss() { - Logger.d(TAG, "onDismiss=====") - if (!DebugConfig.isLauncher() && mApis.statusManagerApi.isMainPageOnResume) { - mApis.adasControllerApi.showADAS() - } - super.dismiss() - } - - companion object { - private const val TAG = "FixableShareDialog" - } - - init { - mApis = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(mContext) as IMogoServiceApis - mAnalytics = mApis.analyticsApi - mStatusManager = mApis.statusManagerApi - initView() - } -} \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt index fbbef80697..fa3b868954 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt @@ -22,6 +22,11 @@ import com.mogo.service.tanlu.TanluUploadParams import com.mogo.utils.logger.Logger import kotlin.random.Random +/** + * 可动态配置的分享对话框 + * + * @author tongchenfei + */ class GridFixableShareDialog(context:Context):BaseFloatDialog(context) { private val isShown = false private val mAnalytics: IMogoAnalytics @@ -73,8 +78,6 @@ class GridFixableShareDialog(context:Context):BaseFloatDialog(context) { dismiss() } findViewById(R.id.flShareDialogContainer).setOnClickListener { dismiss() } - - gridBtnManager.showDefaultBtns() } private fun randomGenerateBtn(){ @@ -112,6 +115,7 @@ class GridFixableShareDialog(context:Context):BaseFloatDialog(context) { if (!DebugConfig.isLauncher()) { mApis.adasControllerApi.closeADAS() } + gridBtnManager.showShareButton() super.show() } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt index 65dd00d2da..f3c21f45b0 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/GridBtnManager.kt @@ -3,19 +3,25 @@ package com.mogo.module.share.manager import android.content.Context import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.widget.GridLayout import android.widget.ImageView import android.widget.TextView import com.mogo.module.share.R import com.mogo.module.share.bean.FixableButton +import com.mogo.module.share.constant.ShareConstants import com.mogo.service.tanlu.IMogoTanluProvider import com.mogo.utils.glide.GlideApp +import com.mogo.utils.logger.Logger +import com.mogo.utils.network.utils.GsonUtil +import com.mogo.utils.storage.SharedPrefsMgr /** * 用来管理生成对应的分享按钮 */ -class GridBtnManager(val context: Context, val container: GridLayout) { +class GridBtnManager(val context: Context,private val container: GridLayout) { + companion object{ + const val TAG = "GridBtnManager" + } private val inflater = LayoutInflater.from(context) fun resetContainer() { @@ -32,7 +38,7 @@ class GridBtnManager(val context: Context, val container: GridLayout) { } else { GlideApp.with(context).load(button.iconRes).centerInside().into(img) } - content.text = button.content + content.text = button.title view.setOnClickListener { btnClickListener?.invoke(button) } @@ -40,18 +46,28 @@ class GridBtnManager(val context: Context, val container: GridLayout) { return view } - fun showDefaultBtns() { + fun showShareButton() { resetContainer() - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_BLOCK, iconRes = R.drawable.share_block_up, content = "拥堵")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_TRAFFIC_CHECK, iconRes = R.drawable.share_traffic_check, content = "交通检查")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_CLOSURE, iconRes = R.drawable.share_road_closure, content = "封路")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ACCIDENT, iconRes = R.drawable.share_accident, content = "事故")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_CONSTRUCTION, iconRes = R.drawable.share_road_construction, content = "道路施工")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_REAL_TIME_TRAFFIC, iconRes = R.drawable.share_real_time_traffic, content = "实时路况")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_SEEK_HELP, iconRes = R.drawable.share_seek_help, content = "故障求助")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_STAGNANT_WATER, iconRes = R.drawable.share_stagnant_water, content = "道路积水")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_ICY, iconRes = R.drawable.share_road_icy, content = "道路结冰")) - generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_DENSE_FOG, iconRes = R.drawable.share_dense_fog, content = "浓雾")) + val config = SharedPrefsMgr.getInstance(context).getString(ShareConstants.KEY_SHARE_CONFIG) + Logger.d(TAG, "showDefaultBtns: $config") + if(config.isEmpty()) { + // 默认的全部十个按钮 + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_BLOCK, iconRes = R.drawable.share_block_up, title = "拥堵")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_TRAFFIC_CHECK, iconRes = R.drawable.share_traffic_check, title = "交通检查")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_CLOSURE, iconRes = R.drawable.share_road_closure, title = "封路")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ACCIDENT, iconRes = R.drawable.share_accident, title = "事故")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_CONSTRUCTION, iconRes = R.drawable.share_road_construction, title = "道路施工")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_REAL_TIME_TRAFFIC, iconRes = R.drawable.share_real_time_traffic, title = "实时路况")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_SEEK_HELP, iconRes = R.drawable.share_seek_help, title = "故障求助")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_STAGNANT_WATER, iconRes = R.drawable.share_stagnant_water, title = "道路积水")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_ROAD_ICY, iconRes = R.drawable.share_road_icy, title = "道路结冰")) + generateShareButton(FixableButton(poiType = IMogoTanluProvider.TYPE_DENSE_FOG, iconRes = R.drawable.share_dense_fog, title = "浓雾")) + }else{ + val btnList = GsonUtil.arrayFromJson(config, FixableButton::class.java) + btnList.forEach {btn-> + generateShareButton(btn) + } + } } private var btnClickListener: ((fixableButton: FixableButton) -> Unit)? = null diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt index a0cf947886..0919a94738 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/net/ShareApiService.kt @@ -2,7 +2,9 @@ package com.mogo.module.share.net import com.mogo.commons.data.BaseData import com.mogo.module.share.bean.AverateSpeedResponse +import com.mogo.module.share.bean.ShareButtonConfigResponse import io.reactivex.Observable +import io.reactivex.Single import okhttp3.RequestBody import retrofit2.http.* @@ -23,4 +25,11 @@ interface ShareApiService { @Headers("Content-type:application/json;charset=UTF-8") @POST("/deva/car/path/no/poiStrategyCheck/v1") fun sendAverageSpeedForBlockStrategy(@Body request:RequestBody,@Query("sn") sn:String):Observable + + /** + * 获取分享框服务端配置 + */ + @FormUrlEncoded + @POST("/yycp-geoIndex-preSearch-service/car/search/no/searchNearbyInformation/v1") + fun queryShareButtonConfig(@FieldMap param: Map):Observable } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_with_gride.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_with_gride.xml deleted file mode 100644 index e98f899a4a..0000000000 --- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_with_gride.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png index a4c313e353..6ab0b1547c 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_shadow_bg.9.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png index a4c313e353..2466405ac2 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_shadow_bg.9.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png index 1de561aa65..b8c97e4a3a 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_shadow_bg.9.png differ diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml b/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml index 70a8bdcd36..50e6726c0c 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/view_event_panel_history_count.xml @@ -12,8 +12,8 @@ diff --git a/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml index 28ecec3d52..f533855896 100644 --- a/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml @@ -57,7 +57,7 @@ 16px 17px 15.4px - 80px + 82px 16px 117px 200px @@ -73,7 +73,6 @@ 15px 29px -8px - 65px diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml index 9c31211f00..a32a64e53a 100644 --- a/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml @@ -56,6 +56,5 @@ 42px 16px 120px - 114px diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml index 30bd6a2d2c..76dee8d2a8 100644 --- a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml @@ -56,7 +56,7 @@ 31.9px 26px 30px - 136px + 140px 219px 400px 281px diff --git a/modules/mogo-module-v2x/src/main/res/values/dimens.xml b/modules/mogo-module-v2x/src/main/res/values/dimens.xml index 41926f091f..577e034f68 100644 --- a/modules/mogo-module-v2x/src/main/res/values/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values/dimens.xml @@ -57,7 +57,7 @@ 16px 16px 20px - 74px + 82px 16px 117px 200px @@ -73,7 +73,6 @@ 15px 29px -8px - 38px 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 index f74b14b110..17a29d3455 100644 --- 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 @@ -2,13 +2,14 @@ package com.mogo.service.share; import android.content.Context; +import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.service.module.IMogoModuleProvider; /** * 分享框管理接口 * @author tongchenfei */ -public interface IMogoShareManager extends IMogoModuleProvider { +public interface IMogoShareManager extends IProvider { /** * 显示分享框 */ diff --git a/skin/mogo-skin-light/src/main/module-v2x-res/drawable-ldpi/v2x_shadow_bg_light.9.png b/skin/mogo-skin-light/src/main/module-v2x-res/drawable-ldpi/v2x_shadow_bg_light.9.png new file mode 100644 index 0000000000..36ea7d6655 Binary files /dev/null and b/skin/mogo-skin-light/src/main/module-v2x-res/drawable-ldpi/v2x_shadow_bg_light.9.png differ diff --git a/skin/mogo-skin-light/src/main/module-v2x-res/drawable-xhdpi/v2x_shadow_bg_light.9.png b/skin/mogo-skin-light/src/main/module-v2x-res/drawable-xhdpi/v2x_shadow_bg_light.9.png index e69d3fbacb..c351b20250 100644 Binary files a/skin/mogo-skin-light/src/main/module-v2x-res/drawable-xhdpi/v2x_shadow_bg_light.9.png and b/skin/mogo-skin-light/src/main/module-v2x-res/drawable-xhdpi/v2x_shadow_bg_light.9.png differ