new#基于目的地预判的道路事件提醒、路线推荐

This commit is contained in:
wujifei
2020-12-30 17:47:33 +08:00
parent cac40cbaa7
commit f80af8c3cf
20 changed files with 92 additions and 46 deletions

View File

@@ -102,6 +102,9 @@ public class V2XRoadEventAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
if (holder instanceof V2XOtherSeekHelpVH) {
((V2XOtherSeekHelpVH) holder).initView(itemList.get(position));
}
if (holder instanceof V2XRecommendRouteVH) {
((V2XRecommendRouteVH) holder).initView(itemList.get(position));
}
}
@Override

View File

@@ -1,5 +1,6 @@
package com.mogo.module.v2x.adapter.holder;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -8,29 +9,64 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.search.geo.IMogoGeoSearchListener;
import com.mogo.map.search.geo.MogoGeocodeResult;
import com.mogo.map.search.geo.MogoRegeocodeResult;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XRecommendRouteEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.scenario.view.IV2XWindow;
import com.mogo.module.v2x.utils.LocationUtils;
/**
* created by wujifei on 2020/12/29 20:39
* describe:线路推荐
*/
public class V2XRecommendRouteVH extends V2XBaseViewHolder<V2XRecommendRouteEntity> {
private TextView mTvAddress, mTvAddressDistance;
public class V2XRecommendRouteVH extends V2XBaseViewHolder<V2XEventShowEntity> {
private TextView mTvAddress;
private ImageView mIvToNav, mIvClose;
private MarkerExploreWay mNoveltyInfo;
public V2XRecommendRouteVH(ViewGroup viewGroup, IV2XWindow v2XWindow) {
super(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_v2x_fatigue_driving, viewGroup, false), v2XWindow);
super(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_v2x_recommend_route, viewGroup, false), v2XWindow);
mTvAddress = itemView.findViewById(R.id.tvAddress);
mTvAddressDistance = itemView.findViewById(R.id.tvAddressDistance);
mIvToNav = itemView.findViewById(R.id.ivToNav);
mIvClose = itemView.findViewById(R.id.ivClose);
mIvToNav.setOnClickListener(v -> triggerStartNavi(mNoveltyInfo));
mIvClose.setOnClickListener(v -> delayedCloseWindow());
}
@Override
public void initView(V2XRecommendRouteEntity viewData) {
public void initView(V2XEventShowEntity v2XEventShowEntity) {
MarkerLocation markerLocation = new MarkerLocation();
markerLocation.setLon(v2XEventShowEntity.getV2XRecommendRouteEntity().getToPoint().get(0));
markerLocation.setLat(v2XEventShowEntity.getV2XRecommendRouteEntity().getToPoint().get(1));
mNoveltyInfo = new MarkerExploreWay();
mNoveltyInfo.setLocation(markerLocation);
MogoLocation mogoLocation = new MogoLocation();
mogoLocation.setLongitude(v2XEventShowEntity.getV2XRecommendRouteEntity().getToPoint().get(0));
mogoLocation.setLatitude(v2XEventShowEntity.getV2XRecommendRouteEntity().getToPoint().get(1));
getLocationInfo(mogoLocation);
}
/**
* 获取定位相关信息
*/
private void getLocationInfo(MogoLocation location) {
// 定位当前位置是否是高速
LocationUtils.geoCodeSearch(location, new IMogoGeoSearchListener() {
@Override
public void onRegeocodeSearched(MogoRegeocodeResult regeocodeResult) {
mTvAddress.setText("前往 " + regeocodeResult.getRegeocodeAddress().getFormatAddress());
}
@Override
public void onGeocodeSearched(MogoGeocodeResult geocodeResult) {
}
});
}
}

View File

@@ -676,12 +676,12 @@ public class V2XRefreshModel {
@Override
public void onNext(V2XRoadDataRes v2XRoadDataRes) {
super.onNext(v2XRoadDataRes);
Logger.d("queryRoadData:onSuccess", v2XRoadDataRes.toString());
if (v2XRoadDataRes == null || v2XRoadDataRes.getResult() == null) {
return;
}
if (v2XRoadDataRes.getResult().getPoiData() != null && v2XRoadDataRes.getResult().getPoiData().size() > 0) {
V2XRecommendRouteEntity v2XRecommendRouteEntity = new V2XRecommendRouteEntity();
v2XRecommendRouteEntity.setToPoint(v2XRoadDataRes.getResult().getTopPoint());
V2XMessageEntity<V2XRecommendRouteEntity> v2xMessageEntity = new V2XMessageEntity<>();
// 控制类型
v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_RECOMMEND_ROUTE);
@@ -694,15 +694,9 @@ public class V2XRefreshModel {
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
} else if (v2XRoadDataRes.getResult().getIllegalParkingData() != null && v2XRoadDataRes.getResult().getIllegalParkingData().size() > 0) {
// TODO: 2020/12/30
}
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d("queryRoadData:onError", e.toString());
}
});
}
}

View File

@@ -9,6 +9,10 @@ import com.mogo.module.v2x.V2XServiceManager
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario
import com.mogo.module.v2x.utils.V2XUtils
import com.mogo.service.windowview.IMogoTopViewStatusListener
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
/**
* created by wujifei on 2020/12/29 17:57
@@ -48,7 +52,7 @@ class V2XRecommendRouteScenario : AbsV2XScenario<V2XRecommendRouteEntity>() {
v2XWindow?.let {
val layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
V2XUtils.getApp().resources.getDimension(R.dimen.module_v2x_fatigue_driving_window_height_ground).toInt())
V2XServiceManager.getMogoTopViewManager().addView(it.view, layoutParams)
V2XServiceManager.getMogoTopViewManager().addView(it.view, layoutParams,mogoTopViewStatusListener)
it.show(v2XMessageEntity.content)
}
@@ -77,20 +81,24 @@ class V2XRecommendRouteScenario : AbsV2XScenario<V2XRecommendRouteEntity>() {
}
val mogoTopViewStatusListener: IMogoTopViewStatusListener = object : IMogoTopViewStatusListener {
private val mainScope = MainScope()
override fun onViewAdded(view: View?) {
TODO("Not yet implemented")
mainScope.launch {
delay(1000 * 20)
closeWindow()
}
}
override fun onViewRemoved(view: View?) {
TODO("Not yet implemented")
mainScope.cancel()
}
override fun beforeViewAddAnim(view: View?) {
TODO("Not yet implemented")
}
override fun beforeViewRemoveAnim(view: View?) {
TODO("Not yet implemented")
}
}