wait to finish

This commit is contained in:
zhongchao
2021-05-26 14:53:54 +08:00
parent f97369fd3d
commit 37b5cdd37d
3 changed files with 55 additions and 20 deletions

View File

@@ -203,24 +203,25 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
}
private void removeUselessLastRecord() { // todo 最好重新设计一个数据结构用于多线程数据过期失效的场景参见redis数据过期
if (mLastPositions == null || mLastPositions.isEmpty()) {
return;
}
IMogoADASController adasControllerApi = MogoApisHandler.getInstance().getApis().getAdasControllerApi();
if (TextUtils.isEmpty(adasControllerApi.getSatelliteTime()) || adasControllerApi.getSatelliteTime().equals("0")) {
if (mLastPositions.isEmpty()) {
return;
}
Iterator<ADASRecognizedResult> iterator = mLastPositions.values().iterator();
Log.d("EmArrow","removeUselessLastRecord size : " + mLastPositions.size());
while (iterator.hasNext()) {
ADASRecognizedResult result = iterator.next();
long internal = result.satelliteTime - Long.parseLong(adasControllerApi.getSatelliteTime());
long internal = result.satelliteTime - getCurSatelliteTime();
if (internal > 1000) {
iterator.remove();
}
}
}
/**
* 过滤无用数据
* @param recognizedListResult {@link ADASRecognizedResult}
* @return useless
*/
private boolean isUselessValue(ADASRecognizedResult recognizedListResult) {
if (recognizedListResult == null) {
return true;
@@ -228,18 +229,14 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
if (!isRenderType(recognizedListResult.type)) {
return true;
}
String uniqueKey = recognizedListResult.uuid;
if (TextUtils.isEmpty(uniqueKey)) {
return true;
}
return false;
return TextUtils.isEmpty(uniqueKey);
}
/**
* 绘制某个物体的一个数据 todo 缓存问题
*
* @param recognizedListResult
* @param recognizedListResult {@link ADASRecognizedResult}
* @param newAdasRecognizedMarkersCaches
*/
private void renderAdasOneFrame(IMogoMarker marker,

View File

@@ -248,7 +248,7 @@ class BaseDrawer {
*
* @return isCurSpeed
*/
private double getCurSpeed() {
protected double getCurSpeed() {
double speed = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastSpeed();
if (speed <= 0) {
speed = SnapshotLocationController.getInstance().getCurSpeed();
@@ -259,9 +259,9 @@ class BaseDrawer {
/**
* 返回当前自车经纬度
*
* @return
* @return 0:lon 1:lat
*/
private double[] getCurCoordinates() {
protected double[] getCurCoordinates() {
double[] coordinates = {
MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(),
MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(),
@@ -273,6 +273,18 @@ class BaseDrawer {
return coordinates;
}
/**
* 返回当前自车SNTP时间
*
* @return
*/
protected long getCurSatelliteTime() {
String satelliteTime = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getSatelliteTime();
if (TextUtils.isEmpty(satelliteTime)) {
return System.currentTimeMillis();
}
return Long.parseLong(satelliteTime);
}
/**
* 模型颜色

View File

@@ -1,5 +1,6 @@
package com.mogo.module.common.drawer;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -17,8 +18,8 @@ import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.R;
import com.mogo.module.common.api.CallChatApi;
import com.mogo.module.common.constants.DataTypes;
import com.mogo.module.common.utils.Trigonometric;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.ViewUtils;
@@ -246,7 +247,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic
return;
}
Iterator<SocketDownData.CloudRoadDataProto> iterator = mLastPositions.values().iterator();
Log.d("EmArrow","removeUselessLastRecord size : " + mLastPositions.size());
Log.d("EmArrow", "removeUselessLastRecord size : " + mLastPositions.size());
while (iterator.hasNext()) {
SocketDownData.CloudRoadDataProto result = iterator.next();
long internal = result.getSatelliteTime() - Long.parseLong(adasControllerApi.getSatelliteTime());
@@ -328,9 +329,8 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic
* @param out 输出集合
*/
private void prepareData(List<SocketDownData.CloudRoadDataProto> in, List<SocketDownData.CloudRoadDataProto> out) {
// in.stream().
// filterData(in);
// foreCastPoint(in);
filterData(in);
foreCastPoint(in);
out.addAll(in);
}
@@ -358,6 +358,32 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic
data.addAll(newList);
}
private void foreCastPoint(List<SocketDownData.CloudRoadDataProto> in) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
for (SocketDownData.CloudRoadDataProto proto : in) {
SocketDownData.CloudRoadDataProto.Builder builder = proto.toBuilder();
long internal = getCurSatelliteTime() - builder.getSatelliteTime();
if (internal <= 0) {
continue;
}
long startTime = System.nanoTime();
// 预测点
double foreCastDistance = proto.getSpeed() * internal;
MogoLatLng mogoLatLng = new MogoLatLng(proto.getWgslat(),proto.getWgslon());
MogoLatLng foreCastMogoLatLon = Trigonometric.getNewLocation(mogoLatLng,foreCastDistance,proto.getHeading());
// 计算与自车距离
// getCurCoordinates();
long foreCastInternal = System.nanoTime() - startTime;
Log.d("ForeCastTime","foreCastInternal :" + foreCastDistance); //todo 看是否耗时增加的时间需要从当前SNTP时间减去
builder.setWgslat(foreCastMogoLatLon.getLat());
builder.setWgslon(foreCastMogoLatLon.getLon());
builder.setSatelliteTime(getCurSatelliteTime() - foreCastInternal);
}
}
}
/**
* 绑定点击事件
*/