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 a099e4db17..8eabba41bd 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 @@ -1,7 +1,13 @@ package com.mogo.module.common.entity; +import androidx.annotation.IntDef; + import java.io.Serializable; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; import java.util.List; import java.util.Objects; @@ -14,7 +20,8 @@ import java.util.Objects; */ public class V2XEventShowEntity implements Serializable { - // 0---默认展示详情,1--直播,4--道路事件详情 + // 0---默认展示详情,1--直播, + @ViewType private int viewType; // 道路事件详情 @@ -23,6 +30,8 @@ public class V2XEventShowEntity implements Serializable { private V2XLiveCarInfoEntity v2XLiveCarInfoRes; // 直播车机列表 private List v2XLiveCarList; + // 推送信息展示 + private V2XPushMessageEntity v2XPushMessageEntity; public int getViewType() { return viewType; @@ -56,6 +65,14 @@ public class V2XEventShowEntity implements Serializable { this.v2XLiveCarList = v2XLiveCarList; } + public V2XPushMessageEntity getV2XPushMessageEntity() { + return v2XPushMessageEntity; + } + + public void setV2XPushMessageEntity(V2XPushMessageEntity v2XPushMessageEntity) { + this.v2XPushMessageEntity = v2XPushMessageEntity; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -76,13 +93,23 @@ public class V2XEventShowEntity implements Serializable { return Objects.hash(viewType, v2XRoadEventEntity, v2XLiveCarInfoRes, v2XLiveCarList); } - @Override - public String toString() { - return "V2XEventShowEntity{" + - "viewType=" + viewType + - ", v2XRoadEventEntity=" + v2XRoadEventEntity + - ", v2XLiveCarInfoRes=" + v2XLiveCarInfoRes + - ", v2XLiveCarList=" + v2XLiveCarList + - '}'; + + @IntDef(value = { + V2XWindowTypeEnum.DEFAULT_WINDOW, + V2XWindowTypeEnum.LIVE_CAR_WINDOW, + V2XWindowTypeEnum.ROAD_EVENT_WINDOW, + V2XWindowTypeEnum.PUSH_EVENT_WINDOW, + V2XWindowTypeEnum.ANIMATION_WINDOW, + V2XWindowTypeEnum.FATIGUE_DRIVING_WINDOW, + V2XWindowTypeEnum.SEEK_HELP_WINDOW, + V2XWindowTypeEnum.ILLEGAL_PARK_WINDOW, + }) + @Target({ + ElementType.PARAMETER, + ElementType.FIELD, + ElementType.METHOD, + }) //表示注解作用范围,参数注解,成员注解,方法注解 + @Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中 + public @interface ViewType { //接口,定义新的注解类型 } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XPushEventAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XPushEventAdapter.java deleted file mode 100644 index 3dae739ced..0000000000 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XPushEventAdapter.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.mogo.module.v2x.adapter; - -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.module.v2x.adapter.holder.V2XPushEventDetailVH; -import com.mogo.module.common.entity.V2XPushMessageEntity; - -import java.util.List; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020/3/11 4:05 PM - * desc : V2X 场景事件列表中的数据适配器 - * version: 1.0 - */ -public class V2XPushEventAdapter extends RecyclerView.Adapter { - - private List itemList; - - public V2XPushEventAdapter(List itemList) { - this.itemList = itemList; - } - - @NonNull - @Override - public V2XPushEventDetailVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new V2XPushEventDetailVH(parent); - } - - @Override - public void onBindViewHolder(@NonNull V2XPushEventDetailVH holder, int position) { - holder.initView(itemList.get(position)); - } - - @Override - public int getItemViewType(int position) { - return itemList.get(position).getViewType(); - } - - @Override - public int getItemCount() { - return itemList == null ? 0 : itemList.size(); - } - -} 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 5988112df7..f42af5fd17 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 @@ -6,9 +6,11 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.mogo.module.common.entity.V2XEventShowEntity; -import com.mogo.module.v2x.adapter.holder.V2XLiveVideoVH; -import com.mogo.module.v2x.adapter.holder.V2XRoadEventDetailVH; import com.mogo.module.common.entity.V2XWindowTypeEnum; +import com.mogo.module.v2x.adapter.holder.V2XIllegalParkDetailVH; +import com.mogo.module.v2x.adapter.holder.V2XLiveVideoVH; +import com.mogo.module.v2x.adapter.holder.V2XPushEventDetailVH; +import com.mogo.module.v2x.adapter.holder.V2XRoadEventDetailVH; import java.util.List; @@ -32,14 +34,24 @@ 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/V2XPushEventDetailVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XPushEventDetailVH.java index c7d4ee87bf..d278dda0cf 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XPushEventDetailVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XPushEventDetailVH.java @@ -9,6 +9,7 @@ import android.widget.ImageView; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerUserInfo; +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.V2XServiceManager; @@ -133,8 +134,8 @@ public class V2XPushEventDetailVH extends V2XBaseViewHolder { }); } - public void initView(V2XPushMessageEntity v2XRoadEventEntity) { - mV2XRoadEventEntity = v2XRoadEventEntity; + public void initView(V2XEventShowEntity v2XEventShowEntity) { + mV2XRoadEventEntity = v2XEventShowEntity.getV2XPushMessageEntity(); mNoveltyInfo = new MarkerExploreWay(); mNoveltyInfo.setSn(mV2XRoadEventEntity.getSn()); mNoveltyInfo.setInfoId(mV2XRoadEventEntity.getSceneId()); @@ -143,16 +144,16 @@ public class V2XPushEventDetailVH extends V2XBaseViewHolder { location.setLon(mV2XRoadEventEntity.getLon()); mNoveltyInfo.setLocation(location); - if (!TextUtils.isEmpty(v2XRoadEventEntity.getMsgImgUrl())) { + if (!TextUtils.isEmpty(mV2XRoadEventEntity.getMsgImgUrl())) { V2XServiceManager.getImageLoader() - .displayImage(v2XRoadEventEntity.getMsgImgUrl(), ivImg); + .displayImage(mV2XRoadEventEntity.getMsgImgUrl(), ivImg); } - if (!TextUtils.isEmpty(v2XRoadEventEntity.getHeadImgUrl())) { + if (!TextUtils.isEmpty(mV2XRoadEventEntity.getHeadImgUrl())) { V2XServiceManager.getImageLoader() - .displayImage(v2XRoadEventEntity.getHeadImgUrl(), ivReportHead); + .displayImage(mV2XRoadEventEntity.getHeadImgUrl(), ivReportHead); } - switch (v2XRoadEventEntity.getSceneId()) { + switch (mV2XRoadEventEntity.getSceneId()) { case "100015"://取快递 case "100016"://顺风车 ivRoadEventNav.setVisibility(View.VISIBLE); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java index 05edb72666..7489f844d9 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XPushLiveCarWindow.java @@ -2,19 +2,21 @@ package com.mogo.module.v2x.scenario.scene.livecar; import android.content.Context; import android.os.Handler; +import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; import com.mogo.module.common.entity.MarkerCarInfo; +import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; -import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.module.v2x.utils.MarkerUtils; import com.mogo.module.v2x.view.V2XLiveGSYVideoView; +import com.mogo.service.imageloader.MogoImageView; import com.mogo.utils.logger.Logger; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; @@ -30,6 +32,7 @@ public class V2XPushLiveCarWindow extends RelativeLayout implements IV2XWindow mItemList = new ArrayList<>(); + private List mItemList = new ArrayList<>(); // 处理道路事件,30秒倒计时 private Handler handlerV2XEvent = new Handler(); private Runnable runnableV2XEvent; @@ -80,7 +82,7 @@ public class V2XPushEventWindow extends RelativeLayout implements IV2XWindow { V2XMessageEntity v2XMessageEntity = - TestOnLineCarUtils.getV2XScenarioPushEventData(); + TestOnLineCarUtils.getV2XScenarioPushLiveEventData(); Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION); intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java index 75f5490c78..a9e89d1cfd 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java @@ -2,11 +2,11 @@ package com.mogo.module.v2x.utils; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerResponse; -import com.mogo.module.v2x.R; -import com.mogo.module.v2x.entity.net.V2XSpecialCarRes; import com.mogo.module.common.entity.V2XMessageEntity; 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.entity.net.V2XSpecialCarRes; import com.mogo.utils.network.utils.GsonUtil; import java.io.ByteArrayOutputStream; @@ -122,6 +122,40 @@ public class TestOnLineCarUtils { return null; } + + /** + * 模拟H5推送直播数据 + */ + public static V2XMessageEntity getV2XScenarioPushLiveEventData() { + try { + InputStream inputStream = V2XUtils.getApp() + .getResources() + .openRawResource(R.raw.scenario_push_live_event_data); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int len = -1; + byte[] buffer = new byte[1024]; + while ((len = inputStream.read(buffer)) != -1) { + baos.write(buffer, 0, len); + } + inputStream.close(); + + // 加载数据源 + V2XPushMessageEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class); + + V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>(); + // 控制类型 + v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING); + // 设置数据 + v2xMessageEntity.setContent(v2xRoadEventEntity); + // 控制展示状态 + v2xMessageEntity.setShowState(true); + return v2xMessageEntity; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + /** * 模拟H5推送场景动画数据 */ diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json new file mode 100644 index 0000000000..1e32be0f3b --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_live_event_data.json @@ -0,0 +1,21 @@ +{ + "sceneId": "100016", + "alarmContent": "顺风车提醒", + "expireTime": 30000, + "sceneCategory": 0, + "sceneDescription": "周围有路人发起顺风车", + "sceneName": "顺风车提醒", + "sceneLevel": 0, + "videoUrl": "rtmp://58.200.131.2:1935/livetv/hunantv", + "videoChannel": "C_1", + "videoSn": "XTCBA90740400625", + "tts": "附近直播车辆", + "zoom": true, + "zoomScale": 15, + "location": { + "lat": 39.971417, + "lon": 116.415853 + }, + "userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png", + "msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg" +} \ No newline at end of file