wait to finish
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 模型颜色
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定点击事件
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user