Merge branch 'dev' of gitlab.zhidaoauto.com:ecos/yycp-service/Launcher into dev

This commit is contained in:
wangcongtao
2020-08-07 17:34:43 +08:00
24 changed files with 366 additions and 255 deletions

View File

@@ -141,6 +141,7 @@ targetSdkVersion : 22,
videoarm64 : "com.shuyu:gsyVideoPlayer-arm64:7.1.2",
videojava : "com.shuyu:gsyVideoPlayer-java:7.1.2",
eventbus : "org.greenrobot:eventbus:3.1.1",
videoprocessor : "com.zhidao.video:video-processor:1.0.2.1",
coroutinescore : "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1",
coroutinesandroid : "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1",

View File

@@ -6,6 +6,13 @@
<intent-filter>
<action android:name="com.v2x.scene_handler_broadcast" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name=".receiver.TestPanelBroadcastReceiver">
<intent-filter>
<action android:name="com.v2x.test_panel_control" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>

View File

@@ -32,6 +32,13 @@ public class V2XConst {
public static final String BROADCAST_SCENE_HANDLER_ACTION = "com.v2x.scene_handler_broadcast";
public static final String BROADCAST_SCENE_EXTRA_KEY = "V2XMessageEntity";
/**
* V2X 测试控制面板广播Action
*/
public static final String BROADCAST_TEST_PANEL_CONTROL_ACTION = "com.v2x.com.v2x.test_panel_control";
public static final String BROADCAST_TEST_PANEL_CONTROL_EXTRA_KEY = "TextPanelOpenStatus";
public static final String BROADCAST_SCENE_ACTION = "com.v2x.scene_local_broadcast";
public static final String SEEK_HELP_TIME = "seek_help_time";
public static final String V2X_ACC_ON_TIME_STR = "v2x_acc_on_time_str";

View File

@@ -29,7 +29,6 @@ import com.mogo.module.v2x.receiver.SceneBroadcastReceiver;
import com.mogo.module.v2x.scenario.impl.V2XScenarioManager;
import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkScenario;
import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkWindow;
import com.mogo.module.v2x.scenario.scene.test.V2XTestConsoleWindow;
import com.mogo.module.v2x.utils.FatigueDrivingUtils;
import com.mogo.module.v2x.utils.TimeUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
@@ -136,12 +135,6 @@ 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);
}
}
private void initData() {

View File

@@ -13,10 +13,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.entity.panel.ShareEventDescription;
import com.mogo.module.v2x.entity.panel.ShareEventItem;
import com.mogo.module.v2x.entity.panel.ShareEventItemEnum;
import com.mogo.module.v2x.entity.panel.ShareEventLoadMoreItem;
import com.mogo.module.v2x.entity.panel.V2XShareEventDescription;
import com.mogo.module.v2x.entity.panel.V2XShareEventItem;
import com.mogo.module.v2x.entity.panel.V2XShareEventItemEnum;
import com.mogo.module.v2x.entity.panel.V2XShareEventLoadMoreItem;
import com.mogo.module.v2x.fragment.V2XEventPanelFragment;
import com.mogo.module.v2x.listener.AdapterCallback;
import com.mogo.service.IMogoServiceApis;
@@ -44,17 +44,17 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter<RecyclerView.View
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//根据viewType创建自定义布局
if (viewType == ShareEventItemEnum.ITEM_TYPE_NUM_DES) {
if (viewType == V2XShareEventItemEnum.ITEM_TYPE_NUM_DES) {
View v = shareLayoutInflater.inflate(R.layout.module_v2x_event_share_description, parent,
false);
shareDescriptionViewHolder holder = new shareDescriptionViewHolder(v);
return holder;
} else if (viewType == ShareEventItemEnum.ITEM_TYPE_SHARE_LIST) {
} else if (viewType == V2XShareEventItemEnum.ITEM_TYPE_SHARE_LIST) {
View v = shareLayoutInflater.inflate(R.layout.module_v2x_event_share_item, parent,
false);
shareItemViewHolder holder = new shareItemViewHolder(v);
return holder;
} else if (viewType == ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY) {
} else if (viewType == V2XShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY) {
View v = shareLayoutInflater.inflate(R.layout.module_v2x_event_share_empty, parent,
false);
shareEmptyViewHolder holder = new shareEmptyViewHolder(v);
@@ -98,7 +98,7 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter<RecyclerView.View
if (holder instanceof shareDescriptionViewHolder) {
//分享次数,车友认同次数,热心指数
if (dataArrayList.size() > position) {
ShareEventDescription.ResultBean.EnthusiasmIndexBean data = (ShareEventDescription.ResultBean.EnthusiasmIndexBean) dataArrayList.get(position);
V2XShareEventDescription.ResultBean.EnthusiasmIndexBean data = (V2XShareEventDescription.ResultBean.EnthusiasmIndexBean) dataArrayList.get(position);
if (data != null) {
String shareNum = String.valueOf(data.getShareNum());
String likeNum = String.valueOf(data.getLikeNum());
@@ -115,7 +115,7 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter<RecyclerView.View
} else if (holder instanceof shareItemViewHolder) {
//分享列表
if (dataArrayList.size() > position) {
ShareEventItem.ResultBean.PageBean.ContentBean data = (ShareEventItem.ResultBean.PageBean.ContentBean) dataArrayList.get(position);
V2XShareEventItem.ResultBean.PageBean.ContentBean data = (V2XShareEventItem.ResultBean.PageBean.ContentBean) dataArrayList.get(position);
if (data != null) {
String poitype = data.getPoiType();
String address = data.getUploadAddress();
@@ -141,29 +141,30 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter<RecyclerView.View
}
} else if (holder instanceof shareLoadStatusViewHolder) {
ShareEventLoadMoreItem item = (ShareEventLoadMoreItem) dataArrayList.get(dataArrayList.size() - 1);
V2XShareEventLoadMoreItem item = (V2XShareEventLoadMoreItem) dataArrayList.get(dataArrayList.size() - 1);
((shareLoadStatusViewHolder) holder).statusButton.setText(item.getStatusText());
((shareLoadStatusViewHolder) holder).statusButton.setClickable(item.isClickable());
}
}
@Override
public int getItemCount() {
int size = dataArrayList.size();
return dataArrayList.size();
}
@Override
public int getItemViewType(int position) {
Object item = dataArrayList.get(position);
if (item instanceof ShareEventDescription.ResultBean.EnthusiasmIndexBean) {
return ShareEventItemEnum.ITEM_TYPE_NUM_DES;
} else if (item instanceof ShareEventItem.ResultBean.PageBean.ContentBean) {
return ShareEventItemEnum.ITEM_TYPE_SHARE_LIST;
} else if (item instanceof ShareEventLoadMoreItem) {
return ((ShareEventLoadMoreItem) dataArrayList.get(position)).getViewType();
if (item instanceof V2XShareEventDescription.ResultBean.EnthusiasmIndexBean) {
return V2XShareEventItemEnum.ITEM_TYPE_NUM_DES;
} else if (item instanceof V2XShareEventItem.ResultBean.PageBean.ContentBean) {
return V2XShareEventItemEnum.ITEM_TYPE_SHARE_LIST;
} else if (item instanceof V2XShareEventLoadMoreItem) {
return ((V2XShareEventLoadMoreItem) dataArrayList.get(position)).getViewType();
}
return ShareEventItemEnum.ITEM_TYPE_SHARE_LIST;
return V2XShareEventItemEnum.ITEM_TYPE_SHARE_LIST;
}
/*
@@ -225,7 +226,7 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter<RecyclerView.View
public shareLoadStatusViewHolder(@NonNull View itemView) {
super(itemView);
statusButton = itemView.findViewById(R.id.event_share_load_status);
statusButton = itemView.findViewById(R.id.event_share_load_status);;
statusButton.setOnClickListener(new View.OnClickListener() {
@Override

View File

@@ -4,7 +4,7 @@ import com.mogo.commons.data.BaseData;
import java.io.Serializable;
public class ShareEventDescription extends BaseData implements Serializable {
public class V2XShareEventDescription extends BaseData implements Serializable {
/**
* detailMsg :

View File

@@ -5,7 +5,7 @@ import com.mogo.commons.data.BaseData;
import java.io.Serializable;
import java.util.List;
public class ShareEventItem extends BaseData implements Serializable {
public class V2XShareEventItem extends BaseData implements Serializable {
private String detailMsg;
private ResultBean result;
@@ -114,7 +114,7 @@ public class ShareEventItem extends BaseData implements Serializable {
'}';
}
private int viewType = ShareEventItemEnum.ITEM_TYPE_SHARE_LIST;
private int viewType = V2XShareEventItemEnum.ITEM_TYPE_SHARE_LIST;
private Long uploadTimestamp;
private long timeout;
private String uploadAddress;

View File

@@ -1,6 +1,6 @@
package com.mogo.module.v2x.entity.panel;
public interface ShareEventItemEnum {
public interface V2XShareEventItemEnum {
int ITEM_TYPE_NUM_DES = 0;
int ITEM_TYPE_SHARE_LIST = 1;

View File

@@ -7,9 +7,18 @@ import java.io.Serializable;
/*
* 没有任何分享,去分享/加载更多/没有更多了
* */
public class ShareEventLoadMoreItem extends BaseData implements Serializable {
public class V2XShareEventLoadMoreItem extends BaseData implements Serializable {
private String statusText;
private int viewType;
private boolean clickable = true;
public boolean isClickable() {
return clickable;
}
public void setClickable(boolean clickable) {
this.clickable = clickable;
}
public int getViewType() {
return viewType;

View File

@@ -1,6 +1,5 @@
package com.mogo.module.v2x.fragment;
import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -17,10 +16,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.adapter.V2XShareEventAdapter;
import com.mogo.module.v2x.entity.panel.ShareEventDescription;
import com.mogo.module.v2x.entity.panel.ShareEventItem;
import com.mogo.module.v2x.entity.panel.ShareEventItemEnum;
import com.mogo.module.v2x.entity.panel.ShareEventLoadMoreItem;
import com.mogo.module.v2x.entity.panel.V2XShareEventDescription;
import com.mogo.module.v2x.entity.panel.V2XShareEventItem;
import com.mogo.module.v2x.entity.panel.V2XShareEventItemEnum;
import com.mogo.module.v2x.entity.panel.V2XShareEventLoadMoreItem;
import com.mogo.module.v2x.listener.AdapterCallback;
import com.mogo.module.v2x.network.V2XRefreshCallback;
import com.mogo.module.v2x.network.V2XShareNetworkModel;
@@ -88,15 +87,15 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
v2XShareNetworkModel.getShareEventResponse(pageNum, 10, new V2XRefreshCallback() {
@Override
public void onSuccess(Object result) {
if (result instanceof ShareEventDescription) {
ShareEventDescription resultData = (ShareEventDescription) result;
if (result instanceof V2XShareEventDescription) {
V2XShareEventDescription resultData = (V2XShareEventDescription) result;
if (resultData != null && resultData.getResult() != null
&& resultData.getResult().getEnthusiasmIndex() != null) {
dataArrayList.add(resultData.getResult().getEnthusiasmIndex());
Log.d(TAG, "热心指数:" + resultData.getResult().getEnthusiasmIndex());
}
} else if (result instanceof ShareEventItem) {
} else if (result instanceof V2XShareEventItem) {
loadSuccessWithShareEventList(result);
}
}
@@ -113,31 +112,33 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
* 我的分享列表数据处理
* */
private void loadSuccessWithShareEventList(Object result) {
ShareEventItem resultData = (ShareEventItem) result;
ShareEventLoadMoreItem item = new ShareEventLoadMoreItem();
V2XShareEventItem resultData = (V2XShareEventItem) result;
V2XShareEventLoadMoreItem item = new V2XShareEventLoadMoreItem();
if (resultData != null && resultData.getResult() != null) {
if (resultData.getResult().getPage() != null) {
int total = resultData.getResult().getPage().getTotal();
if (total == 0) {
//空白
item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
item.setViewType(V2XShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
dataArrayList.add(item);
} else {
if (dataArrayList.size() > 0) {
Object data = dataArrayList.get(dataArrayList.size() - 1);
if (data instanceof V2XShareEventLoadMoreItem || data instanceof V2XShareEventLoadMoreItem) {
dataArrayList.remove(dataArrayList.size() - 1);
}
}
if (resultData.getResult().getPage().getContent().size() > 0) {
//当前页有数据
if (dataArrayList.size() > 0) {
Object data = dataArrayList.get(dataArrayList.size() - 1);
if (data instanceof ShareEventLoadMoreItem) {
dataArrayList.remove(dataArrayList.size() - 1);
}
}
dataArrayList.addAll(resultData.getResult().getPage().getContent());
item.setViewType(ShareEventItemEnum.ITEM_TYPE_LOAD_MORE_STATUS);
item.setViewType(V2XShareEventItemEnum.ITEM_TYPE_LOAD_MORE_STATUS);
item.setStatusText("查看更早记录");
item.setClickable(true);
} else {
//当前页没有数据
item.setViewType(ShareEventItemEnum.ITEM_TYPE_NO_MORE);
item.setViewType(V2XShareEventItemEnum.ITEM_TYPE_NO_MORE);
item.setStatusText("没有更多了");
item.setClickable(false);
}
if (total > 10) {
dataArrayList.add(item);
@@ -147,7 +148,7 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
Log.d(TAG, "分享列表:" + dataArrayList.get(0));
} else {
//空白
item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
item.setViewType(V2XShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY);
dataArrayList.add(item);
}
adapter.notifyDataSetChanged();
@@ -194,7 +195,9 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba
@Override
public void loadMoreShareEventList() {
v2XShareNetworkModel.getShareEventList(pageNum + 1, 10, new V2XRefreshCallback() {
Log.d(TAG,"page--"+pageNum);
pageNum+=1;
v2XShareNetworkModel.getShareEventList(pageNum, 10, new V2XRefreshCallback() {
@Override
public void onSuccess(Object result) {
loadSuccessWithShareEventList(result);

View File

@@ -59,7 +59,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
@Override
public void drawableLastAllPOI() {
//Logger.w(MODULE_NAME, "V2X---绘制上一次的POI回调给Launcher底层逻辑让其进行绘制");
Logger.w(MODULE_NAME, "V2X---绘制上一次的POI回调给Launcher底层逻辑让其进行绘制");
// 清除连接线
V2XServiceManager.getMoGoV2XPolylineManager().clearLine();
clearAlarmPOI();

View File

@@ -6,10 +6,10 @@ import android.graphics.Bitmap
import android.view.LayoutInflater
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.module.service.utils.ViewUtils
import com.mogo.module.v2x.R
import com.mogo.module.common.entity.V2XPoiTypeEnum
import com.mogo.module.common.entity.V2XRoadEventEntity
import com.mogo.module.service.utils.ViewUtils
import com.mogo.module.v2x.R
import kotlinx.android.synthetic.main.view_marker_event_car.view.*
/**
@@ -23,7 +23,7 @@ import kotlinx.android.synthetic.main.view_marker_event_car.view.*
* version: 1.0
*/
class V2XMarkerRoadEventView(context: Context, alarmInfo: V2XRoadEventEntity) :
ConstraintLayout(context) {
ConstraintLayout(context) {
val TAG = "V2XMarkerRoadEventView"
init {
@@ -32,13 +32,13 @@ class V2XMarkerRoadEventView(context: Context, alarmInfo: V2XRoadEventEntity) :
fun initView(context: Context, alarmInfo: V2XRoadEventEntity) {
if (alarmInfo.poiType == V2XPoiTypeEnum.ALERT_FRONT_CAR ||
alarmInfo.poiType == V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING.toString()
alarmInfo.poiType == V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING.toString()
) {
LayoutInflater.from(context)
.inflate(R.layout.view_marker_event_car, this)
.inflate(R.layout.view_marker_event_car, this)
} else {
LayoutInflater.from(context)
.inflate(R.layout.view_marker_event_road, this)
.inflate(R.layout.view_marker_event_road, this)
}
updateIcon(alarmInfo)
}
@@ -82,6 +82,10 @@ class V2XMarkerRoadEventView(context: Context, alarmInfo: V2XRoadEventEntity) :
V2XPoiTypeEnum.FOURS_ACCIDENT -> {
ivCar.setImageResource(R.drawable.v_to_x_marker_7)
}
//事故
V2XPoiTypeEnum.FOURS_LIVING -> {
ivCar.setImageResource(R.drawable.v_to_x_marker_1)
}
//红绿灯数据
V2XPoiTypeEnum.ALERT_TRAFFIC_LIGHT_SUGGEST -> {
ivCar.setImageResource(R.drawable.v_to_x_marker_3)

View File

@@ -8,8 +8,8 @@ import com.mogo.module.v2x.entity.net.V2XLivePushVoRes;
import com.mogo.module.v2x.entity.net.V2XSeekHelpRes;
import com.mogo.module.v2x.entity.net.V2XStrategyPushRes;
import com.mogo.module.v2x.entity.net.V2XUserInfoRes;
import com.mogo.module.v2x.entity.panel.ShareEventDescription;
import com.mogo.module.v2x.entity.panel.ShareEventItem;
import com.mogo.module.v2x.entity.panel.V2XShareEventDescription;
import com.mogo.module.v2x.entity.panel.V2XShareEventItem;
import com.mogo.module.v2x.entity.panel.SurroundingResponse;
import java.util.Map;
@@ -117,14 +117,14 @@ public interface V2XApiService {
*/
@FormUrlEncoded
@POST("/deva/poiInfoFabulous/car/poi/no/queryEnthusiasmIndex/v1")
Observable<ShareEventDescription> getEnthusiasmIndex(@FieldMap Map<String, Object> parames);
Observable<V2XShareEventDescription> getEnthusiasmIndex(@FieldMap Map<String, Object> parames);
/**
* 我的分享-列表
*/
@FormUrlEncoded
@POST("/deva/car/pathAndPoi/no/queryInfo")
Observable<ShareEventItem> getShareEventList(@FieldMap Map<String, Object> parames);
Observable<V2XShareEventItem> getShareEventList(@FieldMap Map<String, Object> parames);
/*
* 周边列表

View File

@@ -42,39 +42,13 @@ public class V2XShareNetworkModel {
* 2.分享列表
* */
public void getShareEventResponse(int page, int size, V2XRefreshCallback callback) {
final ParamsProvider.Builder builder = new ParamsProvider.Builder(mContext);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("sn", Utils.getSn());
builder.append("data", GsonUtil.jsonFromObject(hashMap));
Map<String, Object> parameters = builder.build();
Observable<String> indexObservable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
try {
//热心指数
mRefreshApiService.getEnthusiasmIndex(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create((mContext))) {
@Override
public void onSuccess(BaseData resultData) {
super.onSuccess(resultData);
if (callback != null) {
callback.onSuccess(resultData);
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
if (callback != null) {
callback.onFail(message);
}
}
});
getShareIndex(callback);
} catch (Exception e) {
e.printStackTrace();
}
@@ -128,6 +102,40 @@ public class V2XShareNetworkModel {
});
}
/*
* 热心指数
* */
public void getShareIndex(V2XRefreshCallback callback) {
final ParamsProvider.Builder builder = new ParamsProvider.Builder(mContext);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("sn", Utils.getSn());
builder.append("data", GsonUtil.jsonFromObject(hashMap));
Map<String, Object> parameters = builder.build();
//热心指数
mRefreshApiService.getEnthusiasmIndex(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create((mContext))) {
@Override
public void onSuccess(BaseData resultData) {
super.onSuccess(resultData);
if (callback != null) {
callback.onSuccess(resultData);
}
}
@Override
public void onError(String message, int code) {
super.onError(message, code);
if (callback != null) {
callback.onFail(message);
}
}
});
}
/*
* 分享列表
* */

View File

@@ -22,7 +22,7 @@ public class SceneBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
V2XMessageEntity v2XMessageEntity = (V2XMessageEntity) intent.getSerializableExtra("V2XMessageEntity");
V2XMessageEntity v2XMessageEntity = (V2XMessageEntity) intent.getSerializableExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY);
Logger.d(TAG, "v2XMessageEntity:" + GsonUtil.jsonFromObject(v2XMessageEntity));
V2XScenarioManager.getInstance().handlerMessage(v2XMessageEntity);
} catch (Exception e) {

View File

@@ -0,0 +1,38 @@
package com.mogo.module.v2x.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.scenario.scene.test.V2XTestConsoleWindow;
import com.mogo.utils.logger.Logger;
/**
* V2X 测试面板广播接收,目的是可以通过广播调用起来面板
*
* @author donghongyu
*/
public class TestPanelBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = V2XConst.MODULE_NAME + "_TestPanelBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
try {
boolean textPanelOpenStatus = intent.getBooleanExtra(V2XConst.BROADCAST_TEST_PANEL_CONTROL_EXTRA_KEY, false);
Logger.d(TAG, "textPanelOpenStatus:" + textPanelOpenStatus);
if (textPanelOpenStatus) {
V2XServiceManager
.getIMogoWindowManager()
.addView(V2XTestConsoleWindow.getInstance(context), 0, 0, false);
} else {
V2XServiceManager
.getIMogoWindowManager()
.removeView(V2XTestConsoleWindow.getInstance(context));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -95,6 +95,8 @@ public class V2XIllegalParkMarker implements IV2XMarker<List<MarkerExploreWay>>
V2XServiceManager.getMoGoV2XPolylineManager().clearLine();
// 移除事件POI
V2XServiceManager.getMoGoV2XMarkerManager().clearAlarmPOI();
// 绘制上次的数据
V2XServiceManager.getMoGoV2XMarkerManager().drawableLastAllPOI();
}
/**

View File

@@ -32,6 +32,8 @@ import java.util.List;
* version: 1.0
*/
public class V2XTestConsoleWindow extends ConstraintLayout {
private static V2XTestConsoleWindow mV2XTestConsoleWindow;
private FlexboxLayout mFlTestPanel;
private Button mBtnTriggerOpen;
private Button mBtnTriggerRoadEvent;
@@ -43,6 +45,17 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
private Button mBtnTriggerSeekHelpEvent;
private Button mBtnTriggerParkEvent;
public static V2XTestConsoleWindow getInstance(Context context) {
if (mV2XTestConsoleWindow == null) {
synchronized (V2XTestConsoleWindow.class) {
if (mV2XTestConsoleWindow == null) {
mV2XTestConsoleWindow = new V2XTestConsoleWindow(context);
}
}
}
return mV2XTestConsoleWindow;
}
public V2XTestConsoleWindow(Context context) {
this(context, null);
}

View File

@@ -127,8 +127,6 @@ public class EventTypeUtils {
case V2XPoiTypeEnum.FOURS_FOG://浓雾
case V2XPoiTypeEnum.FOURS_ICE://结冰
case V2XPoiTypeEnum.FOURS_ACCIDENT://事故
case V2XPoiTypeEnum.FOURS_NEALY://身边
case V2XPoiTypeEnum.FOURS_LIVING://实时路况
isRoadEvent = true;
break;
}

View File

@@ -1,6 +1,7 @@
package com.mogo.module.v2x.utils.animation;
import android.graphics.drawable.AnimationDrawable;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
@@ -9,6 +10,7 @@ import com.mogo.utils.UiThreadHandler;
public class V2XAnimationManager implements Animation {
private static final String TAG = "V2XAnimationManager";
private ImageView targetImageView;
private Animation delegate;
private boolean isStarted = false;
@@ -18,6 +20,7 @@ public class V2XAnimationManager implements Animation {
ThreadPoolService.execute(() -> {
final AnimationDrawable drawable = new AnimationDrawable();
for (int i = 0; i < resources.length; i++) {
drawable.setOneShot(false);
drawable.addFrame(targetImageView.getResources().getDrawable(resources[i]), duration);
}
UiThreadHandler.post(() -> {
@@ -48,6 +51,7 @@ public class V2XAnimationManager implements Animation {
}
public void release() {
delegate = null;
}
}

View File

@@ -2,23 +2,38 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androud="http://schemas.android.com/apk/res-auto"
android:id="@+id/clPanelContainer"
android:background="@color/live_video_background_color"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="@color/live_video_background_color">
<!--顶部layout-->
<RelativeLayout
android:id="@+id/layout_top"
android:layout_width="match_parent"
android:layout_height="150dp">
android:layout_height="80dp">
<TextView
android:id="@+id/tv_brief"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginLeft="400px"
android:layout_centerVertical="true"
android:text="周边5公里共有23条数据 "
android:textColor="#ffffff" />
<TextView
android:id="@+id/tv_top_refresh"
android:layout_width="150px"
android:layout_height="50px"
android:layout_marginLeft="50px"
android:layout_toRightOf="@+id/tv_brief"
android:layout_centerInParent="true"
android:background="@drawable/bg_v2x_event_live_show"
android:gravity="center"
android:text="刷新"
android:textColor="@color/live_video_background_color"
android:textSize="12px"
android:textStyle="bold" />
</RelativeLayout>
<!--列表相关-->
@@ -28,13 +43,13 @@
android:layout_height="match_parent"
android:layout_below="@+id/layout_top">
<!--空数据显示-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/surrounding_recycleview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible" />
<!--空数据显示-->
<RelativeLayout
android:id="@+id/layout_empty_data_show"
android:layout_width="match_parent"
@@ -86,8 +101,8 @@
android:layout_toRightOf="@+id/tv_main_share"
android:background="@drawable/bg_v2x_event_live_show"
android:gravity="center"
android:textColor="@color/live_video_background_color"
android:text="刷新"
android:textColor="@color/live_video_background_color"
android:textSize="12px"
android:textStyle="bold" />

View File

@@ -3,97 +3,116 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:orientation="vertical"
android:background="@drawable/v2x_alert_window_bg">
<TextView
android:id="@+id/share_event_guide_des"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="小窍门:分享路况,点赞其他车友,有助于提高热心指数"
android:textColor="#FFFFFF"
android:textSize="16sp">
</TextView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/share_num"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"
android:text="0"
android:textColor="#FFFFFF"
android:textSize="25sp" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/shre_num_des"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center"
android:gravity="center"
android:text="分享次数"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/share_num"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"
android:text="0"
android:textColor="#FFFFFF"
android:textSize="25sp" />
<TextView
android:id="@+id/shre_num_des"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center"
android:gravity="center"
android:text="分享次数"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
<ImageView
android:layout_width="1dp"
android:layout_height="80dp"
android:background="#FFFFFF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/share_approve"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="0"
android:textColor="#FFFFFF"
android:textSize="25sp" />
<TextView
android:id="@+id/share_approve_des"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"
android:text="车友认同次数"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
<ImageView
android:layout_width="1dp"
android:layout_height="80dp"
android:background="#FFFFFF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="vertical">
<RatingBar
android:id="@+id/rating_bar"
style="@style/customRatingBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:isIndicator="true" />
<TextView
android:id="@+id/share_index_des"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"
android:paddingBottom="0dp"
android:text="热心指数"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<ImageView
android:layout_width="1dp"
android:layout_height="80dp"
android:background="#FFFFFF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/share_approve"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="0"
android:textColor="#FFFFFF"
android:textSize="25sp" />
<TextView
android:id="@+id/share_approve_des"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"
android:text="车友认同次数"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
<ImageView
android:layout_width="1dp"
android:layout_height="80dp"
android:background="#FFFFFF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_weight="1"
android:orientation="vertical">
<RatingBar
android:id="@+id/rating_bar"
style="@style/customRatingBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:isIndicator="true"
android:layout_gravity="center"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/share_index_des"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"
android:paddingBottom="0dp"
android:text="热心指数"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>

View File

@@ -3,23 +3,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/share_event_guide_des"
<ImageView
android:id="@+id/no_share_image"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="小窍门:分享路况、点赞其他车友,有助于提高热心指数"
android:textColor="#FFFFFF"
android:textSize="16sp">
</TextView>
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/amap_ride" />
<TextView
android:id="@+id/share_event_null_des"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_below="@+id/share_event_guide_des"
android:layout_below="@+id/no_share_image"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="你还没有分享过道路事件,快去试试吧" />

View File

@@ -17,6 +17,60 @@
android:textColor="#FFFFFF"
android:textSize="15sp" />
<TextView
android:id="@+id/road_case_useless_num"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:gravity="center"
android:text="10"
android:textColor="#FFFFFF"
android:textSize="15sp" />
<Button
android:id="@+id/road_case_useless"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:layout_toLeftOf="@id/road_case_useless_num"
android:background="@drawable/amap_bus"
android:gravity="center" />
<TextView
android:id="@+id/road_case_useful_num"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:layout_toLeftOf="@id/road_case_useless"
android:gravity="center"
android:text="5"
android:textColor="#FFFFFF"
android:textSize="15sp" />
<TextView
android:id="@+id/road_case_uselful"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerInParent="true"
android:layout_toLeftOf="@id/road_case_useful_num"
android:background="@drawable/amap_ride" />
<TextView
android:id="@+id/road_case_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/road_case_style"
android:layout_alignLeft="@id/road_case_style"
android:layout_toLeftOf="@id/road_case_uselful"
android:ellipsize="end"
android:gravity="left"
android:lines="1"
android:text="东城区北三环附近维多欧美"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/road_case_share_time"
android:layout_width="wrap_content"
@@ -28,64 +82,4 @@
android:textColor="#FFFFFF"
android:textSize="13sp" />
<Button
android:id="@+id/road_case_useless"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginTop="25dp"
android:layout_marginRight="20dp"
android:background="@drawable/amap_bus" />
<TextView
android:id="@+id/road_case_useless_num"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_below="@id/road_case_useless"
android:layout_alignLeft="@id/road_case_useless"
android:layout_alignRight="@id/road_case_useless"
android:gravity="center"
android:text="10"
android:textColor="#FFFFFF"
android:textSize="15sp" />
<TextView
android:id="@+id/road_case_uselful"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignTop="@id/road_case_useless"
android:layout_alignBottom="@id/road_case_useless"
android:layout_marginRight="20dp"
android:layout_toLeftOf="@id/road_case_useless"
android:background="@drawable/amap_ride" />
<TextView
android:id="@+id/road_case_useful_num"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_below="@id/road_case_useless"
android:layout_alignLeft="@id/road_case_uselful"
android:layout_alignRight="@id/road_case_uselful"
android:gravity="center"
android:text="5"
android:textColor="#FFFFFF"
android:textSize="15sp" />
<TextView
android:id="@+id/road_case_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/road_case_style"
android:layout_alignEnd="@id/road_case_uselful"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@id/road_case_uselful"
android:ellipsize="end"
android:gravity="left"
android:lines="1"
android:text="东城区北三环"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</RelativeLayout>