fix bug of delay and update map version

This commit is contained in:
zhongchao
2021-07-09 09:25:09 +08:00
parent d6f995b33d
commit ff61d92a89
16 changed files with 242 additions and 499 deletions

View File

@@ -1,16 +1,11 @@
package com.mogo.module.adas;
import com.google.gson.Gson;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.module.adas.entity.AutonomousDriveStatusBean;
import com.mogo.module.adas.entity.ReportSiteBean;
import com.mogo.module.adas.entity.WarnMessageModel;
import com.mogo.module.adas.model.AdasServiceModel;
import com.mogo.module.adas.network.IAdasApiService;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
@@ -34,10 +29,7 @@ import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import static com.mogo.commons.context.ContextHolderUtil.getContext;
import static com.mogo.module.adas.AdasConstant.getBaseUrl;
/**
@@ -53,7 +45,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
private final Gson gson;
private final ArrayList<IAdasDataListener> iAdasEventListeners = new ArrayList<>();
private final ArrayList<IAdasStatusListener> iAdasStatusListeners = new ArrayList<>();
private final IAdasApiService mAdasApiService;
private Disposable uploadAutopilotStatus;
//自动驾驶状态
private int mCurrentAutopilotStatus = -1;
@@ -67,7 +58,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
private AdasEventManager() {
gson = GsonUtil.getGson();
mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IAdasApiService.class, getBaseUrl());
}
public static AdasEventManager getInstance() {
@@ -116,15 +106,9 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
Logger.d(TAG, "onWarnMessage " + warnMessageInfo);
//报警model
WarnMessageModel warnMessageModel = null;
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
if (warnMessageModel == null) {
warnMessageModel = new WarnMessageModel();
warnMessageModel.setAction(MsgActionType.ACTION_WS_MSG_WARNING_TYPE.getmActionType());
}
warnMessageModel.setValues(warnMessageInfo);
listener.cameraEyeDetectResult(gson.toJson(warnMessageModel));
listener.onWarnMessage(warnMessageInfo);
}
}
}
@@ -144,7 +128,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
try {
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.cameraEyeDetectResult(gson.toJson(rectInfo));
listener.onRectData(rectInfo);
}
}
} catch (Exception e) {
@@ -236,10 +220,10 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
@Override
public void onAutopilotRoute(AutopilotRoute autopilotRoute) {
if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) {
Logger.d(TAG,"onAutopilotRoute is null !");
Logger.d(TAG, "onAutopilotRoute is null !");
return;
}
Logger.d(TAG,"onAutopilotRoute : " + autopilotRoute.toString());
Logger.d(TAG, "onAutopilotRoute : " + autopilotRoute.toString());
for (IAdasDataListener listener : iAdasEventListeners) {
if (listener != null) {
listener.autopilotRoute(autopilotRoute);
@@ -283,56 +267,14 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
}
private void updateDriveStatus() {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
AutonomousDriveStatusBean request = new AutonomousDriveStatusBean(sn, mCurrentAutopilotStatus, mCurrentAutopilotSpeed);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mAdasApiService.updateAutonomousDriveStatus(requestBody).
subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onError(String message, int code) {
super.onError(message, code);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
Logger.d(TAG, "updateDriveStatus success");
}
});
AdasServiceModel.getInstance().updateDriveStatus(mCurrentAutopilotStatus, mCurrentAutopilotSpeed);
}
private void reportSite(double lon, double lat) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportSiteBean reportSiteBean = new ReportSiteBean(sn, lon, lat);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(reportSiteBean));
mAdasApiService.updateReportSite(requestBody).
subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onError(String message, int code) {
super.onError(message, code);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
Logger.d(TAG, "autopilotArrive success");
}
});
AdasServiceModel.getInstance().reportSite(lon, lat);
}
public AutopilotStatus.ValuesBean getAutopilotValuesStatus(){
public AutopilotStatus.ValuesBean getAutopilotValuesStatus() {
return mAutopilotValuesStatus;
}
@@ -346,7 +288,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
return adasAIDLAutopilotStateModel;
}
public void setProviderBizListener(IAdasProviderBizListener listener){
public void setProviderBizListener(IAdasProviderBizListener listener) {
providerBizListener = listener;
}
}

View File

@@ -1,35 +1,32 @@
package com.mogo.module.adas;
import com.mogo.module.adas.entity.WarnMessageModel;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel;
import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import com.zhidao.support.adas.high.bean.AutopilotWayArrive;
import com.zhidao.support.adas.high.bean.CarLaneInfo;
import com.zhidao.support.adas.high.bean.CarStateInfo;
import com.zhidao.support.adas.high.bean.LightStatueInfo;
import com.zhidao.support.adas.high.bean.ObstaclesInfo;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import java.util.List;
/**
* Created by XuYong on 2021/4/25 16:52
*/
public interface IAdasDataListener {
default void sendMsg( String msg ){
default void sendMsg(String msg) {
};
default void cameraEyeDetectResult( String detectResult ) {
}
default void selectCarModelUrl( String carStyleUrl ) {
default void onRectData(RectInfo rectInfo) {
}
default void onWarnMessage(WarnMessageInfo warnMessageInfo) {
}
default void selectCarModelUrl(String carStyleUrl) {
}
default void requestGetCarModelListInfo() {
@@ -38,42 +35,41 @@ public interface IAdasDataListener {
default void clickSettingBack() {
}
default void showToast( String msg ) {
default void showToast(String msg) {
}
/**
* 自动驾驶到达站点回调接口
*
* @param autopilotArriveModel
*/
default void autopilotArrive( AdasAIDLAutopilotArriveModel autopilotArriveModel ) {
default void autopilotArrive(AdasAIDLAutopilotArriveModel autopilotArriveModel) {
}
/**
* 自动驾驶路线回调
*
* @param autopilotRoute {@link AutopilotRoute}
*/
default void autopilotRoute(AutopilotRoute autopilotRoute){
default void autopilotRoute(AutopilotRoute autopilotRoute) {
}
/**
* 自车定位信息
*
* @param ownerCarStateInfo
*/
default void ownerCarStateInfo( String ownerCarStateInfo ) {
}
default void notifyOwnerCarState( AdasAIDLOwnerCarStateModel ownerCarStateModel ) {
default void ownerCarStateInfo(String ownerCarStateInfo) {
}
/**
* 自动驾驶状态信息
*
* @param autopilotStatus {@link AutopilotStatus}
*/
default void notifyAutopilotState( AutopilotStatus autopilotStatus ) {
default void notifyAutopilotState(AutopilotStatus autopilotStatus) {
}
default void notifyOwnerCarRect( List<AdasAIDLOwnerCarRectModel> ownerCarStateRectList ) {
}
}

View File

@@ -1,10 +1,11 @@
package com.mogo.module.adas.model;
import com.google.gson.Gson;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.module.adas.entity.AutonomousDriveStatusBean;
import com.mogo.module.adas.entity.ReportDispatchResult;
import com.mogo.module.adas.entity.ReportSiteBean;
import com.mogo.module.adas.entity.ReportedRoute;
import com.mogo.module.adas.network.IAdasApiService;
import com.mogo.module.common.MogoApisHandler;
@@ -14,16 +15,16 @@ import com.mogo.utils.network.utils.GsonUtil;
import com.zhidao.support.adas.high.bean.AutopilotRoute;
import com.zhidao.support.adas.high.bean.AutopilotStatus;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import static com.mogo.commons.context.ContextHolderUtil.getContext;
import static com.mogo.module.adas.AdasConstant.getBaseUrl;
import static com.mogo.module.common.constants.HostConst.DATA_SERVICE_HOST;
public class AdasServiceModel {
@@ -126,7 +127,7 @@ public class AdasServiceModel {
*
* @param dispatchResultType int
*/
public void dispatchResultUpload(int dispatchResultType,IDispatch dispatch) {
public void dispatchResultUpload(int dispatchResultType, IDispatch dispatch) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportDispatchResult reportDispatchResult = new ReportDispatchResult(sn, dispatchResultType);
Map<String, Object> map = new HashMap<>();
@@ -157,4 +158,54 @@ public class AdasServiceModel {
});
}
public void updateDriveStatus(int autoPilotStatus, float autoPilotSpeed) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
AutonomousDriveStatusBean request = new AutonomousDriveStatusBean(sn, autoPilotStatus, autoPilotSpeed);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mAdasApiService.updateAutonomousDriveStatus(requestBody).
subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onError(String message, int code) {
super.onError(message, code);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
Logger.d(TAG, "updateDriveStatus success");
}
});
}
public void reportSite(double lon, double lat){
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportSiteBean reportSiteBean = new ReportSiteBean(sn, lon, lat);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(reportSiteBean));
mAdasApiService.updateReportSite(requestBody).
subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onError(String message, int code) {
super.onError(message, code);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
Logger.d(TAG, "autopilotArrive success");
}
});
}
}

View File

@@ -19,6 +19,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import static com.mogo.cloud.socket.entity.SocketDownDataHelper.FROM_ADAS;
@@ -76,6 +77,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
* @param resultList
*/
public void renderAdasRecognizedResult(List<ADASRecognizedResult> resultList) {
final long start = System.nanoTime();
if (resultList == null || resultList.isEmpty() || !DebugConfig.isUseAdasRecognize()) {
clearOldMarker();
return;
@@ -100,7 +102,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
String uniqueKey = recognizedListResult.uuid;
IMogoMarker marker = mMarkersCaches.remove(uniqueKey);
if (marker != null && !marker.isDestroyed()) {
Log.d(TAG, "发现缓存marker id : " + uniqueKey);
// Log.d(TAG, "发现缓存marker id : " + uniqueKey);
updateCacheMarkerRes(marker, recognizedListResult);
renderAdasOneFrame(true, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
} else {
@@ -110,9 +112,9 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
}
removeUselessMarker(mMarkersCaches);
removeUselessLastRecord();
Log.d("ADAS数据延时绘制", "查找缓存绘制 cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)));
int newDiffSetSize = newDiffSet.size();
Log.d(TAG, "原数据量 " + resultList.size() + " 新增marker数量 " + newDiffSetSize);
// Log.d(TAG, "原数据量 " + resultList.size() + " 新增marker数量 " + newDiffSetSize);
// 复用过期 marker
if (newDiffSetSize > 0) {
for (int i = 0; i < newDiffSetSize; i++) {
@@ -122,14 +124,15 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
if (marker == null) {
continue;
}
Log.d(TAG, "新增marker id : " + uniqueKey);
// Log.d(TAG, "新增marker id : " + uniqueKey);
renderAdasOneFrame(false, marker, uniqueKey, recognizedListResult, newAdasRecognizedMarkersCaches);
}
}
sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches);
mMarkersCaches.clear();
mMarkersCaches = newAdasRecognizedMarkersCaches;
Log.d(TAG, "更新缓存marker, size : " + mMarkersCaches.size());
// Log.d(TAG, "更新缓存marker, size : " + mMarkersCaches.size());
Log.d("ADAS数据延时绘制", "render 接收数据 -> 处理结束 " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms");
}
/**
@@ -245,9 +248,8 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
String uniqueKey,
ADASRecognizedResult recognizedListResult,
Map<String, IMogoMarker> newAdasRecognizedMarkersCaches) {
final long start = System.currentTimeMillis();
Log.d(TAG, "renderAdasOneFrame uuid : " + uniqueKey + " type : " + recognizedListResult.type + " heading : " + recognizedListResult.heading);
final long start = System.nanoTime();
// Log.d(TAG, "renderAdasOneFrame uuid : " + uniqueKey + " type : " + recognizedListResult.type + " heading : " + recognizedListResult.heading);
ADASRecognizedResult lastPosition = mLastPositions.remove(uniqueKey);
// 道路吸附
// double lastLon = -1;
@@ -264,7 +266,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
mLastPositions.put(uniqueKey, recognizedListResult);
// if (useCache) {
Log.d(TAG, "使用缓存 id : " + uniqueKey);
// Log.d(TAG, "使用缓存 id : " + uniqueKey);
long interval = 45;
if (lastPosition != null) {
interval = computeAnimDuration(lastPosition.systemTime, recognizedListResult.systemTime, lastPosition.satelliteTime, recognizedListResult.satelliteTime);
@@ -286,9 +288,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
marker.setAnchorColor(carColor);
newAdasRecognizedMarkersCaches.put(uniqueKey, marker);
if (shouldShowSpeed(recognizedListResult.type)) {
showSelfSpeed(marker, recognizedListResult.speed, recognizedListResult.uuid, recognizedListResult.type, recognizedListResult.heading, MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode());
}
// if (shouldShowSpeed(recognizedListResult.type)) {
// showSelfSpeed(marker, recognizedListResult.speed, recognizedListResult.uuid, recognizedListResult.type, recognizedListResult.heading, MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode());
// }
Log.d("ADAS数据延时", "render 刷新一台车 cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)));
}
/**
@@ -298,6 +301,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
* @return {@link IMogoMarker}
*/
private IMogoMarker drawAdasRecognizedDataMarker(ADASRecognizedResult recognizedListResult) {
long start = System.nanoTime();
if (recognizedListResult == null) {
return null;
}
@@ -322,6 +326,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer {
.position(new MogoLatLng(recognizedListResult.lat, recognizedListResult.lon));
IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(DataTypes.TYPE_MARKER_ADAS, options);
cacheMarkerIconResMd5Val(resIdVal, marker);
Log.d("ADAS数据延时", "创建一个新 marker cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)));
return marker;
}

View File

@@ -211,45 +211,8 @@ class BaseDrawer {
// AdasRecognizedType recognizedType = AdasRecognizedType.valueFrom(type);
// if (recognizedType == AdasRecognizedType.classIdUnKnow) {
// return Car3DModelColor.Normal.color;
// }
// 距离策略 todo 此处两种策略是临时方案
// double[] coordinates = getCurCoordinates();
// double distance = CoordinateUtils.calculateLineDistance(lon, lat, coordinates[0], coordinates[1]) * 100;
// if (distance < 15) {
// return Car3DModelColor.Dangerous.color; // todo 方案1
//// return Car3DTestModelColor.getTestModelColor(fromType, Waring_Dangerous); // todo 方案2
// } else if (distance < 50 && distance >= 15) {
// return Car3DModelColor.Warming.color; // todo 方案1
//// return Car3DTestModelColor.getTestModelColor(fromType, Waring_Close); // todo 方案2
// }
// 他车车速和自车车速对比速度策略
// 自车速度 >= 50% 危险
// 10% < 自车速度 < 50% 警告
// double curSpeed = getCurSpeed();
// if (curSpeed > 0 && speed > curSpeed) {
// double rate = ((speed - curSpeed) / curSpeed) * 100;
// if (rate >= 50) {
// return Car3DModelColor.Dangerous.color; // todo 方案1
//// return Car3DTestModelColor.getTestModelColor(fromType, Waring_Dangerous); // todo 方案2
// } else if (rate > 10 && rate < 50) {
// return Car3DModelColor.Warming.color; // todo 方案1
//// return Car3DTestModelColor.getTestModelColor(fromType, Waring_Close); // todo 方案2
// }
// }
// 默认颜色 // todo 方案1
// switch (fromType) {
// case FROM_ADAS:
// return Car3DModelColor.Normal_Visual.color;
// case FROM_ROAD_UNIT:
// return Car3DModelColor.Normal_Cloud.color;
// default:
// return Car3DModelColor.Normal.color;
// }
return Car3DModelColor.Normal.color;
// todo 方案2
// return Car3DTestModelColor.getTestModelColor(fromType, Waring_Normal);
}
/**

View File

@@ -341,7 +341,7 @@ public class MockIntentHandler implements IntentHandler {
MarkerServiceHandler.getApis().getRefreshStrategyControllerApi().restartAutoRefreshAtTime(duration);
IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker(TAG, options);
MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(TAG, true, false);
if(!MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode()){
if (!MarkerServiceHandler.getApis().getStatusManagerApi().isVrMode()) {
MarkerServiceHandler.getMapUIController().moveToCenter(mogoLatLngs.get(0));
}
WorkThreadHandler.getInstance().post(() -> marker.startSmooth(mogoLatLngs, duration));
@@ -652,7 +652,7 @@ public class MockIntentHandler implements IntentHandler {
String carsLine = roadSizeBr.readLine();
SocketDownData.LauncherSnapshotProto.Builder data = SocketDownData.LauncherSnapshotProto.newBuilder();
List<SocketDownData.CloudRoadDataProto> allList = GsonUtil.arrayFromJson(carsLine, SocketDownData.CloudRoadDataProto.class);
if(allList == null || allList.size() == 0){
if (allList == null || allList.size() == 0) {
return;
}
for (SocketDownData.CloudRoadDataProto cloudRoadData : allList) {
@@ -854,7 +854,7 @@ public class MockIntentHandler implements IntentHandler {
Log.i("mock-timer-loc-map", "cost " + (System.currentTimeMillis() - start) + "ms");
SnapshotLocationController.getInstance().syncAdasLocationInfo(jo);
Log.i("mock-timer-loc", "cost " + (System.currentTimeMillis() - start) + "ms");
Log.i("mock-timer-loc-info",jo.toString());
Log.i("mock-timer-loc-info", jo.toString());
return true;
}
@@ -917,10 +917,7 @@ public class MockIntentHandler implements IntentHandler {
}
}
AdasRec adasRec = new AdasRec();
adasRec.models = allList;
MogoApisHandler.getInstance().getApis().getAdasControllerApi().mockAdasRecognized(GsonUtil.jsonFromObject(adasRec));
MogoApisHandler.getInstance().getApis().getAdasControllerApi().mockAdasRecognized(allList);
Log.i("mock-timer-adas", "cost " + (System.currentTimeMillis() - start) + "ms");
return true;
}
@@ -947,16 +944,9 @@ public class MockIntentHandler implements IntentHandler {
}
}
AdasRec adasRec = new AdasRec();
adasRec.models = allList;
MogoApisHandler.getInstance().getApis().getAdasControllerApi().mockAdasRecognized(GsonUtil.jsonFromObject(adasRec));
MogoApisHandler.getInstance().getApis().getAdasControllerApi().mockAdasRecognized(allList);
Log.i("mock-timer-adas", "cost " + (System.currentTimeMillis() - start) + "ms");
return true;
}
public static class AdasRec {
public String action = "view";
public List<ADASRecognizedResult> models;
}
}