From d8f38dd90d75fd87a045487e1c02d28a5bbf88e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 11 Aug 2020 18:46:40 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E5=91=A8?= =?UTF-8?q?=E8=BE=B9=E4=BA=8B=E4=BB=B6=E7=9A=84=E5=9F=BA=E7=A1=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82=E8=BF=98=E5=B7=AE=E6=95=B0=E6=8D=AE=E9=80=9A?= =?UTF-8?q?=E8=AE=AF=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/holder/V2XOtherSeekHelpVH.java | 22 +-- .../V2XScenarioHistoryIllegalParkVH.java | 78 +++++----- .../V2XScenarioHistoryOtherSeekHelpVH.java | 144 ++++++++++++++++++ .../holder/V2XScenarioHistoryRoadEventVH.java | 88 ++++++----- .../v2x/scenario/impl/AbsV2XScenario.java | 7 +- .../v2x/scenario/impl/V2XScenarioManager.java | 23 --- .../scene/seek/V2XSeekHelpScenario.java | 50 ++++-- .../scene/seek/V2XSeekHelpWindow.java | 25 +-- 8 files changed, 289 insertions(+), 148 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java index 9a823dea8d..d3c525233c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java @@ -118,6 +118,16 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { @Override public void initView(V2XEventShowEntity v2XEventShowEntity) { mV2XPushMessageEntity = v2XEventShowEntity.getV2XPushMessageEntity(); + try { + MarkerLocation markerLocation = new MarkerLocation(); + markerLocation.setLon(mV2XPushMessageEntity.getLon()); + markerLocation.setLat(mV2XPushMessageEntity.getLat()); + mNoveltyInfo = new MarkerExploreWay(); + mNoveltyInfo.setLocation(markerLocation); + } catch (Exception e) { + e.printStackTrace(); + } + // 只有自研车机才会 有车聊聊通话 if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { // 判断是否可以打电话 @@ -143,7 +153,7 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { mUserInfo.setUserHead(mV2XPushMessageEntity.getHeadImgUrl()); mUserInfo.setUserName(mV2XPushMessageEntity.getDisplayName()); mUserInfo.setGender(mV2XPushMessageEntity.getSex()); - mUserInfo.setAge(30); + mUserInfo.setAge(mV2XPushMessageEntity.getAge()); mNoveltyInfo.setUserInfo(mUserInfo); triggerCallChart(mNoveltyInfo); } catch (Exception e) { @@ -152,16 +162,6 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { } }); } - - try { - MarkerLocation markerLocation = new MarkerLocation(); - markerLocation.setLon(mV2XPushMessageEntity.getLon()); - markerLocation.setLat(mV2XPushMessageEntity.getLat()); - mNoveltyInfo = new MarkerExploreWay(); - mNoveltyInfo.setLocation(markerLocation); - } catch (Exception e) { - e.printStackTrace(); - } try { if (!TextUtils.isEmpty(mV2XPushMessageEntity.getHeadImgUrl())) { V2XServiceManager.getImageLoader() diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java index ae1cb8aba7..e5c6e39974 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java @@ -40,43 +40,47 @@ public class V2XScenarioHistoryIllegalParkVH extends V2XBaseViewHolder { + Logger.d(V2XConst.MODULE_NAME, "反馈有用"); + roadReportTrue(); + }); + + mLlIllegalParkingUnLike.setOnClickCallListener(v -> { + Logger.d(V2XConst.MODULE_NAME, "反馈无用"); + roadReportErr(); + }); } catch (Exception e) { e.printStackTrace(); } - - if (!viewData.isDispose()) { - hideControlButton(View.VISIBLE); - } else { - hideControlButton(View.GONE); - } - - mLlIllegalParkingLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); - roadReportTrue(); - }); - - mLlIllegalParkingUnLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); - roadReportErr(); - }); } void hideControlButton(int gone) { @@ -87,14 +91,18 @@ public class V2XScenarioHistoryIllegalParkVH extends V2XBaseViewHolder { + + private TextView mTagEventType; + private TextView mTagEventEvaluate; + private MogoImageView mIvFaultHelpHead; + private TextView mTvFaultHelpName; + private TextView mTvFaultHelpEventTime; + private TextView mTvFaultHelpDistance; + private ImageView mIvFaultHelpEventCall; + private ImageView mIvFaultHelpEventNavi; + + private MarkerExploreWay mNoveltyInfo; + // 上传事件的用户信息 + private MarkerUserInfo mUserInfo = new MarkerUserInfo(); + + private V2XHistoryScenarioData mOldScenarioData; + public V2XScenarioHistoryOtherSeekHelpVH(@NonNull ViewGroup viewGroup) { super(LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.item_v2x_scennario_history_other_help, viewGroup, false)); + mTagEventType = itemView.findViewById(R.id.tagEventType); + mTagEventEvaluate = itemView.findViewById(R.id.tagEventEvaluate); + mIvFaultHelpHead = itemView.findViewById(R.id.ivFaultHelpHead); + mTvFaultHelpName = itemView.findViewById(R.id.tvFaultHelpName); + mTvFaultHelpEventTime = itemView.findViewById(R.id.tvFaultHelpEventTime); + mTvFaultHelpDistance = itemView.findViewById(R.id.tvFaultHelpDistance); + mIvFaultHelpEventCall = itemView.findViewById(R.id.ivFaultHelpEventCall); + mIvFaultHelpEventNavi = itemView.findViewById(R.id.ivFaultHelpEventNavi); } @Override public void initView(V2XHistoryScenarioData viewData) { + try { + mOldScenarioData = viewData; + V2XPushMessageEntity xPushMessageEntity = GsonUtil.objectFromJson(viewData.getEventJsonData(), V2XPushMessageEntity.class); + if (!viewData.isDispose()) { + hideControlButton(View.VISIBLE); + } else { + hideControlButton(View.GONE); + } + + mTvFaultHelpName.setText(xPushMessageEntity.getDisplayName()); + + if (!TextUtils.isEmpty(xPushMessageEntity.getHeadImgUrl())) { + V2XServiceManager.getImageLoader() + .displayImage(xPushMessageEntity.getHeadImgUrl(), mIvFaultHelpHead); + } + + SpanUtils.with(mTvFaultHelpDistance) + .append("" + (int) xPushMessageEntity.getDistance()) + .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_text)) + .append("m") + .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_title)) + .create(); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.CHINA); + String eventTime = String.format("%s发布求助信息", + sdf.format(new Date(xPushMessageEntity.getCreateTime()))); + mTvFaultHelpEventTime.setText(eventTime); + + try { + MarkerLocation markerLocation = new MarkerLocation(); + markerLocation.setLon(xPushMessageEntity.getLon()); + markerLocation.setLat(xPushMessageEntity.getLat()); + mNoveltyInfo = new MarkerExploreWay(); + mNoveltyInfo.setLocation(markerLocation); + } catch (Exception e) { + e.printStackTrace(); + } + + mIvFaultHelpEventNavi.setOnClickListener(v -> { + triggerStartNavi(mNoveltyInfo); + }); + + // 只有自研车机才会 有车聊聊通话 + if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { + // 判断是否可以打电话 + ChartingUtil.isCanCall(b -> { + if (b) { + // 判断是否可以打电话 + ChartingUtil.isOnLine(xPushMessageEntity.getSn(), b1 -> { + if (b1) { + mIvFaultHelpEventCall.setVisibility(VISIBLE); + } else { + mIvFaultHelpEventCall.setVisibility(GONE); + } + }); + } else { + mIvFaultHelpEventCall.setVisibility(GONE); + } + }); + + mIvFaultHelpEventCall.setOnClickListener(v -> { + if (!V2XUtils.isFastClick()) { + try { + mUserInfo.setSn(xPushMessageEntity.getSn()); + mUserInfo.setUserHead(xPushMessageEntity.getHeadImgUrl()); + mUserInfo.setUserName(xPushMessageEntity.getDisplayName()); + mUserInfo.setGender(xPushMessageEntity.getSex()); + mUserInfo.setAge(xPushMessageEntity.getAge()); + mNoveltyInfo.setUserInfo(mUserInfo); + triggerCallChart(mNoveltyInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + } catch (Exception e) { + e.printStackTrace(); + } } @Override public void delayedCloseWindow() { + try { + hideControlButton(View.GONE); + // 进行数据库存储 + V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); + v2XHistoryScenarioData.setScenarioType(mOldScenarioData.getScenarioType()); + v2XHistoryScenarioData.setTriggerTime(mOldScenarioData.getTriggerTime()); + v2XHistoryScenarioData.setEventJsonData(mOldScenarioData.getEventJsonData()); + v2XHistoryScenarioData.setDispose(true); + V2XSQLiteUtils.updateScenarioHistoryData(mOldScenarioData, v2XHistoryScenarioData); + V2XEventPanelFragment.Companion.getInstance().hidePanel(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + void hideControlButton(int gone) { + mTagEventEvaluate.setVisibility(gone); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java index 15dd16e0d2..4970ba17bc 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java @@ -42,47 +42,51 @@ public class V2XScenarioHistoryRoadEventVH extends V2XBaseViewHolder { + Logger.d(V2XConst.MODULE_NAME, "反馈有用"); + roadReportTrue(); + }); + + mLlIllegalParkingUnLike.setOnClickCallListener(v -> { + Logger.d(V2XConst.MODULE_NAME, "反馈无用"); + roadReportErr(); + }); } catch (Exception e) { e.printStackTrace(); } - - if (!viewData.isDispose()) { - hideControlButton(View.VISIBLE); - } else { - hideControlButton(View.GONE); - } - - mLlIllegalParkingLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); - roadReportTrue(); - }); - - mLlIllegalParkingUnLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); - roadReportErr(); - }); } void hideControlButton(int gone) { @@ -93,14 +97,18 @@ public class V2XScenarioHistoryRoadEventVH extends V2XBaseViewHolder implements IV2XScenario { protected String TAG = "AbsV2XScenario"; private IV2XWindow mV2XWindow; private IV2XButton mV2XButton; - private IV2XMarker mV2XMarker; + private IV2XMarker mV2XMarker; private IMoGoV2XStatusManager mV2XStatusManager; private V2XMessageEntity mV2XMessageEntity; @@ -67,7 +66,7 @@ public abstract class AbsV2XScenario implements IV2XScenario { this.mV2XWindow = mV2XWindow; } - public IV2XMarker getV2XMarker() { + public IV2XMarker getV2XMarker() { return mV2XMarker; } @@ -105,7 +104,7 @@ public abstract class AbsV2XScenario implements IV2XScenario { * * @param markerExploreWay 要存储的场景 */ - public void saveLocalStory(int scenarioType ,MarkerExploreWay markerExploreWay) { + public void saveLocalStory(int scenarioType, Object markerExploreWay) { try { // 进行数据库存储 V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index bae00b50ed..888fd9088c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -4,7 +4,6 @@ import android.content.Intent; import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import com.mogo.module.common.entity.V2XHistoryScenarioData; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.scenario.IV2XScenarioManager; @@ -16,8 +15,6 @@ import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkScenario; import com.mogo.module.v2x.scenario.scene.push.V2XPushEventScenario; import com.mogo.module.v2x.scenario.scene.road.V2XRoadEventScenario; import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpScenario; -import com.mogo.module.v2x.utils.TimeUtils; -import com.mogo.module.v2x.utils.V2XSQLiteUtils; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.utils.TipToast; import com.mogo.utils.logger.Logger; @@ -78,7 +75,6 @@ public class V2XScenarioManager implements IV2XScenarioManager { break; case V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING: mV2XScenario = V2XSeekHelpScenario.getInstance(); - saveLocalStory(v2XMessageEntity); break; case V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING: mV2XScenario = V2XFatigueDrivingScenario.getInstance(); @@ -114,23 +110,4 @@ public class V2XScenarioManager implements IV2XScenarioManager { }); } } - - /** - * 存储本地数据 - * - * @param v2XMessageEntity 要存储的场景 - */ - void saveLocalStory(V2XMessageEntity v2XMessageEntity) { - try { - // 进行数据库存储 - V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); - v2XHistoryScenarioData.setScenarioType(v2XMessageEntity.getType()); - v2XHistoryScenarioData.setTriggerTime(TimeUtils.getNowMills()); - v2XHistoryScenarioData.setDispose(false); - v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(v2XMessageEntity.getContent())); - V2XSQLiteUtils.getScenarioHistoryDao().insert(v2XHistoryScenarioData); - } catch (Exception e) { - e.printStackTrace(); - } - } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java index 2c2b004644..79bcc6420b 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java @@ -5,9 +5,9 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; -import com.mogo.commons.voice.AIAssist; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XPoiTypeEnum; +import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; @@ -50,25 +50,45 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i } private List mMarkerEntity; + private V2XPushMessageEntity mV2XPushMessageEntity; @Override public void init(@Nullable V2XMessageEntity> v2XMessageEntity) { - setV2XMessageEntity(v2XMessageEntity); + try { + setV2XMessageEntity(v2XMessageEntity); - // 广播给ADAS和Launcher卡片 - V2XRoadEventEntity eventEntity = new V2XRoadEventEntity(); - eventEntity.setPoiType(V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING + ""); - eventEntity.setExpireTime(30000); - eventEntity.setTts("发现其他车主的求助信息"); - eventEntity.setAlarmContent("其他车主求助"); - ADASUtils.broadcastToADAS(V2XServiceManager.getContext(), eventEntity); + // 广播给ADAS和Launcher卡片 + V2XRoadEventEntity eventEntity = new V2XRoadEventEntity(); + eventEntity.setPoiType(V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING + ""); + eventEntity.setExpireTime(30000); + eventEntity.setTts("发现其他车主的求助信息"); + eventEntity.setAlarmContent("其他车主求助"); + ADASUtils.broadcastToADAS(V2XServiceManager.getContext(), eventEntity); - if (V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) { - if (getV2XMessageEntity() != null && - !V2XServiceManager.getMoGoV2XStatusManager().isOtherSeekHelpWindowShow()) { - mMarkerEntity = getV2XMessageEntity().getContent(); - show(); + mMarkerEntity = getV2XMessageEntity().getContent(); + + V2XMarkerEntity markerEntity = mMarkerEntity.get(0); + mV2XPushMessageEntity = new V2XPushMessageEntity(); + mV2XPushMessageEntity.setLon(markerEntity.getLon()); + mV2XPushMessageEntity.setLat(markerEntity.getLat()); + mV2XPushMessageEntity.setDisplayName(markerEntity.getUserInfo().getDisplayName()); + mV2XPushMessageEntity.setHeadImgUrl(markerEntity.getUserInfo().getHeadImgUrl()); + mV2XPushMessageEntity.setSex(markerEntity.getUserInfo().getSex()); + mV2XPushMessageEntity.setSn(markerEntity.getUserInfo().getSn()); + mV2XPushMessageEntity.setCreateTime(markerEntity.getCreateTime()); + mV2XPushMessageEntity.setDistance(markerEntity.getDistance()); + mV2XPushMessageEntity.setExpireTime(20000); + + saveLocalStory(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING, mV2XPushMessageEntity); + + if (V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) { + if (getV2XMessageEntity() != null && + !V2XServiceManager.getMoGoV2XStatusManager().isOtherSeekHelpWindowShow()) { + show(); + } } + } catch (Exception e) { + e.printStackTrace(); } } @@ -89,7 +109,7 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i V2XServiceManager .getMogoTopViewManager() .addView(getV2XWindow().getView(), layoutParams, this); - getV2XWindow().show(mMarkerEntity); + getV2XWindow().show(mV2XPushMessageEntity); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java index 6deb5f09ed..608fb9d29a 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java @@ -18,7 +18,6 @@ import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.adapter.V2XRoadEventAdapter; -import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.utils.logger.Logger; @@ -35,7 +34,7 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME; * desc : 他人发起的故障求助 * version: 1.0 */ -public class V2XSeekHelpWindow extends ConstraintLayout implements IV2XWindow> { +public class V2XSeekHelpWindow extends ConstraintLayout implements IV2XWindow { private static final String TAG = "V2XSeekHelpWindow"; // 展示列表 @@ -96,32 +95,18 @@ public class V2XSeekHelpWindow extends ConstraintLayout implements IV2XWindow
  • entityList) { - if (entityList != null && !entityList.isEmpty()) { - V2XMarkerEntity markerEntity = entityList.get(0); - - mV2XPushMessageEntity = new V2XPushMessageEntity(); - mV2XPushMessageEntity.setLon(markerEntity.getLon()); - mV2XPushMessageEntity.setLat(markerEntity.getLat()); - mV2XPushMessageEntity.setDisplayName(markerEntity.getUserInfo().getDisplayName()); - mV2XPushMessageEntity.setHeadImgUrl(markerEntity.getUserInfo().getHeadImgUrl()); - mV2XPushMessageEntity.setSex(markerEntity.getUserInfo().getSex()); - mV2XPushMessageEntity.setSn(markerEntity.getUserInfo().getSn()); - mV2XPushMessageEntity.setCreateTime(markerEntity.getCreateTime()); - mV2XPushMessageEntity.setDistance(markerEntity.getDistance()); - mV2XPushMessageEntity.setExpireTime(20000); - + public void show(V2XPushMessageEntity xPushMessageEntity) { + if (xPushMessageEntity != null) { + mV2XPushMessageEntity = xPushMessageEntity; // 清空数据 mItemList.clear(); - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XPushMessageEntity(mV2XPushMessageEntity); + v2XEventShowEntity.setV2XPushMessageEntity(xPushMessageEntity); v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING); mItemList.add(v2XEventShowEntity); // 刷新列表 mV2XRoadEventAdapter.notifyDataSetChanged(); - countDownV2XEvent(); } } From 2367de4945fa39841ed1d7b05870f685286162eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 11 Aug 2020 19:04:57 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E6=B1=82=E5=8A=A9=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V2XScenarioHistoryOtherSeekHelpVH.java | 2 ++ .../module/v2x/network/V2XApiService.java | 9 +++++- .../module/v2x/network/V2XRefreshModel.java | 32 ++++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java index 29dd2483eb..1f42c55f26 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java @@ -153,6 +153,8 @@ public class V2XScenarioHistoryOtherSeekHelpVH extends V2XBaseViewHolder addPoiInfoFabulous(@FieldMap Map params); + + /** + * 响应求助 + */ + @FormUrlEncoded + @POST("/deva/poiInfoFabulous/car/poi/no/RespondingToHelp/v1") + Observable respondingToHelp(@FieldMap Map params); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java index acdc22e20b..947cdffe39 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java @@ -26,7 +26,6 @@ import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; -import java.util.HashMap; import java.util.Map; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -518,4 +517,35 @@ public class V2XRefreshModel { }); } } + + /** + * 响应求助 + * "seekHelpSn":"testSn01",求助SN + * "enthusiasticSn":"testSn02",响应求助SN + */ + public void respondingToHelp(String seekHelpSn) { + if (mV2XApiService != null) { + final Map map = new ParamsProvider.Builder(mContext).build(); + String json = new StringBuilder() + .append("{") + .append("\"seekHelpSn\":").append(seekHelpSn) + .append(",") + .append("\"enthusiasticSn\":").append(Utils.getSn()) + .append("}").toString(); + map.put("data", json); + mV2XApiService.respondingToHelp(map).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + }); + } + } } From a11f74e334ee56e27950f43dc74301468ee2634e Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 11 Aug 2020 19:05:50 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=B7=BB=E5=8A=A0EntranceFragment=E5=BA=95?= =?UTF-8?q?=E5=B1=82view=E5=A2=9E=E5=8A=A0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/BottomLayerViewWrapper.java | 46 +++++++++ .../extensions/entrance/EntranceFragment.java | 10 ++ .../MogoEntranceButtonControllerImpl.java | 17 ++++ .../extensions/utils/EntranceViewHolder.java | 94 +++++++++++++++++++ .../res/layout/module_ext_layout_entrance.xml | 55 ++++++----- .../IMogoEntranceButtonController.java | 22 +++++ 6 files changed, 222 insertions(+), 22 deletions(-) create mode 100644 modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java create mode 100644 modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java new file mode 100644 index 0000000000..5dd939ff67 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/bean/BottomLayerViewWrapper.java @@ -0,0 +1,46 @@ +package com.mogo.module.extensions.bean; + +import android.view.View; + +/** + * 底层view封装 + * + * @author tongchenfei + */ +public class BottomLayerViewWrapper { + private View view; + private int x; + private int y; + + public BottomLayerViewWrapper(){} + + public BottomLayerViewWrapper(View view, int x, int y) { + this.view = view; + this.x = x; + this.y = y; + } + + public View getView() { + return view; + } + + public void setView(View view) { + this.view = view; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } +} 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 768006b117..827f9320e1 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 @@ -1,5 +1,6 @@ package com.mogo.module.extensions.entrance; +import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.os.Bundle; @@ -8,6 +9,7 @@ import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -38,6 +40,7 @@ import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; import com.mogo.module.extensions.navi.NaviInfoView; import com.mogo.module.extensions.userinfo.UserInfo; +import com.mogo.module.extensions.utils.EntranceViewHolder; import com.mogo.module.extensions.utils.TopViewAnimHelper; import com.mogo.module.share.manager.ServiceApisManager; import com.mogo.service.IMogoServiceApis; @@ -153,6 +156,7 @@ public class EntranceFragment extends MvpFragment{ + TextView tv = new TextView(getContext()); + tv.setText("entrance add"); + mApis.getEntranceButtonController().addBottomLayerView(tv, 50, 50); + }); } @Override diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java index 2b4f032948..17ee75ccb4 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java @@ -1,9 +1,11 @@ package com.mogo.module.extensions.entrance; import android.content.Context; +import android.view.View; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.module.extensions.utils.EntranceViewHolder; import com.mogo.service.MogoServicePaths; import com.mogo.service.entrance.ButtonIndex; import com.mogo.service.entrance.IMogoEntranceButtonController; @@ -22,6 +24,21 @@ public class MogoEntranceButtonControllerImpl implements IMogoEntranceButtonCont return MogoEntranceButtons.getButton( index ); } + @Override + public void addBottomLayerView(View view) { + EntranceViewHolder.getInstance().addBottomLayerView(view); + } + + @Override + public void addBottomLayerView(View view, int x, int y) { + EntranceViewHolder.getInstance().addBottomLayerView(view, x, y); + } + + @Override + public void removeBottomLayerView(View view) { + EntranceViewHolder.getInstance().removeBottomLayerView(view); + } + @Override public void init( Context context ) { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java new file mode 100644 index 0000000000..b35687f42c --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java @@ -0,0 +1,94 @@ +package com.mogo.module.extensions.utils; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +import com.mogo.module.extensions.bean.BottomLayerViewWrapper; +import com.mogo.utils.logger.Logger; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * 入口页view管理 + * @author tongchenfei + */ +public class EntranceViewHolder { + private static final String TAG = "EntranceViewHolder"; + private List preAddView = new ArrayList<>(); + private EntranceViewHolder(){} + private volatile static EntranceViewHolder instance = null; + public static EntranceViewHolder getInstance(){ + if (instance == null) { + synchronized (EntranceViewHolder.class) { + if (instance == null) { + instance = new EntranceViewHolder(); + } + } + } + return instance; + } + private ViewGroup rootViewGroup = null; + public void initRootViewGroup(View rootView) { + Logger.i(TAG, "initRootViewGroup=="); + if(rootView instanceof ViewGroup) { + Logger.d(TAG, "initRootViewGroup 赋值"); + rootViewGroup = (ViewGroup) rootView.getParent(); + if (!preAddView.isEmpty()) { + Logger.d(TAG, "initRootViewGroup 增加底层view: " + preAddView.size()); + Iterator iterator = preAddView.iterator(); + while (iterator.hasNext()) { + BottomLayerViewWrapper wrapper = iterator.next(); + realAddView(wrapper); + iterator.remove(); + } + } + } + } + + public void addBottomLayerView(View view) { + Logger.d(TAG, "addBottomLayerView, rootViewGroup is null: " + (rootViewGroup == null)); + addBottomLayerView(view, 0, 0); + } + + public void addBottomLayerView(View view, int x, int y) { + Logger.d(TAG, "addBottomLayerView, rootViewGroup is null: " + (rootViewGroup == null) + + "\n x: " + x + ", y: " + y); + BottomLayerViewWrapper wrapper = new BottomLayerViewWrapper(view, x, y); + if(rootViewGroup == null) { + preAddView.add(wrapper); + }else{ + realAddView(wrapper); + } + } + + /** + * 使用的时候需要预先判断rootViewGroup是否为空,本方法默认rootViewGroup不为空 + */ + private void realAddView(BottomLayerViewWrapper wrapper){ + FrameLayout.LayoutParams params = + new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, + FrameLayout.LayoutParams.WRAP_CONTENT); + params.topMargin = wrapper.getY(); + params.leftMargin = wrapper.getX(); + View v = wrapper.getView(); + v.setLayoutParams(params); + rootViewGroup.addView(v, 0); + } + + public void removeBottomLayerView(View view) { + if (rootViewGroup != null) { + rootViewGroup.removeView(view); + } + Iterator iterator = preAddView.iterator(); + while (iterator.hasNext()) { + BottomLayerViewWrapper wrapper = iterator.next(); + if (wrapper.getView().equals(view)) { + iterator.remove(); + } + } + } + +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index bae7449c91..495a892b37 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -14,7 +14,7 @@ + android:layout_height="wrap_content" /> + app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop" + tools:visibility="visible" /> @@ -51,12 +51,12 @@ android:layout_height="@dimen/module_ext_button_height" android:layout_marginTop="@dimen/module_ext_camera_button_marginTop" android:background="@drawable/module_ext_dw_common_corner_bkg" - android:orientation="vertical" android:gravity="center_horizontal" + android:orientation="vertical" android:visibility="gone" - tools:visibility="gone" app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg" - app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"> + app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg" + tools:visibility="gone">