From 2545d1c8684bdd161943dad1d49fa9fab80abc5e Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 5 Aug 2021 16:52:25 +0800 Subject: [PATCH] add func of upload autopilot status --- .../dispatch/DispatchAutoPilotManager.java | 50 +- .../dispatch/DispatchRemindDialog.java | 21 +- .../DispatchTestPanelBroadCastReceiver.java | 4 +- .../dispatch/model/DispatchServiceModel.java | 35 + .../model/IDispatchAdasApiService.java | 10 + .../service/impl/adas/MogoADASController.java | 598 +++++++++--------- 6 files changed, 391 insertions(+), 327 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/DispatchAutoPilotManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/DispatchAutoPilotManager.java index 638996831b..1405a96680 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/DispatchAutoPilotManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/DispatchAutoPilotManager.java @@ -11,27 +11,20 @@ import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.service.dispatch.bean.AutopilotRoute; +import com.mogo.module.service.dispatch.bean.AutopilotStatus; import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean; -import com.mogo.module.service.dispatch.bean.DispatchData; -import com.mogo.module.service.dispatch.bean.EndLatLon; -import com.mogo.module.service.dispatch.bean.StartLatLon; -import com.mogo.module.service.dispatch.model.DispatchResult; import com.mogo.module.service.dispatch.model.DispatchServiceModel; import com.mogo.module.service.dispatch.model.IDispatch; +import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.adas.RemoteControlAutoPilotParameters; +import com.mogo.service.adas.entity.AdasOCHData; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.utils.logger.Logger; -import com.mogo.utils.network.utils.GsonUtil; -import java.util.ArrayList; -import java.util.List; - -//todo 后续拆解是否放到网约车模块,画线部分已与产品沟通,放入后续迭代需求 //负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗 public class DispatchAutoPilotManager implements IMogoOnMessageListener , DispatchRemindDialog.IDispatchRemindClickListener - , IMogoCarLocationChangedListener2 { + , IMogoCarLocationChangedListener2, IMogoAdasOCHCallback { private static final String TAG = "DispatchAutoPilotManager"; private static volatile DispatchAutoPilotManager instance; @@ -64,6 +57,10 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener list = new ArrayList<>(); - AutopilotRoute.RouteModels routeModels = new AutopilotRoute.RouteModels(); - routeModels.setLat(12.12); - routeModels.setLon(13.14); - list.add(routeModels); - DispatchServiceModel.getInstance().uploadAutopilotRoute(list); - } - public void testDispatchResultUpload() { DispatchServiceModel.getInstance().dispatchResultUpload(DISPATCH_RESULT_AFFIRM, new IDispatch() { @Override @@ -175,4 +162,19 @@ public class DispatchAutoPilotManager implements IMogoOnMessageListener(RequestOptions.create(getContext())) { + @Override + public void onNext(BaseData o) { + super.onNext(o); + Logger.d(TAG, "uploadAutopilotStatus success"); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG, "uploadAutopilotStatus error : " + e.getMessage()); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + } + }); + } + /** * 上报自动驾驶路线 * diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/model/IDispatchAdasApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/model/IDispatchAdasApiService.java index bbfffdc4ee..5941c18b9c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/model/IDispatchAdasApiService.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/dispatch/model/IDispatchAdasApiService.java @@ -30,4 +30,14 @@ public interface IDispatchAdasApiService { @FormUrlEncoded @POST("/dataService/autoDriver/receiverDestSiteResult") Observable uploadDispatchResult(@FieldMap Map parameters); + + /** + * 上报自动驾驶状态 服务于业务调度 + * + * @param parameters map + * @return {@link BaseData} + */ + @FormUrlEncoded + @POST("/dataService/autoDriver/receiveAutopilotState") + Observable uploadAutopilotState(@FieldMap Map parameters); } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index 9d6c7692da..393d3448cd 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -72,7 +72,7 @@ import io.reactivex.schedulers.Schedulers; *

