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/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/utils/ObjectUtils.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java index c5655e7cc7..6a2100fecc 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java @@ -100,6 +100,7 @@ public class ObjectUtils { .setFlat( opt.isFlat() ) .visible( opt.isVisible() ) .infoWindowEnable( opt.isInifoWindowEnable() ) + .scale(opt.getScale()) .alpha( opt.getAlpha() ) // .draggable( opt.isDraggable() ) .setInfoWindowOffset( opt.getOffsetX(), opt.getOffsetY() ) diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java index ef265d0788..d6307452fe 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java @@ -43,6 +43,9 @@ public class MogoMarkerOptions extends Observable { // 设置Marker覆盖物的透明度 private float alpha = 1.0f; + // 设置Marker覆盖物的缩放 + private float scale = 1.0f; + // Marker覆盖物的坐标是否是Gps private boolean isGps = false; @@ -220,6 +223,12 @@ public class MogoMarkerOptions extends Observable { return this; } + public MogoMarkerOptions scale( float scale ) { + this.scale = scale; + return this; + } + + public MogoMarkerOptions gps( boolean gps ) { isGps = gps; return this; @@ -326,6 +335,10 @@ public class MogoMarkerOptions extends Observable { return alpha; } + public float getScale() { + return scale; + } + public boolean isGps() { return isGps; } @@ -403,6 +416,7 @@ public class MogoMarkerOptions extends Observable { ", visible=" + visible + ", inifoWindowEnable=" + inifoWindowEnable + ", alpha=" + alpha + + " ,scale=" + scale+ ", isGps=" + isGps + ", u=" + u + ", v=" + v + 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/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..d4b8b69e37 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,14 @@ 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.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 +25,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 +44,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 +92,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 +177,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 +185,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 +206,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); @@ -197,6 +233,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL for (AdasStatusListener listener :iAdasStatusListeners) { listener.onServiceConnected(); } + updateDriveStatusTask(); } @Override @@ -206,4 +243,78 @@ 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..4809eac748 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,8 @@ 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.autopilot.support.api.AutopilotServiceManage; +import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; import com.zhidao.support.adas.high.AdasManager; @@ -51,8 +53,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 cancelPolit() { + 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-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/strategy/CarIconDisplayStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java index 5f0f07f942..b181e95105 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java @@ -236,6 +236,7 @@ public class CarIconDisplayStrategy { .icons(mBitmapFrames) .period(20) .zIndex(0) + .scale(MarkerServiceHandler.getMogoStatusManager().isVrMode() ? 0.4f : 1.0f) .autoManager(false) .anchor(0.5f, 0.5f) .position(MarkerServiceHandler.getMapService().getNavi(AbsMogoApplication.getApp()).getCarLocation2())); 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..f117c07323 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 @@ -38,11 +38,20 @@ 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.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; @@ -94,9 +103,15 @@ 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); + MogoObuManager.getInstance().unregisterListener(); // UiThreadHandler.postDelayed( () -> { // //TODO 测试 @@ -109,52 +124,127 @@ 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", "onCvxRvInfoIndInfo ------> " + info.toString()); + + //预警数据的组装,车辆实时移动和变色。 + //预警方位 + //预警类型 + } }; +// public void release() { +// NebulaObuClient.getInstance().unregisterObu(); +// NebulaObuClient.getInstance().unregisterObuListener(); +// } + + /** + * 星云obu数据监听 + */ +// private OnObuListener listener = new OnObuListener() { +// @Override +// public void onRegister() { +// } +// +// @Override +// public void onConnectFail(boolean isNeedReconnect) { +// Logger.d("liyz", "onConnectFail ------> "); +// } +// +// @Override +// public void onUnregister() { +// } +// +// @Override +// public void onObuInfo(ObuInfo info) { +// Logger.d("liyz", "onObuInfo ------> " + info.toString()); +// } +// +// @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); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java index 509e7d6bad..86cb6e3363 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java @@ -199,14 +199,14 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { if (mV2XPushMessageEntity.getDistance() > 1000) { SpanUtils.with(tvDistance) .append("" + (int) mV2XPushMessageEntity.getDistance() / 1000) - .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_text)) + .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.module_v2x_fault_help_distance_text_size : R.dimen.module_v2x_event_distance_text)) .append("公里") .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_title)) .create(); } else { SpanUtils.with(tvDistance) .append("" + (int) mV2XPushMessageEntity.getDistance()) - .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_text)) + .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.module_v2x_fault_help_distance_text_size : R.dimen.module_v2x_event_distance_text)) .append("米") .setFontSize((int) itemView.getResources().getDimension( V2XServiceManager.getMoGoStatusManager().isVrMode() ? diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java index c11fdb7201..13d96a30c5 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java @@ -2,6 +2,7 @@ package com.mogo.module.v2x.manager.impl; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; @@ -39,10 +40,12 @@ import com.mogo.module.v2x.utils.MarkerUtils; import com.mogo.utils.ViewUtils; import com.mogo.utils.logger.Logger; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; +import static com.mogo.module.service.strategy.CarIconDisplayStrategy.sFrameVr; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; import static com.mogo.module.v2x.V2XConst.V2X_EVENT_ALARM_POI; @@ -271,21 +274,35 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { } else { mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); } + // 当前Marker设置为最上面 + mAlarmInfoMarker.setToTop(); } else { - optionsRipple.icons(V2XMarkerAdapter.getV2XRoadEventViewGif(context, roadEventEntity)); - optionsRipple.period(100); - mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + ArrayList mBitmapFrames = new ArrayList<>(); + for (int i : sFrameVr) { + mBitmapFrames.add(BitmapFactory.decodeResource(AbsMogoApplication.getApp().getResources(), i)); + } + optionsRipple.icons(mBitmapFrames); + optionsRipple.period(20); + optionsRipple.scale(0.4f); + mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); - MogoMarkerOptions options = new MogoMarkerOptions().object(roadEventEntity) - .latitude(roadEventEntity.getLocation().getLat()).longitude(roadEventEntity.getLocation().getLon()); - options.anchor(0.5f, 0.5f); - options.zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); - options.icon3DRes(com.mogo.module.common.R.raw.othercar); - options.anchorColor("#C6D83EFF"); - m3DMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, options); + MogoMarkerOptions options = new MogoMarkerOptions().object(roadEventEntity) + .latitude(roadEventEntity.getLocation().getLat()).longitude(roadEventEntity.getLocation().getLon()); + options.anchor(0.5f, 0.5f); + options.icon3DRes(com.mogo.module.common.R.raw.othercar); + options.anchorColor("#FFBF29FF"); + m3DMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, options); + m3DMarker.setToTop(); + } else { + optionsRipple.icons(V2XMarkerAdapter.getV2XRoadEventViewGif(context, roadEventEntity)); + optionsRipple.period(100); + mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); + // 当前Marker设置为最上面 + mAlarmInfoMarker.setToTop(); + } } - // 当前Marker设置为最上面 - mAlarmInfoMarker.setToTop(); + // 绘制连接线 V2XServiceManager.getMoGoV2XPolylineManager().drawablePolyline(context, roadEventEntity); // 缩放地图 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java index e2233b6551..5b0d412d46 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java @@ -132,34 +132,6 @@ public class V2XMarkerAdapter { */ public static ArrayList getV2XRoadEventOrangeMarkerView(Context context, V2XRoadEventEntity alarmInfo) { ArrayList icons = new ArrayList<>(); - if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0000)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0001)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0002)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0003)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0004)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0005)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0006)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0007)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0008)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0009)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0010)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0011)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0012)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0013)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0014)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0015)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0016)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0017)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0018)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0019)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0020)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0021)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0022)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0023)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0024)); - - } else { icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00011)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00012)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00013)); @@ -198,8 +170,6 @@ public class V2XMarkerAdapter { icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00046)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00047)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00048)); - } - return icons; } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt index 10aeff917a..fa563f3fb4 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt @@ -102,9 +102,7 @@ class V2XMarkerRoadEventView(context: Context, alarmInfo: V2XRoadEventEntity) : } // 故障车辆 V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING.toString() -> { - if (!V2XServiceManager.getMoGoStatusManager().isVrMode()) { - ivCar.setImageResource(R.drawable.icon_car_red) - } + ivCar.setImageResource(R.drawable.icon_car_red) } // 取快递 V2XPoiTypeEnum.ALERT_TRAFFIC_EXPRESS -> { 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 - + diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml index 06c4b23743..1e4c57715d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml @@ -5,6 +5,7 @@ android:layout_width="@dimen/module_v2x_fault_help_width" android:layout_height="@dimen/module_v2x_fault_help_height" android:layout_marginTop="@dimen/dp_8" + android:alpha="0.7" android:background="@drawable/bg_v2x_event_bg" tools:layout_height="wrap_content"> 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"> 48px 35px 36px - 64px + 80px 108px 53px diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index ca33478b80..6c1bcce43e 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -5,7 +5,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; import android.os.Message; -import android.os.RemoteException; import android.text.TextUtils; import android.util.Log; @@ -47,7 +46,6 @@ import com.zhidao.adasconfig.api.AdasConfigApiController; import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode; import com.zhidao.adasconfig.common.config.EnumCarHeading; import com.zhidao.adasconfig.common.config.EnumSkinStyle; -import com.zhidao.autopilot.support.api.AutopilotServiceManage; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; @@ -301,7 +299,8 @@ public class MogoADASController implements IMogoADASController { @Override public void killADAS() { try { - AutopilotServiceManage.getInstance().kill(); + //AutopilotServiceManage.getInstance().kill(); + adasProvider.killAdas(); } catch (Exception e) { } @@ -309,6 +308,16 @@ public class MogoADASController implements IMogoADASController { private volatile boolean needEmphasizeMyLocation = false; + private void testOCH() { + RemoteControlAutoPilotParameters currentAutopilot = new RemoteControlAutoPilotParameters(); + currentAutopilot.isSpeakVoice = true; + currentAutopilot.startLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat( 0, 1 ); + currentAutopilot.endLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat( 2, 3 ); + currentAutopilot.vehicleType = 10; + Logger.d( TAG, "开启自动驾驶====" + currentAutopilot ); + aiCloudToAdasData(currentAutopilot); + } + @Override public void showADAS() { @@ -331,6 +340,9 @@ public class MogoADASController implements IMogoADASController { info.setSn(MoGoAiCloudClientConfig.getInstance().getSn()); AdasManager.getInstance().setBasicInfo(info); invokeShowADASOperation(); + + //测试网约车 + //testOCH(); } @Override @@ -389,7 +401,8 @@ public class MogoADASController implements IMogoADASController { // 向adas发送车模list String carModelList = SharedPrefsMgr.getInstance(context).getString("CAR_MODEL_LIST", ""); if (carModelList != null && !carModelList.isEmpty()) { - AutopilotServiceManage.getInstance().settingCarModelListInfo(carModelList); + //AutopilotServiceManage.getInstance().settingCarModelListInfo(carModelList); + adasProvider.settingCarModelListInfo(carModelList); } // 此处进行网络请求,请求成功后再通知一次adas requestCarModelList(); @@ -533,7 +546,8 @@ public class MogoADASController implements IMogoADASController { } try { - AutopilotServiceManage.getInstance().showAdas(); + //AutopilotServiceManage.getInstance().showAdas(); + adasProvider.showAdas(); } catch (Exception e) { Intent intent = new Intent(ACTION); intent.putExtra(PARAM_COMMAND, VAL_COMMAND); @@ -556,7 +570,8 @@ public class MogoADASController implements IMogoADASController { Logger.d(TAG, "close adas"); try { - AutopilotServiceManage.getInstance().hideAdas(); + //AutopilotServiceManage.getInstance().hideAdas(); + adasProvider.hideAdas(); } catch (Exception e) { Intent intent = new Intent(ACTION); intent.putExtra(PARAM_COMMAND, VAL_COMMAND); @@ -585,7 +600,7 @@ public class MogoADASController implements IMogoADASController { @Override public void init(Context context) { - AutopilotServiceManage.getInstance().init(context); + //AutopilotServiceManage.getInstance().init(context); mIsReleased = false; mAdasMessageFactory = new MyMessageFactory(); adasProvider = ARouter.getInstance().navigation(AdasProvider.class); @@ -594,12 +609,14 @@ public class MogoADASController implements IMogoADASController { @Override public void setSettingStatus(boolean show) { - AutopilotServiceManage.getInstance().setSettingStatus(show); + //AutopilotServiceManage.getInstance().setSettingStatus(show); + adasProvider.setSettingStatus(show); } @Override public void setUseAlgorithm(boolean open) { - AutopilotServiceManage.getInstance().setUseAlgorithm(open); + //AutopilotServiceManage.getInstance().setUseAlgorithm(open); + adasProvider.setUseAlgorithm(open); } @Override @@ -670,7 +687,8 @@ public class MogoADASController implements IMogoADASController { AdasControlCommandParameter parameter = new AdasControlCommandParameter(action, result); //位置信息 action是aiCloudToStartAutopilot try { - AutopilotServiceManage.getInstance().aiCloudToAdasData(GsonUtil.jsonFromObject(parameter)); + //AutopilotServiceManage.getInstance().aiCloudToAdasData(GsonUtil.jsonFromObject(parameter)); + adasProvider.sendWsMessage(GsonUtil.jsonFromObject(parameter)); } catch (Exception e) { e.printStackTrace(); } @@ -692,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); } } @@ -716,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 @@ -826,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(); } @@ -851,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.cancelPolit(); + //} 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