diff --git a/.gitignore b/.gitignore index 1c4e79ec1e..3ec053d928 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ /build /captures .externalNativeBuild -.cxx +.cxx \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..c4416b34c7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,27 @@ +stages: + - analyze + +inspect java and kotlin codes: + tags: + - apk + - android + stage: analyze + script: + - echo "$CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA $CI_COMMIT_BRANCH $CI_COMMIT_DESCRIPTION $CI_COMMIT_TIMESTAMP" + - echo "${CI_JOB_STAGE}_reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}" + - ./gradlew runCodeInspect + before_script: + - source change_java_version + artifacts: + name: "${CI_JOB_STAGE}_reports_${CI_PROJECT_NAME}_$CI_COMMIT_REF_SLUG" + when: always + expire_in: 1 days + paths: + - "build/reports/*" + only: + - $CI_COMMIT_BRANCH + - pushes + - schedules + except: + - master + allow_failure: true diff --git a/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java b/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java index 4e98870e57..0c12f4cad9 100644 --- a/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java @@ -379,6 +379,11 @@ public class OrderModel { }; private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { + @Override + public void brakeStatusChanged(boolean isBrakeAvailable) { + + } + @Override public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { BusAnalyticsManager.INSTANCE.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java index 3aa7c64360..38a3fbd0b2 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/BusProvider.java @@ -10,7 +10,6 @@ import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.och.bus.constant.BusConst; diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 665402c4df..43eebbf35c 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -3,6 +3,7 @@ package com.mogo.och.bus.fragment; import static com.mogo.och.bus.constant.BusConst.TIMER_START_AUTOPILOT_INTERVAL; import android.animation.ObjectAnimator; +import android.annotation.SuppressLint; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -27,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView; @@ -49,8 +49,6 @@ import com.mogo.och.common.module.utils.SoundPoolHelper; import org.greenrobot.eventbus.EventBus; -import java.util.Objects; - import bag_manager.BagManagerOuterClass; import mogo.telematics.pad.MessagePad; import record_cache.RecordPanelOuterClass; @@ -137,21 +135,22 @@ public abstract class BaseBusTabFragment mSwitchMapModeLayout.setOnClickListener(new OnPreventFastClickListener() { @Override public void onClickImpl(View v) { - - IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController(); - if (controller != null) { - //切换地图的远近视图 - if (controller.getCurrentMapVisualAngle().isLongSight()) { - //Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true); - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); - } else if (controller.getCurrentMapVisualAngle().isMediumSight()) { - //Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false); - controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); - } else { - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + if(mapBizView != null){ + IMogoMapUIController uiController = mapBizView.getUI(); + if(uiController != null){ + //切换地图的远近视图 + if (uiController.getCurrentMapVisualAngle().isLongSight()) { + uiController.setLockMode(true); + uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } else if (uiController.getCurrentMapVisualAngle().isMediumSight()) { + uiController.setLockMode(false); + uiController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); + } else { + uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } } } } @@ -199,7 +198,6 @@ public abstract class BaseBusTabFragment mSettingBtn = findViewById(R.id.module_mogo_och_setting_layout); mSettingBtn.setOnClickListener(v -> { - // TODO: 2021/12/9 CallerHmiManager.INSTANCE.showToolsView(); }); @@ -256,14 +254,16 @@ public abstract class BaseBusTabFragment protected abstract void onArriveStation(); private void updateSwitchMapIcon() { - IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController(); - if (controller != null) { - if (controller.getCurrentMapVisualAngle().isLongSight()) { - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); - } else if (controller.getCurrentMapVisualAngle().isMediumSight()) { - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); - } else { - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + if(mapBizView != null){ + IMogoMapUIController uiController = mapBizView.getUI(); + if(uiController != null){ + if (uiController.getCurrentMapVisualAngle().isLongSight()) { + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); + } else if (uiController.getCurrentMapVisualAngle().isMediumSight()) { + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } else { + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } } } } @@ -330,7 +330,7 @@ public abstract class BaseBusTabFragment slidePanelView.setText(text); slidePanelView.setVisibility(View.VISIBLE); }); - setArrivedClikable(false); + setArrivedClickable(false); } /** @@ -338,7 +338,7 @@ public abstract class BaseBusTabFragment * * @param isClickable */ - public void setArrivedClikable(boolean isClickable) { + public void setArrivedClickable(boolean isClickable) { getActivity().runOnUiThread(() -> { tvArrived.setEnabled(isClickable); if (isClickable) { @@ -397,7 +397,7 @@ public abstract class BaseBusTabFragment ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.bus_autopilot_2_status_bg)); // ctvAutopilotStatus.setSelected(true); } else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING - == autopilotStatus){ + == autopilotStatus) { ctvAutopilotStatusTv.setText(R.string.bus_pingxing_driver); ctvAutopilotStatus.setClickable(false); ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.pingxingjiashi)); @@ -421,12 +421,7 @@ public abstract class BaseBusTabFragment ctvAutopilotStatus.setClickable(false); // ctvAutopilotStatus.setSelected(false); } - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - setAutopilotBtnStatus(autopilotStatus); - } - }, 1000); + UiThreadHandler.postDelayed(() -> setAutopilotBtnStatus(autopilotStatus), 1000); } private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning) { @@ -514,13 +509,10 @@ public abstract class BaseBusTabFragment private void startingAutoApilotCountDown() { //10s 若自动驾驶没有开启,则结束动画 - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { //未启动成功做处理 - if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态 - stopAutopilotAnimation(); - updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); - } + UiThreadHandler.postDelayed(() -> { //未启动成功做处理 + if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态 + stopAutopilotAnimation(); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); } }, TIMER_START_AUTOPILOT_INTERVAL); @@ -540,8 +532,6 @@ public abstract class BaseBusTabFragment /** * 迈速表实时更新 - * - * @param newSpeed */ public void updateSpeedView(float newSpeed) { int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值 @@ -553,7 +543,9 @@ public abstract class BaseBusTabFragment @Override public void onDestroy() { super.onDestroy(); - smallMapView.onDestroy(); + if(smallMapView != null){ + smallMapView.onDestroy(); + } MogoMapListenerHandler.Companion.getMogoMapListenerHandler().unregisterHostMapListener(TAG); } @@ -592,6 +584,7 @@ public abstract class BaseBusTabFragment private TextView trajMd5DPQPTV; private TextView stopMd5DPQPTV; + @SuppressLint("SetTextI18n") public void showHideTestBar() { if (busTestBar == null) { busTestBar = findViewById(R.id.module_mogo_och_bus_test_bar); @@ -617,6 +610,7 @@ public abstract class BaseBusTabFragment } } + @SuppressLint("SetTextI18n") public void updateBusTestBarInfo() { if (busTestBar != null && busTestBar.getVisibility() == View.VISIBLE) { BusRoutesResult routesResult = OrderModel.getInstance().getBusRoutesResult(); @@ -628,7 +622,5 @@ public abstract class BaseBusTabFragment stopMd5DPQPTV.setText("SMd5DPQP:" + (routesResult == null ? "" : routesResult.txtFileMd5DPQP)); } } - /** - * END - */ + } diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index 48ba4e86b4..4681a95981 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -1,20 +1,23 @@ package com.mogo.och.bus.fragment; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; +import static com.mogo.map.MogoMap.DEFAULT; + import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.widget.TextView; + import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.Group; -import androidx.annotation.Nullable; + import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.eagle.core.data.config.FunctionBuildConfig; -import com.mogo.eagle.core.data.map.CenterLine; 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; @@ -25,7 +28,6 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.overlay.IMoGoOverlayManager; import com.mogo.map.overlay.core.Level; import com.mogo.map.overlay.point.Point; -import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.och.bus.R; import com.mogo.och.bus.bean.BusStationBean; import com.mogo.och.bus.constant.BusConst; @@ -42,8 +44,10 @@ import com.mogo.och.common.module.utils.QRUtilsKt; import com.mogo.och.common.module.wigets.BindQRCodeDialog; import com.mogo.och.common.module.wigets.MarqueeTextView; import com.mogo.och.common.module.wigets.OCHCommitDialog; + import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; + import java.util.List; import me.jessyan.autosize.utils.AutoSizeUtils; @@ -81,10 +85,11 @@ public class BusFragment extends BaseBusTabFragment public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); - if(loginService!=null){ - loginService.registerFragment(this, getPresenter(),new LoginBusImpl()); + if (loginService != null) { + loginService.registerFragment(this, getPresenter(), new LoginBusImpl()); } } + @Override public void onDestroyView() { super.onDestroyView(); @@ -113,12 +118,9 @@ public class BusFragment extends BaseBusTabFragment mSwitchLine.setOnClickListener(this); - mLineName.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - showHideTestBar(); - return false; - } + mLineName.setOnLongClickListener(v -> { + showHideTestBar(); + return false; }); } @@ -178,7 +180,7 @@ public class BusFragment extends BaseBusTabFragment } public void updateLineEmptyUI(){ - setArrivedClikable(false); + setArrivedClickable(false); showOrHideSwitchLineBtn(true); hideStationsPanel(); hideSlidePanel(); @@ -486,30 +488,19 @@ public class BusFragment extends BaseBusTabFragment .anchor(0.5f, 0.5f) .set3DMode(true) .isUseGps(true) - .controlAngle(true) + .controlAngle(false) .icon3DRes(resourceId) .latitude(lat) .longitude(longi); - IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController(); - if (mapUIController != null) { - CenterLine centerLine = mapUIController.getCenterLineInfo( - longi,lat,-1); - if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 - Double angle = centerLine.getAngle(); - if (angle != null) { - builder.rotate(angle.floatValue()); - } - } - } IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); if (overlayManager != null) { - overlayManager.showOrUpdatePoint(builder.build()); + overlayManager.showOrUpdatePoint(builder.build(), DEFAULT); } }; OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable); - }else { + } else { Runnable removeMapMarkerRunnable = () -> { CallerLogger.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(), uuid+"=latitude="+lat+",longitude="+longi); diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 912d062d9d..657e6857d1 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -144,7 +144,7 @@ public class BusPresenter extends Presenter public void hideSlidePanel() { if (mView != null) { mView.hideSlidePanel(); - mView.setArrivedClikable(true); + mView.setArrivedClickable(true); } } diff --git a/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml b/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml index 38c6964ead..5436ac42db 100644 --- a/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml @@ -8,6 +8,8 @@ diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt index 52325b172e..f3a411dbe5 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt @@ -4,9 +4,9 @@ import android.annotation.SuppressLint import android.content.Context import android.net.ConnectivityManager import android.os.Handler +import android.os.Looper import com.amap.api.maps.model.LatLng import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager -import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager import com.mogo.commons.module.status.IMogoStatusChangedListener @@ -31,7 +31,6 @@ import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e -import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.GsonUtils @@ -42,11 +41,7 @@ import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResult import com.mogo.och.bus.passenger.bean.BusPassengerStation -import com.mogo.och.bus.passenger.callback.IBusPassegerDriverStatusCallback -import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback -import com.mogo.och.bus.passenger.callback.IBusPassengerAutopilotPlanningCallback -import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback +import com.mogo.och.bus.passenger.callback.* import com.mogo.och.bus.passenger.constant.BusPassengerConst import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager import com.mogo.och.bus.passenger.network.BusPassengerServiceManager @@ -82,7 +77,7 @@ import java.util.concurrent.ConcurrentHashMap * Created on 2022/3/31 */ @SuppressLint("StaticFieldLeak") -object BusPassengerModel{ +object BusPassengerModel { private val TAG = BusPassengerModel::class.java.simpleName private const val MSG_QUERY_BUS_P_STATION = 1001 @@ -105,7 +100,7 @@ object BusPassengerModel{ var mStations: MutableList = ArrayList() private var mNextStationIndex = 0 // 要到达站的index private val mTwoStationsRouts: MutableList = ArrayList() - private val handler = Handler(Handler.Callback { msg -> + private val handler = Handler(Looper.getMainLooper(), Handler.Callback { msg -> if (msg.what == MSG_QUERY_BUS_P_STATION) { queryDriverOperationStatus() return@Callback true @@ -113,10 +108,12 @@ object BusPassengerModel{ false }) + @Volatile + private var isGoingToNextStation = false + fun init(context: Context) { mContext = context.applicationContext initListeners() - // TODO: 2022/3/31 queryDriverOperationStatus() startOrStopOrderLoop(true) } @@ -147,8 +144,8 @@ object BusPassengerModel{ "queryDriverOperationStatus = %s", data.data.plateNumber ) - mDriverStatusCallback!!.changeOperationStatus(data.data.driverStatus == 1) - mDriverStatusCallback!!.updatePlateNumber(data.data.plateNumber) + mDriverStatusCallback?.changeOperationStatus(data.data.driverStatus == 1) + mDriverStatusCallback?.updatePlateNumber(data.data.plateNumber) } } @@ -179,9 +176,7 @@ object BusPassengerModel{ mNextStationIndex = 0 } cleanStation("queryDriverSiteByCoordinate") - if (mRouteLineInfoCallback != null) { - mRouteLineInfoCallback!!.showNoTaskView() - } + mRouteLineInfoCallback?.showNoTaskView() mRoutePoints.clear() return } @@ -216,9 +211,12 @@ object BusPassengerModel{ private fun updatePassengerRouteInfo(result: BusPassengerRoutesResult) { if (mRouteLineInfoCallback != null) { - Logger.d(M_BUS_P + TAG, "order = BusPassengerRoutesResult= " +GsonUtil.jsonFromObject(result)) - mRouteLineInfoCallback!!.updateLineInfo(result.name, result.runningDur) - mRouteLineInfoCallback!!.hideNoTaskView() + d( + M_BUS_P + TAG, + "order = BusPassengerRoutesResult= " + GsonUtil.jsonFromObject(result) + ) + mRouteLineInfoCallback?.updateLineInfo(result.name, result.runningDur) + mRouteLineInfoCallback?.hideNoTaskView() if (result.sites != null) { val stations = result.sites mStations.clear() @@ -226,8 +224,9 @@ object BusPassengerModel{ for (i in stations.indices) { val station = stations[i] if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && station.isLeaving && i + 1 < stations.size) { //离站 - Logger.d(M_BUS_P + TAG, "order = station= leave") - mRouteLineInfoCallback!!.updateStationsInfo(stations, i + 1, false) + d(M_BUS_P + TAG, "order = station= leave") + isGoingToNextStation = true + mRouteLineInfoCallback?.updateStationsInfo(stations, i + 1, false) if (mNextStationIndex != i + 1) { mTwoStationsRouts.clear() } @@ -241,11 +240,14 @@ object BusPassengerModel{ if (i == stations.size - 1) { cleanStation("updatePassengerRouteInfo最后一个站点") } + + isGoingToNextStation = false + suspendCalculate() - Logger.d(M_BUS_P + TAG, "order = station= arrive") + d(M_BUS_P + TAG, "order = station= arrive") - mRouteLineInfoCallback!!.updateStationsInfo(stations, i, true) + mRouteLineInfoCallback?.updateStationsInfo(stations, i, true) clearAutopilotControlParameters() return } @@ -379,17 +381,17 @@ object BusPassengerModel{ override fun distanceCallback(distance: Float) { val lastTime: Double = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 d(M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") - for (site in routesResult!!.sites) { - if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { - return + routesResult?.let { + for (site in it.sites) { + if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { + return + } } } - if (mAutopilotPlanningCallback != null) { - mAutopilotPlanningCallback!!.routePlanningToNextStationChanged( - distance.toLong(), - lastTime.toLong() - ) - } + mAutopilotPlanningCallback?.routePlanningToNextStationChanged( + distance.toLong(), + lastTime.toLong() + ) } } private val trajectoryListener: ITrajectoryListener = @@ -400,19 +402,19 @@ object BusPassengerModel{ location: MogoLocation ) { if (mAutopilotPlanningCallback != null) { - val routeArriviedTemp: MutableList = ArrayList() + val routeArrivedTemp: MutableList = ArrayList() val routeArrivingTemp: MutableList = ArrayList() var temp: LatLng for (mogoLocation in routeArrivied) { temp = LatLng(mogoLocation.latitude, mogoLocation.longitude) - routeArriviedTemp.add(temp) + routeArrivedTemp.add(temp) } for (mogoLocation in routeArriving) { temp = LatLng(mogoLocation.latitude, mogoLocation.longitude) routeArrivingTemp.add(temp) } - mAutopilotPlanningCallback!!.routeResult( - routeArriviedTemp, + mAutopilotPlanningCallback?.routeResult( + routeArrivedTemp, routeArrivingTemp, location ) @@ -421,16 +423,14 @@ object BusPassengerModel{ } private val mReceivedMsgListener: IReceivedMsgListener = object : IReceivedMsgListener { override fun onReceivedServerSn(sn: String?) { - Logger.d(M_BUS_P + TAG, "onReceivedServerSn = $sn") - if (mDriverStatusCallback != null) { - mDriverStatusCallback!!.updateDriverSn(sn) - } + d(M_BUS_P + TAG, "onReceivedServerSn = $sn") + mDriverStatusCallback?.updateDriverSn(sn) } override fun onReceivedMsg(type: Int, byteArray: ByteArray) { if (OchCommonConst.BUSINESS_STRING == type) { val baseMsg = GsonUtils.fromJson(String(byteArray), BaseDPMsg::class.java) - Logger.d( + d( M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(baseMsg) ) @@ -486,18 +486,29 @@ object BusPassengerModel{ private var arriveAtEnd = false //乘客app专用字段 override fun onAutopilotStatusResponse(state: Int) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - mTwoStationsRouts.clear() - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotEnable() - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - mTwoStationsRouts.clear() - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotDisable() - } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { - mTwoStationsRouts.clear() - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() + mADASStatusCallback?.onAutopilotRunning() + } else { + if (FunctionBuildConfig.isDemoMode && + mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 + && isGoingToNextStation + ) { + d(M_BUS_P + TAG, "FunctionBuildConfig.isDemoMode is true") + return + } + + if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { + mTwoStationsRouts.clear() + mADASStatusCallback?.onAutopilotEnable() + } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { + mTwoStationsRouts.clear() + mADASStatusCallback?.onAutopilotDisable() + } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { + mTwoStationsRouts.clear() + mADASStatusCallback?.onAutopilotRunning() + } } } + override fun onAutopilotArriveAtStation(arrivalNotification: ArrivalNotification?) { if (FunctionBuildConfig.isDemoMode && isPassenger(FunctionBuildConfig.appIdentityMode) @@ -505,13 +516,10 @@ object BusPassengerModel{ arriveAtEnd = true } - // TODO: 2022/3/31 - if (DebugConfig.isDebug()) { - // ToastUtils.showShort("到达目的地"); - } - if (mADASStatusCallback != null) { - mADASStatusCallback!!.onAutopilotArriveEnd() - } +// if (DebugConfig.isDebug()) { + // ToastUtils.showShort("到达目的地"); +// } + mADASStatusCallback?.onAutopilotArriveEnd() } override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} @@ -532,7 +540,8 @@ object BusPassengerModel{ fun updateRoutePoints(routePoints: List) { mRoutePoints.clear() - val latLngModels: List = coordinateConverterWgsToGcjLocations(mContext, routePoints) + val latLngModels: List = + coordinateConverterWgsToGcjLocations(mContext, routePoints) mRoutePoints.addAll(latLngModels) calculateTwoStationsRoute() } @@ -573,9 +582,7 @@ object BusPassengerModel{ val sumLength = calculateRouteSumLength(mTwoStationsRouts) SharedPrefsMgr.getInstance(mContext!!) .putInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS, sumLength.toInt()) - if (mAutopilotPlanningCallback != null) { - mAutopilotPlanningCallback!!.updateTotalDistance() - } + mAutopilotPlanningCallback?.updateTotalDistance() } } } @@ -603,7 +610,7 @@ object BusPassengerModel{ setStationPoint(startStation, endStation, lineId.toLong()) } - fun cleanStation(type:String) { + fun cleanStation(type: String) { d(M_BUS_P + TAG, "清理站点 $type") setStationPoint(null, null, -1L) } diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java index 491c55a46f..f16f4c521d 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java @@ -152,8 +152,8 @@ public class BaseBusPassengerPresenter extends Presenter routeArrivied,List routeArriving,MogoLocation location) { - runOnUIThread(() ->mView.routeResult(routeArrivied,routeArriving,location)); + public void routeResult(List routeArrived,List routeArriving,MogoLocation location) { + runOnUIThread(() ->mView.routeResult(routeArrived,routeArriving,location)); } @Override diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt index 2254892bfd..ac8504e5dd 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt @@ -12,7 +12,6 @@ import kotlinx.android.synthetic.jinlvvan.p_bus_view_blue_tooth.view.* /** * 魔戒蓝牙控件 * 放置于StatusBar右侧位置 - * todo arrow */ class BusPBlueToothView @JvmOverloads constructor( context: Context, diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt index df13122d1e..9cf1ac7f31 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.kt @@ -4,7 +4,6 @@ import android.content.Context import android.os.Bundle import android.util.AttributeSet import android.view.LayoutInflater -import android.view.MotionEvent import android.view.View import android.widget.RelativeLayout import com.amap.api.maps.AMap @@ -56,7 +55,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( private var mArrivedRes: BitmapDescriptor? = null private var mUnArrivedRes: BitmapDescriptor? = null - private val routeArrivied: MutableList = ArrayList() + private val routeArrived: MutableList = ArrayList() private val routeArriving: MutableList = ArrayList() private var location: MogoLocation? = null @@ -165,7 +164,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( try { //圈定地图显示范围 val boundsBuilder = LatLngBounds.Builder() - routeArrivied.forEach { + routeArrived.forEach { boundsBuilder.include(it) } routeArriving.forEach { @@ -190,26 +189,28 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( } override fun drawablePolyline() { - if (routeArrivied.isEmpty() && routeArriving.isEmpty()) { + if (routeArrived.isEmpty() && routeArriving.isEmpty()) { d(SceneConstant.M_TAXI + TAG, "没有点") return } texIndexList.clear() - val allPoints = ArrayList(routeArrivied) - for (i in routeArrivied.indices) { - if (routeArrivied.size > 1 && i < routeArrivied.size - 1) { + val allPoints = ArrayList(routeArrived) + for (i in routeArrived.indices) { + if (routeArrived.size > 1 && i < routeArrived.size - 1) { texIndexList.add(0) } } texIndexList.add(0) - allPoints.add(LatLng(location!!.latitude, location!!.longitude)) + location?.let { + allPoints.add(LatLng(it.latitude, it.longitude)) + } allPoints.addAll(routeArriving) - for (ignored in routeArrivied) { + for (ignored in routeArrived) { texIndexList.add(1) } - if (mPolyline != null) { - mPolyline!!.points = allPoints - mPolyline!!.options.customTextureIndex = texIndexList + mPolyline?.let { + it.points = allPoints + it.options.customTextureIndex = texIndexList return } if(textureList.isEmpty()) { @@ -231,10 +232,8 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( } override fun clearPolyline() { - if (mPolyline != null) { - mPolyline!!.remove() - mPolyline = null - } + mPolyline?.remove() + mPolyline = null } override fun setLineMarker() {} @@ -242,7 +241,7 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( fun clearCoordinatesLatLng() { textureList.clear() texIndexList.clear() - routeArrivied.clear() + routeArrived.clear() routeArriving.clear() mLineStationLatLng.clear() d(M_BUS_P + TAG, " mCoordinatesLatLng.clear ") @@ -265,14 +264,14 @@ class BusPassengerMapDirectionView @JvmOverloads constructor( } fun setCoordinatesLatLng( - routeArrivied: List?, - routeArriving: List?, + routeArrived: List, + routeArriving: List, location: MogoLocation? ) { - this.routeArrivied.clear() - this.routeArrivied.addAll(routeArrivied!!) + this.routeArrived.clear() + this.routeArrived.addAll(routeArrived) this.routeArriving.clear() - this.routeArriving.addAll(routeArriving!!) + this.routeArriving.addAll(routeArriving) this.location = location } diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 33d497dbf3..b1a51e6a45 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -240,9 +240,9 @@ public class BusPassengerRouteFragment extends } } - public void routeResult(List routeArrivied,List routeArriving,MogoLocation location) { - if (routeArrivied.size() > 0||routeArriving.size()>0) { - drawablePolyline(routeArrivied,routeArriving,location); + public void routeResult(List routeArrived,List routeArriving,MogoLocation location) { + if (routeArrived.size() > 0||routeArriving.size()>0) { + drawablePolyline(routeArrived,routeArriving,location); } else { clearMapView(); } @@ -250,12 +250,10 @@ public class BusPassengerRouteFragment extends /** * 绘制 - * - * @param coordinates */ - private void drawablePolyline(List routeArrivied,List routeArriving,MogoLocation location) { + private void drawablePolyline(List routeArrived,List routeArriving,MogoLocation location) { if (mMapDirectionView != null) { - mMapDirectionView.setCoordinatesLatLng(routeArrivied,routeArriving,location); + mMapDirectionView.setCoordinatesLatLng(routeArrived,routeArriving,location); UiThreadHandler.post(() -> mMapDirectionView.drawablePolyline()); } } @@ -453,8 +451,6 @@ public class BusPassengerRouteFragment extends public void AutopilotStatusChanged(int status) { if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { mAutopilotIv.setImageResource(R.drawable.auto_open); - } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){ - mAutopilotIv.setImageResource(R.drawable.auto_close); } else { mAutopilotIv.setImageResource(R.drawable.auto_close); } diff --git a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt index eadb80b11c..4dc64518f8 100644 --- a/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt +++ b/OCH/bus/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt @@ -1,19 +1,13 @@ package com.mogo.och.bus.passenger.ui -import android.app.Activity import android.content.Context import android.util.AttributeSet import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout import android.widget.RelativeLayout import androidx.viewpager.widget.PagerAdapter import androidx.viewpager.widget.ViewPager -import com.mogo.eagle.core.utilcode.mogo.logger.Logger -import com.mogo.och.bus.passenger.R +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.bus.passenger.ui.MapAndLiveVideoView.Companion.TAG -import java.lang.Exception /** * @author: wangmingjun @@ -33,7 +27,7 @@ class MapAndLiveVideoView @JvmOverloads constructor( } init { - initView() + initView() } private fun initView() { @@ -46,53 +40,54 @@ class MapAndLiveVideoView @JvmOverloads constructor( viewPager?.addOnPageChangeListener(this) } - fun setData(list: MutableList){ + fun setData(list: MutableList) { pagerAdapter?.setData(list) pagerAdapter?.notifyDataSetChanged() } - fun setItemChangeListener(listener : ChangeItemListener?){ + fun setItemChangeListener(listener: ChangeItemListener?) { changeItemListener = listener } - fun changeToSecondView(){ - if (viewPager?.currentItem == 0){ + fun changeToSecondView() { + if (viewPager?.currentItem == 0) { startPosition = 0 } viewPager?.currentItem = 1 } override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { - Logger.d(TAG, "onPageScrolled--position = $position") + CallerLogger.d(TAG, "onPageScrolled--position = $position") } override fun onPageSelected(position: Int) { - Logger.d(TAG, "onPageSelected--position = $position") + CallerLogger.d(TAG, "onPageSelected--position = $position") } + var startPosition = 1 override fun onPageScrollStateChanged(state: Int) { - Logger.d(TAG, "onPageScrollStateChanged--state = $state") + CallerLogger.d(TAG, "onPageScrollStateChanged--state = $state") viewPager?.let { val position = it.currentItem if (state == 0) { //静止 - if (startPosition == position){ - if (position==0){ + if (startPosition == position) { + if (position == 0) { it.currentItem = 1 - }else{ + } else { it.currentItem = 0 } - }else{ + } else { changeItemListener?.changeToItem(it.currentItem) } - }else if (state == 1){ // 开始滑动 + } else if (state == 1) { // 开始滑动 startPosition = it.currentItem - }else{ + } else { } } } - interface ChangeItemListener{ + interface ChangeItemListener { fun changeToItem(position: Int) } } @@ -101,25 +96,25 @@ class AdvancePagerAdapter : PagerAdapter(), ViewPager.OnPageChangeListener { private var views: List? = null - fun setData(views: List?){ + fun setData(views: List?) { this.views = views } override fun instantiateItem(container: View, position: Int): Any { - Logger.d(TAG, "instantiateItem--position = $position") + CallerLogger.d(TAG, "instantiateItem--position = $position") return try { val currentItem = position % views!!.size (container as ViewPager).addView(views!![currentItem]) views!![currentItem] - }catch (e: Exception){ + } catch (e: Exception) { container } } override fun getCount(): Int { - return if (views == null){ + return if (views == null) { 0 - }else{ + } else { views!!.size } } @@ -129,14 +124,14 @@ class AdvancePagerAdapter : PagerAdapter(), } override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { -// Logger.d(TAG, "onPageScrolled--position = $position") +// CallerLogger.d(TAG, "onPageScrolled--position = $position") } override fun onPageSelected(position: Int) { -// Logger.d(TAG, "onPageSelected--position = $position") +// CallerLogger.d(TAG, "onPageSelected--position = $position") } override fun onPageScrollStateChanged(state: Int) { -// Logger.d(TAG, "onPageScrollStateChanged--state = $state") +// CallerLogger.d(TAG, "onPageScrollStateChanged--state = $state") } } \ No newline at end of file diff --git a/OCH/bus/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml b/OCH/bus/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml index 3196c03903..82ea072da1 100644 --- a/OCH/bus/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml +++ b/OCH/bus/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml @@ -8,6 +8,9 @@ android:id="@+id/mapBizView" android:layout_width="1810dp" android:layout_height="match_parent" + app:styleMode="MAP_STYLE_DAY_VR" + app:isWeatherEnable="false" + app:locationIcon3DRes="@raw/xiaoba" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt index 0d13cced28..125fa0cf16 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt @@ -87,7 +87,17 @@ object CharterTrajectoryManager { // 5. 轨迹管理_轨迹下载超时 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时") // ToastUtils.showShort("轨迹下载超时"); - } else if ("ISSM_FUNC_AUTO_PILOT_READY" == guardianInfo.getCode()) { + } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OPERATION, + OperationMsg( + System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1 + ) + ) + ) + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot) + } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { // 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载") syncTrajectoryInfo(get().getBusOrderResult()?.lineId!!, diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index b3c2d0d73a..1d801a261c 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -333,6 +333,9 @@ class DriverM1Model { mControllerStatusCallback?.onStartAdasFailure() } } + + override fun brakeStatusChanged(isBrakeAvailable: Boolean) { + } } //监听网络变化,避免启动机器时无网导致无法更新订单信息 diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt index 67a69707df..2953cd6fe3 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt @@ -22,7 +22,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initAiCollect import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initBadCase import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showToolsView -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView.ClickListener @@ -40,7 +39,7 @@ import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.och.common.module.utils.SoundPoolHelper import kotlinx.android.synthetic.main.charter_base_fragment.* import org.greenrobot.eventbus.EventBus -import java.util.* +import kotlin.math.abs /** * @author: wangmingjun @@ -104,23 +103,20 @@ abstract class CharterBaseFragment?>() : updateSwitchMapIcon() mSwitchMapModeLayout!!.setOnClickListener(object : OnPreventFastClickListener() { override fun onClickImpl(v: View) { - - val controller = getMapUIController() - if (controller != null) { - //切换地图的远近视图 - if (controller.currentMapVisualAngle.isLongSight) { - //Objects.requireNonNull(getMapUIController()) - // ?.setLockMode(true) - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) - mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) - } else if (controller.currentMapVisualAngle.isMediumSight) { - //Objects.requireNonNull(getMapUIController()) - // ?.setLockMode(false) - controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null) - mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long) - } else { - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) - mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) + mapBizView?.let { + it.getUI()?.let { ui -> + if (ui.currentMapVisualAngle.isLongSight) { + ui.setLockMode(true) + ui.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) + mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) + } else if (ui.currentMapVisualAngle.isMediumSight) { + ui.setLockMode(false) + ui.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null) + mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long) + } else { + ui.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) + mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) + } } } } @@ -166,7 +162,6 @@ abstract class CharterBaseFragment?>() : mSettingBtn = findViewById(R.id.module_mogo_och_setting_layout) mSettingBtn!!.setOnClickListener { v: View? -> - // TODO: 2021/12/9 showToolsView() } @@ -268,14 +263,15 @@ abstract class CharterBaseFragment?>() : } private fun updateSwitchMapIcon() { - val controller = getMapUIController() - if (controller != null) { - if (controller.currentMapVisualAngle.isLongSight) { - mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long) - } else if (controller.currentMapVisualAngle.isMediumSight) { - mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) - } else { - mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) + mapBizView?.let { + it.getUI()?.let { ui -> + if (ui.currentMapVisualAngle.isLongSight) { + mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_long) + } else if (ui.currentMapVisualAngle.isMediumSight) { + mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) + } else { + mSwitchMapModeImage!!.setImageResource(R.drawable.bus_switch_map_medium) + } } } } @@ -476,7 +472,7 @@ abstract class CharterBaseFragment?>() : * @param newSpeed */ open fun updateSpeedView(newSpeed: Float) { - val speed = (Math.abs(newSpeed) * 3.6f).toInt() // 倒车时工控机反馈定位信息中speed为负值 + val speed = (abs(newSpeed) * 3.6f).toInt() // 倒车时工控机反馈定位信息中speed为负值 if (mTrafficDataView != null) { mTrafficDataView!!.updateSpeedWithValue(speed) } @@ -484,7 +480,7 @@ abstract class CharterBaseFragment?>() : override fun onDestroy() { super.onDestroy() - smallMapView!!.onDestroy() + smallMapView?.onDestroy() mogoMapListenerHandler.unregisterHostMapListener(TAG) } diff --git a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml index 6a13691666..23fc6acba7 100644 --- a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml +++ b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml @@ -8,6 +8,8 @@ diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/MogoOCHBusPassenger.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/MogoOCHBusPassenger.kt index c42743199f..13be59b9b7 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/MogoOCHBusPassenger.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/MogoOCHBusPassenger.kt @@ -6,8 +6,6 @@ import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentManager import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController -import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager.stepInDayMode import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.charter.passenger.constant.CharterPassengerConst diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/bean/response/OrderInfoResponse.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/bean/response/OrderInfoResponse.kt index 6e88928e9b..4d93bebfb5 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/bean/response/OrderInfoResponse.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/bean/response/OrderInfoResponse.kt @@ -3,6 +3,7 @@ package com.mogo.och.charter.passenger.bean.response import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.data.BaseData import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.utils.DateTimeUtil /** * @@ -65,6 +66,20 @@ data class OrderInfoResponse(val data: OrderInfo?) : BaseData() { return null } } + + override fun toString(): String { + return "OrderInfo(orderNo=$orderNo, sn=$sn, productType=${getProductTypeName()}, lineId=$lineId, lineName=$lineName, startSiteId=$startSiteId, startSiteName=$startSiteName, startSiteNameKr=$startSiteNameKr, siteId=$siteId, siteName=$siteName, siteNameKr=$siteNameKr, wgs84Lat=$wgs84Lat, wgs84Lon=$wgs84Lon, startTime=${DateTimeUtil.formatLongToString(startTime?:System.currentTimeMillis(), DateTimeUtil.MM_dd_HH_mm)}, endTime=${DateTimeUtil.formatLongToString(endTime?:System.currentTimeMillis(), DateTimeUtil.MM_dd_HH_mm)}, passengerPhone=$passengerPhone, arriveStatus=$arriveStatus)" + } + + fun getProductTypeName(): String { + return when (productType) { + M1_LOVE -> "爱情号" + M1_FAMILY -> "家庭号" + M1_FRIENDLY -> "朋友号" + else -> "未知" + } + } + } companion object{ val ARRIVING = 1 diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt index 692b642f2b..4af2a9cfb8 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt @@ -42,6 +42,7 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.CharterSendTripInfoManager import com.mogo.och.common.module.manager.CharterSendTripInfoManager.LEAVE_STATION import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.PinYinUtil @@ -52,6 +53,7 @@ import io.reactivex.Observable import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import mogo.telematics.pad.MessagePad +import mogo_msg.MogoReportMsg import java.util.* import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.TimeUnit @@ -196,6 +198,14 @@ object CharterPassengerModel { d(M_BUS_P + TAG, "底盘给到站信息") arriveDest() } + override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { + super.onAutopilotGuardian(guardianInfo) + guardianInfo?.let { + if (it.code=="IMAP_TRA_LOADED") { + ToastCharterUtils.showToastShort("请等待车辆完成掉头后再出发吧~") + } + } + } } /** @@ -393,6 +403,7 @@ object CharterPassengerModel { this.orderInfo = orderData setOrderStatus(OrderStatusEnum.OrdersWithLine) updateAutopilotControlParameters() + OchChainLogManager.writeChainLog(this.orderInfo.toString(),"更改线路成功:${orderData.siteName}") } else { this.orderInfo = orderData } @@ -727,6 +738,7 @@ object CharterPassengerModel { private fun setOrderStatus(orderStatus: OrderStatusEnum) { if (this.orderStatus != orderStatus) { d(M_BUS_P + TAG, "${this.orderInfo?.orderNo}新的状态:$orderStatus") + OchChainLogManager.writeChainLog(this.orderInfo.toString(),"新的状态:$orderStatus") this.orderStatus = orderStatus for (callback in orderStatusChangeListeners.values) { callback.onStatusChange(this.orderStatus) @@ -737,6 +749,7 @@ object CharterPassengerModel { fun setEndOrderStatus() { UiThreadHandler.postDelayed({ setOrderStatus(OrderStatusEnum.NoOrderUse) + OchChainLogManager.writeChainLog(this.orderInfo.toString(),"手动结束订单:$orderStatus") }, 1000) } @@ -933,6 +946,7 @@ object CharterPassengerModel { } if (order != null && lineId != null && siteId != null) { + OchChainLogManager.writeChainLog(this.orderInfo.toString(),"到站成功:${order.siteName}") VoiceManager.arrivedStation( order.siteName!!, order.siteNameKr ?: "", diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt index 50f6138ea2..cfc736dd9e 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt @@ -34,7 +34,7 @@ import com.mogo.och.charter.passenger.ui.overmapview.MakerWithSiteNamewithCheck import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.manager.StopSideStatusManager -import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback +import com.mogo.och.common.module.manager.devicemanage.callback.LightAirconditionDoorCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.wigets.toast.ToastCharterUtils @@ -79,19 +79,19 @@ class BusPassengerPresenter(view: MainFragment?) : override fun setCarChangeListener(productType: Int?) { when (productType) { OrderInfoResponse.M1_LOVE -> { - mView?.setCarModle(R.raw.aiqinghao) + mView?.setCarModel(R.raw.aiqinghao) } OrderInfoResponse.M1_FAMILY -> { - mView?.setCarModle(R.raw.jiatinghao) + mView?.setCarModel(R.raw.jiatinghao) } OrderInfoResponse.M1_FRIENDLY -> { - mView?.setCarModle(R.raw.pengyouhao) + mView?.setCarModel(R.raw.pengyouhao) } else -> { - mView?.setCarModle(R.raw.m1) + mView?.setCarModel(R.raw.m1) } } } diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt index 4fd5699571..ba381c4007 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt @@ -198,7 +198,7 @@ class MainFragment : MvpFragment(), IMogo } } - fun setCarModle(rawInfo: Int) { + fun setCarModel(rawInfo: Int) { getMapUIController()?.changeCurrentIcon(rawInfo) HdMapBuildConfig.currentCarVrIconRes = rawInfo } diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt index 26238e72e9..e362613f11 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt @@ -13,6 +13,9 @@ import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_surplus import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_unit import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_speed +/** + * 速度、剩余时间、剩余距离和到达时间 + */ class ItineraryView : ConstraintLayout, ItineraryViewModel.ItineraryViewCallback { private val TAG = "ItineraryView" diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt index 78b4af73ff..a9816bf408 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt @@ -19,6 +19,9 @@ import kotlinx.android.synthetic.main.m1_devices_fragment.view.actv_order_times import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info_endorder_comfit +/** + * 剩余时间和结束订单入口 + */ class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback { private val TAG = "OrderInfoView" diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt index d9fa7178c1..c67afd2964 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt @@ -41,10 +41,11 @@ import kotlinx.android.synthetic.main.m1_order_loading.view.iv_loading_wait_ent import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.EventBus +/** + * 选择线路 + */ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallback { - private val TAG = "OrderInfoView" - constructor(context: Context) : super(context) constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) @@ -98,7 +99,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb rlv_line_list.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) rlv_line_list.addItemDecoration( - com.mogo.och.charter.passenger.ui.selectline.layoutmanage.BottomDecoration( + BottomDecoration( AutoSizeUtils.dp2px(context, 60f) ) ) @@ -107,7 +108,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb rv_site_list.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) rv_site_list.addItemDecoration( - com.mogo.och.charter.passenger.ui.selectline.layoutmanage.BottomDecoration( + BottomDecoration( AutoSizeUtils.dp2px(context, 90f) ) ) diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt index c071ba0680..46acd5e9fe 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt @@ -72,6 +72,9 @@ import kotlinx.android.synthetic.main.m1_soft_fragment.view.tv_temperature_title import me.jessyan.autosize.utils.AutoSizeUtils import java.util.concurrent.TimeUnit +/** + * 空调、暖风机、声音控制 + */ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallback { private val TAG = "OrderInfoView" diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlViewModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlViewModel.kt index af30004679..695239f216 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlViewModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlViewModel.kt @@ -6,7 +6,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.wigets.toast.ToastCharterUtils -import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback +import com.mogo.och.common.module.manager.devicemanage.callback.LightAirconditionDoorCallback import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue @@ -138,7 +138,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback { */ fun openAndSetAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) { CallerLogger.d( - M_BUS_P + TAG, "" + "打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd" + M_BUS_P + TAG, "打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd" ) CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd( 1, modeCmd, windSpeedCmd, temperatureCmd diff --git a/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml b/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml index 3515c4025c..386152cd5d 100644 --- a/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml +++ b/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml @@ -7,12 +7,14 @@ - + app:layout_constraintBottom_toBottomOf="parent"/> + + + + + - + + + + { + val startLon = intent.getFloatExtra("startLon", -1.0f) + val startLat = intent.getFloatExtra("startLat", -1.0f) + val endLon = intent.getFloatExtra("endLon", -1.0f) + val endLat = intent.getFloatExtra("endLat", -1.0f) + val lineID = intent.getLongExtra("lineID", -1) + setStation(startLon.toDouble(),startLat.toDouble(),endLon.toDouble(),endLat.toDouble(),lineID) + } else -> {} } } + fun setStation(startLon:Double,startLat:Double,endLon:Double,endLat:Double,lineID:Long){ + if(startLon<0||startLat<0||endLon<0||endLat<0||lineID<0){ + TrajectoryAndDistanceManager.setStationPoint(null,null,-1) + } + val startLocation = MogoLocation() + startLocation.longitude = startLon + startLocation.latitude = startLat + val endLocation = MogoLocation() + endLocation.longitude = endLon + endLocation.latitude = endLat + TrajectoryAndDistanceManager.setStationPoint(startLocation,endLocation,lineID) + } + fun getLocaitonByLog(path:String) { ThreadUtils.getIoPool().execute { try { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt index e723b6248d..aa81a4e6e5 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt @@ -6,4 +6,7 @@ package com.mogo.och.common.module.callback */ interface OchAdasStartFailureCallback { fun onStartAutopilotFailure(startFailedCode : String, startFailedMessage : String) + + fun brakeStatusChanged(isBrakeAvailable: Boolean) + } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java index bb7491b45d..12c407c763 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java @@ -6,12 +6,15 @@ import androidx.annotation.Nullable; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatisticsListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsListenerManager; +import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import com.mogo.eagle.core.utilcode.util.ParseVersionUtils; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; @@ -25,7 +28,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo private static final String TAG = OCHAdasAbilityManager.class.getSimpleName(); private boolean isAutopilotAbility; - private ArrayList unableAutopilotReasons; + private ArrayList unableAutopilotReasons; private String startFailedCode = ""; private String startFailedMessage = ""; @@ -90,15 +93,25 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo private void releaseListeners() { CallerAutopilotActionsListenerManager.INSTANCE.removeListener(this); CallerAutopilotStatisticsListenerManager.INSTANCE.removeListener(this); + CallerParallelDrivingActionsListenerManager.INSTANCE.removeListener(TAG); } @Override - public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { + public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { this.isAutopilotAbility = isAutopilotAbility; this.unableAutopilotReasons = unableAutopilotReasons; Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + (unableAutopilotReasons == null ? null : unableAutopilotReasons.toString())); - } + if (unableAutopilotReasons != null && getMapVersion() < 30600) { + //刹车变化回调 + Logger.d(TAG,"onAutopilotAbility = " + isAutopilotAbility + + " onAutopilotAbility =" + unableAutopilotReasons.toString()); + if (unableAutopilotReasons.toString().contains(UnableLaunchReason.SourceType.CHASSIS.name()) + && unableAutopilotReasons.toString().contains(UnableLaunchReason.UnableType.BRAKE.name())) { + failureCallback.brakeStatusChanged(isAutopilotAbility); + } + } + } @Override public void onAutopilotStatistics(@Nullable AutopilotStatistics statistics) { if (statistics == null) return; @@ -112,6 +125,9 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo } } + private int getMapVersion(){ + return ParseVersionUtils.parseVersion(true, CallerAutoPilotStatusListenerManager.INSTANCE.getDockerVersion()); + } public void release() { releaseListeners(); } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt index 9f514b0204..af3e06b237 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt @@ -3,6 +3,7 @@ package com.mogo.och.common.module.manager.devicemanage import chassis.VehicleStateOuterClass import com.mogo.eagle.core.function.api.autopilot.IMoGoRoboBusJinlvM1StatesListener import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StatesListenerManager +import com.mogo.och.common.module.manager.devicemanage.callback.LightAirconditionDoorCallback import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus import com.mogo.och.common.module.manager.devicemanage.data.DoorStatus import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/TaxiDoorStateManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/TaxiDoorStateManager.kt new file mode 100644 index 0000000000..daf0ec52eb --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/TaxiDoorStateManager.kt @@ -0,0 +1,129 @@ +package com.mogo.och.common.module.manager.devicemanage + +import chassis.Chassis +import chassis.VehicleStateOuterClass +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisDoorStateListener +import com.mogo.eagle.core.function.call.autopilot.CallerChassisDoorStateListenerManager +import com.mogo.eagle.core.function.call.base.CallerBase +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.common.module.manager.devicemanage.callback.DoorStateCallback +import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition +import com.mogo.och.common.module.manager.devicemanage.data.DoorState + +object TaxiDoorStateManager : IMoGoChassisDoorStateListener, + CallerBase() { + private val TAG = TaxiDoorStateManager::class.java.simpleName + + @Volatile + private var haveOpenDoor: Boolean? = null + + init { + CallerChassisDoorStateListenerManager.addListener(TAG, this) + } + + override fun doSomeAfterAddListener(tag: String, listener: DoorStateCallback) { + val doorList = CallerChassisDoorStateListenerManager.getDoorList() + if(doorList is MutableList){ + doSomeAfterAddListenerInner(doorList) + doorList.forEach { + onAutopilotSingleDoorState(it.number,it.status) + } + }else{ + doSomeAfterAddListenerInner(mutableListOf()) + } + } + + private fun doSomeAfterAddListenerInner(doorList: MutableList){ + var have = false + doorList.forEach { + if (it.status == 1) {//0关闭 1开着 2未知 + have = true + } + } + haveOpenDoor = have + invokeOpenState(have) + } + + /** + * 主要用来判断是否有门开着 + */ + override fun onAutopilotDoorState(doorList: MutableList) { + var have = false + doorList.forEach { + if (it.status == 1) {//0关闭 1开着 2未知 + have = true + } + } + if (have != haveOpenDoor) { + haveOpenDoor = have + invokeOpenState(have) + } + } + + /** + * 判断单个车门是否开着 + */ + override fun onAutopilotSingleDoorState(num: Chassis.DoorNumber, status: Int) { + CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "门太变化:${num}--${status}") + when (status) { + 0 -> { exchangeEnum(num, DoorState.CLOSE)} + 1 -> {exchangeEnum(num, DoorState.OPEN)} + 2 -> {exchangeEnum(num, DoorState.UNKNOWN)} + else -> {} + } + + } + + private fun exchangeEnum(num: Chassis.DoorNumber, state: DoorState) { + when (num) { + Chassis.DoorNumber.FRONT_LEFT -> { + invokeSingleDoorOpenState(DoorPosition.FRONT_LEFT, state) + } + + Chassis.DoorNumber.FRONT_RIGHT -> { + invokeSingleDoorOpenState(DoorPosition.FRONT_RIGHT, state) + } + + Chassis.DoorNumber.REAR_LEFT -> { + invokeSingleDoorOpenState(DoorPosition.REAR_LEFT, state) + } + + Chassis.DoorNumber.REAR_RIGHT -> { + invokeSingleDoorOpenState(DoorPosition.REAR_RIGHT, state) + } + + Chassis.DoorNumber.MIDDLE -> { + invokeSingleDoorOpenState(DoorPosition.MIDDLE, state) + } + + else -> {} + } + } + + /** + * @param have true 有车门开着 + * false 没有车门开着(可能开着可能未知) + */ + @Synchronized + private fun invokeOpenState(have: Boolean) { + M_LISTENERS.forEach { + val listener = it.value + listener.hasOpenDoor(have) + } + } + + /** + * @param doorPosition 车门位置 + * @param doorState 车门状态 + */ + @Synchronized + private fun invokeSingleDoorOpenState(doorPosition: DoorPosition,doorState: DoorState) { + M_LISTENERS.forEach { + val listener = it.value + listener.doorStateChangeCallback(doorPosition,doorState) + } + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/callback/DoorStateCallback.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/callback/DoorStateCallback.kt new file mode 100644 index 0000000000..37886350be --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/callback/DoorStateCallback.kt @@ -0,0 +1,19 @@ +package com.mogo.och.common.module.manager.devicemanage.callback + +import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition +import com.mogo.och.common.module.manager.devicemanage.data.DoorState + +interface DoorStateCallback { + + /** + * @param have true 有车门开着 + * false 没有车门开着(可能开着可能未知) + */ + fun hasOpenDoor(have:Boolean){} + + /** + * @param position 车门位置 + * @param state 当前车门状态 + */ + fun doorStateChangeCallback(position: DoorPosition,state: DoorState){} +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorCallback.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/callback/LightAirconditionDoorCallback.kt similarity index 92% rename from OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorCallback.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/callback/LightAirconditionDoorCallback.kt index 69e1292ef4..a9a5f7f607 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorCallback.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/callback/LightAirconditionDoorCallback.kt @@ -1,4 +1,4 @@ -package com.mogo.och.common.module.manager.devicemanage +package com.mogo.och.common.module.manager.devicemanage.callback import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/DoorStatus.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/DoorStatus.kt index 370f8a5dac..7f6121e562 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/DoorStatus.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/DoorStatus.kt @@ -1,3 +1,12 @@ package com.mogo.och.common.module.manager.devicemanage.data -data class DoorStatus(var isOpen: Boolean) \ No newline at end of file +data class DoorStatus(var isOpen: Boolean) + + +enum class DoorPosition { + FRONT_LEFT, FRONT_RIGHT, REAR_LEFT, REAR_RIGHT, MIDDLE +} + +enum class DoorState { + OPEN,CLOSE,UNKNOWN +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt index b2fcc24349..57ca3e400a 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt @@ -98,6 +98,8 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ d(M_OCHCOMMON + TAG, "重复轨迹") startCalculateDistanceLoop() return + }else{ + resetStation() } this.lineId = globalPathResp.lineId } @@ -270,7 +272,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ ) { //要前往的站在轨迹中对应的点的信息 val startStationInfo = CoordinateCalculateRouteUtil.getNearestPointInfo( - preCarLocationIndexInTrajectory, mRoutePoints!!.size,mRoutePoints!!, startStationInfo.stationPoint!!,1 + preCarLocationIndexInTrajectory, mRoutePoints!!.size,mRoutePoints!!, startStationInfo.stationPoint!!,1, useHeading = false ) this.startStationInfo.isNext = startStationInfo.second this.startStationInfo.index = startStationInfo.first @@ -288,7 +290,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ ) { //要前往的站在轨迹中对应的点 val endStationInfo = CoordinateCalculateRouteUtil.getNearestPointInfo( - preCarLocationIndexInTrajectory,mRoutePoints!!.size, mRoutePoints!!, endStationInfo.stationPoint!!,3 + preCarLocationIndexInTrajectory,mRoutePoints!!.size, mRoutePoints!!, endStationInfo.stationPoint!!,3, useHeading = false ) this.endStationInfo.isNext = endStationInfo.second this.endStationInfo.index = endStationInfo.first @@ -324,7 +326,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ preCarLocationIndexInTrajectory,endStationInfo.index!!+1, mRoutePoints!!, location,2 ) } - val calculateData = "距离结束站点最近的点:${carLocationInfo.first} 点在站的后面:${carLocationInfo.second} 距离点的距离:${carLocationInfo.third}" + val calculateData = "距离轨迹点最近的点:${carLocationInfo.first} 点在站的后面:${carLocationInfo.second} 距离点的距离:${carLocationInfo.third}" writeLog(calculateData, locationInfo) if(carLocationInfo.second==null||carLocationInfo.third>1_000){ preCarLocationIndexInTrajectory = 0 @@ -549,13 +551,13 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ } } - @ChainLog( - linkChainLog = ChainConstant.CHAIN_TYPE_OCH, - linkCode = ChainConstant.CHAIN_SOURCE_OCH, - nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE, - paramIndexes = [0,1] - ) - fun writeLog(carLocationInfo: String, location: String) { +// @ChainLog( +// linkChainLog = ChainConstant.CHAIN_TYPE_OCH, +// linkCode = ChainConstant.CHAIN_SOURCE_OCH, +// nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE, +// paramIndexes = [0,1] +// ) + private fun writeLog(carLocationInfo: String, location: String) { d(M_OCHCOMMON+ TAG,carLocationInfo) d(M_OCHCOMMON+ TAG,location) } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/orderlogmanager/OchChainLogManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/orderlogmanager/OchChainLogManager.kt new file mode 100644 index 0000000000..a4417e2b64 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/orderlogmanager/OchChainLogManager.kt @@ -0,0 +1,46 @@ +package com.mogo.och.common.module.manager.orderlogmanager + +import android.text.TextUtils +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.debug.DebugConfig +import com.mogo.commons.utils.MogoAnalyticUtils +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.DateTimeUtils +import com.zhjt.service.chain.ChainLog + +object OchChainLogManager { + + private val TAG = OchChainLogManager::class.java.simpleName + + const val EVENT_KEY_INFE_WITH_CHANGE = "event_key_och_common_info_and_changeinfo" + + /** + * @param Info 订单详细信息 + * @param changeInfo 变化信息 + */ + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_OCH, + linkCode = ChainConstant.CHAIN_SOURCE_OCH, + nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE, + paramIndexes = [0,1] + ) + fun writeChainLog(Info: String, changeInfo: String,upload:Boolean = true) { + d(SceneConstant.M_OCHCOMMON + TAG, Info) + d(SceneConstant.M_OCHCOMMON + TAG, changeInfo) + if(upload) { + val plateNum = AppConfigInfo.plateNumber + val params = HashMap() + params["sn"] = MoGoAiCloudClientConfig.getInstance().sn + params["env"] = DebugConfig.getNetMode() + params["plate_number"] = if (TextUtils.isEmpty(plateNum)) "" else plateNum + params["time"] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss) + params["info"] = Info + params["changeInfo"] = changeInfo + MogoAnalyticUtils.track(EVENT_KEY_INFE_WITH_CHANGE, params) + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/orderlogmanager/OrderChainLogManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/orderlogmanager/OrderChainLogManager.kt new file mode 100644 index 0000000000..92ca20a6ef --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/orderlogmanager/OrderChainLogManager.kt @@ -0,0 +1,27 @@ +package com.mogo.och.common.module.manager.orderlogmanager + +import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.zhjt.service.chain.ChainLog + +object OrderChainLogManager { + + private val TAG = OrderChainLogManager::class.java.simpleName + + /** + * @param orderInfo 订单详细信息 + * @param changeInfo 变化信息 + */ + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_OCH, + linkCode = ChainConstant.CHAIN_SOURCE_OCH, + nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE, + paramIndexes = [0,1] + ) + fun writeChainLog(orderInfo: String, changeInfo: String) { + d(SceneConstant.M_OCHCOMMON + TAG, orderInfo) + d(SceneConstant.M_OCHCOMMON + TAG, changeInfo) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java index a0de8f4d6f..16ff649e03 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java @@ -22,8 +22,10 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo; import com.amap.api.navi.model.AimLessModeStat; import com.amap.api.navi.model.NaviInfo; import com.amap.api.navi.model.NaviLatLng; +import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.och.common.module.utils.DateTimeUtil; import com.mogo.och.common.module.utils.PermissionUtil; import com.mogo.och.common.module.wigets.toast.ToastCharterUtils; @@ -39,7 +41,6 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { public static final String TAG = "NaviToDestinationModel"; - private static Context mContext; private AMapNavi mAMapNavi = null; protected final List sList = new ArrayList(); protected final List eList = new ArrayList(); @@ -49,7 +50,6 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { private boolean isPlay; public static AmapNaviToDestinationModel getInstance(Context context) { - mContext = context; return SingletonHolder.INSTANCE; } @@ -62,7 +62,8 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { public void initAMapNavi(NaviLatLng startLatLng, NaviLatLng endLatLng) { try { - mAMapNavi = AMapNavi.getInstance(mContext); + CallerLogger.i( TAG, "initAMapNavi()"); + mAMapNavi = AMapNavi.getInstance(AbsMogoApplication.getApp()); mAMapNavi.addAMapNaviListener(this); mAMapNavi.setUseInnerVoice(true, true); sList.add(startLatLng); @@ -88,6 +89,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { public void destroyAmaNavi() { if (mAMapNavi != null) { + CallerLogger.i( TAG, "destroyAmaNavi()"); isPlay = false; sList.clear(); eList.clear(); @@ -104,7 +106,7 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { @Override public void onInitNaviFailure() { - Toast.makeText(mContext, "init navi Failed", Toast.LENGTH_SHORT).show(); + Toast.makeText(AbsMogoApplication.getApp(), "init navi Failed", Toast.LENGTH_SHORT).show(); } @Override @@ -141,8 +143,8 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { @Override public void onNaviInfoUpdate(NaviInfo naviinfo) { //导航过程中的信息更新,请看NaviInfo的具体说明 + CallerLogger.i( TAG, "距离=" + naviinfo.getPathRetainDistance() + ", 剩余时间 " + naviinfo.getPathRetainTime()); if (null != mNaviChangedCallback) { - CallerLogger.i(M_TAXI + TAG, "距离=" + naviinfo.getPathRetainDistance() + ", 剩余时间 " + naviinfo.getPathRetainTime()); mNaviChangedCallback.onCurrentNaviDistAndTimeChanged(naviinfo.getPathRetainDistance(), naviinfo.getPathRetainTime());// 米、秒 } } @@ -162,14 +164,14 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { mNaviChangedCallback.reInitNaviAmap(isPlay, true); } } - if (!NetworkUtils.isConnected(mContext) || result.getErrorCode() == 2) { + if (!NetworkUtils.isConnected(AbsMogoApplication.getApp()) || result.getErrorCode() == 2) { ToastCharterUtils.showToastShort("网络异常,请重试"); if (mNaviChangedCallback != null) { mNaviChangedCallback.reInitNaviAmap(isPlay, false); } return; } - if (!PermissionUtil.isLocServiceEnable(mContext) || !PermissionUtil.checkPermission(mContext, new String[]{Manifest.permission.ACCESS_FINE_LOCATION})) { + if (!PermissionUtil.isLocServiceEnable(AbsMogoApplication.getApp()) || !PermissionUtil.checkPermission(AbsMogoApplication.getApp(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION})) { ToastCharterUtils.showToastShort("请开启车机定位后重试"); if (mNaviChangedCallback != null) { mNaviChangedCallback.reInitNaviAmap(isPlay, false); @@ -194,6 +196,11 @@ public class AmapNaviToDestinationModel implements AMapNaviListener { @Override public void onLocationChange(AMapNaviLocation location) { //当前位置回调 +// CallerLogger.i( TAG, "AMapNaviLocation = NaviLatLng = "+ +// location.getCoord().getLatitude()+ ", "+ location.getCoord().getLongitude() +// + ", bearing = " +location.getBearing() +// +", time = " + DateTimeUtil.formatLongToString(location.getTime(),DateTimeUtil.HH_mm) +// + ", locationType = "+ location.getLocationType()); } @Override diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt index 0a34893090..3067e5ee9b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt @@ -162,10 +162,6 @@ class CommonAmapNaviVIew @JvmOverloads constructor( override fun onNaviViewLoaded() { d(SceneConstant.M_TAXI + TAG, "导航页面加载成功") - d( - SceneConstant.M_TAXI + TAG, - "请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑" - ) } override fun onMapTypeChanged(p0: Int) { @@ -191,58 +187,4 @@ class CommonAmapNaviVIew @JvmOverloads constructor( fun onDestroy(){ amapNaviView.onDestroy() } - -// var array = arrayOf( -// "直行车道", -// "左转车道", -// "左转或直行车道", -// "右转车道", -// "右转或直行车道", -// "左掉头车道", -// "左转或者右转车道", -// " 左转或右转或直行车道", -// "右转掉头车道", -// "直行或左转掉头车道", -// "直行或右转掉头车道", -// "左转或左掉头车道", -// "右转或右掉头车道", -// "直行并且车道扩展", -// "左转+左掉头+扩展", -// "不可以选择该车道", -// "直行+左转+左掉头车道", -// "右转+左掉头", -// "左转+右转+左掉头", -// "直行+右转+左掉头", -// "左转+右掉头", -// "公交车道", -// "空车道", -// "可变车道" -// ) - -// var actions = arrayOf( -// "直行", -// "左转", -// "左转或直行", -// "右转", -// "右转或这行", -// "左掉头", -// "左转或者右转", -// " 左转或右转或直行", -// "右转掉头", -// "直行或左转掉头", -// "直行或右转掉头", -// "左转或左掉头", -// "右转或右掉头", -// "直行并且车道扩展", -// "左转+左掉头+扩展", -// "不可以选择", -// "直行+左转+左掉头", -// "右转+左掉头", -// "左转+右转+左掉头", -// "直行+右转+左掉头", -// "左转+右掉头", -// "公交车道", -// "空车道", -// "可变车道" -// ) } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.kt index 10bbe0ded4..36018e3b40 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.kt @@ -737,7 +737,7 @@ object CoordinateCalculateRouteUtil { } // 最近点中包含上次计算的点和上次计算的最近的一个点 - if(distanceMap.containsValue(preIndex)&&distanceMap.containsValue(preIndex+1)){ + if(distanceMap.containsValue(preIndex)&&distanceMap.containsValue(preIndex+1)&&type==1){ var preIndexDistance:DistanceDegree?=null var preIndexNextDistance:DistanceDegree?=null distanceMap.iterator().forEach { en -> @@ -771,7 +771,7 @@ object CoordinateCalculateRouteUtil { distanceMap.clear() Logger.d(SceneConstant.M_OCHCOMMON + "calculateRouteSumLength", "计算时间:${startTime-System.currentTimeMillis()}") - return Triple(currentIndex,preIndexNextDistance?.isNext,preIndexNextDistance!!.distance) + return Triple(currentIndex,preIndexNextDistance?.isNext,preIndexNextDistance!!.distance) } } } @@ -823,7 +823,7 @@ object CoordinateCalculateRouteUtil { val key = en.key val value = en.value // 排除没有第一个值0是 - if(value==preIndex+1&&preIndex!=0){ + if(value==preIndex+1&&preIndex!=0&&type==1){ currentIndex = value val iterator1 = distanceMap.iterator() while (iterator1.hasNext()) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java index e081d76001..04f7d48529 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java @@ -35,11 +35,7 @@ public class DateTimeUtil { public static boolean compareDateIsCurrentDay(Calendar targetCalendar){ Calendar currentCale = DateTimeUtils.getCurrentDateTime(); String currentDay = formatCalendarToString(currentCale, yyyy_MM_dd); - if (currentDay.equals(formatCalendarToString(targetCalendar, yyyy_MM_dd))){ - return true; - }else { - return false; - } + return currentDay.equals(formatCalendarToString(targetCalendar, yyyy_MM_dd)); } public static Calendar formatLongToCalendar(long time){ diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FlowBus.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FlowBus.kt new file mode 100644 index 0000000000..7bdc1dcc2a --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FlowBus.kt @@ -0,0 +1,98 @@ +package com.mogo.och.common.module.utils + +/** + * @author aibingbing + * @date: 2023/9/13 + * @desc Flow Bus + */ +import android.util.Log +import androidx.lifecycle.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.channels.BufferOverflow +import kotlinx.coroutines.flow.* +import kotlinx.coroutines.launch + +/** + * FlowBus消息总线 + */ +object FlowBus { + private const val TAG = "FlowBus" + private val busMap = mutableMapOf>() + private val busStickMap = mutableMapOf>() + + @Synchronized + fun with(key: String): EventBus { + var eventBus = busMap[key] + if (eventBus == null) { + eventBus = EventBus(key) + busMap[key] = eventBus + } + return eventBus as EventBus + } + + @Synchronized + fun withStick(key: String): StickEventBus { + var eventBus = busStickMap[key] + if (eventBus == null) { + eventBus = StickEventBus(key) + busStickMap[key] = eventBus + } + return eventBus as StickEventBus + } + + //真正实现类 + open class EventBus(private val key: String) : LifecycleObserver { + + //私有对象用于发送消息 + private val _events: MutableSharedFlow by lazy { + obtainEvent() + } + + //暴露的公有对象用于接收消息 + private val events = _events.asSharedFlow() + + open fun obtainEvent(): MutableSharedFlow = + MutableSharedFlow(0, 1, BufferOverflow.DROP_OLDEST) + + //主线程接收数据 + fun register(lifecycleOwner: LifecycleOwner, action: (t: T) -> Unit) { + lifecycleOwner.lifecycle.addObserver(this) + lifecycleOwner.lifecycleScope.launch { + events.collect { + try { + action(it) + } catch (e: Exception) { + e.printStackTrace() + Log.e(TAG, "FlowBus - Error:$e") + } + } + } + } + + //协程中发送数据 + suspend fun post(event: T) { + _events.emit(event) + } + + //主线程发送数据 + fun post(scope: CoroutineScope, event: T) { + scope.launch { + _events.emit(event) + } + } + + //自动销毁 + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + fun onDestroy() { + Log.w(TAG, "FlowBus - 自动onDestroy") + val subscriptCount = _events.subscriptionCount.value + if (subscriptCount <= 0) + busMap.remove(key) + } + } + + class StickEventBus(key: String) : EventBus(key) { + override fun obtainEvent(): MutableSharedFlow = + MutableSharedFlow(1, 1, BufferOverflow.DROP_OLDEST) + } +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt index e60bb084d5..fbeda056df 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt @@ -7,9 +7,10 @@ import android.os.Handler import android.os.Looper import android.widget.ImageView import com.mogo.commons.AbsMogoApplication +import java.lang.RuntimeException import java.lang.ref.SoftReference -class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true){ +class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true,width:Int = -1,height:Int = -1){ private lateinit var mFrames: IntArray // 帧数组 private var mIndex = 0 // 当前帧 private var mShouldRun = false // 开始/停止播放用 @@ -22,10 +23,17 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题 init { - createAnimation(imageView, getData(resId), fps,initFirstFrame) + createAnimation(imageView, getData(resId), fps,initFirstFrame,width,height) } - private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int, initFirstFrame:Boolean) { + private fun createAnimation( + imageView: ImageView, + frames: IntArray, + fps: Int, + initFirstFrame: Boolean, + width: Int, + height: Int + ) { mHandler = Handler(Looper.myLooper()!!) mFrames = frames mIndex = -1 @@ -36,13 +44,25 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir if(initFirstFrame) { imageView.setImageResource(mFrames[0]) } - + var widthImage = -1 + var heightImage = -1 + var config = Bitmap.Config.ARGB_8888 + if(width>0&&height>0){ + widthImage = width + heightImage = height + }else{ + try { + val bmp = (imageView.drawable as BitmapDrawable).bitmap + widthImage = bmp.width + heightImage = bmp.height + config = bmp.config + }catch (e:Exception){ + throw RuntimeException("请设置图片或传递大小") + } + } // 当图片大小类型相同时进行复用,避免频繁GC - val bmp = (imageView.drawable as BitmapDrawable).bitmap - val width = bmp.width - val height = bmp.height - val config = bmp.config - mBitmap = Bitmap.createBitmap(width, height, config) + + mBitmap = Bitmap.createBitmap(widthImage, heightImage, config) mBitmapOptions = BitmapFactory.Options() //设置Bitmap内存复用 mBitmapOptions!!.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收 @@ -121,6 +141,10 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir mShouldRun = false } + fun isPlaying():Boolean{ + return mShouldRun + } + /** * 设置停止播放监听 * @param listener 设置监听 diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt index 8d41c08fec..f0216e8b3b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt @@ -36,12 +36,11 @@ object RxUtils { } } - fun isDisposed(disposable: Disposable?):Boolean{ - if(disposable!=null){ - return true + fun isNotDisposed(disposable: Disposable?):Boolean{ + if(disposable==null){ + return false } - - return false + return !disposable.isDisposed } // 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃 diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/CountDownTimerExt.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/CountDownTimerExt.kt new file mode 100644 index 0000000000..a9ae2176c5 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/CountDownTimerExt.kt @@ -0,0 +1,148 @@ +package com.mogo.och.common.module.wigets + +import android.os.CountDownTimer +import android.util.Log + +/** + * @author: wangmingjun + * @date: 2023/9/18 + * 支持pause的倒计时, 由CountDownTimer实现的, + * 注意CountdownTimer的源码,start(),pause(),cancel()方法都是用message和handler实现的 + * 如果是在子线程中执行,要加调用Looper.prepare()及Looper.loop() + * 或者是使用 runOnMainThread 使其在主线程中执行 + **/ +abstract class CountDownTimerExt( + private var millisInFuture: Long, + /** + * 间隔 + */ + private var mInterval: Long +) { + /** + * 倒计时实现类 + */ + private var countDownTimer: CountDownTimer? = null + private var isTimerPaused = true + var remainingTime: Long + + /** + * @param millisInFutureIn 总时长 + * @param interval onTick间隔 + */ + init { + remainingTime = millisInFuture + } + + fun start() { + startIt(remainingTime, mInterval) + } + + fun start(millisInFutureIn: Long, remainingTimeIn: Long, interval: Long) { + millisInFuture = millisInFutureIn + remainingTime = remainingTimeIn + mInterval = interval + start() + } + + @Synchronized + fun startIt(millisInFutureIn: Long, interval: Long) { + remainingTime = millisInFutureIn + mInterval = interval + if (millisInFuture > 0L && interval > 0L) { + if (!isTimerPaused) { + // 有运行中的先stop + stop() + } + if (isTimerPaused) { + // 有暂停或未运行的,创建CountDownTimer实现, 确保运行在主线程 + countDownTimer = object : CountDownTimer(remainingTime, mInterval) { + override fun onFinish() { + onTimerFinish() + stop() + } + + override fun onTick(millisUntilFinished: Long) { + // 这里会记录剩余的时长保存到remainingTime, 方便暂停后能再恢复 + remainingTime = millisUntilFinished + onTimerTick(millisUntilFinished) + } + } + try { + countDownTimer?.start() + } catch (e: Exception) { + e.printStackTrace() + } + isTimerPaused = false + } else { + Log.d(TAG, "ignore start") + } + } else { + Log.d(TAG, "invalid parameter") + } + } + + /** + * 停止 + */ + fun stop() { + try { + countDownTimer?.cancel() + } catch (e: Exception) { + e.printStackTrace() + } + isTimerPaused = true + remainingTime = millisInFuture + } + + /** + * 暂停 + */ + fun pause() { + if (!isTimerPaused) { + try { + countDownTimer?.cancel() + } catch (e: Exception) { + e.printStackTrace() + } + isTimerPaused = true + onTimerPause() + } + } + + /** + * 恢复 + */ + fun resume() { + if (!isRunning) { + // 通过remainingTime得到剩余的时长 + startIt(remainingTime, mInterval) + onTimerResume(remainingTime) + } + } + + private val isRunning: Boolean + /** + * 运行中 + * @return + */ + get() = !isTimerPaused + + /** + * 每次触发倒计时回调 + * @param value + */ + abstract fun onTimerTick(value: Long) + + /** + * 倒计时完成回调 + */ + abstract fun onTimerFinish() + + abstract fun onTimerPause() + + abstract fun onTimerResume(remainingTime: Long) + + companion object { + private const val TAG = "CountDownTimerExt" + } +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt index 0325441080..4a9ba7dc8c 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt @@ -32,10 +32,13 @@ class StartAutopilotAnimationView @JvmOverloads constructor( private const val TAG = "StartAutopilotAnimationView" } - private var startTimer: CountDownTimer? = null + private var startTimer: CountDownTimerExt? = null private val mContext: Context + private var mTimerListener: AnimationViewTimerListener? = null private val closeWarningTask: Runnable = Runnable { + //开始倒计时 + countDownTimer() showWarning(DirectionEnum.ALERT_WARNING_NON) } @@ -58,17 +61,36 @@ class StartAutopilotAnimationView @JvmOverloads constructor( super.onAttachedToWindow() } - fun show(direction: DirectionEnum, time: Long) { + fun show(direction: DirectionEnum, time: Long,listener: AnimationViewTimerListener) { + mTimerListener = listener + //开始倒计时 + countDownTimer() showWarning(direction, time) } + fun pause(){ + pauseWarning() + } + + private fun pauseWarning() { + startTimer?.pause() + } + + fun resume(){ + resumeWarning() + } + + private fun resumeWarning() { + startTimer?.resume() + } + fun dismiss(direction: DirectionEnum) { dismissWarning(direction) cancelCountdown() } fun cancelCountdown(){ //防止内存泄漏 - startTimer?.cancel() + startTimer?.stop() startTimer = null } @@ -78,8 +100,6 @@ class StartAutopilotAnimationView @JvmOverloads constructor( * @see WarningDirectionEnum */ private fun showWarning(direction: DirectionEnum, time: Long = ALL_CLOSE_TIMER) { - //开始倒计时 - countDownTimer() // 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示 if (oldDirection.get() == direction) { @@ -131,6 +151,26 @@ class StartAutopilotAnimationView @JvmOverloads constructor( } } + private fun pauseWarning(direction: DirectionEnum) { + if (direction == DirectionEnum.ALERT_WARNING_NON) { + return + } + removeCallbacks(closeWarningTask) + post { + when (direction) { + DirectionEnum.ALERT_WARNING_TOP -> { + startAutopilotTipImg.visibility = View.VISIBLE + startAutopilotTip.visibility = View.VISIBLE + } + else -> { + CallerLogger.d("$M_HMI$TAG", "Not Support Direction") + } + } + clearAnimation() + this.oldDirection.set(null) + } + } + override fun onDetachedFromWindow() { super.onDetachedFromWindow() } @@ -148,21 +188,37 @@ class StartAutopilotAnimationView @JvmOverloads constructor( startAutopilotTip.visibility = VISIBLE - startTimer = object : CountDownTimer(ALL_CLOSE_TIMER, 1000L) {// 5倒计时后开启自驾 + startTimer = object : CountDownTimerExt(ALL_CLOSE_TIMER, 1000L) {// 5倒计时后开启自驾 - @SuppressLint("SetTextI18n") - override fun onTick(millisUntilFinished: Long) { + override fun onTimerTick(value: Long) { // 倒计时 UiThreadHandler.post { - startAutopilotTip.text = "${(millisUntilFinished/1000).toInt()} 车辆即将自动开启自动驾驶" + startAutopilotTip.text = "${(value/1000).toInt()} 车辆即将自动开启自动驾驶" } playDI() } - override fun onFinish() { + override fun onTimerFinish() { //倒计时结束了... UiThreadHandler.post { startAutopilotTip.text = "车辆正在自动开启自动驾驶" + dismiss(DirectionEnum.ALERT_WARNING_TOP) + } + } + + override fun onTimerPause() { + //倒计时暂停 + UiThreadHandler.post { + pauseWarning(DirectionEnum.ALERT_WARNING_TOP) + mTimerListener?.onTimerPause() + } + } + + override fun onTimerResume(remainingTime: Long) { + //倒计时继续对动画UI处理 + UiThreadHandler.post { + showWarning(DirectionEnum.ALERT_WARNING_TOP, remainingTime) + mTimerListener?.onTimerResume(remainingTime) } } } @@ -170,4 +226,9 @@ class StartAutopilotAnimationView @JvmOverloads constructor( startTimer?.start() } + interface AnimationViewTimerListener{ + fun onTimerResume(remainingTime: Long) + + fun onTimerPause() + } } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/test/java/com/mogo/och/common/module/ExampleUnitTest.kt b/OCH/mogo-och-common-module/src/test/java/com/mogo/och/common/module/ExampleUnitTest.kt index b10afe9aa9..b7c293b91d 100644 --- a/OCH/mogo-och-common-module/src/test/java/com/mogo/och/common/module/ExampleUnitTest.kt +++ b/OCH/mogo-och-common-module/src/test/java/com/mogo/och/common/module/ExampleUnitTest.kt @@ -1,5 +1,6 @@ package com.mogo.och.common.module +import com.mogo.eagle.core.utilcode.util.CoordinateTransform import com.zhidao.thirdlogin.utils.Aes import org.junit.Assert.* import org.junit.Test @@ -20,4 +21,621 @@ class ExampleUnitTest { val encrypt: String = Aes.encrypt(json, KEY, IVS, "UTF-8") println(encrypt) } + + @Test + fun resetData(){ + val mutableListOf = mutableListOf() + mutableListOf.add(Data(26.81618164239085,112.58250175297606,55.55709771386404 ,0.046407543)) + mutableListOf.add(Data(26.81618164239085,112.58250175297606,55.55709771386404 ,0.046407543)) + mutableListOf.add(Data(26.81618164239085,112.58250175297606,55.55709771386404 ,0.046407543)) + mutableListOf.add(Data(26.816181808122355,112.58250217912767,55.5367232595699 ,0.024934836)) + mutableListOf.add(Data(26.81618188427374,112.58250252407656,55.47659710430628 ,-0.0031026027)) + mutableListOf.add(Data(26.816182627199186,112.58250389674681,55.30434314853312 ,0.56499475)) + mutableListOf.add(Data(26.81619347196081,112.5825216510838,54.429112463003946 ,3.3143053)) + mutableListOf.add(Data(26.816212952303637,112.58255186583256,53.611788121258144 ,4.1918964)) + mutableListOf.add(Data(26.816239753303016,112.5825918107494,52.81322630916236 ,6.0459743)) + mutableListOf.add(Data(26.81627681379391,112.58264625538742,52.33910872792592 ,7.5077167)) + mutableListOf.add(Data(26.81632000870642,112.58270715442146,51.45473583419266 ,8.213942)) + mutableListOf.add(Data(26.816367868569504,112.58277449458916,51.894186790296715 ,9.117803)) + mutableListOf.add(Data(26.816419772705085,112.58284877034309,52.35565486119026 ,9.915305)) + mutableListOf.add(Data(26.816475594914255,112.58292938397568,52.452862113457854 ,10.67503)) + mutableListOf.add(Data(26.816535811576774,112.58301559606879,52.43356682905261 ,11.37326)) + mutableListOf.add(Data(26.816598457679355,112.5831078725796,53.85711144077209 ,11.978908)) + mutableListOf.add(Data(26.816662027735013,112.58320692287296,55.32445805563884 ,12.534072)) + mutableListOf.add(Data(26.816726886660476,112.58331188364737,55.79882835387457 ,13.077099)) + mutableListOf.add(Data(26.816726886660476,112.58331188364737,55.79882835387457 ,13.077099)) + mutableListOf.add(Data(26.816793247443773,112.58341938436075,55.82383367642598 ,13.111888)) + mutableListOf.add(Data(26.816793247443773,112.58341938436075,55.82383367642598 ,13.111888)) + mutableListOf.add(Data(26.816860045545038,112.5835283980739,55.95009655342284 ,13.205783)) + mutableListOf.add(Data(26.816860045545038,112.5835283980739,55.95009655342284 ,13.205783)) + mutableListOf.add(Data(26.816925196446753,112.58363575353036,56.266921708263055 ,12.377544)) + mutableListOf.add(Data(26.816925196446753,112.58363575353036,56.266921708263055 ,12.377544)) + mutableListOf.add(Data(26.8169850300721,112.58373523649801,56.48836327134404 ,11.37828)) + mutableListOf.add(Data(26.8169850300721,112.58373523649801,56.48836327134404 ,11.37828)) + mutableListOf.add(Data(26.817037934280332,112.58382376359087,56.24827187673429 ,9.676991)) + mutableListOf.add(Data(26.817037934280332,112.58382376359087,56.24827187673429 ,9.676991)) + mutableListOf.add(Data(26.817083166151374,112.5838975695181,55.88718368097784 ,7.9715595)) + mutableListOf.add(Data(26.817083166151374,112.5838975695181,55.88718368097784 ,7.9715595)) + mutableListOf.add(Data(26.817119554569622,112.58395525826116,54.790292866314246 ,5.8003225)) + mutableListOf.add(Data(26.817119554569622,112.58395525826116,54.790292866314246 ,5.8003225)) + mutableListOf.add(Data(26.817140378417207,112.58398757091575,54.00168947002834 ,2.0236187)) + mutableListOf.add(Data(26.817140378417207,112.58398757091575,54.00168947002834 ,2.0236187)) + mutableListOf.add(Data(26.817143666977085,112.58399300744259,53.873008706065264 ,0.072262354)) + mutableListOf.add(Data(26.817143666977085,112.58399300744259,53.873008706065264 ,0.072262354)) + mutableListOf.add(Data(26.81714331006102,112.58399316177113,53.87228129091869 ,0.0019371088)) + mutableListOf.add(Data(26.81714331006102,112.58399316177113,53.87228129091869 ,0.0019371088)) + mutableListOf.add(Data(26.81714313768666,112.58399312891899,53.870710347409556 ,-0.0011951944)) + mutableListOf.add(Data(26.81714313768666,112.58399312891899,53.870710347409556 ,-0.0011951944)) + mutableListOf.add(Data(26.81714315453284,112.58399311449793,53.86844272460513 ,-0.0039134827)) + mutableListOf.add(Data(26.81714315453284,112.58399311449793,53.86844272460513 ,-0.0039134827)) + mutableListOf.add(Data(26.817143235978477,112.5839931065896,53.868674951036894 ,0.009990219)) + mutableListOf.add(Data(26.817143235978477,112.5839931065896,53.868674951036894 ,0.009990219)) + mutableListOf.add(Data(26.8171432379633,112.58399311184859,53.86787240380943 ,0.0057474226)) + mutableListOf.add(Data(26.8171432379633,112.58399311184859,53.86787240380943 ,0.0057474226)) + mutableListOf.add(Data(26.817143234431487,112.58399311556684,53.868285630254206 ,0.0053468696)) + mutableListOf.add(Data(26.817143234431487,112.58399311556684,53.868285630254206 ,0.0053468696)) + mutableListOf.add(Data(26.81714323875891,112.5839931259286,53.867687988701846 ,0.008409082)) + mutableListOf.add(Data(26.81714323875891,112.5839931259286,53.867687988701846 ,0.008409082)) + mutableListOf.add(Data(26.817143254507762,112.58399313934659,53.86896181898203 ,0.008529294)) + mutableListOf.add(Data(26.817143254507762,112.58399313934659,53.86896181898203 ,0.008529294)) + mutableListOf.add(Data(26.817143260063123,112.58399314333123,53.865194969654794 ,0.0053140023)) + mutableListOf.add(Data(26.817143260063123,112.58399314333123,53.865194969654794 ,0.0053140023)) + mutableListOf.add(Data(26.81714326019063,112.58399314732564,53.868613479334385 ,0.0040332223)) + mutableListOf.add(Data(26.81714326019063,112.58399314732564,53.868613479334385 ,0.0040332223)) + mutableListOf.add(Data(26.81714326984717,112.5839931502497,53.869293083156776 ,0.0050935512)) + mutableListOf.add(Data(26.81714326984717,112.5839931502497,53.869293083156776 ,0.0050935512)) + mutableListOf.add(Data(26.817143276924913,112.5839931598786,53.87102112101678 ,0.0051586633)) + mutableListOf.add(Data(26.817143276924913,112.5839931598786,53.87102112101678 ,0.0051586633)) + mutableListOf.add(Data(26.817143271976438,112.58399317037059,53.86838808309176 ,0.006491186)) + mutableListOf.add(Data(26.817143271976438,112.58399317037059,53.86838808309176 ,0.006491186)) + mutableListOf.add(Data(26.817143265170607,112.5839931554377,53.86955946053439 ,-0.0019018989)) + mutableListOf.add(Data(26.817143265170607,112.5839931554377,53.86955946053439 ,-0.0019018989)) + mutableListOf.add(Data(26.817143273658317,112.58399316718146,53.86821049817331 ,0.0031056462)) + mutableListOf.add(Data(26.817143273658317,112.58399316718146,53.86821049817331 ,0.0031056462)) + mutableListOf.add(Data(26.81714327261351,112.58399317389184,53.867244026405785 ,0.0022922105)) + mutableListOf.add(Data(26.81714327261351,112.58399317389184,53.867244026405785 ,0.0022922105)) + mutableListOf.add(Data(26.81714328168219,112.58399317547813,53.869750705831166 ,0.0033199964)) + mutableListOf.add(Data(26.81714328168219,112.58399317547813,53.869750705831166 ,0.0033199964)) + mutableListOf.add(Data(26.81714329830482,112.58399317974332,53.868497366118504 ,0.0036278928)) + mutableListOf.add(Data(26.81714329830482,112.58399317974332,53.868497366118504 ,0.0036278928)) + mutableListOf.add(Data(26.81714329823904,112.58399318687029,53.869549215250686 ,9.618327E-4)) + mutableListOf.add(Data(26.81714329823904,112.58399318687029,53.869549215250686 ,9.618327E-4)) + mutableListOf.add(Data(26.81714329683728,112.58399318631112,53.87207297014896 ,-3.115031E-4)) + mutableListOf.add(Data(26.81714329683728,112.58399318631112,53.87207297014896 ,-3.115031E-4)) + mutableListOf.add(Data(26.817143299098106,112.5839931844786,53.86809438495743 ,5.291645E-4)) + mutableListOf.add(Data(26.817143299098106,112.5839931844786,53.86809438495743 ,5.291645E-4)) + mutableListOf.add(Data(26.817143308731524,112.58399319567121,53.86893449822537 ,0.002943732)) + mutableListOf.add(Data(26.817143308731524,112.58399319567121,53.86893449822537 ,0.002943732)) + mutableListOf.add(Data(26.81714331310618,112.58399323023308,53.86786898871486 ,0.016370257)) + mutableListOf.add(Data(26.81714331310618,112.58399323023308,53.86786898871486 ,0.016370257)) + mutableListOf.add(Data(26.817143303931818,112.58399320624724,53.86840174347009 ,-0.0065030125)) + mutableListOf.add(Data(26.817143303931818,112.58399320624724,53.86840174347009 ,-0.0065030125)) + mutableListOf.add(Data(26.81714328119793,112.58399322107572,53.86862030952352 ,-0.0044723027)) + mutableListOf.add(Data(26.81714328119793,112.58399322107572,53.86862030952352 ,-0.0044723027)) + mutableListOf.add(Data(26.81714326726879,112.58399321507112,53.87232910224287 ,-0.0035493786)) + mutableListOf.add(Data(26.81714326726879,112.58399321507112,53.87232910224287 ,-0.0035493786)) + mutableListOf.add(Data(26.81714326952943,112.58399321006907,53.872151517324426 ,7.5540715E-4)) + mutableListOf.add(Data(26.81714326952943,112.58399321006907,53.872151517324426 ,7.5540715E-4)) + mutableListOf.add(Data(26.817143279681396,112.58399321381509,53.872574989052964 ,0.001874776)) + mutableListOf.add(Data(26.817143279681396,112.58399321381509,53.872574989052964 ,0.001874776)) + mutableListOf.add(Data(26.817143286214396,112.58399322256894,53.86990780018209 ,0.0010117635)) + mutableListOf.add(Data(26.817143286214396,112.58399322256894,53.86990780018209 ,0.0010117635)) + mutableListOf.add(Data(26.817143290166985,112.58399321948606,53.866837630150144 ,-7.378759E-4)) + mutableListOf.add(Data(26.817143290166985,112.58399321948606,53.866837630150144 ,-7.378759E-4)) + mutableListOf.add(Data(26.817143296223914,112.58399321538221,53.871697309744604 ,-7.305082E-4)) + mutableListOf.add(Data(26.817143296223914,112.58399321538221,53.871697309744604 ,-7.305082E-4)) + mutableListOf.add(Data(26.817143305406848,112.58399321633149,53.86946042279146 ,-3.4410154E-4)) + mutableListOf.add(Data(26.817143305406848,112.58399321633149,53.86946042279146 ,-3.4410154E-4)) + mutableListOf.add(Data(26.817143309674115,112.58399323304309,53.86847346045636 ,0.015301721)) + mutableListOf.add(Data(26.817143309674115,112.58399323304309,53.86847346045636 ,0.015301721)) + mutableListOf.add(Data(26.817143300633735,112.5839932094286,53.869060856725014 ,-0.0041958815)) + mutableListOf.add(Data(26.817143300633735,112.5839932094286,53.869060856725014 ,-0.0041958815)) + mutableListOf.add(Data(26.81714329175772,112.58399321172573,53.868623724618146 ,-0.0041520167)) + mutableListOf.add(Data(26.81714329175772,112.58399321172573,53.868623724618146 ,-0.0041520167)) + mutableListOf.add(Data(26.81714327175831,112.58399320571804,53.867769950971876 ,-0.003427676)) + mutableListOf.add(Data(26.81714327175831,112.58399320571804,53.867769950971876 ,-0.003427676)) + mutableListOf.add(Data(26.81714327419855,112.58399319974227,53.86951164921021 ,1.3224973E-4)) + mutableListOf.add(Data(26.81714327419855,112.58399319974227,53.86951164921021 ,1.3224973E-4)) + mutableListOf.add(Data(26.817143286280604,112.58399319410101,53.86864421518561 ,0.0014093047)) + mutableListOf.add(Data(26.817143286280604,112.58399319410101,53.86864421518561 ,0.0014093047)) + mutableListOf.add(Data(26.817143301517042,112.58399319617503,53.869972686979224 ,0.0021324877)) + mutableListOf.add(Data(26.817143301517042,112.58399319617503,53.869972686979224 ,0.0021324877)) + mutableListOf.add(Data(26.81714329786978,112.58399320422272,53.87138653613738 ,5.9873355E-4)) + mutableListOf.add(Data(26.81714329786978,112.58399320422272,53.87138653613738 ,5.9873355E-4)) + mutableListOf.add(Data(26.817143290263108,112.58399320768578,53.868603234050624 ,-9.5163955E-4)) + mutableListOf.add(Data(26.817143290263108,112.58399320768578,53.868603234050624 ,-9.5163955E-4)) + mutableListOf.add(Data(26.81714330007566,112.58399319077888,53.8673567245271 ,-0.0016809735)) + mutableListOf.add(Data(26.81714330007566,112.58399319077888,53.8673567245271 ,-0.0016809735)) + mutableListOf.add(Data(26.81714331779051,112.58399320175057,53.86782459248525 ,0.013873377)) + mutableListOf.add(Data(26.81714331779051,112.58399320175057,53.86782459248525 ,0.013873377)) + mutableListOf.add(Data(26.81714331797703,112.58399319152798,53.86942285675099 ,-2.5552226E-4)) + mutableListOf.add(Data(26.81714331797703,112.58399319152798,53.86942285675099 ,-2.5552226E-4)) + mutableListOf.add(Data(26.817143301371033,112.58399320407928,53.87041323418066 ,-0.0022770471)) + mutableListOf.add(Data(26.817143301371033,112.58399320407928,53.87041323418066 ,-0.0022770471)) + mutableListOf.add(Data(26.817143286827157,112.58399319804838,53.869573120912776 ,-0.0025196006)) + mutableListOf.add(Data(26.817143286827157,112.58399319804838,53.869573120912776 ,-0.0025196006)) + mutableListOf.add(Data(26.81714328572524,112.58399318869752,53.87063521532872 ,-0.0016185519)) + mutableListOf.add(Data(26.81714328572524,112.58399318869752,53.87063521532872 ,-0.0016185519)) + mutableListOf.add(Data(26.817143275344343,112.58399317613704,53.87387955518443 ,-0.0021576409)) + mutableListOf.add(Data(26.817143275344343,112.58399317613704,53.87387955518443 ,-0.0021576409)) + mutableListOf.add(Data(26.817143275161378,112.58399317311375,53.86929991334597 ,0.001371147)) + mutableListOf.add(Data(26.817143275161378,112.58399317311375,53.86929991334597 ,0.001371147)) + mutableListOf.add(Data(26.817143281394475,112.58399317503098,53.86759919624262 ,0.003383463)) + mutableListOf.add(Data(26.817143281394475,112.58399317503098,53.86759919624262 ,0.003383463)) + mutableListOf.add(Data(26.81714327190517,112.58399318157332,53.86734306414877 ,8.065918E-4)) + mutableListOf.add(Data(26.81714327190517,112.58399318157332,53.86734306414877 ,8.065918E-4)) + mutableListOf.add(Data(26.817143260932923,112.58399316911094,53.86561844138333 ,-0.0014197703)) + mutableListOf.add(Data(26.817143260932923,112.58399316911094,53.86561844138333 ,-0.0014197703)) + mutableListOf.add(Data(26.817143261387983,112.58399316238105,53.868347101956715 ,0.0043071667)) + mutableListOf.add(Data(26.817143261387983,112.58399316238105,53.868347101956715 ,0.0043071667)) + mutableListOf.add(Data(26.817143256717934,112.58399314806874,53.870990385165555 ,-0.0019511797)) + mutableListOf.add(Data(26.817143256717934,112.58399314806874,53.870990385165555 ,-0.0019511797)) + mutableListOf.add(Data(26.81714325591799,112.58399315517725,53.86898572464412 ,0.0018099692)) + mutableListOf.add(Data(26.81714325591799,112.58399315517725,53.86898572464412 ,0.0018099692)) + mutableListOf.add(Data(26.817143252240935,112.58399316638,53.86619559236817 ,0.021292992)) + mutableListOf.add(Data(26.817143252240935,112.58399316638,53.86619559236817 ,0.021292992)) + mutableListOf.add(Data(26.81714402042069,112.583994386207,53.845687949385194 ,0.3348555)) + mutableListOf.add(Data(26.81714402042069,112.583994386207,53.845687949385194 ,0.3348555)) + mutableListOf.add(Data(26.817147405726278,112.58399956299603,53.73888769642832 ,0.9280623)) + mutableListOf.add(Data(26.817147405726278,112.58399956299603,53.73888769642832 ,0.9280623)) + mutableListOf.add(Data(26.817153799651898,112.58400914360494,53.58582657222291 ,1.4668413)) + mutableListOf.add(Data(26.817153799651898,112.58400914360494,53.58582657222291 ,1.4668413)) + mutableListOf.add(Data(26.81716245692801,112.58402187641425,52.39904705298733 ,1.690717)) + mutableListOf.add(Data(26.81716245692801,112.58402187641425,52.39904705298733 ,1.690717)) + mutableListOf.add(Data(26.817175410421267,112.58403959295411,49.84256188816494 ,3.0424085)) + mutableListOf.add(Data(26.817175410421267,112.58403959295411,49.84256188816494 ,3.0424085)) + mutableListOf.add(Data(26.817198616464147,112.58406783866415,45.33429552649801 ,4.4409986)) + mutableListOf.add(Data(26.817198616464147,112.58406783866415,45.33429552649801 ,4.4409986)) + mutableListOf.add(Data(26.81723059837678,112.58410013682379,39.67851981822855 ,5.031896)) + mutableListOf.add(Data(26.81723059837678,112.58410013682379,39.67851981822855 ,5.031896)) + mutableListOf.add(Data(26.81726793050972,112.58413123275119,33.760215543925824 ,5.287935)) + mutableListOf.add(Data(26.81726793050972,112.58413123275119,33.760215543925824 ,5.287935)) + mutableListOf.add(Data(26.817309703482323,112.58415777616139,26.470805435256466 ,5.290117)) + mutableListOf.add(Data(26.817309703482323,112.58415777616139,26.470805435256466 ,5.290117)) + mutableListOf.add(Data(26.8173539472737,112.5841781084828,19.413027531909677 ,5.2572174)) + mutableListOf.add(Data(26.8173539472737,112.5841781084828,19.413027531909677 ,5.2572174)) + mutableListOf.add(Data(26.81739827838705,112.58419180114795,10.869089257627422 ,5.054635)) + mutableListOf.add(Data(26.81739827838705,112.58419180114795,10.869089257627422 ,5.054635)) + mutableListOf.add(Data(26.817444316263447,112.58419779782906,1.290097286332184 ,5.1018424)) + mutableListOf.add(Data(26.817444316263447,112.58419779782906,1.290097286332184 ,5.1018424)) + mutableListOf.add(Data(26.81748941065244,112.5841957020102,351.87250951531354 ,4.951452)) + mutableListOf.add(Data(26.81748941065244,112.5841957020102,351.87250951531354 ,4.951452)) + mutableListOf.add(Data(26.817532025152016,112.58418464321606,343.08161892140026 ,4.856119)) + mutableListOf.add(Data(26.817532025152016,112.58418464321606,343.08161892140026 ,4.856119)) + mutableListOf.add(Data(26.817574411658125,112.58416696887566,337.3830350025077 ,5.0693793)) + mutableListOf.add(Data(26.817574411658125,112.58416696887566,337.3830350025077 ,5.0693793)) + mutableListOf.add(Data(26.817616516674775,112.58414506934275,332.70868576098275 ,5.4740086)) + mutableListOf.add(Data(26.817616516674775,112.58414506934275,332.70868576098275 ,5.4740086)) + mutableListOf.add(Data(26.81766656685223,112.58411337464841,328.82325068935097 ,7.248267)) + mutableListOf.add(Data(26.81766656685223,112.58411337464841,328.82325068935097 ,7.248267)) + mutableListOf.add(Data(26.81772616620445,112.58407132315536,327.0345880702647 ,8.242281)) + mutableListOf.add(Data(26.81772616620445,112.58407132315536,327.0345880702647 ,8.242281)) + mutableListOf.add(Data(26.81779051965125,112.58402390325215,326.6785986107236 ,8.845384)) + mutableListOf.add(Data(26.81779051965125,112.58402390325215,326.6785986107236 ,8.845384)) + mutableListOf.add(Data(26.817859422781524,112.58397291899796,326.7608614090873 ,9.471843)) + mutableListOf.add(Data(26.817859422781524,112.58397291899796,326.7608614090873 ,9.471843)) + mutableListOf.add(Data(26.81793317211832,112.58391890295081,326.7297430672287 ,10.078002)) + mutableListOf.add(Data(26.81793317211832,112.58391890295081,326.7297430672287 ,10.078002)) + mutableListOf.add(Data(26.818011331250453,112.5838615761508,326.8077438275502 ,10.587693)) + mutableListOf.add(Data(26.818011331250453,112.5838615761508,326.8077438275502 ,10.587693)) + mutableListOf.add(Data(26.818093147121697,112.58380194228982,327.1836637790894 ,10.954674)) + mutableListOf.add(Data(26.818093147121697,112.58380194228982,327.1836637790894 ,10.954674)) + mutableListOf.add(Data(26.818176204557567,112.58374205539742,327.38030492529407 ,10.941433)) + mutableListOf.add(Data(26.818176204557567,112.58374205539742,327.38030492529407 ,10.941433)) + mutableListOf.add(Data(26.81825883397749,112.58368252714435,327.3766985854123 ,10.857093)) + mutableListOf.add(Data(26.81825883397749,112.58368252714435,327.3766985854123 ,10.857093)) + mutableListOf.add(Data(26.81834151434389,112.58362366928625,327.43886696723774 ,10.841235)) + mutableListOf.add(Data(26.81834151434389,112.58362366928625,327.43886696723774 ,10.841235)) + mutableListOf.add(Data(26.81842401797818,112.58356478174697,327.7210084214726 ,10.823341)) + mutableListOf.add(Data(26.81842401797818,112.58356478174697,327.7210084214726 ,10.823341)) + mutableListOf.add(Data(26.81850681918393,112.58350666007705,328.004174404083 ,10.829654)) + mutableListOf.add(Data(26.81850681918393,112.58350666007705,328.004174404083 ,10.829654)) + mutableListOf.add(Data(26.8185898344893,112.58344838988543,327.71930087418013 ,10.8667)) + mutableListOf.add(Data(26.8185898344893,112.58344838988543,327.71930087418013 ,10.8667)) + mutableListOf.add(Data(26.818672593565683,112.58339009877655,328.01237063108704 ,10.824985)) + mutableListOf.add(Data(26.818672593565683,112.58339009877655,328.01237063108704 ,10.824985)) + mutableListOf.add(Data(26.818754990090127,112.58333306728635,328.4332332273649 ,10.844356)) + mutableListOf.add(Data(26.818754990090127,112.58333306728635,328.4332332273649 ,10.844356)) + mutableListOf.add(Data(26.818839320542985,112.5832751250177,328.3993418287033 ,10.843772)) + mutableListOf.add(Data(26.818839320542985,112.5832751250177,328.3993418287033 ,10.843772)) + mutableListOf.add(Data(26.818922809041855,112.58321765401757,328.4574394177834 ,10.858223)) + mutableListOf.add(Data(26.818922809041855,112.58321765401757,328.4574394177834 ,10.858223)) + mutableListOf.add(Data(26.819006465861534,112.5831607927747,328.98921062580393 ,10.842939)) + mutableListOf.add(Data(26.819006465861534,112.5831607927747,328.98921062580393 ,10.842939)) + mutableListOf.add(Data(26.81909075060507,112.5831046560205,329.1766036958724 ,10.863632)) + mutableListOf.add(Data(26.81909075060507,112.5831046560205,329.1766036958724 ,10.863632)) + mutableListOf.add(Data(26.819174866875375,112.58304877028208,328.96620654867934 ,10.821545)) + mutableListOf.add(Data(26.819174866875375,112.58304877028208,328.96620654867934 ,10.821545)) + mutableListOf.add(Data(26.819258542148233,112.58299212297055,328.94003326377987 ,10.827973)) + mutableListOf.add(Data(26.819258542148233,112.58299212297055,328.94003326377987 ,10.827973)) + mutableListOf.add(Data(26.81934275109521,112.5829359856361,329.7044680356877 ,10.862666)) + mutableListOf.add(Data(26.81934275109521,112.5829359856361,329.7044680356877 ,10.862666)) + mutableListOf.add(Data(26.819427513346156,112.58288107998513,329.94292359999116 ,10.841335)) + mutableListOf.add(Data(26.819427513346156,112.58288107998513,329.94292359999116 ,10.841335)) + mutableListOf.add(Data(26.819512958196423,112.58282775043037,332.0790516025343 ,10.830255)) + mutableListOf.add(Data(26.819512958196423,112.58282775043037,332.0790516025343 ,10.830255)) + mutableListOf.add(Data(26.819600500579643,112.58277846653539,333.6954431903745 ,10.856668)) + mutableListOf.add(Data(26.819600500579643,112.58277846653539,333.6954431903745 ,10.856668)) + mutableListOf.add(Data(26.819688638518134,112.5827299064952,333.5301526124602 ,10.898559)) + mutableListOf.add(Data(26.819688638518134,112.5827299064952,333.5301526124602 ,10.898559)) + mutableListOf.add(Data(26.81977658685566,112.58268010365491,332.9125532473293 ,10.915252)) + mutableListOf.add(Data(26.81977658685566,112.58268010365491,332.9125532473293 ,10.915252)) + mutableListOf.add(Data(26.819864103260052,112.58263021476887,333.12991718747577 ,10.862293)) + mutableListOf.add(Data(26.819864103260052,112.58263021476887,333.12991718747577 ,10.862293)) + mutableListOf.add(Data(26.819952185172603,112.58258048416751,332.5388326167029 ,10.938454)) + mutableListOf.add(Data(26.819952185172603,112.58258048416751,332.5388326167029 ,10.938454)) + mutableListOf.add(Data(26.82003906202077,112.58252887677297,331.2750700353321 ,10.86753)) + mutableListOf.add(Data(26.82003906202077,112.58252887677297,331.2750700353321 ,10.86753)) + mutableListOf.add(Data(26.82012530838014,112.58247555120677,331.0627194540364 ,10.9164505)) + mutableListOf.add(Data(26.82012530838014,112.58247555120677,331.0627194540364 ,10.9164505)) + mutableListOf.add(Data(26.82021139090915,112.58242212128593,331.2748378089003 ,10.884517)) + mutableListOf.add(Data(26.82021139090915,112.58242212128593,331.2748378089003 ,10.884517)) + mutableListOf.add(Data(26.820298208800885,112.58236931876395,331.2973910935397 ,10.954199)) + mutableListOf.add(Data(26.820298208800885,112.58236931876395,331.2973910935397 ,10.954199)) + mutableListOf.add(Data(26.820384970888565,112.58231658502292,331.0287870742398 ,10.913742)) + mutableListOf.add(Data(26.820384970888565,112.58231658502292,331.0287870742398 ,10.913742)) + mutableListOf.add(Data(26.820471244437208,112.58226359177391,331.06717273737524 ,10.912278)) + mutableListOf.add(Data(26.820471244437208,112.58226359177391,331.06717273737524 ,10.912278)) + mutableListOf.add(Data(26.820558007789558,112.58221052491533,331.5169816753556 ,10.94842)) + mutableListOf.add(Data(26.820558007789558,112.58221052491533,331.5169816753556 ,10.94842)) + mutableListOf.add(Data(26.820645407773025,112.58215812417345,331.71754335014384 ,10.979202)) + mutableListOf.add(Data(26.820645407773025,112.58215812417345,331.71754335014384 ,10.979202)) + mutableListOf.add(Data(26.820732568459803,112.58210589578515,331.6438729297561 ,10.946945)) + mutableListOf.add(Data(26.820732568459803,112.58210589578515,331.6438729297561 ,10.946945)) + mutableListOf.add(Data(26.820819910169977,112.58205326357,331.767485693355 ,10.988325)) + mutableListOf.add(Data(26.820819910169977,112.58205326357,331.767485693355 ,10.988325)) + mutableListOf.add(Data(26.82090739738908,112.58200156651718,332.347204829349 ,10.947101)) + mutableListOf.add(Data(26.82090739738908,112.58200156651718,332.347204829349 ,10.947101)) + mutableListOf.add(Data(26.820995056276622,112.58195061688777,332.4727163855371 ,10.950606)) + mutableListOf.add(Data(26.820995056276622,112.58195061688777,332.4727163855371 ,10.950606)) + mutableListOf.add(Data(26.821083357477672,112.58189977279349,333.5770486913015 ,11.0240345)) + mutableListOf.add(Data(26.821083357477672,112.58189977279349,333.5770486913015 ,11.0240345)) + mutableListOf.add(Data(26.821172475162726,112.58185287422074,336.05104566151766 ,11.047021)) + mutableListOf.add(Data(26.821172475162726,112.58185287422074,336.05104566151766 ,11.047021)) + mutableListOf.add(Data(26.821264484994177,112.58180877707832,336.721654124797 ,10.947278)) + mutableListOf.add(Data(26.821264484994177,112.58180877707832,336.721654124797 ,10.947278)) + mutableListOf.add(Data(26.821355586119605,112.5817640770223,336.0527258880535 ,11.0230665)) + mutableListOf.add(Data(26.821355586119605,112.5817640770223,336.0527258880535 ,11.0230665)) + mutableListOf.add(Data(26.821446396198834,112.58171813418576,335.6811840877723 ,11.044201)) + mutableListOf.add(Data(26.821446396198834,112.58171813418576,335.6811840877723 ,11.044201)) + mutableListOf.add(Data(26.821537394395577,112.58167296050368,336.12904642183923 ,11.024753)) + mutableListOf.add(Data(26.821537394395577,112.58167296050368,336.12904642183923 ,11.024753)) + mutableListOf.add(Data(26.82162819539147,112.58162746655287,335.0245706821023 ,11.01271)) + mutableListOf.add(Data(26.82162819539147,112.58162746655287,335.0245706821023 ,11.01271)) + mutableListOf.add(Data(26.821718933471065,112.58157993539679,334.1465498642972 ,11.123078)) + mutableListOf.add(Data(26.821718933471065,112.58157993539679,334.1465498642972 ,11.123078)) + mutableListOf.add(Data(26.821809477042866,112.58153187161871,333.93389875467795 ,11.069262)) + mutableListOf.add(Data(26.821809477042866,112.58153187161871,333.93389875467795 ,11.069262)) + mutableListOf.add(Data(26.82189924216394,112.5814829554966,333.64357473381745 ,11.037714)) + mutableListOf.add(Data(26.82189924216394,112.5814829554966,333.64357473381745 ,11.037714)) + mutableListOf.add(Data(26.82198886489619,112.58143265217548,333.8418414650445 ,11.124701)) + mutableListOf.add(Data(26.82198886489619,112.58143265217548,333.8418414650445 ,11.124701)) + mutableListOf.add(Data(26.82207943977267,112.58138371825058,334.74234726559735 ,11.168612)) + mutableListOf.add(Data(26.82207943977267,112.58138371825058,334.74234726559735 ,11.168612)) + mutableListOf.add(Data(26.82217079652045,112.58133629724179,334.6802745064203 ,11.136633)) + mutableListOf.add(Data(26.82217079652045,112.58133629724179,334.6802745064203 ,11.136633)) + mutableListOf.add(Data(26.82226125835418,112.58128793467625,334.04232117756277 ,11.089879)) + mutableListOf.add(Data(26.82226125835418,112.58128793467625,334.04232117756277 ,11.089879)) + mutableListOf.add(Data(26.822351660082763,112.5812387113965,334.4818438506531 ,11.136156)) + mutableListOf.add(Data(26.822351660082763,112.5812387113965,334.4818438506531 ,11.136156)) + mutableListOf.add(Data(26.822442570811926,112.581190668316,335.08963506413585 ,11.129769)) + mutableListOf.add(Data(26.822442570811926,112.581190668316,335.08963506413585 ,11.129769)) + mutableListOf.add(Data(26.822533871293896,112.58114380339613,335.2726704735138 ,11.116067)) + mutableListOf.add(Data(26.822533871293896,112.58114380339613,335.2726704735138 ,11.116067)) + mutableListOf.add(Data(26.822625356286988,112.5810963629318,334.7990514960868 ,11.171506)) + mutableListOf.add(Data(26.822625356286988,112.5810963629318,334.7990514960868 ,11.171506)) + mutableListOf.add(Data(26.822717040623075,112.58104834264921,335.2455546225089 ,11.233819)) + mutableListOf.add(Data(26.822717040623075,112.58104834264921,335.2455546225089 ,11.233819)) + mutableListOf.add(Data(26.822809222350063,112.58100143507674,335.7449848848094 ,11.209728)) + mutableListOf.add(Data(26.822809222350063,112.58100143507674,335.7449848848094 ,11.209728)) + mutableListOf.add(Data(26.822901437574036,112.5809551957787,335.54689573850067 ,11.171629)) + mutableListOf.add(Data(26.822901437574036,112.5809551957787,335.54689573850067 ,11.171629)) + mutableListOf.add(Data(26.822993570002573,112.58090876870207,335.8036083984556 ,11.158639)) + mutableListOf.add(Data(26.822993570002573,112.58090876870207,335.8036083984556 ,11.158639)) + mutableListOf.add(Data(26.823085804697456,112.5808628704648,336.06588083239495 ,11.160056)) + mutableListOf.add(Data(26.823085804697456,112.5808628704648,336.06588083239495 ,11.160056)) + mutableListOf.add(Data(26.8231782941641,112.5808170301043,336.1425838567742 ,11.196213)) + mutableListOf.add(Data(26.8231782941641,112.5808170301043,336.1425838567742 ,11.196213)) + mutableListOf.add(Data(26.82327070139615,112.58077156018408,336.3930127426927 ,11.158848)) + mutableListOf.add(Data(26.82327070139615,112.58077156018408,336.3930127426927 ,11.158848)) + mutableListOf.add(Data(26.82336315989599,112.58072645624978,336.4708632388525 ,11.134174)) + mutableListOf.add(Data(26.82336315989599,112.58072645624978,336.4708632388525 ,11.134174)) + mutableListOf.add(Data(26.82345461520168,112.58068198624507,336.6187095136266 ,10.997278)) + mutableListOf.add(Data(26.82345461520168,112.58068198624507,336.6187095136266 ,10.997278)) + mutableListOf.add(Data(26.82354701100081,112.58063771053577,337.4698740276152 ,11.121712)) + mutableListOf.add(Data(26.82354701100081,112.58063771053577,337.4698740276152 ,11.121712)) + mutableListOf.add(Data(26.823638365508067,112.58059644124914,338.7054689088489 ,10.727212)) + mutableListOf.add(Data(26.823638365508067,112.58059644124914,338.7054689088489 ,10.727212)) + mutableListOf.add(Data(26.823727664550493,112.58055870143195,339.8902335222793 ,10.347593)) + mutableListOf.add(Data(26.823727664550493,112.58055870143195,339.8902335222793 ,10.347593)) + mutableListOf.add(Data(26.823812318470793,112.58052555925428,340.5650493820874 ,9.4535055)) + mutableListOf.add(Data(26.823812318470793,112.58052555925428,340.5650493820874 ,9.4535055)) + mutableListOf.add(Data(26.823887553495833,112.58049561807807,339.6516276938141 ,8.247951)) + mutableListOf.add(Data(26.823887553495833,112.58049561807807,339.6516276938141 ,8.247951)) + mutableListOf.add(Data(26.82395168024204,112.58046870159896,340.5628364007963 ,6.9784737)) + mutableListOf.add(Data(26.82395168024204,112.58046870159896,340.5628364007963 ,6.9784737)) + mutableListOf.add(Data(26.82400846212442,112.58045082651485,351.1414880288254 ,6.062161)) + mutableListOf.add(Data(26.82400846212442,112.58045082651485,351.1414880288254 ,6.062161)) + mutableListOf.add(Data(26.824060398302887,112.58044942761538,6.345352517490426 ,5.5890617)) + mutableListOf.add(Data(26.824060398302887,112.58044942761538,6.345352517490426 ,5.5890617)) + mutableListOf.add(Data(26.82410717835299,112.58045986670147,15.169950094957699 ,5.0569997)) + mutableListOf.add(Data(26.82410717835299,112.58045986670147,15.169950094957699 ,5.0569997)) + mutableListOf.add(Data(26.824153274522928,112.58047698923471,22.21982546943474 ,5.927354)) + mutableListOf.add(Data(26.824153274522928,112.58047698923471,22.21982546943474 ,5.927354)) + mutableListOf.add(Data(26.82420820422086,112.58050675346034,28.072225248435984 ,7.5890827)) + mutableListOf.add(Data(26.82420820422086,112.58050675346034,28.072225248435984 ,7.5890827)) + mutableListOf.add(Data(26.824271397494158,112.58054781114281,33.366052157113586 ,8.47322)) + mutableListOf.add(Data(26.824271397494158,112.58054781114281,33.366052157113586 ,8.47322)) + mutableListOf.add(Data(26.824335395451552,112.58059964957953,39.51156267415672 ,8.985364)) + mutableListOf.add(Data(26.824335395451552,112.58059964957953,39.51156267415672 ,8.985364)) + mutableListOf.add(Data(26.824395490943697,112.58066019726031,45.24210163308118 ,9.010218)) + mutableListOf.add(Data(26.824395490943697,112.58066019726031,45.24210163308118 ,9.010218)) + mutableListOf.add(Data(26.824450500955546,112.5807291061281,51.63071224306344 ,9.249808)) + mutableListOf.add(Data(26.824450500955546,112.5807291061281,51.63071224306344 ,9.249808)) + mutableListOf.add(Data(26.82449811991814,112.58080421285314,58.4833590750672 ,9.367973)) + mutableListOf.add(Data(26.82449811991814,112.58080421285314,58.4833590750672 ,9.367973)) + mutableListOf.add(Data(26.824538848426627,112.58088982957428,65.9710803111933 ,9.695224)) + mutableListOf.add(Data(26.824538848426627,112.58088982957428,65.9710803111933 ,9.695224)) + mutableListOf.add(Data(26.8245709793362,112.58098361641142,72.2269171663524 ,10.104207)) + mutableListOf.add(Data(26.8245709793362,112.58098361641142,72.2269171663524 ,10.104207)) + mutableListOf.add(Data(26.82459393783725,112.5810786789352,76.83474207290874 ,9.46164)) + mutableListOf.add(Data(26.82459393783725,112.5810786789352,76.83474207290874 ,9.46164)) + mutableListOf.add(Data(26.82461098240031,112.58116886149608,78.96607186755995 ,8.802579)) + mutableListOf.add(Data(26.82461098240031,112.58116886149608,78.96607186755995 ,8.802579)) + mutableListOf.add(Data(26.824624897258907,112.58125259016583,79.77531524174401 ,8.213966)) + mutableListOf.add(Data(26.824624897258907,112.58125259016583,79.77531524174401 ,8.213966)) + mutableListOf.add(Data(26.824637602560202,112.58133367965361,80.0445023884443 ,8.11556)) + mutableListOf.add(Data(26.824637602560202,112.58133367965361,80.0445023884443 ,8.11556)) + mutableListOf.add(Data(26.824650401766355,112.58141466975431,80.0775895323311 ,8.164914)) + mutableListOf.add(Data(26.824650401766355,112.58141466975431,80.0775895323311 ,8.164914)) + mutableListOf.add(Data(26.824664299167868,112.58149569608165,78.12252130694856 ,8.347733)) + mutableListOf.add(Data(26.824664299167868,112.58149569608165,78.12252130694856 ,8.347733)) + mutableListOf.add(Data(26.824680465602725,112.58158016934632,77.63346354067636 ,8.871422)) + mutableListOf.add(Data(26.824680465602725,112.58158016934632,77.63346354067636 ,8.871422)) + mutableListOf.add(Data(26.824698071237794,112.5816714712686,77.57790507442019 ,9.538839)) + mutableListOf.add(Data(26.824698071237794,112.5816714712686,77.57790507442019 ,9.538839)) + mutableListOf.add(Data(26.824716810952108,112.58176774318086,77.44957350387847 ,10.009091)) + mutableListOf.add(Data(26.824716810952108,112.58176774318086,77.44957350387847 ,10.009091)) + mutableListOf.add(Data(26.824736346219844,112.58186742933266,77.70056588040353 ,10.273892)) + mutableListOf.add(Data(26.824736346219844,112.58186742933266,77.70056588040353 ,10.273892)) + mutableListOf.add(Data(26.82475624119252,112.58196927550934,77.2926738133595 ,10.368853)) + mutableListOf.add(Data(26.82475624119252,112.58196927550934,77.2926738133595 ,10.368853)) + mutableListOf.add(Data(26.824776321201686,112.58207074730377,77.99243352401652 ,10.352851)) + mutableListOf.add(Data(26.824776321201686,112.58207074730377,77.99243352401652 ,10.352851)) + mutableListOf.add(Data(26.824795173856856,112.58217470637561,79.23096197149869 ,10.704494)) + mutableListOf.add(Data(26.824795173856856,112.58217470637561,79.23096197149869 ,10.704494)) + mutableListOf.add(Data(26.824813008893262,112.58228182337149,79.66565313952486 ,10.874358)) + mutableListOf.add(Data(26.824813008893262,112.58228182337149,79.66565313952486 ,10.874358)) + mutableListOf.add(Data(26.824830937998897,112.5823899189086,79.68082128212416 ,10.942389)) + mutableListOf.add(Data(26.824830937998897,112.5823899189086,79.68082128212416 ,10.942389)) + mutableListOf.add(Data(26.824848069663854,112.58249889778686,80.14145692371261 ,10.985577)) + mutableListOf.add(Data(26.824848069663854,112.58249889778686,80.14145692371261 ,10.985577)) + mutableListOf.add(Data(26.824864747770675,112.58260734311246,80.0448934167743 ,10.931011)) + mutableListOf.add(Data(26.824864747770675,112.58260734311246,80.0448934167743 ,10.931011)) + mutableListOf.add(Data(26.824882072902202,112.58271533362611,79.72259813418253 ,10.872131)) + mutableListOf.add(Data(26.824882072902202,112.58271533362611,79.72259813418253 ,10.872131)) + mutableListOf.add(Data(26.824898658212664,112.58282301050227,80.15790572678134 ,10.803015)) + mutableListOf.add(Data(26.824898658212664,112.58282301050227,80.15790572678134 ,10.803015)) + mutableListOf.add(Data(26.824915330378445,112.58293057308566,79.8746065554821 ,10.830168)) + mutableListOf.add(Data(26.824915330378445,112.58293057308566,79.8746065554821 ,10.830168)) + mutableListOf.add(Data(26.824932651505765,112.58303827378298,79.61621110767044 ,10.868644)) + mutableListOf.add(Data(26.824932651505765,112.58303827378298,79.61621110767044 ,10.868644)) + mutableListOf.add(Data(26.82494998141344,112.58314556269549,80.13490250343034 ,10.779586)) + mutableListOf.add(Data(26.82494998141344,112.58314556269549,80.13490250343034 ,10.779586)) + mutableListOf.add(Data(26.82496632888347,112.58325114989803,80.10408298234796 ,10.57883)) + mutableListOf.add(Data(26.82496632888347,112.58325114989803,80.10408298234796 ,10.57883)) + mutableListOf.add(Data(26.824982616660503,112.5833574520516,80.0832449289639 ,10.798956)) + mutableListOf.add(Data(26.824982616660503,112.5833574520516,80.0832449289639 ,10.798956)) + mutableListOf.add(Data(26.825000029272786,112.58346564536672,79.64116349625579 ,11.000219)) + mutableListOf.add(Data(26.825000029272786,112.58346564536672,79.64116349625579 ,11.000219)) + mutableListOf.add(Data(26.82501782306914,112.58357367268343,80.0479729783163 ,10.887358)) + mutableListOf.add(Data(26.82501782306914,112.58357367268343,80.0479729783163 ,10.887358)) + mutableListOf.add(Data(26.825034644140306,112.5836819669284,80.39041646518592 ,10.887838)) + mutableListOf.add(Data(26.825034644140306,112.5836819669284,80.39041646518592 ,10.887838)) + mutableListOf.add(Data(26.825050825910466,112.58379012234309,79.99435343201077 ,10.847428)) + mutableListOf.add(Data(26.825050825910466,112.58379012234309,79.99435343201077 ,10.847428)) + mutableListOf.add(Data(26.82506848640962,112.58389620345477,79.68656034857423 ,10.79047)) + mutableListOf.add(Data(26.82508624503321,112.58400483164121,80.33252805064916 ,10.902022)) + mutableListOf.add(Data(26.825102551245067,112.5841132971028,80.34150291921856 ,10.943128)) + mutableListOf.add(Data(26.825119995319334,112.58422127548491,79.928671771631 ,10.812377)) + mutableListOf.add(Data(26.825136584562436,112.58432887362649,80.3882692244656 ,10.840047)) + mutableListOf.add(Data(26.825152339750225,112.58443770296758,80.06505101256226 ,10.956093)) + mutableListOf.add(Data(26.82516950026469,112.58454632285358,79.41718024902991 ,10.955121)) + mutableListOf.add(Data(26.825187322302735,112.58465452397829,79.75200465988036 ,10.914424)) + mutableListOf.add(Data(26.82520508970052,112.58476268654412,80.23870430334165 ,10.900922)) + mutableListOf.add(Data(26.82522160867826,112.5848709467686,80.44165825188668 ,10.936707)) + mutableListOf.add(Data(26.825238429747245,112.5849796588726,79.97719514304202 ,10.95725)) + mutableListOf.add(Data(26.82525602953279,112.58508773702944,80.00920140949273 ,10.904101)) + mutableListOf.add(Data(26.82527317500041,112.58519603083177,80.24089764783884 ,10.8971195)) + mutableListOf.add(Data(26.825290036476883,112.58530443946485,80.20050390908739 ,10.926449)) + mutableListOf.add(Data(26.82530659361771,112.58541239287453,80.04904787933697 ,10.85935)) + mutableListOf.add(Data(26.82532336881114,112.5855199067927,80.04164736937122 ,10.782148)) + mutableListOf.add(Data(26.825340290024027,112.58562428673645,79.76805645820355 ,10.10985)) + mutableListOf.add(Data(26.82535567687754,112.58571917203813,80.07238578195722 ,9.093919)) + mutableListOf.add(Data(26.82536901649892,112.58580534392024,80.083560825213 ,8.268731)) + mutableListOf.add(Data(26.825381954739342,112.58588575869024,79.89287389641731 ,8.168556)) + mutableListOf.add(Data(26.825394786288715,112.58596894528253,80.33394019226006 ,8.655088)) + mutableListOf.add(Data(26.82540806483152,112.5860544640404,79.8452282043146 ,8.341439)) + mutableListOf.add(Data(26.825421391715953,112.58613679909993,79.92148641262412 ,8.457919)) + mutableListOf.add(Data(26.82543495743159,112.5862224944188,80.25262935151198 ,8.937425)) + mutableListOf.add(Data(26.82544887111177,112.58631295507655,80.08629375465466 ,9.368444)) + mutableListOf.add(Data(26.82546366378044,112.58640477758786,79.78908661065805 ,9.034008)) + mutableListOf.add(Data(26.82547791361014,112.58649216206204,80.10327445870496 ,8.63131)) + mutableListOf.add(Data(26.825491576317813,112.58658089699335,80.45077996952324 ,9.251799)) + mutableListOf.add(Data(26.825506335597126,112.58667589584078,80.12832503125964 ,9.939442)) + mutableListOf.add(Data(26.82552223441907,112.58677732670597,80.41312599040259 ,10.415545)) + mutableListOf.add(Data(26.825538277383547,112.58688045012173,80.3277366729464 ,10.310362)) + mutableListOf.add(Data(26.825554208115665,112.5869811637487,80.0571194553886 ,9.979941)) + mutableListOf.add(Data(26.82556927129904,112.58707547979726,80.22023034918402 ,9.056645)) + mutableListOf.add(Data(26.825582903082594,112.5871616534857,80.40227623490603 ,8.297718)) + mutableListOf.add(Data(26.825595447076772,112.58724267783181,80.58279642712216 ,8.240325)) + mutableListOf.add(Data(26.825607062333198,112.58732773893132,82.92822447772295 ,8.885467)) + mutableListOf.add(Data(26.8256163967207,112.58742007652688,83.91451403915653 ,9.53883)) + mutableListOf.add(Data(26.825625805673585,112.58751790162299,83.49849276633978 ,9.8336315)) + mutableListOf.add(Data(26.82563596715511,112.58761468270157,83.35401718992108 ,9.501984)) + mutableListOf.add(Data(26.825646863924856,112.5877102491863,82.55524663016877 ,9.71343)) + mutableListOf.add(Data(26.825659541247234,112.58780732835037,81.94595789771051 ,9.71838)) + mutableListOf.add(Data(26.825672293111914,112.5879045928294,81.89237762499266 ,9.677105)) + mutableListOf.add(Data(26.825685337681932,112.58799809299924,80.8824043826121 ,9.080445)) + mutableListOf.add(Data(26.82569847648075,112.58808400269606,79.89877603363385 ,8.160078)) + mutableListOf.add(Data(26.825711805743254,112.58816030310517,79.63162684462714 ,7.2267)) + mutableListOf.add(Data(26.82572189552541,112.58822581838183,83.05601176756522 ,5.997647)) + mutableListOf.add(Data(26.82572447823082,112.5882790961332,92.82558460020824 ,4.5657516)) + mutableListOf.add(Data(26.825718263255567,112.58831958891977,105.99306916896894 ,3.6916084)) + mutableListOf.add(Data(26.825705384757367,112.58835137594669,117.39571481846839 ,3.4976408)) + mutableListOf.add(Data(26.82568773592112,112.58838171407714,126.8308015341406 ,3.7412977)) + mutableListOf.add(Data(26.825664209114287,112.58841049240998,136.7715408144472 ,3.8619535)) + mutableListOf.add(Data(26.825635321161386,112.58843565279595,146.28077606374907 ,4.1901913)) + mutableListOf.add(Data(26.82560115459976,112.5884567796701,156.0422092179645 ,4.372593)) + mutableListOf.add(Data(26.8255626836711,112.58847136977255,166.78803655611884 ,4.56643)) + mutableListOf.add(Data(26.82552087332516,112.58847674422513,178.44471060122942 ,5.053988)) + mutableListOf.add(Data(26.825468360723992,112.58847264490073,185.2122805969315 ,6.715906)) + mutableListOf.add(Data(26.825401186671062,112.58846318500233,186.65640115352562 ,8.006904)) + mutableListOf.add(Data(26.82532605586703,112.58845198261439,187.28742867056476 ,8.70072)) + mutableListOf.add(Data(26.8252457471272,112.58843933355529,188.2250770398241 ,9.278515)) + mutableListOf.add(Data(26.82516033433597,112.58842418755573,188.72999194402811 ,9.884587)) + mutableListOf.add(Data(26.825068937761582,112.58840750767082,188.55380038419847 ,10.508339)) + mutableListOf.add(Data(26.824972867801122,112.58839022105084,189.05396147674017 ,10.945375)) + mutableListOf.add(Data(26.824875043536103,112.58837048811633,190.37926406253277 ,11.015351)) + mutableListOf.add(Data(26.82477736812146,112.58834859022588,190.74765714560658 ,10.961484)) + mutableListOf.add(Data(26.82468029797548,112.58832657515805,190.7464003907993 ,10.924771)) + mutableListOf.add(Data(26.824583225389507,112.58830488028168,191.0691678102174 ,10.944002)) + mutableListOf.add(Data(26.824486236537098,112.58828204069819,191.41682443897108 ,10.972908)) + mutableListOf.add(Data(26.82438935491626,112.58825925251047,191.13828932461794 ,10.922421)) + mutableListOf.add(Data(26.824292058061655,112.58823714439076,190.51417395901885 ,10.983685)) + mutableListOf.add(Data(26.824194978703208,112.58821677322887,189.4132567478395 ,10.865106)) + mutableListOf.add(Data(26.824097661934157,112.58819829218662,188.33140942482285 ,10.886163)) + mutableListOf.add(Data(26.82399966406215,112.5881817191164,186.76314334987458 ,10.996041)) + mutableListOf.add(Data(26.82390099423371,112.58816868906779,184.95688616348636 ,10.964688)) + mutableListOf.add(Data(26.823802803259678,112.58815906442507,183.5099242481975 ,10.888597)) + mutableListOf.add(Data(26.823703886909744,112.58815186387652,182.20369155056758 ,10.969546)) + mutableListOf.add(Data(26.823604841012653,112.58814776818956,180.27973654440171 ,10.942759)) + mutableListOf.add(Data(26.823506182087286,112.58814756502561,178.41990335416392 ,10.901522)) + mutableListOf.add(Data(26.8234077732812,112.58815050565116,177.07771654074304 ,10.863581)) + mutableListOf.add(Data(26.823309027975455,112.58815577451051,175.84363796150515 ,10.914522)) + mutableListOf.add(Data(26.823210579428864,112.58816315720807,174.83184105861613 ,10.904749)) + mutableListOf.add(Data(26.82311176082705,112.58817200770986,174.3510777033173 ,10.960163)) + mutableListOf.add(Data(26.8230130510353,112.58818159990454,174.25116569613834 ,10.949297)) + mutableListOf.add(Data(26.8229147108448,112.58819100914526,174.4300620108793 ,10.86557)) + mutableListOf.add(Data(26.822815982451136,112.58819998942029,174.38741430970174 ,10.961633)) + mutableListOf.add(Data(26.822717658398695,112.58820959147286,173.98943284714346 ,10.884146)) + mutableListOf.add(Data(26.822619025345805,112.58821937006674,174.21477444824052 ,10.94364)) + mutableListOf.add(Data(26.822520398766574,112.58822881737137,174.50188828019117 ,10.928565)) + mutableListOf.add(Data(26.82242135045806,112.58823800170606,174.39203151758068 ,11.003972)) + mutableListOf.add(Data(26.82232288454279,112.58824734785314,174.21564871245428 ,10.937689)) + mutableListOf.add(Data(26.82222440307578,112.58825691597944,174.16925806761154 ,10.9371195)) + mutableListOf.add(Data(26.822125599059973,112.58826617121782,174.505658544613 ,10.904333)) + mutableListOf.add(Data(26.822027680356275,112.58827501278103,174.41369687762796 ,10.894905)) + mutableListOf.add(Data(26.82192881779245,112.58828425392758,174.03677971846997 ,10.942385)) + mutableListOf.add(Data(26.821829987245398,112.58829436532618,174.09423526976812 ,10.993935)) + mutableListOf.add(Data(26.821731474322508,112.58830369366189,174.458011144963 ,10.912243)) + mutableListOf.add(Data(26.82163298773937,112.58831277133513,174.29083543483776 ,10.906608)) + mutableListOf.add(Data(26.821534477288782,112.58832251669477,174.07890832527062 ,10.930833)) + mutableListOf.add(Data(26.82143603055604,112.58833213847254,174.3435371744736 ,10.910077)) + mutableListOf.add(Data(26.821337437902788,112.58834046715273,175.3574104548703 ,10.923147)) + mutableListOf.add(Data(26.82123870294786,112.5883459066746,177.2432256847108 ,10.943883)) + mutableListOf.add(Data(26.821139617348642,112.58834848729124,177.67729786684345 ,10.97326)) + mutableListOf.add(Data(26.82104042684288,112.5883516739536,176.89996769778264 ,10.979047)) + mutableListOf.add(Data(26.820941492509043,112.58835610568427,177.2468047038359 ,10.953704)) + mutableListOf.add(Data(26.820842365150224,112.58835964324697,176.68708436173168 ,10.956896)) + mutableListOf.add(Data(26.82074348179931,112.58836548765069,175.08942115259566 ,10.924478)) + mutableListOf.add(Data(26.820644894992096,112.5883738706066,174.5613928882403 ,10.922756)) + mutableListOf.add(Data(26.82054592431787,112.58838272264623,174.56396103936825 ,10.973723)) + mutableListOf.add(Data(26.82044709968575,112.58839144578067,174.37763347881028 ,10.921038)) + mutableListOf.add(Data(26.820350203145193,112.58840097729004,173.61869017899517 ,10.51492)) + mutableListOf.add(Data(26.820258686700708,112.58841127187114,173.23824864222544 ,9.750838)) + mutableListOf.add(Data(26.82017508368214,112.58842030622239,174.08024704234793 ,8.816113)) + mutableListOf.add(Data(26.820100223700994,112.58842630948175,176.73598851618897 ,7.82164)) + mutableListOf.add(Data(26.820033299572902,112.58842614363626,183.5862311216049 ,6.977247)) + mutableListOf.add(Data(26.81997327271163,112.58841548604096,193.57521885820844 ,6.478256)) + mutableListOf.add(Data(26.81991927150576,112.58839498736432,202.85463190231775 ,6.3534274)) + mutableListOf.add(Data(26.819867127007132,112.58836446736944,210.9787321086977 ,6.6902227)) + mutableListOf.add(Data(26.81981675325887,112.58832481437109,218.38637279190002 ,6.9047847)) + mutableListOf.add(Data(26.819771552548968,112.58827786859652,226.603035721912 ,6.7886267)) + mutableListOf.add(Data(26.81973314144824,112.58822495699303,232.99868825692852 ,6.7599373)) + mutableListOf.add(Data(26.819698452510536,112.58816757745821,237.22470388133385 ,7.2045116)) + mutableListOf.add(Data(26.819663217361732,112.5881007591936,240.00845676059924 ,8.158858)) + mutableListOf.add(Data(26.819626000292175,112.58802453540116,240.8784999174538 ,8.999233)) + mutableListOf.add(Data(26.819586534576935,112.58794197732135,240.76522806025832 ,9.600716)) + mutableListOf.add(Data(26.819543977857247,112.58785492336641,240.00827917568083 ,10.142109)) + mutableListOf.add(Data(26.819497317310454,112.58776324429233,239.45918660792518 ,10.695647)) + mutableListOf.add(Data(26.819448768856812,112.587668386066,239.3843823761352 ,10.932611)) + mutableListOf.add(Data(26.81939918638018,112.58757314768673,238.63705039790906 ,10.928658)) + mutableListOf.add(Data(26.819348833837722,112.58747899858194,238.34806509412584 ,10.828743)) + mutableListOf.add(Data(26.819298543965182,112.58738510707593,238.20517753668918 ,10.846967)) + mutableListOf.add(Data(26.819247448176384,112.58729177541909,237.1934625960702 ,10.858182)) + mutableListOf.add(Data(26.819194632031977,112.5871997947454,236.50368179179063 ,10.823321)) + mutableListOf.add(Data(26.81914190798688,112.58710814764821,236.76342022554786 ,10.759948)) + mutableListOf.add(Data(26.81908940434915,112.58701628899507,236.13558923704028 ,10.808216)) + mutableListOf.add(Data(26.819035575518786,112.58692584568828,235.18217679117654 ,10.71068)) + mutableListOf.add(Data(26.81898073231781,112.5868359376484,235.13092305164477 ,10.8211355)) + mutableListOf.add(Data(26.81892555318869,112.58674535807322,235.32996842443728 ,10.85881)) + mutableListOf.add(Data(26.81887105463057,112.58665496701065,235.21492071805758 ,10.777623)) + mutableListOf.add(Data(26.818815922622132,112.58656520621176,234.90702945065175 ,10.759572)) + mutableListOf.add(Data(26.818760790349998,112.58647523807899,235.211041170609 ,10.825326)) + mutableListOf.add(Data(26.818706084816025,112.5863853958238,235.1533533928791 ,10.755462)) + mutableListOf.add(Data(26.818651422997945,112.58629555556442,235.04497195112933 ,10.756754)) + mutableListOf.add(Data(26.818596768469828,112.58620567612797,235.18598803673342 ,10.776001)) + mutableListOf.add(Data(26.818542351463606,112.58611652045523,234.8494782767052 ,10.687228)) + mutableListOf.add(Data(26.818487635742752,112.58602741332314,234.98692900356255 ,10.736459)) + mutableListOf.add(Data(26.818433311586134,112.5859383346022,235.22746094537374 ,10.653758)) + mutableListOf.add(Data(26.818378710306522,112.58584926454115,235.01718674158573 ,10.708648)) + mutableListOf.add(Data(26.81832410447011,112.58575969356657,235.37343574831525 ,10.767325)) + mutableListOf.add(Data(26.818270113201255,112.5856699225492,235.18238169685165 ,10.741438)) + mutableListOf.add(Data(26.818215754477475,112.5855806078428,234.962640850874 ,10.717836)) + mutableListOf.add(Data(26.81816119807655,112.58549201301568,235.00922274101347 ,10.64606)) + mutableListOf.add(Data(26.818106882589856,112.58540284786379,235.37503401258104 ,10.699273)) + mutableListOf.add(Data(26.818052845270795,112.58531349223125,235.15450086465967 ,10.689224)) + mutableListOf.add(Data(26.81799849537033,112.58522428835666,235.13877776919028 ,10.715375 )) + mutableListOf.add(Data(26.817944471910003,112.58513476623239,235.33824661371133 ,10.698519)) + mutableListOf.add(Data(26.817890134992844,112.58504554973807,234.86815201389604 ,10.693531)) + mutableListOf.add(Data(26.817835319728093,112.58495664165265,235.02019202482052 ,10.712638)) + mutableListOf.add(Data(26.817780786837695,112.58486759996185,234.98798085269473 ,10.703126)) + mutableListOf.add(Data(26.817726344560015,112.58477895119715,234.72041502214867 ,10.559478)) + mutableListOf.add(Data(26.817672896045035,112.58469285935371,234.80909819833212 ,10.268126)) + mutableListOf.add(Data(26.81762034092348,112.5846076693991,235.4481989989702 ,10.194944)) + mutableListOf.add(Data(26.81757000080714,112.58452312548724,236.82009713528063 ,9.998541)) + mutableListOf.add(Data(26.81752307710616,112.58443938857062,238.62282994405712 ,9.646217)) + mutableListOf.add(Data(26.81747927640272,112.5843556948273,239.96605494623182 ,9.61409)) + mutableListOf.add(Data(26.817437035117667,112.5842705975036,241.02851819238398 ,9.784999)) + mutableListOf.add(Data(26.817394588032748,112.58418206729552,241.47888720587628 ,10.220616)) + mutableListOf.add(Data(26.81734916434496,112.58408728482055,240.92852422293498 ,10.946569)) + mutableListOf.add(Data(26.817300427653745,112.58398997361219,239.22969225181274 ,11.08842)) + mutableListOf.add(Data(26.81724905918242,112.58389508879584,237.37255015610793 ,10.959397)) + mutableListOf.add(Data(26.817195687670125,112.58380236411111,236.10377421588638 ,10.868602)) + mutableListOf.add(Data(26.817141281661353,112.58371061366645,235.69349841282204 ,10.867909)) + mutableListOf.add(Data(26.81708765945191,112.58361944929223,236.51455545294928 ,10.751019)) + mutableListOf.add(Data(26.817037237801387,112.58352946632557,238.18176364821437 ,10.172699)) + mutableListOf.add(Data(26.816991758745935,112.58344394169914,238.81318731622537 ,9.476438)) + mutableListOf.add(Data(26.81695008311907,112.58336549123571,238.35449913232398 ,8.670373)) + mutableListOf.add(Data(26.816911519966908,112.58329384142816,238.00583163557317 ,7.9418206)) + mutableListOf.add(Data(26.816875769929663,112.58322842149074,237.9069304963914 ,7.250271)) + mutableListOf.add(Data(26.816842700317792,112.58316889814716,237.12501044020834 ,6.608085)) + mutableListOf.add(Data(26.816812547895015,112.58311627111057,236.47424367646786 ,5.8385525)) + mutableListOf.add(Data(26.81678497120257,112.58306956006162,235.61325735045273 ,5.1207457)) + mutableListOf.add(Data(26.816762161812772,112.58303220941076,235.7694501163926 ,3.907349)) + mutableListOf.add(Data(26.816744452403828,112.58300245495224,236.2325232817411 ,3.0969348)) + mutableListOf.add(Data(26.816731497575027,112.58298000037128,236.6114211957584 ,2.2574704 )) + mutableListOf.add(Data(26.816722462577506,112.58296434850722,236.4161051062527 ,1.5331981 )) + mutableListOf.add(Data(26.816716398581754,112.5829537450492,236.21764712972882 ,1.0040071 )) + mutableListOf.add(Data(26.816712164282283,112.5829466272515,236.12834923652008 ,0.737751 )) + mutableListOf.add(Data(26.816193817151735,112.58251966330332,54.59367562577165 ,0.018921295)) + mutableListOf.add(Data(26.816193817151735,112.58251966330332,54.59367562577165 ,0.018921295)) + mutableListOf.add(Data(26.816193817151735,112.58251966330332,54.59367562577165 ,0.018921295)) + mutableListOf.add(Data(26.81619396445322,112.58251998494924,54.613592457391405 ,0.027000831)) + mutableListOf.add(Data(26.81619407811497,112.58252024223145,54.669067253830235 ,-0.0011194336)) + mutableListOf.add(Data(26.816195171832447,112.582522095685,54.64187627074443 ,0.612925)) + mutableListOf.add(Data(26.816204331708672,112.58253646642525,53.960872259548296 ,2.6901135)) + mutableListOf.add(Data(26.816223192189753,112.58256468184578,51.595331863162755 ,4.345004)) + mutableListOf.add(Data(26.816251222259027,112.5826029300781,49.506195562109326 ,5.6220856)) + mutableListOf.add(Data(26.816287694595495,112.58265190405298,50.01768110829488 ,7.31063)) + mutableListOf.add(Data(26.816332750019175,112.58271403398732,50.59955858406664 ,8.614218)) + + mutableListOf.forEach { + val wgS84ToGCJ02 = CoordinateTransform.GCJ02ToWGS84(it.a2,it.a1) + println("{\"localTime\":1694072487989,\"class\":\"MoGoAdasListenerImpl\",\"msg\":{\"GnssInfo\":{\"longitude\": ${wgS84ToGCJ02[0]},\"latitude\": ${wgS84ToGCJ02[1]},\"altitude\": 26.97,\"heading\": ${it.heading},\"acceleration\": 0.33836419161950765,\"yawRate\": 0.00300991842921123,\"gnssSpeed\": ${it.speed},\"vehicleSpeed\": 15.375,\"satelliteTime\": 1.69407248798E9,\"systemTime\": 1.6940724879893079E9},\"traceInfo\":{\"endPoint\":true,\"linkChainLog\":1,\"linkCode\":1,\"methodName\":\"onGnssInfo\",\"nodeAliasCode\":\"CHAIN_CODE_ADAS_CAR_LOC\",\"paramIndexes\":[0,1],\"parentNodeAliasCode\":\"\",\"recordDataChange\":true,\"spanId\":null,\"traceId\":null},\"Header\":{\"msgID\": 160606,\"msgType\": \"MsgTypeGnssInfo\",\"timestamp\": 1.6940724879929435E9,\"sourceTimestamp\": 1.69407248798E9}}}") + } + } + + data class Data(val a1:Double,val a2:Double,val heading:Double,val speed:Double) } \ No newline at end of file diff --git a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml index 70e98f5895..41e0f55c3c 100644 --- a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml +++ b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml @@ -1,16 +1,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mSwitchMapModeLayout.setOnClickListener(new OnPreventFastClickListener() { @Override public void onClickImpl(View v) { - - IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController(); - if (controller != null) { - //切换地图的远近视图 - if (controller.getCurrentMapVisualAngle().isLongSight()) { - //Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(true); - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); - } else if (controller.getCurrentMapVisualAngle().isMediumSight()) { - //Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false); - controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); - } else { - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + if(mapBizView != null){ + IMogoMapUIController uiController = mapBizView.getUI(); + if(uiController != null){ + if (uiController.getCurrentMapVisualAngle().isLongSight()) { + uiController.setLockMode(true); + uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } else if (uiController.getCurrentMapVisualAngle().isMediumSight()) { + uiController.setLockMode(false); + uiController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); + } else { + uiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } } } } @@ -263,14 +261,16 @@ public abstract class BaseBusTabFragment protected abstract void onArriveStation(); private void updateSwitchMapIcon() { - IMogoMapUIController controller = CallerMapUIServiceManager.INSTANCE.getMapUIController(); - if (controller != null) { - if (controller.getCurrentMapVisualAngle().isLongSight()) { - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); - } else if (controller.getCurrentMapVisualAngle().isMediumSight()) { - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); - } else { - mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + if(mapBizView != null){ + IMogoMapUIController uiController = mapBizView.getUI(); + if(uiController != null){ + if (uiController.getCurrentMapVisualAngle().isLongSight()) { + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); + } else if (uiController.getCurrentMapVisualAngle().isMediumSight()) { + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } else { + mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + } } } } @@ -560,7 +560,9 @@ public abstract class BaseBusTabFragment @Override public void onDestroy() { super.onDestroy(); - smallMapView.onDestroy(); + if(smallMapView != null){ + smallMapView.onDestroy(); + } MogoMapListenerHandler.Companion.getMogoMapListenerHandler().unregisterHostMapListener(TAG); } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index c82b96f50c..e71e70d28c 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -1,6 +1,8 @@ package com.mogo.och.bus.fragment; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; +import static com.mogo.map.MogoMap.DEFAULT; + import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -15,9 +17,7 @@ import androidx.annotation.Nullable; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.config.FunctionBuildConfig; -import com.mogo.eagle.core.data.map.CenterLine; 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; @@ -28,7 +28,6 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.overlay.IMoGoOverlayManager; import com.mogo.map.overlay.core.Level; import com.mogo.map.overlay.point.Point; -import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.och.bus.R; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.bus.constant.BusConst; @@ -493,24 +492,13 @@ public class BusFragment extends BaseBusTabFragment .anchor(0.5f, 0.5f) .set3DMode(true) .isUseGps(true) - .controlAngle(true) + .controlAngle(false) .icon3DRes(resourceId) .latitude(lat) .longitude(longi); - IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController(); - if (mapUIController != null) { - CenterLine centerLine = mapUIController.getCenterLineInfo( - longi,lat,-1); - if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 - Double angle = centerLine.getAngle(); - if (angle != null) { - builder.rotate(angle.floatValue()); - } - } - } IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); if (overlayManager != null) { - overlayManager.showOrUpdatePoint(builder.build()); + overlayManager.showOrUpdatePoint(builder.build(),DEFAULT); } }; diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index 59562c4738..cdf4cd28d6 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -382,6 +382,11 @@ public class OrderModel { }; private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { + @Override + public void brakeStatusChanged(boolean isBrakeAvailable) { + + } + @Override public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { BusAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); diff --git a/OCH/shuttle/driver/src/main/res/layout/bus_base_fragment.xml b/OCH/shuttle/driver/src/main/res/layout/bus_base_fragment.xml index 62165326be..e89b252b9f 100644 --- a/OCH/shuttle/driver/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/shuttle/driver/src/main/res/layout/bus_base_fragment.xml @@ -8,6 +8,8 @@ diff --git a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 518254c5a6..44758ad03c 100644 --- a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -119,6 +119,8 @@ public class BusPassengerModel { private int mPreRouteIndex = 0; private int mWipePreIndex = 0; + private volatile boolean isGoingToNextStation = false; + private static final int MSG_QUERY_BUS_P_STATION = 1001; private final Handler handler = new Handler(new Handler.Callback() { @Override @@ -291,6 +293,8 @@ public class BusPassengerModel { for (int i = 0; i< stations.size(); i++){ BusStationBean station = stations.get(i); if (station.getDrivingStatus() == STATION_STATUS_STOPPED && station.isLeaving() && i+1 < stations.size()){ + Logger.d(M_BUS_P + TAG, "order = station= leave"); + isGoingToNextStation = true; mRouteLineInfoCallback.updateStationsInfo(stations,i+1,false); if(mNextStationIndex != i+1){ mTwoStationsRouts.clear(); @@ -302,6 +306,9 @@ public class BusPassengerModel { if (i == 0){ startOrStopRouteAndWipe(false); } + + isGoingToNextStation = false; + Logger.d(M_BUS_P + TAG, "order = station= arrive"); mPreRouteIndex = 0; startOrStopCalculateRouteInfo(false); mRouteLineInfoCallback.updateStationsInfo(stations,i,true); @@ -452,8 +459,6 @@ public class BusPassengerModel { } }; - private volatile int mPreAutoStatus = -1; - private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ @Override public void onSystemStatus(@NonNull SsmInfo.SsmStatusInf statusInf) { @@ -492,27 +497,29 @@ public class BusPassengerModel { int state = autopilotStatusInfo.getState(); if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { //2022.7.20 自动驾驶更换成带档位的 - if(state != mPreAutoStatus && null != routesResult){ + if(null != routesResult){ CallerAutoPilotControlManager.INSTANCE.getGlobalPath(); } if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - if(state != mPreAutoStatus){ - mTwoStationsRouts.clear(); + } else{ + if (FunctionBuildConfig.isDemoMode && + mNextStationIndex>= 0 && mNextStationIndex <= mStations.size() - 1 + && isGoingToNextStation){ + Logger.d(M_BUS_P + TAG, "FunctionBuildConfig.isDemoMode is true"); + return; } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - if(state != mPreAutoStatus){ + + if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { mTwoStationsRouts.clear(); - } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); - }else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){ - if(state != mPreAutoStatus){ + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); + } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { mTwoStationsRouts.clear(); + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); + }else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){ + mTwoStationsRouts.clear(); + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); } - if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); } - mPreAutoStatus = state; } @Override diff --git a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt index 2254892bfd..ac8504e5dd 100644 --- a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt +++ b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt @@ -12,7 +12,6 @@ import kotlinx.android.synthetic.jinlvvan.p_bus_view_blue_tooth.view.* /** * 魔戒蓝牙控件 * 放置于StatusBar右侧位置 - * todo arrow */ class BusPBlueToothView @JvmOverloads constructor( context: Context, diff --git a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 91e2192546..e9ec5996d3 100644 --- a/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/shuttle/passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -389,8 +389,6 @@ public class BusPassengerRouteFragment extends public void AutopilotStatusChanged(int status) { if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { mAutopilotIv.setImageResource(R.drawable.auto_open); - } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){ - mAutopilotIv.setImageResource(R.drawable.auto_close); } else { mAutopilotIv.setImageResource(R.drawable.auto_close); } diff --git a/OCH/shuttle/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml b/OCH/shuttle/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml index c232a06a3f..ed1d36cdda 100644 --- a/OCH/shuttle/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml +++ b/OCH/shuttle/passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml @@ -9,6 +9,9 @@ android:id="@+id/mapBizView" android:layout_width="1810dp" android:layout_height="match_parent" + app:styleMode="MAP_STYLE_DAY_VR" + app:isWeatherEnable="false" + app:locationIcon3DRes="@raw/m2" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> diff --git a/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt b/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt index 1a73f958ab..3e015512bd 100644 --- a/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt +++ b/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt @@ -54,7 +54,6 @@ class MogoOCHBusPassenger : IMogoOCH, IMogoStatusChangedListener { */ private fun stepIntoVrMode() { d(SceneConstant.M_TAXI_P + TAG, "进入vr模式") - getMapUIController()?.stepInVrMode(true) // 白天模式 stepInDayMode() //白天模式 状态栏字体颜色变黑 } diff --git a/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt b/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt index 11934b3cd2..209869e7bc 100644 --- a/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt +++ b/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverla import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.map.overlay.core.Level import com.mogo.map.overlay.point.Point +import com.mogo.map.MapDataWrapper import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.constant.M2Const.Companion.TYPE_MARKER_M2_LINE import com.mogo.och.bus.passenger.presenter.PM2ADASPresenter @@ -80,8 +81,10 @@ class PM2HPMapFragment : ) { //开启线程执行起终点marker设置 val setMapMarkerRunnable = Runnable { - d("setMapMaker= " + Thread.currentThread().name, - uuid + "=latitude=" + station[1] + ",longitude=" + station[0]) + d( + "setMapMaker= " + Thread.currentThread().name, + uuid + "=latitude=" + station[1] + ",longitude=" + station[0] + ) val builder = Point.Options.Builder( TYPE_MARKER_M2_LINE, @@ -95,16 +98,12 @@ class PM2HPMapFragment : .icon3DRes(R.raw.star_marker) .longitude(station[0]) .latitude(station[1]) - val mapUIController = getMapUIController() - if (mapUIController != null) { - val centerLine = mapUIController.getCenterLineInfo( - station[0], station[1], -1f - ) - if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 - val angle = centerLine.angle - if (angle != null) { - builder.rotate(angle.toFloat()) - } + MapDataWrapper.getCenterLineInfo( + station[0], station[1], -1f + ) { + // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 + it?.let{ + builder.rotate(it.angle.toFloat()) } } val overlayManager = getOverlayManager() diff --git a/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/M2BlueToothView.kt b/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/M2BlueToothView.kt index f11882f70d..94d9bc69af 100644 --- a/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/M2BlueToothView.kt +++ b/OCH/shuttle/passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/M2BlueToothView.kt @@ -12,7 +12,6 @@ import kotlinx.android.synthetic.m2.p_m2_view_blue_tooth.view.* /** * 魔戒蓝牙控件 * 放置于StatusBar右侧位置 - * todo arrow */ class M2BlueToothView @JvmOverloads constructor( context: Context, diff --git a/OCH/shuttle/passenger/src/m2/res/layout/p_m2_hpmap_fragment.xml b/OCH/shuttle/passenger/src/m2/res/layout/p_m2_hpmap_fragment.xml index 4962a9f3c9..3efa0675a3 100644 --- a/OCH/shuttle/passenger/src/m2/res/layout/p_m2_hpmap_fragment.xml +++ b/OCH/shuttle/passenger/src/m2/res/layout/p_m2_hpmap_fragment.xml @@ -5,9 +5,13 @@ android:layout_height="match_parent"> - diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt index d564062e3d..631cfd330a 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt @@ -3,7 +3,7 @@ package com.mogo.och.sweepercloud.callback import chassis.ChassisStatesOuterClass import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean import com.mogo.och.sweepercloud.database.bean.WeltDataBean -import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask +import com.zhjt.mogo.adas.data.AiCloudTask import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable.IsBootableResp import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon @@ -22,7 +22,7 @@ interface ISweeperCloudTaskCallback { /** * 接取云端任务/正在执行中任务信息回调 */ - fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType,taskInfo: SweeperTask.TaskInfo?) + fun onSweeperCloudTask(messageType: AiCloudTask.MessageType, taskInfo: SweeperTask.TaskInfo?) /** * 云端下发子任务请求pad确认 @@ -42,7 +42,7 @@ interface ISweeperCloudTaskCallback { /** * 挂起/恢复 */ - fun onSweeperCloudTaskSuspendResume(messageType: SweeperCloudTask.MessageType,taskId:String,subTaskId:String,code:Code) + fun onSweeperCloudTaskSuspendResume(messageType: AiCloudTask.MessageType,taskId:String,subTaskId:String,code:Code) /** * pad请求云端进入自驾 diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java index b7cdb653fd..6da04fafed 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java @@ -1,5 +1,7 @@ package com.mogo.och.sweepercloud.fragment; +import static com.mogo.map.MogoMap.DEFAULT; + import android.os.Bundle; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -48,12 +50,11 @@ import com.mogo.och.sweepercloud.util.AutopilotModeConfigManager; import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils; import com.mogo.och.sweepercloud.view.SweeperTrafficDataView; import com.mogo.och.sweepercloud.view.WeltSmallMapView; -import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask; +import com.zhjt.mogo.adas.data.AiCloudTask; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; -import java.util.Random; import mogo.telematics.pad.MessagePad; @@ -183,7 +184,7 @@ public abstract class BaseSweeperTabFragment { - SweeperCloudTaskUtils.mockSendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask); + SweeperCloudTaskUtils.mockSendCloudTaskInfo(AiCloudTask.MessageType.CloudPushTask); UiThreadHandler.postDelayed(() -> { debugEndSubTask(); }, 5000); @@ -236,7 +237,7 @@ public abstract class BaseSweeperTabFragment } @Override - public void onSweeperCloudTask(@NonNull SweeperCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) { + public void onSweeperCloudTask(@NonNull AiCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) { ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTask(messageType, taskInfo)); } @@ -210,7 +210,7 @@ public class SweeperPresenter extends Presenter } @Override - public void onSweeperCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String taskId, + public void onSweeperCloudTaskSuspendResume(@NonNull AiCloudTask.MessageType messageType, @NonNull String taskId, @NonNull String subTaskId, SweeperCommon.Code code) { } diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt index 9e353f8ac9..ef14a2ef6a 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt @@ -19,7 +19,7 @@ import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener import com.mogo.och.sweepercloud.constant.SweeperConst import com.mogo.och.sweepercloud.model.SweeperTaskModel import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog -import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType +import com.zhjt.mogo.adas.data.AiCloudTask import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.Location @@ -30,7 +30,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop -import java.util.UUID +import java.util.* object SweeperCloudTaskUtils { const val TAG = "SweeperCloudTaskUtils" @@ -50,7 +50,7 @@ object SweeperCloudTaskUtils { * 模拟云控发送任务给pad */ @JvmStatic - fun mockSendCloudTaskInfo(messageType: MessageType) { + fun mockSendCloudTaskInfo(messageType: AiCloudTask.MessageType) { val builder = TaskInfo.newBuilder() builder.sn = getDriverSn() builder.taskId = "10" @@ -66,10 +66,10 @@ object SweeperCloudTaskUtils { subBuilder0.taskStatus = SweeperCommon.TaskStatus.TO_START val startLocation0 = Location.newBuilder() startLocation0.siteName = "自动驾驶子任务起点0" - startLocation0.wgsLongitude =112.56970262448544 + startLocation0.wgsLongitude = 112.56970262448544 startLocation0.wgsLatitude = 26.817567832504274 startLocation0.longitude = 112.57493487730413 - startLocation0.latitude = 26.81397095451884 + startLocation0.latitude = 26.81397095451884 subBuilder0.startLocation = startLocation0.build() val endLocation0 = Location.newBuilder() endLocation0.siteName = "自动驾驶子任务终点0" @@ -156,7 +156,10 @@ object SweeperCloudTaskUtils { System.currentTimeMillis(), builder.build() ) - CallerLogger.d(SceneConstant.M_SWEEPER + TAG, "messageType:" + messageType.number + "taskInfo:" + printMessage(builder.build())) + CallerLogger.d( + SceneConstant.M_SWEEPER + TAG, + "messageType:" + messageType.number + "taskInfo:" + printMessage(builder.build()) + ) } /** @@ -169,7 +172,7 @@ object SweeperCloudTaskUtils { builder.taskId = "10" builder.subTaskId = "1" SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm( - MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}", + AiCloudTask.MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}", System.currentTimeMillis(), builder.build() ) } @@ -185,7 +188,7 @@ object SweeperCloudTaskUtils { builder.subTaskId = "1" builder.taskStatus = SweeperCommon.TaskStatus.RUNNING SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus( - MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}", + AiCloudTask.MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}", System.currentTimeMillis(), builder.build() ) } @@ -200,7 +203,7 @@ object SweeperCloudTaskUtils { builder.taskId = "10" builder.type = SweeperTaskStop.StopTaskType.ADVANCE SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop( - MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}", + AiCloudTask.MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}", System.currentTimeMillis(), builder.build() ) } @@ -216,7 +219,7 @@ object SweeperCloudTaskUtils { builder.taskStatus = SweeperCommon.TaskStatus.FINISHED builder.systemTime = System.currentTimeMillis() SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus( - MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}", + AiCloudTask.MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}", System.currentTimeMillis(), builder.build() ) } @@ -233,7 +236,7 @@ object SweeperCloudTaskUtils { builder.code = SweeperCommon.Code.SUCCEED UiThreadHandler.getsUiHandler().postDelayed({ SweeperTaskModel.getInstance().onSweeperFutianCloudBootable( - MessageType.PadSendBootable, "${System.currentTimeMillis()}", + AiCloudTask.MessageType.PadSendBootable, "${System.currentTimeMillis()}", System.currentTimeMillis(), builder.build() ) }, 10000) @@ -244,28 +247,21 @@ object SweeperCloudTaskUtils { */ @JvmStatic fun mockAddHdMarker(uuid: String, longitude: Double, latitude: Double, isStartMarker: Boolean) { - //开启线程执行起终点marker设置 + //开启线程执行起终点marker设置 val setMapMarkerRunnable = Runnable { val builder = - Point.Options.Builder(SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END, Level.MAP_MARKER) + Point.Options.Builder( + SweeperConst.TYPE_MARKER_SWEEPER_SUBTASK_START_END, + Level.MAP_MARKER + ) .setId(uuid) .anchor(0.5f, 0.5f) .set3DMode(true) .isUseGps(true) - .controlAngle(true) + .controlAngle(false) .icon3DRes(if (isStartMarker) R.raw.star_marker else R.raw.end_marker) .longitude(longitude) .latitude(latitude) - val mapUIController = CallerMapUIServiceManager.getMapUIController() - if (mapUIController != null) { - val centerLine = mapUIController.getCenterLineInfo(longitude, latitude, -1f) - if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 - val angle = centerLine.angle - if (angle != null) { - builder.rotate(angle.toFloat()) - } - } - } val overlayManager = CallerMapUIServiceManager.getOverlayManager() Log.d(TAG, "CallerMapUIServiceManager.getOverlayManager()=$overlayManager") overlayManager?.showOrUpdatePoint(builder.build()) @@ -294,18 +290,23 @@ object SweeperCloudTaskUtils { * 创建接收大任务弹窗 */ @JvmStatic - fun createReceivedBigTaskInfoDialog(context: Context?, listener: SweeperCloudDialogClickListener?, taskInfo: TaskInfo): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + fun createReceivedBigTaskInfoDialog( + context: Context?, + listener: SweeperCloudDialogClickListener?, + taskInfo: TaskInfo + ): SweeperCloudDialog? { + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() val startCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskStartTime) val endCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskEndTime) builder.titleStr = "任务接取" builder.contentStr = "已为您接取任务${taskInfo.taskName}" - builder.tipStr = "(任务时间${DateTimeUtil.formatCalendarToString(startCalendar, DateTimeUtil.HH_mm)}-${ - DateTimeUtil.formatCalendarToString( - endCalendar, - DateTimeUtil.HH_mm - ) - })" + builder.tipStr = + "(任务时间${DateTimeUtil.formatCalendarToString(startCalendar, DateTimeUtil.HH_mm)}-${ + DateTimeUtil.formatCalendarToString( + endCalendar, + DateTimeUtil.HH_mm + ) + })" builder.leftStr = "确认" builder.middleStr = "" builder.rightStr = "" @@ -323,7 +324,7 @@ object SweeperCloudTaskUtils { listener: SweeperCloudDialogClickListener?, subTaskInfo: SubTaskInfo ): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() builder.titleStr = "子任务确认" builder.contentStr = "请确认并执行子任务 ${subTaskInfo.subTaskName}" builder.tipStr = @@ -346,7 +347,7 @@ object SweeperCloudTaskUtils { stopTaskType: SweeperTaskStop.StopTaskType, timeoutStr: String ): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() val titleStr = when (stopTaskType) { SweeperTaskStop.StopTaskType.ADVANCE -> "任务中止" SweeperTaskStop.StopTaskType.EXCEPTION -> "任务异常结束" @@ -386,7 +387,7 @@ object SweeperCloudTaskUtils { context: Context?, listener: SweeperCloudDialogClickListener? ): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() builder.titleStr = "任务结束" builder.contentStr = "任务已完成,干的漂亮!" builder.tipStr = "" @@ -407,7 +408,7 @@ object SweeperCloudTaskUtils { listener: SweeperCloudDialogClickListener?, isCancel: Boolean ): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() builder.titleStr = "任务结束" builder.contentStr = if (isCancel) "任务已取消!" else "任务已异常结束!" builder.tipStr = "" @@ -424,7 +425,7 @@ object SweeperCloudTaskUtils { context: Context?, listener: SweeperCloudDialogClickListener? ): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() builder.titleStr = "任务暂停" builder.contentStr = "云端暂停任务,注意车辆即将停车!" builder.tipStr = "【云端任务恢复前不可启动自动驾驶】" @@ -442,7 +443,7 @@ object SweeperCloudTaskUtils { listener: SweeperCloudDialogClickListener?, contentStr: String ): SweeperCloudDialog? { - var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() builder.titleStr = "任务恢复" builder.contentStr = contentStr builder.tipStr = "【注意安全,坐稳扶好】" @@ -456,11 +457,11 @@ object SweeperCloudTaskUtils { @JvmStatic fun printMessage(message: MessageOrBuilder): String { - return "\n"+TextFormat.printer().escapingNonAscii(false).printToString(message) + return "\n" + TextFormat.printer().escapingNonAscii(false).printToString(message) } @JvmStatic - fun getRequestId():String{ + fun getRequestId(): String { return UUID.randomUUID().toString() } diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml index a4fb73058a..905f02ad21 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml @@ -10,6 +10,8 @@ diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java index 26297b4cc7..cb8754febb 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/fragment/BaseSweeperTabFragment.java @@ -9,7 +9,6 @@ import android.widget.ImageView; import com.amap.api.maps.model.LatLng; import com.amap.api.navi.model.NaviLatLng; -import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; @@ -17,7 +16,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView; @@ -27,7 +25,6 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.listener.MogoMapListenerHandler; -import com.mogo.map.overlay.IMoGoOverlayManager; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.och.common.module.map.AmapNaviToDestinationModel; @@ -158,22 +155,22 @@ public abstract class BaseSweeperTabFragment { @@ -257,9 +254,7 @@ public abstract class BaseSweeperTabFragment { - showOrHideOverMapViewFragment(true); - }); + mMapWeltView.getSwitchToBig().setOnClickListener((v) -> showOrHideOverMapViewFragment(true)); } /** @@ -271,15 +266,11 @@ public abstract class BaseSweeperTabFragment { - // TODO: 2021/12/9 - CallerHmiManager.INSTANCE.showToolsView(); - }); + mSettingBtn.setOnClickListener(v -> CallerHmiManager.INSTANCE.showToolsView()); if (mCardBtn != null) { CallerDevaToolsManager.INSTANCE.initBadCase(mCardBtn); } @@ -423,8 +402,6 @@ public abstract class BaseSweeperTabFragment weltDataBeans, Boolean isWeltData, String distance) { mWeltDataBeanList = weltDataBeans; - ThreadUtils.getSinglePool().execute(new Runnable() { - @Override - public void run() { - if (mMapWeltView != null) { - mMapWeltView.setWeltData(weltDataBeans, isWeltData, distance); - } - if (mTaskDataToFragmentCallback != null) { - mTaskDataToFragmentCallback.setWeltData(weltDataBeans, distance); - } + ThreadUtils.getSinglePool().execute(() -> { + if (mMapWeltView != null) { + mMapWeltView.setWeltData(weltDataBeans, isWeltData, distance); + } + if (mTaskDataToFragmentCallback != null) { + mTaskDataToFragmentCallback.setWeltData(weltDataBeans, distance); } }); } @@ -535,13 +507,10 @@ public abstract class BaseSweeperTabFragment routeList) { mRouteList = routeList; - ThreadUtils.getSinglePool().execute(new Runnable() { - @Override - public void run() { - mMapWeltView.setRouteList(routeList); - if (mTaskDataToFragmentCallback != null) { - mTaskDataToFragmentCallback.setRouteList(routeList); - } + ThreadUtils.getSinglePool().execute(() -> { + mMapWeltView.setRouteList(routeList); + if (mTaskDataToFragmentCallback != null) { + mTaskDataToFragmentCallback.setRouteList(routeList); } }); } diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java index 08006c5490..5e99dd5719 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java @@ -287,6 +287,11 @@ public class SweeperTaskModel { }; private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { + @Override + public void brakeStatusChanged(boolean isBrakeAvailable) { + + } + @Override public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { SweeperAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); diff --git a/OCH/sweeper/sweeper/src/main/res/layout/sweeper_base_fragment.xml b/OCH/sweeper/sweeper/src/main/res/layout/sweeper_base_fragment.xml index 6cc4cd7de7..c4498cbaaa 100644 --- a/OCH/sweeper/sweeper/src/main/res/layout/sweeper_base_fragment.xml +++ b/OCH/sweeper/sweeper/src/main/res/layout/sweeper_base_fragment.xml @@ -10,6 +10,8 @@ diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/constant/TaxiOrderStatusEnum.kt b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/constant/TaxiOrderStatusEnum.kt index 1f703d0f2a..ca487e1b5e 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/constant/TaxiOrderStatusEnum.kt +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/constant/TaxiOrderStatusEnum.kt @@ -35,7 +35,7 @@ enum class TaxiOrderStatusEnum(val code: Int) { companion object { @JvmStatic - fun valueOf(code: Int): TaxiOrderStatusEnum? { + fun valueOf(code: Int): TaxiOrderStatusEnum { for (value in values()) { if (value.code == code) { return value diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 82b061e978..23306f26dd 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -894,12 +894,9 @@ public class TaxiModel { //检测当前订单 public boolean checkCurrentOCHOrder() { - if (mCurrentOCHOrder != null + return mCurrentOCHOrder != null && mCurrentOCHOrder.startSiteGcjPoint != null - && mCurrentOCHOrder.endSiteGcjPoint != null) { - return true; - } - return false; + && mCurrentOCHOrder.endSiteGcjPoint != null; } /** @@ -1064,6 +1061,11 @@ public class TaxiModel { }; private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { + @Override + public void brakeStatusChanged(boolean isBrakeAvailable) { + + } + @Override public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { TaxiAnalyticsManager.INSTANCE.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 112190771e..960428b09d 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -48,8 +48,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS private static final String TAG = TaxiPresenter.class.getSimpleName(); - private int preAutopilotStatus = 0; - public TaxiPresenter(TaxiFragment view) { super(view); TaxiModel.getInstance().init(AbsMogoApplication.getApp()); @@ -192,30 +190,24 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS public void onAutopilotEnable() { runOnUIThread(() -> mView.updateAutopilotStatus( IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE)); - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE; } @Override public void onAutopilotDisable() { runOnUIThread(() -> mView.updateAutopilotStatus( IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE)); - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; } @Override public void onAutopilotRunning() { - if (preAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ - runOnUIThread(() -> mView.updateAutopilotStatus( + runOnUIThread(() -> mView.updateAutopilotStatus( IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)); - } - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING; } @Override public void onManMachineCoDriving() { runOnUIThread(() -> mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING)); - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING; } @Override diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index 88f8b9baac..4cc7601535 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -22,6 +22,7 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; import androidx.fragment.app.FragmentTransaction; +import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; @@ -31,13 +32,13 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView; import com.mogo.eagle.core.function.view.MapBizView; import com.mogo.eagle.core.function.smp.view.SmallMapView; 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.mogo.view.OnPreventFastClickListener; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -45,12 +46,14 @@ import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.och.common.module.utils.AnimatorDrawableUtil; +import com.mogo.och.common.module.utils.FrameAnimatorContainer; import com.mogo.och.taxi.R; import java.util.Arrays; import java.util.Objects; import bag_manager.BagManagerOuterClass; +import me.jessyan.autosize.utils.AutoSizeUtils; import mogo.telematics.pad.MessagePad; import record_cache.RecordPanelOuterClass; @@ -92,63 +95,10 @@ public abstract class BaseTaxiTabFragment onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING)); - tvOperationStatus.setOnClickListener(view -> { - onChangeOperationStatus(); + tvOperationStatus.setOnClickListener(new OnPreventFastClickListener() { + @Override + public void onClickImpl(View v) { + onChangeOperationStatus(); + } }); mCloseNaviIcon.setOnClickListener(v -> { showAmapNaviToStationFragment(false); @@ -295,6 +249,14 @@ public abstract class BaseTaxiTabFragment CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "自动驾驶动画暂停")); + startManCOAnimator = new FrameAnimatorContainer(R.array.nim_flow_man_co, 20,mAnimFlowIv,false,width,height); + startManCOAnimator.setOnAnimStopListener(() -> CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "平行驾驶动画暂停")); } @Override @@ -323,14 +285,16 @@ public abstract class BaseTaxiTabFragment { if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != status) { // 1. 主动开启自动驾驶中,不为2(为0、1)则继续loading return; } - if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status - && mPrevAPStatus != status) { + if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { // 2. 主动开启自动驾驶中,为2则停止loading,并isStarting = false startAutopilotDone(true); return; @@ -394,7 +352,6 @@ public abstract class BaseTaxiTabFragment diff --git a/OCH/taxi/driver/src/main/res/values/arrays.xml b/OCH/taxi/driver/src/main/res/values/arrays.xml new file mode 100644 index 0000000000..b1dbd2354f --- /dev/null +++ b/OCH/taxi/driver/src/main/res/values/arrays.xml @@ -0,0 +1,137 @@ + + + + @drawable/anim_flow_00000 + @drawable/anim_flow_00001 + @drawable/anim_flow_00002 + @drawable/anim_flow_00003 + @drawable/anim_flow_00004 + @drawable/anim_flow_00005 + @drawable/anim_flow_00006 + @drawable/anim_flow_00007 + @drawable/anim_flow_00008 + @drawable/anim_flow_00009 + + @drawable/anim_flow_00010 + @drawable/anim_flow_00011 + @drawable/anim_flow_00012 + @drawable/anim_flow_00013 + @drawable/anim_flow_00014 + @drawable/anim_flow_00015 + @drawable/anim_flow_00016 + @drawable/anim_flow_00017 + @drawable/anim_flow_00018 + @drawable/anim_flow_00019 + + @drawable/anim_flow_00020 + @drawable/anim_flow_00021 + @drawable/anim_flow_00022 + @drawable/anim_flow_00023 + @drawable/anim_flow_00024 + @drawable/anim_flow_00025 + @drawable/anim_flow_00026 + @drawable/anim_flow_00027 + @drawable/anim_flow_00028 + @drawable/anim_flow_00029 + + + @drawable/anim_flow_00030 + @drawable/anim_flow_00031 + @drawable/anim_flow_00032 + @drawable/anim_flow_00033 + @drawable/anim_flow_00034 + @drawable/anim_flow_00035 + @drawable/anim_flow_00036 + @drawable/anim_flow_00037 + @drawable/anim_flow_00038 + @drawable/anim_flow_00039 + + @drawable/anim_flow_00040 + @drawable/anim_flow_00041 + @drawable/anim_flow_00042 + @drawable/anim_flow_00043 + @drawable/anim_flow_00044 + @drawable/anim_flow_00045 + @drawable/anim_flow_00046 + @drawable/anim_flow_00047 + @drawable/anim_flow_00048 + @drawable/anim_flow_00049 + + @drawable/anim_flow_00050 + @drawable/anim_flow_00051 + @drawable/anim_flow_00052 + @drawable/anim_flow_00053 + @drawable/anim_flow_00054 + @drawable/anim_flow_00055 + @drawable/anim_flow_00056 + @drawable/anim_flow_00057 + @drawable/anim_flow_00058 + @drawable/anim_flow_00059 + + + + + @drawable/anim_flow_man_co_00000 + @drawable/anim_flow_man_co_00001 + @drawable/anim_flow_man_co_00002 + @drawable/anim_flow_man_co_00003 + @drawable/anim_flow_man_co_00004 + @drawable/anim_flow_man_co_00005 + @drawable/anim_flow_man_co_00006 + @drawable/anim_flow_man_co_00007 + @drawable/anim_flow_man_co_00008 + @drawable/anim_flow_man_co_00009 + @drawable/anim_flow_man_co_00010 + @drawable/anim_flow_man_co_00011 + @drawable/anim_flow_man_co_00012 + @drawable/anim_flow_man_co_00013 + @drawable/anim_flow_man_co_00014 + @drawable/anim_flow_man_co_00015 + @drawable/anim_flow_man_co_00016 + @drawable/anim_flow_man_co_00017 + @drawable/anim_flow_man_co_00018 + @drawable/anim_flow_man_co_00019 + @drawable/anim_flow_man_co_00020 + @drawable/anim_flow_man_co_00021 + @drawable/anim_flow_man_co_00022 + @drawable/anim_flow_man_co_00023 + @drawable/anim_flow_man_co_00024 + @drawable/anim_flow_man_co_00025 + @drawable/anim_flow_man_co_00026 + @drawable/anim_flow_man_co_00027 + @drawable/anim_flow_man_co_00028 + @drawable/anim_flow_man_co_00029 + @drawable/anim_flow_man_co_00030 + @drawable/anim_flow_man_co_00031 + @drawable/anim_flow_man_co_00032 + @drawable/anim_flow_man_co_00033 + @drawable/anim_flow_man_co_00034 + @drawable/anim_flow_man_co_00035 + @drawable/anim_flow_man_co_00036 + @drawable/anim_flow_man_co_00037 + @drawable/anim_flow_man_co_00038 + @drawable/anim_flow_man_co_00039 + @drawable/anim_flow_man_co_00040 + @drawable/anim_flow_man_co_00041 + @drawable/anim_flow_man_co_00042 + @drawable/anim_flow_man_co_00043 + @drawable/anim_flow_man_co_00044 + @drawable/anim_flow_man_co_00045 + @drawable/anim_flow_man_co_00046 + @drawable/anim_flow_man_co_00047 + @drawable/anim_flow_man_co_00048 + @drawable/anim_flow_man_co_00049 + @drawable/anim_flow_man_co_00050 + @drawable/anim_flow_man_co_00051 + @drawable/anim_flow_man_co_00052 + @drawable/anim_flow_man_co_00053 + @drawable/anim_flow_man_co_00054 + @drawable/anim_flow_man_co_00055 + @drawable/anim_flow_man_co_00056 + @drawable/anim_flow_man_co_00057 + @drawable/anim_flow_man_co_00058 + @drawable/anim_flow_man_co_00059 + + + + \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index 0527f0798c..0a0cb370fa 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -235,7 +235,10 @@ object TaxiPassengerModel { override fun onStartAutopilotFailure(startFailedCode: String, startFailedMessage: String) { TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) } + + override fun brakeStatusChanged(isBrakeAvailable: Boolean) { } + } private val iMsgBoxEventListener: IMsgBoxEventListener = object : IMsgBoxEventListener { override fun onSummaryClickEvent() { if (currentOCHOrder == null) { diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt index 48cf6f23ee..1557e4b7c8 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt @@ -5,7 +5,6 @@ import android.view.View import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager 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.Companion.M_TAXI_P @@ -144,13 +143,10 @@ class TaxiPassengerBaseFragment() : rv_location_center.onClick { when (bottom.getCurrentPage()) { BottomBar.SelectView.PRECISIONMAP -> { - val controller = CallerMapUIServiceManager.getMapUIController() - if (controller != null) { - //切换到地图中间 - controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) - // 切换缩放到中视角 - controller.changeZoom2(0.8f) - } + //切换到地图中间 + mapBizView.getUI()?.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) + // 切换缩放到中视角 + mapBizView.getUI()?.changeZoom2(0.8f) } BottomBar.SelectView.OVERMAPVIEW -> { overMapView.displayCustomOverView() @@ -161,10 +157,10 @@ class TaxiPassengerBaseFragment() : } view?.viewTreeObserver?.addOnWindowFocusChangeListener { - if(it){ + if (it) { CallerLogger.d(M_TAXI_P + TAG, "windows获取焦点") createProgressDialogAnim?.start() - }else{ + } else { CallerLogger.d(M_TAXI_P + TAG, "window失去焦点") createProgressDialogAnim?.stop() } @@ -223,19 +219,19 @@ class TaxiPassengerBaseFragment() : */ fun showOrHideServingOrderFragment(isShow: Boolean) { when (bottom.getCurrentPage()) { - BottomBar.SelectView.OVERMAPVIEW,BottomBar.SelectView.PRECISIONMAP -> { + BottomBar.SelectView.OVERMAPVIEW, BottomBar.SelectView.PRECISIONMAP -> { if (isShow) { - if(itinerary.visibility!=View.VISIBLE) { + if (itinerary.visibility != View.VISIBLE) { itinerary.visibility = View.VISIBLE } } else { - if(itinerary.visibility!=View.GONE) { + if (itinerary.visibility != View.GONE) { itinerary.visibility = View.GONE } } } - BottomBar.SelectView.VIDEO,BottomBar.SelectView.NONE -> { - if(itinerary.visibility!=View.GONE) { + BottomBar.SelectView.VIDEO, BottomBar.SelectView.NONE -> { + if (itinerary.visibility != View.GONE) { itinerary.visibility = View.GONE } } @@ -299,7 +295,7 @@ class TaxiPassengerBaseFragment() : infoVideoView.exitFullScreenMode(resetVideoPlayer) } - fun showOrHideOverMapView(){ + fun showOrHideOverMapView() { overMapView?.clearV2XMarkers() overMapView?.clearCustomPolyline() } diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt index 6449fc6f0c..336357d774 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt @@ -158,5 +158,6 @@ class RightRearCamView : ConstraintLayout , IMoGoBackCameraVideoListener, actv_cam_position_group?.visibility = VISIBLE } v_video_right_rear?.setImageBitmap(mBitmap) + v_video_right_rear?.scaleX = -1f } } \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotView.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotView.kt index 8b94afc975..75898fbfb0 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotView.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotView.kt @@ -4,14 +4,19 @@ import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View +import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.ViewModelProvider import com.elegant.utils.UiThreadHandler +import com.mogo.eagle.core.data.config.HdMapBuildConfig 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.OverlayViewUtils import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition +import com.mogo.och.common.module.manager.devicemanage.data.DoorState import com.mogo.och.common.module.utils.FrameAnimatorContainer import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout @@ -25,22 +30,30 @@ import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.starting_ import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.taxi_p_autopilot_btn_bg import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.taxi_p_autopilot_starting import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.taxi_p_start_autopilot -import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.v_xiaozhi_belt_info_bg -import java.util.Arrays +import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.cl_car_type /** * @author: wangmingjun * @date: 2022/6/14 */ -class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAutopilotCallback{ +class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAutopilotCallback { constructor(context: Context) : super(context) constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) - constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) - constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + constructor( + context: Context, + attributeSet: AttributeSet, + defStyleAttr: Int, + defStyleRes: Int + ) : super(context, attributeSet, defStyleAttr, defStyleRes) companion object { private val TAG = StartAutopilotView::class.java.simpleName @@ -49,9 +62,9 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu var isStarting = false - private var taxiPStartAutopilot: FrameAnimatorContainer?=null - private var taxiPStartAutopilotCar: FrameAnimatorContainer?=null - private var taxiPXiaozhiBelt: FrameAnimatorContainer?=null + private var taxiPStartAutopilot: FrameAnimatorContainer? = null + private var taxiPStartAutopilotCar: FrameAnimatorContainer? = null + private var taxiPXiaozhiBelt: FrameAnimatorContainer? = null init { @@ -60,27 +73,35 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu private fun initView() { LayoutInflater.from(context).inflate(R.layout.taxi_p_start_autopilot_view, this, true) - taxiPStartAutopilotCar = FrameAnimatorContainer(R.array.taxi_p_start_autopilot_car, 20,taxi_p_autopilot_starting) - taxiPStartAutopilotCar?.setOnAnimStopListener(object :FrameAnimatorContainer.OnAnimationStoppedListener{ + taxiPStartAutopilotCar = FrameAnimatorContainer( + R.array.taxi_p_start_autopilot_car, + 20, + taxi_p_autopilot_starting + ) + taxiPStartAutopilotCar?.setOnAnimStopListener(object : + FrameAnimatorContainer.OnAnimationStoppedListener { override fun AnimationStopped() { CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "动画暂停") } }) - taxiPStartAutopilot = FrameAnimatorContainer(R.array.taxi_p_start_autopilot, 15,taxi_p_autopilot_btn_bg) - taxiPStartAutopilot?.setOnAnimStopListener(object :FrameAnimatorContainer.OnAnimationStoppedListener{ + taxiPStartAutopilot = + FrameAnimatorContainer(R.array.taxi_p_start_autopilot, 15, taxi_p_autopilot_btn_bg,false) + taxiPStartAutopilot?.setOnAnimStopListener(object : + FrameAnimatorContainer.OnAnimationStoppedListener { override fun AnimationStopped() { CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "动画暂停") } }) - taxiPXiaozhiBelt = FrameAnimatorContainer(R.array.xiaozhi_belt, 15,iv_xiaozhi_belt) - taxiPXiaozhiBelt?.setOnAnimStopListener(object :FrameAnimatorContainer.OnAnimationStoppedListener{ + taxiPXiaozhiBelt = FrameAnimatorContainer(R.array.xiaozhi_belt, 15, iv_xiaozhi_belt) + taxiPXiaozhiBelt?.setOnAnimStopListener(object : + FrameAnimatorContainer.OnAnimationStoppedListener { override fun AnimationStopped() { CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "动画暂停") } }) } - fun startAutopilotBgAnimatorDrawable(isStart: Boolean) { + private fun startAutopilotBgAnimatorDrawable(isStart: Boolean) { if (isStart) { taxiPStartAutopilot?.start() } else { @@ -103,42 +124,43 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu actv_orderinfo.text = show } - override fun setDoorStatus( - doorPosition: StartAutopilotViewModel.DoorPosition, - isOpen: Boolean - ) { + override fun setDoorStatus(doorPosition: DoorPosition, state: DoorState) { when (doorPosition) { - StartAutopilotViewModel.DoorPosition.FRONT_LEFT -> { - if(isOpen){ + DoorPosition.FRONT_LEFT -> { + if (state == DoorState.OPEN) { actv_front_left_door.visibility = VISIBLE - }else{ + } else { actv_front_left_door.visibility = GONE } } - StartAutopilotViewModel.DoorPosition.FRONT_RIGHT -> { - if(isOpen){ + + DoorPosition.FRONT_RIGHT -> { + if (state == DoorState.OPEN) { actv_front_right_door.visibility = VISIBLE - }else{ + } else { actv_front_right_door.visibility = GONE } } - StartAutopilotViewModel.DoorPosition.REAR_LEFT -> { - if(isOpen){ + + DoorPosition.REAR_LEFT -> { + if (state == DoorState.OPEN) { actv_rear_left_door.visibility = VISIBLE - }else{ + } else { actv_rear_left_door.visibility = GONE } } - StartAutopilotViewModel.DoorPosition.REAR_RIGHT -> { - if(isOpen){ + + DoorPosition.REAR_RIGHT -> { + if (state == DoorState.OPEN) { actv_rear_right_door.visibility = VISIBLE - }else{ + } else { actv_rear_right_door.visibility = GONE } } - else ->{ - } + else -> { + + } } } @@ -149,15 +171,20 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu OverlayViewUtils.dismissOverlayView(this) } - fun updateStartAutopilotBtnStatus(isBoarded: Boolean) { + private fun updateStartAutopilotBtnStatus(isBoarded: Boolean) { taxi_p_start_autopilot?.let { if (isBoarded) { - it.setTextColor(resources.getColor(R.color.taxi_p_start_autopilot_txt_color)) + it.setTextColor( + ContextCompat.getColor(context, R.color.taxi_p_start_autopilot_txt_color) + ) it.background = null } else { - it.background = ResourcesCompat.getDrawable(resources,R.drawable.taxi_p_start_autopilot_txt_btn_bg,null) + it.background = + ContextCompat.getDrawable(context, R.drawable.taxi_p_start_autopilot_txt_btn_bg) taxi_p_autopilot_btn_bg!!.background = null - it.setTextColor(resources.getColor(R.color.taxi_p_start_autopilot_txt_un_color)) + it.setTextColor( + ContextCompat.getColor(context, R.color.taxi_p_start_autopilot_txt_un_color) + ) } it.tag = isBoarded it.text = resources.getString(R.string.taxi_p_start_autopilot_txt) @@ -165,7 +192,6 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu } - private fun startingCarBgAnimatorDrawable(isStart: Boolean) { if (isStart) { taxi_p_autopilot_starting!!.setImageResource(0) @@ -181,7 +207,9 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu if (start) { isStarting = true taxi_p_start_autopilot?.text = resources.getString(R.string.taxi_p_start_autopilot_loading) - taxi_p_start_autopilot?.setTextColor(resources.getColor(R.color.taxi_p_start_autopilot_txt_color)) + taxi_p_start_autopilot?.setTextColor( + ContextCompat.getColor(context, R.color.taxi_p_start_autopilot_txt_color) + ) startingAutopilotCountDown() } else { clearBgAnimDrawable() @@ -214,6 +242,15 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu taxi_p_start_autopilot?.text = resources.getString(R.string.taxi_p_start_autopilot_txt) } + override fun onVisibilityChanged(changedView: View, visibility: Int) { + super.onVisibilityChanged(changedView, visibility) + if (HdMapBuildConfig.currentCarVrIconRes == R.raw.hq_h9) { + cl_car_type.setBackgroundResource(R.drawable.taxi_p_start_panel__hq_bg) + } else { + cl_car_type.setBackgroundResource(R.drawable.taxi_p_start_panel__df_bg) + } + } + override fun onAttachedToWindow() { super.onAttachedToWindow() val viewModel = ViewModelProvider(this).get(StartAutopilotViewModel::class.java) diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt index 969d3a59a3..740d30e33c 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt @@ -1,19 +1,19 @@ package com.mogo.och.taxi.passenger.ui.startautopilot import androidx.lifecycle.ViewModel -import chassis.Chassis -import chassis.Chassis.DoorNumber -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisDoorStateListener -import com.mogo.eagle.core.function.call.autopilot.CallerChassisDoorStateListenerManager 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.UiThreadHandler +import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback import com.mogo.och.taxi.passenger.model.AutopilotManager import com.mogo.och.taxi.passenger.model.TaxiPassengerModel +import com.mogo.och.common.module.manager.devicemanage.TaxiDoorStateManager +import com.mogo.och.common.module.manager.devicemanage.callback.DoorStateCallback +import com.mogo.och.common.module.manager.devicemanage.data.DoorState class StartAutopilotViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallback, - IMoGoChassisDoorStateListener { + DoorStateCallback { private val TAG = StartAutopilotViewModel::class.java.simpleName @@ -21,38 +21,28 @@ class StartAutopilotViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallbac init { TaxiPassengerModel.setOrderStatusCallback(TAG, this) - CallerChassisDoorStateListenerManager.addListener(TAG, this) + TaxiDoorStateManager.addListener(TAG,this) } fun setStartAutopilotCallback(viewCallback: StartAutopilotCallback) { this.viewCallback = viewCallback TaxiPassengerModel.startOrStopReadyToAutopilotLoop(true) setOrderInfo() - setDoorInfo() - } - - private fun setDoorInfo() { - val doorList = CallerChassisDoorStateListenerManager.getDoorList() - CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "门太变化初始化:${doorList}") - doorList?.forEach { - exchangeEnum(it.number,it.status==1) - } } private fun setOrderInfo() { val currentOCHOrder = TaxiPassengerModel.currentOCHOrder currentOCHOrder?.let { val phone = it.passengerPhone - var show = "" - if (phone.length > 8) { + val show = if (phone.length > 8) { //截取电话号码前三位 - val phoneNumPre = phone.substring(0, 3); + val phoneNumPre = phone.substring(0, 3) //截取电话号码后四位 - val phoneNumFix = phone.substring(7); + val phoneNumFix = phone.substring(7) - show = "用户:$phoneNumPre****$phoneNumFix 目的地:${it.endSiteAddr}" + "用户:$phoneNumPre****$phoneNumFix 目的地:${it.endSiteAddr}" } else { - show = "用户:${phone} 目的地:${it.endSiteAddr}" + "用户:${phone} 目的地:${it.endSiteAddr}" } viewCallback?.setOrderInfo(show) } @@ -62,7 +52,7 @@ class StartAutopilotViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallbac super.onCleared() this.viewCallback = null TaxiPassengerModel.setOrderStatusCallback(TAG, null) - CallerChassisDoorStateListenerManager.removeListener(TAG) + TaxiDoorStateManager.removeListener(TAG) } override fun onDriverHasCheckedPilotCondition(isBoarded: Boolean) { @@ -76,52 +66,25 @@ class StartAutopilotViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallbac AutopilotManager.startAutopilot() } - override fun onAutopilotSingleDoorState(num: Chassis.DoorNumber, open: Boolean) { - super.onAutopilotSingleDoorState(num, open) - CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "门太变化:${num}--${open}") - exchangeEnum(num,open) + override fun hasOpenDoor(have: Boolean) { + CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "车门是否开着:${have}") } - private fun exchangeEnum(num: Chassis.DoorNumber,open: Boolean){ - when (num) { - DoorNumber.FRONT_LEFT -> { - runMain(DoorPosition.FRONT_LEFT,open) - } - - DoorNumber.FRONT_RIGHT -> { - runMain(DoorPosition.FRONT_RIGHT,open) - } - - DoorNumber.REAR_LEFT -> { - runMain(DoorPosition.REAR_LEFT,open) - } - - DoorNumber.REAR_RIGHT -> { - runMain(DoorPosition.REAR_RIGHT,open) - } - - DoorNumber.MIDDLE -> { - runMain(DoorPosition.MIDDLE,open) - } - - else -> {} - } + override fun doorStateChangeCallback(position: DoorPosition, state: DoorState) { + CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "门太变化:${position}--${state}") + runMain(position,state) } - private fun runMain(posttion:DoorPosition,isOpen: Boolean){ - UiThreadHandler.post { - viewCallback?.setDoorStatus(posttion,isOpen) - } + private fun runMain(posttion:DoorPosition,state: DoorState){ + UiThreadHandler.post({ + viewCallback?.setDoorStatus(posttion,state) + },UiThreadHandler.MODE.QUEUE) } interface StartAutopilotCallback { fun handleStartAutopilotBtnStatus(isBoarded: Boolean) fun setOrderInfo(show: String) - fun setDoorStatus(doorPosition: DoorPosition,isOpen:Boolean) - } - - enum class DoorPosition { - FRONT_LEFT, FRONT_RIGHT, REAR_LEFT, REAR_RIGHT, MIDDLE + fun setDoorStatus(doorPosition: DoorPosition, state: DoorState) } } \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FloatingDistanceInfoUtils.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FloatingDistanceInfoUtils.kt deleted file mode 100644 index 41622d9785..0000000000 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FloatingDistanceInfoUtils.kt +++ /dev/null @@ -1,251 +0,0 @@ -package com.mogo.och.taxi.passenger.ui.video - -import android.annotation.SuppressLint -import android.app.Activity -import android.content.Context -import android.graphics.PixelFormat -import android.os.Build -import android.view.Gravity -import android.view.LayoutInflater -import android.view.View -import android.view.WindowManager -import android.widget.SeekBar -import androidx.appcompat.widget.AppCompatTextView -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.content.ContextCompat -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.common.module.wigets.OCHGradientTextView -import com.mogo.och.taxi.passenger.R - -/** - * 视频全屏播放 - * - * @author yangyakun - */ -@SuppressLint("StaticFieldLeak") -object FloatingDistanceInfoUtils { - private const val TAG = "OverlayViewUtils" - private var windowManager: WindowManager? = null - - @Volatile - private var isShowing = false - - private var params:WindowManager.LayoutParams?=null - private var paramsBottom:WindowManager.LayoutParams?=null - - - private var orderInfoView: View?=null - private var processView: SeekBar?=null - - // 距离 - private var actvDistancew: OCHGradientTextView?=null - // 距离单位 - private var actvDistancewUnit: AppCompatTextView?=null - // 剩余时间 - private var actvSurplusTime: OCHGradientTextView?=null - // 到达时间 - private var actvArrivedTime: OCHGradientTextView?=null - - private var actvSpeed: OCHGradientTextView?=null - - - /** - * 添加覆盖View在Activity上面 - */ - @JvmOverloads - fun showOverlayView(context: Activity,ani: Int = -1,sumDis:Int) { - if (isShowing) { - return - } - if (windowManager == null) { - windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager - } - - orderInfoView = LayoutInflater.from(context) - .inflate(R.layout.taxi_p_window_float_distance_info, null) as ConstraintLayout - orderInfoView?.let { view -> - // 设置View显示模式,沉浸式的侵入到状态栏,导航栏 - view.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY - or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - or View.SYSTEM_UI_FLAG_LAYOUT_STABLE - or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) - layoutParams(ani) - actvSpeed = view.findViewById(R.id.actv_speed) - actvDistancew = view.findViewById(R.id.actv_distancew) - actvDistancewUnit = view.findViewById(R.id.actv_distancew_unit) - actvSurplusTime = view.findViewById(R.id.actv_surplus_time) - actvArrivedTime = view.findViewById(R.id.actv_arrived_time) - - val intArrayOf = intArrayOf( - context.resources.getColor(R.color.taxi_p_video_gradient_end), - context.resources.getColor(R.color.taxi_p_video_gradient_start) - ) - - actvSpeed?.setVertrial(true) - actvSpeed?.setmColorList(intArrayOf) - - actvDistancew?.setVertrial(true) - actvDistancew?.setmColorList(intArrayOf) - - actvSurplusTime?.setVertrial(true) - actvSurplusTime?.setmColorList(intArrayOf) - - actvArrivedTime?.setVertrial(true) - actvArrivedTime?.setmColorList(intArrayOf) - - processView = SeekBar(context) - processView?.let { - it.max = sumDis - layoutParamsBottom(-1) - it.setPadding(0,0,0,0) - it.progressDrawable = ContextCompat.getDrawable(context,R.drawable.taxi_video_order_process) - it.thumb = null - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - it.maxHeight = 14 - it.minHeight = 14 - } - } - - - // 如果正在展示中,并且lastOverlayView不为null,先做移除操作,保证覆盖在最上面的View只有一个,防止叠加导致无法移除 - dismissOverlayView() - - try { - windowManager!!.addView(orderInfoView, params) - windowManager!!.addView(processView, paramsBottom) - isShowing = true - } catch (e: Exception) { - e.printStackTrace() - } - } - } - - - private fun layoutParams(ani: Int) { - if(params ==null) { - params = WindowManager.LayoutParams() - } - params = WindowManager.LayoutParams() - params?.let { - it.width = WindowManager.LayoutParams.WRAP_CONTENT - it.height = WindowManager.LayoutParams.WRAP_CONTENT - it.alpha = 1.0f - it.gravity = Gravity.END or Gravity.TOP - it.x = 0 - it.y = 199 - it.format = PixelFormat.RGBA_8888 - // 设置窗口类型为应用子窗口,和PopupWindow同类型 - it.type = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL - // 没有边界限制,允许窗口扩展到屏幕外 - it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or - WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or - WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or - WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL - if (ani != -1) { - it.windowAnimations = ani - } - } - } - - private fun layoutParamsBottom(ani: Int) { - if(paramsBottom ==null) { - paramsBottom = WindowManager.LayoutParams() - } - paramsBottom = WindowManager.LayoutParams() - paramsBottom?.let { - it.width = WindowManager.LayoutParams.MATCH_PARENT - it.height = WindowManager.LayoutParams.WRAP_CONTENT - it.alpha = 1.0f - it.gravity = Gravity.START or Gravity.BOTTOM - it.x = 0 - it.y = 0 - it.format = PixelFormat.RGBA_8888 - // 设置窗口类型为应用子窗口,和PopupWindow同类型 - it.type = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL - // 没有边界限制,允许窗口扩展到屏幕外 - it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or - WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or - WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or - WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL - if (ani != -1) { - it.windowAnimations = ani - } - } - } - - fun setSpeed(speed: Float) { - val newSpeed: Int = (Math.abs(speed) * 3.6f).toInt() // 倒车时工控机反馈定位信息中speed为负值 - - UiThreadHandler.post { - actvSpeed?.text = "$newSpeed" - } - } - - fun setDistance(meters:Long,remainDis: String?, disUnit: String, time: Int, arriveTime: String) { - UiThreadHandler.post { - actvDistancew?.text = "$remainDis" - actvDistancewUnit?.text = "距离($disUnit)" - actvSurplusTime?.text = "$time" - actvArrivedTime?.text = arriveTime - - processView?.let { - val process = it.max - meters - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - it.setProgress(process.toInt(), true) - }else{ - it.progress = process.toInt() - } - it.jumpDrawablesToCurrentState() - } - - } - } - - /** - * 移除覆盖View在Activity上面 - */ - fun dismissOverlayView() { - if (!isShowing) { - return - } - try { - if (windowManager != null && orderInfoView != null) { - windowManager!!.removeViewImmediate(orderInfoView) - params = null - } - if (windowManager != null && processView != null) { - windowManager!!.removeViewImmediate(processView) - paramsBottom = null - } - if(windowManager!=null){ - windowManager = null - } - if (orderInfoView!=null) { - orderInfoView = null - } - if(processView!=null){ - processView = null - } - actvDistancew?.let { - actvDistancew = null - } - actvDistancewUnit?.let { - actvDistancewUnit = null - } - actvSurplusTime?.let { - actvSurplusTime = null - } - actvArrivedTime?.let { - actvArrivedTime = null - } - actvSpeed?.let { - actvSpeed = null - } - - isShowing = false - } catch (e: Exception) { - e.printStackTrace() - } - } -} \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt index d8212bac16..e521cfbc50 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt @@ -61,7 +61,7 @@ internal class InfoVideoView @JvmOverloads constructor( "蘑菇车联之红旗车队" )) add( - com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay( + TaxiPassengerVideoPlay( "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v", "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png", "蘑菇车联牵手成都大运会" @@ -79,7 +79,7 @@ internal class InfoVideoView @JvmOverloads constructor( fun exitFullScreenMode(resetVideoPlayer: Boolean) { val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager - val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) + val (_: Int, player) = getPlayer(carouselLayoutManager) player?.let { it.exitFullScreenMode() it.onVideoPause() @@ -100,7 +100,7 @@ internal class InfoVideoView @JvmOverloads constructor( return } val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager - val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) + val (_: Int, player) = getPlayer(carouselLayoutManager) when (visibility) { View.VISIBLE -> { player?.let { @@ -218,7 +218,7 @@ internal class InfoVideoView @JvmOverloads constructor( override fun onWindowFocusChanged(hasWindowFocus: Boolean) { super.onWindowFocusChanged(hasWindowFocus) val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager - val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) + val (_: Int, player) = getPlayer(carouselLayoutManager) player?.let { if(it.isInPlayingState&&!it.isIfCurrentIsFullscreen&&!hasWindowFocus){ player.onVideoPause() diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java index d20bd4e65e..ce78bbf2d5 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/DiskLruCache.java @@ -694,7 +694,7 @@ final class DiskLruCache implements Closeable { private void validateKey(String key) { Matcher matcher = LEGAL_KEY_PATTERN.matcher(key); if (!matcher.matches()) { - throw new IllegalArgumentException("keys must match regex [a-z0-9_-]{1,64}: \"" + key + "\""); + throw new IllegalArgumentException("keys must match regex [a-z0-9_-]{1,64}: " + key); } } @@ -964,11 +964,11 @@ final class DiskLruCache implements Closeable { } public File getCleanFile(int i) { - return new File(directory, key + "" + i); + return new File(directory, key + i); } public File getDirtyFile(int i) { - return new File(directory, key + "" + i + ".tmp"); + return new File(directory, key + i + ".tmp"); } } } diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/Util.java b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/Util.java index 7d9ad39ccb..05f0c2e994 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/Util.java +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/blur/Util.java @@ -21,11 +21,12 @@ import java.io.IOException; import java.io.Reader; import java.io.StringWriter; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; /** Junk drawer of utility methods. */ final class Util { - static final Charset US_ASCII = Charset.forName("US-ASCII"); - static final Charset UTF_8 = Charset.forName("UTF-8"); + static final Charset US_ASCII = StandardCharsets.US_ASCII; + static final Charset UTF_8 = StandardCharsets.UTF_8; private Util() { } diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/bg_progress_bar.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/bg_progress_bar.png deleted file mode 100644 index cd14bf2760..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/bg_progress_bar.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/bg_taxi_p_arrived_info_floating.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/bg_taxi_p_arrived_info_floating.png deleted file mode 100644 index ebe94ecd52..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/bg_taxi_p_arrived_info_floating.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/img_taxi_operation_status_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/img_taxi_operation_status_bg.png deleted file mode 100644 index 27cb9285d3..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/img_taxi_operation_status_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/iv_light_increase_set.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_light_increase_set.png similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/iv_light_increase_set.png rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_light_increase_set.png diff --git a/OCH/taxi/passenger/src/main/res/drawable/iv_light_set.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_light_set.png similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/iv_light_set.png rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_light_set.png diff --git a/OCH/taxi/passenger/src/main/res/drawable/iv_voice_increase_set.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_voice_increase_set.png similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/iv_voice_increase_set.png rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_voice_increase_set.png diff --git a/OCH/taxi/passenger/src/main/res/drawable/iv_voice_set.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_voice_set.png similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/iv_voice_set.png rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/iv_voice_set.png diff --git a/OCH/taxi/passenger/src/main/res/drawable/tail_ani_0000.webp b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/tail_ani_0000.webp similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/tail_ani_0000.webp rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/tail_ani_0000.webp diff --git a/OCH/taxi/passenger/src/main/res/drawable/tail_ani_0090.webp b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/tail_ani_0090.webp similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/tail_ani_0090.webp rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/tail_ani_0090.webp diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_icon_in_autopilot.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_icon_in_autopilot.png deleted file mode 100644 index 75c26c3d71..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_icon_in_autopilot.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_icon_not_in_autopilot.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_icon_not_in_autopilot.png deleted file mode 100644 index 927296d690..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_icon_not_in_autopilot.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_notice_box_bg.9.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_notice_box_bg.9.png deleted file mode 100644 index 8b4b579b56..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_base_notice_box_bg.9.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot.png deleted file mode 100644 index 539e106058..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_bg.png deleted file mode 100644 index ef5a5ea880..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_bg_pressed.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_bg_pressed.png deleted file mode 100644 index 39194f8e55..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_bg_pressed.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_disable.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_disable.png deleted file mode 100644 index 695515a366..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_disable.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_failed.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_failed.png deleted file mode 100644 index 3347b2bfc2..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_failed.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_loading.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_loading.png deleted file mode 100644 index a71cf9a4f9..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_loading.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_success.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_success.png deleted file mode 100644 index dd7dc2d6b2..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_ic_autopilot_success.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrive_end_panel_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrive_end_panel_bg.png deleted file mode 100644 index 8c7c04a122..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrive_end_panel_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrived_end_light.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrived_end_light.png deleted file mode 100644 index 046f001a37..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrived_end_light.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png deleted file mode 100644 index b9d70e5fbb..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_auto_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_auto_nor.png deleted file mode 100644 index c15a11f4e4..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_auto_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_bg.png old mode 100644 new mode 100755 index e57ab24b01..b05a7024f3 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_bg.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_select_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_select_bg.png old mode 100644 new mode 100755 index 80a15f7f0b..4b60612ea3 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_select_bg.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_bottom_bar_select_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_dot_line.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_dot_line.png deleted file mode 100644 index 46900bd157..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_dot_line.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_p_function_voice_humb.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_function_voice_humb.png similarity index 100% rename from OCH/taxi/passenger/src/main/res/drawable/taxi_p_function_voice_humb.png rename to OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_function_voice_humb.png diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_ic_autopilot_loading.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_ic_autopilot_loading.png deleted file mode 100644 index a71cf9a4f9..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_ic_autopilot_loading.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_itinerary_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_itinerary_bg.png old mode 100644 new mode 100755 index 8d08d98530..b5ed8c603b Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_itinerary_bg.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_itinerary_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_light_green_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_light_green_nor.png deleted file mode 100644 index bc9fed952d..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_light_green_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_light_red_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_light_red_nor.png deleted file mode 100644 index 8732508ded..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_light_red_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_lightyellow_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_lightyellow_nor.png deleted file mode 100644 index bae01408fd..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_lightyellow_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow_arrived.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow_arrived.png deleted file mode 100644 index 36ef2e88d3..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow_arrived.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow_un_arrive.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow_un_arrive.png deleted file mode 100644 index baa35592cb..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_arrow_un_arrive.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_car_light.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_car_light.png old mode 100644 new mode 100755 index 3d4acc9951..ed796603d5 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_car_light.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_map_car_light.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogo_consult_title_icon.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogo_consult_title_icon.png deleted file mode 100644 index 56452fe256..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogo_consult_title_icon.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogo_movies_title_icon.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogo_movies_title_icon.png deleted file mode 100644 index 72dc087fd4..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogo_movies_title_icon.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogologo_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogologo_nor.png deleted file mode 100644 index ec1692cdcd..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_mogologo_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_panel_bottom_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_panel_bottom_bg.png deleted file mode 100644 index 83392d5cc4..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_panel_bottom_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png deleted file mode 100644 index 328da8bc90..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png deleted file mode 100644 index 156a3d1526..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star.png deleted file mode 100644 index e172c9e9cf..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star_check.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star_check.png deleted file mode 100644 index 4f7770b502..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star_check.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_start_panel_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_start_panel_bg.png deleted file mode 100644 index 784a482dcf..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_start_panel_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_pnc_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_pnc_bg.png old mode 100644 new mode 100755 index f3892d99b1..689770a17d Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_pnc_bg.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_pnc_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_seekbar_point_icon.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_seekbar_point_icon.png deleted file mode 100644 index ab00b6fde3..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_seekbar_point_icon.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_setting_view_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_setting_view_bg.png new file mode 100755 index 0000000000..b0338640a1 Binary files /dev/null and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_setting_view_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_green_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_green_bg.png deleted file mode 100644 index fda0da73e4..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_green_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_red_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_red_bg.png deleted file mode 100644 index 4fa0e570fa..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_red_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_start_panel__df_bg.webp b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_start_panel__df_bg.webp new file mode 100644 index 0000000000..8772a761c5 Binary files /dev/null and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_start_panel__df_bg.webp differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_start_panel__hq_bg.webp b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_start_panel__hq_bg.webp new file mode 100644 index 0000000000..85d316a7a6 Binary files /dev/null and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_start_panel__hq_bg.webp differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_status_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_status_bg.png old mode 100644 new mode 100755 index 9ef3dedd65..32cda5c4ab Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_status_bg.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_status_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_switch_map_long.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_switch_map_long.png deleted file mode 100755 index 4bcb596e68..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_switch_map_long.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_switch_map_medium.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_switch_map_medium.png deleted file mode 100755 index a0b6559ee0..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_switch_map_medium.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_un_auto_nor.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_un_auto_nor.png deleted file mode 100644 index 08a8e7366a..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_un_auto_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg.png deleted file mode 100755 index dbfb370906..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg_bottom.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg_bottom.png deleted file mode 100644 index 4192d9cbd7..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg_bottom.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg_top.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg_top.png deleted file mode 100644 index f9b70e6888..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_bg_top.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_holder.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_holder.png old mode 100644 new mode 100755 index 99bfcefc6f..1f839ed568 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_holder.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_holder.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_light_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_light_bg.png old mode 100644 new mode 100755 index e9f0ea0090..5faf81f617 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_light_bg.png and b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_light_bg.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow.png deleted file mode 100644 index b348323df0..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow11.9.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow11.9.png deleted file mode 100644 index 24a02712f9..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow11.9.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_speed_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_speed_bg.png deleted file mode 100644 index 62942a7a42..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_speed_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_switch_map_bg.png b/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_switch_map_bg.png deleted file mode 100644 index f4ab3deb31..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable-xhdpi/taxi_switch_map_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00000.png b/OCH/taxi/passenger/src/main/res/drawable/image_00000.png old mode 100644 new mode 100755 index 7d887647ed..ad219a6fa0 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00000.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00000.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00000_0.webp b/OCH/taxi/passenger/src/main/res/drawable/image_00000_0.webp new file mode 100644 index 0000000000..e0ca986452 Binary files /dev/null and b/OCH/taxi/passenger/src/main/res/drawable/image_00000_0.webp differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00001.png b/OCH/taxi/passenger/src/main/res/drawable/image_00001.png old mode 100644 new mode 100755 index 9cf5bda880..91132466c9 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00001.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00001.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00002.png b/OCH/taxi/passenger/src/main/res/drawable/image_00002.png old mode 100644 new mode 100755 index 6077a2c08f..87a2a8d3b5 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00002.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00002.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00003.png b/OCH/taxi/passenger/src/main/res/drawable/image_00003.png old mode 100644 new mode 100755 index 047b3c3d2c..6959f79b9c Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00003.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00003.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00004.png b/OCH/taxi/passenger/src/main/res/drawable/image_00004.png old mode 100644 new mode 100755 index 4f615372d7..083900fed9 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00004.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00004.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00005.png b/OCH/taxi/passenger/src/main/res/drawable/image_00005.png old mode 100644 new mode 100755 index 959dbd6c57..17bc486ffd Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00005.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00005.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00006.png b/OCH/taxi/passenger/src/main/res/drawable/image_00006.png old mode 100644 new mode 100755 index 59aa3aa5a7..6ef37fdb92 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00006.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00006.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00007.png b/OCH/taxi/passenger/src/main/res/drawable/image_00007.png old mode 100644 new mode 100755 index d623763a76..fa72979a0d Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00007.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00007.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00008.png b/OCH/taxi/passenger/src/main/res/drawable/image_00008.png old mode 100644 new mode 100755 index 8f548bfbf0..0b076bc8f1 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00008.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00008.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00009.png b/OCH/taxi/passenger/src/main/res/drawable/image_00009.png old mode 100644 new mode 100755 index 6127862fcd..c62b70195d Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00009.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00009.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00010.png b/OCH/taxi/passenger/src/main/res/drawable/image_00010.png old mode 100644 new mode 100755 index d12a204bd3..73342e7fb9 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00010.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00010.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00011.png b/OCH/taxi/passenger/src/main/res/drawable/image_00011.png old mode 100644 new mode 100755 index ba1ec584d3..1c15329feb Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00011.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00011.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00012.png b/OCH/taxi/passenger/src/main/res/drawable/image_00012.png old mode 100644 new mode 100755 index 9f8ef18110..7e353ecb4f Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00012.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00012.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00013.png b/OCH/taxi/passenger/src/main/res/drawable/image_00013.png old mode 100644 new mode 100755 index a6c4c29ca6..9da325091a Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00013.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00013.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00014.png b/OCH/taxi/passenger/src/main/res/drawable/image_00014.png old mode 100644 new mode 100755 index 4d686d6906..fb152247de Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00014.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00014.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00015.png b/OCH/taxi/passenger/src/main/res/drawable/image_00015.png old mode 100644 new mode 100755 index 229d90ea91..4b35b8379d Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00015.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00015.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00016.png b/OCH/taxi/passenger/src/main/res/drawable/image_00016.png old mode 100644 new mode 100755 index 76566ef4cf..ce0f0f0cfd Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00016.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00016.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00017.png b/OCH/taxi/passenger/src/main/res/drawable/image_00017.png old mode 100644 new mode 100755 index 0c737824f2..ec5b1b9245 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00017.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00017.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00018.png b/OCH/taxi/passenger/src/main/res/drawable/image_00018.png old mode 100644 new mode 100755 index ed21f50463..55cb4ab0f0 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00018.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00018.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00019.png b/OCH/taxi/passenger/src/main/res/drawable/image_00019.png old mode 100644 new mode 100755 index 6c3d2f36d1..a266730cbb Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00019.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00019.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00020.png b/OCH/taxi/passenger/src/main/res/drawable/image_00020.png old mode 100644 new mode 100755 index 79ba9c2d55..d7511c60ec Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00020.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00020.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00021.png b/OCH/taxi/passenger/src/main/res/drawable/image_00021.png old mode 100644 new mode 100755 index 344298c6fa..1d513fa5d3 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00021.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00021.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00022.png b/OCH/taxi/passenger/src/main/res/drawable/image_00022.png old mode 100644 new mode 100755 index d4a3aa37ac..aa0fe8140e Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00022.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00022.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00023.png b/OCH/taxi/passenger/src/main/res/drawable/image_00023.png old mode 100644 new mode 100755 index bf16bc01e3..33cc69dca9 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00023.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00023.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00024.png b/OCH/taxi/passenger/src/main/res/drawable/image_00024.png old mode 100644 new mode 100755 index 4393d89daa..609100cf2a Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00024.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00024.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00025.png b/OCH/taxi/passenger/src/main/res/drawable/image_00025.png old mode 100644 new mode 100755 index 0d806f46f3..0b4da3f947 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00025.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00025.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00026.png b/OCH/taxi/passenger/src/main/res/drawable/image_00026.png old mode 100644 new mode 100755 index 1d66ff5f0f..75aa470952 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00026.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00026.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00027.png b/OCH/taxi/passenger/src/main/res/drawable/image_00027.png old mode 100644 new mode 100755 index 48cb04e811..5cae05bab0 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00027.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00027.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00028.png b/OCH/taxi/passenger/src/main/res/drawable/image_00028.png old mode 100644 new mode 100755 index 346985a730..6466bb2ec7 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00028.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00028.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00029.png b/OCH/taxi/passenger/src/main/res/drawable/image_00029.png old mode 100644 new mode 100755 index fa5570051b..0f480e37b8 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00029.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00029.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00030.png b/OCH/taxi/passenger/src/main/res/drawable/image_00030.png old mode 100644 new mode 100755 index e3a021bcdd..3b077b70d4 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00030.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00030.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00031.png b/OCH/taxi/passenger/src/main/res/drawable/image_00031.png old mode 100644 new mode 100755 index 997acf4628..b4ee1f783b Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00031.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00031.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00032.png b/OCH/taxi/passenger/src/main/res/drawable/image_00032.png old mode 100644 new mode 100755 index c203740591..451ee41777 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00032.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00032.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00033.png b/OCH/taxi/passenger/src/main/res/drawable/image_00033.png old mode 100644 new mode 100755 index 60c9ca07c1..b0f54dfbf4 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00033.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00033.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/image_00034.png b/OCH/taxi/passenger/src/main/res/drawable/image_00034.png old mode 100644 new mode 100755 index c1c8de33df..afb758f6d2 Binary files a/OCH/taxi/passenger/src/main/res/drawable/image_00034.png and b/OCH/taxi/passenger/src/main/res/drawable/image_00034.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00000.png b/OCH/taxi/passenger/src/main/res/drawable/light_00000.png old mode 100644 new mode 100755 index 5aae3fd86e..94cf04741b Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00000.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00000.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00001.png b/OCH/taxi/passenger/src/main/res/drawable/light_00001.png old mode 100644 new mode 100755 index ea026b1519..a33bb182c0 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00001.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00001.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00002.png b/OCH/taxi/passenger/src/main/res/drawable/light_00002.png old mode 100644 new mode 100755 index 0c759d3144..62d06f31f2 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00002.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00002.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00003.png b/OCH/taxi/passenger/src/main/res/drawable/light_00003.png old mode 100644 new mode 100755 index 3ec26bf793..8c48101448 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00003.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00003.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00004.png b/OCH/taxi/passenger/src/main/res/drawable/light_00004.png old mode 100644 new mode 100755 index bbeeaab0e9..c30e868df9 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00004.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00004.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00005.png b/OCH/taxi/passenger/src/main/res/drawable/light_00005.png old mode 100644 new mode 100755 index 4a33f8d9b1..e49896b33a Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00005.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00005.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00006.png b/OCH/taxi/passenger/src/main/res/drawable/light_00006.png old mode 100644 new mode 100755 index 6f4cc5ba4f..01048ba3ec Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00006.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00006.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00007.png b/OCH/taxi/passenger/src/main/res/drawable/light_00007.png old mode 100644 new mode 100755 index 2a8b59e10d..258d79d868 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00007.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00007.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00008.png b/OCH/taxi/passenger/src/main/res/drawable/light_00008.png old mode 100644 new mode 100755 index 0d41d05357..07a8d7d87f Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00008.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00008.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00009.png b/OCH/taxi/passenger/src/main/res/drawable/light_00009.png old mode 100644 new mode 100755 index dbea71933f..835539331b Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00009.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00009.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00010.png b/OCH/taxi/passenger/src/main/res/drawable/light_00010.png old mode 100644 new mode 100755 index 640b30dc9f..aa016c8382 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00010.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00010.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00011.png b/OCH/taxi/passenger/src/main/res/drawable/light_00011.png old mode 100644 new mode 100755 index 2ab41deea3..b8ccfb7cc4 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00011.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00011.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00012.png b/OCH/taxi/passenger/src/main/res/drawable/light_00012.png old mode 100644 new mode 100755 index ba65b3bb1a..9305c86983 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00012.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00012.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/light_00013.png b/OCH/taxi/passenger/src/main/res/drawable/light_00013.png old mode 100644 new mode 100755 index 4a90fbf8e8..9aa4bd5c29 Binary files a/OCH/taxi/passenger/src/main/res/drawable/light_00013.png and b/OCH/taxi/passenger/src/main/res/drawable/light_00013.png differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_bg_selector.xml b/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_bg_selector.xml deleted file mode 100644 index e01265811f..0000000000 --- a/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_bg_selector.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_status_bg_check.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_status_bg_check.png deleted file mode 100644 index 28857974b5..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_status_bg_check.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_status_bg_nor.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_status_bg_nor.png deleted file mode 100644 index f7d4f92c4b..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_autopilot_status_bg_nor.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_base_autopilot_status_icon_selector.xml b/OCH/taxi/passenger/src/main/res/drawable/taxi_base_autopilot_status_icon_selector.xml deleted file mode 100644 index 58aca03b29..0000000000 --- a/OCH/taxi/passenger/src/main/res/drawable/taxi_base_autopilot_status_icon_selector.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_arrow_arrived.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_map_arrow_arrived.png deleted file mode 100644 index 36ef2e88d3..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_arrow_arrived.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_arrow_un_arrive.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_map_arrow_un_arrive.png deleted file mode 100644 index baa35592cb..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_arrow_un_arrive.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_car.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_map_car.png deleted file mode 100644 index dedaf093e9..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_car.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_view_dir_end.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_map_view_dir_end.png deleted file mode 100644 index a81336d4c2..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_view_dir_end.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_view_dir_start.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_map_view_dir_start.png deleted file mode 100644 index 3cee184981..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_map_view_dir_start.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/taxi_p_setting_view_bg.png b/OCH/taxi/passenger/src/main/res/drawable/taxi_p_setting_view_bg.png deleted file mode 100644 index 3b9fadf64c..0000000000 Binary files a/OCH/taxi/passenger/src/main/res/drawable/taxi_p_setting_view_bg.png and /dev/null differ diff --git a/OCH/taxi/passenger/src/main/res/drawable/xiaozhi_safety_belt.png b/OCH/taxi/passenger/src/main/res/drawable/xiaozhi_safety_belt.png index 1f44f3d499..f8633367d4 100644 Binary files a/OCH/taxi/passenger/src/main/res/drawable/xiaozhi_safety_belt.png and b/OCH/taxi/passenger/src/main/res/drawable/xiaozhi_safety_belt.png differ diff --git a/OCH/taxi/passenger/src/main/res/layout/list_video_item_normal.xml b/OCH/taxi/passenger/src/main/res/layout/list_video_item_normal.xml deleted file mode 100644 index a51634a7c2..0000000000 --- a/OCH/taxi/passenger/src/main/res/layout/list_video_item_normal.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - diff --git a/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml index 0b37513c4c..49dd9d6c24 100644 --- a/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -33,6 +33,8 @@ diff --git a/OCH/taxi/passenger/src/main/res/layout/taxi_p_mogo_movies.xml b/OCH/taxi/passenger/src/main/res/layout/taxi_p_mogo_movies.xml deleted file mode 100644 index 1eeb201cb5..0000000000 --- a/OCH/taxi/passenger/src/main/res/layout/taxi_p_mogo_movies.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/res/layout/taxi_p_setting_view.xml b/OCH/taxi/passenger/src/main/res/layout/taxi_p_setting_view.xml index 94c9432ca1..614f38c2fd 100644 --- a/OCH/taxi/passenger/src/main/res/layout/taxi_p_setting_view.xml +++ b/OCH/taxi/passenger/src/main/res/layout/taxi_p_setting_view.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" + android:clickable="true" android:background="@drawable/taxi_p_setting_view_bg"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt index 043c1c71bb..3c7ed4eff3 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/base/BaseViewModel.kt @@ -20,7 +20,7 @@ abstract class BaseViewModel : ViewMod val uiStateFlow: StateFlow = _uiStateFlow private val _uiIntentFlow: Channel = Channel() - val uiIntentFlow: Flow = _uiIntentFlow.receiveAsFlow() + private val uiIntentFlow: Flow = _uiIntentFlow.receiveAsFlow() init { viewModelScope.launch { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt index 3f705b6cc8..c0a9853fa9 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt @@ -7,19 +7,29 @@ import com.mogo.eagle.core.data.BaseData * @date: 2023/8/2 */ -data class GcjLatLon(var gcjLat: Double, var gcjLon: Double) +data class GcjLatLon( + var gcjLat: Double, var gcjLon: Double +) data class UnmannedLoginReqBean( - var phone: String?, - var captcha: String?, - var sn: String, - var loc: GcjLatLon? + var phone: String?, var captcha: String?, var sn: String, var loc: GcjLatLon? ) -data class UnmannedLogoutReqBean(var sn: String, var loc: GcjLatLon?) -data class StartServiceReqBean(var sn: String, var gcjLat: Double, var gcjLon: Double) +data class UnmannedLogoutReqBean( + var sn: String, var loc: GcjLatLon? +) -data class StartServiceRespBean(var data: Result?): BaseData(){ - data class Result(var siteId: Long,var siteName: String,var gcjLat: Double, var gcjLon: Double, - var wgs84Lon: Double, var wgs84Lat: Double ) +data class StartServiceReqBean( + var sn: String, var gcjLat: Double, var gcjLon: Double +) + +data class StartServiceRespBean(var data: Result?) : BaseData() { + data class Result( + var siteId: Long, + var siteName: String, + var gcjLat: Double, + var gcjLon: Double, + var wgs84Lon: Double, + var wgs84Lat: Double + ) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt index a7fbcc2e5a..cba01a3f71 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverTaskWithOrderBean.kt @@ -81,9 +81,11 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { var endSite: Site?, var order: OrderDetail? ) { - //servingStatus = 0 //暂停接单 = 1 //开始接单 - //taskType = 1 //虚拟任务 = 2 //接驾任务 = 3 //送驾任务 - //currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地 + /** + * servingStatus: 0 -> 暂停接单 1 -> 开始接单 + * taskType: 1 -> 虚拟任务 2 -> 接驾任务 3-> 送驾任务 + * currentStatus: 0-> 空闲 1-> 获取任务 2-> 开始任务 3-> 到达目的地 + */ override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false @@ -106,7 +108,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with order.orderStatus == OnTheWayToEnd */ - fun isOrderOnTheWayToEnd(data: QueryCurrentTaskRespBean.Result?): Boolean { + fun isOrderOnTheWayToEnd(data: Result?): Boolean { if (data == null) { return false } @@ -119,7 +121,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with order.orderStatus == ArriveAtEnd */ - fun isOrderArriveAtEnd(data: QueryCurrentTaskRespBean.Result?): Boolean { + fun isOrderArriveAtEnd(data: Result?): Boolean { if (data == null) { return false } @@ -132,7 +134,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with order.orderStatus == ArriveAtStart */ - fun isOrderArriveAtStart(data: QueryCurrentTaskRespBean.Result?): Boolean { + fun isOrderArriveAtStart(data: Result?): Boolean { if (data == null) { return false } @@ -142,7 +144,7 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { return data.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtStart.code } - fun isUserArriveAtStart(data: QueryCurrentTaskRespBean.Result?): Boolean { + fun isUserArriveAtStart(data: Result?): Boolean { if (data == null) { return false } @@ -155,19 +157,47 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { /** * with task.currentStatus == StartTask */ - fun isStartTaskType(data: QueryCurrentTaskRespBean.Result?): Boolean { + fun isStartTaskType(data: Result?): Boolean { if (data == null) { return false } return data.currentStatus == TaskStatusEnum.StartTask.code } + + /** + * with task.currentStatus == CompleteTask + */ + fun isCompleteTaskType(data: Result?): Boolean { + if (data == null) { + return false + } + return data.currentStatus == TaskStatusEnum.CompleteTask.code + } + + /** + * with task.currentStatus == GetTask + */ + fun isGetTaskType(data: Result?): Boolean { + if (data == null) { + return false + } + return data.currentStatus == TaskStatusEnum.GetTask.code + } } } -data class StartTaskReqBean(var sn: String, var lineId: Long) +data class StartTaskReqBean( + var sn: String, var lineId: Long +) + +data class ArriveSiteReqBean( + var sn: String, var siteId: Long +) + +data class PrepareTaskReqBean( + var sn: String, var siteId: Long +) -data class ArriveSiteReqBean(var sn: String, var siteId: Long) -data class PrepareTaskReqBean(var sn: String, var siteId: Long) data class PrepareTaskRespBean(var data: Result?) : BaseData() { //taskType 1:虚拟任务 2:接驾任务3:送驾任务 data class Result( var lineId: Long, @@ -178,10 +208,22 @@ data class PrepareTaskRespBean(var data: Result?) : BaseData() { //taskType 1: ) } -data class JumpPassengerCheckReqBean(var sn: String, var orderNo: String) -data class CancelOrderReqBean(var sn: String, var orderNo: String, var cancelType: Int) -data class OrderCompletedReqBean(var sn: String, var orderNo: String) -data class QueryCarOrderByNoReqBean(var sn: String, var orderNo: String) +data class JumpPassengerCheckReqBean( + var sn: String, var orderNo: String +) + +data class CancelOrderReqBean( + var sn: String, var orderNo: String, var cancelType: Int +) + +data class OrderCompletedReqBean( + var sn: String, var orderNo: String +) + +data class QueryCarOrderByNoReqBean( + var sn: String, var orderNo: String +) + data class QueryCarOrderByNoRespBean(var data: Result) : BaseData() { data class Result( var sn: String, diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java index 7e8a6673f3..b1f80cf372 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java @@ -23,4 +23,6 @@ public interface ITaxiADASStatusCallback { //自驾返回失败 void onStartAdasFailure(); + + void updateAutopilotStatus(); } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java index 63ae42d3db..a2576ee2be 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java @@ -19,4 +19,11 @@ public interface ITaxiControllerStatusCallback { //自动开启自动驾驶 void startOpenAutopilotNonManual(); + + //停止启动自动驾驶 + void stopOpenAutopilotNonManual(); + + void pauseOpenAutopilotNonManual(); + + void resumeOpenAutopilotNonManual(); } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java index 00457ab64a..52aaf096f8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java @@ -12,7 +12,4 @@ public interface ITaxiOrderStatusCallback { * @param isShow 是否显示导航地图(否播报声音) */ void onNaviToEnd(boolean isAmap, boolean isShow); - - // 当前位置距离上车点的距离(米)、预估时间(秒) - void onCurrentOrderDistToEndChanged(long meters, long timeInSecond); } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt index 59992d55aa..036a9b7df2 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt @@ -5,13 +5,15 @@ import com.mogo.och.taxi.bean.TrajectoryListRespBean interface ITaxiTaskWithOrderCallback { fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) - fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) + fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) fun onOrderCancel() fun onOrderArriveAtEnd(orderNo: String) - fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) + fun onOrderTripInfoChanged(mileage: Float, duration: Int) fun onOrderJourneyCompleted() - fun onStartAutopilot() - - fun onStartPrepareTask120s(isStart: Boolean) + fun onStartAutopilot(postDelayTime: Long) + fun onPauseStartAutopilot() + fun onStopAutopilot() + fun onStartPrepareTaskUI(delayTime: Long, isStart: Boolean) + fun onTaskTripInfoLocalCalculateChanged(meters:Long, timeInSecond:Long) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaskTypeEnum.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaskTypeEnum.kt index 89f59132c6..9fbe236531 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaskTypeEnum.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaskTypeEnum.kt @@ -1,4 +1,8 @@ -package com.mogo.och.taxi.constant/** +package com.mogo.och.taxi.constant + +import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean + +/** * Created on 2023/8/7 * taskType = 1 虚拟任务(演练任务), = 2 接驾任务(运营), = 3 //送驾任务(运营) */ @@ -18,5 +22,15 @@ enum class TaskTypeEnum(val code: Int) { } return None } + + /** + * taskType == ToOrderStartTask.code 接驾任务 + */ + fun isToOrderStartTask(data: QueryCurrentTaskRespBean.Result?): Boolean { + if (data == null) { + return false + } + return data.taskType == ToOrderStartTask.code + } } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiDriverEventConst.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiDriverEventConst.java new file mode 100644 index 0000000000..f2dc8a3cff --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/constant/TaxiDriverEventConst.java @@ -0,0 +1,16 @@ +package com.mogo.och.taxi.constant; + +public interface TaxiDriverEventConst { + + interface TaxiFragmentEvent { + String EVENT_TYPE_SHOW_DEBUG_VIEW = "event_type_taxi_fragment_show_debug_view"; + String EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT = "event_type_taxi_fragment_show_amap_navi_to_station_fragment"; + String EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT = "event_type_taxi_fragment_show_routing_to_station_fragment"; + String EVENT_TYPE_START_NAVI_TO_END_STATION = "event_type_taxi_fragment_start_navi_to_end_station"; + } + + interface TabFragmentEvent { + String EVENT_TYPE_SHOW_RED_POINT = "event_type_tab_fragment_show_red_point"; + String EVENT_TYPE_TASK_WITH_ORDER_CHANGED = "event_type_tab_fragment_task_with_order_changed"; + } +} diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt index 7bbfce05b0..cf3a4e1263 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceApi.kt @@ -124,7 +124,7 @@ interface TaxiTaskWithOrderServiceApi { */ @Headers("Content-type:application/json;charset=UTF-8") @POST("/och-taxi-cabin/api/business/v1/contrail") - fun contrailList( + fun queryTrajectoryByLindIds( @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, @Header("ticket") ticket: String = MoGoAiCloudClientConfig.getInstance().token, @Body data: Array diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt index ddc81e46be..de9673a2a6 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/network/TaxiTaskWithOrderServiceManager.kt @@ -179,9 +179,9 @@ object TaxiTaskWithOrderServiceManager { context: Context, linIds: Array, callback: OchCommonServiceCallback? ) { - mOCHTaxiServiceApi.contrailList( + mOCHTaxiServiceApi.queryTrajectoryByLindIds( data = linIds ).transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "contrailList")) + .subscribe(OchCommonSubscribeImpl(context, callback, "queryTrajectoryByLindIds")) } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt index a9ab0a9ed8..ff9092412c 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt @@ -4,14 +4,13 @@ import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle -import android.os.Handler -import android.os.Looper import android.os.SystemClock import android.view.LayoutInflater import android.view.View import android.view.animation.LinearInterpolator import androidx.fragment.app.FragmentTransaction import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.mvp.Presenter @@ -23,13 +22,14 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initBa import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showToolsView import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView +import com.mogo.eagle.core.function.hmi.ui.widget.ParallelDriveView import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.map.listener.IMogoMapListener import com.mogo.map.uicontroller.VisualAngleMode -import com.mogo.och.common.module.utils.AnimatorDrawableUtil +import com.mogo.och.common.module.utils.FrameAnimatorContainer import com.mogo.och.common.module.wigets.StartAutopilotAnimationView import com.mogo.och.taxi.R import com.mogo.och.taxi.constant.TaxiUnmannedConst @@ -50,6 +50,7 @@ import kotlinx.android.synthetic.main.taxi_base_fragment.module_och_autopilot_tv import kotlinx.android.synthetic.main.taxi_base_fragment.module_och_taxi_badcase_ll import kotlinx.android.synthetic.main.taxi_base_fragment.module_och_taxi_setting_layout import kotlinx.android.synthetic.main.taxi_base_fragment.module_och_taxi_swich_map_layout +import kotlinx.android.synthetic.main.taxi_base_fragment.parallelDriveView import kotlinx.android.synthetic.main.taxi_base_fragment.smallMapView import kotlinx.android.synthetic.main.taxi_base_fragment.startAutopilotAnimationView import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_close_navi_icon @@ -57,6 +58,7 @@ import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_switch_icon import kotlinx.android.synthetic.main.taxi_base_fragment.viewDriverMsgBoxBubble import kotlinx.android.synthetic.main.taxi_base_fragment.viewDriverMsgBoxButton import kotlinx.android.synthetic.main.taxi_base_fragment.viewDriverMsgBoxList +import me.jessyan.autosize.utils.AutoSizeUtils import kotlin.math.abs /** @@ -75,66 +77,11 @@ abstract class BaseTaxiTabFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment(), // } } - private fun openOperationalInfoView() { - personalDialogFragment = WeakReference(TaxiPersonalDialogFragment()) - activity?.supportFragmentManager?.let { - personalDialogFragment!!.get() - ?.show(it, "service_data") - } - } +// private fun openOperationalInfoView() { +// personalDialogFragment = WeakReference(TaxiPersonalDialogFragment()) +// activity?.supportFragmentManager?.let { +// personalDialogFragment!!.get() +// ?.show(it, "service_data") +// } +// } override fun getTagName(): String { return "TaxiFragment" @@ -86,9 +87,7 @@ class TaxiFragment : BaseTaxiTabFragment(), super.onActivityCreated(savedInstanceState) loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService - if (loginService != null) { - loginService!!.registerFragment(this, presenter, TaxiDriverLoginImpl()) - } + loginService?.registerFragment(this, presenter, TaxiDriverLoginImpl()) } override fun onCreateView( @@ -112,12 +111,21 @@ class TaxiFragment : BaseTaxiTabFragment(), } } + override fun pauseStartAutopilot() { + mPresenter.pauseStartAutopilot() + } + + override fun resumeStartAutopilot(remainingTime: Long) { + mPresenter.resumeStartAutopilot(remainingTime) + } + override fun startNaviToEndStation(isShow: Boolean) { mPresenter.startNaviToEndStation(isShow) } override fun initViews() { super.initViews() + initFlowEvent() initFragment() hideDebugPanel() switchVRFlatMode(MogoStatusManager.getInstance().isVrMode) @@ -125,6 +133,29 @@ class TaxiFragment : BaseTaxiTabFragment(), initOrderDebugView() } + override fun stopAutoStartAutopilot() { + mPresenter.stopAutoStartAutopilot() + } + + private fun initFlowEvent() { + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW) + .register(this) { _ -> + clickOrderDebugView() + } + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT) + .register(this) { show -> + showAmapNaviToStationFragment(show) + } + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT) + .register(this) { show -> + showRoutingToStationFragment(show) + } + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_START_NAVI_TO_END_STATION) + .register(this) { show -> + startNaviToEndStation(show) + } + } + private fun initFragment() { taskTabFragment = WeakReference(TaxiTaskTabFragment.newInstance()) val transaction: FragmentTransaction = childFragmentManager.beginTransaction() @@ -147,11 +178,6 @@ class TaxiFragment : BaseTaxiTabFragment(), taskTabFragment!!.get()!!.onCarTakeOrderStatusChanged() } - fun updateNextTaskFragment(taskAndOrder: QueryCurrentTaskRespBean.Result?) { - if (null == taskTabFragment || taskTabFragment!!.get() == null) return - taskTabFragment!!.get()!!.onTaskDataChanged(taskAndOrder) - } - fun switchVRFlatMode(isVRMode: Boolean) { if (mRootView != null) { mRootView.visibility = if (isVRMode) View.VISIBLE else View.GONE @@ -243,7 +269,7 @@ class TaxiFragment : BaseTaxiTabFragment(), it.order!!.orderLine else it.lineId - ) + ,true) } } @@ -257,11 +283,15 @@ class TaxiFragment : BaseTaxiTabFragment(), findViewById(R.id.test_bar_route)?.setOnClickListener { testRouteInfoUpload() } - } - - fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) { - if (null == taskTabFragment || taskTabFragment!!.get() == null) return - taskTabFragment!!.get()!!.onCurrentTaskTripInfoChanged(meters, timeInSecond) +// findViewById(R.id.test_brake)?.setOnClickListener { +// TaxiTaskModel.handleBrakeStatusChange(false) +// } +// findViewById(R.id.test_resume_brake)?.setOnClickListener { +// TaxiTaskModel.handleBrakeStatusChange(true) +// } + findViewById(R.id.test_parallel_driver)?.setOnClickListener { + stopAutoStartAutopilot() + } } private fun testRouteInfoUpload() { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java index 30857c7016..8fc079b3bb 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java @@ -9,6 +9,7 @@ import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; import com.mogo.och.common.module.biz.callback.ILoginCallback; @@ -32,8 +33,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS private static final String TAG = TaxiPresenter.class.getSimpleName(); - private int preAutopilotStatus = 0; - public TaxiPresenter(TaxiFragment view) { super(view); TaxiTaskModel.INSTANCE.init(); @@ -77,7 +76,7 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS * 开启自动驾驶 自驾模式 */ public void startAutoPilot() { - TaxiTaskModel.INSTANCE.startAutoPilot(); + TaxiTaskModel.INSTANCE.startAutopilotByClick(); } // 登出 @@ -102,29 +101,23 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS public void onAutopilotEnable() { runOnUIThread(() -> mView.updateAutopilotStatus( IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE)); - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE; } @Override public void onAutopilotDisable() { runOnUIThread(() -> mView.updateAutopilotStatus( IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE)); - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; } @Override public void onAutopilotRunning() { - if (preAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)); - } - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING; + runOnUIThread(() -> mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)); } @Override public void onParallelDrivingStatus() { runOnUIThread(() -> mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING)); - preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING; } @Override @@ -133,13 +126,13 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } @Override - public void onNaviToEnd(boolean isAmap, boolean isShow) { - runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); + public void updateAutopilotStatus() { + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); } @Override - public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) { - runOnUIThread(() -> mView.onCurrentOrderDistToEndChanged(meters, timeInSecond)); + public void onNaviToEnd(boolean isAmap, boolean isShow) { + runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); } @Override @@ -171,6 +164,33 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS }); } + @Override + public void stopOpenAutopilotNonManual() { + runOnUIThread(() -> { + mView.startOrStopLoadingAnim(false); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + mView.stopAutopilotBlinkAnimation(); + }); + } + + @Override + public void pauseOpenAutopilotNonManual() { + runOnUIThread(() -> { + mView.startOrStopLoadingAnim(false); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + mView.pauseAutopilotBlinkAnimation(); + }); + } + + @Override + public void resumeOpenAutopilotNonManual() { + runOnUIThread(() -> { + mView.startOrStopLoadingAnim(true); + mView.resumeAutopilotBlinkAnimation(); + }); + } + + @Override public void loginSuccess(DriverStatusQueryRespBean data) { //设置 接单状态 @@ -191,9 +211,23 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()) { mView.showDebugPanel(); } + + TaxiTaskModel.INSTANCE.updatePrepareTaskDelayUI(); } @Override public void loginFail(boolean isLogin) { } + + public void stopAutoStartAutopilot() { + TaxiTaskModel.INSTANCE.stopAutoStartAutopilot(); + } + + public void pauseStartAutopilot() { + TaxiTaskModel.INSTANCE.pauseStartAutopilot(); + } + + public void resumeStartAutopilot(long remainingTime) { + TaxiTaskModel.INSTANCE.resumeStartAutopilot(remainingTime); + } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt index 6896bf0e85..af22409590 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/common/AvoidLeakDialog.kt @@ -24,8 +24,6 @@ open class AvoidLeakDialog : Dialog { override fun setOnShowListener(listener: OnShowListener?) {} override fun dismiss() { super.dismiss() - if (null != hostFragmentReference && null != hostFragmentReference!!.get()) { - hostFragmentReference!!.get()!!.dismissAllowingStateLoss() - } + hostFragmentReference?.get()?.dismissAllowingStateLoss() } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt index 3ffc879d6a..527fc424a5 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt @@ -13,7 +13,10 @@ import android.view.LayoutInflater import android.view.View import android.widget.LinearLayout import android.widget.TextView +import androidx.lifecycle.ProcessLifecycleOwner +import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.eagle.core.function.main.MainMoGoApplication import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d @@ -43,6 +46,8 @@ import kotlinx.android.synthetic.main.taxi_debug_order.view.orderStartSiteInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.orderStatus import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite import kotlinx.android.synthetic.main.taxi_debug_order.view.taskStartSite +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch public class DebugView @JvmOverloads constructor( @@ -50,20 +55,25 @@ public class DebugView @JvmOverloads constructor( ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes), ITaxiTaskWithOrderCallback { companion object { const val TAG = "DebugView" + private const val ANALYTICS_EVENT_TYPE_DRIVER_UNMANNED_OPERATION_PROCESS_KEY_NODE_LOG = + "och.driver.unmanned.operation.process.key.node.log" const val BROADCAST_ACTION = "com.mogo.och.driver.debugview.show" const val BROADCAST_DATA_SHOW = "isShow" private var logHistoryTextView: TextView? = null fun printInfoMsg(msg: String) { printMsg("Info $msg", MainMoGoApplication.getApp().getColor(R.color.background_info)) + trackEvent("Info", msg) } fun printWarnMsg(msg: String) { printMsg("Warn $msg", MainMoGoApplication.getApp().getColor(R.color.background_warn)) + trackEvent("Warn", msg) } fun printErrorMsg(msg: String) { printMsg("Error $msg", MainMoGoApplication.getApp().getColor(R.color.background_error)) + trackEvent("Error", msg) } private fun printMsg(msg: String, textColor: Int) { @@ -86,6 +96,18 @@ public class DebugView @JvmOverloads constructor( } } + /** + * 上报埋点 + */ + private fun trackEvent(level: String, msg: String) { + ProcessLifecycleOwner.get().lifecycleScope.launch(Dispatchers.IO) { + val map: MutableMap = HashMap() + map["level"] = level + map["msg"] = msg + MogoAnalyticUtils.track(ANALYTICS_EVENT_TYPE_DRIVER_UNMANNED_OPERATION_PROCESS_KEY_NODE_LOG, map) + } + } + private fun currentDateTimeString(): String { return DateTimeUtil.formatCalendarToString( DateTimeUtil.formatLongToCalendar(System.currentTimeMillis()), @@ -177,7 +199,7 @@ public class DebugView @JvmOverloads constructor( initViewByData(taskWithOrder) } - override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) { + override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) { } override fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) { @@ -189,15 +211,24 @@ public class DebugView @JvmOverloads constructor( override fun onOrderArriveAtEnd(orderNo: String) { } - override fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) { + override fun onOrderTripInfoChanged(mileage: Float, duration: Int) { } override fun onOrderJourneyCompleted() { } - override fun onStartAutopilot() { + override fun onStartAutopilot(postDelayTime: Long) { } - override fun onStartPrepareTask120s(isStart: Boolean) { + override fun onPauseStartAutopilot() { + } + + override fun onStopAutopilot() { + } + + override fun onStartPrepareTaskUI(delayTime: Long, isStart: Boolean) { + } + + override fun onTaskTripInfoLocalCalculateChanged(meters: Long, timeInSecond: Long) { } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt index 7483bb67cc..d3768cf887 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt @@ -14,8 +14,7 @@ import kotlinx.android.synthetic.main.taxi_amap_navi_view.navi_view * @author: wangmingjun * @date: 2023/7/24 */ -class TaxiAmapNaviFragment : BaseFragment(), - AMapNaviViewListener { +class TaxiAmapNaviFragment : BaseFragment(){ companion object { fun newInstance(): TaxiAmapNaviFragment { val args = Bundle() @@ -25,7 +24,6 @@ class TaxiAmapNaviFragment : BaseFragment(), } } - private var mNaviToStartInfoCallback: ICommonNaviChangedCallback? = null override fun getLayoutId(): Int { return R.layout.taxi_amap_navi_view } @@ -58,130 +56,5 @@ class TaxiAmapNaviFragment : BaseFragment(), if (navi_view != null) { navi_view.onDestroy() } - if (mNaviToStartInfoCallback != null) { - mNaviToStartInfoCallback = null - } } - - override fun onNaviSetting() { - //底部导航设置点击回调 - } - - override fun onNaviCancel() {} - override fun onNaviMapMode(naviMode: Int) { - //导航态车头模式,0:车头朝上状态;1:正北朝上模式。 - } - - override fun onNaviTurnClick() { - //转弯view的点击回调 - } - - override fun onNextRoadClick() { - //下一个道路View点击回调 - } - - override fun onScanViewButtonClick() { - //全览按钮点击回调 - } - - override fun onLockMap(isLock: Boolean) { - //锁地图状态发生变化时回调 - } - - override fun onNaviViewLoaded() { - d(SceneConstant.M_TAXI + "wlx", "导航页面加载成功") - d( - SceneConstant.M_TAXI + "wlx", - "请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑" - ) - } - - override fun onMapTypeChanged(i: Int) {} - override fun onNaviViewShowMode(i: Int) {} - override fun onNaviBackClick(): Boolean { - return false - } - - /** - * 车道信息说明: - * - * - * 0xFF, 无对应车道 - * 0, 直行 - * 1, 左转 - * 2, 直行+左转 - * 3, 右转 - * 4, 直行+右转 - * 5, 左掉头 - * 6, 左转+右转 - * 7, 直行+左转+右转 - * 8, 右掉头 - * 9, 直行+左掉头 - * 10, 直行+右掉头 - * 11, 左转+左掉头 - * 12, 右转+右掉头 - * 13, 直行+扩展 - * 14, 左转+左掉头+扩展 - * 15, 保留 - * 16, 直行+左转+左掉头 - * 17, 右转+左掉头 - * 18, 左转+右转+左掉头 - * 19, 直行+右转+左掉头 - * 20, 左转+右掉头 - * 21, 公交车道 - * 22, 空车道 - * 23 可变车道 - */ - var array = arrayOf( - "直行车道", - "左转车道", - "左转或直行车道", - "右转车道", - "右转或直行车道", - "左掉头车道", - "左转或者右转车道", - " 左转或右转或直行车道", - "右转掉头车道", - "直行或左转掉头车道", - "直行或右转掉头车道", - "左转或左掉头车道", - "右转或右掉头车道", - "直行并且车道扩展", - "左转+左掉头+扩展", - "不可以选择该车道", - "直行+左转+左掉头车道", - "右转+左掉头", - "左转+右转+左掉头", - "直行+右转+左掉头", - "左转+右掉头", - "公交车道", - "空车道", - "可变车道" - ) - var actions = arrayOf( - "直行", - "左转", - "左转或直行", - "右转", - "右转或这行", - "左掉头", - "左转或者右转", - " 左转或右转或直行", - "右转掉头", - "直行或左转掉头", - "直行或右转掉头", - "左转或左掉头", - "右转或右掉头", - "直行并且车道扩展", - "左转+左掉头+扩展", - "不可以选择", - "直行+左转+左掉头", - "右转+左掉头", - "左转+右转+左掉头", - "直行+右转+左掉头", - "左转+右掉头", - "公交车道", - "空车道", - "可变车道" - ) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt index a80e2adcbf..192297a0ee 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt @@ -23,7 +23,10 @@ sealed class TaskWithOrderUIState { data class TaskDriveToNearestStationTask(val driveToNearestStationTask: StartServiceRespBean.Result?) : TaskWithOrderUIState() - data class UpdateTaskTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState() + data class UpdateOrderTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState() - data class UpdatePrepareTaskDelay120S(val isStart: Boolean) : TaskWithOrderUIState() + data class UpdateTaskTripLocalCalculateInfo(val meters: Long, val timeInSecond: Long) : + TaskWithOrderUIState() + + data class UpdatePrepareTaskDelay(val delayTime: Long, val isStart: Boolean) : TaskWithOrderUIState() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index 3ee54ae2d4..72a2601d09 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -27,6 +27,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.map.ICommonNaviChangedCallback import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.FlowBus import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.wigets.OCHCommitDialog import com.mogo.och.taxi.R @@ -35,12 +36,11 @@ import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.StartServiceRespBean import com.mogo.och.taxi.constant.TaskStatusEnum import com.mogo.och.taxi.constant.TaskTypeEnum +import com.mogo.och.taxi.constant.TaxiDriverEventConst import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER -import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TIMER_PREPARE_TASK_INTERVAL_120S import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER -import com.mogo.och.taxi.ui.base.TaxiFragment import com.mogo.och.taxi.utils.MapMakerManager import com.mogo.och.taxi.utils.TaskUtils import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder @@ -75,10 +75,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), companion object { const val TAG = M_TAXI + "TaxiCurrentTaskFragment" - private var mTaxiFragment: TaxiFragment? = null - fun newInstance(taxiFragment: TaxiFragment?): TaxiCurrentTaskFragment { - mTaxiFragment = taxiFragment + fun newInstance(): TaxiCurrentTaskFragment { val args = Bundle() val fragment = TaxiCurrentTaskFragment() fragment.arguments = args @@ -119,18 +117,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), TAG, "hasCurrentTask = $hasCurrentTask" ) - try { - if (hasCurrentTask) { - noTaskData.visibility = View.GONE - mCurrentTaskLayout.visibility = View.VISIBLE - } else { - noTaskData.visibility = View.VISIBLE - noOrderDataTv.text = "暂无进行中订单" - mCurrentTaskLayout.visibility = View.GONE - taskOtherInfo.text = "距离 -- 公里, 用时 -- 分钟" - } - } catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况 - TaxiTaskModel.clearCurrentOCHOrder() + if (hasCurrentTask) { + noTaskData.visibility = View.GONE + mCurrentTaskLayout.visibility = View.VISIBLE + } else { + noTaskData.visibility = View.VISIBLE + noOrderDataTv.text = "暂无进行中订单" + mCurrentTaskLayout.visibility = View.GONE + taskOtherInfo.text = "距离 -- 公里, 用时 -- 分钟" } } @@ -145,7 +139,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), private fun initTaskDebugViewListener() { taskStatus.setOnLongClickListener { - mTaxiFragment?.clickOrderDebugView() + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW) + .post(this.lifecycleScope, true) false } } @@ -166,7 +161,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), if (taskAndOrderUiState.driveToNearestStationTask != null) { updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask) } else { - updatePrepareTaskDelay120SUI(false) + updatePrepareTaskDelayUI(0, false) initContainerView(false) removeAllMapMarker() } @@ -184,7 +179,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), updateViewByCurrentTaskWithOrder(currentTaskWithOrder) } - is TaskWithOrderUIState.UpdateTaskTripInfo -> { + is TaskWithOrderUIState.UpdateOrderTripInfo -> { taskOtherInfo.text = TaskUtils.getCurrentTaskTotalAndDurationHtml( taskAndOrderUiState.mileage, @@ -192,8 +187,18 @@ class TaxiCurrentTaskFragment : BaseFragment(), ) } - is TaskWithOrderUIState.UpdatePrepareTaskDelay120S -> { - updatePrepareTaskDelay120SUI(taskAndOrderUiState.isStart) + is TaskWithOrderUIState.UpdateTaskTripLocalCalculateInfo -> { + updateCurrentTaskTripInfo( + taskAndOrderUiState.meters, + taskAndOrderUiState.timeInSecond + ) + } + + is TaskWithOrderUIState.UpdatePrepareTaskDelay -> { + updatePrepareTaskDelayUI( + taskAndOrderUiState.delayTime, + taskAndOrderUiState.isStart + ) } } } @@ -203,35 +208,36 @@ class TaxiCurrentTaskFragment : BaseFragment(), /** * 更新120s倒计时 */ - private fun updatePrepareTaskDelay120SUI(isStart: Boolean) { + private fun updatePrepareTaskDelayUI(millisInFuture: Long, isStart: Boolean) { - if (!isStart){ - prepareTaskCountdownTv.visibility = View.GONE + if (!isStart) { + prepareTaskCountdownTv.visibility = View.GONE mPrepareTasCountDownTimer?.cancel() mPrepareTasCountDownTimer = null return } - prepareTaskCountdownTv.visibility = View.VISIBLE - mPrepareTasCountDownTimer = object : CountDownTimer(TIMER_PREPARE_TASK_INTERVAL_120S, 1000L) {// 5倒计时后开启自驾 + prepareTaskCountdownTv.visibility = View.VISIBLE + mPrepareTasCountDownTimer = + object : CountDownTimer(millisInFuture, 1000L) {// 5倒计时后开启自驾 - override fun onTick(millisUntilFinished: Long) { - // 倒计时 - UiThreadHandler.post { - prepareTaskCountdownTv.text = - "距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished/1000)}" + override fun onTick(millisUntilFinished: Long) { + // 倒计时 + UiThreadHandler.post { + prepareTaskCountdownTv.text = + "距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished / 1000)}" + } + } + + override fun onFinish() { + //倒计时结束了... + UiThreadHandler.post { + prepareTaskCountdownTv.visibility = View.GONE + } + mPrepareTasCountDownTimer?.cancel() } } - override fun onFinish() { - //倒计时结束了... - UiThreadHandler.post { - prepareTaskCountdownTv.visibility = View.GONE - } - mPrepareTasCountDownTimer?.cancel() - } - } - mPrepareTasCountDownTimer?.start() } @@ -283,9 +289,21 @@ class TaxiCurrentTaskFragment : BaseFragment(), } } - private fun updateNextTaskFragment(taskAndOrder: QueryCurrentTaskRespBean.Result?) { - mTaxiFragment?.let { - it.updateNextTaskFragment(taskAndOrder) + private fun updateNextTaskFragment(result: QueryCurrentTaskRespBean.Result?) { + FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED) + .post(this.lifecycleScope, result) + + if (result != null + && result.taskType == TaskTypeEnum.VirtualTask.code + && result.order != null + && result.currentStatus != TaskStatusEnum.CompleteTask.code + ) { + VoiceNotice.showNotice("已为您提前接到下一订单,待完成当前任务后服务") + FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT) + .post(this.lifecycleScope, true) + } else { + FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT) + .post(this.lifecycleScope, false) } } @@ -302,24 +320,21 @@ class TaxiCurrentTaskFragment : BaseFragment(), */ private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) { val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return + d(TAG, "updateRemainDistanceAndTime ${currentTaskWithOrder.currentStatus}") + if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) { + if (currentTaskWithOrder.endSite != null) { + startNaviToStation( + isVoicePlay, currentTaskWithOrder.endSite!!.gcjLat, + currentTaskWithOrder.endSite!!.gcjLon + ) + } - if (currentTaskWithOrder.endSite != null - && currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code + } else if (currentTaskWithOrder.currentStatus == TaskStatusEnum.CompleteTask.code && + currentTaskWithOrder.taskType <= TaskTypeEnum.ToOrderStartTask.code ) { - startNaviToStation( - isVoicePlay, currentTaskWithOrder.endSite!!.gcjLat, - currentTaskWithOrder.endSite!!.gcjLon - ) - return - } - - if (currentTaskWithOrder.startSite != null - && currentTaskWithOrder.currentStatus == TaskStatusEnum.GetTask.code - ) { //演练任务和送驾任务 - startNaviToStation( - isVoicePlay, currentTaskWithOrder.startSite!!.gcjLat, - currentTaskWithOrder.startSite!!.gcjLon - ) + taskOtherInfo.text = "已到达 ${currentTaskWithOrder.endSite?.siteName}" + } else { + taskOtherInfo.text = "距离 -- 公里, 用时 -- 分钟" } } @@ -352,13 +367,21 @@ class TaxiCurrentTaskFragment : BaseFragment(), when (taskType) { TaskTypeEnum.None.code -> { - if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { - handleOrderView(order) + if (order != null && (currentStatus == TaskStatusEnum.CompleteTask.code + || currentStatus == TaskStatusEnum.None.code )) { //暂停接单会清空任务 updateOrderUI(order) } } TaskTypeEnum.VirtualTask.code -> { //演练任务 + + if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { + updateOrderUI(order) + updateMapMarkers(taskAndOrder) + updateRemainDistanceAndTime(false) + return + } + cancelOrder.visibility = View.GONE orderPhoneAndNum.visibility = if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code @@ -374,10 +397,6 @@ class TaxiCurrentTaskFragment : BaseFragment(), pathwayPoint.visibility = View.GONE - if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { - updateOrderUI(order) - return - } if (startSite == null || endSite == null) return taskStatus.text = resources.getString(R.string.task_start_end_site) @@ -386,14 +405,13 @@ class TaxiCurrentTaskFragment : BaseFragment(), taskTypeTv.text = resources.getString(R.string.task_exercise) startStationName.text = startSite.siteName endStationName.text = endSite.siteName - updatePrepareTaskDelay120SUI(false) + updatePrepareTaskDelayUI(0, false) updateStartAndEndStationPointByStatus(true) } TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 接驾任务 或 送驾任务 order?.also { - updatePathwayPoint(taskType,endSite?.siteName) - handleOrderView(it) + updatePathwayPoint(taskType, endSite?.siteName) updateOrderUI(it) } } @@ -403,7 +421,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), updateRemainDistanceAndTime(false) } - private fun updatePathwayPoint(taskType: Int,endSiteName: String?) { + private fun updatePathwayPoint(taskType: Int, endSiteName: String?) { if (TextUtils.isEmpty(endSiteName)) return pathwayPoint.visibility = if (taskType == TaskTypeEnum.ToOrderStartTask.code) View.VISIBLE else View.GONE @@ -475,7 +493,24 @@ class TaxiCurrentTaskFragment : BaseFragment(), } private fun updateOrderUI(order: OrderDetail) { - updatePrepareTaskDelay120SUI(false) + cancelOrder.visibility = if (order.orderStatus + == TaxiOrderStatusEnum.ArriveAtEnd.code + ) View.GONE else View.VISIBLE + orderPhoneAndNum.visibility = View.VISIBLE + taskClickBtn.visibility = View.VISIBLE + taskTypeTv.visibility = View.VISIBLE +// orderStatus: 0 订单创建(为派单), 10 已派上司机(司机去往上车点), 20 司机到达上车点, +// 30 乘客到达上车点, 40 服务中(去往目的地), 50 到达目的地, 60 已完成, 70 已取消 + naviToStart.visibility = if (order.orderStatus + == TaxiOrderStatusEnum.OnTheWayToStart.code + ) View.VISIBLE else View.GONE + + naviToEnd.visibility = if (order.orderStatus + == TaxiOrderStatusEnum.OnTheWayToEnd.code + ) View.VISIBLE else View.GONE + taskOtherInfo.visibility = View.VISIBLE + + updatePrepareTaskDelayUI(0, false) taskTypeTv.text = resources.getString(R.string.task_order) taskTypeTv.background = ContextCompat.getDrawable( @@ -547,47 +582,32 @@ class TaxiCurrentTaskFragment : BaseFragment(), } } - private fun handleOrderView(order: OrderDetail?) { - if (order == null) return - cancelOrder.visibility = View.VISIBLE - orderPhoneAndNum.visibility = View.VISIBLE - taskClickBtn.visibility = View.VISIBLE - taskTypeTv.visibility = View.VISIBLE -// orderStatus: 0 订单创建(为派单), 10 已派上司机(司机去往上车点), 20 司机到达上车点, -// 30 乘客到达上车点, 40 服务中(去往目的地), 50 到达目的地, 60 已完成, 70 已取消 - naviToStart.visibility = if (order.orderStatus - == TaxiOrderStatusEnum.OnTheWayToStart.code - ) View.VISIBLE else View.GONE - - naviToEnd.visibility = if (order.orderStatus - == TaxiOrderStatusEnum.OnTheWayToEnd.code - ) View.VISIBLE else View.GONE - - taskOtherInfo.visibility = View.VISIBLE - } - - private fun hideNaviBtns() { naviToStart.visibility = View.GONE naviToEnd.visibility = View.GONE AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() - mTaxiFragment?.showAmapNaviToStationFragment(false) - mTaxiFragment?.showRoutingToStationFragment(false) + + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT) + .post(this.lifecycleScope, false) + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT) + .post(this.lifecycleScope, false) } private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) { - AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() - val mCurLatitude = getChassisLocationGCJ02().latitude - val mCurLongitude = getChassisLocationGCJ02().longitude - d( - TAG, - "currentLatLng=$mCurLatitude $mCurLongitude" - ) - val startNaviLatLng = NaviLatLng(mCurLatitude, mCurLongitude) - val endNaviLatLng = NaviLatLng(stationLat, stationLng) - AmapNaviToDestinationModel.getInstance(context).initAMapNavi(startNaviLatLng, endNaviLatLng) - AmapNaviToDestinationModel.getInstance(context).setVoiceIsMute(isVoicePlay) - AmapNaviToDestinationModel.getInstance(context).setTaxiNaviChangedCallback(this) + UiThreadHandler.post{ + AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() + val mCurLatitude = getChassisLocationGCJ02().latitude + val mCurLongitude = getChassisLocationGCJ02().longitude + d( + TAG, + "currentLatLng=$mCurLatitude $mCurLongitude" + ) + val startNaviLatLng = NaviLatLng(mCurLatitude, mCurLongitude) + val endNaviLatLng = NaviLatLng(stationLat, stationLng) + AmapNaviToDestinationModel.getInstance(context).initAMapNavi(startNaviLatLng, endNaviLatLng) + AmapNaviToDestinationModel.getInstance(context).setVoiceIsMute(isVoicePlay) + AmapNaviToDestinationModel.getInstance(context).setTaxiNaviChangedCallback(this) + } } /** @@ -595,16 +615,25 @@ class TaxiCurrentTaskFragment : BaseFragment(), * @param meters 米 * @param timeInSecond 秒 */ - fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) { - val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return - if (currentTaskWithOrder.endSite == null && currentTaskWithOrder == null) return - d("NaviToDestinationModel", "taskUitl, ${TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond)}") - taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond) + private fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) { + UiThreadHandler.post { + val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return@post + d( + TAG, + "updateCurrentTaskTripInfo, taskUtil, ${ + TaskUtils.getCurrentTaskTripHtml( + meters, + timeInSecond + ) + }" + ) + taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond) + } } override fun onDestroyView() { AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() - updatePrepareTaskDelay120SUI(false) + updatePrepareTaskDelayUI(0, false) super.onDestroyView() } @@ -687,7 +716,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), * @param isShow */ private fun showNaviToEndStationFragment(isShow: Boolean) { - mTaxiFragment?.startNaviToEndStation(isShow) + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_START_NAVI_TO_END_STATION) + .post(this.lifecycleScope, isShow) } override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) { @@ -697,7 +727,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) { d(TAG, "isPlay = $isPlay, isRestart=$isRestart") if (!isRestart) { - mTaxiFragment?.showAmapNaviToStationFragment(false) + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT) + .post(this.lifecycleScope, false) return } val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() @@ -715,7 +746,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), } if ((currentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code && currentTaskWithOrder.order == null) - || (currentTaskWithOrder?.order?.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code)) { + || (currentTaskWithOrder?.order?.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code) + ) { if (naviToEnd.visibility == View.GONE) { naviToEnd.visibility = View.VISIBLE } @@ -726,10 +758,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), fun onNaviToEndStationByAmap(isShow: Boolean) { val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return - mTaxiFragment?.showAmapNaviToStationFragment( - if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) - isShow else true - ) + FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT) + .post( + this.lifecycleScope, + if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) + isShow + else + true + ) updateRemainDistanceAndTime( if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) isShow else true diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index cab5dae978..3beff6419b 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -12,6 +12,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.och.common.module.wigets.StartAutopilotAnimationView import com.mogo.och.taxi.R import com.mogo.och.taxi.base.BaseViewModel import com.mogo.och.taxi.base.IUiIntent @@ -21,6 +22,7 @@ import com.mogo.och.taxi.bean.TrajectoryListRespBean import com.mogo.och.taxi.callback.ITaxiCarServiceCallback import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback import com.mogo.och.taxi.constant.TaskStatusEnum +import com.mogo.och.taxi.constant.TaskTypeEnum import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager @@ -142,7 +144,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - private fun startTask() { + private fun startTask(isStartAutopilot: Boolean = true) { if (!TaxiTaskModel.checkCurrentTaskCondition()) { ToastUtils.showShort("无任务!") return @@ -154,7 +156,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), it.order!!.orderLine else it.lineId - ) + ,isStartAutopilot) } } @@ -173,11 +175,11 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - private fun updatePrepareTaskDelay120SUI(isStart: Boolean){ + private fun updatePrepareTaskDelayUI(delayTime: Long, isStart: Boolean) { d(TAG, "UpdatePrepareTaskDelay120SUI = $isStart") sendUiState { copy( - taskWithOrderUIState = TaskWithOrderUIState.UpdatePrepareTaskDelay120S( + taskWithOrderUIState = TaskWithOrderUIState.UpdatePrepareTaskDelay(delayTime, isStart ) ) @@ -195,30 +197,62 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } - private fun updateOrderTotalMileAndDurationUI(mileage: Float, duration: Int) { - d(TAG, "updateOrderTotalMileAndDurationUI") + private fun updateOrderTripInfoUI(mileage: Float, duration: Int) { + d(TAG, "updateOrderTripInfoUI") sendUiState { copy( - taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripInfo( + taskWithOrderUIState = TaskWithOrderUIState.UpdateOrderTripInfo( mileage, duration ) ) } } + private fun updateTaskTripInfoLocalCalculateUI(meters: Long, timeInSecond: Long) { + d(TAG, "UpdateTaskTripInfoLocalCalculateUI") + sendUiState { + copy( + taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripLocalCalculateInfo( + meters, timeInSecond + ) + ) + } + } + override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) { d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result)) DebugView.printInfoMsg("[查询TaskWithOrder信息] 更新数据, 刷新UI") updateTaskAndOrderUi(result) } - override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) { - d(TAG, "onTaskCompleted: isOrderArrivedAtStart=$isOrderArrivedAtStart, siteId=$siteId") - if (isOrderArrivedAtStart) { - TaxiTaskModel.removePrepareTaskDelay120S() - TaxiTaskModel.prepareNextTask(siteId) - } else { - TaxiTaskModel.startPrepareTaskDelay120S(siteId) + /** + * 开始倒计时120s或者10s拉取任务 + * 演练任务120s拉取 + * 接驾任务10s拉取 + */ + override fun onTaskCompleted(result: QueryCurrentTaskRespBean.Result) { + d(TAG, "onTaskCompleted: ${result?.currentStatus}, siteId=${result?.endSite?.siteId}") + + if (result.order != null && result.servingStatus == 1){ + if (result.taskType <= TaskTypeEnum.VirtualTask.code + && result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { + VoiceNotice.showNotice("已为您接到订单") + } + if (result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtStart.code){ + VoiceNotice.showNotice("已到达上车地点,等待乘客上车") + } + } + + if (QueryCurrentTaskRespBean.isUserArriveAtStart(result)) { + TaxiTaskModel.removePrepareTaskDelay() + TaxiTaskModel.prepareNextTask(0,result.endSite!!.siteId) + }else if (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) + || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)){ + TaxiTaskModel.startPrepareTaskDelay( + if (TaskTypeEnum.isToOrderStartTask(result)) + TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL + else TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, + result.endSite!!.siteId) } } @@ -229,15 +263,19 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun onOrderCancel() { VoiceNotice.showNotice("已取消行程") // updateTaskAndOrderUi(null) + //取消自驾,D档位会溜车 map3.6.0 修改 + TaxiTaskModel.cancelAutopilot() } override fun onOrderArriveAtEnd(orderNo: String) { TaxiTaskModel.queryOrderByOrderNo(orderNo) } - override fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) { - //更新总全程信息(公里和分钟) - updateOrderTotalMileAndDurationUI(mileage, duration) + /** + * 更新总全程信息(公里和分钟), 后端返回的数据 + */ + override fun onOrderTripInfoChanged(mileage: Float, duration: Int) { + updateOrderTripInfoUI(mileage, duration) } override fun onOrderJourneyCompleted() { @@ -245,22 +283,50 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), //获取新的任务 val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.endSite?.also { - TaxiTaskModel.startPrepareTaskDelay120S(it.siteId) + TaxiTaskModel.startPrepareTaskDelay(TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S, + it.siteId) } } - override fun onStartAutopilot() { - UiThreadHandler.postDelayed({ - startTask() //状态流转 - VoiceNotice.showNotice("车辆正在自动开启自动驾驶") - }, TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL) // 10s后开启自驾, 状态流转 + override fun onStartAutopilot(postDelayTime: Long) { + UiThreadHandler.postDelayed(startTaskRunnable, postDelayTime) // 10s后或者倒计时继续开启自驾, 状态流转 + } + + private val startTaskRunnable: Runnable = Runnable { + startTask() //状态流转 + VoiceNotice.showNotice("车辆正在自动开启自动驾驶") } /** - * 开始倒计时120拉取任务 + * 主动请求平行驾驶, 停止启动自驾命令, 任务状态需向下流转 */ - override fun onStartPrepareTask120s(isStart: Boolean) { - updatePrepareTaskDelay120SUI(isStart) + override fun onStopAutopilot() { + UiThreadHandler.removeCallbacks(startTaskRunnable) + if (!TaxiTaskModel.checkCurrentTaskCondition()) { + d(TAG, "onStopAutopilot: 无任务无需流转状态") + return + } + startTask(false) + } + + override fun onPauseStartAutopilot() { + UiThreadHandler.removeCallbacks(startTaskRunnable) + } + + /** + * 开始倒计时120s或者10s拉取任务 + * 演练任务120s拉取 + * 接驾任务10s拉取 + */ + override fun onStartPrepareTaskUI(delayTime: Long, isStart: Boolean) { + updatePrepareTaskDelayUI(delayTime, isStart) + } + + /** + * 更新本次任务行程信息, 本地计算的数据 + */ + override fun onTaskTripInfoLocalCalculateChanged(meters: Long, timeInSecond: Long) { + updateTaskTripInfoLocalCalculateUI(meters, timeInSecond) } override fun onCarEndServiceSuccess( @@ -269,7 +335,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), ) { if (currentTaskWithOrder?.endSite != null && (currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code - ||currentTaskWithOrder.order != null) + || currentTaskWithOrder.order != null) ) { VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") return diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index a522dc0862..b0ba113e37 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -14,7 +14,6 @@ import com.mogo.commons.module.status.MogoStatusManager import com.mogo.commons.module.status.StatusDescriptor import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters -import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.map.MogoLocation @@ -32,12 +31,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.CoordinateUtils -import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils -import com.mogo.eagle.core.utilcode.util.NetworkUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.eagle.core.utilcode.util.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager import com.mogo.och.common.module.biz.common.socketmessage.data.OCHOperationalMessage import com.mogo.och.common.module.biz.constant.LoginStatusManager @@ -54,22 +48,9 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations import com.mogo.och.common.module.voice.VoiceNotice -import com.mogo.och.taxi.bean.PrepareTaskRespBean -import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean -import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean -import com.mogo.och.taxi.bean.StartServiceRespBean -import com.mogo.och.taxi.bean.TrajectoryListRespBean -import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback -import com.mogo.och.taxi.callback.ITaxiADASStatusCallback -import com.mogo.och.taxi.callback.ITaxiCarServiceCallback -import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback -import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback -import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback -import com.mogo.och.taxi.constant.TaskStatusEnum -import com.mogo.och.taxi.constant.TaskTypeEnum -import com.mogo.och.taxi.constant.TaxiCarServingStatusManager -import com.mogo.och.taxi.constant.TaxiOrderStatusEnum -import com.mogo.och.taxi.constant.TaxiUnmannedConst +import com.mogo.och.taxi.bean.* +import com.mogo.och.taxi.callback.* +import com.mogo.och.taxi.constant.* import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager import com.mogo.och.taxi.ui.debug.DebugView @@ -84,10 +65,9 @@ import io.reactivex.schedulers.Schedulers import mogo.telematics.pad.MessagePad.ArrivalNotification import mogo.telematics.pad.MessagePad.GlobalPathResp import mogo_msg.MogoReportMsg.MogoReportMessage -import system_master.SsmInfo -import system_master.SystemStatusInfo import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.TimeUnit +import kotlin.math.ceil /** * @author: wangmingjun @@ -136,7 +116,9 @@ object TaxiTaskModel { private val mCurrentTaskRoutePointsGcj: MutableList = ArrayList() - private var mPrepareTaskDelay120SRunnable: Runnable? = null + private var mPrepareTaskDelayRunnable: Runnable? = null + + private var mIsArrivedSiteStartTag = false //到站接口请求标志位,防止围栏触发多次调用到站接口, true 接口请求, false : 接口请求完成 fun addTaskWithOrderListener(tag: String, listener: ITaxiTaskWithOrderCallback) { if (mTaxiTaskWithOrderCallbackMap.containsKey(tag)) { @@ -181,7 +163,7 @@ object TaxiTaskModel { return mCurrentTaskWithOrder } - fun getCurrentOrderTrajectoryList(): MutableList? { + fun getCurrentOrderTrajectoryList(): MutableList { return mTaskTrajectoryList } @@ -243,23 +225,41 @@ object TaxiTaskModel { AbnormalFactorsLoopManager.stopLoopAbnormalFactors() } + /** + * brakeStatus: true: 恢复启动自驾 + * false: 暂停启动自驾 + */ + fun handleBrakeStatusChange(brakeStatus: Boolean) { + if (brakeStatus) { + mControllerStatusCallback?.resumeOpenAutopilotNonManual() + } else { + mControllerStatusCallback?.pauseOpenAutopilotNonManual() + } + } + private val mMogoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotDockerInfo(dockerVersion: String) {} - override fun onAutopilotRouteLineId(lineId: Long) {} override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) { - DebugView.printInfoMsg("[域控连接状态变化] status=$status, reason=${if (TextUtils.isEmpty(reason)) "" else reason}") + DebugView.printInfoMsg( + "[域控连接状态变化] status=$status, reason=${ + if (TextUtils.isEmpty( + reason + ) + ) "" else reason + }" + ) } + override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) { TaxiTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo) } - override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {} override fun onAutopilotStatusResponse(state: Int) { + i(TAG, "onAutopilotStatusResponse autopilotsState= $state") if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中") mADASStatusCallback?.onAutopilotRunning() - if ((QueryCurrentTaskRespBean.isOrderOnTheWayToEnd(mCurrentTaskWithOrder))) { + if ((QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder))) { TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( isRestartAutopilot, true, @@ -283,12 +283,8 @@ object TaxiTaskModel { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_ENABLE,meaning=可自动驾驶,人工干预状态") if ((FunctionBuildConfig.isDemoMode && checkCurrentTaskCondition() - && (QueryCurrentTaskRespBean.isOrderOnTheWayToEnd( - mCurrentTaskWithOrder - ) - || QueryCurrentTaskRespBean.isOrderArriveAtEnd( - mCurrentTaskWithOrder - ))) + && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder) + ) ) { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return @@ -298,29 +294,21 @@ object TaxiTaskModel { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶") if ((FunctionBuildConfig.isDemoMode && checkCurrentTaskCondition() - && (QueryCurrentTaskRespBean.isOrderOnTheWayToEnd( - mCurrentTaskWithOrder - ) - || QueryCurrentTaskRespBean.isOrderArriveAtEnd( - mCurrentTaskWithOrder - ))) + && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder) + ) ) { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return } - if (mADASStatusCallback != null) { - mADASStatusCallback!!.onAutopilotDisable() - } + mADASStatusCallback?.onAutopilotDisable() } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中") if (FunctionBuildConfig.isDemoMode) { if ((checkCurrentTaskCondition() - && (QueryCurrentTaskRespBean.isOrderOnTheWayToEnd( + && QueryCurrentTaskRespBean.isStartTaskType( mCurrentTaskWithOrder ) - || QueryCurrentTaskRespBean.isOrderArriveAtEnd( - mCurrentTaskWithOrder - ))) + ) ) { //订单中 // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 } else { //美化模式下没订单,显示人工驾驶 @@ -332,7 +320,6 @@ object TaxiTaskModel { } } - override fun onAutopilotSNRequest() {} override fun onAutopilotArriveAtStation(arrivalNotification: ArrivalNotification?) { i(TAG, "onAutopilotArriveAtStation = ${arrivalNotification.toString()}") DebugView.printInfoMsg("[MAP到站通知] 上报到站,location=${arrivalNotification?.endLocation}") @@ -356,9 +343,6 @@ object TaxiTaskModel { } } - override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} - - override fun onSystemStatus(statusInf: SsmInfo.SsmStatusInf) {} } private val mMogoStatusChangedListener: IMogoStatusChangedListener = @@ -384,7 +368,6 @@ object TaxiTaskModel { if (checkCurrentTaskCondition() && QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder) ) { -// judgeTaskStartStation(mogoLocation) judgeTaskEndSiteStation(mogoLocation) } @@ -405,7 +388,7 @@ object TaxiTaskModel { if (checkCurrentTaskCondition()) { d(TAG, "--------本地开始计算全路径数据---------- ") //转换成高德坐标系 - if (mCurrentTaskRoutePointsGcj!!.size > 0) { + if (mCurrentTaskRoutePointsGcj.size > 0) { mCurrentTaskRoutePointsGcj.clear() } mCurrentTaskRoutePointsGcj.addAll( @@ -440,6 +423,11 @@ object TaxiTaskModel { mADASStatusCallback?.onStartAdasFailure() } } + + override fun brakeStatusChanged(isBrakeAvailable: Boolean) { + //刹车: true 松开, false 踩下 2020.9.23刹车需求暂时下掉 +// handleBrakeStatusChange(isBrakeAvailable) + } } private val mMogoOnSocketMessageListener = @@ -448,7 +436,7 @@ object TaxiTaskModel { return OCHOperationalMessage::class.java } - override fun onMsgReceived(obj: OCHOperationalMessage) { + override fun onMsgReceived(obj: OCHOperationalMessage?) { if (obj == null) { d(TAG, "onMsgReceived = null") return @@ -476,16 +464,19 @@ object TaxiTaskModel { } private val localCalculateDistanceListener: IDistanceListener = object : IDistanceListener { - override fun distanceCallback(lastSumLength: Float) { - val lastTime = lastSumLength / TaxiUnmannedConst.TAXI_AVERAGE_SPEED * 3.6 //秒 + override fun distanceCallback(distance: Float) { + val lastTime = distance / TaxiUnmannedConst.TAXI_AVERAGE_SPEED * 3.6 //秒 d( TAG, - "dynamicCalculateRouteInfo: lastSumLength=$lastSumLength, lastTime=$lastTime, threadName=Thread.currentThread().name" - ) - mOrderStatusCallback?.onCurrentOrderDistToEndChanged( - lastSumLength.toLong(), - lastTime.toLong() + "dynamicCalculateRouteInfo: lastSumLength=$distance, lastTime=$lastTime, threadName=Thread.currentThread().name" ) + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onTaskTripInfoLocalCalculateChanged( + distance.toLong(), + lastTime.toLong() + ) + } } } @@ -516,7 +507,7 @@ object TaxiTaskModel { ) routeArrivingTemp.add(temp) } - mAutopilotPlanningCallback!!.routeResult( + mAutopilotPlanningCallback?.routeResult( routeArriviedTemp, routeArrivingTemp, location @@ -545,23 +536,6 @@ object TaxiTaskModel { } } - //根据围栏判断,是否到达起点 - private fun judgeTaskStartStation(location: MogoLocation) { - if (checkCurrentTaskCondition()) { - val startSite = mCurrentTaskWithOrder!!.startSite ?: return - val startLon = startSite.gcjLon - val startLat = startSite.gcjLat - val distance = CoordinateUtils.calculateLineDistance( - startLon, startLat, - location.longitude, location.latitude - ).toDouble() - i(TAG, "judgeTaskStartStation() distance = $distance") - if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { - submitArriveSite(startSite.siteId, false) - } - } - } - private fun autopilotArriveAtStation() { if (!checkCurrentTaskCondition()) return i( @@ -582,6 +556,12 @@ object TaxiTaskModel { siteId: Long, isArriveAtEndSite: Boolean, isArrivedNearestStation: Boolean = false ) { + if (mIsArrivedSiteStartTag) { + DebugView.printInfoMsg("arriveSite接口正在调用中") + i(TAG, message = "arriveSite接口正在调用中 mIsArrivedSite = $mIsArrivedSiteStartTag") + return + } + mIsArrivedSiteStartTag = true DebugView.printInfoMsg("[上报ArriveSite] siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") i(TAG, message = "submitArriveSite: siteId=$siteId isArriveAtEndSite=$isArriveAtEndSite") TaxiTaskWithOrderServiceManager.arriveSite( @@ -589,7 +569,10 @@ object TaxiTaskModel { siteId, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { - if (data == null || data.code != 0) return + if (data == null || data.code != 0) { + mIsArrivedSiteStartTag = false + return + } DebugView.printInfoMsg("[上报ArriveSite] success siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") d(TAG, "submitArriveSite-onSuccess data=" + GsonUtil.jsonFromObject(data)) mDriveToNearestStationTask = null @@ -598,14 +581,14 @@ object TaxiTaskModel { } if (isArriveAtEndSite) { - updateLocalCalculateStation() - //到站后不再调用取消自驾. 原因是取消自驾,D档位会溜车 - //cancelAutopilot() + //取消自驾,D档位会溜车 map3.6.0 修改 + cancelAutopilot() } } override fun onError() { super.onError() + mIsArrivedSiteStartTag = false if (!NetworkUtils.isConnected(mContext)) { // 网络异常,接口重试 ToastUtils.showShort("网络出现异常,请稍后重试") DebugView.printErrorMsg("[上报ArriveSite] 网络出现异常,请稍后重试") @@ -616,6 +599,7 @@ object TaxiTaskModel { } override fun onFail(code: Int, msg: String?) { + mIsArrivedSiteStartTag = false DebugView.printErrorMsg("[上报ArriveSite] failed, code=$code, msg=$msg") d(TAG, "code=$code msg=$msg") ToastUtils.showShort("到站接口请求出现异常,请稍后重试,code=$code msg=$msg") @@ -682,7 +666,7 @@ object TaxiTaskModel { ) return } - val result: QueryCurrentTaskRespBean.Result = data.data!! + val result: QueryCurrentTaskRespBean.Result? = data.data d( TAG, "queryCurrentTaskOnce onSuccess:result=${GsonUtil.jsonFromObject(result)}" @@ -709,27 +693,15 @@ object TaxiTaskModel { } //订单或者伪任务更新, 都去刷新下界面 - if (mCurrentTaskWithOrder == null - || !mCurrentTaskWithOrder!!.equals(result) - ) { + if (mCurrentTaskWithOrder == null || mCurrentTaskWithOrder!! != result) { d(TAG, "queryCurrentTaskOnce: 更新本地数据") mCurrentTaskWithOrder = result - if (result.order != null && result.currentStatus == TaskStatusEnum.CompleteTask.code - && result.servingStatus == 1){ - if (result.taskType <= TaskTypeEnum.VirtualTask.code - && result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { - VoiceNotice.showNotice("已为您接到订单") - } - if (result.taskType == TaskTypeEnum.ToOrderStartTask.code - && result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtStart.code){ - VoiceNotice.showNotice("已到达上车地点,等待乘客上车") - } - } + updateLocalCalculateStation() // 任务为空 - if (result.endSite == null && result.order == null) { + if (result?.endSite == null && result?.order == null) { d(TAG, "queryCurrentTaskOnce: 任务为空") if (mDriveToNearestStationTask == null) { mTaxiTaskWithOrderCallbackMap.forEach { @@ -737,6 +709,7 @@ object TaxiTaskModel { listener.onTaskWithOrderDataChanged(null) } } + clearCurrentOCHOrder() return } @@ -744,26 +717,20 @@ object TaxiTaskModel { //8.29更新: 当前任务完成且订单状态为乘客已上车, 则立马去拉取任务 不再等120s,否则送驾任务要等120s后才能去执行 // 主要是解决A-B演练任务同时接到A-B订单状态流转的问题 //注意: 需要去除到达乘客上车点的节点, 这个节点不拉取任务 - if (result?.currentStatus == TaskStatusEnum.CompleteTask.code - && (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) - || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)) + if (result.currentStatus == TaskStatusEnum.CompleteTask.code ) { + mIsArrivedSiteStartTag = false //任务完成说明到站, 更新到站标识位, 不再到站接口请求成功更新 + mADASStatusCallback?.updateAutopilotStatus() mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value - listener.onTaskCompleted( - QueryCurrentTaskRespBean.isUserArriveAtStart( - result - ), - result.endSite!!.siteId - ) + listener.onTaskCompleted(result) } } - updateLocalCalculateStation() - //达到终点后查询全程里程和用时 if (QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)) { d(TAG, "queryCurrentTaskOnce ArriveAtEnd") + mIsArrivedSiteStartTag = false mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onOrderArriveAtEnd(result.order!!.orderNo) @@ -771,7 +738,7 @@ object TaxiTaskModel { } //根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合, 没有送驾任务 - var linesIds = arrayListOf() + val linesIds = arrayListOf() linesIds.add(result.lineId) // 当前任务的 result.order?.also { linesIds.addAll(it.planningLines) // 接驾 @@ -789,7 +756,7 @@ object TaxiTaskModel { mControllerStatusCallback?.startOpenAutopilotNonManual() mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value - listener.onStartAutopilot() + listener.onStartAutopilot(TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL) } } } @@ -800,6 +767,7 @@ object TaxiTaskModel { listener.onTaskWithOrderDataChanged(mCurrentTaskWithOrder) } } + updateDemoModeAndAutopilotParameters(result) } } @@ -831,10 +799,11 @@ object TaxiTaskModel { } fun updateLocalCalculateStation() { - if (mCurrentTaskWithOrder == null) return - if (mCurrentTaskWithOrder!!.startSite != null && mCurrentTaskWithOrder!!.endSite != null - && mCurrentTaskWithOrder!!.currentStatus <= TaskStatusEnum.StartTask.code + if (mCurrentTaskWithOrder != null && + mCurrentTaskWithOrder?.startSite != null && mCurrentTaskWithOrder?.endSite != null + && mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.StartTask.code ) { + d(TAG, "updateLocalCalculateStation start") val curTaskAndOrder = getCurrentTaskWithOrder() ?: return if (curTaskAndOrder.startSite != null && curTaskAndOrder.endSite != null) { val startStation = MogoLocation() @@ -846,6 +815,10 @@ object TaxiTaskModel { setStationPoint(startStation, endStation, curTaskAndOrder.lineId) } } else { + d(TAG, "updateLocalCalculateStation stop") + if (mDriveToNearestStationTask == null){ + AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi() + } setStationPoint(null, null, -1L) } } @@ -869,9 +842,9 @@ object TaxiTaskModel { TaxiOrderStatusEnum.ArriveAtEnd.code -> { mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value - listener.onOrderTotalMileAndDurationChanged( + listener.onOrderTripInfoChanged( data.data.mileage, - data.data.duration.toInt() + ceil(data.data.duration.toDouble()).toInt() //向上取整 ) } } @@ -896,7 +869,7 @@ object TaxiTaskModel { }) } - fun startTask(lineId: Long) { + fun startTask(lineId: Long, isStartAutopilot: Boolean) { DebugView.printInfoMsg("[开始任务] 准备发送请求,lindId=$lineId") TaxiTaskWithOrderServiceManager.startTask( mContext, @@ -904,7 +877,9 @@ object TaxiTaskModel { object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { DebugView.printInfoMsg("[开始任务] 请求success,lindId=$lineId") - startAutoPilot() //自驾开启 + if (isStartAutopilot) { + startAutoPilot() //自驾开启 + } d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}") } @@ -927,7 +902,7 @@ object TaxiTaskModel { }) } - fun prepareNextTask(siteId: Long) { + fun prepareNextTask(delayTime: Long, siteId: Long) { DebugView.printInfoMsg("[PrepareNextTask] 准备发送请求, siteId=$siteId") TaxiTaskWithOrderServiceManager.prepareTask( mContext, @@ -946,39 +921,39 @@ object TaxiTaskModel { DebugView.printErrorMsg("[PrepareNextTask] 请求fail, code=$code ,msg=$msg") d(TAG, "prepareNextTask onFail: code=$code ,msg=$msg") if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()) { - startPrepareTaskDelay120S(siteId) + startPrepareTaskDelay(delayTime, siteId) } } }) } - fun startPrepareTaskDelay120S(siteId: Long) { - removePrepareTaskDelay120S() + fun startPrepareTaskDelay(delayTime: Long, siteId: Long) { + removePrepareTaskDelay() - mPrepareTaskDelay120SRunnable = Runnable { - prepareNextTask(siteId) + mPrepareTaskDelayRunnable = Runnable { + prepareNextTask(delayTime, siteId) } mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value - listener.onStartPrepareTask120s(true) + listener.onStartPrepareTaskUI(delayTime, true) } - DebugView.printInfoMsg("[PrepareNextTask] 倒计时${TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S / 1000}秒后prepareNextTask, siteId=$siteId") + DebugView.printInfoMsg("[PrepareNextTask] 倒计时${delayTime / 1000}秒后prepareNextTask, siteId=$siteId") UiThreadHandler.postDelayed( - mPrepareTaskDelay120SRunnable, - TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S + mPrepareTaskDelayRunnable, + delayTime ) } - fun removePrepareTaskDelay120S() { - if (mPrepareTaskDelay120SRunnable != null) { + fun removePrepareTaskDelay() { + if (mPrepareTaskDelayRunnable != null) { DebugView.printInfoMsg("[PrepareNextTask] removeCallbacks, 取消prepareNextTask倒计时") - UiThreadHandler.removeCallbacks(mPrepareTaskDelay120SRunnable) + UiThreadHandler.removeCallbacks(mPrepareTaskDelayRunnable) mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value - listener.onStartPrepareTask120s(false) + listener.onStartPrepareTaskUI(0, false) } - mPrepareTaskDelay120SRunnable = null + mPrepareTaskDelayRunnable = null } } @@ -986,7 +961,13 @@ object TaxiTaskModel { * 查询当前任务的轨迹 */ fun queryTaskTrajectoryByLineIds(planningLineIds: Array, currentTaskLineId: Long) { - DebugView.printInfoMsg("[查询轨迹信息] 准备发送请求,currentTaskLineId=$currentTaskLineId, planningLineIds=$planningLineIds") + DebugView.printInfoMsg( + "[查询轨迹信息] 准备发送请求,currentTaskLineId=$currentTaskLineId, planningLineIds=${ + GsonUtil.jsonFromObject( + planningLineIds + ) + }" + ) TaxiTaskWithOrderServiceManager.queryTrajectoryByLindIds( mContext, planningLineIds, @@ -996,7 +977,13 @@ object TaxiTaskModel { TAG, "queryTaskTrajectoryByLineIds onSuccess: ${GsonUtil.jsonFromObject(data?.data)}" ) - DebugView.printInfoMsg("[查询轨迹信息] 请求success, currentTaskLineId=$currentTaskLineId, planningLineIds=$planningLineIds") + DebugView.printInfoMsg( + "[查询轨迹信息] 请求success, currentTaskLineId=$currentTaskLineId, planningLineIds=${ + GsonUtil.jsonFromObject( + planningLineIds + ) + }" + ) data?.data?.also { mTaskTrajectoryList.addAll(it) mCurrentTaskTrajectory = it.first { currentTaskLineId == it.lineId } @@ -1049,8 +1036,8 @@ object TaxiTaskModel { //暂停接单状态下,去接单 DebugView.printInfoMsg("[开始接单] 准备发送请求") TaxiTaskWithOrderServiceManager.startService(mContext, - CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude, - CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude, + getChassisLocationGCJ02().latitude, + getChassisLocationGCJ02().longitude, object : OchCommonServiceCallback { override fun onSuccess(data: StartServiceRespBean?) { if (data == null) return @@ -1064,6 +1051,10 @@ object TaxiTaskModel { currentStatus < TaskStatusEnum.CompleteTask.code -> return } } + if (currentStatus == TaskStatusEnum.None.code && order != null){ + //订单送驾到站, 但是还没点服务完成的情况, 此时endSite == null currentStatus == 0 + return + } } mDriveToNearestStationTask = data.data mTaxiCarServiceCallback?.onCarStartServiceSuccess( @@ -1094,6 +1085,19 @@ object TaxiTaskModel { nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_TAXI_START_AUTOPILOT, paramIndexes = [-1] ) + + fun startAutopilotByClick() { + //订单状态流转成功, 点击了开启自驾按钮, 启动自驾 + if (QueryCurrentTaskRespBean.isStartTaskType(mCurrentTaskWithOrder)) { + startAutoPilot() + } else if (QueryCurrentTaskRespBean.isGetTaskType(mCurrentTaskWithOrder)) { + startTask(mCurrentTaskWithOrder!!.lineId, true) + } else { + e(TAG, "task currentStatus is not StartTask.") + DebugView.printInfoMsg("[启自驾] task currentStatus is not StartTask") + } + } + fun startAutoPilot() { DebugView.printInfoMsg("[启自驾] startAutoPilot") if (!checkCurrentTaskCondition()) { @@ -1107,6 +1111,7 @@ object TaxiTaskModel { e(TAG, "no order or order is empty.") DebugView.printErrorMsg("[启自驾] 轨迹信息不存在!") ToastUtils.showShort("轨迹信息不存在!") + return } //根据开关和后台是否发布轨迹启动自驾 @@ -1144,12 +1149,6 @@ object TaxiTaskModel { return } - //在订单状态还没流转成功时, 点击了开启自驾按钮, 先去做状态流转成功再启动自驾 - if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code) { - startTask(mCurrentTaskWithOrder!!.lineId) - return - } - //点击开始自动驾驶按钮订单状态去流转, 不再与自动驾驶是否启动成功挂钩 isRestartAutopilot = mCurrentTaskWithOrder!!.currentStatus != TaskStatusEnum.StartTask.code @@ -1158,6 +1157,7 @@ object TaxiTaskModel { e(TAG, "AutopilotControlParameters is empty.") return } + CallerAutoPilotControlManager.startAutoPilot(parameters) DebugView.printInfoMsg("[启自驾] 调用成功") d( @@ -1175,9 +1175,7 @@ object TaxiTaskModel { mCurrentTaskWithOrder!!.lineId, if (mCurrentTaskWithOrder!!.order != null) mCurrentTaskWithOrder!!.order!!.orderNo else "" ) - if (mControllerStatusCallback != null) { - mControllerStatusCallback!!.startOpenAutopilot() - } + mControllerStatusCallback?.startOpenAutopilot() } private fun initAutopilotControlParameters(): AutopilotControlParameters? { @@ -1313,40 +1311,33 @@ object TaxiTaskModel { curTaskAndOrder.endSite!!.gcjLat, curTaskAndOrder.endSite!!.gcjLon ) - if (mAutopilotPlanningCallback != null) { - mAutopilotPlanningCallback!!.setLineMarker(startStation, endStation) - } + mAutopilotPlanningCallback?.setLineMarker(startStation, endStation) } } private fun cleanLineMarker() { - if (mAutopilotPlanningCallback != null) { - mAutopilotPlanningCallback!!.setLineMarker(null, null) - } + mAutopilotPlanningCallback?.setLineMarker(null, null) } /** * 清除任务订单信息 */ fun clearCurrentOCHOrder() { - mCurrentTaskWithOrder = null - mDriveToNearestStationTask = null clearAutopilotControlParameters() - TaxiTrajectoryManager.getInstance().syncTrajectoryInfo() - SharedPrefsMgr.getInstance(mContext).remove(TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER) + mIsArrivedSiteStartTag = false isRestartAutopilot = false if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false CallerAutoPilotControlManager.setIgnoreConditionDraw(false) CallerAutoPilotControlManager.setIPCDemoMode(false) - d(TAG, "美化模式-ignore:置为false(已完成or清除当前订单)") + d(TAG, "美化模式-ignore:置为false(已完成or清除当前任务)") } } // 登出 fun logout() { - loginService!!.loginOut( + loginService?.loginOut( getChassisLocationGCJ02().latitude, getChassisLocationGCJ02().longitude ) @@ -1357,40 +1348,31 @@ object TaxiTaskModel { //导航去订单终点目的地 fun startNaviToEndStation(isShow: Boolean) { - if (mCurrentTaskRoutePointsGcj == null) return if (mCurrentTaskRoutePointsGcj.size > 0) { //使用自驾轨迹 - if (mOrderStatusCallback != null) { - mOrderStatusCallback!!.onNaviToEnd(false, isShow) - } + mOrderStatusCallback?.onNaviToEnd(false, isShow) } else { //若直接要显示导航地图则直接导航, 若不是则2s后若无轨迹数据使用高德导航 - if (isShow && mOrderStatusCallback != null) { - mOrderStatusCallback!!.onNaviToEnd(true, true) + if (isShow) { + mOrderStatusCallback?.onNaviToEnd(true, true) } else { UiThreadHandler.postDelayed({ - if (mCurrentTaskRoutePointsGcj.size == 0 && mOrderStatusCallback != null) { - mOrderStatusCallback!!.onNaviToEnd(true, false) + if (mCurrentTaskRoutePointsGcj.size == 0) { + mOrderStatusCallback?.onNaviToEnd(true, false) } }, 2000L) } } } - //更新本地currentOrder信息,并保存订单到本地避免车机重启丢失数据 - private fun updateNativeCurrentOrder(data: QueryCurrentTaskRespBean.Result?) { + //运营模式(美化模式), 鹰眼数据同步 + private fun updateDemoModeAndAutopilotParameters(data: QueryCurrentTaskRespBean.Result?) { if (data == null) { return } - mCurrentTaskWithOrder = data - SharedPrefsMgr.getInstance(mContext!!).putString( - TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER, - GsonUtil.jsonFromObject(data) - ) + val endSite = data.endSite - val currentOrder = mCurrentTaskWithOrder!!.order - - if (currentOrder != null) { - if (currentOrder!!.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.code) { + if (endSite != null) { + if (QueryCurrentTaskRespBean.isStartTaskType(data)) { if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true @@ -1400,7 +1382,7 @@ object TaxiTaskModel { } updateAutopilotControlParameters() } - if (currentOrder!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code) { + if (QueryCurrentTaskRespBean.isCompleteTaskType(data)) { if (FunctionBuildConfig.isDemoMode) { d(TAG, "setIPCDemoMode:false") CallerAutoPilotControlManager.setIPCDemoMode(false) @@ -1461,4 +1443,40 @@ object TaxiTaskModel { } startAutoPilot() } + + fun stopAutoStartAutopilot() { + d( + TAG, "stopAutoStartAutopilot = ${mCurrentTaskWithOrder?.currentStatus}" + ) + if (QueryCurrentTaskRespBean.isGetTaskType(mCurrentTaskWithOrder)) { + mControllerStatusCallback?.stopOpenAutopilotNonManual() + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onStopAutopilot() + } + } + } + + fun pauseStartAutopilot() { + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onPauseStartAutopilot() + } + } + + fun resumeStartAutopilot(remainingTime: Long) { + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onStartAutopilot(remainingTime) + } + } + + fun updatePrepareTaskDelayUI() { + if (!TaxiCarServingStatusManager.isCarServingStatus()){ + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onStartPrepareTaskUI(0, false) + } + } + } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt index 4b1f35b416..23b4470f7d 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt @@ -15,12 +15,10 @@ import com.google.android.material.tabs.TabLayout import com.mogo.commons.mvp.BaseFragment import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.och.common.module.utils.FlowBus import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean -import com.mogo.och.taxi.constant.TaskStatusEnum -import com.mogo.och.taxi.constant.TaskTypeEnum -import com.mogo.och.taxi.ui.base.TaxiFragment +import com.mogo.och.taxi.constant.TaxiDriverEventConst import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_tab import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_view_pager import kotlinx.android.synthetic.main.taxi_server_orders_panel.wait_order_num @@ -69,6 +67,7 @@ class TaxiTaskTabFragment : BaseFragment() { override fun initViews() { initTaskTab() + initEventBus() } private fun initTaskTab() { @@ -84,9 +83,7 @@ class TaxiTaskTabFragment : BaseFragment() { if (TAB_POSITION_CURRENT == position) { module_och_taxi_tab.addTab(tab, true) changeTabLayoutUI(tab, true) - currentTaskFragment = TaxiCurrentTaskFragment.newInstance( - parentFragment as TaxiFragment? - ) + currentTaskFragment = TaxiCurrentTaskFragment.newInstance() mFragments.add(currentTaskFragment!!) } else if (TAB_POSITION_NEXT == position) { module_och_taxi_tab.addTab(tab) @@ -183,30 +180,22 @@ class TaxiTaskTabFragment : BaseFragment() { } } - fun onNaviToEndStationByAMap(isShow: Boolean) { - if (null == currentTaskFragment) return - currentTaskFragment!!.onNaviToEndStationByAmap(isShow) + private fun initEventBus() { + FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT) + .register(this) { show -> + wait_order_num.visibility = if (show) View.VISIBLE else View.GONE + } + FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED) + .register(this) { taskWithOrder -> + nextTaskFragment?.onTaskDataChanged(taskWithOrder) + } } - fun onCurrentTaskTripInfoChanged(meters: Long, timeInSecond: Long) { - if (null == currentTaskFragment) return - currentTaskFragment!!.updateCurrentTaskTripInfo(meters, timeInSecond) + fun onNaviToEndStationByAMap(isShow: Boolean) { + currentTaskFragment?.onNaviToEndStationByAmap(isShow) } fun onCarTakeOrderStatusChanged() { - if (null == currentTaskFragment) return - currentTaskFragment!!.onCarTakeOrderStatusChanged() - } - - fun onTaskDataChanged(result: QueryCurrentTaskRespBean.Result?) { - if (null == nextTaskFragment) return - if (result != null && result.taskType == TaskTypeEnum.VirtualTask.code - && result.order != null && result.currentStatus != TaskStatusEnum.CompleteTask.code) { - VoiceNotice.showNotice("已为您提前接到下一订单,待完成当前任务后服务") - wait_order_num.visibility = View.VISIBLE - } else { - wait_order_num.visibility = View.GONE - } - nextTaskFragment!!.onTaskDataChanged(result) + currentTaskFragment?.onCarTakeOrderStatusChanged() } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/MapMakerManager.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/MapMakerManager.kt index a2f0feb736..497a978f18 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/MapMakerManager.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/MapMakerManager.kt @@ -13,7 +13,7 @@ import com.mogo.och.common.module.utils.OCHThreadPoolManager */ object MapMakerManager { - fun addMapMaker(owner: String, uuid: String, lat: Double, lon: Double, resourceId: Int){ + fun addMapMaker(owner: String, uuid: String, lat: Double, lon: Double, resourceId: Int) { val setMapMarkerRunnable = Runnable { CallerLogger.d( @@ -30,24 +30,10 @@ object MapMakerManager { .anchor(0.5f, 0.5f) .set3DMode(true) .isUseGps(true) - .controlAngle(true) + .controlAngle(false) .icon3DRes(resourceId) .latitude(lat) .longitude(lon) - val mapUIController = - CallerMapUIServiceManager.getMapUIController() - if (mapUIController != null) { - val centerLine = - mapUIController.getCenterLineInfo( - lon, lat, -1f - ) - if (null != centerLine) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 - val angle = centerLine.angle - if (angle != null) { - builder.rotate(angle.toFloat()) - } - } - } val overlayManager = CallerMapUIServiceManager.getOverlayManager() overlayManager?.showOrUpdatePoint(builder.build()) @@ -55,7 +41,7 @@ object MapMakerManager { OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable) } - fun removeMapMaker(uuid: String, lat: Double, lon: Double){ + fun removeMapMaker(uuid: String, lat: Double, lon: Double) { //开启线程移除起终点marker设置 val removeMapMarkerRunnable = Runnable { CallerLogger.d( @@ -70,7 +56,7 @@ object MapMakerManager { OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable) } - fun removeAllMapMarkerByOwner(owner: String){ + fun removeAllMapMarkerByOwner(owner: String) { //开启线程移除起终点marker设置 val removeAllMapMarkerRunnable = Runnable { CallerLogger.d( diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00000.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00000.png old mode 100644 new mode 100755 index b71bd0d040..e0c23e8bf6 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00000.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00000.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00001.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00001.png old mode 100644 new mode 100755 index c2ef6ba069..0149a8d568 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00001.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00001.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00002.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00002.png old mode 100644 new mode 100755 index 3ddb02cd12..ecd03ab028 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00002.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00002.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00003.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00003.png old mode 100644 new mode 100755 index 191f809256..603bb5365f Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00003.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00003.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00004.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00004.png old mode 100644 new mode 100755 index c3a1dc0a27..d773fbc271 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00004.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00004.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00005.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00005.png old mode 100644 new mode 100755 index 5c20c76fe1..8d2b53a324 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00005.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00005.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00006.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00006.png old mode 100644 new mode 100755 index 195edee2ff..6a1ebb8c31 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00006.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00006.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00007.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00007.png old mode 100644 new mode 100755 index 693630b658..ec5c802776 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00007.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00007.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00008.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00008.png old mode 100644 new mode 100755 index d4b8ceab85..d0d6b19d24 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00008.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00008.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00009.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00009.png old mode 100644 new mode 100755 index 6e4706a238..30778eef76 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00009.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00009.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00010.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00010.png old mode 100644 new mode 100755 index f8350ebc4e..abe4d221d8 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00010.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00010.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00011.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00011.png old mode 100644 new mode 100755 index 33bb429f93..bdc921b7d9 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00011.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00011.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00012.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00012.png old mode 100644 new mode 100755 index ae5a6bf520..8a3d483dff Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00012.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00012.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00013.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00013.png old mode 100644 new mode 100755 index aafcbc5122..54ce2af7d3 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00013.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00013.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00014.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00014.png old mode 100644 new mode 100755 index 494f1e989b..b466e6501f Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00014.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00014.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00015.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00015.png old mode 100644 new mode 100755 index d8ae01fa79..5e838cdf3a Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00015.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00015.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00016.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00016.png old mode 100644 new mode 100755 index fac9c3acce..4225748f00 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00016.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00016.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00017.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00017.png old mode 100644 new mode 100755 index f2e7e29e0c..6e014ae4a7 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00017.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00017.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00018.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00018.png old mode 100644 new mode 100755 index f01c9de1f1..607c2376f9 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00018.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00018.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00019.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00019.png old mode 100644 new mode 100755 index 1e570e8da5..5ee80ce4d2 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00019.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00019.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00020.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00020.png old mode 100644 new mode 100755 index 86aeabc0cc..3e4662ce40 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00020.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00020.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00021.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00021.png old mode 100644 new mode 100755 index b1f5bf7471..4fe5475a2e Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00021.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00021.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00022.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00022.png old mode 100644 new mode 100755 index 72be9d9104..901a681f50 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00022.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00022.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00023.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00023.png old mode 100644 new mode 100755 index 1d5b705848..9679529de3 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00023.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00023.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00024.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00024.png old mode 100644 new mode 100755 index 367516ea95..23a6e4959b Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00024.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00024.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00025.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00025.png old mode 100644 new mode 100755 index 1d0353e635..40bf3c7add Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00025.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00025.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00026.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00026.png old mode 100644 new mode 100755 index 52945e2c17..7217f2fad6 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00026.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00026.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00027.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00027.png old mode 100644 new mode 100755 index 7a338bd064..7b6676d47a Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00027.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00027.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00028.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00028.png old mode 100644 new mode 100755 index 78dc703a46..91367f87e1 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00028.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00028.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00029.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00029.png old mode 100644 new mode 100755 index 58a450edc1..9ff2c176fc Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00029.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00029.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00030.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00030.png old mode 100644 new mode 100755 index 49d04f78be..546e258fbf Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00030.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00030.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00031.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00031.png old mode 100644 new mode 100755 index c473265692..1489960566 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00031.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00031.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00032.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00032.png old mode 100644 new mode 100755 index baf0ced1fa..49fb411910 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00032.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00032.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00033.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00033.png old mode 100644 new mode 100755 index 3b75e5db6b..f1edc5bc88 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00033.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00033.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00034.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00034.png old mode 100644 new mode 100755 index ca66176618..a5b9c37106 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00034.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00034.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00035.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00035.png old mode 100644 new mode 100755 index e858b504e2..43a6225db0 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00035.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00035.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00036.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00036.png old mode 100644 new mode 100755 index 75dfc4dd21..a7232cf1fb Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00036.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00036.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00037.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00037.png old mode 100644 new mode 100755 index bd6c98b3ff..136ddc0906 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00037.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00037.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00038.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00038.png old mode 100644 new mode 100755 index bb98916b1b..6892edaae9 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00038.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00038.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00039.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00039.png old mode 100644 new mode 100755 index 9e0c60b41b..a50d62d9ec Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00039.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00039.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00040.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00040.png old mode 100644 new mode 100755 index fb59f9763c..6b54e4d30d Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00040.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00040.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00041.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00041.png old mode 100644 new mode 100755 index 26fb304d99..fb664f264d Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00041.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00041.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00042.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00042.png old mode 100644 new mode 100755 index 9e86fa3b7b..4fc21f8560 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00042.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00042.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00043.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00043.png old mode 100644 new mode 100755 index 9ac13d48c5..c57629d01c Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00043.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00043.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00044.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00044.png old mode 100644 new mode 100755 index cfc8198864..06409fd5e0 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00044.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00044.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00045.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00045.png old mode 100644 new mode 100755 index 352acbb165..3d45b30abf Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00045.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00045.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00046.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00046.png old mode 100644 new mode 100755 index cc62f17b67..28090a0036 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00046.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00046.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00047.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00047.png old mode 100644 new mode 100755 index e96c51d714..19a9364eae Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00047.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00047.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00048.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00048.png old mode 100644 new mode 100755 index a9f4a1ff5f..9aeecd3f48 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00048.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00048.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00049.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00049.png old mode 100644 new mode 100755 index 22346bd12a..942b373341 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00049.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00049.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00050.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00050.png old mode 100644 new mode 100755 index cb2512ad6a..f2e0b1464e Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00050.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00050.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00051.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00051.png old mode 100644 new mode 100755 index dfb322b959..b2be366cb3 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00051.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00051.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00052.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00052.png old mode 100644 new mode 100755 index 9e8147e189..bdf082d673 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00052.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00052.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00053.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00053.png old mode 100644 new mode 100755 index 3f261747a8..0074a849bd Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00053.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00053.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00054.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00054.png old mode 100644 new mode 100755 index d794d2f3bb..febf15908e Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00054.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00054.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00055.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00055.png old mode 100644 new mode 100755 index 4d6dc4e91f..b709392f8b Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00055.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00055.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00056.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00056.png old mode 100644 new mode 100755 index 473273f2a6..13bca5e22d Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00056.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00056.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00057.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00057.png old mode 100644 new mode 100755 index 990b4b5503..a548c71f6b Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00057.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00057.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00058.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00058.png old mode 100644 new mode 100755 index 022e80d1d3..4d875f104a Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00058.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00058.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00059.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00059.png old mode 100644 new mode 100755 index efb86c5569..a3bac76723 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00059.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_00059.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00000.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00000.png index 22ba4eaf3b..41113e0a34 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00000.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00000.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00001.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00001.png index ce611901b2..8e479139bb 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00001.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00001.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00002.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00002.png index 244c3e0517..329821726d 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00002.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00002.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00003.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00003.png index c51f8ac566..4c08cf44ee 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00003.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00003.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00004.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00004.png index ea16dfd223..15f8ece01f 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00004.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00004.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00005.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00005.png index 087438db35..a6b6ba6f4e 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00005.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00005.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00006.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00006.png index 297b485e1b..a604497cfa 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00006.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00006.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00007.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00007.png index c916ef48f9..9f2e8bca3b 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00007.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00007.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00008.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00008.png index d73767b6f5..a849e1cf30 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00008.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00008.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00009.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00009.png index 5f6ce673db..b94fd4e080 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00009.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00009.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00010.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00010.png index 690bf7df44..59a1ee3ca1 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00010.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00010.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00011.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00011.png index 8aa7b996b6..a833cdbedd 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00011.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00011.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00012.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00012.png index 9ca8dbe784..678d5e1f43 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00012.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00012.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00013.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00013.png index 388db958a9..f09d14094f 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00013.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00013.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00014.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00014.png index e97f052fb1..1d996567b2 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00014.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00014.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00015.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00015.png index 08681b174c..30a5ca609e 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00015.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00015.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00016.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00016.png index feb9460dd5..19914eac75 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00016.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00016.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00017.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00017.png index 7a057db668..6457e75ae8 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00017.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00017.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00018.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00018.png index 27ff3cc600..f0df474b87 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00018.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00018.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00019.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00019.png index 2c99dd5dc9..6c24204284 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00019.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00019.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00020.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00020.png index 16cdb4bfab..d2b48a1340 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00020.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00020.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00021.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00021.png index b784e1e4c6..69a50de46b 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00021.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00021.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00022.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00022.png index 627f4c9d06..b373863b1a 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00022.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00022.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00023.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00023.png index 46da8e7b5f..6d02b1dfeb 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00023.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00023.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00024.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00024.png index bcdd8963a8..95cc9034d6 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00024.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00024.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00025.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00025.png index 4950874cc5..f6275aa4f8 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00025.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00025.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00026.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00026.png index db24fdd89e..5f1b0ffef8 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00026.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00026.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00027.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00027.png index b3b3358577..ec2ee8ee5a 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00027.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00027.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00028.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00028.png index fc79d79547..113e0b341c 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00028.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00028.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00029.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00029.png index 584e0725f0..15b6c39632 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00029.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00029.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00030.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00030.png index e2027cfc7c..a363e97825 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00030.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00030.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00031.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00031.png index ff69d8e339..10335a15af 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00031.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00031.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00032.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00032.png index c13fe25962..9e3b4fa240 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00032.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00032.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00033.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00033.png index 02036b0e57..8447f738e7 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00033.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00033.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00034.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00034.png index e29d990854..6a26403acb 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00034.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00034.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00035.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00035.png index 114d54e626..01494e84e6 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00035.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00035.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00036.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00036.png index e44f7aba6a..7127a20fdc 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00036.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00036.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00037.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00037.png index 4a718e8b89..f808933e4c 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00037.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00037.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00038.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00038.png index 43c70793e4..e7b2637e1c 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00038.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00038.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00039.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00039.png index 5f909f1271..7c7e6d5f82 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00039.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00039.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00040.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00040.png index de2b95946b..42ed69e297 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00040.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00040.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00041.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00041.png index be65eb18bd..a70c5664d9 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00041.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00041.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00042.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00042.png index b74820d9ab..342410cc94 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00042.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00042.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00043.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00043.png index d751c5a8f6..d9bfbb6aa9 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00043.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00043.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00044.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00044.png index c8c3fe019a..3afa872e55 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00044.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00044.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00045.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00045.png index 79b1f778b9..309437ede4 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00045.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00045.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00046.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00046.png index 66cbb1a8bf..9fdeb5c4fc 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00046.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00046.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00047.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00047.png index e75559ba2b..5a51b33ca7 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00047.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00047.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00048.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00048.png index 0fa9cf95f3..d766d1a8b5 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00048.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00048.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00049.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00049.png index 7445350b68..689e9c4940 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00049.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00049.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00050.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00050.png index 0e4c83c1b3..d4fcdff5ca 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00050.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00050.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00051.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00051.png index 1b05dfb2c4..4cf20d5875 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00051.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00051.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00052.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00052.png index 64f3974bb3..d4d7d4bfac 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00052.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00052.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00053.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00053.png index 9199dda1df..cb2faa96b5 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00053.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00053.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00054.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00054.png index fcc0fa446c..28c50833c6 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00054.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00054.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00055.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00055.png index a0ac37b605..a409e84139 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00055.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00055.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00056.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00056.png index 4879de18eb..84acd73921 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00056.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00056.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00057.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00057.png index b60bc68114..1be70d9bb6 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00057.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00057.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00058.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00058.png index 5dc3945a0c..1f5048dfb2 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00058.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00058.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00059.png b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00059.png index 626c936ee2..d4894dba39 100755 Binary files a/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00059.png and b/OCH/taxi/unmanned-driver/src/main/res/drawable/anim_flow_man_co_00059.png differ diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_base_fragment.xml index f90885b152..d990f1b3fe 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_base_fragment.xml @@ -7,6 +7,7 @@ android:layout_marginTop="@dimen/dp_72"> @@ -184,6 +185,15 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/viewDriverMsgBoxButton" /> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libraries/mapmodule/src/main/res/layout/panel_route_set.xml b/libraries/mapmodule/src/main/res/layout/panel_route_set.xml new file mode 100644 index 0000000000..26e58dd9a0 --- /dev/null +++ b/libraries/mapmodule/src/main/res/layout/panel_route_set.xml @@ -0,0 +1,120 @@ + + + + + + + + +