* 描述 */ -@Route( path = MogoServicePaths.PATH_ADAS_CONTROLLER ) +@Route(path = MogoServicePaths.PATH_ADAS_CONTROLLER) public class MogoADASController implements IMogoADASController { private static final String TAG = "MogoADASController"; @@ -87,7 +87,7 @@ public class MogoADASController implements IMogoADASController { public static final String VAL_OPEN = "打开"; public static final String VAL_CLOSE = "关闭"; - private final IMogoStatusManager mStatusManager = SingletonsHolder.get( IMogoStatusManager.class ); + private final IMogoStatusManager mStatusManager = SingletonsHolder.get(IMogoStatusManager.class); private boolean mIsReleased = true; @@ -96,33 +96,35 @@ public class MogoADASController implements IMogoADASController { /** * 获取adas前车距离 */ - private final List< IMogoAdasDataCallback > mAdasDataCallbackList = new CopyOnWriteArrayList<>(); + private final List mAdasDataCallbackList = new CopyOnWriteArrayList<>(); /** * adas 报警数据回调 */ - private final List< IMogoAdasWarnMessageCallback > mMogoAdasWarnMessageCallbackList = new CopyOnWriteArrayList<>(); + private final List mMogoAdasWarnMessageCallbackList = new CopyOnWriteArrayList<>(); /** * adas 识别物体回调 */ - private final List< IMogoAdasRecognizedDataCallback > mMogoAdasRecognizedDataCallbacks = new CopyOnWriteArrayList<>(); + private final List mMogoAdasRecognizedDataCallbacks = new CopyOnWriteArrayList<>(); private IMogoAdasCarDataCallback mMogoAdasCarDataCallback; - private List< AdasAIDLOwnerCarRectModel > mLastFrameDatums; + private List mLastFrameDatums; + + private final List mAdasOCHCallback = new CopyOnWriteArrayList<>(); /** * 接收 adas 识别数据线程 */ - private final Handler mAdasRecognizedRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasRecognizedRecThread" ).getLooper() ) { + private final Handler mAdasRecognizedRecHandler = new Handler(WorkThreadHandler.newInstance("AdasRecognizedRecThread").getLooper()) { @Override - public void handleMessage( Message msg ) { - super.handleMessage( msg ); - if ( msg.obj instanceof List ) { - mAutopolitDataCallBack.notifyOwnerCarRect( ( List< AdasAIDLOwnerCarRectModel > ) msg.obj ); - } else if(msg.obj == null ){ - mAutopolitDataCallBack.notifyOwnerCarRect( null ); + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (msg.obj instanceof List) { + mAutopolitDataCallBack.notifyOwnerCarRect((List) msg.obj); + } else if (msg.obj == null) { + mAutopolitDataCallBack.notifyOwnerCarRect(null); } } }; @@ -130,20 +132,20 @@ public class MogoADASController implements IMogoADASController { /** * 接收 adas 定位数据线程 */ - private final Handler mAdasLocationRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasLocationRecThread" ).getLooper() ) { + private final Handler mAdasLocationRecHandler = new Handler(WorkThreadHandler.newInstance("AdasLocationRecThread").getLooper()) { @Override - public void handleMessage( Message msg ) { - super.handleMessage( msg ); + public void handleMessage(Message msg) { + super.handleMessage(msg); final long start = System.currentTimeMillis(); - ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ( ( String ) msg.obj ), ADASCarStateInfo.class ); - if ( stateInfo == null || stateInfo.getValues() == null ) { - Logger.d(TAG,"ADAS-LOC-timer","upd 到 aidl 传输数据 stateInfo or stateInfo.getValues() is null"); + ADASCarStateInfo stateInfo = GsonUtil.objectFromJson(((String) msg.obj), ADASCarStateInfo.class); + if (stateInfo == null || stateInfo.getValues() == null) { + Logger.d(TAG, "ADAS-LOC-timer", "upd 到 aidl 传输数据 stateInfo or stateInfo.getValues() is null"); return; } - if(stateInfo.getValues().getStartReceiverDataTime() != null){ - Logger.d( "ADAS-LOC-timer", "upd 到 aidl 传输耗时:%s", start - Long.valueOf( stateInfo.getValues().getStartReceiverDataTime() ) ); - }else{ - Logger.d( "ADAS-LOC-timer", "upd 到 aidl 传输耗时时间字段 startReceiverDataTime is null"); + if (stateInfo.getValues().getStartReceiverDataTime() != null) { + Logger.d("ADAS-LOC-timer", "upd 到 aidl 传输耗时:%s", start - Long.valueOf(stateInfo.getValues().getStartReceiverDataTime())); + } else { + Logger.d("ADAS-LOC-timer", "upd 到 aidl 传输耗时时间字段 startReceiverDataTime is null"); } mLastLon = stateInfo.getValues().getLon(); @@ -153,115 +155,113 @@ public class MogoADASController implements IMogoADASController { if (mMogoAdasCarDataCallback != null) { mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInfo); } - Logger.i( "ADAS-LOC-timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); + Logger.i("ADAS-LOC-timer", "cost " + (System.currentTimeMillis() - start) + "ms"); } }; private final OnAdasListener mOnAdasListener = new OnAdasListenerAdapter() { @Override - public void onRectData( RectInfo rectInfo ) { + 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 ) { + List data = new ArrayList<>(); + if (rectInfo != null && rectInfo.getModels() != null && !rectInfo.getModels().isEmpty()) { + List 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() ); - model.setType( bean.getType() ); - model.setLat( bean.getLat() ); - model.setLon( bean.getLon() ); - model.setHeading( bean.getHeading() ); - model.setSystemTime( bean.getSystemTime() ); - model.setSatelliteTime( bean.getSatelliteTime() ); - 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.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()); + model.setType(bean.getType()); + model.setLat(bean.getLat()); + model.setLon(bean.getLon()); + model.setHeading(bean.getHeading()); + model.setSystemTime(bean.getSystemTime()); + model.setSatelliteTime(bean.getSatelliteTime()); + 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 ); + data.add(model); - Logger.d( TAG, "识别距离:x = %s, y = %s", model.getDistance_x(), model.getDistance_y() ); + Logger.d(TAG, "识别距离:x = %s, y = %s", model.getDistance_x(), model.getDistance_y()); } } - if ( mLastFrameDatums == null ) { + if (mLastFrameDatums == null) { mLastFrameDatums = new ArrayList<>(); } try { - mLastFrameDatums.addAll( data ); - } catch ( Exception e ) { + mLastFrameDatums.addAll(data); + } catch (Exception e) { } Message message = mAdasRecognizedRecHandler.obtainMessage(); message.obj = data; message.sendToTarget(); - DebugConfig.setStatus( DebugConfig.sAdasRecognized, true ); + DebugConfig.setStatus(DebugConfig.sAdasRecognized, true); } @Override - public void onWarnMessage( WarnMessageInfo warnMessageInfo ) { - if ( warnMessageInfo == null ) { + public void onWarnMessage(WarnMessageInfo warnMessageInfo) { + if (warnMessageInfo == null) { return; } // 警告消息 - Logger.d( TAG, "onWarnMessage = %s", warnMessageInfo.toString() ); - if ( mMogoAdasWarnMessageCallbackList.isEmpty() ) { + Logger.d(TAG, "onWarnMessage = %s", warnMessageInfo.toString()); + if (mMogoAdasWarnMessageCallbackList.isEmpty()) { return; } - final ADASWarnMessage warnMessage = AdasObjectUtils.fromAdasObject( warnMessageInfo ); - if ( warnMessage == null ) { + final ADASWarnMessage warnMessage = AdasObjectUtils.fromAdasObject(warnMessageInfo); + if (warnMessage == null) { return; } - UiThreadHandler.post( () -> { - for ( IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList ) { - if ( callback != null ) { - callback.onReceiveData( warnMessage ); + UiThreadHandler.post(() -> { + for (IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList) { + if (callback != null) { + callback.onReceiveData(warnMessage); } } - } ); + }); } }; - private IMogoAdasOCHCallback mAdasOCHCallback; - /** * 处理数据 * * @param models */ - private void handleAdasRecognizedData( List< AdasAIDLOwnerCarRectModel > models ) { - if ( models == null - || models.isEmpty() ) { - invokeCallbackPerSecond( null ); + private void handleAdasRecognizedData(List models) { + if (models == null + || models.isEmpty()) { + invokeCallbackPerSecond(null); return; } - invokeCallbackPerSecond( models ); + invokeCallbackPerSecond(models); } - private void invokeCallbackPerSecond( List< AdasAIDLOwnerCarRectModel > models ) { - List< ADASRecognizedResult > recognizedListResults = AdasObjectUtils.regroupData( models ); - if ( !mMogoAdasRecognizedDataCallbacks.isEmpty() ) { - for ( IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks ) { - if ( callback == null ) { + private void invokeCallbackPerSecond(List models) { + List recognizedListResults = AdasObjectUtils.regroupData(models); + if (!mMogoAdasRecognizedDataCallbacks.isEmpty()) { + for (IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks) { + if (callback == null) { continue; } - callback.onAdasDataCallback( recognizedListResults ); + callback.onAdasDataCallback(recognizedListResults); } } } @@ -277,7 +277,7 @@ public class MogoADASController implements IMogoADASController { public void killADAS() { try { AutopilotServiceManage.getInstance().kill(); - } catch ( Exception e ) { + } catch (Exception e) { } } @@ -287,17 +287,17 @@ public class MogoADASController implements IMogoADASController { @Override public void showADAS() { - if ( DebugConfig.isNeedLoadGuideModule() ) { - if ( !SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getBoolean( DebugConfig.getSpGuide(), false ) ) { + if (DebugConfig.isNeedLoadGuideModule()) { + if (!SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(DebugConfig.getSpGuide(), false)) { return; } } - if ( SingletonsHolder.get( IMogoStatusManager.class ).isVrMode() ) { + if (SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) { return; } - Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); - init( AbsMogoApplication.getApp() ); - AutopilotServiceManage.getInstance().registerAutopilotServiceStatusListener( new IAutopilotServiceStatusListener() { + Logger.d(TAG, Log.getStackTraceString(new Throwable())); + init(AbsMogoApplication.getApp()); + AutopilotServiceManage.getInstance().registerAutopilotServiceStatusListener(new IAutopilotServiceStatusListener() { @Override public void onServiceConnected() { invokeShowADASOperation(); @@ -307,56 +307,56 @@ public class MogoADASController implements IMogoADASController { public void onServiceDisconnected() { } - } ); + }); invokeShowADASOperation(); - if ( mAutopolitDataCallBack == null ) { + if (mAutopolitDataCallBack == null) { mAutopolitDataCallBack = new IAutopolitDataCallBack() { @Override - public void sendMsg( String msg ) { - for ( IMogoAdasDataCallback callback : mAdasDataCallbackList ) { + public void sendMsg(String msg) { + for (IMogoAdasDataCallback callback : mAdasDataCallbackList) { try { - callback.onAdasDataCallback( msg ); - } catch ( Exception e ) { - Logger.e( TAG, e, "sendMsg" ); + callback.onAdasDataCallback(msg); + } catch (Exception e) { + Logger.e(TAG, e, "sendMsg"); } } } @Override - public void cameraEyeDetectResult( String detectResult ) { + public void cameraEyeDetectResult(String detectResult) { try { - JSONObject jsonObjectWs = new JSONObject( detectResult ); - String action = jsonObjectWs.optString( "action" ); - if ( TextUtils.isEmpty( action ) ) { - Logger.w( TAG, "--->action is null" ); + 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 ) { + mAdasMessageFactory.createMessage(action).handlerMsg(GsonUtil.getGson(), mOnAdasListener, detectResult); + } catch (JSONException e) { e.printStackTrace(); } } @Override - public void selectCarModelUrl( String carStyleUrl ) { - Logger.d( TAG, "selectCarModelUrl: " + carStyleUrl ); + public void selectCarModelUrl(String carStyleUrl) { + Logger.d(TAG, "selectCarModelUrl: " + carStyleUrl); needEmphasizeMyLocation = true; // 修改自车图标展示 - SharedPrefsMgr.getInstance( context ).putString( "MY_LOCATION_CONFIG", carStyleUrl ); - SingletonsHolder.get( IMogoDataManager.class ).syncData( "ADAS", carStyleUrl ); + SharedPrefsMgr.getInstance(context).putString("MY_LOCATION_CONFIG", carStyleUrl); + SingletonsHolder.get(IMogoDataManager.class).syncData("ADAS", carStyleUrl); } @Override public void requestGetCarModelListInfo() { - if ( DebugConfig.isMapBased() ) { - Logger.d( TAG, "requestGetCarModelListInfo" ); + if (DebugConfig.isMapBased()) { + Logger.d(TAG, "requestGetCarModelListInfo"); // 向adas发送车模list - String carModelList = SharedPrefsMgr.getInstance( context ).getString( "CAR_MODEL_LIST", "" ); - if ( carModelList != null && !carModelList.isEmpty() ) { - AutopilotServiceManage.getInstance().settingCarModelListInfo( carModelList ); + String carModelList = SharedPrefsMgr.getInstance(context).getString("CAR_MODEL_LIST", ""); + if (carModelList != null && !carModelList.isEmpty()) { + AutopilotServiceManage.getInstance().settingCarModelListInfo(carModelList); } // 此处进行网络请求,请求成功后再通知一次adas requestCarModelList(); @@ -365,8 +365,8 @@ public class MogoADASController implements IMogoADASController { @Override public void clickSettingBack() { - if ( needEmphasizeMyLocation ) { - SingletonsHolder.get( IMogoDataManager.class ).syncData( "ADAS", null ); + if (needEmphasizeMyLocation) { + SingletonsHolder.get(IMogoDataManager.class).syncData("ADAS", null); } needEmphasizeMyLocation = false; @@ -374,85 +374,89 @@ public class MogoADASController implements IMogoADASController { } @Override - public void showToast( String msg ) { - UiThreadHandler.post( () -> TipToast.tip( msg ) ); + public void showToast(String msg) { + UiThreadHandler.post(() -> TipToast.tip(msg)); } @Override - public void autopilotArrive( AdasAIDLAutopilotArriveModel autopilotArriveModel ) { - if ( autopilotArriveModel == null ) { + public void autopilotArrive(AdasAIDLAutopilotArriveModel autopilotArriveModel) { + if (autopilotArriveModel == null) { return; } - if ( mAdasOCHCallback != null ) { - mAdasOCHCallback.onArriveAt( new AdasOCHData( - autopilotArriveModel.getCarType(), - autopilotArriveModel.getLon(), - autopilotArriveModel.getLat() ) - ); + if (!mAdasOCHCallback.isEmpty()) { + for (IMogoAdasOCHCallback cb : mAdasOCHCallback) { + cb.onArriveAt(new AdasOCHData( + autopilotArriveModel.getCarType(), + autopilotArriveModel.getLon(), + autopilotArriveModel.getLat()) + ); + } } } @Override - public void ownerCarStateInfo( String ownerCarStateInfo ) { + public void ownerCarStateInfo(String ownerCarStateInfo) { Message message = mAdasLocationRecHandler.obtainMessage(); message.obj = ownerCarStateInfo; message.sendToTarget(); } @Override - public void notifyOwnerCarState( AdasAIDLOwnerCarStateModel ownerCarStateModel ) { + public void notifyOwnerCarState(AdasAIDLOwnerCarStateModel ownerCarStateModel) { ADASCarStateInfo stateInf = new ADASCarStateInfo(); - stateInf.setAction( "state" ); + 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 ); + 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 ); + if (mMogoAdasCarDataCallback != null) { + mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInf); } } @Override - public void notifyAutopilotState( AdasAIDLAutopilotStateModel autopilotStateModel ) { - Logger.d( TAG, "notifyAutopilotState: " + autopilotStateModel ); - DebugConfig.setAutoPilotStatus( autopilotStateModel.getState() + "" ); - if ( mAdasOCHCallback != null ) { - mAdasOCHCallback.onStateChanged( autopilotStateModel.getState(), autopilotStateModel.getReason() ); + public void notifyAutopilotState(AdasAIDLAutopilotStateModel autopilotStateModel) { + Logger.d(TAG, "notifyAutopilotState: " + autopilotStateModel); + DebugConfig.setAutoPilotStatus(autopilotStateModel.getState() + ""); + if (!mAdasOCHCallback.isEmpty()) { + for (IMogoAdasOCHCallback cb : mAdasOCHCallback) { + cb.onStateChanged(autopilotStateModel.getState(), autopilotStateModel.getReason()); + } } } @Override - public void notifyOwnerCarRect( List< AdasAIDLOwnerCarRectModel > ownerCarStateRectList ) { + public void notifyOwnerCarRect(List ownerCarStateRectList) { // 物体识别返回 - Logger.d( TAG, "ADAS-REC-received data: size = %s", ownerCarStateRectList == null ? 0 : ownerCarStateRectList.size() ); + 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() ) { + if (!SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) { return; } - if ( !SingletonsHolder.get( IMogoStatusManager.class ).isMainPageLaunched() ) { + if (!SingletonsHolder.get(IMogoStatusManager.class).isMainPageLaunched()) { return; } try { - handleAdasRecognizedData( ownerCarStateRectList ); - } catch ( Exception e ) { + handleAdasRecognizedData(ownerCarStateRectList); + } catch (Exception e) { e.printStackTrace(); } - Logger.i( "ADAS-REC-timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); + Logger.i("ADAS-REC-timer", "cost " + (System.currentTimeMillis() - start) + "ms"); } }; - AutopilotServiceManage.getInstance().registerAutopilotDataListener( mAutopolitDataCallBack ); + AutopilotServiceManage.getInstance().registerAutopilotDataListener(mAutopolitDataCallBack); } } @@ -484,145 +488,145 @@ public class MogoADASController implements IMogoADASController { private void invokeShowADASOperation() { int delay = 0; - UiThreadHandler.postDelayed( () -> { + UiThreadHandler.postDelayed(() -> { - if ( mStatusManager.isSearchUIShow() ) { + if (mStatusManager.isSearchUIShow()) { return; } - if ( !mStatusManager.isMainPageOnResume() ) { + if (!mStatusManager.isMainPageOnResume()) { return; } - if ( SingletonsHolder.get( IMogoStatusManager.class ).isVrMode() ) { + if (SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) { return; } try { AutopilotServiceManage.getInstance().showAdas(); - } catch ( Exception e ) { - Intent intent = new Intent( ACTION ); - intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); + } catch (Exception e) { + Intent intent = new Intent(ACTION); + intent.putExtra(PARAM_COMMAND, VAL_COMMAND); JSONObject object = new JSONObject(); try { - object.put( PARAM_OBJECT, VAL_OBJECT ); - object.put( PARAM_OPERATION, VAL_OPEN ); - intent.putExtra( PARAM_DATA, object.toString() ); - sendBroadcast( intent ); - } catch ( Exception e1 ) { - Logger.e( TAG, e1, "error." ); + object.put(PARAM_OBJECT, VAL_OBJECT); + object.put(PARAM_OPERATION, VAL_OPEN); + intent.putExtra(PARAM_DATA, object.toString()); + sendBroadcast(intent); + } catch (Exception e1) { + Logger.e(TAG, e1, "error."); } } - }, delay ); + }, delay); } @Override public void closeADAS() { - Logger.d( TAG, "close adas" ); + Logger.d(TAG, "close adas"); try { AutopilotServiceManage.getInstance().hideAdas(); - } catch ( Exception e ) { - Intent intent = new Intent( ACTION ); - intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); + } catch (Exception e) { + Intent intent = new Intent(ACTION); + intent.putExtra(PARAM_COMMAND, VAL_COMMAND); JSONObject object = new JSONObject(); try { - object.put( PARAM_OBJECT, VAL_OBJECT ); - object.put( PARAM_OPERATION, VAL_CLOSE ); - intent.putExtra( PARAM_DATA, object.toString() ); - sendBroadcast( intent ); - } catch ( Exception e1 ) { - Logger.e( TAG, e1, "error." ); + object.put(PARAM_OBJECT, VAL_OBJECT); + object.put(PARAM_OPERATION, VAL_CLOSE); + intent.putExtra(PARAM_DATA, object.toString()); + sendBroadcast(intent); + } catch (Exception e1) { + Logger.e(TAG, e1, "error."); } } } - private void sendBroadcast( Intent intent ) { + private void sendBroadcast(Intent intent) { Application app = AbsMogoApplication.getApp(); - if ( app == null ) { - Logger.e( TAG, "un handle Application instance." ); + if (app == null) { + Logger.e(TAG, "un handle Application instance."); return; } - app.sendBroadcast( intent ); + app.sendBroadcast(intent); } private Context context; @Override - public void init( Context context ) { - AutopilotServiceManage.getInstance().init( context ); + public void init(Context context) { + AutopilotServiceManage.getInstance().init(context); mIsReleased = false; mAdasMessageFactory = new MyMessageFactory(); this.context = context; } @Override - public void setSettingStatus( boolean show ) { - AutopilotServiceManage.getInstance().setSettingStatus( show ); + public void setSettingStatus(boolean show) { + AutopilotServiceManage.getInstance().setSettingStatus(show); } @Override - public void setUseAlgorithm( boolean open ) { - AutopilotServiceManage.getInstance().setUseAlgorithm( open ); + public void setUseAlgorithm(boolean open) { + AutopilotServiceManage.getInstance().setUseAlgorithm(open); } @Override - public void changeAdasControlMode( EnumMapUI ui ) { - if ( ui == null || !DebugConfig.isMapBased() ) { + public void changeAdasControlMode(EnumMapUI ui) { + if (ui == null || !DebugConfig.isMapBased()) { return; } - Logger.d( TAG, "new Mode: " + ui.name() ); - switch ( ui ) { + Logger.d(TAG, "new Mode: " + ui.name()); + switch (ui) { case CarUp_2D: case CarUp_3D: - AdasConfigApiController.getInstance().setUserCarHeading( EnumCarHeading.CAR_HEADING_UP ); + AdasConfigApiController.getInstance().setUserCarHeading(EnumCarHeading.CAR_HEADING_UP); break; case NorthUP_2D: - AdasConfigApiController.getInstance().setUserCarHeading( EnumCarHeading.NORTH_UP ); + AdasConfigApiController.getInstance().setUserCarHeading(EnumCarHeading.NORTH_UP); break; case Type_Light: - if ( getCurrentSkinMode() == EnumMapUI.Type_Light ) { + if (getCurrentSkinMode() == EnumMapUI.Type_Light) { return; } - AdasConfigApiController.getInstance().setUserSkinModel( EnumSkinStyle.WHITE ); + AdasConfigApiController.getInstance().setUserSkinModel(EnumSkinStyle.WHITE); break; case Type_Night: - if ( getCurrentSkinMode() == EnumMapUI.Type_Night ) { + if (getCurrentSkinMode() == EnumMapUI.Type_Night) { return; } - AdasConfigApiController.getInstance().setUserSkinModel( EnumSkinStyle.BLACK ); + AdasConfigApiController.getInstance().setUserSkinModel(EnumSkinStyle.BLACK); break; case Type_AUTO_LIGHT_Night: - AdasConfigApiController.getInstance().setUserSkinModel( EnumSkinStyle.AUTO ); + AdasConfigApiController.getInstance().setUserSkinModel(EnumSkinStyle.AUTO); break; } } @Override - public void changeAdasControlVisibleMode( boolean visible ) { - Logger.d( TAG, "new visibility: " + visible ); - AdasConfigApiController.getInstance().setUserCarChatIncognitoModel( visible ? EnumCarChatIncognitoMode.OPEN : EnumCarChatIncognitoMode.CLOSE ); + public void changeAdasControlVisibleMode(boolean visible) { + Logger.d(TAG, "new visibility: " + visible); + AdasConfigApiController.getInstance().setUserCarChatIncognitoModel(visible ? EnumCarChatIncognitoMode.OPEN : EnumCarChatIncognitoMode.CLOSE); } @Override public EnumMapUI getCurrentSkinMode() { - if ( !DebugConfig.isMapBased() ) { + if (!DebugConfig.isMapBased()) { return EnumMapUI.Type_Night; } boolean white = AdasConfigApiController.getInstance().isShowUISkinWhiteModel(); - if ( !white ) { + if (!white) { return EnumMapUI.Type_Night; } return EnumMapUI.Type_Light; } @Override - public void aiCloudToAdasData( RemoteControlAutoPilotParameters result ) { + public void aiCloudToAdasData(RemoteControlAutoPilotParameters result) { try { - syncControlCmdToADAS( "aiCloudToStartAutopilot", result ); - } catch ( Exception e ) { - Logger.e( TAG, e, "aiCloudToAdasData" ); + syncControlCmdToADAS("aiCloudToStartAutopilot", result); + } catch (Exception e) { + Logger.e(TAG, e, "aiCloudToAdasData"); } } @@ -630,173 +634,173 @@ public class MogoADASController implements IMogoADASController { * @param action * @param result */ - private void syncControlCmdToADAS( String action, Object result ) { - AdasControlCommandParameter parameter = new AdasControlCommandParameter( action, result ); + private void syncControlCmdToADAS(String action, Object result) { + AdasControlCommandParameter parameter = new AdasControlCommandParameter(action, result); //位置信息 action是aiCloudToStartAutopilot try { - AutopilotServiceManage.getInstance().aiCloudToAdasData( GsonUtil.jsonFromObject( parameter ) ); - } catch ( Exception e ) { + AutopilotServiceManage.getInstance().aiCloudToAdasData(GsonUtil.jsonFromObject(parameter)); + } catch (Exception e) { e.printStackTrace(); } } - private static final String TEST_SN = "ZD802B1932L00617"; - private String currentSn = TEST_SN; - private void requestCarModelList() { - Map< String, String > params = new HashMap<>( 8 ); - params.put( "sn", Utils.getSn() ); -// currentSn = useTestSn ? TEST_SN : Utils.getSn(); -// params.put("sn", currentSn); + Map params = new HashMap<>(8); + params.put("sn", Utils.getSn()); - SingletonsHolder.get( IMogoNetwork.class ).create( CarModelInfoNetApiServices.class, CarModelInfoNetApiServices.getBaseUrl() ). - requestCarModelList( params ). - subscribeOn( Schedulers.io() ). - observeOn( Schedulers.io() ). - subscribe( new SubscribeImpl< CarModelListResponse >( RequestOptions.create( context ) ) { + SingletonsHolder.get(IMogoNetwork.class).create(CarModelInfoNetApiServices.class, CarModelInfoNetApiServices.getBaseUrl()). + requestCarModelList(params). + subscribeOn(Schedulers.io()). + observeOn(Schedulers.io()). + subscribe(new SubscribeImpl(RequestOptions.create(context)) { @Override - public void onSuccess( CarModelListResponse o ) { - super.onSuccess( o ); - Logger.d( TAG, "请求车模列表成功: " + o ); + public void onSuccess(CarModelListResponse o) { + super.onSuccess(o); + Logger.d(TAG, "请求车模列表成功: " + o); // 保存到sp中 - String value = GsonUtil.jsonFromObject( o.getResult() ); - SharedPrefsMgr.getInstance( context ).putString( "CAR_MODEL_LIST", value ); - if ( value != null && !value.isEmpty() ) { - AutopilotServiceManage.getInstance().settingCarModelListInfo( value ); + String value = GsonUtil.jsonFromObject(o.getResult()); + SharedPrefsMgr.getInstance(context).putString("CAR_MODEL_LIST", value); + if (value != null && !value.isEmpty()) { + AutopilotServiceManage.getInstance().settingCarModelListInfo(value); } } @Override - public void onError( Throwable e ) { - super.onError( e ); - Logger.e( TAG, e, "请求自车模型失败" ); + public void onError(Throwable e) { + super.onError(e); + Logger.e(TAG, e, "请求自车模型失败"); } @Override - public void onError( String message, int code ) { - super.onError( message, code ); - Logger.e( TAG, "请求自车模型失败: " + message ); + public void onError(String message, int code) { + super.onError(message, code); + Logger.e(TAG, "请求自车模型失败: " + message); } - } ); + }); } @Override public void release() { mIsReleased = true; - AutopilotServiceManage.getInstance().unRegisterAutopilotDataListener( mAutopolitDataCallBack ); + AutopilotServiceManage.getInstance().unRegisterAutopilotDataListener(mAutopolitDataCallBack); AutopilotServiceManage.getInstance().release(); } @Override - public void addAdasDataCallback( IMogoAdasDataCallback callback ) { - if ( callback == null ) { + public void addAdasDataCallback(IMogoAdasDataCallback callback) { + if (callback == null) { return; } - if ( !mAdasDataCallbackList.contains( callback ) ) { - mAdasDataCallbackList.add( callback ); + if (!mAdasDataCallbackList.contains(callback)) { + mAdasDataCallbackList.add(callback); } } @Override - public void removeAdasDataCallback( IMogoAdasDataCallback callback ) { - if ( callback == null ) { + public void removeAdasDataCallback(IMogoAdasDataCallback callback) { + if (callback == null) { return; } - mAdasDataCallbackList.remove( callback ); + mAdasDataCallbackList.remove(callback); } @Override - public void addAdasWarnMessageCallback( IMogoAdasWarnMessageCallback callback ) { - if ( callback == null ) { + public void addAdasWarnMessageCallback(IMogoAdasWarnMessageCallback callback) { + if (callback == null) { return; } - if ( !mMogoAdasWarnMessageCallbackList.contains( callback ) ) { - mMogoAdasWarnMessageCallbackList.add( callback ); + if (!mMogoAdasWarnMessageCallbackList.contains(callback)) { + mMogoAdasWarnMessageCallbackList.add(callback); } } @Override - public void removeAdasWarnMessageCallback( IMogoAdasWarnMessageCallback callback ) { - if ( callback == null ) { + public void removeAdasWarnMessageCallback(IMogoAdasWarnMessageCallback callback) { + if (callback == null) { return; } - mMogoAdasWarnMessageCallbackList.remove( callback ); + mMogoAdasWarnMessageCallbackList.remove(callback); } @Override - public List< ADASRecognizedResult > getLastADASRecognizedResult() { - if ( mLastFrameDatums == null ) { + public List getLastADASRecognizedResult() { + if (mLastFrameDatums == null) { return null; } if (!DebugConfig.isUseAdasRecognize()) { return null; } try { - List< AdasAIDLOwnerCarRectModel > data = mLastFrameDatums; + List data = mLastFrameDatums; mLastFrameDatums = null; - List< ADASRecognizedResult > recognizedResultList; - recognizedResultList = AdasObjectUtils.regroupData( data ); + List recognizedResultList; + recognizedResultList = AdasObjectUtils.regroupData(data); return recognizedResultList; - } catch ( Exception e ) { + } catch (Exception e) { return null; } } @Override - public void addAdasRecognizedDataCallback( IMogoAdasRecognizedDataCallback callback ) { - if ( callback == null ) { + public void addAdasRecognizedDataCallback(IMogoAdasRecognizedDataCallback callback) { + if (callback == null) { return; } - if ( !mMogoAdasRecognizedDataCallbacks.contains( callback ) ) { - mMogoAdasRecognizedDataCallbacks.add( callback ); + if (!mMogoAdasRecognizedDataCallbacks.contains(callback)) { + mMogoAdasRecognizedDataCallbacks.add(callback); } } @Override - public void removeAdasRecognizedDataCallback( IMogoAdasRecognizedDataCallback callback ) { - if ( callback == null ) { + public void removeAdasRecognizedDataCallback(IMogoAdasRecognizedDataCallback callback) { + if (callback == null) { return; } - mMogoAdasRecognizedDataCallbacks.remove( callback ); + mMogoAdasRecognizedDataCallbacks.remove(callback); } @Override - public void setAdasCarDataCallback( IMogoAdasCarDataCallback carDataCallback ) { + public void setAdasCarDataCallback(IMogoAdasCarDataCallback carDataCallback) { mMogoAdasCarDataCallback = carDataCallback; } @Override - public void addAdasOCHCallback( IMogoAdasOCHCallback callback ) { - mAdasOCHCallback = callback; + public void addAdasOCHCallback(IMogoAdasOCHCallback callback) { + if (mAdasOCHCallback.contains(callback)) { + return; + } + mAdasOCHCallback.add(callback); } @Override public void removeAdasOCHCallback() { - mAdasOCHCallback = null; + mAdasOCHCallback.clear(); } @Override - public void onAutopilotArriveLike( int carType ) { - if ( mAdasOCHCallback != null ) { - mAdasOCHCallback.onArriveAt( new AdasOCHData( - carType, - 116.09888888, - 39.999999 ) - ); + public void onAutopilotArriveLike(int carType) { + if (!mAdasOCHCallback.isEmpty()) { + for (IMogoAdasOCHCallback cb : mAdasOCHCallback) { + cb.onArriveAt(new AdasOCHData( + carType, + 116.09888888, + 39.999999) + ); + } } } @Override public int getAutopilotStatus() { - if ( mockState != -2 ) { + if (mockState != -2) { return mockState; } int status = IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE; try { status = AutopilotServiceManage.getInstance().autopilotStateCall().getState(); - } catch ( Exception e ) { + } catch (Exception e) { e.printStackTrace(); } return status; @@ -805,15 +809,19 @@ public class MogoADASController implements IMogoADASController { private int mockState = -2; @Override - public void mockOchStatus( int state, String reason ) { - if ( state == -1 ) { - if ( mAdasOCHCallback != null ) { - mAdasOCHCallback.onArriveAt( new AdasOCHData( 1, 1d, 1d ) ); + public void mockOchStatus(int state, String reason) { + if (state == -1) { + if (!mAdasOCHCallback.isEmpty()) { + for (IMogoAdasOCHCallback cb : mAdasOCHCallback) { + cb.onArriveAt(new AdasOCHData(1, 1d, 1d)); + } } } else { mockState = state; - if ( mAdasOCHCallback != null ) { - mAdasOCHCallback.onStateChanged( state, reason ); + if (!mAdasOCHCallback.isEmpty()) { + for (IMogoAdasOCHCallback cb : mAdasOCHCallback) { + cb.onStateChanged(state, reason); + } } } } @@ -822,36 +830,36 @@ public class MogoADASController implements IMogoADASController { public void cancelAutopilot() { try { AutopilotServiceManage.getInstance().cancelAutopilot(); - } catch ( RemoteException e ) { + } catch (RemoteException e) { e.printStackTrace(); } } @Override - public void mockAdasLoc( String json ) { - ADASCarStateInfo stateInf = GsonUtil.objectFromJson( json, ADASCarStateInfo.class ); - if ( stateInf == null ) { + public void mockAdasLoc(String json) { + ADASCarStateInfo stateInf = GsonUtil.objectFromJson(json, ADASCarStateInfo.class); + if (stateInf == null) { return; } - if ( mMogoAdasCarDataCallback != null ) { - mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInf ); + if (mMogoAdasCarDataCallback != null) { + mMogoAdasCarDataCallback.onAdasCarDataCallback(stateInf); } } @Override - public void mockAdasRecognized( List recognizedResults ) { - if ( !mMogoAdasRecognizedDataCallbacks.isEmpty() ) { - for ( IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks ) { - if ( callback == null ) { + public void mockAdasRecognized(List recognizedResults) { + if (!mMogoAdasRecognizedDataCallbacks.isEmpty()) { + for (IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks) { + if (callback == null) { continue; } - callback.onAdasDataCallback( recognizedResults ); + callback.onAdasDataCallback(recognizedResults); } } } @Override - public void mockAdasRecognized( String json ) { - mAutopolitDataCallBack.cameraEyeDetectResult( json ); + public void mockAdasRecognized(String json) { + mAutopolitDataCallBack.cameraEyeDetectResult(json); } }