From e62a9d7dbb710cd7ab771ee970f4aaaec5446004 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 12 Oct 2022 11:18:02 +0800 Subject: [PATCH 001/137] =?UTF-8?q?[feature]=20=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=20token=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E5=90=8E=E8=8E=B7=E5=8F=963s=201s=202s=20=E4=B8=89=E6=AC=A1?= =?UTF-8?q?=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/model/BusPassengerModel.java | 10 +- .../network/BusPassengerServiceCallback.java | 15 - .../network/BusPassengerServiceManager.java | 118 ----- .../network/BusPassengerServiceManager.kt | 62 +++ .../com/mogo/och/bus/model/BusLineModel.java | 14 +- .../com/mogo/och/bus/model/BusOrderModel.java | 48 +- .../mogo/och/bus/net/BusServiceManager.java | 270 ---------- .../com/mogo/och/bus/net/BusServiceManager.kt | 268 ++++++++++ .../mogo/och/bus/net/IBusServiceCallback.java | 15 - .../common/module/utils/SimpleInterceptor.kt | 51 +- .../module/biz/model/OchCommonLoginModel.kt | 100 ++-- .../biz/model/OchCommonLoginStatusModel.java | 4 +- .../biz/network/OchCommonServiceManager.java | 187 ------- .../biz/network/OchCommonServiceManager.kt | 154 ++++++ .../biz/network/OchCommonSubscribeImpl.kt | 36 ++ .../biz/network/interceptor/FRetryWithTime.kt | 20 + .../interceptor/OchCommonNetInterceptor.kt | 13 + .../interceptor/OchCommonRetryException.java | 5 + .../biz/network/interceptor/RetryWithTime.kt | 30 ++ .../common/module/utils/CallerLoggerUtils.kt | 31 ++ .../passenger/model/TaxiPassengerModel.java | 30 +- .../network/TaxiPassengerServiceCallback.java | 18 - .../network/TaxiPassengerServiceManager.java | 208 -------- .../network/TaxiPassengerServiceManager.kt | 199 +++++++ .../ui/comment/TaxiPassengerArrivedView.kt | 10 +- .../com/mogo/och/taxi/model/TaxiModel.java | 94 ++-- .../och/taxi/network/TaxiServiceCallback.java | 18 - .../och/taxi/network/TaxiServiceManager.java | 463 ---------------- .../och/taxi/network/TaxiServiceManager.kt | 497 ++++++++++++++++++ .../function/hmi/ui/tools/BusOperationView.kt | 2 +- 30 files changed, 1474 insertions(+), 1516 deletions(-) delete mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java delete mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java create mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt delete mode 100644 OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java create mode 100644 OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt delete mode 100644 OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java delete mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt delete mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java delete mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java create mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt delete mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java delete mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java create mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 6d6be9bf00..1c2278ae61 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -39,8 +39,8 @@ import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback; import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager; -import com.mogo.och.bus.passenger.network.BusPassengerServiceCallback; import com.mogo.och.bus.passenger.network.BusPassengerServiceManager; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.statusmanager.IMogoStatusChangedListener; @@ -129,8 +129,8 @@ public class BusPassengerModel { } private void queryDriverOperationStatus() { - BusPassengerServiceManager.getInstance().queryDriverOperationStatus(mContext - , new BusPassengerServiceCallback() { + BusPassengerServiceManager.queryDriverOperationStatus(mContext + , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerOperationStatusResponse data) { if (data == null || data.data == null) return; @@ -149,8 +149,8 @@ public class BusPassengerModel { } public void queryDriverSiteByCoordinate(){ - BusPassengerServiceManager.getInstance().queryDriverSiteByCoordinate(mContext - , new BusPassengerServiceCallback() { + BusPassengerServiceManager.queryDriverSiteByCoordinate(mContext + , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerRoutesResponse data) { if ( data == null diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java deleted file mode 100644 index fb53106dcd..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -/** - * Created on 2022/3/31 - */ -public interface BusPassengerServiceCallback { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java deleted file mode 100644 index b155cb084c..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; -import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse; -import com.mogo.och.bus.passenger.constant.BusPassengerConst; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; - -/** - * Created on 2022/3/31 - */ -public class BusPassengerServiceManager { - private static final String TAG = BusPassengerServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final BusPassengerServiceManager INSTANCE = new BusPassengerServiceManager(); - } - - public static BusPassengerServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private BusPassengerServiceApi mBusPassengerServiceApi; - - private BusPassengerServiceManager() { - if (mBusPassengerServiceApi == null){ - mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance( - BusPassengerConst.getBaseUrl()).create(BusPassengerServiceApi.class); - } - } - - /** - * 获取Bus司机端的sn - * @return - */ - private String getDriverAppSn(){ - return CallerTelematicManager.INSTANCE.getServerToken(); -// return "X2020211111NG0XNFK"; - } - - /** - * 查询绑定行驶的小巴车路线 - * @param context - * @param callback - */ - public void queryDriverSiteByCoordinate(Context context - ,BusPassengerServiceCallback callback){ - mBusPassengerServiceApi.queryDriverSiteByCoordinate(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusPassengerQueryLineRequest(getDriverAppSn())) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryDriverSiteByCoordinate")); - } - - /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - public void queryDriverOperationStatus(Context context, BusPassengerServiceCallback callback){ - mBusPassengerServiceApi.queryDriverOperationStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,getDriverAppSn()) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryDriverOperationStatus")); - } - - - private SubscribeImpl getSubscribeImpl( - Context context, BusPassengerServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName + - ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName + - ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,String.format(apiName + - ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt new file mode 100644 index 0000000000..0e70161643 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt @@ -0,0 +1,62 @@ +package com.mogo.och.bus.passenger.network + +import android.content.Context +import com.mogo.och.bus.passenger.constant.BusPassengerConst.Companion.getBaseUrl +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken +import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest +import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.biz.network.interceptor.transformTry + +/** + * Created on 2022/3/31 + */ +object BusPassengerServiceManager { + + private var mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()) + .create(BusPassengerServiceApi::class.java) + + /** + * 获取Bus司机端的sn + * @return + */ + private val driverAppSn: String + get() = getServerToken() + /** + * 查询绑定行驶的小巴车路线 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverSiteByCoordinate( + context: Context, callback: OchCommonServiceCallback? + ) { + mBusPassengerServiceApi.queryDriverSiteByCoordinate( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusPassengerQueryLineRequest(driverAppSn)) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate")) + } + + /** + * 查询司机端出车收车状态,以及车牌号 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverOperationStatus( + context: Context, + callback: OchCommonServiceCallback?) { + mBusPassengerServiceApi.queryDriverOperationStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + driverAppSn) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java index fe1b1ba2d2..4e8d22d921 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java @@ -11,8 +11,8 @@ import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.bean.BusRoutesResponse; import com.mogo.och.bus.callback.IBusLinesCallback; import com.mogo.och.bus.net.BusServiceManager; -import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.ui.BusSwitchLineActivity; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; /** * @author: wangmingjun @@ -42,7 +42,7 @@ public class BusLineModel { mBusLinesCallback = callback; } public void queryBusLines(){ - BusServiceManager.getInstance().queryBusLines(mContext, new IBusServiceCallback() { + BusServiceManager.queryBusLines(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(BusQueryLinesResponse data) { if (null == data && mBusLinesCallback != null) { @@ -56,7 +56,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -72,7 +72,7 @@ public class BusLineModel { * @param position 位置 */ public void queryBusLineTasksById(int lineId, int position,boolean autoRefresh){ - BusServiceManager.getInstance().queryBusTaskByLineId(mContext, String.valueOf(lineId),new IBusServiceCallback() { + BusServiceManager.queryBusTaskByLineId(mContext, String.valueOf(lineId),new OchCommonServiceCallback() { @Override public void onSuccess(BusQueryLineTaskResponse data) { if (null == data && mBusLinesCallback != null) { @@ -86,7 +86,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -97,7 +97,7 @@ public class BusLineModel { } public void commitSwitchLineId(int taskId,int lineId){ - BusServiceManager.getInstance().switchLine(mContext,taskId, new IBusServiceCallback() { + BusServiceManager.switchLine(mContext,taskId, new OchCommonServiceCallback() { @Override public void onSuccess(BusRoutesResponse o) { SharedPrefs.getInstance(mContext).putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId); @@ -107,7 +107,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 250ecc2105..ea47eb23de 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -47,11 +47,11 @@ import com.mogo.och.bus.callback.IRefreshBusStationsCallback; import com.mogo.och.bus.callback.ISlidePannelHideCallback; import com.mogo.och.bus.constant.BusConst; import com.mogo.och.bus.net.BusServiceManager; -import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.presenter.BusModelLoopManager; import com.mogo.och.bus.util.BusAnalyticsManager; import com.mogo.och.bus.util.BusTrajectoryManager; import com.mogo.och.common.module.biz.constant.OchCommonConst; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -254,15 +254,15 @@ public class BusOrderModel { BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex +1); - BusServiceManager.getInstance().updateOrderRoute(mContext, currentLineId, currentStation.getSiteId() - , nextStation.getSiteId(), points, new IBusServiceCallback() { + BusServiceManager.updateOrderRoute(mContext, currentLineId, currentStation.getSiteId() + , nextStation.getSiteId(), points, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (isGoingToNextStation){//重试 updateOrderRoute(); } @@ -361,7 +361,7 @@ public class BusOrderModel { */ public void queryBusRoutes() { CallerLogger.INSTANCE.d(M_BUS + TAG, "查询小巴路线"); - BusServiceManager.getInstance().queryBusRoutes(mContext, new IBusServiceCallback() { + BusServiceManager.queryBusRoutes(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(BusRoutesResponse data) { if ( data == null @@ -382,7 +382,7 @@ public class BusOrderModel { updateBusStatus( data.getResult()); } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { // 重复请求小巴路线,直至成功 //改为任务,为空不再去一直取 // queryBusStationDelay(); @@ -448,8 +448,8 @@ public class BusOrderModel { */ public void abortTask() { CallerLogger.INSTANCE.d( M_BUS + TAG, "结束当前路线abortTask"); - BusServiceManager.getInstance().abortTask(mContext, currentTaskId - , new IBusServiceCallback() { + BusServiceManager.abortTask(mContext, currentTaskId + , new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o); @@ -461,7 +461,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { ToastUtils.showShort(failMsg); } }); @@ -540,11 +540,11 @@ public class BusOrderModel { CallerLogger.INSTANCE.e( M_BUS + TAG, "数组越界" ); return; } - BusServiceManager.getInstance().queryStationWriteOffPassengers(mContext, + BusServiceManager.queryStationWriteOffPassengers(mContext, currentTaskId, stationList.get(backgroundCurrentStationIndex).getSiteId(), prePassengerWriteOffTime, - new IBusServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(BusQueryWriteOffPassengersResponse o) { @@ -556,7 +556,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { } }); @@ -596,11 +596,11 @@ public class BusOrderModel { String arriveStation = stationList.get(arrivedStationIndex).getName(); CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation-currentStationIndex = "+ arrivedStationIndex); - BusServiceManager.getInstance().arriveSiteStation(mContext , + BusServiceManager.arriveSiteStation(mContext , stationList.get(arrivedStationIndex).getSeq(), stationList.get(arrivedStationIndex).getSiteId(), currentTaskId , - new IBusServiceCallback() { + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation success"); @@ -615,7 +615,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -635,11 +635,11 @@ public class BusOrderModel { nextStationName = stationList.get(backgroundCurrentStationIndex + 1).getName(); } String finalNextStationName = nextStationName; - BusServiceManager.getInstance().leaveStation(mContext, + BusServiceManager.leaveStation(mContext, stationList.get(backgroundCurrentStationIndex).getSeq(), stationList.get(backgroundCurrentStationIndex).getSiteId(), currentTaskId, - new IBusServiceCallback() { + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { isArrivedStation = false; @@ -651,7 +651,7 @@ public class BusOrderModel { queryBusRoutes(); } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else{ @@ -831,8 +831,8 @@ public class BusOrderModel { */ private void endTask() { CallerLogger.INSTANCE.d( M_BUS + TAG, "任务正常走完endTask()"); - BusServiceManager.getInstance().endTask(mContext, currentTaskId - , new IBusServiceCallback() { + BusServiceManager.endTask(mContext, currentTaskId + , new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o); @@ -846,7 +846,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { ToastUtils.showShort(failMsg); } }); @@ -883,15 +883,15 @@ public class BusOrderModel { // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { - BusServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, - new IBusServiceCallback() { + BusServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { } }); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java deleted file mode 100644 index d99fcc5d26..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.mogo.och.bus.net; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.bean.BusCloseTaskRequest; -import com.mogo.och.bus.bean.BusQueryLineTaskResponse; -import com.mogo.och.bus.bean.BusQueryLinesResponse; -import com.mogo.och.bus.bean.BusQueryWriteOffPassengersResponse; -import com.mogo.och.bus.bean.BusRoutePlanningUpdateReqBean; -import com.mogo.och.bus.bean.BusRoutesResponse; -import com.mogo.och.bus.bean.BusWriteOffPassengersQueryRequest; -import com.mogo.och.bus.bean.CarHeartbeatReqBean; -import com.mogo.och.bus.bean.BusOrdersResponse; -import com.mogo.och.bus.bean.BusQueryLineStationsRequest; -import com.mogo.och.bus.bean.BusResetDrivingLineRequest; -import com.mogo.och.bus.bean.BusUpdateSiteStatusRequest; -import com.mogo.och.bus.bean.QueryLeaveAwayPassengersRequest; -import com.mogo.och.bus.bean.QueryLeaveAwayPassengersResponse; -import com.mogo.och.bus.constant.BusConst; -import com.mogo.och.bus.model.BusOrderModel; - -import java.util.List; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * @author: wangmingjun - * @date: 2021/10/20 - */ -public class BusServiceManager { - - private static final String TAG = BusServiceManager.class.getSimpleName(); - - private final IBusApiService mService; - - private static final class SingletonHolder { - private static final BusServiceManager INSTANCE = new BusServiceManager(); - } - - public static BusServiceManager getInstance(){ - return SingletonHolder.INSTANCE; - } - - private BusServiceManager(){ - mService = MoGoRetrofitFactory.getInstance(BusConst.getBaseUrl()).create(IBusApiService.class); - } - - /** - * 查询小巴车当前任务 - * @param context - * @param callback - */ - public void queryBusRoutes(Context context, IBusServiceCallback callback) { - //获取当前高德坐标 - - mService.queryBusRoutes(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - , new BusQueryLineStationsRequest()) - .subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) - .subscribe( getSubscribeImpl(context,callback,"queryBusRoutes")); - } - - /** - * 重置线路站点 - * @param context - * @param taskId - * @param callback - */ - public void switchLine(Context context, int taskId, IBusServiceCallback callback){ - mService.switchLine(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new BusResetDrivingLineRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"switchLine")); - } - - /** - * 中断当前任务 - * @param context - * @param taskId - * @param callback - */ - public void abortTask(Context context, int taskId, IBusServiceCallback callback){ - mService.abortTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusCloseTaskRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"abortTask")); - } - - /** - * 正常结束任务 - * @param context - * @param taskId - * @param callback - */ - public void endTask(Context context, int taskId, IBusServiceCallback callback){ - mService.endTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusCloseTaskRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"endTask")); - } - - /** - * 离站上报 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void leaveStation(Context context, int seq, int siteId,int taskId, IBusServiceCallback callback){ - mService.leaveStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusUpdateSiteStatusRequest(taskId,siteId,seq)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"leaveStation")); - } - - /** - * 到站更新站点状态 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void arriveSiteStation(Context context, int seq, int siteId,int taskId, - IBusServiceCallback callback){ - mService.arriveSiteStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusUpdateSiteStatusRequest(taskId,siteId,seq)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"arriveSiteStation")); - } - - /** - * 查询下车乘客 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void queryStationLeaveAwayPassengers(Context context, int seq, int siteId - , IBusServiceCallback callback){ - mService.queryStationLeaveAwayPassengers( MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new QueryLeaveAwayPassengersRequest(seq,siteId)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryStationLeaveAwayPassengers")); - } - - /** - * 查询当前到站点核销乘客 - * @param context - * @param siteId - * @param callback - */ - public void queryStationWriteOffPassengers(Context context,int taskId,int siteId,long prePassengerTime - , IBusServiceCallback callback){ - mService.queryWriteOffPassengers( MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusWriteOffPassengersQueryRequest(taskId,siteId,prePassengerTime)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryStationWriteOffPassengers")); - } - - - - /** - * 查询小巴车订单 - * @param context - * @param callback - */ - public void queryBusOrders(Context context, IBusServiceCallback callback){ - mService.queryBusOrders(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusOrders")); - } - - public void queryBusLines(Context context, IBusServiceCallback callback){ - mService.queryBusLines(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - - public void queryBusTaskByLineId(Context context,String lineId,IBusServiceCallback callback){ - mService.queryBusTaskByLineId(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,lineId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - - public void updateOrderRoute(Context context,int lineId, int startSiteId, int endSiteId - , List< BusRoutePlanningUpdateReqBean.Result > points - , IBusServiceCallback callback){ - mService.updateOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusRoutePlanningUpdateReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,lineId,startSiteId,endSiteId, points)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"updateOrderRoute")); - } - - /** - * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 - * @param context - * @param lon - * @param lat - * @param callback - */ - public void runCarHeartbeat(Context context, double lon, double lat, - IBusServiceCallback callback) { - mService.runCarHeartbeat(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new CarHeartbeatReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), lon, lat)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "runCarHeartbeat")); - } - - private SubscribeImpl getSubscribeImpl(Context context, IBusServiceCallback callback, String apiName){ - return new SubscribeImpl(RequestOptions.create(context)){ - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onError() " +"msg="+ message+" code="+code); - if (callback != null) { - callback.onFail("msg="+ message+" code="+code); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onError() " +" e="+e.getMessage()); - if (callback != null) { - callback.onFail(e.getMessage()); - } - } - }; - } -} diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt new file mode 100644 index 0000000000..126932adbc --- /dev/null +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt @@ -0,0 +1,268 @@ +package com.mogo.och.bus.net + +import android.content.Context +import com.mogo.och.bus.constant.BusConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.bus.bean.* +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.biz.network.interceptor.transformTry + +/** + * @author: wangmingjun + * @date: 2021/10/20 + */ +object BusServiceManager { + + private val mService: IBusApiService = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + IBusApiService::class.java + ) + + /** + * 查询小巴车当前任务 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback?) { + //获取当前高德坐标 + mService.queryBusRoutes( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusQueryLineStationsRequest() + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes")) + } + + /** + * 重置线路站点 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun switchLine( + context: Context, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.switchLine( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusResetDrivingLineRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "switchLine")) + } + + /** + * 中断当前任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.abortTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "abortTask")) + } + + /** + * 正常结束任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.endTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "endTask")) + } + + /** + * 离站上报 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun leaveStation( + context: Context, + seq: Int, + siteId: Int, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.leaveStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation")) + } + + /** + * 到站更新站点状态 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun arriveSiteStation( + context: Context, seq: Int, siteId: Int, taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.arriveSiteStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation")) + } + + /** + * 查询下车乘客 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun queryStationLeaveAwayPassengers( + context: Context, + seq: Int, + siteId: Int, + callback: OchCommonServiceCallback? + ) { + mService.queryStationLeaveAwayPassengers( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + QueryLeaveAwayPassengersRequest(seq, siteId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryStationLeaveAwayPassengers")) + } + + /** + * 查询当前到站点核销乘客 + * @param context + * @param siteId + * @param callback + */ + @JvmStatic + fun queryStationWriteOffPassengers( + context: Context, + taskId: Int, + siteId: Int, + prePassengerTime: Long, + callback: OchCommonServiceCallback? + ) { + mService.queryWriteOffPassengers( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusWriteOffPassengersQueryRequest(taskId, siteId, prePassengerTime) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryStationWriteOffPassengers")) + } + + /** + * 查询小巴车订单 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusOrders(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusOrders( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusOrders")) + } + @JvmStatic + fun queryBusLines(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusLines( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + @JvmStatic + fun queryBusTaskByLineId( + context: Context, + lineId: String?, + callback: OchCommonServiceCallback? + ) { + mService.queryBusTaskByLineId( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + lineId + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + @JvmStatic + fun updateOrderRoute( + context: Context, + lineId: Int, + startSiteId: Int, + endSiteId: Int, + points: List?, + callback: OchCommonServiceCallback? + ) { + mService.updateOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusRoutePlanningUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lineId, startSiteId, endSiteId, points + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute")) + } + + /** + * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 + * @param context + * @param lon + * @param lat + * @param callback + */ + @JvmStatic + fun runCarHeartbeat( + context: Context, lon: Double, lat: Double, + callback: OchCommonServiceCallback? + ) { + mService.runCarHeartbeat( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + CarHeartbeatReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lon, lat + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java deleted file mode 100644 index 966a86d980..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.bus.net; - -/** - * @author: wangmingjun - * @date: 2021/10/20 - */ -public interface IBusServiceCallback< T >{ - void onSuccess(T o); - - void onFail(String failMsg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt index 5bacbfe0d7..9dc0b0093e 100644 --- a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt +++ b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt @@ -10,58 +10,9 @@ class SimpleInterceptor: Interceptor { val encodedPath = original.url().encodedPath() Log.e("SimpleInterceptor",original.method()+ encodedPath+original.url().encodedQuery()) when (encodedPath) { - "/autopilot-car-hailing/operation/v1/driver/bus/loginStatus" -> { - val builder = Response.Builder() - val create:ResponseBody - if(first) { - create = ResponseBody.create( - MediaType.parse("application/json"), - "{\"code\":0,\"msg\":\"\",\"data\":{\"servingStatus\":0,\"driverStatus\":1,\"orderNo\":\"12111\",\"purpose\":1,\"sn\":\"fjsdlfjslf\",\"plateNumber\":\"车牌号\",\"phone\":\"18811539480\",\"lineId\":\"线路id\",\"taskId\":\"任务id\"}}" - ) - first = false - }else{ - create = ResponseBody.create( - MediaType.parse("application/json"), - "{\"code\":0,\"msg\":\"\",\"data\":{\"servingStatus\":0,\"driverStatus\":0,\"orderNo\":\"12111\",\"purpose\":1,\"sn\":\"fjsdlfjslf\",\"plateNumber\":\"车牌号\",\"phone\":\"18811539480\",\"lineId\":\"线路id\",\"taskId\":\"任务id\"}}" - ) - first = true - } - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/line/v2/driver/bus/task/query" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":[{\"id\":1,\"taskStartTime\":1663722000000},{\"id\":2,\"taskStartTime\":1663725600000},{\"id\":3,\"taskStartTime\":1663729200000},{\"id\":4,\"taskStartTime\":1663732800000},{\"id\":5,\"taskStartTime\":1663736400000},{\"id\":6,\"taskStartTime\":1663740000000},{\"id\":7,\"taskStartTime\":1663743600000},{\"id\":8,\"taskStartTime\":1663747200000},{\"id\":9,\"taskStartTime\":1663750800000},{\"id\":10,\"taskStartTime\":1663754400000}]}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startTask" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endOperation" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startOperation" -> { val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") + val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":100006,\"msg\":\"\",\"data\":null}") builder.code(200) builder.request(original) builder.protocol(Protocol.HTTP_1_1) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt index d945f03a1f..a5b2277c7d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt @@ -71,66 +71,70 @@ object OchCommonLoginModel{ * 获取手机验证码 */ fun getPhoneCode(phone: String?) { - OchCommonServiceManager.getInstance().getPhoneCode(mContext, phone, - object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - // 获取验证码成功 - ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_get_code_success)) - iTaxiLoginCallback?.getPhoneCodeSuccess() - } else { - if (data != null) { - ToastUtils.showShort(data.code) + mContext?.let { + OchCommonServiceManager.getPhoneCode(it, phone, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + if (null != data && 0 == data.code) { + // 获取验证码成功 + ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_get_code_success)) + iTaxiLoginCallback?.getPhoneCodeSuccess() + } else { + if (data != null) { + ToastUtils.showShort(data.code) + } } } - } - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + override fun onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) + } else { + ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + } } - } - override fun onFail(code: Int, msg: String) { - ToastUtilsOch.showWithCodeMessage(code,msg) - } - }) + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code,msg) + } + }) + } + } fun gotoLogin(phone: String, code: String) { - val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) - OchCommonServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login, - object : OchCommonServiceCallback { - override fun onSuccess(data: TaxiLoginRespBean?) { - if (null != data && 0 == data.code) { - // 获取验证码成功 - ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) - LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) - mContext?.let { - SharedPrefs.getInstance(it).putString("och_account",phone) - } - iTaxiLoginCallback?.loginSuccess() - } else { - if (data != null) { - ToastUtils.showShort(data.code) + mContext?.let { + val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) + OchCommonServiceManager.gotoLoginBycode(it, phone, code, location4Login, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiLoginRespBean?) { + if (null != data && 0 == data.code) { + // 获取验证码成功 + ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) + LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) + mContext?.let { + SharedPrefs.getInstance(it).putString("och_account",phone) + } + iTaxiLoginCallback?.loginSuccess() + } else { + if (data != null) { + ToastUtils.showShort(data.code) + } } } - } - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + override fun onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) + } else { + ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + } } - } - override fun onFail(code: Int, msg: String) { - ToastUtilsOch.showWithCodeMessage(code,msg) - } - }) + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code,msg) + } + }) + } } - } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java index 0b1e9f0bfb..a2951bfbde 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java @@ -53,7 +53,7 @@ public abstract class OchCommonLoginStatusModel { * 8、登录页面关闭后查下状态 */ public void queryCarStatus() { - OchCommonServiceManager.getInstance().queryDriverServiceStatus(mContext, + OchCommonServiceManager.queryDriverServiceStatus(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(DriverStatusQueryRespBean data) { @@ -93,7 +93,7 @@ public abstract class OchCommonLoginStatusModel { // 登出 public void logout(double mLatitude,double mLongitude) { TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude); - OchCommonServiceManager.getInstance().logout(mContext,location4Login, + OchCommonServiceManager.logout(mContext,location4Login, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java deleted file mode 100644 index ecc0129cfe..0000000000 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.mogo.och.common.module.biz.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClient; -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.commons.debug.DebugConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean; -import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean; -import com.mogo.och.common.module.biz.constant.OchCommonConst; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class OchCommonServiceManager { - private static final String TAG = OchCommonServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final OchCommonServiceManager INSTANCE = new OchCommonServiceManager(); - } - - public static OchCommonServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private OchCommonServiceApiNew mOCHTaxiServiceApi; - - private OchCommonServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(OchCommonServiceApiNew.class); - } - } - - /** - * 获取手机验证码 - * @param context - * @param callback - */ - public void getPhoneCode(Context context, String phone, - OchCommonServiceCallback callback) { - mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginSmsReqBean(phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "getPhoneCode")); - } - /** - * 通过验证码登录 - * @param context - * @param callback - */ - public void gotoLoginBycode(Context context, String phone, String code, - TaxiLoginReqBean.Location4Login location4Login, - OchCommonServiceCallback callback) { - String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - Observable taxiLoginRespBeanObservable = null; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)); - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Bus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)); - break; - } - } - if (taxiLoginRespBeanObservable != null) { - taxiLoginRespBeanObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); - } - } - - /** - * 登出 - */ - public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, OchCommonServiceCallback callback) { - Observable logout = null; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - logout = mOCHTaxiServiceApi.logout4Taxi( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)); - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - logout = mOCHTaxiServiceApi.logout4Bus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)); - break; - } - } - if (logout != null) { - logout.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "logout")); - } - } - - /** - * 接单状态和登录状态查询 - * - * @param context - * @param callback - */ - public void queryDriverServiceStatus(Context context, - OchCommonServiceCallback callback) { - if (MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()) { - callback.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等"); - MoGoAiCloudClient.getInstance().refreshToken(); - return; - } - String flavor = ""; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - flavor = "taxi"; - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - flavor = "bus"; - break; - } - case "fPadLenovoOchBusPassenger": {//小巴车乘客 - flavor = "bus/passenger"; - break; - } - } - mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(flavor, MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus")); - } - - - private SubscribeImpl getSubscribeImpl( - Context context, OchCommonServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.d(M_TAXI + TAG, apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI + TAG, apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI + TAG, String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt new file mode 100644 index 0000000000..6779e4a891 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt @@ -0,0 +1,154 @@ +package com.mogo.och.common.module.biz.network + +import android.content.Context +import com.mogo.och.common.module.biz.constant.OchCommonConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean +import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean +import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean +import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.cloud.passport.MoGoAiCloudClient +import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.common.module.biz.network.interceptor.transformTry +import io.reactivex.Observable + +/** + * Created by pangfan on 2021/8/19 + */ +object OchCommonServiceManager { + + private const val TAG = "OchCommonServiceManager" + + private val mOCHTaxiServiceApi: OchCommonServiceApiNew = + MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + OchCommonServiceApiNew::class.java + ) + + /** + * 获取手机验证码 + * @param context + * @param callback + */ + @JvmStatic + fun getPhoneCode( + context: Context, phone: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getPhoneCode( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginSmsReqBean(phone) + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode")) + } + + /** + * 通过验证码登录 + * @param context + * @param callback + */ + @JvmStatic + fun gotoLoginBycode( + context: Context, phone: String?, code: String?, + location4Login: TaxiLoginReqBean.Location4Login?, + callback: OchCommonServiceCallback? + ) { + val sn = MoGoAiCloudClientConfig.getInstance().sn + var taxiLoginRespBeanObservable: Observable? = null + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginReqBean(phone, code, sn, location4Login) + ).transformTry() + } + "fPadLenovoOchBus" -> { + //小巴车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Bus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginReqBean(phone, code, sn, location4Login) + ).transformTry() + } + } + taxiLoginRespBeanObservable?.subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode")) + } + + /** + * 登出 + */ + @JvmStatic + fun logout( + context: Context, + location4Login: TaxiLogoutReqBean.Location4Login?, + callback: OchCommonServiceCallback? + ) { + var logout: Observable? = null + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + logout = mOCHTaxiServiceApi.logout4Taxi( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().sn, location4Login) + ).transformTry() + } + "fPadLenovoOchBus" -> { + //小巴车司机 + logout = mOCHTaxiServiceApi.logout4Bus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().sn, location4Login) + ).transformTry() + } + } + logout?.subscribe(OchCommonSubscribeImpl(context, callback, "logout")) + } + + /** + * 接单状态和登录状态查询 + * + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverServiceStatus( + context: Context, + callback: OchCommonServiceCallback? + ) { + if (MoGoAiCloudClientConfig.getInstance().token.isEmpty()) { + callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等") + MoGoAiCloudClient.getInstance().refreshToken() + return + } + var flavor = "" + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + flavor = "taxi" + } + "fPadLenovoOchBus" -> { + //小巴车司机 + flavor = "bus" + } + "fPadLenovoOchBusPassenger" -> { + //小巴车乘客 + flavor = "bus/passenger" + } + } + mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus( + flavor, + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt new file mode 100644 index 0000000000..01f08eaaee --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt @@ -0,0 +1,36 @@ +package com.mogo.och.common.module.biz.network + +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.RequestOptions +import com.mogo.eagle.core.network.SubscribeImpl +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag + +class OchCommonSubscribeImpl( + val context: Any, + val callback: OchCommonServiceCallback?, + val apiName: String +) : SubscribeImpl(RequestOptions.create(context)) { + + companion object { + const val TAG = "OchCommonSubscribeImpl" + } + + override fun onSuccess(o: T) { + super.onSuccess(o) + CallerLogger.d("$flavorTag$TAG", "$apiName: onSuccess() ${o.msg}") + callback?.onSuccess(o) + } + + override fun onError(e: Throwable) { + super.onError(e) + CallerLogger.e("$flavorTag$TAG", "$apiName: onError() ${e.message}") + callback?.onError() + } + + override fun onError(message: String, code: Int) { + super.onError(message, code) + CallerLogger.e("$flavorTag$TAG", "$apiName: onError() code = $code; message = $message") + callback?.onFail(code, message) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt new file mode 100644 index 0000000000..93869d6edc --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt @@ -0,0 +1,20 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import com.mogo.cloud.passport.MoGoAiCloudClient +import com.mogo.eagle.core.data.BaseData +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.functions.Function + +class FRetryWithTime : Function> { + + override fun apply(baseData: T): ObservableSource { + baseData.let { + if (it.code == 100046 || it.code == 100045 || it.code == 100005 || it.code == 100006 || it.code == 520003) { + MoGoAiCloudClient.getInstance().refreshToken() + return Observable.error(OchCommonRetryException()) + } + } + return Observable.just(baseData) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt new file mode 100644 index 0000000000..1fa0e4bf57 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt @@ -0,0 +1,13 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import io.reactivex.Observable +import com.mogo.eagle.core.data.BaseData +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers + +fun Observable.transformTry():Observable { + return flatMap(FRetryWithTime()) + .retryWhen(RetryWithTime()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java new file mode 100644 index 0000000000..262d1806c0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java @@ -0,0 +1,5 @@ +package com.mogo.och.common.module.biz.network.interceptor; + +public class OchCommonRetryException extends RuntimeException{ + +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt new file mode 100644 index 0000000000..83606fdea0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt @@ -0,0 +1,30 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import com.mogo.eagle.core.utilcode.constant.TimeConstants +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.functions.Function +import java.util.concurrent.TimeUnit + + +class RetryWithTime : Function, ObservableSource> { + companion object { + private const val TAG = "RetryWithTime" + } + var current = -1 + private var timeDelys = intArrayOf(3, 1, 2) + override fun apply(throwableObservable: Observable): ObservableSource? { + return throwableObservable.flatMap { + ++current + CallerLogger.e("${flavorTag}${TAG}", " 时间:${TimeUtils.getStringByNow(0, TimeConstants.SEC)}") + if (it is OchCommonRetryException && current < timeDelys.size) { + Observable.timer(timeDelys[current].toLong(), TimeUnit.SECONDS) + } else { + Observable.error(it) + } + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt new file mode 100644 index 0000000000..6289004563 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt @@ -0,0 +1,31 @@ +package com.mogo.och.common.module.utils + +import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P + +object CallerLoggerUtils { + var flavorTag = when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + M_TAXI + } + "fPadLenovoOchBus" -> { + //小巴车司机 + M_BUS + } + "fPadLenovoOchTaxiPassenger" -> { + //出租车乘客 + M_TAXI_P + } + "fPadLenovoOchBusPassenger" -> { + //小巴车乘客 + M_BUS_P + } + else -> { + "" + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 297efdd6a9..5a3564a2a3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -32,6 +32,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; @@ -51,7 +52,6 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback; import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager; import com.mogo.aicloud.services.socket.IMogoLifecycleListener; import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager; @@ -288,8 +288,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback * 才更新最新进行中单到本地 */ public void queryInAndWaitOrders() { - TaxiPassengerServiceManager.getInstance().queryOrdersInAndWaitService(mContext, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrdersInAndWaitService(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrdersInServiceQueryRespBean data) { if (data == null || data.data == null) { @@ -346,8 +346,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiPassengerServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrderQueryRespBean data) { if (data != null && data.data != null @@ -693,7 +693,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback */ public void queryOrderRemaining(){ if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrderQueryRemainingResp data) { if (data != null && data.data!=null){ @@ -714,7 +714,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void queryOrderRouteList() { if (mCurrentOCHOrder == null) return; CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- queryOrderRouteList"); - TaxiPassengerServiceManager.getInstance().queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerQueryOrderRouteResp data) { CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route---"+GsonUtil.jsonFromObject(data)); @@ -765,8 +765,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void checkPhoneAndUpdateStatus(String phoneTail,ITaxiPassengerCommonCallback commonCallback) { if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, - phoneTail, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, + phoneTail, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if (data != null && data.code == 0 && mCurrentOCHOrder != null){ @@ -799,8 +799,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void arrivedAndScore(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean , ITaxiPassengerCommonValueCallback commonCallback) { if (taxiPassengerScoreUpdateOrderReqBean.orderNo == null) return; - TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if(commonCallback!=null) { @@ -829,8 +829,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void loopQueryPilotStatus(){ if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if (data != null && data.code == 0 && data.data.equals(true)) { @@ -873,9 +873,9 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback TaxiPassengerStartReqBean.Result result = new TaxiPassengerStartReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiPassengerServiceManager.getInstance().startServicePilotDone(mContext, + TaxiPassengerServiceManager.startServicePilotDone(mContext, mCurrentOCHOrder.orderNo, result, - new TaxiPassengerServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(TaxiPassengerBaseRespBean data) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java deleted file mode 100644 index b2d02607c3..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.taxi.passenger.network; - -/** - * @author congtaowang - * @since 2021/1/15 - * - * 修改订单状态回调接口 - */ -public interface TaxiPassengerServiceCallback< T > { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java deleted file mode 100644 index f052794c40..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.mogo.och.taxi.passenger.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; -import com.mogo.commons.debug.DebugConfig; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class TaxiPassengerServiceManager { - private static final String TAG = TaxiPassengerServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final TaxiPassengerServiceManager INSTANCE = new TaxiPassengerServiceManager(); - } - - public static TaxiPassengerServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private TaxiPassengerServiceApi mOCHTaxiServiceApi; - - private TaxiPassengerServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(TaxiPassengerConst.getBaseUrl()).create(TaxiPassengerServiceApi.class); - } - } - - /** - * 获取司机端的sn - * @return - */ - private String getDriverAppSn(){ - return CallerTelematicManager.INSTANCE.getServerToken(); - } - - /** - * 查询全部服务中/待服务订单列表 - * @param context - * @param callback - */ - public void queryOrdersInAndWaitService(Context context, - TaxiPassengerServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersInAndWaitService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,getDriverAppSn()) //获取到司机端的sn - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersInAndWaitService")); - } - - /** - * 查询订单剩余里程和时间 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRemaining(Context context, String orderNo, TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.queryOrderRemaining(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRemaining")); - } - - public void queryOrderRouteList(Context context, String orderNo, TaxiPassengerServiceCallback callback){ - - mOCHTaxiServiceApi.queryOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRouteList")); - } - - /** - * 通过orderId查询订单信息(用于本地已经有orderId时) - * @param context - * @param orderNo - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderById(Context context, String orderNo, - TaxiPassengerServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderById(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerOrderQueryReqBean(getDriverAppSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderById")); - } - - private SubscribeImpl getSubscribeImpl( - Context context, TaxiPassengerServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } - - public void checkPhoneAndUpdateOrderStatus(Context context, String orderNo,String phone ,TaxiPassengerServiceCallback callback){ - - mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo,phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - public void arrivedAndScore(Context context,TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean, TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.arrivedAndScore( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,taxiPassengerScoreUpdateOrderReqBean) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - - public void getAllScoreWorld(Context context,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.getWorldAllStar( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arrivedAndScore")); - } - - public void queryPilotStatus(Context context, String orderNo - ,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.queryPilotStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryPilotStatus")); - } - - public void startServicePilotDone(Context context,String orderNo,TaxiPassengerStartReqBean.Result loc - ,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.startServicePilotDone(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerStartReqBean(getDriverAppSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"startServicePilotDone")); - } - public void getWorldByStar(Context context,String start,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.getWorldByStar( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),start) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt new file mode 100644 index 0000000000..37e0bc2b39 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt @@ -0,0 +1,199 @@ +package com.mogo.och.taxi.passenger.network + +import android.content.Context +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst.Companion.getBaseUrl +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld +import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.biz.network.interceptor.transformTry + +/** + * Created by pangfan on 2021/8/19 + */ +object TaxiPassengerServiceManager { + + private val mOCHTaxiServiceApi: TaxiPassengerServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + TaxiPassengerServiceApi::class.java + ) + + /** + * 获取司机端的sn + * @return + */ + private val driverAppSn: String + get() = getServerToken() + + /** + * 查询全部服务中/待服务订单列表 + * @param context + * @param callback + */ + @JvmStatic + fun queryOrdersInAndWaitService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersInAndWaitService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + driverAppSn + ) //获取到司机端的sn + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) + } + + /** + * 查询订单剩余里程和时间 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRemaining( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRemaining( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRemaining")) + } + @JvmStatic + fun queryOrderRouteList( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRouteList")) + } + + /** + * 通过orderId查询订单信息(用于本地已经有orderId时) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderById( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderById( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerOrderQueryReqBean(driverAppSn, orderNo) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById")) + } + @JvmStatic + fun checkPhoneAndUpdateOrderStatus( + context: Context, + orderNo: String?, + phone: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo, phone) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + @JvmStatic + fun arrivedAndScore( + context: Context, + taxiPassengerScoreUpdateOrderReqBean: TaxiPassengerScoreUpdateOrderReqBean?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.arrivedAndScore( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + taxiPassengerScoreUpdateOrderReqBean + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + @JvmStatic + fun getAllScoreWorld( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getWorldAllStar( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arrivedAndScore")) + } + @JvmStatic + fun queryPilotStatus( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryPilotStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryPilotStatus")) + } + @JvmStatic + fun startServicePilotDone( + context: Context, + orderNo: String?, + loc: TaxiPassengerStartReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.startServicePilotDone( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerStartReqBean( + driverAppSn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) + } + @JvmStatic + fun getWorldByStar( + context: Context, + start: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getWorldByStar( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + start + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt index 6f56314a9f..548280ca96 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt @@ -25,13 +25,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.OverlayViewUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.wigets.OCHBorderShadowLayout import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback import com.mogo.och.taxi.passenger.callback.ITaxiPassengerScoreCallback -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager import com.mogo.och.taxi.passenger.ui.comment.adapter.CommentAdapter import com.mogo.och.taxi.passenger.widget.ResizeAnimation @@ -412,8 +412,8 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { } private fun requestStarWord() { - TaxiPassengerServiceManager.getInstance().getAllScoreWorld(context, - object : TaxiPassengerServiceCallback { + TaxiPassengerServiceManager.getAllScoreWorld(context, + object : OchCommonServiceCallback { override fun onError() { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, @@ -436,8 +436,8 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { } private fun requestStarWordByStar(start:Int) { - TaxiPassengerServiceManager.getInstance().getWorldByStar(context,start.toString(), - object : TaxiPassengerServiceCallback { + TaxiPassengerServiceManager.getWorldByStar(context,start.toString(), + object : OchCommonServiceCallback { override fun onError() { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 45a0278c55..3ee4f3d7af 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -36,6 +36,7 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.common.module.biz.constant.OchCommonConst; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -62,7 +63,6 @@ import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.constant.TaxiOrderTypeEnum; import com.mogo.och.taxi.constant.TaxtServingStatusManager; -import com.mogo.och.taxi.network.TaxiServiceCallback; import com.mogo.och.taxi.network.TaxiServiceManager; import com.mogo.och.taxi.utils.TaxiAnalyticsManager; import com.mogo.och.taxi.utils.OrderUtil; @@ -264,8 +264,8 @@ public class TaxiModel { loginService.queryLoginStatusByNet(); return; } - TaxiServiceManager.getInstance().changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(), - new TaxiServiceCallback() { + TaxiServiceManager.changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(), + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code) { @@ -297,8 +297,8 @@ public class TaxiModel { * 才更新最新进行中单到本地 */ public void queryInAndWaitOrders() { - TaxiServiceManager.getInstance().queryOrdersInAndWaitService(mContext, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrdersInAndWaitService(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(OrdersInServiceQueryRespBean data) { if (data == null || data.data == null) { @@ -373,8 +373,8 @@ public class TaxiModel { return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderQueryRespBean data) { if (data != null && data.data != null @@ -407,8 +407,8 @@ public class TaxiModel { return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiServiceManager.getInstance().cancelOrder(mContext, orderNo, reasonType, reason, - new TaxiServiceCallback() { + TaxiServiceManager.cancelOrder(mContext, orderNo, reasonType, reason, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code @@ -439,8 +439,8 @@ public class TaxiModel { // 取消待服务中订单 public void cancelOrderById(final String orderNo, int reasonType, String reason) { - TaxiServiceManager.getInstance().cancelOrder(mContext, orderNo, reasonType, reason, - new TaxiServiceCallback() { + TaxiServiceManager.cancelOrder(mContext, orderNo, reasonType, reason, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code) { @@ -472,8 +472,8 @@ public class TaxiModel { return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiServiceManager.getInstance().queryOrderRouteInfo(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderRouteInfo(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderQueryRouteInfoRespBean data) { if (null != data && 0 == data.code @@ -493,8 +493,8 @@ public class TaxiModel { // 获取全部订单列表 public void queryOrdersList(int page, int size) { - TaxiServiceManager.getInstance().queryOrdersList(mContext, page, size, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrdersList(mContext, page, size, + new OchCommonServiceCallback() { @Override public void onSuccess(OrdersListQueryRespBean data) { if (null != data && 0 == data.code) { @@ -526,8 +526,8 @@ public class TaxiModel { * 注:只有在本地缓存mNewBookingOrder为null时(执行完抢单or司机关闭改单),才更新新到待抢单 */ public void queryNewBookingOrder() { - TaxiServiceManager.getInstance().queryNewBookingOrder(mContext, - new TaxiServiceCallback() { + TaxiServiceManager.queryNewBookingOrder(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(OrdersNewBookingQueryRespBean data) { if (data != null && data.code == 0 @@ -554,8 +554,8 @@ public class TaxiModel { // 仅限于获取到新待抢单且需要展示时查询该单信息:(queryOrderById接口可以查询属于该车的单、未派的单) private void queryNewBookingContent(final String orderNo) { - TaxiServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderQueryRespBean data) { if (data != null && data.code == 0 @@ -585,8 +585,8 @@ public class TaxiModel { return; } final String orderNo = mNewBookingOrder.orderNo; - TaxiServiceManager.getInstance().grabOrder(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.grabOrder(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderGrabRespBean data) { if (data != null && data.code == 0 @@ -624,8 +624,8 @@ public class TaxiModel { return; } final String orderNo = mNewBookingOrder.orderNo; - TaxiServiceManager.getInstance().queryOrderGrabStatus(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderGrabStatus(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderGrabStatusQueryRespBean data) { //TaxiModelLoopManager.getInstance().stopGrabResultLoop(); @@ -663,8 +663,8 @@ public class TaxiModel { // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { - TaxiServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, - new TaxiServiceCallback() { + TaxiServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -679,8 +679,8 @@ public class TaxiModel { // 查询司机服务数据 public void queryDriverServiceData() { - TaxiServiceManager.getInstance().queryDriverServiceData(mContext, - new TaxiServiceCallback() { + TaxiServiceManager.queryDriverServiceData(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(DriverServiceDataRespBean data) { if (data != null && data.code == 0 @@ -716,10 +716,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().confirmAutopilotConditionByDriver(mContext, + TaxiServiceManager.confirmAutopilotConditionByDriver(mContext, mCurrentOCHOrder.orderNo, result, - new TaxiServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -747,8 +747,8 @@ public class TaxiModel { public void queryAutopilotStatus(){ if (mCurrentOCHOrder == null) return; - TaxiServiceManager.getInstance().queryAutopilotStatus(mContext, mCurrentOCHOrder.orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryAutopilotStatus(mContext, mCurrentOCHOrder.orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { if (data != null && data.code == 0) @@ -1257,8 +1257,8 @@ public class TaxiModel { public void updateOrderRoute(List models) { if (null == mCurrentOCHOrder) return; List points = coordinateConverterWgsToGcjList(mContext, models); - TaxiServiceManager.getInstance().updateOrderRoute(mContext, mCurrentOCHOrder.orderNo - , points, new TaxiServiceCallback() { + TaxiServiceManager.updateOrderRoute(mContext, mCurrentOCHOrder.orderNo + , points, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -1368,8 +1368,8 @@ public class TaxiModel { */ private void queryOrderRouteList(String orderNo) { if (mCurrentOCHOrder != null) { - TaxiServiceManager.getInstance().queryOrderRoute(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderRoute(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(QueryOrderRouteResp data) { if (data != null && data.data != null && mRoutePoints.size() == 0) { @@ -1414,8 +1414,8 @@ public class TaxiModel { */ private void reportOrderRemain(long lastSumLength, long duration) {// 米/分钟 if (mCurrentOCHOrder == null) return; - TaxiServiceManager.getInstance().reportOrderRemain(mContext, mCurrentOCHOrder.orderNo - , lastSumLength, duration, new TaxiServiceCallback() { + TaxiServiceManager.reportOrderRemain(mContext, mCurrentOCHOrder.orderNo + , lastSumLength, duration, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -1440,10 +1440,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().updatePassengerHasBoardedStatus(mContext + TaxiServiceManager.updatePassengerHasBoardedStatus(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1462,10 +1462,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().startServicePilotDone(mContext + TaxiServiceManager.startServicePilotDone(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1482,10 +1482,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().arrivedStartPoint(mContext + TaxiServiceManager.arrivedStartPoint(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1503,10 +1503,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().arriveTerminal(mContext + TaxiServiceManager.arriveTerminal(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1524,10 +1524,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().orderCompleted(mContext + TaxiServiceManager.orderCompleted(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { // if (null != data && 0 == data.code){ diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java deleted file mode 100644 index 2f3e2ed507..0000000000 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.taxi.network; - -/** - * @author congtaowang - * @since 2021/1/15 - * - * 修改订单状态回调接口 - */ -public interface TaxiServiceCallback< T > { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java deleted file mode 100644 index 1d99bce35c..0000000000 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java +++ /dev/null @@ -1,463 +0,0 @@ -package com.mogo.och.taxi.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.taxi.bean.CarHeartbeatReqBean; -import com.mogo.och.taxi.bean.DriverServiceDataRespBean; -import com.mogo.och.taxi.bean.DriverStatusUpdateReqBean; -import com.mogo.och.taxi.bean.OrderCancelReqBean; -import com.mogo.och.taxi.bean.OrderGrabReqBean; -import com.mogo.och.taxi.bean.OrderGrabRespBean; -import com.mogo.och.taxi.bean.OrderGrabStatusQueryRespBean; -import com.mogo.och.taxi.bean.OrderQueryReqBean; -import com.mogo.och.taxi.bean.OrderQueryRespBean; -import com.mogo.och.taxi.bean.OrderQueryRouteInfoReqBean; -import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; -import com.mogo.och.taxi.bean.OrderRouteUpdateReqBean; -import com.mogo.och.taxi.bean.OrderStatusUpdateReqBean; -import com.mogo.och.taxi.bean.OrdersInServiceQueryRespBean; -import com.mogo.och.taxi.bean.OrdersListQueryReqBean; -import com.mogo.och.taxi.bean.OrdersListQueryRespBean; -import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean; -import com.mogo.och.taxi.bean.QueryOrderRouteResp; -import com.mogo.och.taxi.bean.TaxiDataBaseRespBean; -import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean; -import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean; -import com.mogo.och.taxi.constant.TaxiConst; - -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class TaxiServiceManager { - private static final String TAG = TaxiServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final TaxiServiceManager INSTANCE = new TaxiServiceManager(); - } - - public static TaxiServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private TaxiServiceApiNew mOCHTaxiServiceApi; - - private TaxiServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(TaxiConst.getBaseUrl()).create(TaxiServiceApiNew.class); - } - } - - /** - * 查询全部服务中/待服务订单列表 - * @param context - * @param callback - */ - public void queryOrdersInAndWaitService(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersInAndWaitService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersInAndWaitService")); - } - - /** - * 查询新到的预约单 - * @param context - * @param callback - */ - public void queryNewBookingOrder(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryNewBookingOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryNewBookingOrder")); - } - - /** - * (预约单)执行抢单动作 - * @param context - * @param orderNo - * @param callback - */ - public void grabOrder(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.grabOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderGrabReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "grabOrder")); - } - - /** - * (预约单)查询抢单结果 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderGrabStatus(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderGrabStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderGrabReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderGrabStatus")); - } - - /** - * 查询订单路径规划信息(到上车点、起始点间的距离和预估时间) - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRouteInfo(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderRouteInfo(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderQueryRouteInfoReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRouteInfo")); - } - - /** - * 通过orderId查询订单信息(用于本地已经有orderId时) - * @param context - * @param orderNo - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderById(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderById(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderQueryReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderById")); - } - - /** - * 查询未完成态订单信息(用于本地无orderId时) - * 如果有多条,只会返回时间最近的一条 - * @param context - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderInService(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderInService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderInService")); - } - - /** - * 司机取消订单 - * @param context - * @param orderNo - * @param cancelType - * @param cancelReason - * @param callback - */ - public void cancelOrder(Context context, String orderNo, int cancelType, String cancelReason, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.cancelOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderCancelReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo, cancelType, cancelReason)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "cancelOrder")); - } - - /** - * 订单列表获取 - * @param context - * @param page - * @param size - * @param callback - */ - public void queryOrdersList(Context context, int page, int size, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersList(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrdersListQueryReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), page, size)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersList")); - } - - /** - * 订单状态更新 - * @param context - * @param orderNo - * @param orderStatus - * @param callback - */ - public void updateOrderStatus(Context context, String orderNo, int orderStatus, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.updateOrderStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderStatusUpdateReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo, orderStatus)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "updateOrderStatus")); - } - - - /** - * 暂停接单 - * @param context - * @param callback - */ - public void changeOrderServing(Context context,boolean isOrdering, - TaxiServiceCallback callback) { - Observable baseDataObservable = null; - if(isOrdering) {// 正在接单去暂停 - baseDataObservable = mOCHTaxiServiceApi.stopOrderServing(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new DriverStatusUpdateReqBean( - MoGoAiCloudClientConfig.getInstance().getSn())); - }else {// 没有接单去接单 - baseDataObservable = mOCHTaxiServiceApi.resetOrderServing(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new DriverStatusUpdateReqBean( - MoGoAiCloudClientConfig.getInstance().getSn())); - } - baseDataObservable.subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "updateDriverServiceStatus")); - } - - /** - * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 - * @param context - * @param lon - * @param lat - * @param callback - */ - public void runCarHeartbeat(Context context, double lon, double lat, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.runCarHeartbeat(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new CarHeartbeatReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), lon, lat)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "runCarHeartbeat")); - } - - /** - * 查询司机服务数据 - * @param context - * @param callback - */ - public void queryDriverServiceData(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryServiceData(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceData")); - } - - /** - * 根据订单上传工控机返回的全路径规划数据 - * @param context - * @param orderNo - * @param callback - */ - public void updateOrderRoute(Context context, String orderNo, List points, - TaxiServiceCallback callback){ - mOCHTaxiServiceApi.updateOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderRouteUpdateReqBean(orderNo,points)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"updateOrderRoute")); - } - - /** - * 上报剩余里程,时间 - * @param context - * @param orderNo - * @param distance - * @param duration - * @param callback - */ - public void reportOrderRemain(Context context, String orderNo, long distance, long duration - , TaxiServiceCallback callback){ - - mOCHTaxiServiceApi.reportOrderRemain(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new UpdateOrderDisAndTimeReqBean(orderNo,distance,duration)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"reportOrderRemain")); - } - - /** - * 查询订单全路径 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRoute(Context context, String orderNo, TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryOrderRoute")); - } - - public void confirmAutopilotConditionByDriver(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.confirmAutopilotConditionByDriver( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"confirmAutopilotConditionByDriver")); - } - - public void queryAutopilotStatus(Context context, String orderNo, - TaxiServiceCallback callback){ - mOCHTaxiServiceApi.queryPilotStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryAutopilotStatus")); - } - - public void updatePassengerHasBoardedStatus(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - - mOCHTaxiServiceApi.updatePassengerHasBoardedStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "updatePassengerHasBoardedStatus")); - } - - public void startServicePilotDone(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.startServicePilotDone(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "startServicePilotDone")); - } - - public void arrivedStartPoint(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.arrivedStartPoint(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arrivedStartPoint")); - - } - - public void arriveTerminal(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.arriveTerminal(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arriveTerminal")); - - } - - - public void orderCompleted(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.orderCompleted(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "orderCompleted")); - - } - - private SubscribeImpl getSubscribeImpl( - Context context, TaxiServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.d(M_TAXI + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI + TAG,apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt new file mode 100644 index 0000000000..6d85432699 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt @@ -0,0 +1,497 @@ +package com.mogo.och.taxi.network + +import android.content.Context +import com.mogo.och.taxi.constant.TaxiConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.biz.network.interceptor.transformTry +import com.mogo.och.taxi.bean.* +import io.reactivex.Observable + +/** + * Created by pangfan on 2021/8/19 + */ +object TaxiServiceManager { + + + private var mOCHTaxiServiceApi: TaxiServiceApiNew = + MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + TaxiServiceApiNew::class.java + ) + + /** + * 查询全部服务中/待服务订单列表 + * @param context + * @param callback + */ + @JvmStatic + fun queryOrdersInAndWaitService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersInAndWaitService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) + } + + /** + * 查询新到的预约单 + * @param context + * @param callback + */ + @JvmStatic + fun queryNewBookingOrder( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryNewBookingOrder( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryNewBookingOrder")) + } + + /** + * (预约单)执行抢单动作 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun grabOrder( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.grabOrder( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderGrabReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "grabOrder")) + } + + /** + * (预约单)查询抢单结果 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderGrabStatus( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderGrabStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderGrabReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderGrabStatus")) + } + + /** + * 查询订单路径规划信息(到上车点、起始点间的距离和预估时间) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRouteInfo( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRouteInfo( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderQueryRouteInfoReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRouteInfo")) + } + + /** + * 通过orderId查询订单信息(用于本地已经有orderId时) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderById( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderById( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderQueryReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById")) + } + + /** + * 查询未完成态订单信息(用于本地无orderId时) + * 如果有多条,只会返回时间最近的一条 + * @param context + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderInService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderInService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderInService")) + } + + /** + * 司机取消订单 + * @param context + * @param orderNo + * @param cancelType + * @param cancelReason + * @param callback + */ + @JvmStatic + fun cancelOrder( + context: Context, orderNo: String?, cancelType: Int, cancelReason: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.cancelOrder( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderCancelReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, cancelType, cancelReason + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "cancelOrder")) + } + + /** + * 订单列表获取 + * @param context + * @param page + * @param size + * @param callback + */ + @JvmStatic + fun queryOrdersList( + context: Context, page: Int, size: Int, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersList( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrdersListQueryReqBean( + MoGoAiCloudClientConfig.getInstance().sn, page, size + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersList")) + } + + /** + * 订单状态更新 + * @param context + * @param orderNo + * @param orderStatus + * @param callback + */ + @JvmStatic + fun updateOrderStatus( + context: Context, orderNo: String?, orderStatus: Int, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.updateOrderStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderStatusUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, orderStatus + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderStatus")) + } + + /** + * 暂停接单 + * @param context + * @param callback + */ + @JvmStatic + fun changeOrderServing( + context: Context, isOrdering: Boolean, + callback: OchCommonServiceCallback? + ) { + val baseDataObservable: Observable = if (isOrdering) { // 正在接单去暂停 + mOCHTaxiServiceApi.stopOrderServing( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + DriverStatusUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn + ) + ).transformTry() + } else { // 没有接单去接单 + mOCHTaxiServiceApi.resetOrderServing( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + DriverStatusUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn + ) + ).transformTry() + } + baseDataObservable + .subscribe(OchCommonSubscribeImpl(context, callback, "updateDriverServiceStatus")) + } + + /** + * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 + * @param context + * @param lon + * @param lat + * @param callback + */ + @JvmStatic + fun runCarHeartbeat( + context: Context, lon: Double, lat: Double, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.runCarHeartbeat( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + CarHeartbeatReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lon, lat + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat")) + } + + /** + * 查询司机服务数据 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverServiceData( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryServiceData( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceData")) + } + + /** + * 根据订单上传工控机返回的全路径规划数据 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun updateOrderRoute( + context: Context, orderNo: String?, points: List?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.updateOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderRouteUpdateReqBean(orderNo, points) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute")) + } + + /** + * 上报剩余里程,时间 + * @param context + * @param orderNo + * @param distance + * @param duration + * @param callback + */ + @JvmStatic + fun reportOrderRemain( + context: Context, + orderNo: String?, + distance: Long, + duration: Long, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.reportOrderRemain( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + UpdateOrderDisAndTimeReqBean(orderNo, distance, duration) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "reportOrderRemain")) + } + + /** + * 查询订单全路径 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRoute( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRoute")) + } + @JvmStatic + fun confirmAutopilotConditionByDriver( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.confirmAutopilotConditionByDriver( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "confirmAutopilotConditionByDriver")) + } + @JvmStatic + fun queryAutopilotStatus( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryPilotStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryAutopilotStatus")) + } + @JvmStatic + fun updatePassengerHasBoardedStatus( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.updatePassengerHasBoardedStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updatePassengerHasBoardedStatus")) + } + @JvmStatic + fun startServicePilotDone( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.startServicePilotDone( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) + } + @JvmStatic + fun arrivedStartPoint( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.arrivedStartPoint( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arrivedStartPoint")) + } + @JvmStatic + fun arriveTerminal( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback + ) { + mOCHTaxiServiceApi.arriveTerminal( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arriveTerminal")) + } + @JvmStatic + fun orderCompleted( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback + ) { + mOCHTaxiServiceApi.orderCompleted( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "orderCompleted")) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt index 37709763dd..141a3ef9d7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt @@ -24,7 +24,7 @@ class BusOperationView @JvmOverloads constructor( init { LayoutInflater.from(context).inflate(R.layout.view_och_bus_operation,this,true) context?.let { - actvAccountPhone.text = SharedPrefs.getInstance(it).getString("account","") + actvAccountPhone.text = phoneMask(SharedPrefs.getInstance(it).getString("och_account","")) } } From 30e68dca448dcc961bced35b46f33600702c86d3 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 12 Oct 2022 19:07:54 +0800 Subject: [PATCH 002/137] =?UTF-8?q?[2.12.0]=201=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=B0=E7=9B=AE=E7=9A=84=E5=9C=B0=E5=AF=BC=E8=88=AA=E6=8C=89?= =?UTF-8?q?=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/TaxiBeingServerdOrdersFragment.java | 14 ++++++++--- .../och/taxi/ui/TaxiServerOrdersFragment.java | 5 +--- .../src/main/res/layout/taxi_being_order.xml | 24 +++++++++++++++---- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index 8d0fa9709d..4a8afee6ae 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -81,12 +81,13 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement private LinearLayout mContentModule31; private TextView mStationTv31; - private LinearLayout mContentModule32; + private ConstraintLayout mContentModule32; private TextView mStationTv32; private TextView mArrivedStationTitleTv32; private TextView mGoAheadStationTitleTv31; private TextView mCatchStationTitleTv31; private ImageView mNaviIcon; + private ImageView mNaviToEndIcon; private TextView mPassengerNum; private TextView mPassengerPhone; private ConstraintLayout mPassengerInfoLayout; @@ -171,6 +172,10 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement private void initNaviView(View view) { mNaviIcon = view.findViewById(R.id.module_och_taxi_navi_iv); mNaviIcon.setOnClickListener(this); + + mNaviToEndIcon = view.findViewById(R.id.module_och_taxi_navi_end_iv); + mNaviToEndIcon.setOnClickListener(this); + } /** @@ -384,6 +389,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement mDistanceAndTime3.setText(Html.fromHtml(strHtml2)); mNaviIcon.setVisibility(View.VISIBLE); } else if (mContentModule2 != null && mContentModule2.getVisibility() == View.VISIBLE) { //前往终点 时间单位是分钟 + mNaviIcon.setVisibility(View.VISIBLE); if (mTtsLessThan200Tip < 1 && meters <= 250 && meters > 150){ speekVoice200mTipsOnce(); } @@ -556,11 +562,13 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement } else if (v.getId() == R.id.module_och_taxi_order_cancel_iv) { new TaxiOrderCancelDialog(mTaxiFragment, mActivity, mOrderNo, saveOrderState).show(); } else if (v.getId() == R.id.module_och_taxi_navi_iv) { - // TODO: 2021/11/30 打开去往乘客上车点的导航页面 if (mTaxiFragment != null) { showNaviToStartStationFragment(true); } - } else if (v.getId() == R.id.taxi_start_by_auto){//自驾模式 + } else if (v.getId() == R.id.module_och_taxi_navi_end_iv){ + // TODO: 2021/11/30 打开去往乘客下车点的导航页面 + + }else if (v.getId() == R.id.taxi_start_by_auto){//自驾模式 CallerLogger.INSTANCE.d(M_TAXI + TAG, "自驾模式"); mOrderStartModeBtn.setTag(0); startOrEndService(); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java index 0e4f2bd53b..6ea26a2329 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java @@ -200,10 +200,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { if (null == beingServerdOrdersFragment) return; beingServerdOrdersFragment.onCurrentOrderCancelDone(); } - public void onCurrentOrderDistToStartChanged(long meters, long timeInSecond){ - if (null == beingServerdOrdersFragment) return; - beingServerdOrdersFragment.updateDistanceAndTime(meters,timeInSecond); - } + public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond){ if (null == beingServerdOrdersFragment) return; beingServerdOrdersFragment.updateDistanceAndTime(meters,timeInSecond); diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml index 9cb4d3a230..17ce151518 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml @@ -205,7 +205,7 @@ - + tools:text="送乘客至" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent"/> - + tools:text="- -" + app:layout_constraintTop_toBottomOf="@+id/arrive_station_32" + app:layout_constraintLeft_toLeftOf="parent"/> + + + + Date: Mon, 17 Oct 2022 11:39:17 +0800 Subject: [PATCH 003/137] =?UTF-8?q?[feature]=20=E8=B7=91=E9=A9=AC=E7=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusPassengerLineStationsAdapter.java | 10 +++++- .../ui/BusPassengerRouteFragment.java | 3 +- .../main/res/layout/bus_p_route_fragment.xml | 8 +++-- .../res/layout/bus_p_stations_common_item.xml | 3 +- .../mogo/och/bus/fragment/BusFragment.java | 3 +- .../src/main/res/layout/fragment_och_bus.xml | 7 ++-- .../common/module/wigets/MarqueeTextView.java | 35 +++++++++++++++++++ 7 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java index 734edccdd6..565372b4a9 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java @@ -1,6 +1,7 @@ package com.mogo.och.bus.passenger.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.bean.BusPassengerStation; import com.mogo.och.common.module.utils.BlinkAnimationUtil; +import com.mogo.och.common.module.wigets.MarqueeTextView; import java.util.List; @@ -58,9 +60,11 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter - - public static final String TAG = "BusFragment"; private TextView mSwitchLine; //切换路线 - private TextView mLineName; + private MarqueeTextView mLineName; private TextView mTaskTime; private Group groupStationsPanel; private ConstraintLayout noDataView; diff --git a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml index 8609630b9c..1b9bbeec01 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml @@ -10,15 +10,16 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"> - Date: Mon, 17 Oct 2022 16:50:48 +0800 Subject: [PATCH 004/137] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=95=E6=A1=A9?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E5=92=8C=E7=BB=95=E6=A1=A9=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/proto/message_pad.proto | 21 +++++++++++++++---- .../zhidao/support/adas/high/AdasChannel.java | 19 +++++++++++++++++ .../zhidao/support/adas/high/AdasManager.java | 9 ++++++++ .../support/adas/high/IAdasNetCommApi.java | 5 +++++ .../support/adas/high/common/MessageType.java | 1 + 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 3c16b7d91f..b6ac7f2a10 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -4,7 +4,7 @@ package mogo.telematics.pad; enum ProtocolVersion { Defaultver = 0; - CurrentVersion = 7; //每次修改proto文件增加1 + CurrentVersion = 8; //每次修改proto文件增加1 } enum MessageType @@ -50,6 +50,7 @@ enum MessageType MsgTypeOperatorCmdReq = 0x10116; //操控指令 MsgTypeSubscribeDataReq = 0x10117; //数据订阅、取消订阅请求 MsgTypeSpecialVehicleTaskCmd = 0x10118; //特种车辆命令 + MsgTypeSetParamReq = 0x10119; //设置参数命令 } message Header @@ -141,11 +142,11 @@ message GnssInfo // message definition for MessageType: MsgTypeAutopilotState message AutopilotState { - uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中,3:平行驾驶 + uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中 uint32 camera = 2; //camera节点状态 1:开启,0:关闭 uint32 radar = 3; //雷达节点状态 1:开启,0:关闭 uint32 rtk = 4; //RTK节点状态 1:开启,0:关闭 - uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶,2平行驾驶 + uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶 double speed = 6; //惯导车速 m/s string reason = 7; //不可用原因(abandoned) } @@ -166,7 +167,7 @@ message AutopilotState message PlanningObject { uint32 uuid = 1; - uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 0是leading障碍物,1是避障和择机的障碍物 + uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 } message PlanningObjects @@ -466,3 +467,15 @@ message PlanningActionMsg //message definition for MsgTypeSpecialVehicleTaskCmd //refer to special_vehicle_task_cmd.proto for details +//message definition for MsgTypeSetParamReq +message SetOneParam +{ + uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) + string value = 2; // 转成字符串的值 +} + +message SetParamReq +{ + repeated SetOneParam reqs = 1; +} + diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index daa4366e6e..62f257b274 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -14,6 +14,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SO import android.os.SystemClock; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -300,6 +301,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec if (mSocket == null || bytes == null || bytes.length <= 0) { return false; } + Log.d("liyz", "sendWsMessag bytes = " + bytes); //TODO ByteString byteString = ByteString.of(bytes); if (!byteString.startsWith(Constants.RAW_MG)) { CupidLogUtils.e(TAG, "协议不匹配,命令下发失败 bytes=" + ByteUtil.byteArrToHex(bytes)); @@ -1194,5 +1196,22 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec public boolean sendOperatorCmdStopHonking() { return sendOperatorCmdSetHorn(2); } + + /** + * 绕障开关和速度控制 + * @param type + * @param value + */ + @Override + public boolean setDetouring(int type, String value) { + MessagePad.SetOneParam oneParam = MessagePad.SetOneParam + .newBuilder().setType(type).setValue(value).build(); + MessagePad.SetParamReq req = MessagePad.SetParamReq + .newBuilder() + .addReqs(oneParam) + .build(); + return sendPBMessage(MessageType.TYPE_SEND_DETOURING_DATA_REQ.typeCode, req.toByteArray()); + } + } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 35b0554b2e..a682ee6249 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -570,6 +570,15 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendOperatorCmdStopHonking(); } + /** + * 绕障开关和速度控制 + * @param type + * @param value + */ + @Override + public boolean setDetouring(int type, String value) { + return mChannel != null && mChannel.setDetouring(type, value); + } /** * 获取工控机固定IP列表 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 6fc73c2beb..62f9a2fb14 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -349,6 +349,11 @@ public interface IAdasNetCommApi { */ void setEnableLog(boolean isEnableLog); + /** + * 绕障开关和速度相关 + */ + boolean setDetouring(int type, String value); + /** * 获取与当前连接工控机兼容性 * 连接状态=已连接 时正常返回,其他状态全部为null diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 7fada1ae8e..625b824321 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -49,6 +49,7 @@ public enum MessageType { TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), + TYPE_SEND_DETOURING_DATA_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "绕障开关和阈值"), //透传 原始pb文件中不存在以下type。由于Java中无法强转所以在mogo-adas-data message_pad.proto中放开注释 TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"); From ebac03d7f2c0cc633143fc83bf89ca27d33daac9 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 17 Oct 2022 18:04:11 +0800 Subject: [PATCH 005/137] =?UTF-8?q?[feature]=20=E9=80=9A=E8=BF=87=E5=8F=8D?= =?UTF-8?q?=E5=B0=84=E8=B0=83=E6=95=B4=E9=97=B4=E9=9A=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/bus_p_route_fragment.xml | 2 + .../res/layout/bus_p_stations_common_item.xml | 2 + .../och/common/module/utils/FieldUtils.java | 37 ++++++++ .../common/module/wigets/MarqueeTextView.java | 94 +++++++++++++++++++ .../src/main/res/values/attrs.xml | 5 + 5 files changed, 140 insertions(+) create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml index 557740ae89..7a7792bdc1 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml @@ -115,6 +115,8 @@ android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="----" + app:customGap="0.5" + app:useCustomGap="true" android:textColor="@color/bus_p_line_name_color" android:textSize="@dimen/bus_p_driver_number_plate_size" android:textStyle="bold" diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml index 9416bfb1c8..d33ecffc3a 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml @@ -18,6 +18,8 @@ android:layout_marginRight="@dimen/dp_60" android:textColor="@color/bus_p_station_txt_color" android:layout_marginLeft="@dimen/dp_90" + app:customGap="0.5" + app:useCustomGap="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/bus_p_tag" app:layout_constraintTop_toBottomOf="@+id/bus_p_cur_arrow_bg"/> diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java new file mode 100644 index 0000000000..9dc909d19c --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java @@ -0,0 +1,37 @@ +package com.mogo.och.common.module.utils; + +import android.text.TextUtils; + +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Modifier; + +public class FieldUtils { + + public static Field getDeclaredField(final Class cls, final String fieldName, final + boolean forceAccess) { + if (cls == null || TextUtils.isEmpty(fieldName)) { + return null; + } + try { + // only consider the specified class by using getDeclaredField() + final Field field = cls.getDeclaredField(fieldName); + if (!isAccessible(field)) { + if (forceAccess) { + field.setAccessible(true); + } else { + return null; + } + } + return field; + } catch (final Exception e) { + e.printStackTrace(); + } + return null; + } + + + private static boolean isAccessible(final Member m) { + return m != null && Modifier.isPublic(m.getModifiers()) && !m.isSynthetic(); + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java index 31c979747d..884d504338 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java @@ -1,12 +1,31 @@ package com.mogo.och.common.module.wigets; import android.content.Context; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.ViewDebug; +import android.widget.TextView; + +import com.mogo.och.common.module.R; +import com.mogo.och.common.module.utils.FieldUtils; + +import java.lang.reflect.Field; public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView{ + /** + * 上一次设置的时间,用于过滤多余操作 + */ + private long mLastSetTime; + /** + * 自定义 gap + */ + private float mCustomGap = 0.3f; + /** + * 是否使用自定义 gap + */ + private boolean mUseCustomGap; public MarqueeTextView(Context context) { this(context, null); @@ -18,6 +37,11 @@ public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MarqueeTextView); + mCustomGap = typedArray.getFloat(R.styleable.MarqueeTextView_customGap, mCustomGap); + mUseCustomGap = typedArray.getBoolean(R.styleable.MarqueeTextView_useCustomGap, false); + typedArray.recycle(); } @Override @@ -32,4 +56,74 @@ public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView return true; } + @Override + public void invalidate() { + reflectToChangeGap(); + + super.invalidate(); + } + + private void reflectToChangeGap() { + if (!mUseCustomGap) { + return; + } + if (System.currentTimeMillis() - mLastSetTime < 1000) { + // 1s 内不重新设置,过滤多余操作 + return; + } + try { + Class marqueClass = null; + Class[] innerClazz = TextView.class.getDeclaredClasses(); + for (Class clazz : innerClazz) { + if ("Marquee".equals(clazz.getSimpleName())) { + marqueClass = clazz; + } + } + + if (marqueClass == null) { + return; + } + + Field field1 = FieldUtils.getDeclaredField(marqueClass, "mGhostStart", true); + + if (field1 == null) { + return; + } + + final int textWidth = getWidth() - getCompoundPaddingLeft() - getCompoundPaddingRight(); + final float lineWidth = getLayout().getLineWidth(0); + final float gap = mCustomGap*textWidth; + float ghostStart = lineWidth - textWidth + gap; + float maxScroll = ghostStart + textWidth; + float ghostOffset = lineWidth + gap; + float maxFadeScroll = ghostStart + lineWidth + lineWidth; + + final Field field = FieldUtils.getDeclaredField(TextView.class, "mMarquee", true); + if (field != null) { + Object mMarque = field.get(this); + if (mMarque != null) { + mLastSetTime = System.currentTimeMillis(); + float mGhostStart = (float) field1.get(mMarque); + if (mGhostStart != ghostStart) { + // 需要设置的 mGhostStart 与当前 ghostStart 不相等时才去设置 + Field field2 = FieldUtils.getDeclaredField(marqueClass, "mMaxScroll", true); + Field field3 = FieldUtils.getDeclaredField(marqueClass, "mGhostOffset", true); + Field field4 = FieldUtils.getDeclaredField(marqueClass, "mMaxFadeScroll", true); + + if (field2 == null || field3 == null || field4 == null) { + return; + } + + field1.set(mMarque, ghostStart); + field2.set(mMarque, maxScroll); + field3.set(mMarque, ghostOffset); + field4.set(mMarque, maxFadeScroll); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } diff --git a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml index 27efdf3802..9043a1d2ad 100644 --- a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml +++ b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml @@ -52,4 +52,9 @@ + + + + + \ No newline at end of file From e3d60b975e628ac276dc1424662ad82ea9c408b3 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Tue, 18 Oct 2022 10:58:38 +0800 Subject: [PATCH 006/137] [2.12.0] opt --- .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 4 +-- .../ui/TaxiBeingServerdOrdersFragment.java | 32 ++++++++++++++++--- .../mogo/och/taxi/ui/TaxiNaviFragment.java | 8 +---- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index c7e70d1105..a94a80e47b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -291,7 +291,7 @@ public abstract class BaseTaxiTabFragment { - showNaviToStartStationFragment(false); + showNaviToStationFragment(false); }); } @@ -564,7 +564,7 @@ public abstract class BaseTaxiTabFragment @@ -198,12 +198,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_84" - android:layout_marginTop="@dimen/dp_129" + android:layout_marginTop="308px" android:text="@string/taxi_p_check_input_phone_tail_title" android:textColor="@color/taxi_p_check_keyboard_samll_mogo_color" - android:textSize="@dimen/sp_36" + android:textSize="@dimen/dp_36" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tv_taxi_number" /> + app:layout_constraintTop_toTopOf="parent" /> - - + app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_back" + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" /> + app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_zero" + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" /> - - - - + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_seven" /> + + + + + + + + + @@ -340,7 +347,7 @@ - - diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml index e50749e0fd..6776cc12e1 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml @@ -28,7 +28,7 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index ae03721b01..d405d83176 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -43,6 +43,10 @@ class SOPSettingView @JvmOverloads constructor( } + if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + tbMarkingObstacles.visibility = View.GONE + } + //引导线动态效果 tbRouteDynamicEffect.isChecked = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) && !AppIdentityModeUtils.isBus( @@ -154,6 +158,14 @@ class SOPSettingView @JvmOverloads constructor( } } + if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + tvSpeedThresholdTitle.visibility = View.GONE + ivSpeedReduce.visibility = View.GONE + tvSpeed.visibility = View.GONE + ivSpeedAdd.visibility = View.GONE + btnSpeedSet.visibility = View.GONE + } + } } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordTypeEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordTypeEntity.kt new file mode 100644 index 0000000000..476972c1e4 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordTypeEntity.kt @@ -0,0 +1,8 @@ +package com.mogo.eagle.core.data.badcase + +/** + * @author XuXinChao + * @description BadCase录制模板实体类 + * @since: 2022/10/25 + */ +data class RecordTypeEntity(var id: Int,var desc: String,var topicsList:ArrayList) \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 044b4931c1..8521f85b31 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -259,10 +259,12 @@ object CallerAutoPilotManager { * @param recordType 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合 * @param topicsNeedToCache */ - fun getBadCaseConfig(reqType: Int,recordType: Int,topicsNeedToCache: List){ + fun getBadCaseConfig(reqType: Int,recordType: Int,topicsNeedToCache: List): Boolean?{ // 司机屏才能查询数据采集的配置 if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - providerApi?.getBadCaseConfig(reqType, recordType, topicsNeedToCache) + return providerApi?.getBadCaseConfig(reqType, recordType, topicsNeedToCache) + }else{ + return false } } From e20abe099be7ce9a65a957d551c82c487fb96a13 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 26 Oct 2022 10:57:20 +0800 Subject: [PATCH 049/137] =?UTF-8?q?[2.12.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E5=8F=82=E6=95=B0=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/utils/CoordinateCalculateRouteUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java index 2f092a2c47..3ab7e47426 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java @@ -164,7 +164,7 @@ public class CoordinateCalculateRouteUtil { // Logger.d(M_TAXI + "calculateRouteSumLength", "点:"+currentIndex+"-------是最近的点------ "); if (currentIndex == mRoutePoints.size()-1){ latePoints.add(mRoutePoints.get(currentIndex)); - }else { + }else if(currentIndex < mRoutePoints.size()-1){ latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size()-1)); } return latePoints; From 9300baf426baed28908e6c7615762f93eafcd250 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 26 Oct 2022 11:34:02 +0800 Subject: [PATCH 050/137] =?UTF-8?q?[change]=20=E6=9B=B4=E6=96=B0=E8=A1=8C?= =?UTF-8?q?=E7=A8=8B=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/bus/util/BusSendTripInfoManager.kt | 2 +- .../zhidao/adas/client/ui/MainActivity.java | 6 ++- .../autopilot/MoGoAutopilotProvider.kt | 21 ++++++---- .../core/function/hmi/ui/MoGoHmiFragment.kt | 2 +- .../api/autopilot/IMoGoAutopilotProvider.kt | 19 ++++++---- .../call/autopilot/CallerAutoPilotManager.kt | 21 ++++++---- .../src/main/proto/message_pad.proto | 7 ++-- .../zhidao/support/adas/high/AdasChannel.java | 38 ++++++++++++------- .../zhidao/support/adas/high/AdasManager.java | 21 ++++++---- .../support/adas/high/IAdasNetCommApi.java | 15 +++++--- 10 files changed, 97 insertions(+), 55 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt index ebbe1adaee..21927b0403 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt @@ -26,6 +26,6 @@ object BusSendTripInfoManager{ fun sendBusTripInfo(type: Int, lineName: String, stationName: String, isLastStop: Boolean) { d(SceneConstant.M_BUS + "BusSendTripInfoManager", "type: "+ type +", lineName: "+ lineName + ", stationName: "+stationName+", isLastStop: "+isLastStop) - CallerAutoPilotManager.sendTripInfo(type,lineName,stationName,isLastStop) + CallerAutoPilotManager.sendTripInfo(type,lineName,stationName, "", isLastStop) } } diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 8bd832812b..5d5984277a 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -1368,7 +1368,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas break; case Constants.TITLE.SEND_TRIP_INFO: //行程信息 - AdasManager.getInstance().sendTripInfoReq(1, "", "", false); + AdasManager.getInstance().sendTripInfoReq(1, "x10", "x11", "x12", false); + AdasManager.getInstance().sendTripInfoReq(2, "x13", "x14", "x15", true); + AdasManager.getInstance().sendTripInfoReq(3, "x16", "x17", "x18", false); + AdasManager.getInstance().sendTripInfoReq(4, "x19", "x20", "x21", true); + AdasManager.getInstance().sendTripInfoReq(5, "x22", "x23", "x24", false); break; } } diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index c196118cf3..7d61c7c8f0 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -571,15 +571,20 @@ class MoGoAutopilotProvider : } /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - override fun sendTripInfo(type: Int, lineName: String, stopName: String, isLastStop: Boolean) { - AdasManager.getInstance().sendTripInfoReq(type, lineName, stopName, isLastStop) + override fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) { + AdasManager.getInstance().sendTripInfoReq(type, lineName, departureStopName,arrivalStopName, isLastStop) } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 7b615a4a4c..75d6ed49bb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -751,7 +751,7 @@ class MoGoHmiFragment : MvpFragment(), context?.let { it -> SharedPrefsMgr.getInstance(it).getLong("roadwork", 0) } if (currentTime - oldTime!! > 60) { //超过一分钟,才会继续播报重复提醒 context?.let { it -> SharedPrefsMgr.getInstance(it).putLong("roadwork", System.currentTimeMillis() / 1000) } - CallerAutoPilotManager.sendTripInfo(5, "", "", false); + CallerAutoPilotManager.sendTripInfo(5, "", "", "", false); } } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt index 947362f230..88cf35fb5b 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt @@ -264,12 +264,17 @@ interface IMoGoAutopilotProvider : IMoGoFunctionServerProvider { fun sendOperatorSetHorn(value: Double) /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否是最后一站 - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - fun sendTripInfo(type: Int, lineName: String, stopName: String, isLastStop: Boolean) + fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 044b4931c1..0671190d67 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -295,15 +295,20 @@ object CallerAutoPilotManager { } /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否终点站 - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - fun sendTripInfo(type: Int, lineName: String, stopName: String, isLastStop: Boolean) { - providerApi?.sendTripInfo(type, lineName, stopName, isLastStop) + fun sendTripInfo(type: Int, lineName: String, departureStopName: String, arrivalStopName: String, isLastStop: Boolean) { + providerApi?.sendTripInfo(type, lineName, departureStopName, arrivalStopName, isLastStop) } /** diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index f66599735b..8d17379521 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -489,9 +489,10 @@ message SetParamReq message TripInfoEvent { uint32 type = 1; //事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - string lineName = 2; //路线名, for type 1, 2 - string stopName = 3; //站点名, for type 3, 4 - bool isLastStop = 4; //是否最终站, for type 3, 4 + string lineName = 2; //路线名 + string departureStopName = 3; //出站站点名 + string arrivalStopName = 4; //下一站到达站点名 + bool isLastStop = 5; //下一站到达站是否最终站 } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index a10e71e0d9..e30c0fa60a 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -14,7 +14,6 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SO import android.os.SystemClock; import android.text.TextUtils; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -1264,22 +1263,35 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } /** + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 * - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop - * @return + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ @Override - public boolean sendTripInfoReq(int type, String lineName, String stopName, boolean isLastStop) { - MessagePad.TripInfoEvent req = MessagePad.TripInfoEvent + public boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop) { + MessagePad.TripInfoEvent.Builder builder = MessagePad.TripInfoEvent .newBuilder() - .setType(type) - .setLineName(lineName) - .setStopName(stopName) - .setIsLastStop(isLastStop) - .build(); + .setType(type); + if (type < 5) { + if (lineName != null) + builder.setLineName(lineName); + if (type == 3 || type == 4) { + if (departureStopName != null) + builder.setDepartureStopName(departureStopName); + if (arrivalStopName != null) + builder.setArrivalStopName(arrivalStopName); + builder.setIsLastStop(isLastStop); + } + } + MessagePad.TripInfoEvent req = builder.build(); return sendPBMessage(MessageType.TYPE_SEND_TRIP_INFO_REQ.typeCode, req.toByteArray()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 309cf44151..c6428cf401 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -654,16 +654,21 @@ public class AdasManager implements IAdasNetCommApi { } /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否终点站 - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ @Override - public boolean sendTripInfoReq(int type, String lineName, String stopName, boolean isLastStop) { - return mChannel != null && mChannel.sendTripInfoReq(type,lineName,stopName,isLastStop); + public boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop) { + return mChannel != null && mChannel.sendTripInfoReq(type, lineName, departureStopName, arrivalStopName, isLastStop); } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 76722ecdef..b0bb0c3403 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -382,13 +382,18 @@ public interface IAdasNetCommApi { /** * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 * - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @return boolean 是否最终站, for type 3, 4 + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - boolean sendTripInfoReq(int type, String lineName, String stopName, boolean isLastStop); + boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop); // TODO 需求暂停 待讨论 From 314a0899d605dee876cb876b43a0b1727e8ef67b Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 26 Oct 2022 11:54:11 +0800 Subject: [PATCH 051/137] =?UTF-8?q?[V2X][Road]=E6=96=BD=E5=B7=A5=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E6=B7=BB=E5=8A=A0=E5=9B=B4=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/road/V2XAiRoadEventMarker.kt | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt index fc497bc807..4689c0d8d7 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road +import android.graphics.* import android.util.* import com.mogo.cloud.commons.utils.* import com.mogo.eagle.core.data.map.* @@ -14,6 +15,7 @@ import com.mogo.module.common.utils.* import java.util.* import java.util.concurrent.atomic.* import kotlin.Pair +import kotlin.collections.ArrayList object V2XAiRoadEventMarker { @@ -29,6 +31,8 @@ object V2XAiRoadEventMarker { private val distance = AtomicInteger(0) + private val overlayManager by lazy { MogoOverlayManager.getInstance() } + fun drawMarkers(entity: V2XRoadEventEntity): Pair?>? { removeMarkers(current.get()) timerTask.get()?.cancel() @@ -69,7 +73,32 @@ object V2XAiRoadEventMarker { v2xMarker()?.drawableAlarmPOI(context(), entity, null) val l2 = entity.noveltyInfo?.location ?: return null v2xLocation.set(MogoLocation().also { it.longitude = l2.lon; it.latitude = l2.lat; it.bearing = l2.angle.toFloat() }) - current.set(Pair(null, markers)) + + val options = MogoPolylineOptions() + val colors = ArrayList() + colors.add(Color.argb(204, 237, 172, 21)) + colors.add(Color.argb(0, 255, 255, 255)) + options.colorValues(colors) + val points = ArrayList() + + for (p in polygons) { + points.add(MogoLatLng(p.second, p.first)) + } + if (points.size > 2) { + points.add(points[0]) + } + options.points(points); + options.useGradient(true) + options.useFacade(true) + options.setGps(false) + options.width(5f) + options.zIndex(75000f) + options.maxIndex(800000f) + val line = overlayManager.addPolyline(options) + current.set(Pair(line, markers)) + if (line != null) { + line.isVisible = true + } } } } From f33a63cb64fee1041d0d1a2100235b7f204a5f93 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 26 Oct 2022 12:13:21 +0800 Subject: [PATCH 052/137] =?UTF-8?q?[2.12.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E7=BB=99=E5=A4=96=E5=B1=8F=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/model/BusOrderModel.java | 43 ++++++++++++------- .../och/bus/util/BusSendTripInfoManager.kt | 14 +++--- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 49a0d83a0e..c8befdfc97 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -481,6 +481,7 @@ public class BusOrderModel { BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.END_TRIP , busRoutesResult.getName() ,"" + ,"" ,false); } } @@ -490,16 +491,27 @@ public class BusOrderModel { * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 */ - private void leaveStationSuccess(int leaveIndex) { + private void leaveStationSuccess(int leaveIndex,String leaveStation,String nextStation) { + + onStartAutopilot(leaveIndex); + + leaveTTSTips(nextStation); if (busRoutesResult != null){ + boolean isLastStop = false; + if (leaveIndex + 1 == stationList.size() -1){ + isLastStop = true; + } //给bus外屏发送 BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.LEAVE_STATION , busRoutesResult.getName() - ,busRoutesResult.getSites().get(leaveIndex).getName() - ,false); + ,leaveStation + ,nextStation + ,isLastStop); } + } + private void onStartAutopilot(int leaveIndex) { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true; if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() @@ -605,6 +617,7 @@ public class BusOrderModel { } int arrivedStationIndex = backgroundCurrentStationIndex + 1; String arriveStation = stationList.get(arrivedStationIndex).getName(); + String departureStopName = stationList.get(backgroundCurrentStationIndex).getName(); CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation-currentStationIndex = "+ arrivedStationIndex); BusServiceManager.arriveSiteStation(mContext , @@ -617,11 +630,7 @@ public class BusOrderModel { CallerLogger.INSTANCE.d(M_BUS + TAG,"行程日志-arriveSiteStation success"); queryBusRoutes(); - arriveStationSuccess(arrivedStationIndex); - - ttsTips(String.format(mContext - .getString(R.string.bus_arrived_station_tip), - arriveStation)); + arriveStationSuccess(arrivedStationIndex,departureStopName,arriveStation); //5s轮询核销乘客 startOrStopQueryPassengerWriteOff(true); @@ -642,20 +651,23 @@ public class BusOrderModel { }); } - private void arriveStationSuccess(int arrivedStationIndex) { + private void arriveStationSuccess(int arrivedStationIndex,String departureStopName,String arriveStation) { if (busRoutesResult != null){ - boolean isLastStop; + boolean isLastStop = false; if (arrivedStationIndex == busRoutesResult.getSites().size() - 1 ){ isLastStop = true; - }else { - isLastStop = false; } //给bus外屏发送 BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.ARRIVE_STATION , busRoutesResult.getName() - ,busRoutesResult.getSites().get(arrivedStationIndex).getName() + ,departureStopName + ,arriveStation ,isLastStop); } + + ttsTips(String.format(mContext + .getString(R.string.bus_arrived_station_tip), + arriveStation)); } /** @@ -681,8 +693,7 @@ public class BusOrderModel { //需要更改当前站和下一站的状态 然后渲染 startOrStopQueryPassengerWriteOff(false); queryBusRoutes(); - leaveStationSuccess(backgroundCurrentStationIndex); - leaveTTSTips(finalNextStationName); + leaveStationSuccess(backgroundCurrentStationIndex,currentStationName,finalNextStationName); } @Override public void onFail(int code, String failMsg) { @@ -774,7 +785,7 @@ public class BusOrderModel { && !stationList.get(0).isLeaving()){ //默认是第一站到站查询 if (busRoutesResult != null){ // 第一站到站也是行程开始的时候 BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.START_TRIP - ,busRoutesResult.getName(),"",false); + ,busRoutesResult.getName(),"","",false); } startOrStopQueryPassengerWriteOff(true); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt index 21927b0403..45d89d2359 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt @@ -19,13 +19,17 @@ object BusSendTripInfoManager{ * 行程信息 * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否终点站 + * @param departureStopName 出站站点名, for type 3, 4 + * @param arrivalStopName 下一站到达站点名, for type 3, 4 + * @param isLastStop 是否终点站(下一站或者要到达站) * @return */ - fun sendBusTripInfo(type: Int, lineName: String, stationName: String, isLastStop: Boolean) { + fun sendBusTripInfo(type: Int, lineName: String, + departureStopName: String, + arrivalStopName: String, + isLastStop: Boolean) { d(SceneConstant.M_BUS + "BusSendTripInfoManager", "type: "+ type - +", lineName: "+ lineName + ", stationName: "+stationName+", isLastStop: "+isLastStop) - CallerAutoPilotManager.sendTripInfo(type,lineName,stationName, "", isLastStop) + +", lineName: "+ lineName + ", stationName: "+arrivalStopName+", isLastStop: "+isLastStop) + CallerAutoPilotManager.sendTripInfo(type,lineName,departureStopName, arrivalStopName, isLastStop) } } From ce216d4a7fc3052237b3a1221d73f83b597d6c6d Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 26 Oct 2022 17:56:56 +0800 Subject: [PATCH 053/137] =?UTF-8?q?[2.12.0-f]=20=20tts=20=E9=83=A8?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/zhjt/dispatch/DispatchDialogManager.java | 2 +- .../core/function/v2x/events/view/CarZegoLiveVideoView.java | 4 ++-- .../src/main/java/com/mogo/module/service/MogoServices.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java b/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java index 67ec158a58..9c7590180b 100644 --- a/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java +++ b/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java @@ -93,7 +93,7 @@ public class DispatchDialogManager { } private void voice() { - AIAssist.getInstance(mContext).speakTTSVoice("请立即停车!请立即停车!"); + AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("请立即停车!请立即停车!",AIAssist.LEVEL0); } public void releaseDialog() { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java index bfb7a8f057..da71a17e9f 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java @@ -82,12 +82,12 @@ public class CarZegoLiveVideoView extends RoundLayout { */ public void startLive() { if (mSurfaceView != null) { - AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live)); + //AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live)); playLiveVideo(); mClLoadError.setVisibility(GONE); CallerLogger.INSTANCE.d(M_V2X + TAG, "startLive"); } else { - AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live_error)); + //AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live_error)); mLoading.setVisibility(GONE); mClLoadError.setVisibility(VISIBLE); CallerLogger.INSTANCE.d(M_V2X + TAG, "没有找到可直播车机"); 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 30af912b2b..5c61fa611e 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 @@ -158,7 +158,7 @@ public class MogoServices implements IMogoMapListener, if (!mLastStatusIsVr) { MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode(TAG, true); if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO) { - AIAssist.getInstance(mContext).speakTTSVoice("已开启鹰眼模式"); + //AIAssist.getInstance(mContext).speakTTSVoice("已开启鹰眼模式"); } mLastStatusIsVr = true; } @@ -167,7 +167,7 @@ public class MogoServices implements IMogoMapListener, mLastStatusIsVr = false; MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode(TAG, false); if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO) { - AIAssist.getInstance(mContext).speakTTSVoice("已退出鹰眼模式"); + //AIAssist.getInstance(mContext).speakTTSVoice("已退出鹰眼模式"); } } } From 8f876d4b0a3375fd1987a76045480a5d85824ca8 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 26 Oct 2022 18:15:15 +0800 Subject: [PATCH 054/137] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseConfigView.kt | 23 +++++-- .../badcase/biz/CaseTopicListDialog.java | 69 ++++++++++++++++--- .../badcase/biz/adapter/TopicListAdapter.kt | 26 +++++-- .../main/res/layout/layout_badcase_config.xml | 1 + .../core/data/badcase/RecordTypeEntity.kt | 2 +- .../eagle/core/data/badcase/TopicEntity.kt | 3 + 6 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index 21cc2a280a..e437709f0d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -8,6 +8,7 @@ import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity +import com.mogo.eagle.core.data.badcase.TopicEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager @@ -156,6 +157,20 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter +// val list = ArrayList() +// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) +// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) +// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) +// list.add(TopicEntity("/record_cache/task",false,true)) +// list.add(TopicEntity("/sensor/rainmode",false,true)) +// list.add(TopicEntity("/record_cache/master/task",false,true)) +// list.add(TopicEntity("/telematics/trip_info_event",false,true)) +// list.add(TopicEntity("/telematics/light",false,true)) +// list.add(TopicEntity("/guardian/aicloud_state",false,true)) +// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) +// recordTemplateAdapter?.setData(recordTypesList) +// recordTemplateAdapter?.notifyDataSetChanged() + } fun setClickListener(clickListener: ClickListener) { @@ -163,9 +178,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } private fun showCaseTopicListDialog(recordTypeEntity: RecordTypeEntity){ - if(caseTopicListDialog == null){ - caseTopicListDialog = CaseTopicListDialog(context) - } + caseTopicListDialog = CaseTopicListDialog(context) caseTopicListDialog?.setData(recordTypeEntity) caseTopicListDialog?.show() } @@ -175,9 +188,9 @@ internal class BadCaseConfigView @JvmOverloads constructor( ThreadUtils.runOnUiThread { config.recordTypesList.iterator().forEach { if (it.id != 99){ - val topicList = ArrayList() + val topicList = ArrayList() it.topicsList.iterator().forEach { - topicList.add(it) + topicList.add(TopicEntity(it,true,false)) } recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index d8bef0bbcc..125724cc83 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -17,10 +17,12 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.mogo.eagle.core.data.badcase.RecordTypeEntity; +import com.mogo.eagle.core.data.badcase.TopicEntity; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.utilcode.util.ThreadUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; @@ -46,8 +48,10 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL private RecyclerView rvTopicList; private TopicListAdapter topicListAdapter; private String searchStr; - private List allTopicList = new ArrayList<>(); - + private List allTopicList = new ArrayList<>(); + private RecordTypeEntity recordType; + private List addTopicList = new ArrayList<>(); + private List searchTopicList = new ArrayList<>(); public CaseTopicListDialog(@NonNull Context context) { super(context, R.style.bad_case_dialog); @@ -61,6 +65,20 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); init(); initEvent(); + //获取所有Topic + CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>()); + if(recordType!=null){ + tvCaseName.setText(recordType.getDesc()); + if(recordType.getTopicsList().size()>0){ + topicListAdapter.setData(recordType.getTopicsList()); + topicListAdapter.notifyDataSetChanged(); + } + } + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); } @Override @@ -70,12 +88,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL } public void setData(RecordTypeEntity recordTypeEntity){ - tvCaseName.setText(recordTypeEntity.getDesc()); - //获取所有Topic - CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>()); - if(recordTypeEntity.getTopicsList().size()>0){ - topicListAdapter.setData(recordTypeEntity.getTopicsList()); - topicListAdapter.notifyDataSetChanged(); + if(recordTypeEntity!=null){ + recordType = recordTypeEntity; } } @@ -90,6 +104,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); rvTopicList.setLayoutManager(linearLayoutManager); topicListAdapter = new TopicListAdapter(); + topicListAdapter.setListener((topicName, clicked) -> { + if(clicked){ + addTopicList.add(topicName); + }else{ + addTopicList.remove(topicName); + } + }); rvTopicList.setAdapter(topicListAdapter); } @@ -113,7 +134,16 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL } else { ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search)); } - //TODO + if(searchStr!=null && searchStr.length()>0){ + searchTopicList.clear(); + for(int index=0;index0){ etSearch.setText(""); ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search)); + topicListAdapter.setData(recordType.getTopicsList()); + topicListAdapter.notifyDataSetChanged(); + } + }); + tvSave.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(recordType!=null){ + Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); + if(Boolean.TRUE.equals(success)){ + ToastUtils.showShort("Topic设置成功"); + dismiss(); + }else{ + ToastUtils.showShort("Topic设置失败"); + } + } + + } }); @@ -135,8 +183,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ThreadUtils.runOnUiThread(() -> { if(config.getAllTopicsCount()>0){ for(int index=0;index() { - private var data:List? = null + private var data:List? = null + private var topicClickListener: TopicClickListener? = null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: TopicClickListener){ + topicClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TopicListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_topic_list, parent, false) @@ -27,8 +33,16 @@ class TopicListAdapter: RecyclerView.Adapter() } override fun onBindViewHolder(holder: TopicListHolder, position: Int) { - data?.let{ - holder.topic_check_box.text = it[position] + data?.let{topicList-> + holder.topic_check_box.text = topicList[position].topicName + holder.topic_check_box.setOnCheckedChangeListener(null) + holder.topic_check_box.isChecked = topicList[position].topicStatus + holder.topic_check_box.tag = topicList + holder.topic_check_box.isClickable = topicList[position].topicCanClick + holder.topic_check_box.setOnCheckedChangeListener { _, b -> + topicList[position].topicStatus = b + topicClickListener?.onClick(topicList[position].topicName,b) + } } } @@ -38,4 +52,8 @@ class TopicListAdapter: RecyclerView.Adapter() var topic_check_box: CheckBox = itemView.findViewById(R.id.topic_check_box); } + interface TopicClickListener{ + fun onClick(topicName: String,clicked: Boolean) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml index f317a80347..3c9e609e2d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml @@ -317,6 +317,7 @@ app:layout_constraintTop_toBottomOf="@id/tvRecordTemplate" android:background="@drawable/template_list_bg" android:layout_marginTop="@dimen/dp_50" + android:paddingBottom="20dp" /> ) \ No newline at end of file +data class RecordTypeEntity(var id: Int,var desc: String,var topicsList:ArrayList) \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt new file mode 100644 index 0000000000..db985c1003 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.data.badcase + +data class TopicEntity(var topicName: String,var topicStatus: Boolean,var topicCanClick: Boolean) \ No newline at end of file From 6a0b659de7253ce853dbd6a0c697d7a6c2adac83 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 20 Oct 2022 15:02:46 +0800 Subject: [PATCH 055/137] .. wait to test of fun --- .../funcconfig/FuncConfigConst.kt | 2 ++ .../function/map/identify/TrackerSourceHelper.kt | 7 ++++--- .../core/function/map/identify/WarningHelper.kt | 15 ++++++++++----- .../core/data/deva/bizconfig/FuncBizConfig.kt | 1 + 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt index 9b2fd420b0..a00da213a2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt @@ -21,6 +21,7 @@ import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LIMIT import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LTA import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_OPT_LINE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_ACTIONS +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RTS import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_SLW @@ -90,6 +91,7 @@ class FuncConfigConst { foundationSubList.add(SubBiz(BIZ_BYPASS, lock = false, state = true, dependNode = "", data = "")) foundationSubList.add(SubBiz(BIZ_AUTOPILOT_LANE_SELECTION, lock = false, state = true, dependNode = "", data = "")) foundationSubList.add(SubBiz(BIZ_PNC_ACTIONS, lock = false, state = true, dependNode = "", data = "")) + foundationSubList.add(SubBiz(BIZ_PNC_WARNING, lock = false, state = true, dependNode = "", data = "")) businessList.add(Business(FOUNDATION,foundationSubList)) return FuncConfig(0, AppUtils.getAppVersionCode(), getChannelCode(), getEnv(), businessList) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt index fa8072b1a5..0b80a57e4a 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt @@ -59,9 +59,10 @@ object TrackerSourceHelper { } // pnc预警 - val pncColor = WarningHelper.getPncColor(data.uuid.toString()) - if (pncColor.isNotBlank()) { - color = pncColor + WarningHelper.getPncColor(data.uuid.toString()){ + if (it.isNotBlank()) { + color = it + } } return color } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt index fe6285a7f1..b9a5307175 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt @@ -3,10 +3,14 @@ package com.mogo.eagle.core.function.map.identify import android.annotation.SuppressLint import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.data.traffic.TrafficData import com.mogo.eagle.core.data.traffic.threatLevelColor import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84SatelliteTime +import com.zhjt.service_biz.BizConfig import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.PlanningObject import java.util.concurrent.ConcurrentHashMap @@ -111,30 +115,31 @@ object WarningHelper { return "" } - fun getPncColor(uuid: String): String { + @BizConfig(FOUNDATION,"",BIZ_PNC_WARNING) + fun getPncColor(uuid: String, color:(String) -> Unit) { if (FunctionBuildConfig.isBeautyMode) { // 判断物体是否有预警信息 if (pncWarningBeautyTrafficData.containsKey(uuid)) { val planningTrack = pncWarningBeautyTrafficData[uuid] if (planningTrack != null && !timeOut(planningTrack.time)) { Log.i("EmArrow0926","pnc color uuid : $uuid") - return planningTrack.color + color.invoke(planningTrack.color) } else { pncWarningBeautyTrafficData.remove(uuid) } } - return "" + return color.invoke("") } else { // 判断物体是否有预警信息 if (pncWarningOriginTrafficData.containsKey(uuid)) { val planningTrack = pncWarningOriginTrafficData[uuid] if (planningTrack != null && !timeOut(planningTrack.time)) { - return planningTrack.color + color.invoke(planningTrack.color) } else { pncWarningOriginTrafficData.remove(uuid) } } - return "" + return color.invoke("") } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt index 096e6923ed..1c714dcc59 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt @@ -41,6 +41,7 @@ class FuncBizConfig { const val BIZ_BYPASS = "BIZ_BYPASS" // 绕障 todo 暂未实现 const val BIZ_AUTOPILOT_LANE_SELECTION = "BIZ_AUTOPILOT_LANE_SELECTION" // 择机变道 todo 暂未实现 const val BIZ_PNC_ACTIONS = "BIZ_PNC_ACTIONS" // PNC行为决策 + const val BIZ_PNC_WARNING = "BIZ_PNC_WARNING" // PNC障碍物颜色 } } \ No newline at end of file From 0ffda8fb65cf47035d57678334f6cabd9e0a2332 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 24 Oct 2022 11:01:41 +0800 Subject: [PATCH 056/137] wait to test of fun config which adding the msgReceive --- .../funcconfig/FuncConfigCenter.kt | 10 ++++++++-- .../core/function/map/identify/WarningHelper.kt | 12 ++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 3e585ace26..4feb330166 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -1,6 +1,7 @@ package com.zhjt.mogo_core_function_devatools.funcconfig import android.content.Context +import android.util.Log import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.AbsMogoApplication @@ -56,7 +57,7 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) }) } - }else{ + } else { ToastUtils.showLong("未获取到域控mac信息") } } @@ -66,8 +67,9 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo } override fun onMsgReceived(obj: FuncConfig?) { + Log.d(TAG, "onMsgReceived Business : $obj") obj?.let { - refreshConfig(it) + invokeUpdate(it) } } @@ -81,6 +83,10 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo ) private fun refreshConfig(funcConfig: FuncConfig) { BizManager.updateBizConfigData(funcConfig) + invokeUpdate(funcConfig) + } + + private fun invokeUpdate(funcConfig: FuncConfig) { funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt index b9a5307175..3539215978 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt @@ -1,9 +1,7 @@ package com.mogo.eagle.core.function.map.identify import android.annotation.SuppressLint -import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.data.traffic.TrafficData @@ -101,7 +99,6 @@ object WarningHelper { return } if (exist) { - Log.i("EmArrow0926","obu color uuid : ${obuTrafficData.uuid}") obuWarningTrafficData[obuTrafficData.uuid!!] = obuTrafficData } else { obuWarningTrafficData.remove(obuTrafficData.uuid) @@ -115,20 +112,19 @@ object WarningHelper { return "" } - @BizConfig(FOUNDATION,"",BIZ_PNC_WARNING) - fun getPncColor(uuid: String, color:(String) -> Unit) { + @BizConfig(FOUNDATION,"", BIZ_PNC_WARNING) + fun getPncColor(uuid: String, color:((String) -> Unit)) { if (FunctionBuildConfig.isBeautyMode) { // 判断物体是否有预警信息 if (pncWarningBeautyTrafficData.containsKey(uuid)) { val planningTrack = pncWarningBeautyTrafficData[uuid] if (planningTrack != null && !timeOut(planningTrack.time)) { - Log.i("EmArrow0926","pnc color uuid : $uuid") color.invoke(planningTrack.color) } else { pncWarningBeautyTrafficData.remove(uuid) } } - return color.invoke("") + color.invoke("") } else { // 判断物体是否有预警信息 if (pncWarningOriginTrafficData.containsKey(uuid)) { @@ -139,7 +135,7 @@ object WarningHelper { pncWarningOriginTrafficData.remove(uuid) } } - return color.invoke("") + color.invoke("") } } From 16c7bd9755d82414b7a396403bf3236972ec7f00 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 26 Oct 2022 14:13:44 +0800 Subject: [PATCH 057/137] add func of statusbar and func config wait to update --- .../module/biz/ui/TaxiLoginDialogFragment.kt | 95 ++++++------ .../taxi/passenger/ui/video/VideoActivity.kt | 64 +++++---- .../funcconfig/FuncConfigCenter.kt | 2 +- .../network/FuncConfigNetWorkModel.kt | 10 +- .../core/function/hmi/ui/MoGoHmiFragment.kt | 18 +++ .../hmi/ui/setting/DebugSettingView.kt | 2 + .../hmi/ui/widget/BatteryGroupView.kt | 92 ++++++++++++ .../function/hmi/ui/widget/BatteryView.kt | 135 ++++++++++++++++++ .../function/hmi/ui/widget/BlueToothView.kt | 23 +++ .../function/hmi/ui/widget/DemoModeView.kt | 23 +++ .../function/hmi/ui/widget/StatusBarView.kt | 89 ++++++++++++ .../function/hmi/ui/widget/WifiStateView.kt | 92 ++++++++++++ .../function/main/MainLauncherActivity.java | 8 +- .../src/main/res/drawable/battery_charge.png | Bin 0 -> 1254 bytes .../src/main/res/drawable/blue_tooth.png | Bin 0 -> 1146 bytes .../src/main/res/drawable/demo_mode.png | Bin 0 -> 1214 bytes .../res/drawable/wifi_light_state_close.png | Bin 0 -> 1562 bytes .../res/drawable/wifi_light_state_five.png | Bin 0 -> 1178 bytes .../res/drawable/wifi_light_state_four.png | Bin 0 -> 1203 bytes .../res/drawable/wifi_light_state_one.png | Bin 0 -> 1244 bytes .../res/drawable/wifi_light_state_three.png | Bin 0 -> 1219 bytes .../res/drawable/wifi_light_state_two.png | Bin 0 -> 1230 bytes .../src/main/res/layout/fragment_hmi.xml | 10 +- .../main/res/layout/view_battery_group.xml | 21 +++ .../src/main/res/layout/view_blue_tooth.xml | 14 ++ .../src/main/res/layout/view_demo_mode.xml | 14 ++ .../src/main/res/layout/view_status_bar.xml | 56 ++++++++ .../main/res/values-xhdpi-2560x1440/color.xml | 2 + .../src/main/res/values/color.xml | 3 + .../src/main/res/values/strings.xml | 2 +- .../api/hmi/warning/IMoGoWaringProvider.kt | 12 ++ .../function/call/hmi/CallerHmiManager.kt | 25 +++- .../eagle/core/utilcode/util/BarUtils.java | 9 ++ .../com/mogo/commons/mvp/MvpActivity.java | 3 +- 34 files changed, 730 insertions(+), 94 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/blue_tooth.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_four.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt index 3ad8a1cfd2..e40bf14a9c 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt @@ -1,5 +1,6 @@ package com.mogo.och.common.module.biz.ui +import android.annotation.SuppressLint import android.content.DialogInterface import android.graphics.Rect import android.os.Bundle @@ -20,10 +21,10 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.debug.DebugConfig import com.mogo.commons.mvp.MvpDialogFragment +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.util.BarUtils import com.mogo.eagle.core.utilcode.util.KeyboardUtils import com.mogo.och.common.module.R import com.mogo.och.common.module.biz.constant.OchCommonConst @@ -35,7 +36,8 @@ import com.mogo.och.common.module.biz.provider.LoginService * @author: yangyakun * @date: 2022/8/15 */ -class TaxiLoginDialogFragment : MvpDialogFragment(), +class TaxiLoginDialogFragment : + MvpDialogFragment(), DialogInterface.OnKeyListener { lateinit var clMain: ConstraintLayout @@ -54,14 +56,6 @@ class TaxiLoginDialogFragment : MvpDialogFragment - BarUtils.setNavBarVisibility(window,false) - } - } - } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -88,11 +82,8 @@ class TaxiLoginDialogFragment : MvpDialogFragment - BarUtils.setStatusBarColor( - it, - ContextCompat.getColor(contextIn, R.color.taxi_4D000000) - ) + context?.let { _ -> + CallerHmiManager.setStatusBarDarkOrLight(false) } } } @@ -108,23 +99,22 @@ class TaxiLoginDialogFragment : MvpDialogFragment { - closeSoftInput() - } + mRootView.setOnTouchListener { _, event -> + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + closeSoftInput() } - return false } - }) + false + } acbtnLogin.onClick { val phone = aceLoginPhoneValue.text.toString() val code = acetPhoneCodeValue.text.toString() - mPresenter?.gotoLogin(phone,code) + mPresenter?.gotoLogin(phone, code) } actvWelcomeLoginTitle.setOnClickListener { continuousClick() @@ -148,7 +138,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment - if(itEditable.isNotEmpty()){ + it?.let { itEditable -> + if (itEditable.isNotEmpty()) { inputPhoneNormal() } } @@ -175,28 +165,29 @@ class TaxiLoginDialogFragment : MvpDialogFragment= (SystemClock.uptimeMillis() - DURATION)) { mHits = LongArray(COUNTS) //重新初始化数组 - mPresenter?.gotoLogin("13288888888","8888") + mPresenter?.gotoLogin("13288888888", "8888") } } @@ -234,6 +238,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment() - companion object{ + companion object { const val VIDEOTYPE = "VIDEOTYPE" const val VIDEOTYPE_CONSULT = 0 const val VIDEOTYPE_MOIES = 1 @@ -68,10 +63,10 @@ class VideoActivity : AppCompatActivity() { const val EVENT_FINISH = 0 - fun startActivity(context:Context,videoType:Int,sumDis:Int){ + fun startActivity(context: Context, videoType: Int, sumDis: Int) { val intent = Intent(context, VideoActivity::class.java) intent.putExtra(VIDEOTYPE, videoType) - intent.putExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,sumDis) + intent.putExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, sumDis) context.startActivity(intent) } } @@ -114,7 +109,7 @@ class VideoActivity : AppCompatActivity() { LeftMenuOpen.registerCallback(LeftMenuOpen.callBack) } - private fun initConsultData(){ + private fun initConsultData() { arrayListOf.clear() arrayListOf.add( TaxiPassengerVideoPlay( @@ -238,7 +233,7 @@ class VideoActivity : AppCompatActivity() { } indicatorView.onPageScrolled(currentIndex, fl, 0) } - val recyclerVideoAdapter = RecyclerVideoAdapter(this, arrayListOf,rvVideoPlaylist) + val recyclerVideoAdapter = RecyclerVideoAdapter(this, arrayListOf, rvVideoPlaylist) recyclerVideoAdapter.setOnThumbImageClilckListener { val (_: Int, player) = getPlayer(carouselLayoutManager) if (player is ConsultVideoPlayer) { @@ -280,24 +275,31 @@ class VideoActivity : AppCompatActivity() { override fun onAttachedToWindow() { super.onAttachedToWindow() - when (videotype){ + when (videotype) { VIDEOTYPE_CONSULT -> { - OverlayLeftViewUtils.showOverlayView(this,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + OverlayLeftViewUtils.showOverlayView( + this, + isOpen = false, + checkIndex = OverlayLeftViewUtils.CONSULT + ) } VIDEOTYPE_MOIES -> { - OverlayLeftViewUtils.showOverlayView(this,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + OverlayLeftViewUtils.showOverlayView( + this, + isOpen = false, + checkIndex = OverlayLeftViewUtils.MOVIE + ) } } val sumDis = intent.getIntExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0) - FloatingDistanceInfoUtils.showOverlayView(this,sumDis=sumDis) + FloatingDistanceInfoUtils.showOverlayView(this, sumDis = sumDis) } override fun onResume() { super.onResume() - BarUtils.setNavBarVisibility(window,false) val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) - if(centerItemPosition<0){ + if (centerItemPosition < 0) { setBackageAndPlayNext(arrayListOf[0]) } player?.let { @@ -325,12 +327,20 @@ class VideoActivity : AppCompatActivity() { override fun onError(e: Throwable?) {} override fun onNext(t: Long?) { if (!OverlayLeftViewUtils.getStatus()) { - when (videotype){ + when (videotype) { VIDEOTYPE_CONSULT -> { - OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + OverlayLeftViewUtils.showOverlayView( + this@VideoActivity, + isOpen = false, + checkIndex = OverlayLeftViewUtils.CONSULT + ) } VIDEOTYPE_MOIES -> { - OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + OverlayLeftViewUtils.showOverlayView( + this@VideoActivity, + isOpen = false, + checkIndex = OverlayLeftViewUtils.MOVIE + ) } } } @@ -356,7 +366,7 @@ class VideoActivity : AppCompatActivity() { } @Subscribe(threadMode = ThreadMode.MAIN) - fun finishActivity(event: FinishActivity){ + fun finishActivity(event: FinishActivity) { CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "finishActivity(event)") cancleSubscribe() val intent = Intent() @@ -379,21 +389,21 @@ class VideoActivity : AppCompatActivity() { cancleSubscribe() } - private fun cancleSubscribe(){ + private fun cancleSubscribe() { subscribe?.let { - if(!it.isUnsubscribed){ + if (!it.isUnsubscribed) { it.unsubscribe() } } } private fun releaseOnNewInstance() { - if (rvVideoPlaylist!=null&&rvVideoPlaylist?.layoutManager != null) { + if (rvVideoPlaylist != null && rvVideoPlaylist?.layoutManager != null) { val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (_: Int, player) = getPlayer(carouselLayoutManager) player?.let { - player.currentPlayer.release() - player.onVideoReset() + player.currentPlayer.release() + player.onVideoReset() } } FullVideoUtils.dismissOverlayView(true) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 4feb330166..7a68a09b7c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -82,11 +82,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo clientPkFileName = "sn" ) private fun refreshConfig(funcConfig: FuncConfig) { - BizManager.updateBizConfigData(funcConfig) invokeUpdate(funcConfig) } private fun invokeUpdate(funcConfig: FuncConfig) { + BizManager.updateBizConfigData(funcConfig) funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 84f786e521..25644cdc03 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,9 +34,13 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["mac"] = mac - map["channelVersion"] = FuncConfigConst.getChannelCode() + //todo test +// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["sn"] = "X20202203105S688HZ" +// map["mac"] = DeviceUtils.getMacAddress() + map["mac"] = "48:b0:2d:3a:bc:78" +// map["channelVersion"] = FuncConfigConst.getChannelCode() + map["channelVersion"] = 1 } loader { apiCall { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 79d4d8520d..f055703288 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -11,6 +11,7 @@ import android.text.TextUtils import android.transition.* import android.view.Gravity import android.view.View +import android.view.ViewGroup import android.view.WindowManager import android.view.WindowManager.LayoutParams import android.view.animation.* @@ -82,6 +83,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.SOPSettingView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.AutoPilotAndCheckView import com.mogo.eagle.core.function.hmi.ui.tools.MaskView +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -192,6 +194,14 @@ class MoGoHmiFragment : MvpFragment(), override fun initViews() { initViewShowWithConfig() + + //设置StatusBar初始状态 + if (FunctionBuildConfig.isDemoMode) { + viewStatusBar.updateRightView(true, "demoMode", DemoModeView(requireContext())) + } else { + viewStatusBar.updateRightView(false, "demoMode", DemoModeView(requireContext())) + } + ivCameraIcon?.setOnClickListener { if (cameraViewFloat == null) { showCameraList(CallerMonitorManager.getCameraList()) @@ -413,6 +423,14 @@ class MoGoHmiFragment : MvpFragment(), busOperationStatus?.showBusOperation() } + override fun setStatusBarDarkOrLight(light: Boolean) { + viewStatusBar.setStatusBarDarkOrLight(light) + } + + override fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + viewStatusBar.updateRightView(insert, tag, viewGroup) + } + /** * 设置 红绿灯 代理View */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 9b8c6d67f0..4a20ce0775 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -62,6 +62,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel @@ -573,6 +574,7 @@ class DebugSettingView @JvmOverloads constructor( // 演示模式 tbIsDemoMode.setOnCheckedChangeListener { _, isChecked -> + CallerHmiManager.updateStatusBarRightView(isChecked,"demoMode", DemoModeView(context)) CallerAutoPilotManager.setDemoMode(isChecked) if (!isChecked) { //关闭美化模式时,通知工控机 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt new file mode 100644 index 0000000000..95c72f7406 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt @@ -0,0 +1,92 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.BatteryManager +import android.os.Handler +import android.os.Message +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.ImageView +import android.widget.LinearLayout +import com.mogo.eagle.core.function.hmi.R +import java.lang.ref.WeakReference + +class BatteryGroupView : LinearLayout { + + constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 + ) : super(context, attrs, defStyleAttr) { + } + + private var batteryHandler: BatteryHandler = BatteryHandler(this) + private var view: View = + LayoutInflater.from(context).inflate(R.layout.view_battery_group, this, true) + private var batteryView: BatteryView = (view as BatteryGroupView).findViewById(R.id.viewBattery) + private var ivBatteryCharge: ImageView = (view as BatteryGroupView).findViewById(R.id.ivBatteryCharge) + + private val batteryStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when (intent.action) { + Intent.ACTION_BATTERY_CHANGED -> { + val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) + val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0) + val charge = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) + val percentage = (level * 100) / scale + val message = Message.obtain() + message.what = 0 + message.arg1 = percentage + message.arg2 = charge + batteryHandler.sendMessage(message) + } + } + } + } + + companion object { + class BatteryHandler(batteryGroupView: BatteryGroupView) : Handler() { + + //虚引用 + private var stateViewWeakReference: WeakReference? = null + + init { + stateViewWeakReference = WeakReference(batteryGroupView) + } + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val batteryGroupView = stateViewWeakReference?.get() + batteryGroupView?.let { + if (msg.what == 0) { + it.batteryView.setPower(msg.arg1) + val isCharging = msg.arg2 == BatteryManager.BATTERY_STATUS_CHARGING || + msg.arg2 == BatteryManager.BATTERY_STATUS_FULL + it.batteryView.setCharging(isCharging) + if (isCharging) { + it.ivBatteryCharge.visibility = View.VISIBLE + } else { + it.ivBatteryCharge.visibility = View.GONE + } + } + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val intentFilter = IntentFilter() + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED) + context.registerReceiver(batteryStateReceiver, intentFilter) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + context.unregisterReceiver(batteryStateReceiver) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt new file mode 100644 index 0000000000..0afbea73f0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt @@ -0,0 +1,135 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import com.mogo.eagle.core.function.hmi.R +import kotlin.math.abs + + +class BatteryView : View { + + private val radius = context.resources.getDimension(R.dimen.dp_4) // 圆角角度 + private val border = context.resources.getDimension(R.dimen.dp_3) // 外边缘宽度 + private val margin = context.resources.getDimension(R.dimen.dp_6) // 边框与内部电量距离 + private val width = context.resources.getDimension(R.dimen.dp_57) // 电池宽度 + private val height = context.resources.getDimension(R.dimen.dp_28) // 电池高度 + private val headWidth = context.resources.getDimension(R.dimen.dp_3) // 电池头宽度 + private val headHeight = context.resources.getDimension(R.dimen.dp_8) // 电池头高度 + private val headRadius = context.resources.getDimension(R.dimen.dp_1) // 电池头圆角角度 + private val batteryNumSize = context.resources.getDimension(R.dimen.dp_20) // 电量显示文字大小 + private val batteryColor = context.resources.getColor(R.color.color_7FECECEC) // 电量内部颜色 + private val powerColor = Color.WHITE + + //默认满电 + private var mPower = 100 + + //是否充电 + private var mIsCharging = false + + constructor( + context: Context, + attrs: AttributeSet? = null + ) : super(context, attrs, 0) { + + } + + constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 + ) : super(context, attrs, defStyleAttr) { + } + + @SuppressLint("NewApi") + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(width.toInt(), height.toInt()) + } + + @SuppressLint("DrawAllocation") + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + //电池头 + val paint = Paint() + paint.style = Paint.Style.FILL + paint.strokeWidth = 0f + paint.isAntiAlias = true + paint.color = powerColor + + val rectHead = + RectF(width - headWidth, (height - headHeight) / 2, width, (height + headHeight) / 2) + canvas.drawRoundRect(rectHead, headRadius, headRadius, paint) + + //边框 + paint.strokeWidth = border + paint.style = Paint.Style.STROKE + val rectF = + RectF(radius / 2, radius / 2, width - headWidth - radius / 2, height - radius / 2) + canvas.drawRoundRect(rectF, radius, radius, paint) + + //文字画笔 + val textPaint = Paint() + textPaint.color = powerColor + textPaint.isAntiAlias = true + textPaint.textSize = batteryNumSize + textPaint.textAlign = Paint.Align.CENTER + //画数字 + val fontMetrics = textPaint.fontMetrics + canvas.drawText(mPower.toString(), rectF.centerX(), abs(fontMetrics.top), textPaint) + + //电池电量 + val powerValues = mPower / 100.0f + val paintPower = Paint(paint) + paintPower.style = Paint.Style.FILL + + //低电量 + val lowerPaint = Paint(paint) + lowerPaint.style = Paint.Style.FILL + lowerPaint.color = powerColor + if (mPower < 20) { + lowerPaint.color = Color.RED + } else { + lowerPaint.color = batteryColor + } + + //画电量 + if (powerValues != 0f) { + val right = (width - margin - headWidth) * powerValues + val bottom = height - margin + val rect = RectF(margin, margin, right, bottom) + //画矩形 + canvas.drawRoundRect(rect, radius, radius, lowerPaint) + } + } + + /** + * 设置当前电量 + */ + fun setPower(power: Int) { + if (this.mPower < 0) { + this.mPower = 0 + } + if (this.mPower > 100) { + this.mPower = 100 + } + this.mPower = power + if(isAttachedToWindow){ + invalidate() + } + } + + /** + * 是否充电中 + */ + fun setCharging(charging: Boolean) { + this.mIsCharging = charging + invalidate() + } + +} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt new file mode 100644 index 0000000000..85649ffa64 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.hmi.R + +/** + * 魔戒蓝牙控件 + * 放置于StatusBar右侧位置 + */ +class BlueToothView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_blue_tooth, this, true) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt new file mode 100644 index 0000000000..f0a51a62f8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.hmi.R + +/** + * 演示模式控件 + * 放置于StatusBar右侧位置 + */ +class DemoModeView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_demo_mode, this, true) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt new file mode 100644 index 0000000000..ef49f6f3d0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -0,0 +1,89 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.BarUtils +import com.mogo.eagle.core.utilcode.util.ScreenUtils +import kotlinx.android.synthetic.main.view_status_bar.view.* + +class StatusBarView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener { + + companion object { + const val TAG = "StatusBarView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) + } + + private val rightViewList = mutableListOf() + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val layoutParamsLeft = + LayoutParams(ScreenUtils.getScreenWidth() / 3, BarUtils.getStatusBarHeight()) + viewStatusBarLeft.layoutParams = layoutParamsLeft + val layoutParamsRight = + LayoutParams(ScreenUtils.getScreenWidth() / 3 * 2, BarUtils.getStatusBarHeight()) + layoutParamsRight.addRule(ALIGN_PARENT_END) + layoutParamsRight.addRule(CENTER_HORIZONTAL) + layoutParamsRight.addRule(CENTER_IN_PARENT) + layoutParamsRight.marginEnd = context.resources.getDimension(R.dimen.dp_44).toInt() + viewStatusBarRight.layoutParams = layoutParamsRight + viewStatusBarRight.addView(BatteryGroupView(this.context)) + + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + } + + override fun onSkinModeChange(skinMode: Int) { + when (skinMode) { + 0 -> setStatusBarDarkOrLight(false) + 1 -> setStatusBarDarkOrLight(true) + } + } + + fun setStatusBarDarkOrLight(light: Boolean) { + if (light) { + setTextColor(resources.getColor(R.color.color_2C2E30)) + } else { + setTextColor(resources.getColor(R.color.color_FFFFFF)) + } + } + + fun updateRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + if (insert) { + rightViewList.add(0, tag) + viewStatusBarRight.addView(viewGroup, 0) + } else { + rightViewList.forEachIndexed { index, s -> + if (s == tag) { + rightViewList.removeAt(index) + viewStatusBarRight.removeViewAt(index) + } + } + } + } + + private fun setTextColor(color: Int) { + viewTextClock.setTextColor(color) + viewStatusBarTag.setTextColor(color) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerSkinModeListenerManager.removeListener(TAG) + } + +} + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt new file mode 100644 index 0000000000..5e45d6c065 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt @@ -0,0 +1,92 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.net.wifi.WifiManager +import android.os.Handler +import android.os.Message +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.function.hmi.R +import java.lang.ref.WeakReference + + +class WifiStateView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AppCompatImageView(context, attrs, defStyleAttr) { + + companion object { + const val TAG = "WifiStateView" + + class WifiHandler(wifiStateView: WifiStateView) : Handler() { + + //虚引用 + private var stateViewWeakReference: WeakReference? = null + + init { + stateViewWeakReference = WeakReference(wifiStateView) + } + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val wifiStateView = stateViewWeakReference?.get() + wifiStateView?.let { + when (msg.what) { + -1 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_close) + 0 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_one) + 1 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_two) + 2 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_three) + 3 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_four) + 4 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_five) + } + } + } + } + } + + private var wifiManager: WifiManager? = null + private var wifiHandler: WifiHandler? = null + + init { + wifiManager = + context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager? + wifiHandler = WifiHandler(this) + } + + private val wifiStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when (intent.action) { + WifiManager.WIFI_STATE_CHANGED_ACTION, WifiManager.RSSI_CHANGED_ACTION -> { + if (wifiManager!!.wifiState == WifiManager.WIFI_STATE_DISABLED + || wifiManager!!.wifiState ==WifiManager.WIFI_STATE_DISABLING) { + wifiHandler?.sendEmptyMessage(-1) + return + } + val wifiInfo = wifiManager!!.connectionInfo + val level = WifiManager.calculateSignalLevel(wifiInfo.rssi, 5) + wifiHandler?.sendEmptyMessage(level) + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val intentFilter = IntentFilter() + //Wifi连接状态变化 + intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION) + //Wifi信号强度变化 + intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION) + context.registerReceiver(wifiStateReceiver, intentFilter) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + wifiHandler?.removeCallbacksAndMessages(null) + context.unregisterReceiver(wifiStateReceiver) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 0b7bcbd9a4..5e4b73b40e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -27,6 +27,7 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.function.main.moujie.BluetoothMonitorReceiver; @@ -34,7 +35,6 @@ import com.mogo.eagle.core.function.main.moujie.ConnectBluetoothEvent; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.eagle.core.utilcode.util.BarUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.service.intent.IMogoIntentListener; @@ -336,11 +336,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public void onSkinModeChange(int skinMode) { - if (skinMode == 0) { - BarUtils.setStatusBarLightMode(this, false); - } else { - BarUtils.setStatusBarLightMode(this, true); - } + } private synchronized void sendAcc(boolean isSend, double acc) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png new file mode 100644 index 0000000000000000000000000000000000000000..2c46f99c9146c77e21c8d7f92646445dfd26cda3 GIT binary patch literal 1254 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR918lVFJ1ONa40RR91Bme*a08-en?EnA-P)S5VR7ef2RclOBXBegz3XG}{ zD2k$7qRvdP6GdC`0!(oW{LrxkjK*8kXL9hYlSnX5CQR5fYZ`rt->$_+?)a(e-a-&r4ziy|M@KEo*KC)!cbHYF>oxy*RR|&r zLHH*|NAjopdreKP5hS2pp;llR1dO!iGtoN&`D_r}2b5oIJ=$FPyp}}AY~I|N6ni0& zNJd;Pk3p0WM1oOy4~RJU^_i-B4=dDerfJGRt3u%$iM8PQQ0_a0AQFJQUxC=1+$-e; zH-1}5g>Fk+r8Z$M0VXd55jhBM1BurQf7j*Y{;&pfmZhd>dR&gl2|h8WJcKS10QgTSj!D5TC>ZMfsw## z;N3U=O0Y;o)&qybVUA76lD4$Ahx1l3oZ;c2U5ge(b}(G5X;@fD|M!=^i-+^4F(HW1 z_DeB3waL4C4912SR>dS1a$ni-tE#&ORcO#sly8=TI|!2^K#`V_-R2Dudajb9{0f)I zNu1GLI-?|Dj;`$Q5}8yQlDu}A0c#JlSgiift6$Fd2=F-aFMg|2$1O-gs1P_oDH7~x z4#pZ_204Vx)@L`)ir)Baz6m z1(-g18xWy0q3_=&w+Q8owKp7ZFfSkn*YFUb@a3DD|DEvW$3#c8{&MI1Oyu?hY2fT; zaw>B`&cz!D{O>2C7y&-AMa9 zyBdBw&#$95BCTwp!E!`ny^Xs+&BBM5bTyk|lDwUGZ zMu^mrUyQwLM^QvlTi+z1Hh!wV*?>PPwegn_DW;fM6D5Q@6!6y{m-Jz(;AJ4rfyfoH z0;2Np>UILoj!ttWjj&sQ;1@y^DPIyuLx2W=tO)Su%kzp4Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW|e5nMr6AK@^5(VoW3k z6hz{JdT==i1{J+19t00TLE}YFD!73M%}wy)auFAZdJ!)oih>vsj2r4f1<{Dc4I}}P z1cJeUptz72m+^Z^deT!}J=057&!r#y(^dbgdhdVLsh&ztCX-sa0_h5*E0C_h=n7;< zoAz3{Ty8PZXOCoP%Vx7Z_Oc}ynZnKh$3D?mYCC;}?F5?mb#M6Xy~2o+OlApjo)K@pp?KlKka#k93LNXF(O4`Be)r>E<~;#@($Lr!xRu4? zS@Dtdu13rsxSf6p@u`KKfU5(yfzAdYH~Yo2!jo`1=+vo!+pkLs?9D(@j!8@R{^N>}}*r3+}0YN8m*6U-e?1Pt@IlJJl zAf{U5^P_rkbon^v!q@uv?9hmx2;2`6x_Ogh(*()P)%T9!TLpT7&SZh)37ou&%FJ{Q4j!LJg9$rEsU;^LwvMC=A22ic%@n1SW}&MH+b z0yhCU?T59?ObBxfD<#F8A7MMd->?S=#EEn_dWo(b%f_8D?{d}T2rAmD&b8Jzr!KlDC?tEVtY2`^_% z)dw|X1AK0bAuak;5+51X;Q9Orv%rZ=TNU5z_~eSe5y)LqP5!j^xyM>>lklXfVx-^6 zb(UKI{ZfU=8Po5i(v5G5JD!y`N#sPK3WXZ7Ha*uCeHX zkjQUk<&D#L-DG%eVenhQ51_N_kVfAQ>$K%LlC1&X6(#b*r7}NAY2Z@}I|tVS{LISx zd_|VGi<(719uQ*3K+)q6ezh=}r!)C-Z}MhLkU_uA63u7YND>jnE(I) M07*qoM6N<$g8LEu^Z)<= literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..380b81e9426aeffc2050a2f5a5608dea1e06b8e4 GIT binary patch literal 1214 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz@p*l;uw;_ z`gW#ohhLz?@#k|j<&Aw8Wq2)e>(b0p+B}1mH&sk5NQzr?Y2>DGu~TQ-T4zl?>1KB6 zj31||UC^>Ayxd-&W@@x0xjp&%yTAJDp67d?-}yfGwd`gK|G&GR|NLctzVgoJd(F$1 zX%sS{!<)hysk6JIPe1(>6j5~`Yy;OCmPz~%Y%3VvP4`-wIgdN~h7b1*_I1tg75qgO zM?Br4v*Yf?5Kb93{ev;CJKG%(-&?ec&0RV6fgZ=n@Hyv&Gh~GdORru%vY&5RW3$5Q zi;{1|4>G(ccztTx51{t&Bb67&UGt}{n;~1 zi^c6O--Y~!b9d%eFin|V@L`3()vPzqLKx<(*ZA#jsXKr9^I2yfF+3`AHRb+XE!|ji zV&xBJ+X}G{`HboZT3MpHS-uKU1i&G~BS)$sjk)+)+;A49*S$usVARR1UV>zhejw!-YG z2d})h{^ceQtWrumOliTj)41eFfjXFjsu829$rX|^Zcsh4^;S~+SrWG!Db zuk7}WUDs6Zd(NDcUfUky)uQ*%YyB;X>a^B&a z&OLvZtz5opv-G1CpBxuNH%z^*AsgD*$vFRZOP)ab!F4QAr>A)pM6i@HT-_qH=k1TG z)te4i+}yNjAN!lgRVNNUkJ~%v3)j`^&>-FgQDJ)FBHD`%+~SjqF1vOs$6HLl%v5BT z-@|#LM^pGXs<{i;SIOPloOSLd+rz4a^U_&Ag+BaaczBz69z%G_?Z??{^X*PO+P3J{ z>srg!Hv-=oYm3*!IC91ne#mFIwPb_h6_&c#hetA9O@BL8w$_T=;J$O#_QQ=Uaf6I1`0O*QlQ8u#H`*~B%a2W^?AE!ntl zdD5ha??FA4({^8;H=mIssO<1`^>bP0l+XkKcTFoN literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png new file mode 100644 index 0000000000000000000000000000000000000000..7090814f91ce6649a352f4fc0eaa05ab50000a08 GIT binary patch literal 1562 zcmV+#2IcvQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW~gh@m}RA>e5m<@9jMG%IG3Pe$f zqVgqzmPkny;{X2-pnxby5=aCDiSYvkgbux$SM|-zPESw2Jw4sK zw`Z-=}fDlRnpENT9#Ncc%r}*$|B1&4x?xJFq0Uix{w(2BQ-_ zZGT3zfu0-a|9cXBoq?$waNZZe8D^4q<^r4l<$(FaG^gy(kp4i|3VZYl(_X+d7UKma zI6+D#fFIb{d*b}3G@rrV9r+=wOe78yNhB3RJ0gH?mW+<;@EZHrA4_9_VWV`a z*VV`~jS-yTDLsY-Cy-u*E_Ik}OipIqwuEC?{>(oA(Y8`6FgEpc7U4)5%P3t}BXjT4 zoP{H^{!jmV=1l+-5jxc+KutZ(iuWNcDDOg*47YPAO~n=21;*dP z5kj7r;5@;p2;GAE3jR2w=nDJXZko#hJAm*vaCQDSp8XP_LLmkyZ^(wc;05=DIiH<^ z55bc6QP9ema5j-^&3Nc=?MXNygKnZ*ti2k8avO$}pQS#^^peH~3Fu}Fs%;@(u47(w zOTiX%o~Dlau)3}o8^U*B4Q&i#bi|#G&{W<;(wHT)z}ygJdP;A5zSZbI?2MEBlTJQYf+P1;PYOaOHQLdmLinK3KjxQUbCLvfPZDzFmMT*t04SIc_HBw~$WsS`~~jkRqg+5Fr4#6pe6 zvf&G%$1@Xx1|5M7LGPP&EQ)lsj%Dj3>vUjk51)6TiGfv>V}$>8cq-LA-N0Kg1)0glw|y3^>frp=6U#`M|%qcqx65TxWOtizUo+B;to7~MzLSi>aChRMj6 z=c#EXz_bEzzW@0i=;@d+#(uuD=51sJ7vFuJriD0LKA7)BGXv&s1-OS8Cb&*ioVE^$ z({`;Xeyn5KHkc`}wvF26N~dj!kgQvRtJTOf+u>*Gjf5*)k;w|yzU`alN+g9io=3?3LfFnD0_z-#J(XYL>gYEc=J?f?J) M07*qoM6N<$f@3P$zW@LL literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png new file mode 100644 index 0000000000000000000000000000000000000000..8f48f53e24fcc314fdb94dc526461e5837378c20 GIT binary patch literal 1178 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz{29`;uw;_ z`gTTihhLz`@#lv$9^3WYUchPSq{1I}XX%8%Jpoda?;PUx{M_&;HEU9lCcpBcDNADH zrWifTG)c)a$!k4n;4C*IW|`#n^Y70uKUco57KnE*+xzOeW%}B^*KcLdt^IcM`I9FR z8$~xD!4n~@MVCc2M7W+l-Yw#Gz(J!$?g!7@4@TzZ-?fi#@i--^s0jExzrGX&V z0dFUXTMJoVJv1|!_(s3)rsyQirq}}cAjSN`Am+=PCrLJXKVT_w-nE49IJeOxg+{hR zhA$d@PRcSJtz~DnPqxrsUZuWJ#XsLkh2WX0{tsKeP6&8!m>DFHskt-^J5;Ud{`y-a7v%F%H zSa&F3``OaFN4L(?%q_d$`0hx=g(;W2q_qFJ-U|7&ruOlSIK`D;7rcC_x>jP#+gbdT zaf=U{acw)~`{DC)@%lAPRjr)M)DP5MIGi`>xyE(Y&muRw>So1lUEq33#XlfxsbBwt zJxq5xUpC(7Hhf;YCh%dh+6%s&PZ_%oZv3U5s(ygaJ*3wD<>E`>8H@iu2$5i~{VSDx zp8ff~Ev>JW_ShVOlS`ndNrgie|lnu6IAQEm%(<*pajN`j&dOs*UM>94q`M za5#pu+;XmKU+`&0+c96=Un?X88I21MDr^aU+2Zn)O_n`1X-#9Y!2;U{aUnvU9~9>v zW955u+29)YrRA^Vg_$p=MaG|ARy*&Xg=x#%d`mtC-P_&=Ur%1%C0=Cu?G5+Isg0j+ zublll%YaX=R!*l~t>DzhH|dY17#GiG{k7|=m)Xr!v$#usoN_EDB|WOxB$-uLrzC7v zd{@p_E7th@oA%AZoBujP8mxnOZr1Co8da3b3tjy7g5l5aPk)b9GN(M5-&t*=xm&IA zaDvd^ZQdt;Yo#{#9v5uBem?B2#+*gFx2eh5|4)sc6i{^i@Jvn3zgq8Qh5X(b9lyF) jS$THr+6H8}nQ1?x-dCn=KbPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW}9Z5t%RA>e5m`g|$aU928EzMpU zmT6`7Kq`6@L0zn%2r4Qlf=<;X=+LEz=ukl?Z$S}ss6&?^I`lepi%v#RL1C#Sl$gCB zwDOUf+UEYw^Mj)0e zN8{t;vRw|7p(M^2&r$dXgRxjl?>SLqiIK<@BAf-4Fawm7pZy`)^h0l)KO{TOd)D%E zoYn!!Xg21?Q8L+T7z5u03HD`UEThEYvr~uTd61Ef06}XOKarrGp%p495}JgEMKB*i z^`(8LQequpXE1PZBsCic4Nw*!LhT(br2){p4htO=#h`0xNT**^YJc?Ld@x{IpH{$}IP&Ku9W*UL?59l(r#k6Yg4e;Ipu%@UhvPgw*&6*Ni0-8~i z+VK6&RG~6sVi=xAos!aCa7xRe9izXU6;b~t4kfh|YCLSeCl0L`mvqXRq-9_lDUFbf zX$cxdFtWK7cEMuMl^_(H21S7+c+UF+?0x3x66GTlwqdh}=Q42aKhJ~5IAijFF>Pk; zuY^9}NXySC+V7#_5a_8dkf73u_X6(0EqoYf0Q*W}H6*r%4k|6j@LwtztAQ<`^==e( zo8cKmp+1aU1Z@SEC@+UiunIgU#nsVNfC1y_M0q{jfn2B?qesCNJY{9zT#~NPT^(I5 z3gR?LOCUsDFFsx0rr(Z4HfKf21l|o(Gxe>;XfHN^| z_|s6DtygTU0nLz8FDacDhACQVRZ0@op-7GA27 z4RZN{qciXp>P>zqUjQfJ2@F80G~=Cc4R(OO4_%^M%f21FzB*ieA}PRO;-XC2qpS+9 z!UzP_I~wjz8cBJf+~p&sIzO)jaR7QDQ$3>N%=|b0_UNUNrG?aq<=YNEx!xW z*8zd(FYDK!OV=rVEH{Jdzkml@=L!WKn`S}$(5ZfVw z5nx8Dq44)o1i5Gr>GSA3bb&Ms&9E^F`vtQ>0++y~ehMSGuL_bJ!Iy%*C{m?a+h34? zqI60UO73AiGbObzO8W)16;JLi&%Ff=#5%VlU`N1?fE@ul0(J!K2;^i0{sXg6YEN05 R*irxh002ovPDHLkV1g*L2etqJ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png new file mode 100644 index 0000000000000000000000000000000000000000..1b06cb152d92ea6f92024de0e23fb55c2e1caf2b GIT binary patch literal 1244 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz~biV;uw;_ z`gTUP{}l(3Hpct~iyo+Qv9a)GHM#x&@Bg9un77Nvwhl*SM;8~zqt6v{ncn(rPu(tc zcFvQfZ_a#~Q+Yl&ZTotC&rc3W@WA{}4)xJ(Wo2boY+3pmoF(f%{^6`^IQ#Ek-T!>o zDmNab<~Ic*Jq?KpEB$`$-<-x=b7}+MP1%3%qpT#?nJ`E$E>vtz*)>&HWRJMOpG&=) zm<3NSGH!fWSfC(lYL+V!?|dOWIdh99hwQOKB0E^5_MZOL+;wE0d2hnovyQK1*wPMc zl(ODZ=CgGDf&aN;W?hU4%9dPx=@ut9PmU<>PGD@>D&^;%Bv525B*h%M>DZF58@oQ9 zUDaCs{6hZRd2G*(GxXKWX1SMs2^TuNVs4(;5vk_4zhxs}%u!ycYnbZDnv*t(^Zc|49xqg-FP!dG zQMNqmeXYb}&n#Pq@|7x1-LkKzcpd%j)V?t@$+qHm#vCK52e#G=bN}j|mrQWJrTyyb zvA}34SD&>K-_zC?x-R0sIpeLB)}CbB%D$T~x2=*n5cR!;w}wBr)u_Eb7yU*`=E$#WZp^ltDNmSJkCT{FOKSxe8p+#;hS*a@UG~a z4vnVKyMG_$F?-vkYCB<*riYH&JmLkHEXBKI0 z;Q2Ez{MCe>|FIKgPAm?qHr``AYvP)}eo;5Jv3HyZ46s=dZG3yP6!%*LZ~g2O(k=0! zYvk9*|6{oIDqk&Ecy?RMk*-Hezv(^MWw*Yo>+|{C<;R%Xy24c#KjU3&8Z;@}G)d~j zt5fo=e}XhM>sNpH^!t7HlLI;*w#`?mR6v3c>^~pK|M4VabJ8KZC!mtW)78&qol`;+ E0KA$oMgRZ+ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee2dcd8fe3ae1032da9d67c058768b34ed2b05b GIT binary patch literal 1219 zcmV;!1U&nRP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW}ElET{RA>e5m`RTfQ5c4`d7kH? zV~8mT7FbJ&g#?M;VPj{(!m8KA(l4-MZ)r))W6;_h(&nkro=55?x2w*nTXiRCsW*Am ztuuV%`My(a%$N#Q1gZ#B5vU?iMWBj66@hL=pr=!chKGlhJq1pH;}ZVn`3wGpUwe9b z{M`|>%`qIAjD>UHY&ZkzR3rJ{S@RjbOZX9Ihxy$y8Y#|IfHP)eQ9_+*6+aO0O5)(B zR)jU>SdyI;C|(Mil2O2Dv-lVXeU?Tkqi|?E8dkz(u+(1GHwztmP&R{wjl-$=C|C<8 z6|m6S@hE+P{LmHz)OJE+}GiiMcqWo*# z!umPnTc@+&f`sae!A5hVi2Pi~P->^!1Y?cC_Wc|_E24~bxj>)Uv>Ek6b%$W~Z=>&R zXtFjIbqpmQm8~##^qw)-j{-YcTY+w~rh}`Y84ckMx?hGS91A*z;Azb1l(mqC$KftQ zKcpwx{f-?vwFWMZ$i9aio|p{mav^vOLXk2;3iAjCkwkkolXIbR%(wxP?z5SgWuFG; zE%Ltc%z*JB2Jawqkmq`suD@vG31&+PEEnFnJ53+`p`BYXp2 zqCK)z0Ffwj`GQF$DLUn)_@l#DQsfRR#wf-+!@9nIr1Gc#F!z>GeD1L(`Nb#zT( z&Jyt|xfyecxp0j+Q3JvzBOr5B9A}LVnWc8aqxuM%!4VljuNfO+JX#JKlbbOYgn)2s zXftedWgFfAV|&f6^&;P=BhJ`gB$2ls ztxf+bh{^Nf_focz6h=%~PyojCGU444f(|{z0Ha(AiIc0?WKDlbqupzN5LLz z(rkFS+YqA1inZFb4laShY+cFQ^LJG{{y}*!+zIWB88E&a9)TC(7g&$qy!68}a4+=x zFayTbu?yO0x(5`dzXHtWJa`%o!J@du!u=u38PDhlt?TF*MjVFkV6(Wu#&%rt?ei0Z zjzW)EtGI>$|I49elx`krjTquRbQLa5&+%?Iy9Awo0sY?Vg?r#a7{W0cMPF#5>ti^# z5x#~seB(zS3>we)Shx>fhV?krb>kZ;#JX*85Z;Bg>mYX<>vZr06lY<}Cn#58vy&LM z9r~G63hdbp|9uB6W%d8Qn2aoh-Mwr(6;vD<2am%6D1N|8a7U+fc111@oP;5KX0R>y zRaYEIE5Z1Q&@YO5n6*RcwWIDGCv@(7;+akz9Cc2_3{IRo$MZmJO*LLcpo%~hfhq!3 h1gZ#B5g5G@_ybB>*V8jxGR^=1002ovPDHLkV1miB6T<)i literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png new file mode 100644 index 0000000000000000000000000000000000000000..6f88fb83073288be6af941aaed6e90bd0a12c993 GIT binary patch literal 1230 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz+&O);uw;_ z`gVF|zHgvN+tq;Ji?h4~mUsy4`yu_qdEXD~eIMm(RNFL6LqokfHnxdf|7`MHW$*Jh zweKv;9VYLcbiMHVhHF*VZ)Lx|YnnZ22?sL#vzCL0_f){@t3lt>HZZO^{bBZd{SU%5 z(o#~N{xeV9C)j*K%|?cKaf0-O5cR+I5t|w8QhxB<6#M@^(n@lj34`S3jrz?gRa0F> z_J|4mxzxRBT}SFo%a(`C3$$fT=a_Y$SA4O3qe&5$)9Z}}jC@UQ)sgqtdb}yT%yX@b zFKD-+0jJru4;OBI)Tm|scRww0aRhgc%Hag>Ho<*!kL;SwYAmqkYJrtd^MrFA88RU! z-PP9if0y_lwzc4?%&)bVWfT0_-X1;TR=mFNpI4H^*2{C*HXcj(UB~+Dl|*vv(uDIl zw|e-PbK8%+u|IHc_k|QYG1WG~{!^9$)>Xx4&L$l2yB2E)Ibcc8gi|(6jwct{ zo_gZ9K+ZU?q2+guTH4L^2P@n6y|3{;^h2mQ_(je6?Db(47SSdeKCXMs=?vhPi^t@rg;hF zT5po??Q}e4R>O7V+pO5vt~EMtb2g@)RLZxFn*A?S;PUgM@0aE%uhcb6b!4?Dp27Kk z+60dmntT#Z-6l=6Ii;3urDAvX-GbdALJN=fm0EcntzCHfMskwvk6#%zDJBQ(tQY3~ zRlV<-;2fp->g&_iHFzFk@}> z8_7F?F=mJDCBA!94~JVvG4-9JjUcES~OY#-B zp@;0DhUum2H#IP2Z!7!WEtzvm)VoR{HF!dV&z|;@8&-z1ug(8H?f5p0f1wX;EraJ| z{MsEad3oVyh4O1@39rAM4d122(N?DVe69sk(Z^FW&eebU^p@LD_Q1{DnwkZ-rrG+L zwR)Z8kW0MCGK2l!-0)Wudj3aGlsU0E?6%~$o>Z0W_nzGBvW!NX#DA=c|I0M7^a0ll z)>BG5IQ7 + + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml new file mode 100644 index 0000000000..4789ca1988 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml new file mode 100644 index 0000000000..e5e6fcb799 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml new file mode 100644 index 0000000000..81ffb29e9e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml new file mode 100644 index 0000000000..57fd8a6b0a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml index b9cfaf3e10..34334da834 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml @@ -9,4 +9,6 @@ #FF343C63 #FF282F62 #FFFFFF + #2C2E30 + #D4D8DC \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml index b458be2e4f..fb22d27937 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml @@ -18,6 +18,9 @@ #FF0006 #0099dd #FFFFFF + #2C2E30 + #D4D8DC + #7FECECEC #FF999900 #FFCC0000 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 69abd2557a..90c260be7e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -52,5 +52,5 @@ 是否修改车机绑定? 是否绑定车机? - + 蘑菇星云 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt index da734fb58f..2ab37413c9 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.api.hmi.warning import android.view.View +import android.view.ViewGroup import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.map.Infrastructure @@ -263,4 +264,15 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy { fun showVideoDialog(infList: List) fun setBusOperationView(view:IOchBusView) + + /** + * 设置状态栏暗夜或明亮模式 + * 默认 light + */ + fun setStatusBarDarkOrLight(light: Boolean) + + /** + * 更新(添加/删除)状态栏右侧元素 + */ + fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index c4d6fc3a55..20a408e34c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.call.hmi import android.view.View +import android.view.ViewGroup import com.alibaba.android.arouter.launcher.ARouter import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.constants.MoGoFragmentPaths @@ -292,7 +293,13 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.showModifyBindingcarDialog() } - fun showUpgradeDialog(name: String, url: String, title: String, content: String, installType: String) { + fun showUpgradeDialog( + name: String, + url: String, + title: String, + content: String, + installType: String + ) { waringProviderApi?.showUpgradeDialog(name, url, title, content, installType) } @@ -397,7 +404,6 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.showVideoDialog(infList) } - /** * 设置 bus出车/收车View * @param view @@ -405,4 +411,19 @@ object CallerHmiManager : CallerBase() { fun setBusOperationView(view: IOchBusView) { waringProviderApi?.setBusOperationView(view) } + + /** + * 设置状态栏暗夜或明亮模式 + * 默认 light + */ + fun setStatusBarDarkOrLight(light: Boolean = true) { + waringProviderApi?.setStatusBarDarkOrLight(light) + } + + /** + * 更新(添加/删除)状态栏右侧元素 + */ + fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + waringProviderApi?.updateStatusBarRightView(insert, tag, viewGroup) + } } \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java index 78eae55bdb..bb1691f024 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java @@ -414,6 +414,15 @@ public final class BarUtils { return statusBarView; } + public static void hideStatusBarAndSticky(@NonNull Window window){ + final ViewGroup decorView = (ViewGroup) window.getDecorView(); + final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() | uiOptions); + } + public static void transparentStatusBar(@NonNull final Activity activity) { transparentStatusBar(activity.getWindow()); } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index 8015fc5637..4318a63680 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -25,7 +25,7 @@ public abstract class MvpActivity> exten @Override protected void onCreate(@Nullable Bundle savedInstanceState) { - BarUtils.transparentStatusBar(this); + BarUtils.hideStatusBarAndSticky(this.getWindow()); super.onCreate(savedInstanceState); beforeSetContentView(savedInstanceState); setContentView(getLayoutId()); @@ -37,7 +37,6 @@ public abstract class MvpActivity> exten @Override protected void onResume() { super.onResume(); - BarUtils.setNavBarVisibility(this, false); } From 5fcd887dfff1b8f8e9d8abfdf060e906937b5072 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 26 Oct 2022 15:37:00 +0800 Subject: [PATCH 058/137] .. --- .../network/UpgradeAppNetWorkManager.java | 9 +++-- .../funcconfig/FuncConfigCenter.kt | 4 +- .../funcconfig/FuncConfigImpl.kt | 5 ++- .../network/FuncConfigNetWorkModel.kt | 10 ++--- .../hmi/ui/setting/DebugSettingView.kt | 36 +++++++++++------- .../function/hmi/ui/widget/StatusBarView.kt | 3 +- .../src/main/res/drawable/battery_charge.png | Bin 1254 -> 467 bytes .../main/res/layout/view_battery_group.xml | 3 +- .../CallerAutoPilotStatusListenerManager.kt | 9 +---- .../mogo/logger/scene/SceneConstant.kt | 1 + 10 files changed, 42 insertions(+), 38 deletions(-) diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java index fd4ec34bb6..d7dc88aa4b 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.function.appupgrade.network; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING; + import android.content.Context; import android.util.Log; @@ -56,8 +58,7 @@ public class UpgradeAppNetWorkManager { // String mac = "48:b0:2d:3a:bc:78"; String sn = MoGoAiCloudClientConfig.getInstance().getSn(); int versionCode = AppUtils.getAppVersionCode(); - CallerLogger.INSTANCE.d(TAG, "getAppUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode); - Log.d(TAG, "mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "getAppUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode); UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, screenType); RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)); mUpgradeApiService.getUpgradeInfo(requestBody) @@ -71,14 +72,14 @@ public class UpgradeAppNetWorkManager { @Override public void onNext(@NonNull UpgradeAppInfo info) { if (info != null && info.result != null) { - CallerLogger.INSTANCE.d(TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode()); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode()); Log.d(TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode() + "--versionCode =" + versionCode + "--info.result = " + info.result); if (info.result.getVersionCode() > versionCode) { CallerHmiManager.INSTANCE.showUpgradeDialog(info.result.getAppUrl().substring(info.result.getAppUrl().lastIndexOf("/")+1), info.result.getAppUrl(), info.result.getInstallTitle(), info.result.getInstallContent(), info.result.getInstallType()); } } else { Log.e(TAG, "onNext info == null"); - CallerLogger.INSTANCE.d(TAG, "UpgradeAppInfo onNext info == null"); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo onNext info == null"); } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 7a68a09b7c..4c310c0302 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -1,7 +1,6 @@ package com.zhjt.mogo_core_function_devatools.funcconfig import android.content.Context -import android.util.Log import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.AbsMogoApplication @@ -67,7 +66,6 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo } override fun onMsgReceived(obj: FuncConfig?) { - Log.d(TAG, "onMsgReceived Business : $obj") obj?.let { invokeUpdate(it) } @@ -82,11 +80,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo clientPkFileName = "sn" ) private fun refreshConfig(funcConfig: FuncConfig) { + BizManager.updateBizConfigData(funcConfig) invokeUpdate(funcConfig) } private fun invokeUpdate(funcConfig: FuncConfig) { - BizManager.updateBizConfigData(funcConfig) funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index 0f9f976b4f..f2c0e0c114 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -23,7 +23,10 @@ object FuncConfigImpl { data: String? ) { when (type) { - } + BIZ_BEAUTY_MODE -> FunctionBuildConfig.isDemoMode = state + BIZ_RAIN_MODE -> FunctionBuildConfig.isRainMode = state + BIZ_WARNING_UPLOAD -> FunctionBuildConfig.isReportWarning = state + } } } ) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 25644cdc03..10540e4e12 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,13 +34,9 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - //todo test -// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["sn"] = "X20202203105S688HZ" -// map["mac"] = DeviceUtils.getMacAddress() - map["mac"] = "48:b0:2d:3a:bc:78" -// map["channelVersion"] = FuncConfigConst.getChannelCode() - map["channelVersion"] = 1 + map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["mac"] = DeviceUtils.getMacAddress() + map["channelVersion"] = FuncConfigConst.getChannelCode() } loader { apiCall { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 4a20ce0775..8bb0c5577a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -62,6 +62,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter +import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -574,7 +575,7 @@ class DebugSettingView @JvmOverloads constructor( // 演示模式 tbIsDemoMode.setOnCheckedChangeListener { _, isChecked -> - CallerHmiManager.updateStatusBarRightView(isChecked,"demoMode", DemoModeView(context)) + CallerHmiManager.updateStatusBarRightView(isChecked, "demoMode", DemoModeView(context)) CallerAutoPilotManager.setDemoMode(isChecked) if (!isChecked) { //关闭美化模式时,通知工控机 @@ -1859,29 +1860,35 @@ class DebugSettingView @JvmOverloads constructor( override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { when (type) { BIZ_BEAUTY_MODE -> { - if(lock){ - tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) - }else{ - tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_normal_background_right) + if (lock) { + tbIsDemoMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbIsDemoMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) } } BIZ_RAIN_MODE -> { - if(lock){ - tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) - }else{ - tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_normal_background_right) + if (lock) { + tbIsRainMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbIsRainMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) } } BIZ_WARNING_UPLOAD -> { - if(lock){ - tbReportWarning.background = resources.getDrawable(R.drawable.radio_button_lock_background) - }else{ + if (lock) { + tbReportWarning.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { tbReportWarning.background = null } } BIZ_BAG_RECORD -> { if (lock) { - btnRecordBag.background = resources.getDrawable(R.drawable.radio_button_lock_background) + btnRecordBag.background = + resources.getDrawable(R.drawable.radio_button_lock_background) } else { btnRecordBag.requestFocus() btnRecordBag.background = null @@ -1889,7 +1896,8 @@ class DebugSettingView @JvmOverloads constructor( } BIZ_FULL_LOG -> { if (lock) { - tbLogCatch.background = resources.getDrawable(R.drawable.radio_button_lock_background) + tbLogCatch.background = + resources.getDrawable(R.drawable.radio_button_lock_background) } else { tbLogCatch.requestFocus() tbLogCatch.background = null diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index ef49f6f3d0..766c2f62b9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.BarUtils import com.mogo.eagle.core.utilcode.util.ScreenUtils import kotlinx.android.synthetic.main.view_status_bar.view.* +import java.util.concurrent.CopyOnWriteArrayList class StatusBarView @JvmOverloads constructor( context: Context, @@ -26,7 +27,7 @@ class StatusBarView @JvmOverloads constructor( LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) } - private val rightViewList = mutableListOf() + private val rightViewList = CopyOnWriteArrayList() override fun onAttachedToWindow() { super.onAttachedToWindow() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png index 2c46f99c9146c77e21c8d7f92646445dfd26cda3..92df72187c9f4d4127a979739664bc1784c5f995 100644 GIT binary patch delta 406 zcmaFHd6`+UGr-TCmrII^fq{Y7)59eQNDBb57zZ1WJh@7yW}>1;y}$xy1{NTn5hMe| z47){JfGQbnJzX3_ECiDi6omf#|39C{meGUPX_+>_*R_Km|H z?hZ!>w)IIRo(tH-6z(xx;$+dk@bu%SMyVMM6`CIEA~^?_F~&=rVaV!mx>Ul}**l+e z%SQe*U7@$l@#6I%Vk;JMdI}o_H!WavxVrR&)r1@V1(|7$o(!VtOgCc}FJb-0(wQU^0`#t7M4=7XyL+imvJ*xsoT!+!WlUJw7+hZSwlUu=Cmqr-FMb zZf?hFEcm6FGd@Vltc&6mIX=Bk;TWUn-lIte92ZDfn{fvoY3R!Nu`y#GlZdcGU`ID| zNJc~2fn){wY`-H<#a&en+cVspcfjHBtQiH83s_7as88Ty$lBMGqQE6Qol!yj5A&ml y1<#r_tU4Yt{M{|u@wp?gJCrw|SR;&6r->oew8c5{&+Z~nkb1iMxvXxRRHPJ8C@5@P z)52QHwRF#mEjj1(96UnbX8?g-pc1Blz%gJLumWp^ zGp7&%@mGM;(qpZ{Fa+G30v&%TNHYP4&DL*>Tand*IoSpNY#$$~P+%fI2-hQiZD?rt zjari#s*auC>B@g9RQKLO5LphgpGQYWEz8$zm$!GARjKPW|9MpiA`3zIeC)7h&cH5nW}paE7WeLY05yWLg5>UwczdR&gl2|M0PM-tZ7(SNdNbjzKe(Rr!gUj(Dq9)I}U?g8ej%F zgv{1wH_nRQ_>oZD?LV+5L!X;-h^|CA@QM3=$uao{VoTsme+GO3KFjOsvh?x=m_B+N z5TP@n@82f32<42mHym#;FCYik@DQQ!<(r!So$%(zL`Ss#a_9U^&cz!D{O>2C7y&-AMa9yBdBw z&#$95BCTwp!E!`nyfAj0M0V1O|eq3^OKq{4z&_;;V zkzb6xYe!K;Qd{37p*DW1zuAC4Dz)*K5GkgZSQ90LI~4HOAD8rDs^DcH&Vk4ku>zv< z@alE~&W=uVC5^CKfZ!KG6e(X4NJD@IfUF4c=gaeo59D%S9x$by{0~xF(48r4V?+P| O002ov22Mn-LSTZ&U@bcU diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml index 4789ca1988..2cdbd556bc 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml @@ -3,6 +3,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" + android:layout_marginLeft="@dimen/dp_10" android:orientation="horizontal"> Date: Wed, 26 Oct 2022 18:59:04 +0800 Subject: [PATCH 059/137] add func of pnc warning func config --- .../DevaToolsProvider.kt | 1 + .../funcconfig/FuncConfigImpl.kt | 2 + .../hmi/ui/setting/DebugSettingView.kt | 9 ++- .../function/hmi/ui/setting/SOPSettingView.kt | 67 +++++++++++++++++-- .../src/main/res/layout/view_sop_setting.xml | 15 +---- .../function/map/identify/WarningHelper.kt | 6 +- .../core/data/config/FunctionBuildConfig.kt | 7 ++ ...allerDevaToolsFuncConfigListenerManager.kt | 6 +- 8 files changed, 86 insertions(+), 27 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 8ebdf939ae..8329ac38a6 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -36,6 +36,7 @@ class DevaToolsProvider : IDevaToolsProvider { override fun initBiz() { bizConfigCenter.init(mContext!!) +// FuncConfigImpl.init() traceManager.init(mContext!!) MogoLogCatchManager.init(mContext!!) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index f2c0e0c114..82bd32a5dc 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.funcconfig import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BEAUTY_MODE +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_WARNING_UPLOAD import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION @@ -26,6 +27,7 @@ object FuncConfigImpl { BIZ_BEAUTY_MODE -> FunctionBuildConfig.isDemoMode = state BIZ_RAIN_MODE -> FunctionBuildConfig.isRainMode = state BIZ_WARNING_UPLOAD -> FunctionBuildConfig.isReportWarning = state + BIZ_PNC_WARNING -> FunctionBuildConfig.isPNCWarning = state } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 8bb0c5577a..dc8647fd0a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -41,7 +41,6 @@ import com.mogo.eagle.core.data.obu.ObuStatusInfo import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity import com.mogo.eagle.core.function.api.autopilot.* -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener @@ -62,7 +61,6 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter -import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -1860,6 +1858,7 @@ class DebugSettingView @JvmOverloads constructor( override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { when (type) { BIZ_BEAUTY_MODE -> { + tbIsDemoMode.isClickable = !lock if (lock) { tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1869,6 +1868,7 @@ class DebugSettingView @JvmOverloads constructor( } } BIZ_RAIN_MODE -> { + tbIsRainMode.isClickable = !lock if (lock) { tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1878,6 +1878,7 @@ class DebugSettingView @JvmOverloads constructor( } } BIZ_WARNING_UPLOAD -> { + tbReportWarning.isClickable = !lock if (lock) { tbReportWarning.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1887,18 +1888,22 @@ class DebugSettingView @JvmOverloads constructor( } BIZ_BAG_RECORD -> { if (lock) { + btnRecordBag.isClickable = false btnRecordBag.background = resources.getDrawable(R.drawable.radio_button_lock_background) } else { + btnRecordBag.isClickable = true btnRecordBag.requestFocus() btnRecordBag.background = null } } BIZ_FULL_LOG -> { if (lock) { + tbLogCatch.isClickable = false tbLogCatch.background = resources.getDrawable(R.drawable.radio_button_lock_background) } else { + tbLogCatch.isClickable = true tbLogCatch.requestFocus() tbLogCatch.background = null } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index d405d83176..57d2c9111f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -7,7 +7,10 @@ import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.obu.CallerOBUManager import com.mogo.eagle.core.function.hmi.R @@ -23,7 +26,11 @@ class SOPSettingView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr){ +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsFuncConfigListener { + + companion object{ + const val TAG = "SOPSettingView" + } init { LayoutInflater.from(context).inflate(R.layout.view_sop_setting, this, true) @@ -38,9 +45,10 @@ class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.isDetouring = isChecked } + tbMarkingObstacles.isChecked = FunctionBuildConfig.isPNCWarning //危险障碍物颜色标记开关 tbMarkingObstacles.setOnCheckedChangeListener { _, isChecked -> - + FunctionBuildConfig.isPNCWarning = isChecked } if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ @@ -82,11 +90,6 @@ class SOPSettingView @JvmOverloads constructor( } } - //自车感知到的他车碰撞预警 - tbCollisionWarning.setOnCheckedChangeListener { buttonView, isChecked -> - - } - // 演示模式,上一次勾选的数据 tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode // 演示模式 @@ -168,4 +171,54 @@ class SOPSettingView @JvmOverloads constructor( } + override fun onAttachedToWindow() { + super.onAttachedToWindow() + //添加 业务配置监听 + CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( + FuncBizConfig.FOUNDATION, + TAG, + this + ) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + // 移除 业务配置监听 + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + } + + override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + when (type) { + FuncBizConfig.BIZ_BEAUTY_MODE -> { + tbDemoMode.isClickable = !lock + if (lock) { + tbDemoMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbDemoMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) + } + } + FuncBizConfig.BIZ_RAIN_MODE -> { + tbRainMode.isClickable = !lock + if (lock) { + tbRainMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbRainMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) + } + } + FuncBizConfig.BIZ_PNC_WARNING -> { + tbMarkingObstacles.isClickable = !lock + if (lock) { + tbMarkingObstacles.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbMarkingObstacles.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) + } + } + } + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index 105f81a5cd..d95264b1c7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -69,19 +69,6 @@ android:textSize="@dimen/dp_24" app:layout_constraintTop_toBottomOf="@id/tbTrafficLight" /> - - Unit)) { + if(!FunctionBuildConfig.isPNCWarning){ + color.invoke("") + return + } if (FunctionBuildConfig.isBeautyMode) { // 判断物体是否有预警信息 if (pncWarningBeautyTrafficData.containsKey(uuid)) { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt index 327e2b186a..15cae7ecf7 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt @@ -156,4 +156,11 @@ object FunctionBuildConfig { @JvmField var isReportWarning = true + /** + * 是否开启PNC障碍物颜色提醒 + */ + @Volatile + @JvmField + var isPNCWarning = true + } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt index fc7254e0d7..5b6c8ba255 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt @@ -10,7 +10,7 @@ object CallerDevaToolsFuncConfigListenerManager { private val M_DEVA_TOOLS_FUNC_CONFIG_LISTENER: ConcurrentHashMap = ConcurrentHashMap() - private val cacheMap = mutableMapOf>() + private val cacheMap = mutableMapOf>() /** * 添加监听 @@ -28,7 +28,9 @@ object CallerDevaToolsFuncConfigListenerManager { M_DEVA_TOOLS_FUNC_CONFIG_LISTENER["$biz'_'$tag"] = listener cacheMap[biz]?.let { - invokeDevaToolsFuncConfigBizUpdate(biz,it) + if (it.size > 0) { + invokeDevaToolsFuncConfigBizUpdate(biz, it) + } } } From b91f1d067562f8e3ee293456fcbec0ba18dbff07 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 26 Oct 2022 21:04:07 +0800 Subject: [PATCH 060/137] =?UTF-8?q?[2.12.0-f]=20tts=20=E8=A1=A5=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/mogo-och-bus/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/mogo-och-bus/src/main/res/values/strings.xml b/OCH/mogo-och-bus/src/main/res/values/strings.xml index 42ef590592..afe287c645 100644 --- a/OCH/mogo-och-bus/src/main/res/values/strings.xml +++ b/OCH/mogo-och-bus/src/main/res/values/strings.xml @@ -44,7 +44,7 @@ 已到达%1$s,带好随身物品,下车请注意。 车辆起步,请扶稳坐好,前方到站是%1$s,请下车的乘客做好准备。 - 感谢您体验\'蘑菇车联\'自动驾驶小巴车,请您携带好随身物品,我们下次再见。 + 感谢您体验\'蘑菇车联\'自动驾驶小巴车,我们下次再见。 From fa31960b9c2fd662224673ae0a85498384420a9c Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 12:07:06 +0800 Subject: [PATCH 061/137] fix bug of func config --- .../DevaToolsProvider.kt | 4 +- .../funcconfig/FuncConfigCenter.kt | 12 ++--- .../funcconfig/FuncConfigImpl.kt | 2 +- .../network/FuncConfigNetWorkModel.kt | 10 +++-- .../hmi/ui/setting/DebugSettingView.kt | 12 ++--- .../function/hmi/ui/setting/SOPSettingView.kt | 45 +++++++++---------- .../IMoGoDevaToolsFuncConfigListener.kt | 7 ++- ...allerDevaToolsFuncConfigListenerManager.kt | 29 ++++++++++-- 8 files changed, 76 insertions(+), 45 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 8329ac38a6..119b51b41e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -35,9 +35,9 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun initBiz() { - bizConfigCenter.init(mContext!!) -// FuncConfigImpl.init() traceManager.init(mContext!!) + bizConfigCenter.init(mContext!!) + FuncConfigImpl.init() MogoLogCatchManager.init(mContext!!) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 4c310c0302..1476cf959e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -42,6 +42,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext) .registerOnMessageListener(FUNC_CONFIG_TYPE, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) + + //未连接到工控,默认配置 + val bizJson = SPUtils.getInstance("biz_config") + .getString("config", GsonUtils.toJson(defaultFuncConfig())) + refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) } override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { @@ -49,12 +54,7 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo UiThreadHandler.post { funcConfigNetWorkModel.requestFuncConfig(carConfigResp.macAddress, { SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it)) - refreshConfig(it) - }, { - val bizJson = SPUtils.getInstance("biz_config") - .getString("config", GsonUtils.toJson(defaultFuncConfig())) - refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) - }) + refreshConfig(it) }, {}) } } else { ToastUtils.showLong("未获取到域控mac信息") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index 82bd32a5dc..1d0d9ef98b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -15,7 +15,7 @@ object FuncConfigImpl { fun init() { CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener(FOUNDATION, - TAG, + TAG,false, object : IMoGoDevaToolsFuncConfigListener { override fun updateBizData( type: String, diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 10540e4e12..25644cdc03 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,9 +34,13 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["mac"] = DeviceUtils.getMacAddress() - map["channelVersion"] = FuncConfigConst.getChannelCode() + //todo test +// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["sn"] = "X20202203105S688HZ" +// map["mac"] = DeviceUtils.getMacAddress() + map["mac"] = "48:b0:2d:3a:bc:78" +// map["channelVersion"] = FuncConfigConst.getChannelCode() + map["channelVersion"] = 1 } loader { apiCall { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index dc8647fd0a..4a764781c9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -196,9 +196,7 @@ class DebugSettingView @JvmOverloads constructor( //添加 业务配置监听 CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( - FuncBizConfig.FOUNDATION, - TAG, - this + FuncBizConfig.FOUNDATION, TAG, true, this ) if (logInfoView != null) { @@ -230,7 +228,7 @@ class DebugSettingView @JvmOverloads constructor( CallerAutopilotVehicleStateListenerManager.removeListener(TAG) // 移除 业务配置监听 - CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener( FuncBizConfig.FOUNDATION, TAG) if (logInfoView != null) { logInfoView!!.onEnterBackground() @@ -568,6 +566,10 @@ class DebugSettingView @JvmOverloads constructor( } } + Log.i( + "1026-emArrow", + "debug setting FunctionBuildConfig.isDemoMode : ${FunctionBuildConfig.isDemoMode}" + ) // 演示模式,上一次勾选的数据 tbIsDemoMode.isChecked = FunctionBuildConfig.isDemoMode @@ -1855,7 +1857,7 @@ class DebugSettingView @JvmOverloads constructor( } } - override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + override fun updateBizView(type: String, lock: Boolean) { when (type) { BIZ_BEAUTY_MODE -> { tbIsDemoMode.isClickable = !lock diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index 57d2c9111f..f77c252142 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -28,7 +28,7 @@ class SOPSettingView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsFuncConfigListener { - companion object{ + companion object { const val TAG = "SOPSettingView" } @@ -51,7 +51,7 @@ class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.isPNCWarning = isChecked } - if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { tbMarkingObstacles.visibility = View.GONE } @@ -71,9 +71,9 @@ class SOPSettingView @JvmOverloads constructor( //红绿灯标识 tbTrafficLight.isChecked = HmiBuildConfig.isShowTrafficLightView tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> - if(!isChecked){ + if (!isChecked) { HmiBuildConfig.isShowTrafficLightView = false - }else{ + } else { HmiBuildConfig.isShowTrafficLightView = true CallerHmiManager.disableWarningTrafficLight() } @@ -82,9 +82,9 @@ class SOPSettingView @JvmOverloads constructor( //限速标识 tbSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView tbSpeedLimit.setOnCheckedChangeListener { _, isChecked -> - if(isChecked){ + if (isChecked) { HmiBuildConfig.isShowLimitingVelocityView = true - }else{ + } else { HmiBuildConfig.isShowLimitingVelocityView = false CallerHmiManager.disableLimitingVelocity() } @@ -122,13 +122,13 @@ class SOPSettingView @JvmOverloads constructor( //OBU控制总开关 tbObu.isChecked = CallerOBUManager.isConnected() tbObu.setOnCheckedChangeListener { _, isChecked -> - if(!isChecked){ - if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){ + if (!isChecked) { + if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { CallerOBUManager.resetObuIpAddress("192.168.1.199") - }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { CallerOBUManager.resetObuIpAddress("192.168.8.199") } - }else{ + } else { //断开链接 CallerOBUManager.disConnectObu() } @@ -137,31 +137,32 @@ class SOPSettingView @JvmOverloads constructor( //变道绕障的目标障碍物速度阈值 tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" ivSpeedReduce.setOnClickListener { - if(FunctionBuildConfig.detouringSpeed<=3){ + if (FunctionBuildConfig.detouringSpeed <= 3) { ToastUtils.showShort("阈值小可为3 m/s") - }else{ + } else { FunctionBuildConfig.detouringSpeed-- tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } } ivSpeedAdd.setOnClickListener { - if(FunctionBuildConfig.detouringSpeed>=7){ + if (FunctionBuildConfig.detouringSpeed >= 7) { ToastUtils.showShort("阈值最大可为7 m/s") - }else{ + } else { FunctionBuildConfig.detouringSpeed++ tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } } btnSpeedSet.setOnClickListener { - val isSuccess = CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) - if(isSuccess == true){ + val isSuccess = + CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) + if (isSuccess == true) { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功") - }else{ + } else { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败") } } - if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { tvSpeedThresholdTitle.visibility = View.GONE ivSpeedReduce.visibility = View.GONE tvSpeed.visibility = View.GONE @@ -175,19 +176,17 @@ class SOPSettingView @JvmOverloads constructor( super.onAttachedToWindow() //添加 业务配置监听 CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( - FuncBizConfig.FOUNDATION, - TAG, - this + FuncBizConfig.FOUNDATION, TAG, true, this ) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() // 移除 业务配置监听 - CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(FuncBizConfig.FOUNDATION, TAG) } - override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + override fun updateBizView(type: String, lock: Boolean) { when (type) { FuncBizConfig.BIZ_BEAUTY_MODE -> { tbDemoMode.isClickable = !lock diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt index 099964a0af..ab3cdb20ec 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt @@ -12,5 +12,10 @@ interface IMoGoDevaToolsFuncConfigListener { * lock : 锁定状态 * data : json */ - fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) + fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) {} + + /** + * 更新业务锁定状态,仅限View使用 + */ + fun updateBizView(type: String,lock: Boolean){} } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt index 5b6c8ba255..a06e25dc9f 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt @@ -11,6 +11,7 @@ object CallerDevaToolsFuncConfigListenerManager { ConcurrentHashMap() private val cacheMap = mutableMapOf>() + private val viewCacheMap = mutableMapOf() /** * 添加监听 @@ -20,16 +21,18 @@ object CallerDevaToolsFuncConfigListenerManager { fun registerDevaToolsFuncConfigListener( @Nullable biz: String, @Nullable tag: String, + onlyViewRegister:Boolean = false, @Nullable listener: IMoGoDevaToolsFuncConfigListener ) { if (M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.containsKey("$biz'_'$tag")) { return } M_DEVA_TOOLS_FUNC_CONFIG_LISTENER["$biz'_'$tag"] = listener + viewCacheMap["$biz'_'$tag"] = onlyViewRegister cacheMap[biz]?.let { if (it.size > 0) { - invokeDevaToolsFuncConfigBizUpdate(biz, it) + invokeDevaToolsFuncConfigBizUpdate(biz, it, tag) } } } @@ -43,6 +46,7 @@ object CallerDevaToolsFuncConfigListenerManager { return } M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.remove("$biz'_'$tag") + viewCacheMap.remove("$biz'_'$tag") } /** @@ -63,15 +67,32 @@ object CallerDevaToolsFuncConfigListenerManager { /** * 由订阅方判断Type类型,聚合一些 */ - fun invokeDevaToolsFuncConfigBizUpdate(biz: String, list: MutableList) { + fun invokeDevaToolsFuncConfigBizUpdate( + biz: String, + list: MutableList, + tag: String = "" + ) { cacheMap[biz] = list M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.forEach { - val key = it.key - if (key.contains(biz)) { + //全量更新 + if (tag.isEmpty()) { list.forEach { subBiz -> val listener = it.value listener.updateBizData(subBiz.type, subBiz.state, subBiz.lock, subBiz.data) } + return@forEach + } + // 根据biz_tag选择行下发 + val key = it.key + if (key.contains("$biz'_'$tag")) { + list.forEach { subBiz -> + val listener = it.value + if(viewCacheMap["$biz'_'$tag"] == true){ + listener.updateBizView(subBiz.type,subBiz.lock) + }else{ + listener.updateBizData(subBiz.type, subBiz.state, subBiz.lock, subBiz.data) + } + } } } } From b01d0f3e9ddc146557b92c9f35b0d71729e367a2 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 12:08:09 +0800 Subject: [PATCH 062/137] note the test code --- .../funcconfig/network/FuncConfigNetWorkModel.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 25644cdc03..c0d69ac4a4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -35,12 +35,12 @@ class FuncConfigNetWorkModel { error = onError } //todo test -// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["sn"] = "X20202203105S688HZ" -// map["mac"] = DeviceUtils.getMacAddress() - map["mac"] = "48:b0:2d:3a:bc:78" -// map["channelVersion"] = FuncConfigConst.getChannelCode() - map["channelVersion"] = 1 + map["sn"] = MoGoAiCloudClientConfig.getInstance().sn +// map["sn"] = "X20202203105S688HZ" + map["mac"] = DeviceUtils.getMacAddress() +// map["mac"] = "48:b0:2d:3a:bc:78" + map["channelVersion"] = FuncConfigConst.getChannelCode() +// map["channelVersion"] = 1 } loader { apiCall { From ab541cb175ab20ec93b848ea54e81bf748418f96 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 14:25:44 +0800 Subject: [PATCH 063/137] code style and not the test code --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1729b5f465..2af28df989 100644 --- a/gradle.properties +++ b/gradle.properties @@ -59,8 +59,8 @@ bytex.ASM_API=ASM7 HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 -BIZCONFIG_VERSION=1.2.8 -SERVICE_BIZ_VERSION=1.2.1 +BIZCONFIG_VERSION=1.3.0 +SERVICE_BIZ_VERSION=1.2.2 ################ 外部依赖引用 ################ # loglib LOGLIB_VERSION=1.3.38 From 8c38ef7cd69a1b960bfffac2f5df53e4fd0770d2 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 14:30:20 +0800 Subject: [PATCH 064/137] update biz version --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2af28df989..2af4bef262 100644 --- a/gradle.properties +++ b/gradle.properties @@ -59,8 +59,8 @@ bytex.ASM_API=ASM7 HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 -BIZCONFIG_VERSION=1.3.0 -SERVICE_BIZ_VERSION=1.2.2 +BIZCONFIG_VERSION=1.3.1 +SERVICE_BIZ_VERSION=1.2.3 ################ 外部依赖引用 ################ # loglib LOGLIB_VERSION=1.3.38 From 3d4530a1ca066efdf275f59a60ab7ff09f3d567b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 14:49:21 +0800 Subject: [PATCH 065/137] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 9 +-- .../badcase/biz/BadCaseConfigView.kt | 17 +---- .../badcase/biz/CaseListDialog.java | 74 ++++++++++++++++--- .../badcase/biz/CaseTopicListDialog.java | 6 ++ .../badcase/biz/InitiativeBadCaseWindow.kt | 13 ++-- .../badcase/biz/adapter/CaseListAdapter.kt | 21 ++++-- .../badcase/consts/BadCaseConfig.kt | 5 +- .../src/main/res/layout/item_case_list.xml | 6 +- .../main/res/layout/item_record_template.xml | 3 +- .../core/data/badcase/RecordCaseEntity.kt | 3 + 10 files changed, 108 insertions(+), 49 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 3306a57d94..a6cc679a5f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -107,13 +107,8 @@ internal object BadCaseManager : LifecycleEventObserver { if(ClickUtils.isFastClick()){ if(NetworkUtils.isConnected()){ if(BadCaseConfig.dockerVersion!=null){ - val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) - initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ - override fun closeWindow() { - initiativeBadCaseWindow.hideFloatWindow() - } - }) - initiativeBadCaseWindow.showFloatWindow() + val caseListDialog = CaseListDialog(activity) + caseListDialog.show() }else{ ToastUtils.showShort("工控机连接状态异常") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index e437709f0d..8d3f361326 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity @@ -157,20 +158,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter -// val list = ArrayList() -// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) -// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) -// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) -// list.add(TopicEntity("/record_cache/task",false,true)) -// list.add(TopicEntity("/sensor/rainmode",false,true)) -// list.add(TopicEntity("/record_cache/master/task",false,true)) -// list.add(TopicEntity("/telematics/trip_info_event",false,true)) -// list.add(TopicEntity("/telematics/light",false,true)) -// list.add(TopicEntity("/guardian/aicloud_state",false,true)) -// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) -// recordTemplateAdapter?.setData(recordTypesList) -// recordTemplateAdapter?.notifyDataSetChanged() - + rvTemplate.visibility = View.GONE } fun setClickListener(clickListener: ClickListener) { @@ -196,6 +184,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } } if(recordTypesList.size>1){ + rvTemplate.visibility = View.VISIBLE recordTemplateAdapter?.setData(recordTypesList) recordTemplateAdapter?.notifyDataSetChanged() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index f0e6f70ad7..07f6e8b59f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -1,33 +1,44 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz; +import android.app.Activity; import android.app.Dialog; -import android.content.Context; import android.os.Bundle; -import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.mogo.eagle.core.data.badcase.RecordCaseEntity; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; +import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.CaseListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; +import mogo.telematics.pad.MessagePad; +import record_cache.RecordPanelOuterClass; + /** * @author XuXinChao * @description BadCase清单选择对话框 * @since: 2022/10/19 */ -public class CaseListDialog extends Dialog { +public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListener { private TextView tvCancel; private RecyclerView rvCaseList; private CaseListAdapter caseListAdapter; + private static final String TAG = "CaseListDialog"; + private ArrayList recordTypeEntityArrayList = new ArrayList<>(); + private Activity activity; - public CaseListDialog(@NonNull Context context) { - super(context, R.style.bad_case_dialog); + public CaseListDialog(@NonNull Activity activity) { + super(activity, R.style.bad_case_dialog); + this.activity = activity; } @Override @@ -43,21 +54,60 @@ public class CaseListDialog extends Dialog { tvCancel = findViewById(R.id.tvCancel); rvCaseList = findViewById(R.id.rvCaseList); caseListAdapter = new CaseListAdapter(); + caseListAdapter.setListener(recordCaseEntity -> { + //录制Bag包,弹窗 + InitiativeBadCaseWindow initiativeBadCaseWindow = new InitiativeBadCaseWindow(activity); + initiativeBadCaseWindow.setClickListener(initiativeBadCaseWindow::hideFloatWindow); + initiativeBadCaseWindow.showFloatWindow(recordCaseEntity); + }); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2); gridLayoutManager.setOrientation(RecyclerView.VERTICAL); rvCaseList.setLayoutManager(gridLayoutManager); rvCaseList.setAdapter(caseListAdapter); - ArrayList list = new ArrayList<>(); - list.add("红绿灯检测错误"); - list.add("接管默认录制"); - list.add("行程冲突"); - list.add("自定义A"); - caseListAdapter.setData(list); - caseListAdapter.notifyDataSetChanged(); } private void initEvent() { tvCancel.setOnClickListener(v -> dismiss()); } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); + } + + + @Override + public void onAutopilotRecordResult(@NonNull RecordPanelOuterClass.RecordPanel recordPanel) { + + } + + @Override + public void onAutopilotRecordConfig(@NonNull MessagePad.RecordDataConfig config) { + ThreadUtils.runOnUiThread(() -> { + if(config.getRecordTypesCount()>0){ + for(int index=0;index topicList = new ArrayList<>(); + for(int position=0;position0){ + recordTypeEntityArrayList.add(new RecordCaseEntity(0,"自定义A",BadCaseConfig.customTopicList)); + } + caseListAdapter.setData(recordTypeEntityArrayList); + caseListAdapter.notifyDataSetChanged(); + }); + } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index 125724cc83..bc34e091e5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -25,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; import java.util.List; @@ -162,6 +163,11 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); if(Boolean.TRUE.equals(success)){ ToastUtils.showShort("Topic设置成功"); + if(recordType.getId() == 0){ + //自定义Topic + BadCaseConfig.customTopicList.addAll(addTopicList); + } + addTopicList.clear(); dismiss(); }else{ ToastUtils.showShort("Topic设置失败"); diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index ef5e535cba..9ae690a283 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -13,6 +13,7 @@ import android.widget.ImageView import android.widget.TextView import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.badcase.RecordCaseEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarStateListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager @@ -137,13 +138,6 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this) // 添加 ADAS车辆状态&定位 监听 CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this) - //开启录包 - CallerAutoPilotManager.recordPackage(BadCaseConfig.type, - Random(SystemClock.elapsedRealtime()).nextInt(), - BadCaseConfig.totalDuration, - BadCaseConfig.previousDuration - ) - viewAudioButton.setOnClickListener { audioStatus = !audioStatus setAudio(audioStatus) @@ -337,7 +331,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList return true } - fun showFloatWindow() { + fun showFloatWindow(recordCaseEntity: RecordCaseEntity) { if (mFloatLayout.parent == null) { val metrics = DisplayMetrics() // 默认固定位置,靠屏幕右边缘的中间 @@ -345,6 +339,9 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList mWindowParams!!.x = metrics.widthPixels mWindowParams!!.y = metrics.heightPixels / 2 - getSysBarHeight(mActivity)-350 mWindowManager!!.addView(mFloatLayout, mWindowParams) + //开启录包 + CallerAutoPilotManager.recordPackage(recordCaseEntity.caseId,Random(SystemClock.elapsedRealtime()).nextInt(), + BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt index 4ecd352587..c0efade685 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt @@ -5,6 +5,7 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.badcase.RecordCaseEntity import com.zhjt.mogo_core_function_devatools.R /** @@ -14,12 +15,17 @@ import com.zhjt.mogo_core_function_devatools.R */ class CaseListAdapter: RecyclerView.Adapter() { - private var data:List? = null + private var data:List? = null + private var caseClickListener: CaseClickListener?=null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: CaseClickListener){ + caseClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CaseListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_case_list, parent, false) @@ -27,10 +33,10 @@ class CaseListAdapter: RecyclerView.Adapter() { } override fun onBindViewHolder(holder: CaseListHolder, position: Int) { - data?.let { - holder.caseName.text = it[position] + data?.let {recordCaseEntity-> + holder.caseName.text = recordCaseEntity[position].caseName holder.caseName.setOnClickListener { - + caseClickListener?.onClick(recordCaseEntity[position]) } } } @@ -40,4 +46,9 @@ class CaseListAdapter: RecyclerView.Adapter() { class CaseListHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ var caseName: TextView = itemView.findViewById(R.id.caseName) } + + interface CaseClickListener{ + fun onClick(recordCaseEntity: RecordCaseEntity) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index 5ea74fecef..44c7041d9a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -27,7 +27,10 @@ object BadCaseConfig { //工控机版本 @JvmField var dockerVersion:String ?= null - + @JvmField var recordKeyList:ArrayList = ArrayList() + //自定义Topic清单列表 + @JvmField + var customTopicList: ArrayList = ArrayList() } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml index 69ce03fc84..38c624c7f5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml @@ -1,7 +1,7 @@ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml index 67a58891b6..4b5c5fb31e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt new file mode 100644 index 0000000000..8f50386f42 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.data.badcase + +data class RecordCaseEntity(var caseId: Int,var caseName: String,var topicList: ArrayList) \ No newline at end of file From 6021a30ba9df697dcf89b5bb0944786dcd541850 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 27 Oct 2022 15:37:05 +0800 Subject: [PATCH 066/137] =?UTF-8?q?[2.12.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E7=BB=93=E6=9D=9F/=E8=B7=91=E5=AE=8C=E8=B7=AF?= =?UTF-8?q?=E7=BA=BF=E5=90=8E=E6=B8=85=E7=A9=BA=E9=B9=B0=E7=9C=BC=E5=B0=8F?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/bus/fragment/BusFragment.java | 4 ++++ ...rsFragment.java => TaxiBeingServerdOrdersFragment.java} | 7 +++---- .../com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) rename OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/{CommonBeingServerdOrdersFragment.java => TaxiBeingServerdOrdersFragment.java} (99%) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index a7341343f2..69132784aa 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -19,6 +19,7 @@ import com.mogo.eagle.core.data.temp.EventLogout; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.map.CallerHDMapManager; +import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.MogoMarkerManager; @@ -421,6 +422,9 @@ public class BusFragment extends BaseBusTabFragment setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() , endStation.getLon(),R.raw.end_marker); } + + //清除鹰眼右下角小地图轨迹 + CallerSmpManager.clearPolyline(); } /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java similarity index 99% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java rename to OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index d114e87532..2434a7fcec 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -18,7 +18,6 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.function.call.map.CallerHDMapManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; @@ -50,7 +49,7 @@ import java.util.List; * @since 2021/1/18 * 正在进行中订单 */ -public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment +public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implements View.OnClickListener, ICommonNaviChangedCallback { public static final String TAG = "OCHTaxiBeingServerd"; @@ -98,12 +97,12 @@ public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment private volatile int saveOrderState = -1; - public static CommonBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { + public static TaxiBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { mActivity = activity; mTaxiFragment = taxiFragment; Bundle args = new Bundle(); - CommonBeingServerdOrdersFragment fragment = new CommonBeingServerdOrdersFragment(); + TaxiBeingServerdOrdersFragment fragment = new TaxiBeingServerdOrdersFragment(); fragment.setArguments(args); return fragment; } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java index ce0f7bb40d..eb8874dc3c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java @@ -51,7 +51,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { private ViewPager mTaxiOrderPager; private String[] mTabTitles = {"进行中","待服务"}; private List fragments = new ArrayList<>(); - private CommonBeingServerdOrdersFragment beingServerdOrdersFragment = null; + private TaxiBeingServerdOrdersFragment beingServerdOrdersFragment = null; private TaxiReserveOrdersFragment reserveOrdersFragment = null; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @@ -82,7 +82,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { if (0 == i){ mTaxiOrderTab.addTab(tab,true); changeTabLayoutTabUI(tab,true); - beingServerdOrdersFragment = CommonBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); + beingServerdOrdersFragment = TaxiBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); fragments.add(beingServerdOrdersFragment); }else if (1 == i){ mTaxiOrderTab.addTab(tab); From 45eddf619ce92d50f425dac86b79c966e99074de Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 16:51:04 +0800 Subject: [PATCH 067/137] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/CaseListDialog.java | 18 ++++++--- .../badcase/biz/CaseTopicListDialog.java | 37 ++++++++++--------- .../src/main/res/layout/item_case_list.xml | 8 ++-- .../main/res/layout/item_record_template.xml | 8 ++-- .../main/res/layout/layout_badcase_config.xml | 15 ++------ 5 files changed, 42 insertions(+), 44 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index 07f6e8b59f..9756927f7f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.eagle.core.data.badcase.RecordCaseEntity; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.zhjt.mogo_core_function_devatools.R; @@ -75,6 +76,8 @@ public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListen public void onAttachedToWindow() { super.onAttachedToWindow(); CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); + //获取数据采集录制模式配置列表 + CallerAutoPilotManager.INSTANCE.getBadCaseConfig(0, 0,new ArrayList<>()); } @Override @@ -94,13 +97,16 @@ public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListen ThreadUtils.runOnUiThread(() -> { if(config.getRecordTypesCount()>0){ for(int index=0;index topicList = new ArrayList<>(); - for(int position=0;position topicList = new ArrayList<>(); +// TODO java.lang.IndexOutOfBoundsException: Index: 38, Size: 38 +// for(int position=0;index0){ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index bc34e091e5..7c54e6011c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -156,26 +156,23 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL topicListAdapter.notifyDataSetChanged(); } }); - tvSave.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if(recordType!=null){ - Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); - if(Boolean.TRUE.equals(success)){ - ToastUtils.showShort("Topic设置成功"); - if(recordType.getId() == 0){ - //自定义Topic - BadCaseConfig.customTopicList.addAll(addTopicList); - } - addTopicList.clear(); - dismiss(); - }else{ - ToastUtils.showShort("Topic设置失败"); + tvSave.setOnClickListener(v -> { + if(recordType!=null){ + Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); + if(Boolean.TRUE.equals(success)){ + ToastUtils.showShort("Topic设置成功"); + if(recordType.getId() == 0){ + //自定义Topic + BadCaseConfig.customTopicList.addAll(addTopicList); } + addTopicList.clear(); + dismiss(); + }else{ + ToastUtils.showShort("Topic设置失败"); } - - } + + }); tvCancel.setOnClickListener(v -> { @@ -189,9 +186,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ThreadUtils.runOnUiThread(() -> { if(config.getAllTopicsCount()>0){ for(int index=0;index diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml index 4b5c5fb31e..0041cf0c4a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml @@ -10,9 +10,9 @@ android:layout_marginTop="20dp" android:clickable="true" android:focusable="true" - android:paddingStart="30dp" - android:paddingEnd="30dp" - android:layout_marginStart="20dp" - android:layout_marginEnd="20dp" + android:paddingStart="10dp" + android:paddingEnd="10dp" + android:layout_marginStart="15dp" + android:layout_marginEnd="15dp" > \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml index 3c9e609e2d..9e085c3874 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml @@ -315,20 +315,11 @@ app:layout_constraintLeft_toLeftOf="@id/tvRecordTemplate" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/tvRecordTemplate" + app:layout_constraintBottom_toBottomOf="parent" android:background="@drawable/template_list_bg" android:layout_marginTop="@dimen/dp_50" - android:paddingBottom="20dp" - /> - - From b31cbc58b11ef1662dbadf11644a961d222dd920 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 17:04:50 +0800 Subject: [PATCH 068/137] =?UTF-8?q?=E8=BF=90=E8=90=A5=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/view_sop_setting.xml | 353 +++++++++--------- 1 file changed, 185 insertions(+), 168 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index d95264b1c7..5644c7fbec 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -1,183 +1,200 @@ - - - + + - - - - - - - - + android:layout_height="match_parent" + tools:ignore="UselessParent"> - + - + + + + + + + + + + - + - + - + - + - + -