add new func of httpdns switch city to fit socketserver

This commit is contained in:
zhongchao
2021-07-30 17:22:37 +08:00
100 changed files with 1985 additions and 2080 deletions

View File

@@ -108,13 +108,6 @@ public interface IMogoADASController extends IProvider {
*/
void removeAdasWarnMessageCallback(IMogoAdasWarnMessageCallback callback);
/**
* 获取 adas 识别列表
*
* @return
*/
List<ADASRecognizedResult> getLastADASRecognizedResult();
/**
* 添加adas识别物体回调
*
@@ -213,5 +206,4 @@ public interface IMogoADASController extends IProvider {
void mockAdasRecognized(List<ADASRecognizedResult> recognizedResults);
void mockAdasRecognized(String json);
}

View File

@@ -0,0 +1,9 @@
package com.mogo.service.connection;
public interface IMogoLifecycleListener {
void onConnectFailure();
void onConnectSuccess();
void onConnectLost();
}

View File

@@ -45,6 +45,11 @@ public interface IMogoSocketManager extends IProvider {
*/
void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener );
void registerLifecycleListener(int msgType,IMogoLifecycleListener listener);
void unregisterLifecycleListener(int msgType);
/**
* 发送消息
*
@@ -52,4 +57,9 @@ public interface IMogoSocketManager extends IProvider {
* @param listener 回执监听
*/
void sendMsg(MsgBody body, IMogoMsgAckListener listener );
/**
* 停止Socket服务
*/
void destroy();
}

View File

@@ -144,4 +144,10 @@ public interface IMogoMapService extends IProvider {
* @return
*/
CoordinatesTransformer getCoordinatesTransformer();
/**
* 获取地图版本号
* @return
*/
String getMapVersion();
}

View File

