remix the aiCloudSocketData

This commit is contained in:
zhongchao
2021-05-25 15:55:08 +08:00
parent 716e02a9cb
commit 4010c27dbe
40 changed files with 1127 additions and 854 deletions

View File

@@ -101,7 +101,7 @@ public class MogoServiceProvider implements IMogoModuleProvider {
MarkerServiceHandler.init( context );
// if ( DebugConfig.isNeedUploadCoordinatesDurationInTime() ) {
// }
MogoRTKLocation.getInstance().init();
// MogoRTKLocation.getInstance().init(); //todo RTK LOCATION Close
MogoServices.getInstance().preInit( context );
MogoServices.getInstance().init( AbsMogoApplication.getApp() );
UiThreadHandler.postDelayed( () -> {

View File

@@ -13,6 +13,8 @@ import android.view.View;
import android.widget.TextView;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.cloud.socket.entity.SocketDownDataHelper;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.voice.AIAssist;
@@ -36,11 +38,9 @@ import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.status.EnvStatusManager;
import com.mogo.module.service.timedelay.TimeDelayUploadManager;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudRoadData;
import com.mogo.realtime.entity.MogoSnapshotSetData;
import com.mogo.service.adas.RemoteControlAutoPilotParameters;
import com.mogo.service.adas.entity.ADASCarStateInfo;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.entrance.ButtonIndex;
import com.mogo.utils.TipToast;
import com.mogo.utils.WorkThreadHandler;
@@ -543,8 +543,8 @@ public class MockIntentHandler implements IntentHandler {
.openVrMode(false);
break;
case 46:// 模拟 自车周边数据
String json = "{\"allList\":[{\"type\":3,\"uuid\":\"10009-5152\",\"lat\":40.1990809296,\"lon\":116.7393252195,\"speed\":0.0,\"heading\":0.0,\"systemTime\":1614329151909,\"vehicleType\":0,\"distance\":576.0,\"fromType\":3,\"isOnline\":0},{\"type\":3,\"uuid\":\"10009-5161\",\"lat\":40.1990827227,\"lon\":116.739325826,\"speed\":0.0,\"heading\":0.0,\"systemTime\":1614329151909,\"vehicleType\":0,\"distance\":576.0,\"fromType\":3,\"isOnline\":0}],\"nearList\":[],\"time\":1614329152238}";
SnapshotSetDataDrawer.getInstance().renderSnapshotData(GsonUtil.objectFromJson(json, MogoSnapshotSetData.class));
// String json = "{\"allList\":[{\"type\":3,\"uuid\":\"10009-5152\",\"lat\":40.1990809296,\"lon\":116.7393252195,\"speed\":0.0,\"heading\":0.0,\"systemTime\":1614329151909,\"vehicleType\":0,\"distance\":576.0,\"fromType\":3,\"isOnline\":0},{\"type\":3,\"uuid\":\"10009-5161\",\"lat\":40.1990827227,\"lon\":116.739325826,\"speed\":0.0,\"heading\":0.0,\"systemTime\":1614329151909,\"vehicleType\":0,\"distance\":576.0,\"fromType\":3,\"isOnline\":0}],\"nearList\":[],\"time\":1614329152238}";
// SnapshotSetDataDrawer.getInstance().renderSnapshotData(GsonUtil.objectFromJson(json, MogoSnapshotSetData.class)); //todo 需要重新模拟一个test数据
break;
case 47:// 模拟鹰眼模式下绘制车辆周边的数据
mTimeTickHandler.sendEmptyMessageDelayed(1, 0L);
@@ -647,18 +647,22 @@ public class MockIntentHandler implements IntentHandler {
*/
private void handleRoadSideMockDataIntent() throws Exception {
if (roadSizeBr == null) {
roadSizeBr = new BufferedReader(new InputStreamReader(AbsMogoApplication.getApp().getAssets().open("roadSide.txt")));
roadSizeBr = new BufferedReader(new InputStreamReader(AbsMogoApplication.getApp().getAssets().open("roadSide.txt"))); //todo 需要重新模拟一个test数据
}
String carsLine = roadSizeBr.readLine();
MogoSnapshotSetData data = new MogoSnapshotSetData();
List<CloudRoadData> allList = GsonUtil.arrayFromJson(carsLine, CloudRoadData.class);
for (CloudRoadData cloudRoadData : allList) {
cloudRoadData.setWgslat(cloudRoadData.getLat());
cloudRoadData.setWgslon(cloudRoadData.getLon());
cloudRoadData.setFromType(CloudRoadData.FROM_ROAD_UNIT);
SocketDownData.LauncherSnapshotProto.Builder data = SocketDownData.LauncherSnapshotProto.newBuilder();
List<SocketDownData.CloudRoadDataProto> allList = GsonUtil.arrayFromJson(carsLine, SocketDownData.CloudRoadDataProto.class);
if(allList == null || allList.size() == 0){
return;
}
data.setAllList(allList);
SnapshotSetDataDrawer.getInstance().renderSnapshotData(data);
for (SocketDownData.CloudRoadDataProto cloudRoadData : allList) {
cloudRoadData.toBuilder()
.setWgslat(cloudRoadData.getLon())
.setWgslon(cloudRoadData.getLon())
.setFromType(SocketDownDataHelper.FROM_ROAD_UNIT);
}
data.addAllAllList(allList);
SnapshotSetDataDrawer.getInstance().renderSnapshotData(data.build());
mLocationMockHandler.sendEmptyMessageDelayed(101, 100L);
}
@@ -861,29 +865,30 @@ public class MockIntentHandler implements IntentHandler {
* 模拟快照意图
*/
private boolean handleMockSnapshotIntent2() throws Exception {
if (br4 == null) {
br4 = new BufferedReader(new InputStreamReader(AbsMogoApplication.getApp().getAssets().open("snapshot.txt")));
}
String line = br4.readLine();
if (line == null) {
throw new Exception("end of file 2.");
}
MogoSnapshotSetData data = new MogoSnapshotSetData();
List<CloudRoadData> allList = new ArrayList<>();
CloudRoadData cloudRoadData = GsonUtil.objectFromJson(line, CloudRoadData.class);
if (cloudRoadData == null) {
return false;
}
cloudRoadData.setWgslon(cloudRoadData.getLon());
cloudRoadData.setWgslat(cloudRoadData.getLat());
cloudRoadData.setUuid("1_21");
allList.add(cloudRoadData);
data.setAllList(allList);
final long start = System.currentTimeMillis();
SnapshotSetDataDrawer.getInstance().renderSnapshotData(data);
Log.i("mock-timer-snapshot", "cost " + (System.currentTimeMillis() - start) + "ms");
// mLocationMockHandler.sendEmptyMessageDelayed( 21, 100L );
// if (br4 == null) {
// br4 = new BufferedReader(new InputStreamReader(AbsMogoApplication.getApp().getAssets().open("snapshot.txt"))); todo 需要重新模拟一个test数据
// }
// String line = br4.readLine();
// if (line == null) {
// throw new Exception("end of file 2.");
// }
// SocketDownData.LauncherSnapshotProto.Builder data = SocketDownData.LauncherSnapshotProto.newBuilder();
// List<SocketDownData.CloudRoadDataProto> allList = new ArrayList<>();
// SocketDownData.CloudRoadDataProto cloudRoadData = GsonUtil.objectFromJson(line, SocketDownData.CloudRoadDataProto.class);
// if (cloudRoadData == null) {
// return false;
// }
// SocketDownData.CloudRoadDataProto.Builder builder = cloudRoadData.toBuilder();
// builder.setWgslat(cloudRoadData.getLon());
// builder.setWgslon(cloudRoadData.getLat());
// builder.setUuid("1_21");
// allList.add(cloudRoadData);
// data.addAllAllList(allList);
//
// final long start = System.currentTimeMillis();
// SnapshotSetDataDrawer.getInstance().renderSnapshotData(data.build());
// Log.i("mock-timer-snapshot", "cost " + (System.currentTimeMillis() - start) + "ms");
//// mLocationMockHandler.sendEmptyMessageDelayed( 21, 100L );
return true;
}

View File

@@ -10,7 +10,7 @@ import android.os.Bundle;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.uploadintime.SnapshotLocationController;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.service.locationinfo.CloudLocationInfo;
import com.mogo.utils.logger.Logger;
public class MogoRTKLocation {

View File

@@ -5,15 +5,14 @@ import android.graphics.Rect;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.ModuleNames;
import com.mogo.module.common.api.CallChatApi;
@@ -31,16 +30,12 @@ import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.common.utils.CloudPoiManager;
import com.mogo.module.common.utils.Trigonometric;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.service.network.RefreshCallback;
import com.mogo.module.service.network.RefreshModel;
import com.mogo.module.service.polyline.LimberCollisionPolyline;
import com.mogo.realtime.api.MoGoAiCloudRealTime;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.MogoSnapshotSetData;
import com.mogo.realtime.socket.IMogoCloudOnMsgListener;
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.module.IMogoBizActionDoneListener;
@@ -57,7 +52,6 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -147,7 +141,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
@Override
public void onMsgReceived(MogoSnapshotSetData mogoSnapshotSetData) {
public void onMsgReceived(SocketDownData.LauncherSnapshotProto mogoSnapshotSetData) {
DebugConfig.setStatus(DebugConfig.sDownloadSnapshot, true);
Message msg = mSnapshotHandler.obtainMessage();
msg.obj = mogoSnapshotSetData;
@@ -168,7 +162,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
//// 绘制碰撞的他车指引线,需要实时给数据更新 TODO
// drawLimberCollisionPolyline(result);
// //通过这个传值到 AMapViewWrapper根据数据更新自车的模型数据
// MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().setAdasRecognizedResult(result);
// MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().setAdasRecognizedResult(result); todo setAdasRecognizedResult 需要拆分细粒度
// }
// }
@@ -176,39 +170,39 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
}
/**
* 实时绘制连线
*
* @param result
*/
private void drawLimberCollisionPolyline(ADASRecognizedResult result) {
if (result != null) {
IMogoPolyline polyLine = LimberCollisionPolyline.getInstance().getPolyLine();
MogoLatLng startLatLng = new MogoLatLng(result.lat, result.lon);
MogoLatLng endLatlng = Trigonometric.getNewLocation(startLatLng, 20, result.heading);
Log.d(TAG, "红色区域起始点 = " + startLatLng.lon + "," + startLatLng.lat
+ "终点" + endLatlng.lon + "," + endLatlng.lat + "--heading =" + result.heading);
if (polyLine != null) {
Log.d(TAG, "drawStopLine polyLine != null");
polyLine.setPoints(Arrays.asList(startLatLng, endLatlng));
} else {
List<MogoLatLng> latLngs = new ArrayList<>();
latLngs.add(startLatLng);
latLngs.add(endLatlng);
LimberCollisionPolyline.getInstance().draw((float) result.roadWidth, latLngs);
}
} else {
LimberCollisionPolyline.getInstance().clearLine();
}
}
// /**
// * 实时绘制连线
// *
// * @param result
// */
// private void drawLimberCollisionPolyline(ADASRecognizedResult result) {
// if (result != null) {
// IMogoPolyline polyLine = LimberCollisionPolyline.getInstance().getPolyLine();
// MogoLatLng startLatLng = new MogoLatLng(result.lat, result.lon);
// MogoLatLng endLatlng = Trigonometric.getNewLocation(startLatLng, 20, result.heading);
// Log.d(TAG, "红色区域起始点 = " + startLatLng.lon + "," + startLatLng.lat
// + "终点" + endLatlng.lon + "," + endLatlng.lat + "--heading =" + result.heading);
// if (polyLine != null) {
// Log.d(TAG, "drawStopLine polyLine != null");
// polyLine.setPoints(Arrays.asList(startLatLng, endLatlng));
// } else {
// List<MogoLatLng> latLngs = new ArrayList<>();
// latLngs.add(startLatLng);
// latLngs.add(endLatlng);
// LimberCollisionPolyline.getInstance().draw((float) result.roadWidth, latLngs);
// }
// } else {
// LimberCollisionPolyline.getInstance().clearLine();
// }
// }
private final Handler mSnapshotHandler = new Handler(WorkThreadHandler.newInstance("snapshot-thread").getLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.obj instanceof MogoSnapshotSetData) {
SnapshotSetDataDrawer.getInstance().renderSnapshotData(((MogoSnapshotSetData) msg.obj));
if (msg.obj instanceof SocketDownData.LauncherSnapshotProto) {
SnapshotSetDataDrawer.getInstance().renderSnapshotData(((SocketDownData.LauncherSnapshotProto) msg.obj));
} else if (msg.obj == null) {
SnapshotSetDataDrawer.getInstance().renderSnapshotData(null);
}

View File

@@ -1,29 +0,0 @@
package com.mogo.module.service.spi;
import com.elegant.spi.annotations.Service;
import com.mogo.module.common.uploadintime.SnapshotLocationController;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.realtime.api.IRealTimeProvider;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import java.util.List;
@Service(value = IRealTimeProvider.class)
public class SPIRealTimeUpload implements IRealTimeProvider {
@Override
public List<ADASRecognizedResult> getLastADASRecognizedResult() {
return MarkerServiceHandler.getADASController().getLastADASRecognizedResult();
}
@Override
public List<CloudLocationInfo> getLocationMsg() {
return SnapshotLocationController.getInstance().getSendLocationData();
}
@Override
public int getLocationAccuracy() {
return SnapshotLocationController.getInstance().getDataAccuracy();
}
}

View File

@@ -7,6 +7,7 @@ import android.os.Message;
import androidx.annotation.RequiresApi;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.module.common.MogoApisHandler;
@@ -15,8 +16,6 @@ import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.network.TimeDelayApiService;
import com.mogo.module.service.network.bean.MockSocketReceiverData;
import com.mogo.realtime.api.MoGoAiCloudRealTime;
import com.mogo.realtime.entity.CloudRoadData;
import com.mogo.realtime.entity.MogoSnapshotSetData;
import com.mogo.realtime.socket.IMogoCloudOnMsgListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.utils.WorkThreadHandler;
@@ -136,10 +135,10 @@ public class TimeDelayUploadManager implements IMogoOnMessageListener<MockSocket
//接收实时数据监听回调,用于给服务端上报时延
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onMsgReceived(MogoSnapshotSetData mogoSnapshotSetData) {
public void onMsgReceived(SocketDownData.LauncherSnapshotProto mogoSnapshotSetData) {
if (isMockData) {
//接口数据上报
CloudRoadData result = mogoSnapshotSetData.getAllList()
SocketDownData.CloudRoadDataProto result = mogoSnapshotSetData.getAllListList()
.stream()
.filter(cloudRoadData -> cloudRoadData.getUuid().contains("serialNumber_"))
.findAny()
@@ -168,4 +167,5 @@ public class TimeDelayUploadManager implements IMogoOnMessageListener<MockSocket
});
}
}
}

View File

@@ -3,7 +3,7 @@ package com.mogo.module.service.utils;
import android.location.Location;
import com.mogo.map.MogoLatLng;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.service.locationinfo.CloudLocationInfo;
/**
* 定位数据类型转换工具

View File

@@ -4,7 +4,7 @@ import android.os.SystemClock;
import com.mogo.map.MogoLatLng;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.service.locationinfo.CloudLocationInfo;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;