diff --git a/.idea/misc.xml b/.idea/misc.xml index 733acb1920..09cc32c567 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java index 17e26d4f0b..023888b7d8 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java @@ -221,7 +221,7 @@ public class OchBusFragment extends BaseOchFragment< OchBusFragment, OchBusPrese isOperationStatus = launch; if ( launch ) { tvOperationStatus.setText( "收车" ); - showSlidePanle("滑动出发"); +// showSlidePanle("滑动出发"); showPanel(); } else { AIAssist.getInstance(getContext()).speakTTSVoice("已收车"); diff --git a/OCH/mogo-och-bus/src/main/res/drawable/module_och_bus_panel_bkg.xml b/OCH/mogo-och-bus/src/main/res/drawable/module_och_bus_panel_bkg.xml index 204c5fc692..4a08f10745 100644 --- a/OCH/mogo-och-bus/src/main/res/drawable/module_och_bus_panel_bkg.xml +++ b/OCH/mogo-och-bus/src/main/res/drawable/module_och_bus_panel_bkg.xml @@ -2,7 +2,7 @@ - + @@ -12,7 +12,7 @@ android:right="3px" android:top="3px"> - + diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java new file mode 100644 index 0000000000..af7fc38699 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java @@ -0,0 +1,6 @@ +package com.mogo.och.taxi; + +public interface IOperationChangedListener { + void onOperationChanged(boolean launch); + void onOrderStatusChanged(int status); +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java index d2a0674630..fb79ee489e 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java @@ -8,7 +8,10 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.IMogoOCH; import com.mogo.och.OCHConstants; +import com.mogo.och.taxi.ui.OCHTaxiFragment; import com.mogo.och.taxi.ui.OCHTaxiUiController; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -20,13 +23,17 @@ public * 网约车-出租车 */ @Route( path = OCHConstants.PATH ) -class MogoOCHTaxi implements IMogoOCH { +class MogoOCHTaxi implements IMogoOCH , IMogoStatusChangedListener { private static final String TAG = "MogoOCHTaxi"; - + private OCHTaxiFragment ochTaxiFragment; + private FragmentActivity mActivity; + private int mContainerId; @Override public void init( FragmentActivity activity, int containerId ) { - MogoOCHTaxiModel.getInstance().init( activity.getApplicationContext() ); + this.mActivity = activity; + this.mContainerId = containerId; +// MogoOCHTaxiModel.getInstance().init( activity.getApplicationContext() ); OCHTaxiUiController.getInstance().init( activity, containerId ); UiThreadHandler.postDelayed( () -> { @@ -38,5 +45,36 @@ class MogoOCHTaxi implements IMogoOCH { @Override public void init( Context context ) { Logger.d( TAG, "init" ); + MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.VR_MODE,this); + MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.TOP_VIEW,this); + } + + private void showFragment() { + if (ochTaxiFragment == null) { + Logger.d(TAG, "准备add fragment======"); + ochTaxiFragment = new OCHTaxiFragment(); + mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, ochTaxiFragment).commit(); + return; + } + Logger.d(TAG, "准备show fragment"); + mActivity.getSupportFragmentManager().beginTransaction().show(ochTaxiFragment).commit(); + } + + private void hideFragment(){ + if (ochTaxiFragment != null){ + mActivity.getSupportFragmentManager().beginTransaction().hide(ochTaxiFragment).commit(); + } + } + + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + if (descriptor == StatusDescriptor.VR_MODE){ + if (isTrue){ + showFragment(); + MogoOCHTaxiModel.getInstance().init( mActivity.getApplicationContext() ); + }else { + hideFragment(); + } + } } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 0588c710ed..c044046c82 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -5,12 +5,12 @@ import android.content.Intent; import android.location.Location; import android.net.ConnectivityManager; import android.text.TextUtils; +import android.util.Log; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.SubscribeImpl; -import com.mogo.commons.network.Utils; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; @@ -93,16 +93,18 @@ class MogoOCHTaxiModel { */ private boolean mIsArriveAtEndStation = false; - /** - * 乘客已到达上车站点 - */ - private boolean mIsUserArriveAtStartStation = false; +// /** +// * 乘客已到达上车站点 +// */ +// private boolean mIsUserArriveAtStartStation = false; /** * 查询订单信息重试次数 */ private int mRetryCounter = 0; + private int mOCHRHCarstatus = -1; + private Object readResolve() { // 阻止反序列化,必须实现 Serializable 接口 return sInstance; @@ -111,6 +113,9 @@ class MogoOCHTaxiModel { public void init( Context context ) { mContext = context.getApplicationContext(); + if (mOCHTaxiServiceApi == null){ + mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create(OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN); + } MogoApisHandler.getInstance() .getApis() .getSocketManagerApi( context ) @@ -127,7 +132,47 @@ class MogoOCHTaxiModel { .getApis() .getIntentManagerApi() .registerIntentListener( ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener ); - if ( NetworkUtils.isConnected( mContext ) ) { +// if ( NetworkUtils.isConnected( mContext ) ) { +// restoreOrderInfo(); +// } +// if ( NetworkUtils.isConnected( mContext ) ) { +// querryCarStatus(); +// } + } + + public void querryCarStatus() { + mOCHTaxiServiceApi.queryCarStatus( new OCHCarStatus (MoGoAiCloudClientConfig.getInstance().getSn(),0)) + .subscribeOn(Schedulers.io()) + .observeOn( AndroidSchedulers.mainThread() ) + .subscribe( new SubscribeImpl< OCHCarStatusResponse >(RequestOptions.create(mContext)) { + @Override + public void onSuccess(OCHCarStatusResponse data) { + super.onSuccess(data); + Logger.e(TAG,"querryCarStatus:"+data.data.status); + mOCHRHCarstatus = data.data.status; + //更新view + OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1); + //刷新数据 + updateData(mOCHRHCarstatus); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.e(TAG,"querryCarStatus:"+e.getMessage()); + } + + @Override + public void onError(String message, int code) { + super.onError(message,code); + Logger.e(TAG,"querryCarStatus:"+message); + } + }); + } + + public void updateData(int status){ + if (status == 1){ + //查询订单 restoreOrderInfo(); } } @@ -141,23 +186,36 @@ class MogoOCHTaxiModel { if ( mCurrentOCHOrder == null ) { // 订单恢复 String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); + Logger.d(TAG,"restoreOrderInfo:"+orderInfo); if ( !TextUtils.isEmpty( orderInfo ) ) { mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); - if ( mCurrentOCHOrder == null ) { - // 解决本地没有缓存订单号的问题 - query2RestoreOrderStatus( null ); - } else { - query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); - } - } else { - // 解决本地没有缓存订单号的问题 - query2RestoreOrderStatus( null ); } - } else { - query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); } + query2RestoreOrderStatus(mCurrentOCHOrder == null ? null : mCurrentOCHOrder.orderNo); } +// private void restoreOrderInfo_() { +// Logger.d( TAG, "重新查询订单状态" ); +// mRetryCounter = 0; +// if ( mCurrentOCHOrder == null ) { +// // 订单恢复 +// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); +// if ( !TextUtils.isEmpty( orderInfo ) ) { +// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); +// if ( mCurrentOCHOrder == null ) { +// // 解决本地没有缓存订单号的问题 +// query2RestoreOrderStatus( null ); +// } else { +// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); +// } +// } else { +// // 解决本地没有缓存订单号的问题 +// query2RestoreOrderStatus( null ); +// } +// } else { +// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); +// } +// } /** * 查询订单状态,来恢复旧订单(因crash导致应用重启、断网没收到推送等)状态 *

@@ -171,62 +229,65 @@ class MogoOCHTaxiModel { * @param orderNo */ private void query2RestoreOrderStatus( String orderNo ) { + Logger.e(TAG,"query2RestoreOrderStatus:"+orderNo); queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() { @Override public void onSuccess( OCHTaxiOrderResponse2 data ) { - if ( data == null || data.result == null ) { + + if ( data == null || data.data == null) { Logger.d( TAG, "订单已取消或已完成" ); clearCurrentOCHOrder(); - OCHTaxiUiController.getInstance().removeFragment(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.None.getCode()); return; } convertCurrentOrder( data ); - OCHOrderStatus status = OCHOrderStatus.valueOf( data.result.orderDispatchType ); + OCHOrderStatus status = OCHOrderStatus.valueOf( data.data.orderDispatchType ); + OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType); switch ( status ) { case Completed: TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_completed ) ); clearCurrentOCHOrder(); - OCHTaxiUiController.getInstance().removeFragment(); +// OCHTaxiUiController.getInstance().removeFragment(); break; case Cancel: TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_cancel ) ); clearCurrentOCHOrder(); - OCHTaxiUiController.getInstance().removeFragment(); +// OCHTaxiUiController.getInstance().removeFragment(); break; case ArriveAtEndStation: mIsArriveAtEndStation = true; mIsArriveAtStartStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = false; +// OCHTaxiUiController.getInstance().addFragment(); break; case ArriveAtStartStation: mIsArriveAtStartStation = true; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = false; +// OCHTaxiUiController.getInstance().addFragment(); break; case UserArriveAtStartStation: mIsArriveAtStartStation = true; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = true; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = true; +// OCHTaxiUiController.getInstance().addFragment(); break; case OnTheWayToEndStation: mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = true; - mIsUserArriveAtStartStation = false; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = false; +// OCHTaxiUiController.getInstance().addFragment(); break; case OnTheWayToStartStation: default: mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; +// mIsUserArriveAtStartStation = false; mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); break; } @@ -256,24 +317,24 @@ class MogoOCHTaxiModel { if ( mCurrentOCHOrder == null ) { mCurrentOCHOrder = new OCHTaxiOrderResponse(); } - mCurrentOCHOrder.orderNo = data.result.orderNo; - mCurrentOCHOrder.orderDispatchType = data.result.orderDispatchType; - mCurrentOCHOrder.endStation = data.result.endStation; - mCurrentOCHOrder.startStation = data.result.startStation; - mCurrentOCHOrder.travelDistance = data.result.travelDistance; - mCurrentOCHOrder.orderType = data.result.orderType; + mCurrentOCHOrder.orderNo = data.data.orderNo; + mCurrentOCHOrder.orderDispatchType = data.data.orderDispatchType; + mCurrentOCHOrder.endStation = data.data.endStation; + mCurrentOCHOrder.startStation = data.data.startStation; + mCurrentOCHOrder.travelDistance = data.data.travelDistance; + mCurrentOCHOrder.orderType = data.data.orderType; mCurrentOCHOrder.drivingRoutes = new ArrayList<>(); OCHTaxiOrderResponse.OCHTaxiStation startStation = new OCHTaxiOrderResponse.OCHTaxiStation(); - startStation.lon = data.result.startStationCoordinate.get( 0 ); - startStation.lat = data.result.startStationCoordinate.get( 1 ); - startStation.siteId = data.result.startStationId; - startStation.siteName = data.result.startStation; + startStation.lon = data.data.startStationCoordinate.get( 0 ); + startStation.lat = data.data.startStationCoordinate.get( 1 ); + startStation.siteId = data.data.startStationId; + startStation.siteName = data.data.startStation; mCurrentOCHOrder.drivingRoutes.add( startStation ); OCHTaxiOrderResponse.OCHTaxiStation endStation = new OCHTaxiOrderResponse.OCHTaxiStation(); - endStation.lon = data.result.endStationCoordinate.get( 0 ); - endStation.lat = data.result.endStationCoordinate.get( 1 ); - endStation.siteId = data.result.endStationId; - endStation.siteName = data.result.endStation; + endStation.lon = data.data.endStationCoordinate.get( 0 ); + endStation.lat = data.data.endStationCoordinate.get( 1 ); + endStation.siteId = data.data.endStationId; + endStation.siteName = data.data.endStation; mCurrentOCHOrder.drivingRoutes.add( endStation ); cacheOrderInfo2Native( mCurrentOCHOrder ); @@ -288,12 +349,55 @@ class MogoOCHTaxiModel { Logger.d( TAG, "onIntentReceived = %s", intentStr ); if ( ConnectivityManager.CONNECTIVITY_ACTION.equals( intentStr ) ) { if ( NetworkUtils.isConnected( mContext ) ) { - restoreOrderInfo(); +// restoreOrderInfo(); + querryCarStatus(); } } } }; + public void changedOperationStatus() { + if ( mOCHRHCarstatus == -1){ + querryCarStatus(); + return; + } + + if (checkCurrentOCHOrder()){ + TipToast.shortTip( "订单未完成,无法下线收车" ); + return; + } + + int status = mOCHRHCarstatus == 1 ? 0 : 1; + mOCHTaxiServiceApi.updateCarStatus(new OCHCarStatus(MoGoAiCloudClientConfig.getInstance().getSn(),status)) + .subscribeOn(Schedulers.io()) + .observeOn( AndroidSchedulers.mainThread() ) + .subscribe( new SubscribeImpl< OCHCarStatusResponse >(RequestOptions.create(mContext)) { + @Override + public void onSuccess(OCHCarStatusResponse o) { + super.onSuccess(o); + Logger.d(TAG,"OCHCarStatusResponse:"+o.data.status); + mOCHRHCarstatus = o.data.status; +// mIsWork = mOCHRHCarstatus.status == 1; +// mOCHRHCarstatus.status = status; + OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus == 1); + updateData(mOCHRHCarstatus); + Logger.d(TAG,"changeCarStatus:"+status); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG,"changeCarStatus:"+e.getMessage()); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + Logger.d(TAG,"changeCarStatus:"+message); + } + }); + } + /** * 自车定位 */ @@ -301,12 +405,12 @@ class MogoOCHTaxiModel { @Override public void onCarLocationChanged2( Location location ) { - Logger.d( TAG, "定位已判断是否达到上车站点: 起点(%s, %s), 当前位置(%s, %s)", - mCurrentOCHOrder.drivingRoutes.get( 0 ).lon, - mCurrentOCHOrder.drivingRoutes.get( 0 ).lat, - location.getLongitude(), - location.getLatitude() - ); +// Logger.d( TAG, "定位已判断是否达到上车站点: 起点(%s, %s), 当前位置(%s, %s)", +// mCurrentOCHOrder.drivingRoutes.get( 0 ).lon, +// mCurrentOCHOrder.drivingRoutes.get( 0 ).lat, +// location.getLongitude(), +// location.getLatitude() +// ); onLocationChanged( location ); } @@ -331,9 +435,9 @@ class MogoOCHTaxiModel { if ( mIsArriveAtStartStation ) { return; } - if ( mIsUserArriveAtStartStation ) { - return; - } +// if ( mIsUserArriveAtStartStation ) { +// return; +// } judgeStartStation( location ); } @@ -392,14 +496,14 @@ class MogoOCHTaxiModel { return mIsArriveAtEndStation; } - /** - * 用户是否达到上车站点 - * - * @return - */ - public boolean isUserArriveAtStartStation() { - return mIsUserArriveAtStartStation; - } +// /** +// * 用户是否达到上车站点 +// * +// * @return +// */ +// public boolean isUserArriveAtStartStation() { +// return mIsUserArriveAtStartStation; +// } /** * 设置去往终点状态 @@ -446,7 +550,8 @@ class MogoOCHTaxiModel { if ( !isArriveAtStartStation() ) { registerCarLocationListener(); } - OCHTaxiUiController.getInstance().addFragment(); +// OCHTaxiUiController.getInstance().addFragment(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(mCurrentOCHOrder.orderDispatchType); } } @@ -510,7 +615,7 @@ class MogoOCHTaxiModel { break; case UserArriveAtStartStation: mIsArriveAtStartStation = true; - mIsUserArriveAtStartStation = true; +// mIsUserArriveAtStartStation = true; OCHTaxiUiController.getInstance().onUserArriveAtStartStation(); break; default: @@ -576,11 +681,13 @@ class MogoOCHTaxiModel { if ( callback != null ) { callback.onError(); } + Logger.e(TAG,"updateOCHOrderStatus:"+e.getMessage()); } @Override public void onError( String message, int code ) { super.onError( message, code ); + Logger.e(TAG,"updateOCHOrderStatus:"+message); if ( callback != null ) { callback.onFail(); } @@ -620,6 +727,7 @@ class MogoOCHTaxiModel { @Override public void onError( String message, int code ) { super.onError( message, code ); + Logger.e("MogoOCHTaxi","queryOCHOrderStatus:"+message); if ( callback != null ) { callback.onFail(); } @@ -635,7 +743,7 @@ class MogoOCHTaxiModel { mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; +// mIsUserArriveAtStartStation = false; SharedPrefsMgr.getInstance( mContext ).remove( SP_KEY_OCH_TAXI_ORDER ); } @@ -646,8 +754,7 @@ class MogoOCHTaxiModel { */ public boolean checkCurrentOCHOrder() { if ( mCurrentOCHOrder != null - && mCurrentOCHOrder.drivingRoutes != null - && mCurrentOCHOrder.drivingRoutes.size() >= 2 ) { + && mCurrentOCHOrder.drivingRoutes != null) { return true; } return false; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java new file mode 100644 index 0000000000..761fa03877 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java @@ -0,0 +1,20 @@ +package com.mogo.och.taxi; + +import com.mogo.commons.data.BaseData; + +public +/** + * + * 修改/查询网约车-出租车订单状态的数据结构 + */ +class OCHCarStatus extends BaseData { + + public String sn;// 不排除本地没有缓存订单号的情况 + public int status; //0 收车 1出车 + + public OCHCarStatus(String sn, + int status ) { + this.sn = sn; + this.status = status; + } +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java new file mode 100644 index 0000000000..62c76e6233 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java @@ -0,0 +1,29 @@ +package com.mogo.och.taxi; + +import com.mogo.commons.data.BaseData; + +public +/** + * + * 修改/查询网约车-出租车订单状态的数据结构 + */ +class OCHCarStatusResponse extends BaseData { + + public String sn;// 不排除本地没有缓存订单号的情况 + public int status; //0 收车 1出车 + public Result data; + + public OCHCarStatusResponse(String sn, + int status ) { + this.sn = sn; + this.status = status; + } + public static class Result{ + public int id; + public String sn; + public String areaCode; + public String plateNumber; + public int status; +// String remark; + } +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java index 16d92726fb..d01f18014b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java @@ -13,7 +13,7 @@ public */ class OCHTaxiOrderResponse2 extends BaseData { - public Result result; + public Result data; public static class Result { public String _id; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java index b9ef5421cf..d1fed854ac 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java @@ -23,7 +23,7 @@ interface OCHTaxiServiceApi { * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/updateOCHOrder/v1" ) + @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/updateOCHOrderState/v1" ) Observable< BaseData > updateOrderStatus( @Body OCHTaxiOrderStatus status ); /** @@ -32,6 +32,20 @@ interface OCHTaxiServiceApi { * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/queryOCHOrderDetails/v1" ) + @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/queryOrderForCar/v1" ) Observable< OCHTaxiOrderResponse2 > queryOrder( @Body OCHTaxiOrderStatus status ); + /** + * 查询网约车状态 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/yycp-onlinecar-hailing/onlineCarHailing/order/queryTaxiCarStatus/v1") + Observable queryCarStatus(@Body OCHCarStatus sn ); + + + /** + * 更新网约车状态 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/yycp-onlinecar-hailing/onlineCarHailing/order/updateTaxiCarStatus/v1") + Observable updateCarStatus(@Body OCHCarStatus status ); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index a8861ae85e..ad814460dd 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -8,12 +8,14 @@ import android.widget.TextView; import androidx.annotation.NonNull; import com.mogo.cloud.commons.utils.CoordinateUtils; +import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.BaseOchFragment; import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; +import com.mogo.och.taxi.IOperationChangedListener; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.och.taxi.OCHOrderStatus; import com.mogo.och.taxi.OCHOrderStatusCallback; @@ -35,6 +37,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i IMogoStatusChangedListener, IMogoOCHTaxiArriveCallback, IMogoADASAutoPilotStatusChangedListener, + IOperationChangedListener, IMogoCarLocationChangedListener2 { public static final String TAG = "OCHTaxiFragment"; @@ -52,7 +55,6 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i private TextView mStartStationName; private TextView mEndStationName; private TextView mDistance; - @Override public int getStationPanelViewId() { return R.layout.module_och_taxi_panel; @@ -62,6 +64,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i public void restartAutopilot() { // 在自动驾驶中,才会有重新开启自动驾驶的操作 if ( MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { + Logger.d( TAG, "restartAutopilot" ); MogoOCHTaxiModel.getInstance().startAutoPilot(); } } @@ -74,9 +77,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i mEndStationName = findViewById( R.id.module_och_taxi_order_end_station ); mDistance = findViewById( R.id.module_och_taxi_order_distance ); - showPanel(); +// showPanel(); + hidPanel(); initListeners(); - updateOrderStatus(); + // TODO: 2021/6/18 调整接口刷新时间 +// updateOrderStatus(); if ( MogoApisHandler.getInstance() .getApis() .getStatusManagerApi() @@ -85,8 +90,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } else { flatMode(); } - // 出租车不需要开启按钮 - tvOperationStatus.setVisibility(View.GONE); + + tvOperationStatus.setVisibility(View.VISIBLE); } private void initListeners() { @@ -96,6 +101,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( this ); OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( this ); + OCHTaxiUiController.getInstance().setOperationChangeListener(this); MogoApisHandler.getInstance() .getApis() .getRegisterCenterApi() @@ -117,6 +123,12 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } } + @Override + protected void onChangeOperationStatus() { + super.onChangeOperationStatus(); + MogoOCHTaxiModel.getInstance().changedOperationStatus(); + } + private void vrMode() { if ( mRootView != null ) { mRootView.setVisibility( @@ -151,15 +163,17 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() ) { Logger.d( TAG, "已经达到起点" ); mOrderStatus.setText( R.string.module_och_taxi_waiting ); - if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) { - Logger.d( TAG, "乘客已上车" ); - slidePanelView.setVisibility( View.VISIBLE ); -// if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) { -// } else { -// slidePanelView.setVisibility( View.GONE ); -// } - slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); - } +// if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) { +// Logger.d( TAG, "乘客已上车" ); +// slidePanelView.setVisibility( View.VISIBLE ); +//// if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) { +//// } else { +//// slidePanelView.setVisibility( View.GONE ); +//// } +// slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); +// } + slidePanelView.setVisibility( View.VISIBLE ); + slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); } else if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { Logger.d( TAG, "去往上车站点" ); slidePanelView.setVisibility( View.GONE ); @@ -247,6 +261,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null ); OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( null ); + OCHTaxiUiController.getInstance().setOperationChangeListener(null); MogoApisHandler.getInstance() .getApis() .getRegisterCenterApi() @@ -269,7 +284,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态成功" ); MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); MogoOCHTaxiModel.getInstance().cancelAutopilot(); - OCHTaxiUiController.getInstance().removeFragment(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(0); } @Override @@ -284,8 +299,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } ); return; // 乘客已确认到达起点,前往下一站并开启自动驾驶 - } else if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() - && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { + } else if ( !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { +// MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() && MogoOCHTaxiModel.getInstance().startAutoPilot(); } } @@ -367,4 +382,33 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } mLocation = location; } + + @Override + public void onOperationChanged(boolean launch) { + Logger.e(TAG,"onOperationChanged:"+ launch); + isOperationStatus = launch; + if ( launch ) { + tvOperationStatus.setText( "收车" ); +// showSlidePanle("滑动出发"); +// showPanel(); + } else { + AIAssist.getInstance(getContext()).speakTTSVoice("已收车"); + tvOperationStatus.setText("出车"); +// hideSlidePanel(); +// hidPanel(); + } +// changeLayoutViewStatus(launch); + } + + private void changeLayoutViewStatus(boolean launch) { + getPanelView().setVisibility(launch ? View.VISIBLE : View.INVISIBLE); + } + + @Override + public void onOrderStatusChanged(int status) { + getActivity().runOnUiThread(() -> { + getPanelView().setVisibility(status != 0 ? View.VISIBLE : View.INVISIBLE); + updateOrderStatus(); + }); + } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java index 3cec64867f..a7d025469a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java @@ -10,6 +10,7 @@ import androidx.fragment.app.FragmentManager; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; +import com.mogo.och.taxi.IOperationChangedListener; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -31,6 +32,7 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi private IMogoOCHTaxiArriveCallback mOCHTaxiArriveCallback; private IMogoADASAutoPilotStatusChangedListener mAutoPilotStatusChangedListener; + private IOperationChangedListener mOperationChangedLisnter; private OCHTaxiUiController() { } @@ -101,6 +103,10 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi this.mAutoPilotStatusChangedListener = autoPilotStatusChangedListener; } + public void setOperationChangeListener(IOperationChangedListener listener){ + this.mOperationChangedLisnter = listener; + } + @Override public void onTheWay2StartStation() { runOnUIThread( () -> { @@ -167,6 +173,8 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi } + + /** * 进入鹰眼模式,设置手势缩放地图失效 */ @@ -178,4 +186,19 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi .getMapUIController() .openVrMode( false ); } + + public void onOperationChanged(boolean b) { + runOnUIThread( () -> { + if (mOperationChangedLisnter != null){ + mOperationChangedLisnter.onOperationChanged(b); + } + } ); + } + public void onOrderStatusChanged(int status){ + runOnUIThread( () -> { + if (mOperationChangedLisnter != null){ + mOperationChangedLisnter.onOrderStatusChanged(status); + } + } ); + } } diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml index 888fec075e..a9ccf96c3e 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml @@ -2,6 +2,7 @@ @@ -72,6 +73,7 @@ android:layout_height="wrap_content" android:text="上车" android:textColor="@color/module_och_taxi_order_start_station_anchor_textColor" + android:layout_marginRight="@dimen/module_och_taxi_order_text_marginRight" android:textSize="@dimen/module_och_taxi_order_start_station_anchor_textSize" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="@+id/module_och_taxi_order_start_station" @@ -116,6 +118,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下车" + android:layout_marginRight="@dimen/module_och_taxi_order_text_marginRight" android:textColor="@color/module_och_taxi_order_end_station_anchor_textColor" android:textSize="@dimen/module_och_taxi_order_end_station_anchor_textSize" android:textStyle="bold" diff --git a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml index 95796c9ef6..7c13d7dcbd 100644 --- a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -5,7 +5,7 @@ 15px 25px 25px - 20px + 32px 1px 20px 20px @@ -24,4 +24,5 @@ 32px 36px 17px + 31.5px \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/values/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values/dimens.xml index 954782677b..ff8e1c5530 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/dimens.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/dimens.xml @@ -24,4 +24,5 @@ 20px 24px 17px + 22.5px \ No newline at end of file diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java index ee4785e198..fd2c4ddd65 100644 --- a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java +++ b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java @@ -57,7 +57,7 @@ public class SlidePanelView extends View { private final Paint blockPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private static int textSize = 40; + private static int textSize = 67; private static int BLOCK_START_X = 15; private static int BLOCK_START_Y = 15; private static int NORMAL_TEXT_MARGIN_LEFT = 40; diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml new file mode 100644 index 0000000000..97ac9039cc --- /dev/null +++ b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png index ed7b293b90..c7655b477c 100644 Binary files a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png and b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png differ diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png new file mode 100644 index 0000000000..927296d690 Binary files /dev/null and b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png differ diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml index b5596fad13..97ac9039cc 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml @@ -2,13 +2,13 @@ - + - + diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml index 914743547f..753d85e3ec 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml @@ -1,10 +1,14 @@ - + android:shape="oval"> + - + android:angle="315" + /> + \ No newline at end of file diff --git a/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml b/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml index 204c5fc692..4a08f10745 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml @@ -2,7 +2,7 @@ - + @@ -12,7 +12,7 @@ android:right="3px" android:top="3px"> - + diff --git a/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml b/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml index 66ae400e43..c369dc9da8 100644 --- a/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml +++ b/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml @@ -20,7 +20,6 @@ android:text="自动驾驶" android:textColor="@color/module_mogo_och_autopilot_text_color_normal" android:textSize="@dimen/module_mogo_och_autopilot_status_text_size" - android:textStyle="bold" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" tools:visibility="visible" /> @@ -50,7 +49,7 @@ android:text="出车" android:textAlignment="center" android:textColor="@color/module_mogo_och_autopilot_text_color_selector" - android:textSize="@dimen/module_mogo_och_autopilot_status_text_size" + android:textSize="@dimen/module_mogo_och_operation_status_text_size" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" /> diff --git a/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml index 7343943aa4..44445885c1 100644 --- a/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -21,17 +21,19 @@ 460px 140px - 140px - 140px + 120px + 120px - 92px + 83px 30px 466px 414px - 44px + + 46px + 36px 13px 12px 350px diff --git a/config.gradle b/config.gradle index 4530ec1b0f..8b28c2b2ed 100644 --- a/config.gradle +++ b/config.gradle @@ -171,7 +171,9 @@ ext { // obu sdk obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", - mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.3', +// mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.3', + mogoobu : 'com.zhidao.support.obu:mogoobu:1.0.0.2', + // 左侧面板 moduleleftpanel : "com.mogo.module:module-left-panel:${MOGO_MODULE_LEFT_PANEL_VERSION}", // 左侧面板空实现 diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java index ab0aa03504..d673a53dbe 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java @@ -43,7 +43,7 @@ public abstract class SubscribeImpl< T extends BaseData > implements Observer< T @Override public void onNext( T o ) { if ( o != null ) { - if ( o.code != 0 ) { + if ( o.code != 0 && o.code!= 200 ) { onError( o.msg, o.code ); } else { onSuccess( o ); diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java index aaa6e699ee..528a24720a 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java @@ -27,14 +27,15 @@ import java.io.OutputStreamWriter; */ public class FileUtils { public static boolean createFileDir(String fileDir) { - if (TextUtils.isEmpty(fileDir)) { return false; } - try { File dir = new File(fileDir); - return dir.exists() || dir.mkdir(); + if(!dir.exists()){ + return dir.mkdirs(); + } + return dir.exists(); } catch (Exception e) { return false; } diff --git a/gradle.properties b/gradle.properties index 995425e5dc..397e869bd5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -187,4 +187,4 @@ applicationId=com.mogo.launcer applicationName=IntelligentPilot versionCode=80007 versionName=8.0.7 -MAP_SDK_VERSION=1.0.0-vr-8.5.49 \ No newline at end of file +MAP_SDK_VERSION=1.0.0-vr-8.5.51 \ No newline at end of file diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index 07a5a29fe5..fa50c2e6bf 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -353,6 +353,9 @@ public class AMapViewWrapper implements IMogoMapView, setUIMode(ui); break; case Type_VR: + if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { + mMapView.getMapAutoViewHelper().setScaleVRMode(true); + } mMapView.getMapAutoViewHelper().setMapStyle(MapAutoApi.MAP_STYLE_VR); return; case Type_Light: diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java index 013ab37442..6b3816382f 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java @@ -100,7 +100,8 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder { .setCoordinateType( MapParams.COORDINATETYPE_GCJ02 ) .setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D ) .setZoom( 20 ) - .setPointToCenter( 0.734375f, 0.5f ) +// .setPointToCenter( 0.734375f, 0.5f ) + .setPointToCenter( 0.5f, 0.5f ) //todo 2D模式下需要注意ADAS部分遮挡 .setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() ); MapAutoView mapAutoView = new MapAutoView(context); IMogoMapView mapView = new AMapViewWrapper(mapAutoView); diff --git a/modules/mogo-module-adas/build.gradle b/modules/mogo-module-adas/build.gradle index cea9d8ac5c..dd802e716d 100644 --- a/modules/mogo-module-adas/build.gradle +++ b/modules/mogo-module-adas/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter - + implementation rootProject.ext.dependencies.rxandroid annotationProcessor rootProject.ext.dependencies.aroutercompiler diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java new file mode 100644 index 0000000000..8701beb42c --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java @@ -0,0 +1,51 @@ +package com.mogo.module.adas; + +import android.content.Context; + +import com.mogo.module.adas.entity.AdasAutoPilotLocReceiverBean; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.service.connection.IMogoOnMessageListener; + +public class AdasAutoPilotManager implements IMogoOnMessageListener { + + private static volatile AdasAutoPilotManager instance; + private static final byte[] obj = new byte[0]; + private static final int MSG_SOCKET_TYPE = 1; + private Context mContext; + + private AdasAutoPilotManager() { + + } + + public static AdasAutoPilotManager getInstance() { + if (instance == null) { + synchronized (obj) { + if (instance == null) { + instance = new AdasAutoPilotManager(); + } + } + } + return instance; + } + + public void initSocket(Context context) { + this.mContext = context; + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi(mContext).registerOnMessageListener(MSG_SOCKET_TYPE, this); + } + + @Override + public Class target() { + return AdasAutoPilotLocReceiverBean.class; + } + + @Override + public void onMsgReceived(AdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean) { + if (adasAutoPilotLocReceiverBean != null + && adasAutoPilotLocReceiverBean.getLat() != 0.0 + && adasAutoPilotLocReceiverBean.getLon() != 0.0) { + + } + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java new file mode 100644 index 0000000000..3bff73bac8 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java @@ -0,0 +1,11 @@ +package com.mogo.module.adas; + +/** + * Created by XuYong on 2021/5/28 15:24 + */ +public class AdasConstant { + public static final String HOST_DEV = "http://dzt-test.zhidaohulian.com"; + public static final String HOST_TEST = "http://dzt-test.zhidaohulian.com"; + public static final String HOST_DEMO = "http://dzt-show.zhidaohulian.com"; + public static final String HOST_PRODUCT = "https://dzt.zhidaohulian.com"; +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java index c8b768b081..eeabdf5f0b 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java @@ -1,7 +1,17 @@ package com.mogo.module.adas; +import android.os.RemoteException; + 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.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; @@ -18,6 +28,18 @@ import com.zhidao.support.adas.high.bean.WarnMessageInfo; import com.zhidao.support.adas.high.common.MsgActionType; import java.util.ArrayList; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Flowable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import static com.mogo.commons.context.ContextHolderUtil.getContext; /** * Created by XuYong on 2021/4/25 14:43 @@ -25,14 +47,22 @@ import java.util.ArrayList; public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener { private final String TAG = "AdasEventManager"; - private final Gson gson; - private final ArrayList iAdasEventListeners = new ArrayList<>(); private final ArrayList iAdasStatusListeners = new ArrayList<>(); + private IAdasApiService mAdasApiService; + private Disposable uploadAutopilotStatus; + //自动驾驶状态 + private int mCurrentAutopilotStatus = -1; + //自动驾驶车速度 + private float mCurrentAutopilotSpeed = 0; + private Disposable mdDisposable; + //自动驾驶状态 + private AutopilotStatus.ValuesBean mAutopilotStatus = null; public AdasEventManager() { gson = GsonUtil.getGson(); + mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create( IAdasApiService.class, AdasConstant.HOST_PRODUCT ); } public void addEventListener(AdasDataListener listener) { @@ -65,6 +95,11 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL } } + public void removeStatusListener() { + Logger.d(TAG,"注销adas状态事件监听"); + iAdasStatusListeners.clear(); + } + @Override public void onWarnMessage(WarnMessageInfo warnMessageInfo) { Logger.d(TAG,"onWarnMessage " + warnMessageInfo); @@ -145,7 +180,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues(); AutopilotStatus.ValuesBean mAutopilotStatus; - if (autopilotStatusValues != null) { AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel(); adasAIDLAutopilotStateModel.setReason(autopilotStatusValues.getReason()); @@ -154,14 +188,15 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL float speed = autopilotStatusValues.getSpeed(); adasAIDLAutopilotStateModel.setState(state); adasAIDLAutopilotStateModel.setSpeed(speed); - + mCurrentAutopilotStatus = state; + mCurrentAutopilotSpeed = speed; for (AdasDataListener listener:iAdasEventListeners) { if (listener != null) { listener.notifyAutopilotState(adasAIDLAutopilotStateModel); } } - } + } } @Override @@ -174,8 +209,12 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL if (endLatLon != null) { AdasAIDLAutopilotArriveModel adasAIDLAutopilotArriveModel = new AdasAIDLAutopilotArriveModel(); adasAIDLAutopilotArriveModel.setCarType(result.getCarType()); - adasAIDLAutopilotArriveModel.setLat(endLatLon.getLat()); - adasAIDLAutopilotArriveModel.setLon(endLatLon.getLon()); + double lon = endLatLon.getLon(); + double lat = endLatLon.getLat(); + adasAIDLAutopilotArriveModel.setLat(lat); + adasAIDLAutopilotArriveModel.setLon(lon); + Logger.d(TAG,"autopilotArrive reportSite"); + reportSite(lon, lat); for (AdasDataListener listener:iAdasEventListeners) { if (listener != null) { listener.autopilotArrive(adasAIDLAutopilotArriveModel); @@ -188,7 +227,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onAutopilotRoute(String route) { - + //todo } @Override @@ -197,6 +236,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL for (AdasStatusListener listener :iAdasStatusListeners) { listener.onServiceConnected(); } + updateDriveStatusTask(); } @Override @@ -206,4 +246,80 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL listener.onServiceDisconnected(); } } + + public void updateDriveStatusTask() { + Logger.d(TAG,"updateDriveStatusTask"); + mdDisposable = Flowable.interval(0,5, TimeUnit.SECONDS) + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(@NonNull Long aLong) throws Exception { + updateDriveStatus(); + } + }); + } + + 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(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"); + } + }); + } + + 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(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"); + } + }); + } + + public AdasAIDLAutopilotStateModel autopilotStateCall() { + AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel(); + if (mAutopilotStatus != null) { + adasAIDLAutopilotStateModel.setSpeed(mAutopilotStatus.getSpeed()); + adasAIDLAutopilotStateModel.setState(mAutopilotStatus.getState()); + adasAIDLAutopilotStateModel.setReason(mAutopilotStatus.getReason()); + } + return adasAIDLAutopilotStateModel; + } + + } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java index 4db28d6873..5288467af5 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java @@ -6,6 +6,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.service.MogoServicePaths; import com.mogo.utils.logger.Logger; +import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; import com.zhidao.support.adas.high.AdasManager; @@ -24,9 +25,9 @@ public class AdasProvider implements IProvider { @Override public void init(Context context) { Logger.d(TAG, "初始化 AdasProvider 模块"); - adasEventManager = new AdasEventManager(); initAdas(context, adasEventManager); + initAutoPilotBusiness(context); } private void initAdas(Context context, AdasEventManager adasEventManager) { @@ -35,6 +36,10 @@ public class AdasProvider implements IProvider { AdasManager.getInstance().setOnAdasConnectStatusListener(adasEventManager); } + private void initAutoPilotBusiness(Context context) { + AdasAutoPilotManager.getInstance().initSocket(context); + } + public void addAdasEventListener(AdasDataListener listener) { adasEventManager.addEventListener(listener); } @@ -51,8 +56,46 @@ public class AdasProvider implements IProvider { adasEventManager.removeStatusListener(listener); } + public void removeAdasStatusListener() { + adasEventManager.removeStatusListener(); + } + public void sendWsMessage(String msg) { AdasManager.getInstance().aiCloudToAdasData(msg); } + public void cancelPilot() { + if (AdasManager.getInstance().isSocketConnect()) { + AdasManager.getInstance().controlAutopilotCarHead(); + } + } + + public void hideAdas() { + + } + + public void showAdas() { + + } + + public void killAdas() { + + } + + //原ADAS sdk中为空实现 + public void settingCarModelListInfo(String msg) { + + } + + //原ADAS sdk中为空实现 + public void setSettingStatus(boolean show) { + } + + //原ADAS sdk中为空实现 + public void setUseAlgorithm(boolean open) { + } + + public AdasAIDLAutopilotStateModel autopilotStateCall() { + return adasEventManager.autopilotStateCall(); + } } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java new file mode 100644 index 0000000000..686ae78eb0 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java @@ -0,0 +1,41 @@ +package com.mogo.module.adas; + +/** + * Created by XuYong on 2021/5/28 16:12 + */ +public class AutonomousDriveStatusBean { + + private String sn; + private int status; + private float vehicleSpeed; + + public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) { + this.sn = sn; + this.status = status; + this.vehicleSpeed = vehicleSpeed; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public float getVehicleSpeed() { + return vehicleSpeed; + } + + public void setVehicleSpeed(float vehicleSpeed) { + this.vehicleSpeed = vehicleSpeed; + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java new file mode 100644 index 0000000000..d1c58c2da9 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java @@ -0,0 +1,24 @@ +package com.mogo.module.adas; + +import com.mogo.commons.data.BaseData; + +import io.reactivex.Observable; +import okhttp3.RequestBody; +import retrofit2.http.Body; +import retrofit2.http.Headers; +import retrofit2.http.POST; + +/** + * Created by XuYong on 2021/5/28 14:24 + */ +public interface IAdasApiService { + + //上传自动驾驶状态接口 + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/yycp-carDataService/autonomousDrive/updateAutonomousDriveStatus" ) + Observable updateAutonomousDriveStatus(@Body RequestBody requestBody ); + //站点上报 + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/yycp-carDataService/autonomousDrive/reportSite" ) + Observable updateReportSite(@Body RequestBody requestBody ); +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java new file mode 100644 index 0000000000..76677e00ba --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java @@ -0,0 +1,40 @@ +package com.mogo.module.adas; + +/** + * Created by XuYong on 2021/5/31 16:24 + */ +public class ReportSiteBean { + private String sn; + private double lon; + private double lat; + + public ReportSiteBean(String sn, double lon, double lat) { + this.sn = sn; + this.lon = lon; + this.lat = lat; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AdasAutoPilotLocReceiverBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AdasAutoPilotLocReceiverBean.java new file mode 100644 index 0000000000..39686ee7d4 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AdasAutoPilotLocReceiverBean.java @@ -0,0 +1,69 @@ +package com.mogo.module.adas.entity; + +public class AdasAutoPilotLocReceiverBean { + + private int poiId; + private double lat; + private double lon; + private String poiAddress; + private long systemTime; + + public AdasAutoPilotLocReceiverBean(int poiId, double lat, double lon, String poiAddress, long systemTime) { + this.poiId = poiId; + this.lat = lat; + this.lon = lon; + this.poiAddress = poiAddress; + this.systemTime = systemTime; + } + + public int getPoiId() { + return poiId; + } + + public void setPoiId(int poiId) { + this.poiId = poiId; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public String getPoiAddress() { + return poiAddress; + } + + public void setPoiAddress(String poiAddress) { + this.poiAddress = poiAddress; + } + + public long getSystemTime() { + return systemTime; + } + + public void setSystemTime(long systemTime) { + this.systemTime = systemTime; + } + + @Override + public String toString() { + return "AdasAutoPilotLocReceiverBean{" + + "poiId=" + poiId + + ", lat=" + lat + + ", lon=" + lon + + ", poiAddress='" + poiAddress + '\'' + + ", systemTime=" + systemTime + + '}'; + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AutonomousDriveStatusBean.java new file mode 100644 index 0000000000..e4bba0a1e2 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AutonomousDriveStatusBean.java @@ -0,0 +1,41 @@ +package com.mogo.module.adas.entity; + +/** + * Created by XuYong on 2021/5/28 16:12 + */ +public class AutonomousDriveStatusBean { + + private String sn; + private int status; + private float vehicleSpeed; + + public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) { + this.sn = sn; + this.status = status; + this.vehicleSpeed = vehicleSpeed; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public float getVehicleSpeed() { + return vehicleSpeed; + } + + public void setVehicleSpeed(float vehicleSpeed) { + this.vehicleSpeed = vehicleSpeed; + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportSiteBean.java new file mode 100644 index 0000000000..ed0f765e2e --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportSiteBean.java @@ -0,0 +1,40 @@ +package com.mogo.module.adas.entity; + +/** + * Created by XuYong on 2021/5/31 16:24 + */ +public class ReportSiteBean { + private String sn; + private double lon; + private double lat; + + public ReportSiteBean(String sn, double lon, double lat) { + this.sn = sn; + this.lon = lon; + this.lat = lat; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/WarnMessageModel.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/WarnMessageModel.java similarity index 93% rename from modules/mogo-module-adas/src/main/java/com/mogo/module/adas/WarnMessageModel.java rename to modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/WarnMessageModel.java index 451c20d381..ae6a6d8cab 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/WarnMessageModel.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/WarnMessageModel.java @@ -1,4 +1,4 @@ -package com.mogo.module.adas; +package com.mogo.module.adas.entity; import com.zhidao.support.adas.high.bean.WarnMessageInfo; diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java new file mode 100644 index 0000000000..92f4c7ba86 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java @@ -0,0 +1,18 @@ +package com.mogo.module.adas.view; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.mogo.module.adas.R; +import com.mogo.module.common.dialog.BaseFloatDialog; + +public class DispatchRemindDialog extends BaseFloatDialog { + + public DispatchRemindDialog(@NonNull Context context) { + super(context); + setContentView(R.layout.dialog_adas_dispatch_remind); + } + + +} diff --git a/modules/mogo-module-adas/src/main/res/drawable/module_adas_bg_shape.xml b/modules/mogo-module-adas/src/main/res/drawable/module_adas_bg_shape.xml new file mode 100644 index 0000000000..49d2188a32 --- /dev/null +++ b/modules/mogo-module-adas/src/main/res/drawable/module_adas_bg_shape.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/modules/mogo-module-adas/src/main/res/layout/dialog_adas_dispatch_remind.xml b/modules/mogo-module-adas/src/main/res/layout/dialog_adas_dispatch_remind.xml new file mode 100644 index 0000000000..c044260fdb --- /dev/null +++ b/modules/mogo-module-adas/src/main/res/layout/dialog_adas_dispatch_remind.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/modules/mogo-module-adas/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-adas/src/main/res/values-xhdpi-2560x1440/dimens.xml new file mode 100644 index 0000000000..1ad05815bc --- /dev/null +++ b/modules/mogo-module-adas/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -0,0 +1,6 @@ + + + 950px + 540px + 32px + \ No newline at end of file diff --git a/modules/mogo-module-adas/src/main/res/values/colors.xml b/modules/mogo-module-adas/src/main/res/values/colors.xml new file mode 100644 index 0000000000..7ec5c235fd --- /dev/null +++ b/modules/mogo-module-adas/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #1F9BFE + #E63B4577 + #4D000000 + \ No newline at end of file diff --git a/modules/mogo-module-adas/src/main/res/values/dimens.xml b/modules/mogo-module-adas/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..1ad05815bc --- /dev/null +++ b/modules/mogo-module-adas/src/main/res/values/dimens.xml @@ -0,0 +1,6 @@ + + + 950px + 540px + 32px + \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d index 83c372fbb7..28ec706964 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d index f862aea7f9..b3ea96ca56 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d index b170c54e13..c0d184a796 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d index 1b6ba3b1bf..c4eb8adc11 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d index 0e87e83424..c6d86bd772 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d index 1203a0bdb6..5cce461ce7 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d index 4c3dc1d3ef..26aea8f852 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d index fe98148426..b6dc6a1143 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d differ diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d index 978407d06e..a193a302e5 100644 Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d differ diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index d5fe0f553b..6eb79ddf6a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -380,10 +380,6 @@ public class EntranceFragment extends MvpFragment + + + + + + android:bottomLeftRadius="130px" + android:bottomRightRadius="30px" + android:topLeftRadius="30px" + android:topRightRadius="130px" /> \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml index 79f55f813d..608a067881 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -5,7 +5,7 @@ 460px 320px 320px - 15px + 20px 110px 40px 279px diff --git a/modules/mogo-module-extensions/src/main/res/values/strings.xml b/modules/mogo-module-extensions/src/main/res/values/strings.xml index 9b05b089d1..2ffaf6481b 100644 --- a/modules/mogo-module-extensions/src/main/res/values/strings.xml +++ b/modules/mogo-module-extensions/src/main/res/values/strings.xml @@ -69,7 +69,7 @@ 提前看看出行路况,试试唤醒小智说,“中关村路况怎么样” - 默认视角 + 近距视角 远距视角 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 788ea3028c..7bb5d1e5a4 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -437,7 +437,9 @@ public class MogoServices implements IMogoMapListener, // isNeedUploadCoordinatesDurationInTime() ) { //todo 实时在线车辆需要注释,否则在2D模式下不能展示 // } //请求在线车辆数据,刷新地图在线车辆 - MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat ); + if (!mLastStatusIsVr){ + MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat ); + } Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount ); } @@ -938,6 +940,8 @@ public class MogoServices implements IMogoMapListener, @Override public void onMapModeChanged( EnumMapUI ui ) { + Log.i(TAG, "onMapModeChanged:" + ui); + clearAllData(); if ( ui == EnumMapUI.Type_VR ) { if ( !mLastStatusIsVr ) { MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java index fb0a9eeede..c8f89e29dc 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java @@ -8,7 +8,6 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.service.launchercard.LauncherCardRefresher; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.service.strategy.CarIconDisplayStrategy; -import com.mogo.module.service.vrmode.VrModeController; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.UiThreadHandler; @@ -90,7 +89,6 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener { MogoServices.getInstance().unregisterInternalUnWakeupWords(); MogoServices.getInstance().stopAutoRefreshStrategy(); } - VrModeController.getInstance().onMainPageResumeStatusChanged(resume); } public void onMainPageIsBackgroundStatusChanged(boolean isBackground) { @@ -163,7 +161,6 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener { } public void onVrModeChanged(boolean isVrMode) { - VrModeController.getInstance().onVrModeChanged(isVrMode); if (MarkerServiceHandler.getMogoStatusManager().isSeekHelping()) { onSeekHelpingStatusChanged(true); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java index 02d412edb5..aab5b254b5 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -617,6 +617,10 @@ public class MockIntentHandler implements IntentHandler { case 55: //开启模拟数据Mock,用于验证算法准确性 TimeDelayUploadManager.getInstance().init(context); + break; + case 56: + // 开启数据采集 自车定位和视觉识别 + break; } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/mocktools/DataCollectionHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/mocktools/DataCollectionHandler.java new file mode 100644 index 0000000000..a62e92a18a --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/mocktools/DataCollectionHandler.java @@ -0,0 +1,75 @@ +package com.mogo.module.service.mocktools; + +import android.os.Environment; +import android.os.Handler; +import android.os.Message; + +import com.mogo.utils.WorkThreadHandler; + +import java.io.File; + +public class DataCollectionHandler { + + private static volatile DataCollectionHandler handler; + private static final byte[] obj = new byte[0]; + private volatile boolean openDataCollect = false; + + private Handler mLocationDataCollectHandler; + private Handler mRecognizeDataCollectHandler; + + private static final String WRITE_FILE_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + "mockWrite"; + + private DataCollectionHandler() { + + } + + public static DataCollectionHandler getInstance() { + if (handler == null) { + synchronized (obj) { + if (handler == null) { + handler = new DataCollectionHandler(); + } + } + } + return handler; + } + + public void start() { + openDataCollect = true; + } + + public boolean canCollectData() { + return openDataCollect; + } + + public void collectLocationDataToFile(String locationData) { + if (mLocationDataCollectHandler == null) { + mLocationDataCollectHandler = new Handler(WorkThreadHandler.newInstance("data-collect-thread").getLooper()) { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + + } + }; + } + } + + public void collectRecogniseDataToFile() { + if (mRecognizeDataCollectHandler == null) { + mRecognizeDataCollectHandler = new Handler(WorkThreadHandler.newInstance("recognize-collect-thread").getLooper()) { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + + } + }; + } + } + + public void stop() { + openDataCollect = false; + mLocationDataCollectHandler = null; + mRecognizeDataCollectHandler = null; + } + +} diff --git a/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png b/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png new file mode 100644 index 0000000000..fa98de96a1 Binary files /dev/null and b/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png differ diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle index 4be22e5052..a299f8db01 100644 --- a/modules/mogo-module-v2x/build.gradle +++ b/modules/mogo-module-v2x/build.gradle @@ -94,7 +94,8 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation project(':modules:mogo-module-obu') - implementation rootProject.ext.dependencies.mebulaobu +// implementation rootProject.ext.dependencies.mebulaobu + implementation rootProject.ext.dependencies.mogoobu } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java index fc56d5c187..02b4309e98 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java @@ -17,6 +17,7 @@ import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.voice.AIAssist; import com.mogo.map.location.MogoLocation; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.drawer.AdasRecognizedResultDrawer; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XObuEventEntity; import com.mogo.module.common.entity.V2XPushMessageEntity; @@ -29,6 +30,8 @@ import com.mogo.module.v2x.utils.DrivingDirectionUtils; import com.mogo.module.v2x.utils.ObuConfig; import com.mogo.module.v2x.utils.TestOnLineCarUtils; import com.mogo.module.v2x.utils.ToastUtils; +import com.mogo.module.v2x.utils.V2XUtils; +import com.mogo.service.adas.entity.ADASRecognizedResult; import com.mogo.service.entrance.IMogoEntranceButtonController; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -38,15 +41,26 @@ import com.zhidao.mogo.module.obu.obu.IObuCallback; import com.zhidao.mogo.module.obu.obu.bean.MogoObuEventInfo; import com.zhidao.mogo.module.obu.obu.bean.MogoObuLocationInfo; import com.zhidao.mogo.module.obu.obu.bean.MogoObuTrafficLightInfo; -import com.zhidao.support.nebulaobu.NebulaObuClient; -import com.zhidao.support.nebulaobu.OnObuListener; -import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo; -import com.zhidao.support.nebulaobu.model.ObuInfo; -import com.zhidao.support.nebulaobu.model.ObuInfoMore; +//import com.zhidao.support.nebulaobu.NebulaObuClient; +//import com.zhidao.support.nebulaobu.OnObuListener; +//import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo; +//import com.zhidao.support.nebulaobu.model.ObuInfo; +//import com.zhidao.support.nebulaobu.model.ObuInfoMore; + +import com.zhidao.support.obu.MogoObuManager; +import com.zhidao.support.obu.OnMogoObuListener; +import com.zhidao.support.obu.constants.ObuConstants; +import com.zhidao.support.obu.model.CvxAppInitIndInfo; +import com.zhidao.support.obu.model.CvxHvCarIndInfo; +import com.zhidao.support.obu.model.CvxHvInfoIndInfo; +import com.zhidao.support.obu.model.CvxRvInfoIndInfo; +import com.zhidao.support.obu.model.CvxSetConfigCfmInfo; +import com.zhidao.support.obu.model.CvxV2vThreatIndInfo; import org.json.JSONArray; import org.json.JSONObject; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -85,6 +99,7 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { private final Handler handler = new Handler(this); private final ObuTypeExchangeReceiver obuTypeExchangeReceiver = new ObuTypeExchangeReceiver(); private ObuManager obuManager; + final String icw_data = "02000114010000000000001effd7892b11a4440af70100142a03000907e506100e2917019000005662010a45000b0000220847162c000037970010000a17f6215c459478b6010347ac045000090a0006012c01f4009600080073007300730073000b000000000000000000000000000000002b000037780000247300003261000000000000426c827f47001200100000000000000000000021220000349a006c0010000a17f63ecb45947ba301030000332c0010000a17f642e945947bea010300004d580010000a17f6435545947e4e0103000054c40010000a17f6413a45947f96010300005c300010000a17f62c2845947d140103000070e40010000a17f5fdb14594786001030000992000060004ffec2710"; public void init(Context context) { Logger.d(MODULE_NAME, "obuManager初始化--"); @@ -94,12 +109,19 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { obuManager.registerObuDataChangedListener(this); //使用adas部门obu sdk (星云) - NebulaObuClient.getInstance().init(context); - NebulaObuClient.getInstance().registerObu(100); - NebulaObuClient.getInstance().registerObuListener(listener); +// NebulaObuClient.getInstance().init(context); +// NebulaObuClient.getInstance().registerObu(100); +// NebulaObuClient.getInstance().registerObuListener(listener); + + //自研obu + MogoObuManager.getInstance().init(context); + MogoObuManager.getInstance().connect(); + MogoObuManager.getInstance().registerListener(mogoObuListener); + + //TODO 测试 +// MogoObuManager.getInstance().test(icw_data); // UiThreadHandler.postDelayed( () -> { -// //TODO 测试 // MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(3, MogoReceiver.ACTION_V2X_FRONT_WARNING); // handleSdkObu(1); // @@ -109,66 +131,184 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { context.registerReceiver(obuTypeExchangeReceiver, filter); } - - public void release() { - NebulaObuClient.getInstance().unregisterObu(); - NebulaObuClient.getInstance().unregisterObuListener(); - } - - - /** - * 星云obu数据监听 - */ - private OnObuListener listener = new OnObuListener() { + private OnMogoObuListener mogoObuListener = new OnMogoObuListener() { @Override - public void onRegister() { + public void onConnected() { + //OBU连接成功 + Logger.d("liyz", "onConnected ------> "); } @Override public void onConnectFail(boolean isNeedReconnect) { Logger.d("liyz", "onConnectFail ------> "); + //OBU连接失败 } @Override - public void onUnregister() { + public void onDisconnect() { + Logger.d("liyz", "onDisconnect ------> "); + //OBU断开连接 } @Override - public void onObuInfo(ObuInfo info) { - Logger.d("liyz", "onObuInfo ------> " + info.toString()); + public void onReceiveOriginData(String data) { + super.onReceiveOriginData(data); + Logger.d("liyz", "onReceiveOriginData ------> data = " + data); + //接收到的原始数据 } @Override - public void onWarningInfo(List infoList) { - if (infoList != null) { - if (infoList.size() > 0) { //一般只有一个 - ActiveSafetyInfo info = infoList.get(0); - Logger.d("liyz", "onWarningInfo type ------> " + info.getWarningtype() + "--size = " + infoList.size()); - if (info.getWarningtype() == 3) { - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - handleSdkObu(2); - } - } + public void onSendData(byte[] bytes) { + super.onSendData(bytes); + //发送的数据 + Logger.d("liyz", "onSendData ------> "); + } + + @Override + public void onCvxAppInitIndInfo(CvxAppInitIndInfo info) { + super.onCvxAppInitIndInfo(info); + Logger.d("liyz", "onCvxAppInitIndInfo ------> " + info.toString()); + //CV2X系统信息 + } + + @Override + public void onCvxSetConfigCfm(CvxSetConfigCfmInfo info) { + super.onCvxSetConfigCfm(info); + Logger.d("liyz", "onCvxSetConfigCfm ------> " + info.toString()); + //设置CV2X系统的配置确认 + } + + @Override + public void onCvxHvCarIndInfo(CvxHvCarIndInfo info) { + //主车车辆信息 + Logger.d("liyz", "onCvxHvCarIndInfo ------> " + info.toString()); + } + + @Override + public void onCvxHvInfoIndInfo(CvxHvInfoIndInfo info) { + //主车信息 + } + + @Override + public void onCvxRvInfoIndInfo(CvxRvInfoIndInfo info) { + //远车信息 + Logger.d("liyz", "onCvxRvInfoIndInfo ------> " + info.toString()); + } + + @Override + public void onCvxV2vThreatIndInfo(CvxV2vThreatIndInfo info) { + //预警信息 + Logger.e("liyz", "onCvxV2vThreatIndInfo ------> " + info.toString()); + //预警类型 threat_level 3 + if (info != null) { + if (info.getThreat_info() != null && info.getControl() != null && + info.getThreat_info().getThreat_level() == 3) { //看看2的情况 + //预警方位 + int direction = V2XUtils.getDirection((float) info.getExt_info().getAzimuth()); + Log.d("liyz", "direction = " + direction + "---azimuth = " + (float) info.getExt_info().getAzimuth()); + MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(direction, MogoReceiver.ACTION_V2X_FRONT_WARNING); + + //处理预警类型 + int appId = info.getThreat_info().getApp_id(); + handleSdkObu(getEventType(appId)); } + + //预警数据的组装,车辆实时移动和变色 TODO 这里需要obu提供他车列表 + AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult(getResultList(info)); + } else { + Log.e("liyz", "info == null "); } } }; + private int getEventType(int appid) { + if (appid == ObuConstants.USE_CASE_ID.EBW) { + return ObuConstant.TYPE_URGENCY_COLLISION_WARNING; + } else if (appid == ObuConstants.USE_CASE_ID.ICW) { + return ObuConstant.TYPE_CROSS_COLLISION_WARNING; + } + return 0; + } + + private List resultList = null; + + private List getResultList(CvxV2vThreatIndInfo info) { + if (resultList == null) { + resultList = new ArrayList<>(); + } + + ADASRecognizedResult adasRecognizedResult = new ADASRecognizedResult(); + adasRecognizedResult.uuid = info.getVehicle_id(); + if (info.getBasic_info() != null && info.getBasic_info().getPosition() != null) { + adasRecognizedResult.lat = info.getBasic_info().getPosition().getLatitude(); + adasRecognizedResult.lon = info.getBasic_info().getPosition().getLongitude(); + } + adasRecognizedResult.type = 3; //小轿车 + adasRecognizedResult.heading = info.getBasic_info().getHeading(); + adasRecognizedResult.speed = info.getBasic_info().getSpeed(); + + resultList.add(adasRecognizedResult); + + return resultList; + + } + +// public void release() { +// NebulaObuClient.getInstance().unregisterObu(); +// NebulaObuClient.getInstance().unregisterObuListener(); +// MogoObuManager.getInstance().unregisterListener(); +// } + + /** + * 星云obu数据监听 + */ +// private OnObuListener listener = new OnObuListener() { +// @Override +// public void onRegister() { +// } +// +// @Override +// public void onConnectFail(boolean isNeedReconnect) { +// } +// +// @Override +// public void onUnregister() { +// } +// +// @Override +// public void onObuInfo(ObuInfo info) { +// } +// +// @Override +// public void onWarningInfo(List infoList) { +// if (infoList != null) { +// if (infoList.size() > 0) { //一般只有一个 +// ActiveSafetyInfo info = infoList.get(0); +// Logger.d("liyz", "onWarningInfo type ------> " + info.getWarningtype() + "--size = " + infoList.size()); +// if (info.getWarningtype() == 3) { +// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { +// handleSdkObu(2); +// } +// } +// } +// } +// } +// }; private void handleSdkObu(int type) { V2XMessageEntity messageEntity = new V2XMessageEntity<>(); messageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_OBU_EVENT); V2XObuEventEntity urgencyEvent = new V2XObuEventEntity(); - if (type == 1) { //交叉路口碰撞预警 TODO + if (type == ObuConstant.TYPE_CROSS_COLLISION_WARNING) { //交叉路口碰撞预警 urgencyEvent.setType(ObuConstant.TYPE_CROSS_COLLISION_WARNING); urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_CROING_WARN_TEXT); - } else if (type == 2) { // 前车紧急制动预警 + } else if (type == ObuConstant.TYPE_URGENCY_COLLISION_WARNING) { // 前车紧急制动预警 urgencyEvent.setType(ObuConstant.TYPE_URGENCY_COLLISION_WARNING); urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_COLLISION_WARN_TEXT); } else { - urgencyEvent.setType(ObuConstant.TYPE_URGENCY_COLLISION_WARNING); - urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_COLLISION_WARN_TEXT); +// urgencyEvent.setType(ObuConstant.TYPE_URGENCY_COLLISION_WARNING); +// urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_COLLISION_WARN_TEXT); } messageEntity.setContent(urgencyEvent); @@ -367,7 +507,7 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { // 暂无设计图,先简单显示 V2XObuEventEntity tmpEvent = new V2XObuEventEntity(); tmpEvent.setType(eventType); - tmpEvent.setDesc(info.getType()+"--"+info.getDescribe()); + tmpEvent.setDesc(info.getType() + "--" + info.getDescribe()); messageEntity.setContent(tmpEvent); V2XObuEventScenario.getInstance().init(messageEntity); break; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java index ec962d4b1b..596734eb33 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java @@ -44,7 +44,7 @@ public class V2XObuEventScenario extends AbsV2XScenario imple public static final String URGENCY_COLLISION_WARN_TEXT_ONE = "前车急刹,注意保持安全距离!"; public static final String URGENCY_COLLISION_WARN_TEXT = "前车急刹"; - public static final String URGENCY_CROING_WARN_TEXT = "交叉路口碰撞预警"; + public static final String URGENCY_CROING_WARN_TEXT = "注意交叉路口车辆"; private static final int MSG_CLOSE_OBU_WINDOW = 1001; private static final int DEFAULT_EXPIRE_TIME = 20_000; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java index 44b5f8a400..fc5bbfb829 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java @@ -85,7 +85,7 @@ public class V2XObuEventWindow extends FrameLayout implements IV2XWindow 45 && degree < 135) { + return 1; //前方 + } else if (degree > 135 && degree < 225) { + return 4; //右方 + } else if ((degree < 45 && degree > 0) || degree < 360 && degree > 315) { + return 3; //左方 + } + + return 1; + } + } diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png new file mode 100644 index 0000000000..f5fd2de5e0 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png new file mode 100644 index 0000000000..e7709ff347 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png new file mode 100644 index 0000000000..f5fd2de5e0 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png index 38dc68d539..81a5f5eee8 100644 Binary files a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml index cac43e0f2d..a6a6e21a94 100644 --- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml +++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml @@ -2,7 +2,7 @@ - + diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml index 50615a0a07..675da08f48 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="#3D4053" + android:background="#3B4577" android:gravity="center" app:roundLayoutRadius="@dimen/dp_30" tools:layout_height="@dimen/module_v2x_event_see_live_window_height"> diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml index 73a2019ecc..6f4e17553d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/module_v2x_event_see_live_window_height" - android:background="@color/live_video_background_color" + android:background="#3B4577" app:roundLayoutRadius="@dimen/dp_20"> params = new HashMap<>(8); params.put("sn", MoGoAiCloudClientConfig.getInstance().getSn()); -// currentSn = useTestSn ? TEST_SN : MoGoAiCloudClientConfig.getInstance().getSn(); -// params.put("sn", currentSn); - SingletonsHolder.get(IMogoNetwork.class).create(CarModelInfoNetApiServices.class, CarModelInfoNetApiServices.getBaseUrl()). requestCarModelList(params). subscribeOn(Schedulers.io()). @@ -695,7 +710,8 @@ public class MogoADASController implements IMogoADASController { String value = GsonUtil.jsonFromObject(o.getResult()); SharedPrefsMgr.getInstance(context).putString("CAR_MODEL_LIST", value); if (value != null && !value.isEmpty()) { - AutopilotServiceManage.getInstance().settingCarModelListInfo(value); + //AutopilotServiceManage.getInstance().settingCarModelListInfo(value); + adasProvider.settingCarModelListInfo(value); } } @@ -719,7 +735,8 @@ public class MogoADASController implements IMogoADASController { mIsReleased = true; //AutopilotServiceManage.getInstance().unRegisterAutopilotDataListener( mAutopolitDataCallBack ); adasProvider.removeAdasEventListener(mAdasDataListener); - AutopilotServiceManage.getInstance().release(); + adasProvider.removeAdasStatusListener(); + //AutopilotServiceManage.getInstance().release(); } @Override @@ -829,7 +846,8 @@ public class MogoADASController implements IMogoADASController { } int status = IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE; try { - status = AutopilotServiceManage.getInstance().autopilotStateCall().getState(); + //status = AutopilotServiceManage.getInstance().autopilotStateCall().getState(); + status = adasProvider.autopilotStateCall().getState(); } catch (Exception e) { e.printStackTrace(); } @@ -854,11 +872,12 @@ public class MogoADASController implements IMogoADASController { @Override public void cancelAutopilot() { - try { - AutopilotServiceManage.getInstance().cancelAutopilot(); - } catch (RemoteException e) { - e.printStackTrace(); - } + //try { + //AutopilotServiceManage.getInstance().cancelAutopilot(); + adasProvider.cancelPilot(); + //} catch (RemoteException e) { + // e.printStackTrace(); + //} } @Override diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index 34181e7e32..bfccf24afb 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -159,7 +159,7 @@ public class MogoStatusManager implements IMogoStatusManager { private boolean get_bool_val(StatusDescriptor descriptor ) { Boolean val = mStatus.get( descriptor ); - return val == null ? false : val; + return val != null && val; } @Override