@@ -1,16 +1,19 @@
package com.mogo.service.impl.adas;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.utils.MortonCode;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.adas.entity.ADASWarnMessage;
import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/*
@@ -37,12 +40,12 @@ public class AdasObjectUtils {
return warnMessage;
}
public static List<ADASRecognizedResult> regroupData(List<AdasAIDLOwnerCarRectModel> datums) {
public static List<ADASRecognizedResult> regroupData(List<RectInfo.RectBean> datums) {
if (datums == null || datums.isEmpty()) {
return null;
}
List<ADASRecognizedResult> recognizedListResults = new ArrayList<>();
for (AdasAIDLOwnerCarRectModel model : datums) {
for (RectInfo.RectBean model : datums) {
if (model == null) {
continue;
}
@@ -54,10 +57,11 @@ public class AdasObjectUtils {
return recognizedListResults;
}
public static ADASRecognizedResult fromAdasObject(AdasAIDLOwnerCarRectModel model) {
public static ADASRecognizedResult fromAdasObject(RectInfo.RectBean model) {
if (model == null) {
return null;
}
long start = System.nanoTime();
ADASRecognizedResult result = new ADASRecognizedResult();
result.uuid = model.getUuid();
result.lat = model.getLat();
@@ -73,11 +77,14 @@ public class AdasObjectUtils {
result.dataAccuracy = model.dataAccuracy;
result.distance = model.distance;
result.drawlevel = model.getDrawlevel();
result.mortonCode = MortonCode.wrapEncodeMorton(result.lon, result.lat);
IMogoMapUIController mogoMapUIController = ARouter.getInstance().navigation(IMogoServiceApis.class).getMapServiceApi().getMapUIController();
if (mogoMapUIController != null) {
result.tileId = String.valueOf(mogoMapUIController.getTileId(result.lon, result.lat));
}
// result.mortonCode = MortonCode.wrapEncodeMorton(result.lon, result.lat);
Log.d("ADAS数据延时","fromAdasObject cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)));
// IMogoMapUIController mogoMapUIController = ARouter.getInstance().navigation(IMogoServiceApis.class).getMapServiceApi().getMapUIController();
// if (mogoMapUIController != null) {
// long start = System.currentTimeMillis();
// result.tileId = String.valueOf(mogoMapUIController.getTileId(result.lon, result.lat));
// Log.d("ADAS数据延时", "getTileId 耗时 : " + (System.currentTimeMillis() - start) + "ms");
// }
return result;
}
}

View File

@@ -7,7 +7,6 @@ import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -18,8 +17,8 @@ import com.mogo.commons.network.SubscribeImpl;
import com.mogo.map.MogoLatLng;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.adas.AdasProvider;
import com.mogo.module.adas.AdasStatusListener;
import com.mogo.module.adas.IAdasDataListener;
import com.mogo.module.adas.IAdasStatusListener;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
import com.mogo.service.adas.IMogoAdasCarDataCallback;
@@ -51,15 +50,11 @@ import com.zhidao.adasconfig.common.config.EnumCarHeading;
import com.zhidao.adasconfig.common.config.EnumSkinStyle;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
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.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import com.zhidao.support.adas.high.msg.MyMessageFactory;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
@@ -69,19 +64,8 @@ import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import rx.android.schedulers.AndroidSchedulers;
import static rx.android.schedulers.AndroidSchedulers.mainThread;
/**
* @author congtaowang
* @since 2020-03-10
* <p>
* 描述
*/
@Route(path = MogoServicePaths.PATH_ADAS_CONTROLLER)
public class MogoADASController implements IMogoADASController {
@@ -101,10 +85,8 @@ public class MogoADASController implements IMogoADASController {
private boolean mIsReleased = true;
private IAdasDataListener mAdasDataListener;
private AdasProvider adasProvider;
/**
* 获取adas前车距离
*/
@@ -125,9 +107,33 @@ public class MogoADASController implements IMogoADASController {
*/
private final List<IMogoAdasRouteCallBack> mMogoAdasRouteCallBacks = new CopyOnWriteArrayList<>();
private IAdasDataListener mAdasDataListener;
private IMogoAdasCarDataCallback mMogoAdasCarDataCallback;
private List<AdasAIDLOwnerCarRectModel> mLastFrameDatums;
private IMogoAdasOCHCallback mAdasOCHCallback;
private double mLastLon;
private double mLastLat;
private double mSpeed;
private String satelliteTime;
@Override
public double getLastSpeed() {
return mSpeed;
}
public double getLastLat() {
return mLastLat;
}
public double getLastLon() {
return mLastLon;
}
public String getSatelliteTime() {
return satelliteTime;
}
/**
* 接收 adas 识别数据线程
@@ -137,9 +143,9 @@ public class MogoADASController implements IMogoADASController {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.obj instanceof List) {
mAdasDataListener.notifyOwnerCarRect((List<AdasAIDLOwnerCarRectModel>) msg.obj);
handleAdasRecognizedData((List<RectInfo.RectBean>) msg.obj);
} else if (msg.obj == null) {
mAdasDataListener.notifyOwnerCarRect(null);
handleAdasRecognizedData(null);
}
}
};
@@ -167,8 +173,8 @@ public class MogoADASController implements IMogoADASController {
mLastLon = stateInfo.getValues().getLon();
mLastLat = stateInfo.getValues().getLat();
// satelliteTime = stateInfo.getValues().getSatelliteTime();
satelliteTime = stateInfo.getValues().getSystemTime();
mSpeed = stateInfo.getValues().getGnss_speed();
satelliteTime = stateInfo.getValues().getSatelliteTime();
if (mMogoAdasCarDataCallback != null) {
mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInfo);
}
@@ -176,116 +182,12 @@ public class MogoADASController implements IMogoADASController {
}
};
private final OnAdasListener mOnAdasListener = new OnAdasListenerAdapter() {
@Override
public void onRectData(RectInfo rectInfo) {
List<AdasAIDLOwnerCarRectModel> data = new ArrayList<>();
if (rectInfo != null && rectInfo.getModels() != null && !rectInfo.getModels().isEmpty()) {
List<RectInfo.RectBean> beans = rectInfo.getModels();
for (RectInfo.RectBean bean : beans) {
if (bean == null) {
continue;
}
AdasAIDLOwnerCarRectModel model = new AdasAIDLOwnerCarRectModel();
model.setId(bean.getId());
model.setXl(bean.getXl());
model.setXr(bean.getXr());
model.setYb(bean.getYb());
model.setYt(bean.getYt());
model.setDistance_x(bean.getDistance_x());
model.setDistance_y(bean.getDistance_y());
String type;
if (TextUtils.isEmpty(bean.getType())) {
type = "100";
Logger.d(TAG, " === ADAS 返回结果出现 type 为 null情况 ====");
} else {
type = bean.getType();
}
model.setType(type);
model.setLat(bean.getLat());
model.setLon(bean.getLon());
model.setHeading(bean.getHeading());
model.setSystemTime(bean.getSystemTime());
model.setSatelliteTime(bean.getSystemTime());
model.setAlt(bean.getAlt());
model.setCarId(bean.getCarId());
model.setUuid(bean.getUuid());
model.setColor(bean.getColor());
model.setSpeed(bean.getSpeed());
model.setDataAccuracy(bean.getDataAccuracy());
model.setDistance(bean.getDistance());
model.setDrawlevel(bean.getDrawlevel()); //liyz
data.add(model);
Log.d("ADAS数据延时", "uuid : " + bean.getUuid() + " type : " + bean.getType() + "systemTime : " + System.currentTimeMillis() + " GPS time" + Long.parseLong(bean.getSystemTime())
+ " timeDelay : " + (System.currentTimeMillis() - Long.parseLong(bean.getSystemTime())));
// Log.d("ADAS原始数据", "uuid : " + bean.getUuid() + " type : " + bean.getType());
Logger.d(TAG, "识别距离x = %s, y = %s", model.getDistance_x(), model.getDistance_y());
}
}
if (mLastFrameDatums == null) {
mLastFrameDatums = new ArrayList<>();
}
try {
mLastFrameDatums.addAll(data);
} catch (Exception e) {
}
Message message = mAdasRecognizedRecHandler.obtainMessage();
message.obj = data;
message.sendToTarget();
DebugConfig.setStatus(DebugConfig.sAdasRecognized, true);
}
@Override
public void onAutopilotRoute(AutopilotRoute autopilotRoute) {
}
@Override
public void onAutopilotSNRequest() {
}
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
if (warnMessageInfo == null) {
return;
}
// 警告消息
Logger.d(TAG, "onWarnMessage = %s", warnMessageInfo.toString());
if (mMogoAdasWarnMessageCallbackList.isEmpty()) {
return;
}
final ADASWarnMessage warnMessage = AdasObjectUtils.fromAdasObject(warnMessageInfo);
if (warnMessage == null) {
return;
}
UiThreadHandler.post(() -> {
for (IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList) {
if (callback != null) {
callback.onReceiveData(warnMessage);
}
}
});
}
};
private IMogoAdasOCHCallback mAdasOCHCallback;
/**
* 处理数据
*
* @param models
*/
private void handleAdasRecognizedData(List<AdasAIDLOwnerCarRectModel> models) {
private void handleAdasRecognizedData(List<RectInfo.RectBean> models) {
if (models == null
|| models.isEmpty()) {
invokeCallbackPerSecond(null);
@@ -294,7 +196,7 @@ public class MogoADASController implements IMogoADASController {
invokeCallbackPerSecond(models);
}
private void invokeCallbackPerSecond(List<AdasAIDLOwnerCarRectModel> models) {
private void invokeCallbackPerSecond(List<RectInfo.RectBean> models) {
List<ADASRecognizedResult> recognizedListResults = AdasObjectUtils.regroupData(models);
if (!mMogoAdasRecognizedDataCallbacks.isEmpty()) {
for (IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks) {
@@ -306,8 +208,6 @@ public class MogoADASController implements IMogoADASController {
}
}
private MyMessageFactory mAdasMessageFactory;
@Override
public void openADAS() {
showADAS();
@@ -338,7 +238,7 @@ public class MogoADASController implements IMogoADASController {
// }
Logger.d(TAG, Log.getStackTraceString(new Throwable()));
init(AbsMogoApplication.getApp());
adasProvider.addAdasStatusListener(new AdasStatusListener() {
adasProvider.addAdasStatusListener(new IAdasStatusListener() {
@Override
public void onServiceConnected() {
Logger.d(TAG, "adas statusListener connected");
@@ -367,20 +267,54 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void cameraEyeDetectResult(String detectResult) {
Logger.d(TAG, "detectResult " + detectResult);
try {
JSONObject jsonObjectWs = new JSONObject(detectResult);
String action = jsonObjectWs.optString("action");
if (TextUtils.isEmpty(action)) {
Logger.w(TAG, "--->action is null");
return;
}
//识别的他车移动操作
mAdasMessageFactory.createMessage(action).handlerMsg(GsonUtil.getGson(), mOnAdasListener, detectResult);
} catch (JSONException e) {
e.printStackTrace();
public void onRectData(RectInfo rectInfo) {
// 仅在 vr 模式下显示 adas 识别车辆
if (!SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) {
return;
}
if (!SingletonsHolder.get(IMogoStatusManager.class).isMainPageLaunched()) {
return;
}
if (rectInfo == null || TextUtils.isEmpty(rectInfo.getAction())) {
Logger.w(TAG, "--->action is null");
return;
}
final long start = System.nanoTime();
if (rectInfo.getModels() != null && !rectInfo.getModels().isEmpty()) {
List<RectInfo.RectBean> beans = rectInfo.getModels();
try {
Message message = mAdasRecognizedRecHandler.obtainMessage();
message.obj = beans;
message.sendToTarget();
Log.i("ADAS数据延时", "接收数据 -> 发出 cost :" + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms");
} catch (Exception e) {
e.printStackTrace();
}
}
DebugConfig.setStatus(DebugConfig.sAdasRecognized, true);
}
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
if (warnMessageInfo == null) {
return;
}
// 警告消息
Logger.d(TAG, "onWarnMessage = %s", warnMessageInfo.toString());
if (mMogoAdasWarnMessageCallbackList.isEmpty()) {
return;
}
final ADASWarnMessage warnMessage = AdasObjectUtils.fromAdasObject(warnMessageInfo);
if (warnMessage == null) {
return;
}
UiThreadHandler.post(() -> {
for (IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList) {
if (callback != null) {
callback.onReceiveData(warnMessage);
}
}
});
}
@Override
@@ -462,31 +396,6 @@ public class MogoADASController implements IMogoADASController {
message.sendToTarget();
}
@Override
public void notifyOwnerCarState(AdasAIDLOwnerCarStateModel ownerCarStateModel) {
Logger.d(TAG, "AdasAIDLOwnerCarStateModel " + ownerCarStateModel);
ADASCarStateInfo stateInf = new ADASCarStateInfo();
stateInf.setAction("state");
ADASCarStateInfo.ValuesBean bean = new ADASCarStateInfo.ValuesBean();
bean.setSatelliteTime(ownerCarStateModel.getSatelliteTime());
bean.setAcceleration(ownerCarStateModel.getAcceleration());
bean.setAlt(ownerCarStateModel.getAlt());
bean.setGnss_speed(ownerCarStateModel.getGnss_speed());
bean.setHeading(ownerCarStateModel.getHeading());
bean.setLat(ownerCarStateModel.getLat());
bean.setLon(ownerCarStateModel.getLon());
bean.setReceiverDataTime(ownerCarStateModel.getReceiverDataTime());
bean.setSystemTime(ownerCarStateModel.getSystemTime());
bean.setYaw_rate(ownerCarStateModel.getYaw_rate());
stateInf.setValues(bean);
mLastLon = ownerCarStateModel.getLon();
mLastLat = ownerCarStateModel.getLat();
mSpeed = ownerCarStateModel.getGnss_speed();
if (mMogoAdasCarDataCallback != null) {
mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInf);
}
}
@Override
public void notifyAutopilotState(AutopilotStatus autopilotStatus) {
Logger.d(TAG, "notifyAutopilotState: " + autopilotStatus);
@@ -495,53 +404,11 @@ public class MogoADASController implements IMogoADASController {
mAdasOCHCallback.onStateChanged(autopilotStatus.getValues().getState(), autopilotStatus.getValues().getReason());
}
}
@Override
public void notifyOwnerCarRect(List<AdasAIDLOwnerCarRectModel> ownerCarStateRectList) {
// 物体识别返回
Logger.d(TAG, "ADAS-REC-received data: size = %s", ownerCarStateRectList == null ? 0 : ownerCarStateRectList.size());
final long start = System.currentTimeMillis();
// 仅在 vr 模式下显示 adas 识别车辆
if (!SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) {
return;
}
if (!SingletonsHolder.get(IMogoStatusManager.class).isMainPageLaunched()) {
return;
}
try {
handleAdasRecognizedData(ownerCarStateRectList);
} catch (Exception e) {
e.printStackTrace();
}
Logger.i("ADAS-REC-timer", "cost " + (System.currentTimeMillis() - start) + "ms");
}
};
adasProvider.addAdasEventListener(mAdasDataListener);
}
}
private double mLastLon;
private double mLastLat;
private double mSpeed;
private String satelliteTime;
@Override
public double getLastSpeed() {
return mSpeed;
}
public double getLastLat() {
return mLastLat;
}
public double getLastLon() {
return mLastLon;
}
public String getSatelliteTime() {
return satelliteTime;
}
private boolean useTestSn = false;
private void invokeShowADASOperation() {
@@ -614,7 +481,6 @@ public class MogoADASController implements IMogoADASController {
@Override
public void init(Context context) {
mIsReleased = false;
mAdasMessageFactory = new MyMessageFactory();
adasProvider = ARouter.getInstance().navigation(AdasProvider.class);
this.context = context;
}
@@ -634,7 +500,6 @@ public class MogoADASController implements IMogoADASController {
if (ui == null || !DebugConfig.isMapBased()) {
return;
}
Logger.d(TAG, "new Mode: " + ui.name());
switch (ui) {
case CarUp_2D:
@@ -784,25 +649,6 @@ public class MogoADASController implements IMogoADASController {
mMogoAdasWarnMessageCallbackList.remove(callback);
}
@Override
public List<ADASRecognizedResult> getLastADASRecognizedResult() {
if (mLastFrameDatums == null) {
return null;
}
if (!DebugConfig.isUseAdasRecognize()) {
return null;
}
try {
List<AdasAIDLOwnerCarRectModel> data = mLastFrameDatums;
mLastFrameDatums = null;
List<ADASRecognizedResult> recognizedResultList;
recognizedResultList = AdasObjectUtils.regroupData(data);
return recognizedResultList;
} catch (Exception e) {
return null;
}
}
@Override
public void addAdasRecognizedDataCallback(IMogoAdasRecognizedDataCallback callback) {
if (callback == null) {
@@ -928,27 +774,6 @@ public class MogoADASController implements IMogoADASController {
}
}
@Override
public void mockAdasRecognized(String json) {
mAdasDataListener.cameraEyeDetectResult(json);
}
//
// private static final int PERIOD = 5 * 1000;
// private static final int DELAY = 10000;
// private Disposable mDisposable;
//
// /**
// * 定时循环任务
// */
// private void timeLoop() {
// mDisposable = Observable.interval(DELAY, PERIOD, TimeUnit.MILLISECONDS)
// .map((aLong -> aLong + 1))
// .subscribeOn(Schedulers.io())
// .subscribe(aLong ->
// adasProvider.setBasicInfo()
// );//getUnreadCount()执行的任务
// }
}

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.cloud.socket.entity.MsgBody;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.connection.IMogoLifecycleListener;
import com.mogo.service.connection.IMogoMsgAckListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
@@ -52,6 +53,20 @@ public class MogoSocketManager implements IMogoSocketManager {
}
}
@Override
public void registerLifecycleListener(int msgType, IMogoLifecycleListener listener) {
if ( mDelegate != null ) {
mDelegate.registerLifecycleListener( msgType, listener );
}
}
@Override
public void unregisterLifecycleListener(int msgType) {
if ( mDelegate != null ) {
mDelegate.unregisterLifecycleListener( msgType);
}
}
@Override
public void sendMsg(MsgBody body, IMogoMsgAckListener listener ) {
if ( mDelegate != null ) {
@@ -59,6 +74,13 @@ public class MogoSocketManager implements IMogoSocketManager {
}
}
@Override
public void destroy() {
if ( mDelegate != null ) {
mDelegate.destroy();
}
}
@Override
public void init( Context context ) {

View File

@@ -46,7 +46,7 @@ public class IntentManager implements IMogoIntentManager {
sInstance = null;
}
private Map< String, CopyOnWriteArrayList< IMogoIntentListener > > mListeners = new ConcurrentHashMap<>();
private final Map< String, CopyOnWriteArrayList< IMogoIntentListener > > mListeners = new ConcurrentHashMap<>();
@Override
public void registerIntentListener( String intent, IMogoIntentListener listener ) {

View File

@@ -10,6 +10,7 @@ import com.mogo.map.MogoCoordinatesTransformer;
import com.mogo.map.MogoGeoSearch;
import com.mogo.map.MogoInputtipsSearch;
import com.mogo.map.MogoLocationClient;
import com.mogo.map.MogoMap;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.MogoMapViewInstanceHandler;
import com.mogo.map.MogoMarkerManager;
@@ -120,6 +121,11 @@ public class MogoMapService implements IMogoMapService {
return MogoCoordinatesTransformer.getInstance();
}
@Override
public String getMapVersion() {
return MogoMap.getInstance().getMogoMap().getMapVersion();
}
@Override
public void init( Context context ) {
}