diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java index 8eabba41bd..a1bcb968d9 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XEventShowEntity.java @@ -30,8 +30,10 @@ public class V2XEventShowEntity implements Serializable { private V2XLiveCarInfoEntity v2XLiveCarInfoRes; // 直播车机列表 private List v2XLiveCarList; - // 推送信息展示 + // 推送信息,疲劳驾驶, private V2XPushMessageEntity v2XPushMessageEntity; + // 违章停车 + private MarkerExploreWay v2XIllegalPark; public int getViewType() { return viewType; @@ -73,6 +75,14 @@ public class V2XEventShowEntity implements Serializable { this.v2XPushMessageEntity = v2XPushMessageEntity; } + public MarkerExploreWay getV2XIllegalPark() { + return v2XIllegalPark; + } + + public void setV2XIllegalPark(MarkerExploreWay v2XIllegalPark) { + this.v2XIllegalPark = v2XIllegalPark; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -85,12 +95,16 @@ public class V2XEventShowEntity implements Serializable { return viewType == that.viewType && Objects.equals(v2XRoadEventEntity, that.v2XRoadEventEntity) && Objects.equals(v2XLiveCarInfoRes, that.v2XLiveCarInfoRes) && - Objects.equals(v2XLiveCarList, that.v2XLiveCarList); + Objects.equals(v2XLiveCarList, that.v2XLiveCarList) && + Objects.equals(v2XPushMessageEntity, that.v2XPushMessageEntity) && + Objects.equals(v2XIllegalPark, that.v2XIllegalPark); } @Override public int hashCode() { - return Objects.hash(viewType, v2XRoadEventEntity, v2XLiveCarInfoRes, v2XLiveCarList); + return Objects.hash(viewType, v2XRoadEventEntity, + v2XLiveCarInfoRes, v2XLiveCarList, + v2XPushMessageEntity, v2XIllegalPark); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadEventAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadEventAdapter.java index f42af5fd17..9146ccaaf0 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadEventAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadEventAdapter.java @@ -7,6 +7,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.module.common.entity.V2XEventShowEntity; import com.mogo.module.common.entity.V2XWindowTypeEnum; +import com.mogo.module.v2x.adapter.holder.V2XFatigueDrivingDetailVH; import com.mogo.module.v2x.adapter.holder.V2XIllegalParkDetailVH; import com.mogo.module.v2x.adapter.holder.V2XLiveVideoVH; import com.mogo.module.v2x.adapter.holder.V2XPushEventDetailVH; @@ -50,6 +51,10 @@ public class V2XRoadEventAdapter extends RecyclerView.Adapter V2XPushEventScenario.getInstance().close(), 1000); + } + +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkDetailVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkDetailVH.java index 3b84bdf16b..3e5e822623 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkDetailVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkDetailVH.java @@ -1,12 +1,25 @@ package com.mogo.module.v2x.adapter.holder; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; +import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.v2x.R; -import com.mogo.module.v2x.scenario.scene.push.V2XPushEventScenario; +import com.mogo.module.v2x.V2XConst; +import com.mogo.module.v2x.V2XServiceManager; +import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkScenario; +import com.mogo.module.v2x.utils.RoadConditionUtils; +import com.mogo.module.v2x.view.HeartLikeView; +import com.mogo.module.v2x.view.HeartUnLikeView; +import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; +import com.mogo.module.v2x.voice.V2XVoiceConstants; +import com.mogo.module.v2x.voice.V2XVoiceManager; +import com.mogo.utils.logger.Logger; + +import static com.mogo.module.v2x.V2XConst.MODULE_NAME; /** * e-mail : 1358506549@qq.com @@ -17,14 +30,69 @@ import com.mogo.module.v2x.scenario.scene.push.V2XPushEventScenario; * @author donghongyu */ public class V2XIllegalParkDetailVH extends V2XBaseViewHolder { + private TextView mAddressTv; + private TextView mIllegalNumTv; + private HeartLikeView mIlIllegalParkingLike; + private HeartUnLikeView mIIllegalParkingUnLike; + + private MarkerExploreWay mExploreWay; + + // 反馈按钮语音操控 + private V2XVoiceCallbackListener v2XVoiceCallbackYouYongListener = (command, intent) -> roadReportTrue(); + private V2XVoiceCallbackListener v2XVoiceCallbackMeiYongListener = (command, intent) -> roadReportErr(); public V2XIllegalParkDetailVH(ViewGroup viewGroup) { super(LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.window_illegal_parking, viewGroup, false)); + + mAddressTv = itemView.findViewById(R.id.tvAddress); + mIllegalNumTv = itemView.findViewById(R.id.tvIllegalNum); + mIlIllegalParkingLike = itemView.findViewById(R.id.llIllegalParkingLike); + mIIllegalParkingUnLike = itemView.findViewById(R.id.llIllegalParkingUnLike); + + // 设置视图状态监听 + itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { + @Override + public void onViewAttachedToWindow(View v) { + //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewAttachedToWindow"); + // 注册语音交互 + V2XVoiceManager.INSTANCE + .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_YOUYONG_UN_WAKEUP, + v2XVoiceCallbackYouYongListener) + .registerUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_MEIYONG_UN_WAKEUP, + v2XVoiceCallbackMeiYongListener); + } + + @Override + public void onViewDetachedFromWindow(View v) { + //Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow"); + V2XServiceManager.getMogoRegisterCenter().unregisterMogoNaviListener(MODULE_NAME); + // 反注册语音交互 + V2XVoiceManager.INSTANCE + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_YOUYONG_UN_WAKEUP) + .unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_MEIYONG_UN_WAKEUP); + } + }); } public void initView(V2XEventShowEntity v2XEventShowEntity) { + mExploreWay = v2XEventShowEntity.getV2XIllegalPark(); + mAddressTv.setText(mExploreWay.getAddr()); + try { + mIllegalNumTv.setText("违章人数:" + (int) mExploreWay.getItems().get(0).getIllegalCount()); + } catch (Exception e) { + e.printStackTrace(); + } + mIlIllegalParkingLike.setOnClickCallListener(v -> { + Logger.d(V2XConst.MODULE_NAME, "反馈有用"); + roadReportTrue(); + }); + + mIIllegalParkingUnLike.setOnClickCallListener(v -> { + Logger.d(V2XConst.MODULE_NAME, "反馈无用"); + roadReportErr(); + }); } /** @@ -32,7 +100,32 @@ public class V2XIllegalParkDetailVH extends V2XBaseViewHolder { */ @Override public void delayedCloseWindow() { - itemView.postDelayed(() -> V2XPushEventScenario.getInstance().close(), 1000); + itemView.postDelayed(() -> V2XIllegalParkScenario.getInstance().close(), 1000); } + /** + * 反馈路况正确 + */ + private void roadReportTrue() { + if (mExploreWay != null) { + RoadConditionUtils.sendDataErrorReceiverInfo( + mExploreWay.getPoiType(), + mExploreWay.getInfoId(), + "2"); + } + delayedCloseWindow(); + } + + /** + * 反馈路况错误 + */ + private void roadReportErr() { + if (mExploreWay != null) { + RoadConditionUtils.sendDataErrorReceiverInfo( + mExploreWay.getPoiType(), + mExploreWay.getInfoId(), + "1"); + } + delayedCloseWindow(); + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkWindow.java index 03e4b3a0c1..bc67065aeb 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/park/V2XIllegalParkWindow.java @@ -7,34 +7,39 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; -import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.PagerSnapHelper; +import androidx.recyclerview.widget.RecyclerView; import com.mogo.module.common.entity.MarkerExploreWay; +import com.mogo.module.common.entity.V2XEventShowEntity; +import com.mogo.module.common.entity.V2XWindowTypeEnum; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; +import com.mogo.module.v2x.adapter.V2XRoadEventAdapter; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; -import com.mogo.module.v2x.utils.RoadConditionUtils; import com.mogo.module.v2x.utils.V2XUtils; -import com.mogo.module.v2x.view.HeartLikeView; -import com.mogo.module.v2x.view.HeartUnLikeView; -import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; -import com.mogo.module.v2x.voice.V2XVoiceConstants; -import com.mogo.module.v2x.voice.V2XVoiceManager; import com.mogo.utils.logger.Logger; +import java.util.ArrayList; +import java.util.List; + /** * 违章停车 * 弹窗视图 */ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow { - private static final String TAG = "V2XLegalParkWindow"; - - private TextView mAddressTv; - private TextView mIllegalNumTv; - private HeartLikeView mIlIllegalParkingLike; - private HeartUnLikeView mIIllegalParkingUnLike; + private static final String TAG = "V2XIllegalParkWindow"; + // 展示列表 + private RecyclerView mRecyclerView; + // 列表数据适配器 + private V2XRoadEventAdapter mV2XRoadEventAdapter; + // 列表展示 + private List mItemList = new ArrayList<>(); // 处理道路事件,20秒倒计时 private Handler handlerV2XEvent = new Handler(); @@ -44,10 +49,6 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow roadReportTrue(); - private V2XVoiceCallbackListener v2XVoiceCallbackMeiYongListener = (command, intent) -> roadReportErr(); - public V2XIllegalParkWindow() { this(V2XServiceManager.getContext(), null); } @@ -69,12 +70,28 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow 0) { + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + // 用户处于交互的时候延后隐藏时间 + countDownV2XEvent(); + } + } + } + }); } public void show(MarkerExploreWay entity, boolean isAutoClose) { @@ -89,23 +106,17 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); - roadReportTrue(); - }); - - mIIllegalParkingUnLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); - roadReportErr(); - }); - + // 刷新列表 + mV2XRoadEventAdapter.notifyDataSetChanged(); // 倒计时 if (mIsAutoClose) { countDownV2XEvent(); @@ -120,14 +131,6 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow