Merge branch 'dev_1.1.2' into dev

This commit is contained in:
董宏宇
2020-07-29 12:00:01 +08:00
31 changed files with 1457 additions and 267 deletions

View File

@@ -140,12 +140,12 @@ public class V2XModuleProvider implements
intentFilter.addAction(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
localBroadcastManager.registerReceiver(localReceiver, intentFilter);
// if (BuildConfig.DEBUG) {
// // TODO 这是测试页面
// V2XServiceManager
// .getIMogoWindowManager()
// .addView(new V2XTestConsoleWindow(context), 0, 0, false);
// }
if (BuildConfig.DEBUG) {
// TODO 这是测试页面
V2XServiceManager
.getIMogoWindowManager()
.addView(new V2XTestConsoleWindow(context), 0, 0, false);
}
}
private void initVoice(Context context) {

View File

@@ -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<V2XPushEventDetailVH> {
private List<V2XPushMessageEntity> itemList;
public V2XPushEventAdapter(List<V2XPushMessageEntity> 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();
}
}

View File

@@ -6,9 +6,12 @@ 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.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;
import com.mogo.module.v2x.adapter.holder.V2XRoadEventDetailVH;
import java.util.List;
@@ -32,14 +35,28 @@ public class V2XRoadEventAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
RecyclerView.ViewHolder holder;
switch (viewType) {
// 直播
case V2XWindowTypeEnum.LIVE_CAR_WINDOW:
holder = new V2XLiveVideoVH(parent);
break;
//道路事件详情
case V2XWindowTypeEnum.ROAD_EVENT_WINDOW:
holder = new V2XRoadEventDetailVH(parent);
break;
//违章停车
case V2XWindowTypeEnum.ILLEGAL_PARK_WINDOW:
holder = new V2XIllegalParkDetailVH(parent);
break;
//推送展示
case V2XWindowTypeEnum.PUSH_EVENT_WINDOW:
holder = new V2XPushEventDetailVH(parent);
break;
//疲劳驾驶
case V2XWindowTypeEnum.FATIGUE_DRIVING_WINDOW:
holder = new V2XFatigueDrivingDetailVH(parent);
break;
default:
holder = new V2XRoadEventDetailVH(parent);
holder = new V2XPushEventDetailVH(parent);
}
return holder;
}
@@ -52,6 +69,12 @@ public class V2XRoadEventAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
if (holder instanceof V2XRoadEventDetailVH) {
((V2XRoadEventDetailVH) holder).initView(itemList.get(position));
}
if (holder instanceof V2XIllegalParkDetailVH) {
((V2XIllegalParkDetailVH) holder).initView(itemList.get(position));
}
if (holder instanceof V2XPushEventDetailVH) {
((V2XPushEventDetailVH) holder).initView(itemList.get(position));
}
}
@Override

View File

@@ -0,0 +1,42 @@
package com.mogo.module.v2x.adapter.holder;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.scenario.scene.push.V2XPushEventScenario;
/**
* e-mail : 1358506549@qq.com
* date : 2020/3/11 4:35 PM
* desc : 疲劳驾驶
* version: 1.0
*
* @author donghongyu
*/
public class V2XFatigueDrivingDetailVH extends V2XBaseViewHolder {
private TextView mTvAddress, mTvAddressDistance;
private ImageView mIvToNav;
public V2XFatigueDrivingDetailVH(ViewGroup viewGroup) {
super(LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.window_fatigue_driving, viewGroup, false));
}
public void initView(V2XEventShowEntity v2XEventShowEntity) {
}
/**
* 延迟关闭窗体
*/
@Override
public void delayedCloseWindow() {
itemView.postDelayed(() -> V2XPushEventScenario.getInstance().close(), 1000);
}
}

View File

@@ -0,0 +1,131 @@
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.v2x.R;
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
* date : 2020/3/11 4:35 PM
* desc : 违章停车弹窗
* version: 1.0
*
* @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();
});
}
/**
* 延迟关闭窗体
*/
@Override
public void delayedCloseWindow() {
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();
}
}

View File

@@ -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);

View File

@@ -4,6 +4,7 @@ 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;
@@ -15,10 +16,13 @@ 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.ToastUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.sqlite.BaseDaoFactory;
import com.mogo.utils.sqlite.IBaseDao;
import java.util.HashMap;
@@ -36,6 +40,11 @@ public class V2XScenarioManager implements IV2XScenarioManager {
private AbsV2XScenario mV2XScenario;
private HashMap<Integer, AbsV2XScenario> mV2XScenarioSet = new HashMap<>();
/**
* 场景数据管理
*/
private static IBaseDao<V2XHistoryScenarioData> mScenarioDao;
private V2XScenarioManager() {
}
@@ -44,6 +53,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
synchronized (V2XScenarioManager.class) {
if (mV2XScenarioManager == null) {
mV2XScenarioManager = new V2XScenarioManager();
mScenarioDao = BaseDaoFactory.Companion.getInstance().getBaseDao(V2XUtils.getApp(), V2XHistoryScenarioData.class);
}
}
}
@@ -58,6 +68,17 @@ public class V2XScenarioManager implements IV2XScenarioManager {
V2XUtils.runOnUiThread(() -> {
// 提取之前存储的场景
if (v2XMessageEntity != null) {
try {
// 进行数据库存储
V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData();
v2XHistoryScenarioData.setScenarioType(v2XMessageEntity.getType());
v2XHistoryScenarioData.setTriggerTime(TimeUtils.getNowMills());
v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(v2XMessageEntity.getContent()));
mScenarioDao.insert(v2XHistoryScenarioData);
} catch (Exception e) {
e.printStackTrace();
}
// 广播给应用内部其它模块
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);

View File

@@ -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<V
private Context mContext;
private V2XLiveGSYVideoView mV2XLiveGSYVideoView;
private MogoImageView mIvReportHead;
// 弹窗状态监听
private V2XWindowStatusListener mV2XWindowStatusListener;
@@ -60,6 +63,7 @@ public class V2XPushLiveCarWindow extends RelativeLayout implements IV2XWindow<V
LayoutInflater.from(context).inflate(R.layout.window_push_live_video, this);
// 详情列表
mV2XLiveGSYVideoView = findViewById(R.id.videoPlayer);
mIvReportHead = findViewById(R.id.ivReportHead);
}
/**
@@ -70,6 +74,11 @@ public class V2XPushLiveCarWindow extends RelativeLayout implements IV2XWindow<V
if (entity != null) {
Logger.w(MODULE_NAME, "更新直播信息。。。。。" + entity);
if (!TextUtils.isEmpty(entity.getHeadImgUrl())) {
mIvReportHead.setVisibility(VISIBLE);
V2XServiceManager.getImageLoader()
.displayImage(entity.getHeadImgUrl(), mIvReportHead);
}
// 启动播放
MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo();
carLiveInfo.setVideoChannel(entity.getVideoChannel());

View File

@@ -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<MarkerExploreWay> {
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<V2XEventShowEntity> mItemList = new ArrayList<>();
// 处理道路事件20秒倒计时
private Handler handlerV2XEvent = new Handler();
@@ -44,10 +49,6 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow<M
private MarkerExploreWay mExploreWay;
// 反馈按钮语音操控
private V2XVoiceCallbackListener v2XVoiceCallbackYouYongListener = (command, intent) -> roadReportTrue();
private V2XVoiceCallbackListener v2XVoiceCallbackMeiYongListener = (command, intent) -> roadReportErr();
public V2XIllegalParkWindow() {
this(V2XServiceManager.getContext(), null);
}
@@ -69,12 +70,28 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow<M
* 初始化视图
*/
private void initView(Context context) {
LayoutInflater.from(context).inflate(R.layout.window_illegal_parking, this);
mAddressTv = findViewById(R.id.tvAddress);
mIllegalNumTv = findViewById(R.id.tvIllegalNum);
mIlIllegalParkingLike = findViewById(R.id.llIllegalParkingLike);
mIIllegalParkingUnLike = findViewById(R.id.llIllegalParkingUnLike);
LayoutInflater.from(context).inflate(R.layout.window_road_event_detail, this);
// 详情列表
mRecyclerView = findViewById(R.id.rvRoadEventList);
mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList);
mRecyclerView.setAdapter(mV2XRoadEventAdapter);
// 设置切换样式
new PagerSnapHelper().attachToRecyclerView(mRecyclerView);
// 配置列表朝向
LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (recyclerView.getChildCount() > 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<M
public void show(MarkerExploreWay entity) {
mExploreWay = entity;
//Logger.d(V2XConst.MODULE_NAME, "V2X===违章停车:展示 Window=\n" + entity);
mAddressTv.setText(entity.getAddr());
try {
mIllegalNumTv.setText("违章人数:" + (int) entity.getItems().get(0).getIllegalCount());
} catch (Exception e) {
e.printStackTrace();
// 清空数据
mItemList.clear();
if (mExploreWay != null) {
//Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity);
V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity();
v2XEventShowEntity.setV2XIllegalPark(mExploreWay);
v2XEventShowEntity.setViewType(V2XWindowTypeEnum.ILLEGAL_PARK_WINDOW);
mItemList.add(v2XEventShowEntity);
}
mIlIllegalParkingLike.setOnClickCallListener(v -> {
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<M
// 添加弹窗
V2XServiceManager.getMogoTopViewManager().addView(this, layoutParams);
// 注册语音交互
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);
}
/**
@@ -136,11 +139,6 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow<M
@Override
public void close() {
mIsAutoClose = false;
V2XVoiceManager.INSTANCE
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_YOUYONG_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_ILLEGAL_PARKMARKER_FEEDBACK_MEIYONG_UN_WAKEUP);
// 停止倒计时
if (handlerV2XEvent != null && runnableV2XEvent != null) {
handlerV2XEvent.removeCallbacks(runnableV2XEvent);
@@ -179,31 +177,4 @@ public class V2XIllegalParkWindow extends RelativeLayout implements IV2XWindow<M
Logger.d(V2XConst.MODULE_NAME, "V2X===违章停车 Window 展示开始倒计时:" + mExpireTime);
handlerV2XEvent.postDelayed(runnableV2XEvent, mExpireTime);
}
/**
* 反馈路况正确
*/
private void roadReportTrue() {
if (mExploreWay != null) {
RoadConditionUtils.sendDataErrorReceiverInfo(
mExploreWay.getPoiType(),
mExploreWay.getInfoId(),
"2");
}
close();
}
/**
* 反馈路况错误
*/
private void roadReportErr() {
if (mExploreWay != null) {
RoadConditionUtils.sendDataErrorReceiverInfo(
mExploreWay.getPoiType(),
mExploreWay.getInfoId(),
"1");
}
close();
}
}

View File

@@ -13,10 +13,12 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.PagerSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.common.entity.V2XWindowTypeEnum;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.adapter.V2XPushEventAdapter;
import com.mogo.module.common.entity.V2XPushMessageEntity;
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.voice.V2XVoiceCallbackListener;
@@ -42,9 +44,9 @@ public class V2XPushEventWindow extends RelativeLayout implements IV2XWindow<V2X
// 展示列表
private RecyclerView mRecyclerView;
// 列表数据适配器
private V2XPushEventAdapter mV2XRoadEventAdapter;
private V2XRoadEventAdapter mV2XRoadEventAdapter;
// 列表展示
private List<V2XPushMessageEntity> mItemList = new ArrayList<>();
private List<V2XEventShowEntity> mItemList = new ArrayList<>();
// 处理道路事件30秒倒计时
private Handler handlerV2XEvent = new Handler();
private Runnable runnableV2XEvent;
@@ -80,7 +82,7 @@ public class V2XPushEventWindow extends RelativeLayout implements IV2XWindow<V2X
LayoutInflater.from(context).inflate(R.layout.window_push_event_detail, this);
// 详情列表
mRecyclerView = findViewById(R.id.rvRoadEventList);
mV2XRoadEventAdapter = new V2XPushEventAdapter(mItemList);
mV2XRoadEventAdapter = new V2XRoadEventAdapter(mItemList);
mRecyclerView.setAdapter(mV2XRoadEventAdapter);
// 设置切换样式
new PagerSnapHelper().attachToRecyclerView(mRecyclerView);
@@ -110,7 +112,10 @@ public class V2XPushEventWindow extends RelativeLayout implements IV2XWindow<V2X
mItemList.clear();
if (v2XRoadEventEntity != null) {
//Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity);
mItemList.add(v2XRoadEventEntity);
V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity();
v2XEventShowEntity.setV2XPushMessageEntity(v2XRoadEventEntity);
v2XEventShowEntity.setViewType(V2XWindowTypeEnum.PUSH_EVENT_WINDOW);
mItemList.add(v2XEventShowEntity);
}
// 刷新列表
mV2XRoadEventAdapter.notifyDataSetChanged();

View File

@@ -103,7 +103,6 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
properties.put("style", style);
V2XServiceManager.getMogoAnalytics().track(V2XConst.V2X_ROAD_SHOW, properties);
}
String json = "{\"exploreWay\":[{\"addr\":\"东城区小黄庄北街2号靠近中国银行(北京安贞桥支行)\",\"userInfo\":{\"userName\":\"玉涛1\",\"sn\":\"E841CC2018PZD20143\",\"userHead\":\"http://img.zhidaohulian.com/fileServer/api/prod/user_info/726761827601/914019cfda5ab4b618e7f00e093eda82.jpg\",\"safeLabelType\":0,\"userId\":726761827601},\"cityName\":\"北京市\",\"uploadType\":\"0\",\"type\":\"CARD_TYPE_ROAD_CONDITION\",\"poiType\":\"10015\",\"infoId\":\"56280492\",\"items\":[{\"url\":\"http://petchfile-1255510688.cos.ap-beijing.myqcloud.com/CarPad/com.zhidao.roadcondition/E841CC2018PZD20143/E841CC2018PZD20143_20200722112917/PhotoFront_20200722_112918.JPG?sign\\u003dq-sign-algorithm%3Dsha1%26q-ak%3DAKIDCWfcNwD5PXVWLxwejccR3Tiz5zhIkx0T%26q-sign-time%3D1595388896%3B1595396096%26q-key-time%3D1595388896%3B1595396096%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3D2301fa50ff90f5b34f7f7c05a13a15f39abde9eb\",\"illegalCount\":0.0}],\"location\":{\"address\":\"东城区小黄庄北街2号靠近中国银行(北京安贞桥支行)\",\"angle\":0.0,\"lat\":39.968223,\"lon\":116.410857},\"generateTime\":1595388559153,\"distance\":47.0,\"fileType\":0,\"direction\":0,\"canLive\":false}]}";
}
@Override

View File

@@ -4,20 +4,22 @@ import android.content.Context;
import android.content.Intent;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.android.flexbox.FlexboxLayout;
import com.mogo.module.common.entity.MarkerExploreWay;
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.V2XConst;
import com.mogo.module.v2x.alarm.V2XAlarmServer;
import com.mogo.module.v2x.entity.net.V2XSpecialCarRes;
import com.mogo.module.v2x.utils.TestOnLineCarUtils;
import com.mogo.module.v2x.utils.ToastUtils;
import java.util.List;
@@ -29,8 +31,10 @@ import java.util.List;
* version: 1.0
*/
public class V2XTestConsoleWindow extends ConstraintLayout {
private FlexboxLayout mFlTestPanel;
private Button mBtnTriggerOpen;
private Button mBtnTriggerRoadEvent;
private Button mBtnClearRoadEvent;
private Button mBtnTriggerPushEvent;
private Button mBtnTriggerPushLiveCarEvent;
private Button mBtnTriggerAnimationEvent;
@@ -54,6 +58,9 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
private void initView(Context context) {
LayoutInflater.from(context).inflate(R.layout.window_test_console, this);
mFlTestPanel = findViewById(R.id.flTestPanel);
mBtnTriggerOpen = findViewById(R.id.btnTriggerOpen);
mBtnClearRoadEvent = findViewById(R.id.btnClearRoadEvent);
mBtnTriggerRoadEvent = findViewById(R.id.btnTriggerRoadEvent);
mBtnTriggerPushEvent = findViewById(R.id.btnTriggerPushEvent);
mBtnTriggerPushLiveCarEvent = findViewById(R.id.btnTriggerPushLiveCarEvent);
@@ -62,6 +69,13 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
mBtnTriggerSeekHelpEvent = findViewById(R.id.btnTriggerSeekHelpEvent);
mBtnTriggerParkEvent = findViewById(R.id.btnTriggerParkEvent);
mBtnTriggerOpen.setOnClickListener(v -> mFlTestPanel.setVisibility(GONE));
mBtnClearRoadEvent.setOnClickListener(v -> {
V2XAlarmServer.mAlertRoadEventList.clear();
ToastUtils.showShort("缓存已清除");
});
mBtnTriggerRoadEvent.setOnClickListener(v -> {
V2XMessageEntity<V2XRoadEventEntity> v2XMessageEntity =
TestOnLineCarUtils.getV2XScenarioRoadEventData();
@@ -82,7 +96,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
mBtnTriggerPushLiveCarEvent.setOnClickListener(v -> {
V2XMessageEntity<V2XPushMessageEntity> v2XMessageEntity =
TestOnLineCarUtils.getV2XScenarioPushEventData();
TestOnLineCarUtils.getV2XScenarioPushLiveEventData();
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);

View File

@@ -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<V2XPushMessageEntity> 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<V2XPushMessageEntity> 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推送场景动画数据
*/