diff --git a/OCH/mogo-och-bus-passenger/build.gradle b/OCH/mogo-och-bus-passenger/build.gradle index 62581602ae..9a9371477c 100644 --- a/OCH/mogo-och-bus-passenger/build.gradle +++ b/OCH/mogo-och-bus-passenger/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java index d90ec06928..0969ca9ad4 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java @@ -1,5 +1,6 @@ package com.mogo.och.bus.passenger; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; import android.content.Context; @@ -69,14 +70,14 @@ public class MogoOCHBusPassenger implements IMogoOCH { * 进入鹰眼模式,设置手势缩放地图失效 */ private void stepIntoVrMode() { - CallerLogger.INSTANCE.d( M_TAXI_P + TAG, "进入vr模式" ); + CallerLogger.INSTANCE.d( M_BUS_P + TAG, "进入vr模式" ); CallerMoGoUiSettingManager.INSTANCE.stepInDayMode();//白天模式 状态栏字体颜色变黑 } private void showFragment() { FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); if(mPassengerFragment == null){ - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备add fragment======"); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "准备add fragment======"); Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(BusPassengerRouteFragment.TAG); if (fragmentByTag instanceof BusPassengerRouteFragment){ mPassengerFragment = (BusPassengerRouteFragment)fragmentByTag; @@ -89,7 +90,7 @@ public class MogoOCHBusPassenger implements IMogoOCH { return; } - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备show fragment"); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "准备show fragment"); supportFragmentManager.beginTransaction().show(mPassengerFragment).commitAllowingStateLoss(); } diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java index 565372b4a9..2e50c6ddc0 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java @@ -1,15 +1,18 @@ package com.mogo.och.bus.passenger.adapter; +import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_ARRIVING; +import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_LEAVING; +import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_STOPPED; + import android.content.Context; import android.text.TextUtils; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.constraintlayout.widget.Group; import androidx.recyclerview.widget.RecyclerView; import com.mogo.och.bus.passenger.R; @@ -19,10 +22,6 @@ import com.mogo.och.common.module.wigets.MarqueeTextView; import java.util.List; -import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_ARRIVING; -import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_LEAVING; -import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STATUS_STOPPED; - /** * @author: wangmingjun * @date: 2022/4/6 @@ -52,55 +51,69 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter stations = busRoutesResult.getSites(); + if (leaveIndex + 1 > stations.size() - 1) { + CallerLogger.INSTANCE.e(M_BUS_P + TAG, "行程日志-mismatch condition1."); + return null; + } + BusPassengerStation currentStation = stations.get(leaveIndex); + BusPassengerStation nextStation = stations.get(leaveIndex + 1); + + AutopilotControlParameters parameters = new AutopilotControlParameters(); + parameters.routeID = busRoutesResult.getLineId(); + parameters.routeName = busRoutesResult.getName(); + parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName()); + parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.getName()); + parameters.startLatLon = new AutopilotControlParameters + .AutoPilotLonLat(currentStation.getLat(), currentStation.getLon()); + parameters.endLatLon = new AutopilotControlParameters + .AutoPilotLonLat(nextStation.getLat(), nextStation.getLon()); + parameters.vehicleType = 10; + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( + busRoutesResult.getLineId(), + busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, + busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, + busRoutesResult.contrailSaveTime, busRoutesResult.carModel, + busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, + busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, + busRoutesResult.contrailSaveTimeDPQP); + } + + return parameters; + } + public void release() { releaseListeners(); startOrStopCalculateRouteInfo(false); @@ -318,6 +379,14 @@ public class BusPassengerModel { } private final IReceivedMsgListener mReceivedMsgListener = new IReceivedMsgListener() { + @Override + public void onReceivedServerSn(@Nullable String sn) { + Logger.d(SceneConstant.M_BUS_P+TAG,"onReceivedServerSn = "+sn); + if (mDriverStatusCallback != null) { + mDriverStatusCallback.updateDriverSn(sn); + } + } + @Override public void onReceivedMsg(int type, @NonNull byte[] byteArray) { if (OchCommonConst.BUSINESS_STRING == type){ @@ -397,22 +466,22 @@ public class BusPassengerModel { if (autopilotStatusInfo == null) return; int state = autopilotStatusInfo.getState(); if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - //2022.7.20 自动驾驶更换成带档位的 -// if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { if(state != mPreAutoStatus){ mTwoStationsRouts.clear(); } -// if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotEnable(); } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { if(state != mPreAutoStatus){ mTwoStationsRouts.clear(); } -// if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotDisable(); }else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING){ if(state != mPreAutoStatus){ mTwoStationsRouts.clear(); } + if (mADASStatusCallback != null) mADASStatusCallback.onAutopilotRunning(); } mPreAutoStatus = state; } diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java index 0373dbc61b..20bfc21db5 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java @@ -22,6 +22,7 @@ import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback; import com.mogo.och.bus.passenger.model.BusPassengerModel; import com.mogo.och.bus.passenger.ui.BusPassengerRouteFragment; +import com.mogo.och.data.bean.BusStationBean; import java.util.List; @@ -122,7 +123,12 @@ public class BaseBusPassengerPresenter extends Presenter mView.updatePlateNum(plateNumber)); +// runOnUIThread(() -> mView.updatePlateNum(plateNumber)); + } + + @Override + public void updateDriverSn(String sn) { + runOnUIThread(() -> mView.updateDriverSn(sn)); } @Override @@ -131,7 +137,7 @@ public class BaseBusPassengerPresenter extends Presenter stations,int currentStationIndex,boolean isArrived) { + public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) { runOnUIThread(() -> mView.updateStationsInfo(stations,currentStationIndex, isArrived)); } @@ -159,6 +165,6 @@ public class BaseBusPassengerPresenter extends Presenter mView.setProgressBarMax()); +// runOnUIThread(() -> mView.setProgressBarMax()); } } diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/provider/BusPStatusViewManager.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/provider/BusPStatusViewManager.java new file mode 100644 index 0000000000..0d9743f6f5 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/provider/BusPStatusViewManager.java @@ -0,0 +1,33 @@ +package com.mogo.och.bus.passenger.provider; + +import android.content.Context; +import android.view.View; + +import androidx.annotation.NonNull; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.eagle.core.data.constants.MogoServicePaths; +import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout; +import com.mogo.och.bus.passenger.ui.BusPStatusBarView; + +/** + * @author congtaowang + * @since 2020-01-06 + *

+ * 根据优先级控制显示 window view. + */ +@Route( path = MogoServicePaths.PATH_STATUS_VIEW_MANAGER ) +public class BusPStatusViewManager implements IStatusViewLayout { + + + @NonNull + @Override + public View getStatusView(Context context) { + return new BusPStatusBarView(context); + } + + @Override + public void init(Context context) { + + } +} diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt new file mode 100644 index 0000000000..2254892bfd --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt @@ -0,0 +1,37 @@ +package com.mogo.och.bus.passenger.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener +import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.jinlvvan.p_bus_view_blue_tooth.view.* + +/** + * 魔戒蓝牙控件 + * 放置于StatusBar右侧位置 + * todo arrow + */ +class BusPBlueToothView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : BlueToothView(context, attrs, defStyleAttr),IMoGoDevaToolsListener { + + init { + LayoutInflater.from(context).inflate(R.layout.p_bus_view_blue_tooth, this, true) + } + + override fun mofangStatus(status: Boolean) { + ThreadUtils.runOnUiThread { + if (status) { + blueView.setImageResource(R.drawable.bus_p_blue_tooth_close) + } else { + blueView.setImageResource(R.drawable.bus_p_blue_tooth_open) + } + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPStatusBarView.kt b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPStatusBarView.kt new file mode 100644 index 0000000000..4bb0bd9403 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPStatusBarView.kt @@ -0,0 +1,71 @@ +package com.mogo.och.bus.passenger.ui + +import android.annotation.* +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.constraintlayout.widget.ConstraintLayout +import chassis.ChassisStatesOuterClass +import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager +import com.mogo.eagle.core.utilcode.kotlin.* +import com.mogo.eagle.core.utilcode.util.ClickUtils +import com.mogo.och.bus.passenger.R +import kotlinx.coroutines.* +import me.jessyan.autosize.utils.AutoSizeUtils + +/** + * @author: wangmingjun + * @date: 2023/2/14 + */ +class BusPStatusBarView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : ConstraintLayout(context, attrs), IViewControlListener, IMoGoSkinModeChangeListener{ + + companion object { + const val TAG = "BusPStatusBarView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.p_bus_view_status_bar, this, true) + setBackgroundResource(R.drawable.bg_status_bar) + isClickable = true + isFocusable = true + } + + + @SuppressLint("ClickableViewAccessibility") + override fun onAttachedToWindow() { + super.onAttachedToWindow() + post { + val params: ViewGroup.LayoutParams = getLayoutParams() + params.height = AutoSizeUtils.dp2px(context,40f) + layoutParams = params + } + //添加view控制 + CallerHmiViewControlListenerManager.addListener(TAG,this) + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + } + + override fun onSkinModeChange(skinMode: Int) { + when (skinMode) { + 0 -> setStatusBarDarkOrLight(false) + 1 -> setStatusBarDarkOrLight(true) + } + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(TAG) + CallerSkinModeListenerManager.removeListener(TAG) + CallerDevaToolsManager.hideStatusBar() + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java index fa686d846f..4eafc8271c 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java @@ -1,27 +1,22 @@ package com.mogo.och.bus.passenger.ui; import android.os.Bundle; -import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.core.widget.ContentLoadingProgressBar; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatImageView; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; - import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.data.multidisplay.TelematicConstant; +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener; +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager; import com.mogo.eagle.core.function.view.MapBizView; -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.bus.passenger.R; -import com.mogo.och.bus.passenger.constant.BusPassengerConst; -import com.mogo.och.common.module.utils.NumberFormatUtil; /** * Created on 2022/3/31 @@ -32,19 +27,9 @@ public abstract class BusPassengerBaseFragment 0){ - if (meters / 1000 < 1){ - disUnit = "米"; - dis = String.valueOf(Math.round(meters)); - }else { - disUnit = "公里"; - dis = NumberFormatUtil.formatLong((double)meters / 1000); - } - } - String strHtml2 = "距离 " + "" + dis + "" + " "+disUnit+"" - + "   剩余 " + "" + (int)Math.ceil((double)timeInSecond/ 60f) + "" + " 分钟"; - mCurrentArriveTip.setText(Html.fromHtml(strHtml2)); - } - - private void updateProgressBar(long meters) { - int haveDriven = new Long(meters).intValue(); - int progressInt = SharedPrefsMgr.getInstance(getContext()) - .getInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS,0) - haveDriven; - mProgressBar.setProgress(progressInt); - } - - public void setProgressBarMax(){ - int max = SharedPrefsMgr.getInstance(getContext()) - .getInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS,0); - mProgressBar.setMax(max); - } - - public void onAutopilotStatusChanged(int status) { - getActivity().runOnUiThread(() -> { - // 3. 其他过程直接更新 - if (mPrevAPStatus != status){ - AutopilotStatusChanged(status); - } - mPrevAPStatus = status; - }); - } - - public void AutopilotStatusChanged(int status) { - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { - mAutopilotIv.setImageResource(R.drawable.bus_p_auto_nor); - } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){ - mAutopilotIv.setImageResource(R.drawable.bus_p_un_auto_nor); - } else { - mAutopilotIv.setImageResource(R.drawable.bus_p_un_auto_nor); - } - - } - - public void showOverviewFragment() { - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - } - },5000L); - } } diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index dcc64d082e..6f8411205b 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -66,7 +66,7 @@ public class BusPassengerMapDirectionView private List mLineMarkers = new ArrayList<>(); - private IBusPassengerMapViewCallback mIBusPassengerMapViewCallback; +// private IBusPassengerMapViewCallback mIBusPassengerMapViewCallback; private BitmapDescriptor mArrivedRes; private BitmapDescriptor mUnArrivedRes; @@ -87,9 +87,9 @@ public class BusPassengerMapDirectionView } } - public void setTaxiPassengerMapViewCallback(IBusPassengerMapViewCallback iBusPassengerMapViewCallback) { - this.mIBusPassengerMapViewCallback = iBusPassengerMapViewCallback; - } +// public void setTaxiPassengerMapViewCallback(IBusPassengerMapViewCallback iBusPassengerMapViewCallback) { +// this.mIBusPassengerMapViewCallback = iBusPassengerMapViewCallback; +// } private void initView(Context context) { CallerLogger.INSTANCE.d(M_BUS_P + TAG, "initView"); @@ -189,23 +189,29 @@ public class BusPassengerMapDirectionView mCarMarker.setToTop(); } - //圈定地图显示范围 - LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); + try { - if (mCoordinatesLatLng.size() > 0){ - //存放经纬度 - for (int i = 0; i < mCoordinatesLatLng.size(); i++) { - boundsBuilder.include(mCoordinatesLatLng.get(i)); - } - //第二个参数为四周留空宽度 - }else if (mLineStationLatLng.size() > 0){ - for (int i = 0; i< mLineStationLatLng.size();i++){ - boundsBuilder.include(mLineStationLatLng.get(i)); + //圈定地图显示范围 + LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); + + if (mCoordinatesLatLng.size() > 0){ + //存放经纬度 + for (int i = 0; i < mCoordinatesLatLng.size(); i++) { + boundsBuilder.include(mCoordinatesLatLng.get(i)); + } + //第二个参数为四周留空宽度 + }else if (mLineStationLatLng.size() > 0){ + for (int i = 0; i< mLineStationLatLng.size();i++){ + boundsBuilder.include(mLineStationLatLng.get(i)); + } } + + boundsBuilder.include(currentLatLng); + mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(),100,100,100,100)); + + }catch (Exception e){ + } - - boundsBuilder.include(currentLatLng); - mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(),100,100,100,100)); } @@ -336,7 +342,7 @@ public class BusPassengerMapDirectionView @Override public void onCameraChange(CameraPosition cameraPosition) { - mIBusPassengerMapViewCallback.onCameraChange(cameraPosition.bearing); +// mIBusPassengerMapViewCallback.onCameraChange(cameraPosition.bearing); } @Override diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index d141f4bef7..5041b7e52f 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -1,33 +1,36 @@ package com.mogo.och.bus.passenger.ui; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; - +import android.annotation.SuppressLint; +import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.View; -import android.view.animation.Animation; -import android.view.animation.RotateAnimation; -import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatTextView; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.Group; import androidx.recyclerview.widget.RecyclerView; import com.amap.api.maps.model.LatLng; import com.elegant.utils.UiThreadHandler; import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.map.MogoLocation; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.hmi.ui.widget.DriverMonitorView; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.adapter.BusPassengerLineStationsAdapter; import com.mogo.och.bus.passenger.bean.BusPassengerStation; -import com.mogo.och.bus.passenger.callback.IBusPassengerMapViewCallback; import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager; import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils; +import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; +import com.mogo.och.common.module.wigets.OCHGradientTextView; import java.util.ArrayList; import java.util.List; @@ -37,26 +40,41 @@ import java.util.List; * @date: 2022/4/12 */ public class BusPassengerRouteFragment extends - BusPassengerBaseFragment - implements IBusPassengerMapViewCallback { + BusPassengerBaseFragment implements MapAndLiveVideoView.ChangeItemListener { public static final String TAG = "BusPassengerRouteFragment"; private final List mStationsList = new ArrayList<>(); - private TextView mSpeedTv; + private OCHGradientTextView mSpeedTv; private ConstraintLayout mNoLineInfoView; - private TextView mCarPlateNum; private MarqueeTextView mLineName; - private TextView mOperationTime; - private ConstraintLayout mRouteInfoView; + private Group mRouteInfoView; private RecyclerView mStationsListRv; private BusPassengerMapDirectionView mMapDirectionView; - private ImageView mMapArrowIcon; - private RotateAnimation rotateAnimation; - private float lastBearing = 0; private BusPassengerLineStationsAdapter mAdapter; private TextView emptyTv; + private AppCompatImageView mAutopilotIv; + private AppCompatTextView mCurrentArriveStation; + private AppCompatTextView mCurrentArriveStationTitle; + private AppCompatTextView mCurrentArriveTip; + private AppCompatImageView mSpeakArrivedIv; + + private View busPDriverMonitorView; + private DriverMonitorView driverMonitorView; + private ConstraintLayout indicatorView; + private View mapIndicator; + private View liveIndicator; + + private MapAndLiveVideoView mapAndLiveVideoView; + List views = new ArrayList<>(); + + /** + * 改变自动驾驶状态 + * + * @param status 2 - running 1 - enable 2 - disable + */ + private int mPrevAPStatus = -1; @Override public int getStationPanelViewId() { @@ -74,13 +92,19 @@ public class BusPassengerRouteFragment extends super.initViews(); mSpeedTv = findViewById(R.id.bus_p_speed_tv); + mSpeedTv.setVertrial(true); + mSpeedTv.setmColorList(new int[]{getResources().getColor(R.color.bus_p_speed_color_start), + getResources().getColor(R.color.bus_p_speed_color_end)}); mNoLineInfoView =findViewById(R.id.bus_p_no_order_data_view); emptyTv = findViewById(R.id.no_order_data_tv); - mCarPlateNum = findViewById(R.id.bus_p_driver_num_plate_tv); mLineName = findViewById(R.id.bus_p_line_name_tv); - mOperationTime = findViewById(R.id.line_operation_time_tv); + mAutopilotIv = findViewById(R.id.auto_status_iv); + mCurrentArriveStation = findViewById(R.id.bus_p_cur_station_name); + mCurrentArriveStationTitle = findViewById(R.id.bus_p_cur_station_title); + mCurrentArriveTip = findViewById(R.id.bus_p_cur_station_tip); + mSpeakArrivedIv = findViewById(R.id.speak_arrived_iv); mRouteInfoView = findViewById(R.id.bus_p_line_cl); mStationsListRv = findViewById(R.id.bus_p_line_stations_rl); @@ -90,7 +114,20 @@ public class BusPassengerRouteFragment extends mAdapter = new BusPassengerLineStationsAdapter(getContext(), mStationsList); mStationsListRv.setAdapter(mAdapter); - mMapArrowIcon = findViewById(R.id.bus_p_arrow_nor); + indicatorView = findViewById(R.id.busIndicatorView); + mapIndicator = findViewById(R.id.firstIndicator); + liveIndicator = findViewById(R.id.secondIndicator); + + busPDriverMonitorView = LayoutInflater.from(getContext()) + .inflate(R.layout.bus_p_driver_monitor_view,null); + + driverMonitorView = busPDriverMonitorView.findViewById(R.id.buDriverMonitorView); + driverMonitorView.setLiveListener(new DriverMonitorView.LiveListener() { + @Override + public void onPlayError() { + goneLiveShadow(); + } + }); //测试 if (DebugConfig.isDebug()){ @@ -102,14 +139,81 @@ public class BusPassengerRouteFragment extends } }); } + + mapAndLiveVideoView = findViewById(R.id.mapAndLiveVideoView); + + initLiveView(); + } + + private void initLiveView() { + views.add(new View(getContext()));// 其实是空的,真正小地图还在fragment里 + views.add(busPDriverMonitorView); + mapAndLiveVideoView.setData(views); + mapAndLiveVideoView.setVisibility(View.GONE); + indicatorView.setVisibility(View.GONE); + } + + + @SuppressLint("UseCompatLoadingForDrawables") + @Override + public void changeToItem(int position) { +// (position == 0): 空view 地图占位 (position == 1) :live video + if (position == 0){ + mapIndicator.setBackground(getContext().getDrawable(R.drawable.indicator_selected_bg)); + liveIndicator.setBackground(getContext().getDrawable(R.drawable.indicator_unselected_bg)); + }else { + mapIndicator.setBackground(getContext().getDrawable(R.drawable.indicator_unselected_bg)); + liveIndicator.setBackground(getContext().getDrawable(R.drawable.indicator_selected_bg)); + } + mMapDirectionView.setVisibility(position == 0? View.VISIBLE:View.GONE); + } + + public void updateDriverSn(String sn) { + // TODO 这是测试方法,直播源为公司,凤坤旁的F车机 + //if (driverMonitorView.isSOPDriverSn("F803EB2046PZD00164")){ + if (driverMonitorView.isSOPDriverSn(sn)){ + visibleLiveShadow(); + }else { + goneLiveShadow(); + } + } + + @Override + protected void openOrCloseLiveVideo() { + if (videoSwitch.isSelected()){ + driverMonitorView.stopLive(); + videoSwitch.setSelected(false); + }else { + driverMonitorView.startLive(); + videoSwitch.setSelected(true); + mapAndLiveVideoView.changeToSecondView(); + } + mapAndLiveVideoView.setItemChangeListener(videoSwitch.isSelected()? this:null); + mapAndLiveVideoView.setVisibility(videoSwitch.isSelected()? View.VISIBLE : View.GONE); + indicatorView.setVisibility(videoSwitch.isSelected() ? View.VISIBLE : View.GONE); + mMapDirectionView.setVisibility(videoSwitch.isSelected() ? View.GONE : View.VISIBLE); + mapIndicator.setBackground(getContext().getDrawable(R.drawable.indicator_unselected_bg)); + liveIndicator.setBackground(getContext().getDrawable(R.drawable.indicator_selected_bg)); + } + + @Override + protected void goneLiveShadow() { + videoSwitch.setVisibility(View.GONE); +// driverMonitorView.setVisibility(View.GONE); + indicatorView.setVisibility(View.GONE); + } + + @Override + protected void visibleLiveShadow() { + videoSwitch.setVisibility(View.VISIBLE); } @Override protected void initViews(Bundle savedInstanceState) { super.initViews(savedInstanceState); - mMapDirectionView = findViewById(R.id.bus_p_line_map_view); + mMapDirectionView = findViewById(R.id.busPLineMapView); mMapDirectionView.onCreateView(savedInstanceState); - mMapDirectionView.setTaxiPassengerMapViewCallback(this); + } @Override @@ -193,6 +297,7 @@ public class BusPassengerRouteFragment extends emptyTv.setText(getString(R.string.bus_p_no_out)); mNoLineInfoView.setVisibility(View.VISIBLE); mRouteInfoView.setVisibility(View.GONE); + mLineName.setText(getContext().getString(R.string.bus_p_no_line)); updateArrivedStation(null,0,true); clearMapView(); clearMapMarkers(); @@ -203,6 +308,7 @@ public class BusPassengerRouteFragment extends if (mNoLineInfoView.getVisibility() == View.GONE){ mNoLineInfoView.setVisibility(View.VISIBLE); mRouteInfoView.setVisibility(View.GONE); + mLineName.setText(getContext().getString(R.string.bus_p_no_line)); updateArrivedStation(null,0,true); clearMapView(); clearMapMarkers(); @@ -217,17 +323,9 @@ public class BusPassengerRouteFragment extends } } - public void updatePlateNum(String plateNum){ - if ("".equals(plateNum) || null == plateNum) { - mCarPlateNum.setText("-- --"); - }else { - mCarPlateNum.setText((plateNum)); - } - } - public void updateLineInfo(String lineName, String lineDurTime) { mLineName.setText(lineName); - mOperationTime.setText(lineDurTime); +// mOperationTime.setText(lineDurTime); } /** @@ -236,7 +334,7 @@ public class BusPassengerRouteFragment extends * @param currentStationIndex * @param isArrived 是否到站并离开,true 到达当前站 currentStationIndex 未离开, false 正在前往此站 currentStationIndex */ - public void updateStationsInfo(List stations, int currentStationIndex,boolean isArrived) { + public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) { updateArrivedStation(stations.get(currentStationIndex).getName(),currentStationIndex,isArrived); mStationsList.clear(); mStationsList.addAll(stations); @@ -260,8 +358,6 @@ public class BusPassengerRouteFragment extends private void updateWayPointList(List stations,int currentStationIndex) { List mLineStationsList = new ArrayList<>(); for (int i = 0; i< stations.size(); i++) {//站点集合 -// LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(getContext() -// ,stations.get(i).getLon(),stations.get(i).getLat());// lat,lon LatLng latLng = new LatLng(stations.get(i).getGcjLat(),stations.get(i).getGcjLon());// lat,lon mLineStationsList.add(latLng); } @@ -276,27 +372,6 @@ public class BusPassengerRouteFragment extends } } - @Override - public void onCameraChange(float bearing) { - startIvCompass(bearing); - } - - /** - * 设置指南针旋转 - * - * @param bearing - */ - private void startIvCompass(float bearing) { - bearing = 360 - bearing; - CallerLogger.INSTANCE.d(M_BUS_P + TAG, "startIvCompass: " + bearing); - rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF - , 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - rotateAnimation.setFillAfter(true); - - mMapArrowIcon.startAnimation(rotateAnimation); - lastBearing = bearing; - } - public void onCarLocationChanged(MogoLocation location) { updateSpeedView((float) location.getGnssSpeed()); } @@ -311,4 +386,85 @@ public class BusPassengerRouteFragment extends mStationsListRv.smoothScrollToPosition(position); } } + + public void updateArrivedStation(String station,int currentIndex,boolean isArrived){ + if (null == station){ + mCurrentArriveStation.setText("----"); + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_station_title)); + mCurrentArriveTip.setText(getResources().getString(R.string.bus_p_cur_station_arrived_tip)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_arrived_bg); + handleArrivingSpeakIconDrawable(); + }else { + mCurrentArriveStation.setText(station); + if (currentIndex == 0){ + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_station_title)); + mCurrentArriveTip.setText(getResources().getString(R.string.bus_p_cur_station_arrived_tip)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_arrived_bg); + handleArrivingSpeakIconDrawable(); + return; + } + if (isArrived){ + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_station_title)); + mCurrentArriveTip.setText(getResources().getString(R.string.bus_p_cur_station_arrived_tip)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_arrived_bg); + handleArrivedSpeakIconDrawable(); + }else { + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_next_station_title)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_un_arrived_bg); + handleArrivingSpeakIconDrawable(); + } + } + + } + + private void handleArrivedSpeakIconDrawable(){ + AnimationDrawable animationDrawable = (AnimationDrawable) mSpeakArrivedIv.getDrawable(); + animationDrawable.start(); + mSpeakArrivedIv.setVisibility(View.VISIBLE); + } + + private void handleArrivingSpeakIconDrawable(){ + AnimationDrawable animationDrawable = (AnimationDrawable) mSpeakArrivedIv.getDrawable(); + animationDrawable.stop(); + mSpeakArrivedIv.setVisibility(View.GONE); + } + + public void updateRoutePlanningToNextStation(long meters, long timeInSecond){ + //更新进度条 + String dis = "0"; + String disUnit = "公里"; + if (meters > 0){ + if (meters / 1000 < 1){ + disUnit = "米"; + dis = String.valueOf(Math.round(meters)); + }else { + disUnit = "公里"; + dis = NumberFormatUtil.formatLong((double)meters / 1000); + } + } +// String strHtml2 = "距离 " + "" + dis + "" + " "+disUnit+"" +// + "   剩余 " + "" + (int)Math.ceil((double)timeInSecond/ 60f) + "" + " 分钟"; + String str = dis+disUnit+" | "+(int)Math.ceil((double)timeInSecond/ 60f)+"分钟"; + mCurrentArriveTip.setText(str); + } + + public void onAutopilotStatusChanged(int status) { + getActivity().runOnUiThread(() -> { + // 3. 其他过程直接更新 + if (mPrevAPStatus != status){ + AutopilotStatusChanged(status); + } + mPrevAPStatus = status; + }); + } + + 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/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt new file mode 100644 index 0000000000..eadb80b11c --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/MapAndLiveVideoView.kt @@ -0,0 +1,142 @@ +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.och.bus.passenger.ui.MapAndLiveVideoView.Companion.TAG +import java.lang.Exception + +/** + * @author: wangmingjun + * @date: 2023/5/9 + */ + +class MapAndLiveVideoView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : RelativeLayout(context, attrs), ViewPager.OnPageChangeListener { + + private var viewPager: ViewPager? = null + private var pagerAdapter: AdvancePagerAdapter? = null + private var changeItemListener: ChangeItemListener? = null + + companion object { + const val TAG = "MapAndLiveVideoView" + } + + init { + initView() + } + + private fun initView() { + viewPager = ViewPager(context) + pagerAdapter = AdvancePagerAdapter() + viewPager?.adapter = pagerAdapter + + addView(viewPager, LayoutParams(-1, -1)) + + viewPager?.addOnPageChangeListener(this) + } + + fun setData(list: MutableList){ + pagerAdapter?.setData(list) + pagerAdapter?.notifyDataSetChanged() + } + + fun setItemChangeListener(listener : ChangeItemListener?){ + changeItemListener = listener + } + + 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") + } + + override fun onPageSelected(position: Int) { + Logger.d(TAG, "onPageSelected--position = $position") + } + var startPosition = 1 + override fun onPageScrollStateChanged(state: Int) { + Logger.d(TAG, "onPageScrollStateChanged--state = $state") + viewPager?.let { + val position = it.currentItem + if (state == 0) { //静止 + if (startPosition == position){ + if (position==0){ + it.currentItem = 1 + }else{ + it.currentItem = 0 + } + }else{ + changeItemListener?.changeToItem(it.currentItem) + } + }else if (state == 1){ // 开始滑动 + startPosition = it.currentItem + }else{ + + } + } + } + + interface ChangeItemListener{ + fun changeToItem(position: Int) + } +} + +class AdvancePagerAdapter : PagerAdapter(), + ViewPager.OnPageChangeListener { + private var views: List? = null + + fun setData(views: List?){ + this.views = views + } + + override fun instantiateItem(container: View, position: Int): Any { + Logger.d(TAG, "instantiateItem--position = $position") + return try { + val currentItem = position % views!!.size + (container as ViewPager).addView(views!![currentItem]) + views!![currentItem] + }catch (e: Exception){ + container + } + } + + override fun getCount(): Int { + return if (views == null){ + 0 + }else{ + views!!.size + } + } + + override fun isViewFromObject(arg0: View, arg1: Any): Boolean { + return arg0 === arg1 + } + + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { +// Logger.d(TAG, "onPageScrolled--position = $position") + } + + override fun onPageSelected(position: Int) { +// Logger.d(TAG, "onPageSelected--position = $position") + } + + override fun onPageScrollStateChanged(state: Int) { +// Logger.d(TAG, "onPageScrollStateChanged--state = $state") + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/widget/BusPTurnLightView.kt b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/widget/BusPTurnLightView.kt new file mode 100644 index 0000000000..a822623d22 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/widget/BusPTurnLightView.kt @@ -0,0 +1,16 @@ +package com.mogo.och.bus.passenger.ui.widget + +import android.content.Context +import android.util.AttributeSet +import com.mogo.eagle.core.function.hmi.ui.vehicle.TurnLightViewStatus + +/** + * @author: wangmingjun + * @date: 2023/2/13 + */ +class BusPTurnLightView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : TurnLightViewStatus(context, attrs) { + + +} \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/auto_close.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/auto_close.png new file mode 100644 index 0000000000..bed91e16ee Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/auto_close.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/auto_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/auto_open.png new file mode 100644 index 0000000000..8ecc2ca1e9 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/auto_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_end_tag_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_end_tag_bg.png new file mode 100644 index 0000000000..a679341790 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_end_tag_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_start_tag_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_start_tag_bg.png new file mode 100644 index 0000000000..c0fcf5d0ea Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_start_tag_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_line_logo.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_line_logo.png new file mode 100644 index 0000000000..60064ae514 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_line_logo.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_blue.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_blue.png new file mode 100644 index 0000000000..88247c204f Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_blue.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_green.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_green.png new file mode 100644 index 0000000000..0fd2398cfb Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_green.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_close.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_close.png new file mode 100644 index 0000000000..0c292d2cf3 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_close.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_open.png new file mode 100644 index 0000000000..cccf9e10fa Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png index 445906d280..fea5cfd033 100644 Binary files a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png index 99d8bd7b56..254662d297 100644 Binary files a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png index a1a5aed070..65625ca374 100755 Binary files a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png index bc88e93c1d..ef08c49f25 100755 Binary files a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png index ca325eb42e..deec63de9d 100755 Binary files a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_right_route_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_right_route_bg.png new file mode 100644 index 0000000000..5d9bf564af Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_right_route_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_route_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_route_bg.png new file mode 100644 index 0000000000..b40a4889bf Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_route_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_status_bar_logo.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_status_bar_logo.png new file mode 100644 index 0000000000..ffaacad3c6 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_status_bar_logo.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_open.png new file mode 100644 index 0000000000..fb728e515e Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_un_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_un_open.png new file mode 100644 index 0000000000..4de98ca6dd Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_un_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_open.png new file mode 100644 index 0000000000..5762da6053 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_un_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_un_open.png new file mode 100644 index 0000000000..ae29f98f34 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_un_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/card_split_line_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/card_split_line_bg.png new file mode 100644 index 0000000000..2f392c64b6 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/card_split_line_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_arrived_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_arrived_bg.png new file mode 100644 index 0000000000..355af19afc Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_arrived_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_un_arrived_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_un_arrived_bg.png new file mode 100644 index 0000000000..ea4214cf51 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_un_arrived_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/icon_video_close.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/icon_video_close.png new file mode 100644 index 0000000000..8cf2c79113 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/icon_video_close.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/icon_video_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/icon_video_open.png new file mode 100644 index 0000000000..db33b7ae2a Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/icon_video_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/live_view_loading_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/live_view_loading_bg.png new file mode 100644 index 0000000000..99f5600926 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/live_view_loading_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/m2_blue_tooth_open.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/m2_blue_tooth_open.png new file mode 100644 index 0000000000..cccf9e10fa Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/m2_blue_tooth_open.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/route_line_name_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/route_line_name_bg.png new file mode 100644 index 0000000000..a680b6ea18 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/route_line_name_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_0.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_0.png new file mode 100644 index 0000000000..24a13e704e Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_0.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_1.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_1.png new file mode 100644 index 0000000000..c15a70a3ee Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_1.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_2.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_2.png new file mode 100644 index 0000000000..8c1c118673 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_2.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_bus_p_end_tag_bg.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_bus_p_end_tag_bg.xml deleted file mode 100644 index ca8ad81fe2..0000000000 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_bus_p_end_tag_bg.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_bus_p_start_tag_bg.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_bus_p_start_tag_bg.xml deleted file mode 100644 index 7a6d44a4c8..0000000000 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_bus_p_start_tag_bg.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_p_speak_icon_arrived.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_p_speak_icon_arrived.xml new file mode 100644 index 0000000000..a007c6d711 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_p_speak_icon_arrived.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_status_bar.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_status_bar.xml new file mode 100644 index 0000000000..6bc804de4e --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bg_status_bar.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bottom_radius_bg.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bottom_radius_bg.xml new file mode 100644 index 0000000000..8153865510 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bottom_radius_bg.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/brakelight_background_daytime.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/brakelight_background_daytime.xml new file mode 100644 index 0000000000..6409baca2f --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/brakelight_background_daytime.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bus_p_route_bg.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bus_p_route_bg.xml deleted file mode 100644 index 94dd7c0007..0000000000 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/bus_p_route_bg.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_distance_info_bg.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/indicator_select.xml similarity index 59% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_distance_info_bg.xml rename to OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/indicator_select.xml index 8e2c136cba..85d784f55d 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_distance_info_bg.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/indicator_select.xml @@ -1,6 +1,7 @@ - - + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/indicator_unselect.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/indicator_unselect.xml new file mode 100644 index 0000000000..8de50ed358 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/indicator_unselect.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_bg.png new file mode 100644 index 0000000000..405d2cddaa Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_press_bg.png b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_press_bg.png new file mode 100644 index 0000000000..a0b2ab93d9 Binary files /dev/null and b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_press_bg.png differ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/roma_bus_p_bg_selector.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/roma_bus_p_bg_selector.xml new file mode 100644 index 0000000000..191ec2e51f --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/roma_bus_p_bg_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/video_btn_selector.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/video_btn_selector.xml new file mode 100755 index 0000000000..eaa4ae264e --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/drawable/video_btn_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml index 06f31d335e..46bf3aefed 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml @@ -6,12 +6,18 @@ + + - - - - - - + - - - - - - - - - - - - - - - - - + app:layout_constraintTop_toTopOf="parent"/> - - + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_driver_monitor_view.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_driver_monitor_view.xml new file mode 100644 index 0000000000..738b29af84 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_driver_monitor_view.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_map_view.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_map_view.xml index d9fadd6ef5..0fa596993e 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_map_view.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_map_view.xml @@ -2,7 +2,8 @@ + android:layout_height="match_parent" + android:background="@drawable/bottom_radius_bg"> - - - + app:layout_constraintRight_toRightOf="parent"> + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml index 8567a7a783..a99b9ec46e 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml @@ -1,182 +1,322 @@ + android:background="@drawable/bus_p_right_route_bg"> - - + android:layout_marginTop="@dimen/dp_10" + android:layout_marginRight="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_10" + app:bgColor="#00000000" + app:blurRadius="@dimen/dp_28" + app:shadowColor="#45688AE1" + app:shadowRadius="@dimen/dp_40" + app:shadow_position="outer" + app:xOffset="0dp" + app:yOffset="0dp"/> - + app:roundLayoutRadius="@dimen/dp_40"> - - - - - - - - - + app:layout_constraintBottom_toTopOf="@+id/busPLineMapView" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + app:layout_constraintTop_toTopOf="parent" + app:layout_goneMarginLeft="0dp" + app:useCustomGap="true" /> - + android:layout_marginRight="@dimen/dp_20" + android:src="@drawable/bus_line_logo" + app:layout_constraintBottom_toBottomOf="@+id/bus_p_line_name_tv" + app:layout_constraintRight_toLeftOf="@+id/bus_p_line_name_tv" + app:layout_constraintTop_toTopOf="@+id/bus_p_line_name_tv" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/bus_p_cur_station_name" /> + + + + app:layout_constraintRight_toRightOf="parent" /> - - + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml index 33dfb22485..8fceb19365 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml @@ -10,75 +10,51 @@ android:layout_height="wrap_content" android:text="--" android:textSize="@dimen/bus_p_station_txt_size" - android:textStyle="bold" android:includeFontPadding = "false" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:layout_marginRight="@dimen/dp_60" + android:layout_marginTop="@dimen/dp_68" + android:textStyle="bold" android:textColor="@color/bus_p_station_txt_color" android:layout_marginLeft="@dimen/dp_90" app:customGap="0.5" app:useCustomGap="true" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toLeftOf="@+id/bus_p_tag" - app:layout_constraintTop_toBottomOf="@+id/bus_p_cur_arrow_bg"/> + app:layout_constraintRight_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintRight_toRightOf="@+id/bus_p_circle" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="@+id/bus_p_circle"/> + + + - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/p_bus_view_blue_tooth.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/p_bus_view_blue_tooth.xml new file mode 100644 index 0000000000..69ae14c394 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/p_bus_view_blue_tooth.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/p_bus_view_status_bar.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/p_bus_view_status_bar.xml new file mode 100644 index 0000000000..fef63bbd25 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/p_bus_view_status_bar.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/view_turn_light_status_daytime.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/view_turn_light_status_daytime.xml new file mode 100644 index 0000000000..f206e99831 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/layout/view_turn_light_status_daytime.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/colors.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/colors.xml index 8e63faf83d..4bcd3db004 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/colors.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/colors.xml @@ -1,10 +1,10 @@ - #2D3E5F + #5D7199 #CCE9EFFC #C7D2E1 #2D3E5F - #0043FF + #203555 #2D3E5F #596A8A #D8E5F8 @@ -27,4 +27,15 @@ #33394C63 #2D3E5F #33394C63 + + #43CEFE + #1466FB + + #17417B + #6617417B + #A9B6CA + #1F82FB + + #992D3E5F + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/dimens.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/dimens.xml index e738022b0d..69a4111088 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/dimens.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/dimens.xml @@ -1,13 +1,14 @@ - 700dp + 750dp + 804dp 40dp 40dp - 40dp + 48dp 40dp 110dp 224dp - 510dp + 422dp 3dp 158dp @@ -23,14 +24,14 @@ 224dp 50dp 50dp - 44dp + 34dp 130dp 38dp - 36dp + 38dp - 110dp - 42dp + 90dp + 27dp 4dp 10dp @@ -40,7 +41,7 @@ 20dp 50dp 6dp - 50dp + 38dp 36dp 80dp 100dp diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/strings.xml b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/strings.xml index f921f5e2f3..df17efbd02 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/strings.xml +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/res/values/strings.xml @@ -1,13 +1,14 @@ - + KM/H 您已收车 暂无班次 + 暂无线路 - 到达站: - 下一站: - 始发站: - 请携带好随身物品下车。 - 欢迎乘坐\'蘑菇车联\'自动驾驶车。 + 已到站: + 前方到站: + + 请按秩序下车 + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data b/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data index ab077f9849..8e06219090 100644 Binary files a/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data and b/OCH/mogo-och-bus-passenger/src/main/assets/map_style.data differ diff --git a/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data b/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data index 01f7f2116e..e5a16d46be 100644 Binary files a/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data and b/OCH/mogo-och-bus-passenger/src/main/assets/map_style_extra.data differ diff --git a/OCH/mogo-och-bus/build.gradle b/OCH/mogo-och-bus/build.gradle index 1f758461a3..5c75234649 100644 --- a/OCH/mogo-och-bus/build.gradle +++ b/OCH/mogo-och-bus/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' @@ -51,13 +50,6 @@ android { dimension "vehicle" buildConfigField 'int', 'NEW_TEST', '0' } - - // 小巴车 接驳车 这个维度应该放入的最外层 但是和小巴的代码耦合的太严重放到了这个地方 - // 乘客端删除了这个flavors 是因为乘客端这个地方比较简单 - shuttle { - dimension "vehicle" - buildConfigField 'int', 'NEW_TEST', '1' - } } } diff --git a/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java b/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java index 98e2f413aa..aa43036428 100644 --- a/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/mogo-och-bus/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java @@ -8,6 +8,7 @@ import static com.mogo.och.bus.constant.BusConst.STATION_STATUS_STOPPED; import android.content.Context; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -620,6 +621,20 @@ public class OrderModel { */ private void startAutopilot(boolean isRestart, int leaveIndex) { + //根据开关和后台是否发布轨迹启动自驾 + if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty(busRoutesResult.csvFileUrl) + && TextUtils.isEmpty(busRoutesResult.csvFileUrlDPQP)){ + ToastUtils.showLong("无发布轨迹, 请发布后重试"); + CallerLogger.INSTANCE.e(M_BUS + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand + + "busRoutesResult.csvFileUrl = "+ busRoutesResult.csvFileUrl + + "busRoutesResult.csvFileUrlDPQP = "+busRoutesResult.csvFileUrlDPQP); + return; + } + + CallerLogger.INSTANCE.e(M_BUS + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand); + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试"); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 59820ddffe..7b70977f1b 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -21,7 +21,6 @@ import androidx.constraintlayout.widget.Group; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; @@ -29,17 +28,14 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener 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.call.map.CallerVisualAngleManager; 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.hmi.ui.widget.TrafficDataView; import com.mogo.eagle.core.function.smp.view.SmallMapView; import com.mogo.eagle.core.function.view.MapBizView; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.map.MogoMapUIController; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.uicontroller.IMogoMapUIController; @@ -77,7 +73,6 @@ public abstract class BaseBusTabFragment protected TextView tvArrived; protected RelativeLayout mSettingBtn; protected RelativeLayout mBadcaseBtn; - protected RelativeLayout mAICollectBtn; private FrameLayout flStationPanelContainer; private MapBizView mapBizView; private Group groupTestPanel; @@ -147,18 +142,12 @@ public abstract class BaseBusTabFragment if (controller != null) { //切换地图的远近视图 if (controller.getCurrentMapVisualAngle().isLongSight()) { - CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false); 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()) { - CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true); - if (FunctionBuildConfig.isRomaMode) { - controller.setRomaMode(1); - } else { - Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false); - controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); - } + 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); @@ -222,21 +211,17 @@ public abstract class BaseBusTabFragment CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); } - mAICollectBtn = findViewById(R.id.module_mogo_och_ai_collet_rl); - if (mAICollectBtn != null) { - CallerDevaToolsManager.INSTANCE.initAiCollect(mAICollectBtn); - } //消息盒子 viewDriverMsgBoxButton = findViewById(R.id.viewDriverMsgBoxButton); viewDriverMsgBoxList = findViewById(R.id.viewDriverMsgBoxList); viewDriverMsgBoxBubble = findViewById(R.id.viewDriverMsgBoxBubble); viewDriverMsgBoxButton.setClickListener(show -> { - if(show){ + if (show) { viewDriverMsgBoxList.setVisibility(View.VISIBLE); viewDriverMsgBoxList.notifyData(); viewDriverMsgBoxBubble.setVisibility(View.GONE); viewDriverMsgBoxBubble.isShowData(false); - }else{ + } else { viewDriverMsgBoxList.setVisibility(View.GONE); viewDriverMsgBoxBubble.setVisibility(View.VISIBLE); viewDriverMsgBoxBubble.isShowData(true); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index 8ba9fb1404..bcb1422d46 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -7,12 +7,10 @@ import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.widget.TextView; - import androidx.annotation.NonNull; 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.commons.AbsMogoApplication; @@ -25,8 +23,10 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; 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.ToastUtils; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.MogoMarkerOptions; +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; @@ -43,12 +43,9 @@ 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 java.util.Objects; import me.jessyan.autosize.utils.AutoSizeUtils; @@ -485,20 +482,29 @@ public class BusFragment extends BaseBusTabFragment CallerLogger.INSTANCE.d(M_BUS + "setMapMaker= "+Thread.currentThread().getName(), uuid + "=latitude=" + lat + ",longitude=" + longi); - MogoMarkerOptions options = new MogoMarkerOptions() - .owner(BusConst.TYPE_MARKER_BUS_ORDER) + Point.Options.Builder builder = new Point.Options.Builder(BusConst.TYPE_MARKER_BUS_ORDER, Level.MAP_MARKER) + .setId(uuid) .anchor(0.5f, 0.5f) .set3DMode(true) - .gps(true) + .isUseGps(true) .controlAngle(true) .icon3DRes(resourceId) .latitude(lat) .longitude(longi); - IMogoMarker marker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).addMarker(uuid, options); - CenterLine centerLine = CallerMapUIServiceManager.INSTANCE.getMapUIController().getCenterLineInfo( - longi,lat,-1); - if (null != centerLine && marker != null) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 - marker.setRotateAngle(centerLine.getAngle().floatValue()); + 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()); } }; @@ -508,7 +514,10 @@ public class BusFragment extends BaseBusTabFragment Runnable removeMapMarkerRunnable = () -> { CallerLogger.INSTANCE.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(), uuid+"=latitude="+lat+",longitude="+longi); - Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid); + IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); + if (overlayManager != null) { + overlayManager.removePoint(uuid); + } }; OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 3e97df4a91..a2d0ae8d4a 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -169,7 +169,6 @@ public class BusPresenter extends Presenter @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - if (autopilotStatusInfo == null) return; int state = autopilotStatusInfo.getState(); // CallerLogger.INSTANCE.d(M_BUS + TAG, "onStateChange: " + state + "currentAutopilotStatus = " + currentAutopilotStatus); switch (state) { diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt index 706272381a..6038793be4 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt @@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView import com.mogo.och.bus.R import com.mogo.och.bus.bean.BusQueryLinesResponse import com.mogo.och.bus.ui.adapter.SwitchLineAdapter.SwitchLineViewHolder +import java.lang.Exception import kotlin.text.StringBuilder /** diff --git a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml index 04f8739e01..4d066ea65d 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml @@ -9,7 +9,7 @@ + android:layout_height="match_parent" /> - - - - - - - + app:layout_constraintBottom_toBottomOf="@id/module_mogo_och_badcase_rl" + app:layout_constraintLeft_toRightOf="@id/module_mogo_och_badcase_rl" + app:layout_constraintTop_toTopOf="@id/module_mogo_och_badcase_rl" + app:roma_open_bg="@drawable/bus_operation_status_select_bg" + app:roma_close_bg="@drawable/bus_operation_status_bg" + /> + app:layout_constraintEnd_toEndOf="parent" /> \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/build.gradle b/OCH/mogo-och-charter-passenger/build.gradle index 5df151bed5..6567d5ad7e 100644 --- a/OCH/mogo-och-charter-passenger/build.gradle +++ b/OCH/mogo-och-charter-passenger/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' @@ -45,14 +44,6 @@ android { } } - flavorDimensions "vehicle" - productFlavors { - // 车型:金旅m1 包车业务 - m1 { - dimension "vehicle" - buildConfigField 'int', 'NEW_TEST', '1' - } - } } dependencies { diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/ArriveDestRequest.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/ArriveDestRequest.kt deleted file mode 100644 index 4e7b634870..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/ArriveDestRequest.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.mogo.och.bus.passenger.bean.request - -data class ArriveDestRequest(val sn:String, val lineId:Long) \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java deleted file mode 100644 index 4dbf53010c..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.mogo.och.bus.passenger.callback; - -/** - * Created on 2022/3/31 - * - * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) - */ -public interface IBusPassengerADASStatusCallback { - // 自动驾驶触发的已到达目的地:暂未用到 - void onAutopilotArriveEnd(); - - // 自动驾驶可用状态 - void onAutopilotEnable(); - - // 自动驾驶不可用状态 - void onAutopilotDisable(); - - // 自动驾驶运行中 - void onAutopilotRunning(); -} diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/OrderStatusEnum.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/OrderStatusEnum.kt deleted file mode 100644 index 38dfbdc426..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/OrderStatusEnum.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.mogo.och.bus.passenger.model - -/** - * Created on 2022/08/19 - * - * - * 0 初始状态, - * 10 已登录, - * 20 已登出, - */ -enum class OrderStatusEnum(val code: Int) { - Nothing(0), - NoOrderUnuse( 10 ), //无订单车闲置 m1_order_noorder.xml 无订单页面 - OrderNoLine( 20), //有订单无线路 m1_order_lineside 选择线路页面 - OrdersWithLine( 30), //有订单有线路 m1_order_lineside 选择线路页面隐藏掉确定取消 - NoOrderUse( 40),; //无订单车不闲置 m1_order_end.xml 开门关门页面 - - companion object { - @JvmStatic - fun valueOf(code: Int): OrderStatusEnum? { - for (value in values()) { - if (value.code == code) { - return value - } - } - return NoOrderUnuse - } - } -} - -interface IOrderStatusChangeListener { - fun onStatusChange(currentStatus:OrderStatusEnum) -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerCarUseAndNoOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerCarUseAndNoOrderPresenter.kt deleted file mode 100644 index fe2279cf13..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerCarUseAndNoOrderPresenter.kt +++ /dev/null @@ -1,96 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.ui.M1CarUserNoOrderFragment -import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager -import io.reactivex.disposables.Disposable - -class BusPassengerCarUseAndNoOrderPresenter(view: M1CarUserNoOrderFragment?) : - BusBasePassengerFunctionDevicePresenter(view), - OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback { - companion object { - private const val TAG = "BusPassengerFunctionPresenter" - } - - private var subscribe: Disposable? = null - private var subscribeDoorStatus: Disposable? = null - private var gnssSpeed = 0.0 - - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this) - CharterPassengerModel.setControllerStatusCallback(TAG) { location -> - location?.let { - gnssSpeed = it.gnssInfo.vehicleSpeed - } - } - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - OCHM1LightAirconditionDoorStatusManager.removeListener(TAG) - disposeSubscribe(subscribe) - disposeSubscribe(subscribeDoorStatus) - } - - override fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) { - if (!isFirst) { - if (isOpen) { - ToastUtils.showShort("已开启车门") - } else { - ToastUtils.showShort("已关门车门") - } - } - } - - - fun openDoor() { - val canOpenOrCloseDoor = canOpenOrCloseDoor() - if (!canOpenOrCloseDoor.isNullOrEmpty()) { - ToastUtils.showShort(canOpenOrCloseDoor) - return - } - disposeSubscribe(subscribe) - subscribe = createSubscribe(1000) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) - } - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1) - disposeSubscribe(subscribeDoorStatus) - subscribeDoorStatus = createSubscribe { - if (!OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车门无法开启,请使用车内物理按钮") - } - } - } - - fun closeDoor() { - val canOpenOrCloseDoor = canOpenOrCloseDoor() - if (!canOpenOrCloseDoor.isNullOrBlank()) { - ToastUtils.showShort(canOpenOrCloseDoor) - return - } - disposeSubscribe(subscribe) - subscribe = createSubscribe(1000) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) - } - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2) - disposeSubscribe(subscribeDoorStatus) - subscribeDoorStatus = createSubscribe { - if (OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车门无法关闭,请使用车内物理按钮") - } - } - } - - private fun canOpenOrCloseDoor(): String? { - if (gnssSpeed < 0.01) { - return null - } else { - return "车辆正在运行、请稍后再试" - } - } - -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt deleted file mode 100644 index 98ea80709d..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt +++ /dev/null @@ -1,142 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.ui.M1DeviceFragment -import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager -import io.reactivex.disposables.Disposable - -class BusPassengerFunctionDevicePresenter(view: M1DeviceFragment?) : - BusBasePassengerFunctionDevicePresenter(view), - OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback { - - private var subscribe: Disposable? = null - private var subscribeDoorStatus: Disposable? = null - private var gnssSpeed =0.0 - - companion object { - private const val TAG = "BusPassengerFunctionDevicePresenter" - } - - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this) - CharterPassengerModel.setControllerStatusCallback(TAG) { location -> - location?.let { - gnssSpeed = it.gnssInfo.vehicleSpeed - } - } - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - OCHM1LightAirconditionDoorStatusManager.removeListener(TAG) - disposeSubscribe(subscribe) - disposeSubscribe(subscribeDoorStatus) - } - - override fun onDoorStatusCallback(isOpen: Boolean,isFirst: Boolean) { - if(!isFirst) { - if (isOpen) { - ToastUtils.showShort("已开启车门") - } else { - ToastUtils.showShort("已关门车门") - } - } - } - - fun openDoor() { - val canOpenOrCloseDoor = canOpenOrCloseDoor() - if(!canOpenOrCloseDoor.isNullOrEmpty()){ - ToastUtils.showShort(canOpenOrCloseDoor) - return - } - disposeSubscribe(subscribe) - subscribe = createSubscribe(1000) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) - } - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1) - disposeSubscribe(subscribeDoorStatus) - subscribeDoorStatus = createSubscribe(6000) { - if (!OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车门无法开启,请使用车内物理按钮") - } - } - } - - fun closeDoor() { - val canOpenOrCloseDoor = canOpenOrCloseDoor() - if(!canOpenOrCloseDoor.isNullOrBlank()){ - ToastUtils.showShort(canOpenOrCloseDoor) - return - } - disposeSubscribe(subscribe) - subscribe = createSubscribe(1000) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) - } - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2) - disposeSubscribe(subscribeDoorStatus) - subscribeDoorStatus = createSubscribe(6000) { - if (OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车门无法关闭,请使用车内物理按钮") - } - } - } - - private fun canOpenOrCloseDoor():String?{ - if(gnssSpeed<0.01){ - return null - }else{ - return "车辆正在运行、请稍后再试" - } - } - - // 靠边停车 - fun startStopSide() { - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - ToastUtils.showShort("设备未就绪请稍等,请稍后再试") - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - ToastUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请稍后再试") - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { - // 靠边停车 - CallerAutoPilotControlManager.sendPlanningCmd(1) - } - IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") - } - else -> {} - } - } - - fun startGo() { - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - ToastUtils.showShort("设备未就绪请稍等") - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - ToastUtils.showShort("启动自动驾驶中") - CallerAutoPilotControlManager.sendPlanningCmd(2) - CharterPassengerModel.startAutopilot() - CharterPassengerModel.leaveStation() - CharterPassengerModel.sendTripInfo() - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { - // 重新起步 - CallerAutoPilotControlManager.sendPlanningCmd(2) - CharterPassengerModel.leaveStation() - } - IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") - } - else -> {} - } - } - -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionEarlyEndOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionEarlyEndOrderPresenter.kt deleted file mode 100644 index 9c481095c5..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionEarlyEndOrderPresenter.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.eagle.core.data.BaseData -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.model.OrderStatusEnum -import com.mogo.och.bus.passenger.ui.M1EarlyEndOrderFragment -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback - -class BusPassengerFunctionEarlyEndOrderPresenter(view: M1EarlyEndOrderFragment?) : - BusBasePassengerFunctionDevicePresenter(view) { - - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - } - - override fun onResume(owner: LifecycleOwner) { - super.onResume(owner) - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - - } - - fun endOrder() { - CharterPassengerModel.endOrder(object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - ToastUtils.showShort("结束成功") - CharterPassengerModel.setEndOrderStatus() - mView?.closeDialogContaion() - } - } - - override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") - } - }) - } - -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt deleted file mode 100644 index cc9cc0739c..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener -import com.mogo.och.bus.passenger.model.OrderStatusEnum -import com.mogo.och.bus.passenger.ui.M1OrderFragment - -class BusPassengerFunctionOrderPresenter(view: M1OrderFragment?) : - BusBasePassengerFunctionDevicePresenter(view), IOrderStatusChangeListener { - - companion object{ - const val TAG = "BusPassengerFunctionOrderPresenter" - } - - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - CharterPassengerModel.setStatusChangeListener(TAG,this) - } - - override fun onResume(owner: LifecycleOwner) { - super.onResume(owner) - mView?.setViewByOrderStatus(CharterPassengerModel.getCurrentOrderStatus()) - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - CharterPassengerModel.setStatusChangeListener(TAG,null) - } - override fun onStatusChange(currentStatus: OrderStatusEnum) { - mView?.setViewByOrderStatus(currentStatus) - } - -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt deleted file mode 100644 index d6d6538d9d..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ /dev/null @@ -1,293 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.amap.api.maps.model.LatLng -import com.mogo.commons.voice.AIAssist -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener -import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager -import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse -import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.bus.passenger.callback.IOrderChangeCallback -import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener -import com.mogo.och.bus.passenger.model.OrderStatusEnum -import com.mogo.och.bus.passenger.ui.MainFragment -import com.mogo.och.common.module.bean.dpmsg.DPMsgType -import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager -import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager -import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.NumberFormatUtil -import com.mogo.och.common.module.utils.SoundPoolHelper -import com.mogo.och.common.module.voice.VoiceNotice -import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg -import com.mogo.och.common.module.bean.dpmsg.DPCommonOperationMsg -import io.reactivex.disposables.Disposable -import java.util.* - -class BusPassengerPresenter(view: MainFragment?) : - BusBasePassengerFunctionDevicePresenter(view), - IBusPassengerControllerStatusCallback, IDistanceTimeCallback, IOrderChangeCallback, - IOrderStatusChangeListener, OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback { - - private var subscribe: Disposable? = null - private var gnssSpeed = 0.0f - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - CharterPassengerModel.init() - // 定位监听 - CharterPassengerModel.setControllerStatusCallback(TAG,this) - CharterPassengerModel.setiDistanceTimeCallback(this) - CharterPassengerModel.setCarTypeChangeListener(this) - CharterPassengerModel.setStatusChangeListener(TAG,this) - CallerTelematicListenerManager.addListener(TAG, msgReceived) - OCHPlanningStopSideStatusManager.addListener(TAG,this) - setCarChangeListener(R.raw.m1) - //BusPassengerModel.setMoGoAutopilotPlanningListener(this) - - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - CharterPassengerModel.setControllerStatusCallback(TAG,null) - CharterPassengerModel.setiDistanceTimeCallback(null) - CharterPassengerModel.setCarTypeChangeListener(null) - CallerTelematicListenerManager.removeListener(TAG) - OCHPlanningStopSideStatusManager.removeListener(TAG) - } - private fun setSpeed(speed:Float){ - UiThreadHandler.post { - val speedKM =(Math.abs(speed) * 3.6f).toInt() - mView?.setSpeed(speedKM.toString()) - } - } - private fun setDistanceAndTime(distance: String,distanceUnit: String){ - UiThreadHandler.post { - mView?.setDistanceAndTime(distance, distanceUnit) - } - } - private fun setOrderTime(sumTime:String,arrivedTime:String){ - UiThreadHandler.post { - mView?.setOrderTime(sumTime, arrivedTime) - } - } - override fun onCarLocationChanged(location: MogoLocation?) { - location?.let { - setSpeed(it.gnssSpeed) - gnssSpeed = it.gnssSpeed - } - } - - val msgReceived = object : IReceivedMsgListener { - override fun onReceivedMsg(type: Int, byteArray: ByteArray) { - UiThreadHandler.post { - if (type == OchCommonConst.BUSINESS_STRING) { - val msg = GsonUtils.fromJson( - String(byteArray), - BaseDPMsg::class.java - ) as BaseDPMsg - when (msg.type) { - DPMsgType.TYPE_OPEN_CLOSE_DOOR.type -> { - val doorStatus = OCHM1LightAirconditionDoorStatusManager.doorStatus - if(doorStatus.isOpen){ - closeDoor() - }else{ - openDoor() - } - } - DPMsgType.TYPE_COMMON.type -> { - val msg = GsonUtils.fromJson( - String(byteArray), - DPCommonOperationMsg::class.java - ) as DPCommonOperationMsg - pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(),msg.msg) - } - else -> {} - } - } - } - } - } - - fun pushOperationalToMsgBox(time : Long,content : String,type: Int = -1){ - playDI() - OCHSocketMessageManager.pushAppOperationalMsgBox(time, content, type) - } - - private fun playDI(){ - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.m1_voice_di) - } - - fun openDoor() { - val canOpenOrCloseDoor = canOpenOrCloseDoor() - if(!canOpenOrCloseDoor.isNullOrEmpty()){ - ToastUtils.showShort(canOpenOrCloseDoor) - return - } - disposeSubscribe(subscribe) - subscribe = createSubscribe(1000) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) - } - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1) - } - - fun closeDoor() { - val canOpenOrCloseDoor = canOpenOrCloseDoor() - if(!canOpenOrCloseDoor.isNullOrBlank()){ - ToastUtils.showShort(canOpenOrCloseDoor) - return - } - disposeSubscribe(subscribe) - subscribe = createSubscribe(1000) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) - } - CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2) - } - - private fun canOpenOrCloseDoor():String?{ - if(gnssSpeed<0.01){ - return null - }else{ - return "车辆正在运行、请稍后再试" - } - } - - /** - * 计算剩余距离和剩余时间 - */ - override fun setDistancecAndTime(meters: Long, timeInSecond: Long) { - var dis: String? = "0" - var disUnit = "KM" - if (meters > 0) { - if (meters / 1000 < 1) { - disUnit = "M" - dis = Math.round(meters.toFloat()).toString() - } else { - disUnit = "KM" - dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000) - } - } - setDistanceAndTime(dis.toString(),disUnit) - } - - override fun setOrderTimeCallBack(timeInSecond: Long) { - if(timeInSecond<0){ - setDistanceAndTime("0", "KM") - setOrderTime("--","--") - return - } - var surplusTime = (timeInSecond / 60).toInt() - if(surplusTime==0){ - surplusTime = 1 - } - - val beforeTime = Calendar.getInstance() - beforeTime.add(Calendar.SECOND, timeInSecond.toInt()) - //到达时间 - val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.HH_mm) - setOrderTime(surplusTime.toString(),arriveTime) - } - - companion object{ - private const val TAG = "BusPassengerPresenter" - } - - override fun setCarChangeListener(productType: Int?) { - when (productType) { - OrderInfoResponse.M1_LOVE -> { - mView?.setCarModle(R.raw.aiqinghao) - } - OrderInfoResponse.M1_FAMILY -> { - mView?.setCarModle(R.raw.jiatinghao) - } - OrderInfoResponse.M1_FRIENDLY -> { - mView?.setCarModle(R.raw.pengyouhao) - } - else -> { - mView?.setCarModle(R.raw.m1) - } - } - } - - fun haveOrder():Boolean { - return CharterPassengerModel.hasOrder() - } - - override fun onStatusChange(currentStatus: OrderStatusEnum) { - when (currentStatus) { - OrderStatusEnum.Nothing -> {} - OrderStatusEnum.NoOrderUnuse -> { - mView?.closeOpenAndCloseDoor() - } - OrderStatusEnum.OrderNoLine -> {} - OrderStatusEnum.OrdersWithLine -> {} - OrderStatusEnum.NoOrderUse -> { - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - ToastUtils.showShort("设备未就绪请稍等,请安全员主动停止车辆") - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - ToastUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请安全员主动停止车辆") - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { - // 靠边停车 订单结束 靠边停车 - CallerAutoPilotControlManager.sendPlanningCmd(1) - } - IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请安全员主动停止车辆") - } - else -> {} - } - UiThreadHandler.post { - mView?.showOpenAndCloseDoor() - mView?.cleanEndStation() - setDistanceAndTime("0", "KM") - setOrderTime("--","--") - } - } - } - } - - override fun setEndStationCallBack(siteId: Long?, siteName: String?, gcj_lon: Double, gcj_lat: Double) { - val latLng = LatLng(gcj_lat,gcj_lon) - mView?.cleanEndStation() - mView?.drawEndStation(latLng) - } - - override fun onStartAutopilotFailure( - actionStatus: OCHPlanningStopSideStatusManager.Status, - stopSideStatus: Boolean?, - errorInfo: String? - ) { - UiThreadHandler.post { - when (actionStatus) { - OCHPlanningStopSideStatusManager.Status.NOSTART -> { - ToastUtils.showShort(errorInfo) - } - OCHPlanningStopSideStatusManager.Status.START -> { - VoiceNotice.showNotice(context.getString(R.string.m1_stop_site_zh), AIAssist.LEVEL1) - } - OCHPlanningStopSideStatusManager.Status.DOING -> { - // 正在靠边停车 - } - OCHPlanningStopSideStatusManager.Status.EndingSuccess -> { - ToastUtils.showShort("靠边停车成功") - } - OCHPlanningStopSideStatusManager.Status.EndingFaile -> { - ToastUtils.showShort("靠边停车失败") - } - } - } - } - -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1ContainFragment.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1ContainFragment.kt deleted file mode 100644 index 1284e5ac9d..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1ContainFragment.kt +++ /dev/null @@ -1,288 +0,0 @@ -package com.mogo.och.bus.passenger.ui - -import android.os.Bundle -import android.util.Log -import android.view.View -import android.view.WindowManager -import android.widget.CompoundButton -import androidx.fragment.app.DialogFragment -import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentManager -import androidx.fragment.app.FragmentTransaction -import com.mogo.commons.mvp.MvpDialogFragment -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.BarUtils -import com.mogo.eagle.core.utilcode.util.SharedPrefs -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter -import kotlinx.android.synthetic.m1.m1_contain_fragment.* - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1ContainFragment : - MvpDialogFragment() { - - var tab: String = VIDEOTAB - var fragmentTag: String = M1VideoFragment.TAG - var fragment: Fragment? = null - var isEarlyClose:Boolean = false - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - tab = it.getString(SELECTTAB, VIDEOTAB) - } - savedInstanceState?.let { - tab = it.getString(SELECTTAB, tab) - } - isEarlyClose = tab==SETTINGENDORDERTAB - setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 - } - - private fun initFragment() { - when (tab) { - VIDEOTAB -> { - fragment = - childFragmentManager.findFragmentByTag(M1VideoFragment.TAG) - ?: M1VideoFragment.newInstance() - } - SETTINGDEVICETAB -> { - fragment = - childFragmentManager.findFragmentByTag(M1DeviceFragment.TAG) - ?: M1DeviceFragment.newInstance() - } - SETTINGSOFTTAB -> { - fragment = - childFragmentManager.findFragmentByTag(M1SoftFragment.TAG) - ?: M1SoftFragment.newInstance() - } - SETTINGORDERTAB -> { - fragment = - childFragmentManager.findFragmentByTag(M1OrderFragment.TAG) - ?: M1OrderFragment.newInstance(object :ChangeCheck{ - override fun changeChange() { - cb_bp_setting_device.isChecked = true - } - }) - } - SETTINGENDORDERTAB -> { - fragment = - childFragmentManager.findFragmentByTag(M1EarlyEndOrderFragment.TAG) - ?: M1EarlyEndOrderFragment.newInstance(object :ContainDismiss{ - override fun closeDialog() { - dismissAllowingStateLoss() - } - }) - } - else -> {} - } - fragment?.let { - childFragmentManager.beginTransaction() - .replace(R.id.fl_function_group, it, fragmentTag) - .commitNow() - } - cl_container.setOnClickListener { - dismissAllowingStateLoss() - } - } - - override fun getLayoutId(): Int = R.layout.m1_contain_fragment - - override fun getTagName(): String = TAG - - override fun initViews() { - - //dialog?.setCancelable(false) - } - - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - dialog?.window?.let { - BarUtils.hideStatusBarAndSticky(it) - it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) - dialog?.setOnShowListener { _ -> - it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) - BarUtils.hideStatusBarAndSticky(it) - } - } - } - - private val videoListener = CompoundButton.OnCheckedChangeListener { _, isChecked -> - CallerLogger.d(M_BUS_P+TAG, "videoListener$isChecked") - if (isChecked) { - tab = VIDEOTAB - fragmentTag = M1VideoFragment.TAG - cb_bp_setting_soft.isChecked = false - cb_bp_setting_device.isChecked = false - cb_bp_setting_order.isChecked = false - initFragment() - }else{ - if(!cb_bp_video_player.isChecked&& - !cb_bp_setting_soft.isChecked&& - !cb_bp_setting_device.isChecked&& - !cb_bp_setting_order.isChecked){ - dismiss() - } - } - } - - private val settingDevices = CompoundButton.OnCheckedChangeListener { _, isChecked -> - CallerLogger.d(M_BUS_P+TAG, "settingDevices$isChecked") - if (isChecked) { - tab = SETTINGDEVICETAB - fragmentTag = M1DeviceFragment.TAG - cb_bp_setting_soft.isChecked = false - cb_bp_video_player.isChecked = false - cb_bp_setting_order.isChecked = false - initFragment() - }else{ - if(!cb_bp_video_player.isChecked&& - !cb_bp_setting_soft.isChecked&& - !cb_bp_setting_device.isChecked&& - !cb_bp_setting_order.isChecked){ - dismiss() - } - } - } - - private val settingSoft = CompoundButton.OnCheckedChangeListener { _, isChecked -> - CallerLogger.d(M_BUS_P+TAG, "settingSoft$isChecked") - if (isChecked) { - tab = SETTINGSOFTTAB - fragmentTag = M1SoftFragment.TAG - cb_bp_video_player.isChecked = false - cb_bp_setting_device.isChecked = false - cb_bp_setting_order.isChecked = false - initFragment() - }else{ - if(!cb_bp_video_player.isChecked&& - !cb_bp_setting_soft.isChecked&& - !cb_bp_setting_device.isChecked&& - !cb_bp_setting_order.isChecked){ - dismiss() - } - } - } - private val settingOrder = CompoundButton.OnCheckedChangeListener { _, isChecked -> - CallerLogger.d(M_BUS_P+TAG, "settingOrder$isChecked") - if (isChecked) { - if(isEarlyClose){ - tab = SETTINGENDORDERTAB - }else{ - tab = SETTINGORDERTAB - } - fragmentTag = M1OrderFragment.TAG - cb_bp_video_player.isChecked = false - cb_bp_setting_device.isChecked = false - cb_bp_setting_soft.isChecked = false - initFragment() - }else{ - if(!cb_bp_video_player.isChecked&& - !cb_bp_setting_soft.isChecked&& - !cb_bp_setting_device.isChecked&& - !cb_bp_setting_order.isChecked){ - dismiss() - } - } - } - - override fun onSaveInstanceState(outState: Bundle) { - super.onSaveInstanceState(outState) - context?.let { - SharedPrefs.getInstance(it).putString(SELECTTAB, tab) - } - } - - override fun createPresenter(): BusPassengerFunctionPresenter = - BusPassengerFunctionPresenter(this) - - /** - * 重写父类show()方法 - * 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState - */ - override fun show(manager: FragmentManager, tag: String?) { - try { - var cls = this.javaClass.superclass ?: return - while (true) { - if (cls.name == "java.lang.Object") { - break - } - cls = cls.superclass!! - if (cls == DialogFragment::class.java) { - break - } - } - val mDismissed = cls.getDeclaredField("mDismissed") - val mShownByMe = cls.getDeclaredField("mShownByMe") - mDismissed.isAccessible = true - mShownByMe.isAccessible = true - mDismissed.setBoolean(this, false) - mShownByMe.setBoolean(this, true) - if (isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 - return - } - val ft: FragmentTransaction = manager.beginTransaction() - ft.add(this, tag) - ft.commitAllowingStateLoss() - } catch (e: Exception) { - Log.e("DialogFragment", "show", e.fillInStackTrace()) - } - } - - override fun onViewStateRestored(savedInstanceState: Bundle?) { - CallerLogger.d(M_BUS_P+TAG, "onViewStateRestored") - cb_bp_video_player.setOnCheckedChangeListener(null) - cb_bp_setting_soft.setOnCheckedChangeListener(null) - cb_bp_setting_device.setOnCheckedChangeListener(null) - cb_bp_setting_order.setOnCheckedChangeListener(null) - cb_bp_video_player.isChecked = false - cb_bp_setting_soft.isChecked = false - cb_bp_setting_device.isChecked = false - cb_bp_setting_order.isChecked = false - cb_bp_video_player.setOnCheckedChangeListener(videoListener) - cb_bp_setting_soft.setOnCheckedChangeListener(settingSoft) - cb_bp_setting_device.setOnCheckedChangeListener(settingDevices) - cb_bp_setting_order.setOnCheckedChangeListener(settingOrder) - - when (tab) { - VIDEOTAB -> cb_bp_video_player.isChecked = true - SETTINGDEVICETAB -> cb_bp_setting_device.isChecked = true - SETTINGSOFTTAB -> cb_bp_setting_soft.isChecked = true - SETTINGORDERTAB -> cb_bp_setting_order.isChecked = true - SETTINGENDORDERTAB -> cb_bp_setting_order.isChecked = true - else -> {} - } - super.onViewStateRestored(savedInstanceState) - } - - companion object { - const val TAG = "BusPassengerFunctionFragment" - - const val VIDEOTAB = "VideoTab" - const val SETTINGSOFTTAB = "SettingSoftTab" - const val SETTINGDEVICETAB = "SettingDeviceTab" - const val SETTINGORDERTAB = "SettingOrderTab" - const val SETTINGENDORDERTAB = "SettingEndOrderTab" - - const val SELECTTAB = "SELECTTAB" - - @JvmStatic - fun newInstance(): M1ContainFragment { - val args = Bundle() - val fragment = M1ContainFragment() - fragment.arguments = args - return fragment - } - } - - interface ContainDismiss{ - fun closeDialog() - } - interface ChangeCheck{ - fun changeChange() - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1DeviceFragment.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1DeviceFragment.kt deleted file mode 100644 index 297a1c14c3..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1DeviceFragment.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.mogo.och.bus.passenger.ui - -import android.os.Bundle -import com.mogo.commons.mvp.MvpFragment -import com.mogo.eagle.core.utilcode.kotlin.onClick -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionDevicePresenter -import com.mogo.och.common.module.utils.SoundPoolHelper -import kotlinx.android.synthetic.m1.m1_devices_fragment.* - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1DeviceFragment : - MvpFragment() { - - override fun getLayoutId(): Int = R.layout.m1_devices_fragment - - override fun getTagName(): String = TAG - - override fun initViews() { - initListener() - } - - private fun initListener() { - tv_car_setting_go.setOnClickListener { - //判断自动驾驶状态 - // 自动驾驶状态中: AdasManager.getInstance().sendPlanningCmd(2); - // 没有在自动驾驶中:启动自动驾驶 CallerAutoPilotControlManager.INSTANCE.startAutoPilot(parameters); - mPresenter?.startGo() - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - } - tv_car_setting_stopside.setOnClickListener { - // 执行靠边停车 AdasManager.getInstance().sendPlanningCmd(1); - mPresenter?.startStopSide() - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - } - tv_car_setting_opendoor.onClick { - // 开门 AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(2); - mPresenter?.openDoor() - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - } - tv_car_setting_closedoor.onClick { - mPresenter?.closeDoor() - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - } - } - - override fun createPresenter(): BusPassengerFunctionDevicePresenter = - BusPassengerFunctionDevicePresenter(this) - - companion object { - const val TAG = "BusPassengerFunctionDeviceFragment" - @JvmStatic - fun newInstance(): M1DeviceFragment { - val args = Bundle() - val fragment = M1DeviceFragment() - fragment.arguments = args - return fragment - } - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1EarlyEndOrderFragment.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1EarlyEndOrderFragment.kt deleted file mode 100644 index ff0c1d92e7..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1EarlyEndOrderFragment.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.mogo.och.bus.passenger.ui - -import android.os.Bundle -import com.mogo.commons.mvp.MvpFragment -import com.mogo.eagle.core.utilcode.kotlin.onClick -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionEarlyEndOrderPresenter -import kotlinx.android.synthetic.m1.m1_order_early_end.* - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1EarlyEndOrderFragment : - MvpFragment() { - - private var dismiss: M1ContainFragment.ContainDismiss?=null - - override fun getLayoutId(): Int { - return R.layout.m1_order_early_end - } - - override fun getTagName(): String { - return TAG - } - - override fun initViews() { - tv_early_end_cancle.onClick { - closeDialogContaion() - } - tv_early_end_submit.onClick { - mPresenter?.endOrder() - } - } - - fun closeDialogContaion(){ - this.dismiss?.closeDialog() - } - - override fun createPresenter(): BusPassengerFunctionEarlyEndOrderPresenter { - return BusPassengerFunctionEarlyEndOrderPresenter(this) - } - - - companion object { - const val TAG = "BusPassengerFunctionOrderFragment" - @JvmStatic - fun newInstance(dismiss: M1ContainFragment.ContainDismiss): M1EarlyEndOrderFragment { - val args = Bundle() - val fragment = M1EarlyEndOrderFragment() - fragment.arguments = args - fragment.setContainDismiss(dismiss) - return fragment - } - } - private fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) { - this.dismiss = dismiss - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1OrderFragment.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1OrderFragment.kt deleted file mode 100644 index 362da620f7..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1OrderFragment.kt +++ /dev/null @@ -1,72 +0,0 @@ -package com.mogo.och.bus.passenger.ui - -import android.os.Bundle -import android.view.View -import com.mogo.commons.mvp.MvpFragment -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.TaxiPassengerVideoPlay -import com.mogo.och.bus.passenger.model.OrderStatusEnum -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter -import kotlinx.android.synthetic.m1.m1_order_fragment.* - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1OrderFragment : - MvpFragment() { - - private var changeCheck: M1ContainFragment.ChangeCheck?=null - - override fun getLayoutId(): Int { - return R.layout.m1_order_fragment - } - - override fun getTagName(): String { - return TAG - } - - override fun initViews() { - lsv_line_site.setchangeCheck(this.changeCheck) - } - - fun setViewByOrderStatus(currentStatus: OrderStatusEnum){ - when (currentStatus) { - OrderStatusEnum.NoOrderUnuse -> { - // 无订单页面 - m1_order_noorder.visibility = View.VISIBLE - m1_order_early_end.visibility = View.GONE - lsv_line_site.visibility = View.GONE - } - OrderStatusEnum.OrderNoLine -> { - // 选择线路页面 - m1_order_noorder.visibility = View.GONE - m1_order_early_end.visibility = View.GONE - lsv_line_site.visibility = View.VISIBLE - } - OrderStatusEnum.OrdersWithLine -> { - // 选择线路页面 - m1_order_noorder.visibility = View.GONE - m1_order_early_end.visibility = View.GONE - lsv_line_site.visibility = View.VISIBLE - } - } - } - - override fun createPresenter(): BusPassengerFunctionOrderPresenter { - return BusPassengerFunctionOrderPresenter(this) - } - - - companion object { - const val TAG = "BusPassengerFunctionOrderFragment" - @JvmStatic - fun newInstance(changeCheck: M1ContainFragment.ChangeCheck): M1OrderFragment { - val args = Bundle() - val fragment = M1OrderFragment() - fragment.arguments = args - fragment.changeCheck = changeCheck - return fragment - } - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt deleted file mode 100644 index 2323b2e724..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt +++ /dev/null @@ -1,260 +0,0 @@ -package com.mogo.och.bus.passenger.ui - -import android.graphics.BitmapFactory -import android.os.Build -import android.os.Bundle -import android.view.View -import androidx.fragment.app.DialogFragment -import androidx.fragment.app.Fragment -import com.amap.api.maps.model.LatLng -import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.debug.DebugConfig -import com.mogo.commons.mvp.MvpFragment -import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.data.config.HdMapBuildConfig -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager -import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView -import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView -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.AppStateManager -import com.mogo.eagle.core.utilcode.util.ClickUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.common.module.voice.VoiceManager -import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter -import com.mogo.och.bus.passenger.utils.VoiceFocusManager -import com.mogo.och.common.module.biz.constant.LoginStatusManager -import kotlinx.android.synthetic.m1.m1_main_fragment.* -import java.lang.ref.WeakReference - -/** - * @author: wangmingjun - * @date: 2022/4/12 - */ -class MainFragment : - MvpFragment() { - - private var bpFunctionGroupDialogFragment: WeakReference? = null - private var m1CarUserNoOrderFragment: WeakReference? = null - - val endStation = - BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.m1_small_map_view_dir_end) - - override fun getLayoutId(): Int { - return R.layout.m1_main_fragment - } - - override fun getTagName(): String { - return TAG - } - - override fun initViews() { - cb_bp_video_player.onClick { - openSettingPage(M1ContainFragment.VIDEOTAB) - } - cb_bp_setting_soft.onClick { - openSettingPage(M1ContainFragment.SETTINGSOFTTAB) - } - cb_bp_setting_device.onClick { - openSettingPage(M1ContainFragment.SETTINGDEVICETAB) - } - cb_bp_setting_order.onClick { - if (LoginStatusManager.isLogin()) { - openSettingPage(M1ContainFragment.SETTINGORDERTAB) - }else{ - ToastUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) - } - } - iv_end_order.onClick { - if (LoginStatusManager.isLogin()) { - if(mPresenter?.haveOrder()==true){ - openSettingPage(M1ContainFragment.SETTINGENDORDERTAB) - }else{ - ToastUtils.showShort("没有订单无法结束订单") - } - }else{ - ToastUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) - } - } - - viewBusPM1MsgBoxButton.setClickListener(object : MMsgBoxButtonView.ClickListener { - override fun showMsgBoxList(show: Boolean) { - if (show) { - viewBusPM1MsgBoxList.visibility = View.VISIBLE - viewBusPM1MsgBoxBubble.visibility = View.GONE - viewBusPM1MsgBoxBubble.isShowData(false) - } else { - viewBusPM1MsgBoxList.visibility = View.GONE - viewBusPM1MsgBoxBubble.visibility = View.VISIBLE - viewBusPM1MsgBoxBubble.isShowData(true) - } - } - - }) - } - - private fun openSettingPage(tab: String) { - val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(M1ContainFragment.TAG) - if (fragmentByTag is DialogFragment) { - if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "正在展示") - return - } - if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { - if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "权限验证") - return - } - } - } - - if (bpFunctionGroupDialogFragment?.get() == null) { - bpFunctionGroupDialogFragment = WeakReference(M1ContainFragment.newInstance()) - } - val bpFunctionGroup = bpFunctionGroupDialogFragment?.get() - bpFunctionGroup?.arguments?.putString(M1ContainFragment.SELECTTAB, tab) - if (bpFunctionGroup != null) { - if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) { - return - } - if (bpFunctionGroup.isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 - parentFragmentManager.beginTransaction().remove(bpFunctionGroup) - .commitAllowingStateLoss() - } - if (ClickUtils.isFastClick()) { - bpFunctionGroup.show(parentFragmentManager, TAG) - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "展示$tab") - } else { - CallerLogger.d( - SceneConstant.M_BUS_P + TAG, "dialog 1s内执行一次" - ) - } - } - } - - - fun setSpeed(speed: String) { - tv_speed.text = speed - } - - fun setDistanceAndTime( - distance: String, - distanceUnit: String, - ) { - tv_distance.text = distance - tv_distance_unit.text = "距离(${distanceUnit})" - } - fun setOrderTime( - sumTime: String, - arrivedTime: String - ) { - tv_distance_surplus_time.text = sumTime - tv_distance_arrive_time.text = arrivedTime - } - - fun setCarModle(rawInfo: Int){ - CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(rawInfo) - HdMapBuildConfig.currentCarVrIconRes = rawInfo - } - - override fun createPresenter(): BusPassengerPresenter { - return BusPassengerPresenter(this) - } - - override fun initViews(savedInstanceState: Bundle?) { - super.initViews(savedInstanceState) - mapBizView.onCreate(savedInstanceState) - omvOverMap.onCreateView(savedInstanceState) - } - - fun drawEndStation(latLng: LatLng) { - val listOf = listOf(latLng) - omvOverMap.drawSiteMarkers(listOf,endStation,0.5f,0.5f) - } - fun cleanEndStation(){ - omvOverMap.clearSiteMarkers() - omvOverMap.clearCustomPolyline() - } - - override fun onResume() { - super.onResume() - mapBizView.onResume() - omvOverMap.onResume() - } - - override fun onSaveInstanceState(outState: Bundle) { - super.onSaveInstanceState(outState) - mapBizView.onSaveInstanceState(outState) - } - - override fun onLowMemory() { - super.onLowMemory() - mapBizView.onLowMemory() - } - - override fun onPause() { - super.onPause() - mapBizView.onPause() - omvOverMap.onPause() - } - - override fun onDestroyView() { - mapBizView.onDestroy() - omvOverMap.onDestroy() - super.onDestroyView() - } - - fun showOpenAndCloseDoor() { - val bpFunctionGroup = bpFunctionGroupDialogFragment?.get() - bpFunctionGroup?.dismissAllowingStateLoss() - val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(M1ContainFragment.TAG) - if (fragmentByTag is DialogFragment) { - if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "正在展示") - return - } - if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { - if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "权限验证") - return - } - } - } - - if (m1CarUserNoOrderFragment?.get() == null) { - m1CarUserNoOrderFragment = WeakReference(M1CarUserNoOrderFragment.newInstance()) - } - val m1CarUserNoOrderFragment = m1CarUserNoOrderFragment?.get() - if (m1CarUserNoOrderFragment != null) { - if (m1CarUserNoOrderFragment.dialog != null && m1CarUserNoOrderFragment.dialog!!.isShowing) { - return - } - if (m1CarUserNoOrderFragment.isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 - parentFragmentManager.beginTransaction().remove(m1CarUserNoOrderFragment) - .commitAllowingStateLoss() - } - if (ClickUtils.isFastClick()) { - m1CarUserNoOrderFragment.show(parentFragmentManager, TAG) - VoiceManager.endOrder() - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "展示开关门") - } else { - CallerLogger.d( - SceneConstant.M_BUS_P + TAG, "dialog 1s内执行一次" - ) - } - } - } - fun closeOpenAndCloseDoor(){ - val bpFunctionGroup = m1CarUserNoOrderFragment?.get() - bpFunctionGroup?.let { - bpFunctionGroup.dismissAllowingStateLoss() - } - } - - companion object { - public const val TAG = "BusPassengerRouteFragment" - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt deleted file mode 100644 index b74994b122..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt +++ /dev/null @@ -1,111 +0,0 @@ -package com.mogo.och.bus.passenger.ui.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.RecyclerView -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.response.LineInfoResponse -import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse - -/** - * Created by adityagohad on 06/06/17. - */ -class OrderSiteItemAdapter(private val context: Context, private val dataList: MutableList) : RecyclerView.Adapter() { - - private var enableIndex = -1 - private var enable = true - - var checkChangeListener:CheckListener?=null - - - fun setDataList(dataList: List){ - this.dataList.clear() - this.dataList.addAll(dataList) - notifyDataSetChanged() - } - - fun setEnableIndex(enableIndex:Int){ - this.enableIndex = enableIndex - notifyDataSetChanged() - } - fun setEnable(enable:Boolean){ - this.enable = enable -// dataList.forEachIndexed { _, lineInfo -> -// lineInfo.isCheck = false -// } - notifyDataSetChanged() - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH { - val view: View - val inflater = LayoutInflater.from(context) - view = inflater.inflate(R.layout.m1_order_site_item, parent, false) - return TextVH(view) - } - - override fun onBindViewHolder(holder: TextVH, position: Int) { - val siteInfo = dataList[holder.bindingAdapterPosition] - if(holder.bindingAdapterPosition>enableIndex){ - if(siteInfo.isCheck){ - holder.iv_site_checked.setImageResource(R.drawable.m1_order_site_checked) - }else{ - holder.iv_site_checked.setImageResource(R.drawable.m1_order_site_check) - } - holder.tv_site_site_name.setTextColor(ContextCompat.getColor(context,R.color.bus_p_m1_222222)) - }else { - holder.iv_site_checked.setImageResource(R.drawable.m1_order_site_check_enable) - holder.tv_site_site_name.setTextColor(ContextCompat.getColor(context,R.color.bus_p_m1_332C2D31)) - } - holder.tv_site_site_name.text = siteInfo.siteName - holder.itemView.setOnClickListener { - if(enable) { - if (holder.bindingAdapterPosition > enableIndex) { - dataList.forEachIndexed { index, lineInfo -> - lineInfo.isCheck = index==position - } - notifyDataSetChanged() - checkChangeListener?.onCheckListener(siteInfo) - } else { - if (siteInfo.isNear) { - ToastUtils.showShort("您已在此站点附近") - } else { - ToastUtils.showShort("站点已过,请选择返程路线") - } - } - }else{ - ToastUtils.showShort("请确认线路") - } - } - } - - override fun getItemCount(): Int { - return dataList.size - } - - fun clearCheck() { - dataList.forEachIndexed { index, lineInfo -> - lineInfo.isCheck = false - } - notifyDataSetChanged() - } - - interface CheckListener{ - fun onCheckListener(siteInfo:SiteInfoResponse.SiteInfo) - } - - inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) { - var tv_site_site_name: TextView - var iv_site_checked: ImageView - - init { - tv_site_site_name = itemView.findViewById(R.id.tv_site_site_name) - iv_site_checked = itemView.findViewById(R.id.iv_site_checked) - } - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/EarlyEndOrderView.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/EarlyEndOrderView.kt deleted file mode 100644 index b04a65c940..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/EarlyEndOrderView.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.bus.passenger.ui.view - -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import androidx.constraintlayout.widget.ConstraintLayout -import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView -import com.mogo.och.bus.passenger.R - -class EarlyEndOrderView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr) { - init { - LayoutInflater.from(context).inflate(R.layout.m1_order_early_end, this, true) - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt deleted file mode 100644 index f1319e0a7d..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt +++ /dev/null @@ -1,564 +0,0 @@ -package com.mogo.och.bus.passenger.ui.view - -import android.animation.ObjectAnimator -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import android.view.animation.LinearInterpolator -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.recyclerview.widget.LinearLayoutManager -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener -import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager -import com.mogo.eagle.core.utilcode.kotlin.onClick -import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.LoopInfo -import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse -import com.mogo.och.bus.passenger.bean.response.LineInfoResponse -import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager -import com.mogo.och.bus.passenger.net.BusPassengerServiceManager -import com.mogo.och.bus.passenger.ui.M1ContainFragment -import com.mogo.och.bus.passenger.ui.adapter.OrderLineItemAdapter -import com.mogo.och.bus.passenger.ui.adapter.OrderSiteItemAdapter -import com.mogo.och.bus.passenger.utils.RxUtils -import com.mogo.och.bus.passenger.view.BottomDecoration -import com.mogo.och.common.module.bean.dpmsg.DPMsgType -import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager -import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg -import io.reactivex.disposables.Disposable -import kotlinx.android.synthetic.m1.m1_order_lineside.view.* -import me.jessyan.autosize.utils.AutoSizeUtils - -class LineSiteView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr) { - - companion object { - const val TAG = "LineSiteView" - const val TAGLINELOOP = "LineSiteViewLineLoop" - } - - // 成功提交给后台得线路 - private var checkLine: LineInfoResponse.LineInfo? = null - - // 成功提交给后台得终点站点 - private var checkSite: SiteInfoResponse.SiteInfo? = null - - // 下一个站点 - private var currentSite: SiteInfoResponse.SiteInfo? = null - - // 向司机端端提交的临时线路 - private var tempCheckLine: LineInfoResponse.LineInfo? = null - - // 向司机端临时提交的终点站点 - private var tempCheckSite: SiteInfoResponse.SiteInfo? = null - - private var tempCheckLineIsSubmit = false - private var isChangeIngLineAndSite = false - - - private val lineList = mutableListOf() - private val siteList = mutableListOf() - - private var lineAdapter: OrderLineItemAdapter - private var siteAdapter: OrderSiteItemAdapter - - private var gnssSpeed = 0.0 - - private val loadingAni = - ObjectAnimator.ofFloat(iv_loading_wait_driver, "rotation", 0f, 90f, 180f, 270f, 360f) - .apply { - repeatCount = -1 - interpolator = LinearInterpolator() - duration = 1000 - } - private var changeCheck: M1ContainFragment.ChangeCheck?=null - private var subscribeSelectLine: Disposable? = null - private var subscribeSelectSite: Disposable? = null - - init { - LayoutInflater.from(context).inflate(R.layout.m1_order_lineside, this, true) - lineAdapter = OrderLineItemAdapter(context, lineList) - siteAdapter = OrderSiteItemAdapter(context, siteList) - loadingAni.target = iv_loading_wait_driver - } - - override fun onAttachedToWindow() { - super.onAttachedToWindow() - rlv_line_list.layoutManager = - LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) - rlv_line_list.addItemDecoration(BottomDecoration(AutoSizeUtils.dp2px(context, 60f))) - rlv_line_list.adapter = lineAdapter - - rv_site_list.layoutManager = - LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) - rv_site_list.addItemDecoration(BottomDecoration(AutoSizeUtils.dp2px(context, 60f))) - rv_site_list.adapter = siteAdapter - - val hasSetLineAndSite = CharterPassengerModel.hasSetLineAndSite() - if (hasSetLineAndSite != null) {// 已经设置了线路和站点 - checkLine = hasSetLineAndSite.first - checkSite = hasSetLineAndSite.second - lineList.clear() - resetData() - } else { - queryLineList() - setEnableLineStatus(true) - setEnableSiteStatus(false) - onlyChangeSite(false) - setSiteAdapterEnable(false) - setSwitchEnable(false) - isChangeIngLineAndSite = false - } - - initListener() - - } - - /** - * 重置数据 - */ - private fun resetData() { - if(checkLine==null){// 没有提交线路 - queryLineList() - setEnableLineStatus(true) - setEnableSiteStatus(false) - onlyChangeSite(false) - setSiteAdapterEnable(false) - }else{ - checkLine?.let { - setEnableLineStatus(false) - setEnableSiteStatus(false) - onlyChangeSite(false) - setSiteAdapterEnable(true) - isChangeIngLineAndSite = true - lineAdapter.submitLine(it) - checkLine?.let { - querySitesByLineId(it.lineId.toString(),false) - } - } - } - } - - /** - * 设置是否可用进行选择线路 - */ - private fun setEnableLineStatus(enable: Boolean) { - if (enable) { - g_line_submit_group.visibility = View.VISIBLE - lineAdapter.setEnable(true) - } else { - g_line_submit_group.visibility = View.GONE - lineAdapter.setEnable(false) - } - } - - /** - * 设置是否可用选择站点 - */ - private fun setEnableSiteStatus(cancleAndSubmit: Boolean) { - if (cancleAndSubmit) { - g_side_cancle_submit_group.visibility = View.VISIBLE - } else { - g_side_cancle_submit_group.visibility = View.GONE - } - } - - fun onlyChangeSite(submit:Boolean){ - if (submit) { - g_side_submit_group.visibility = View.VISIBLE - } else { - g_side_submit_group.visibility = View.GONE - } - } - - fun setSiteAdapterEnable(enable: Boolean){ - if(enable){ - siteAdapter.setEnable(true) - }else{ - siteAdapter.setEnable(false) - } - } - - private fun initListener() { - lineAdapter.checkChangeListener = object : OrderLineItemAdapter.CheckListener { - override fun onCheckListener(lineInfo: LineInfoResponse.LineInfo) { - tempCheckLine = lineInfo - querySitesByLineId(lineInfo.lineId.toString(),true) - siteAdapter.clearCheck() - } - } - siteAdapter.checkChangeListener = object : OrderSiteItemAdapter.CheckListener { - override fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo) { - // 设置临时选中的 - tempCheckSite = siteInfo - if(isChangeIngLineAndSite) { - checkSite?.let { - if (it.siteId == siteInfo.siteId) { - onlyChangeSite(false) - } else { - onlyChangeSite(true) - } - } - } - } - - } - tv_line_cancle.onClick { - resetData() - tempCheckLine = null - } - tv_site_cancle.onClick { - resetData() - tempCheckLine = null - tempCheckSite = null - } - tv_line_submit.onClick { - if (tempCheckLine == null) { - ToastUtils.showLong("请选择线路") - return@onClick - } - if (!CallerTelematicManager.getClientConnStatus()) { - ToastUtils.showLong("乘客屏无法连接司机屏请联系安全员") - return@onClick - } - tempCheckLine?.let { - val msg = ChangeDestMsg( - it.lineId!!.toInt(), - it.name!!, - 0, - "", - 0, - "", - false - ) - CallerTelematicManager.sendMsgToServer( - OchCommonConst.BUSINESS_STRING, - GsonUtils.toJson(msg).toByteArray() - ) - startAni() - // 启动查看和司机端链接 - BusPassengerModelLoopManager.setLoopFunction( - TAGLINELOOP, - LoopInfo(3, ::checkServerStatus) - ) - RxUtils.disposeSubscribe(subscribeSelectLine) - subscribeSelectLine= RxUtils.createSubscribe(120_000){ - ToastUtils.showShort("请联系安全员确认") - endAni() - } - } - } - tv_site_submit.onClick { - if (!tempCheckLineIsSubmit) { - ToastUtils.showLong("请选择站点") - return@onClick - } - if (!CallerTelematicManager.getClientConnStatus()) { - ToastUtils.showLong("乘客屏无法连接司机屏请联系安全员") - return@onClick - } - tempCheckSite?.let { lineInfo -> - tempCheckSite?.let { siteInfo -> - val msg = ChangeDestMsg( - lineInfo.lineId!!.toInt(), - lineInfo.lineName!!, - currentSite!!.siteId!!.toInt(), - currentSite!!.siteName!!, - siteInfo.siteId!!.toInt(), - siteInfo.siteName!!, - false - ) - CallerTelematicManager.sendMsgToServer( - OchCommonConst.BUSINESS_STRING, - GsonUtils.toJson(msg).toByteArray() - ) - } - startAni() - // 启动查看和司机端链接 - BusPassengerModelLoopManager.setLoopFunction( - TAGLINELOOP, - LoopInfo(3, ::checkServerStatus) - ) - RxUtils.disposeSubscribe(subscribeSelectSite) - subscribeSelectSite = RxUtils.createSubscribe(120_000){ - ToastUtils.showShort("请联系安全员确认") - endAni() - } - } - } - tv_site_only_submit.onClick { - // 线路不换只换站点 - if (!CallerTelematicManager.getClientConnStatus()) { - ToastUtils.showLong("乘客屏无法连接司机屏请联系安全员") - return@onClick - } - tempCheckSite?.let { siteInfo -> - val msg = ChangeDestMsg( - siteInfo.lineId!!.toInt(), - siteInfo.lineName!!, - currentSite!!.siteId!!.toInt(), - currentSite!!.siteName!!, - siteInfo.siteId!!.toInt(), - siteInfo.siteName!!, - false - ) - CallerTelematicManager.sendMsgToServer( - OchCommonConst.BUSINESS_STRING, - GsonUtils.toJson(msg).toByteArray() - ) - } - startAni() - // 启动查看和司机端链接 - BusPassengerModelLoopManager.setLoopFunction( - TAGLINELOOP, - LoopInfo(3, ::checkServerStatus) - ) - RxUtils.disposeSubscribe(subscribeSelectSite) - subscribeSelectSite = RxUtils.createSubscribe(120_000){ - ToastUtils.showShort("请联系安全员确认") - endAni() - } - } - tv_loading_wait_driver_title.onClick { - endAni() - } - - CallerTelematicListenerManager.addListener(TAG, msgReceived) - CharterPassengerModel.setControllerStatusCallback(TAG) { location -> - location?.let { - gnssSpeed = it.gnssInfo.vehicleSpeed - } - } - tv_switch_line.onClick { - if (gnssSpeed < 0.5) { - // TODO: 自驾中 需要 靠边停车中、到站 - // TODO: 没有自驾中 需要 靠边停车中、到站 - when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - // 可以切换路径 - isChangeIngLineAndSite = false - onlyChangeSite(false) - // 可以切换路径 - setEnableLineStatus(true) - setSiteAdapterEnable(false) - queryLineList() - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - isChangeIngLineAndSite = false - onlyChangeSite(false) - // 可以切换路径 - setEnableLineStatus(true) - setSiteAdapterEnable(false) - queryLineList() - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { - // 自动驾驶中 - when (OCHPlanningStopSideStatusManager.stopSiteStatus) { - OCHPlanningStopSideStatusManager.Status.EndingSuccess -> { - isChangeIngLineAndSite = false - onlyChangeSite(false) - // 可以切换路径 - setEnableLineStatus(true) - setSiteAdapterEnable(false) - queryLineList() - } - else ->{ - ToastUtils.showShort("自动驾驶中无法切换线路") - } - } - } - IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法切换线路") - } - else -> {} - } - } else { - ToastUtils.showShort("请停车后再修改目的地~") - } - } - } - private fun setSwitchEnable(enable: Boolean){ - tv_switch_line.isEnabled = enable - } - - /** - * 接收司机屏反馈信息 - */ - val msgReceived = object : IReceivedMsgListener { - override fun onReceivedMsg(type: Int, byteArray: ByteArray) { - UiThreadHandler.post { - if (type == OchCommonConst.BUSINESS_STRING) { - val msg = GsonUtils.fromJson( - String(byteArray), - ChangeDestMsg::class.java - ) as ChangeDestMsg - if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type) { - if (msg.destSiteId == 0) { - if (msg.isConfirmed) { - ToastUtils.showShort("线路确定") - setEnableLineStatus(false) - setEnableSiteStatus(true) - onlyChangeSite(false) - setSiteAdapterEnable(true) - setSwitchEnable(false) - tempCheckLineIsSubmit = true - tempCheckLine?.let { - lineAdapter.submitLine(it) - } - } else { - tempCheckLineIsSubmit = false - ToastUtils.showShort("司机端拒绝请重新选择") - } - RxUtils.disposeSubscribe(subscribeSelectLine) - } else { - if (msg.isConfirmed) { - ToastUtils.showShort("站点确定") - setEnableLineStatus(false) - setEnableSiteStatus(true) - onlyChangeSite(false) - setSiteAdapterEnable(true) - setSwitchEnable(true) - checkLine = tempCheckLine - checkSite = tempCheckSite - tempCheckLine = null - tempCheckSite = null - tempCheckLineIsSubmit = false - checkLine?.let { - lineAdapter.submitLine(it) - } - go2StartCar() - CharterPassengerModel.queryOrder() - CharterPassengerModel.cleanbroadcastListInfo() - } else { - tempCheckLineIsSubmit = true - ToastUtils.showShort("司机端拒绝请重新选择") - } - RxUtils.disposeSubscribe(subscribeSelectSite) - } - BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) - endAni() - } - } - } - } - } - - private fun go2StartCar() { - changeCheck?.changeChange() - } - - fun setchangeCheck(changeCheck: M1ContainFragment.ChangeCheck?){ - this.changeCheck = changeCheck - } - - private fun startAni() { - g_lines_sites_data.visibility = View.GONE - g_loading_group.visibility = View.VISIBLE - if (!loadingAni.isRunning) { - loadingAni.start() - } - } - - private fun endAni() { - UiThreadHandler.post { - g_lines_sites_data.visibility = View.VISIBLE - g_loading_group.visibility = View.GONE - } - } - - override fun onDetachedFromWindow() { - super.onDetachedFromWindow() - loadingAni.cancel() - RxUtils.disposeSubscribe(subscribeSelectLine) - RxUtils.disposeSubscribe(subscribeSelectSite) - CallerTelematicListenerManager.removeListener(TAG) - BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) - CharterPassengerModel.setControllerStatusCallback(TAG, null) - - } - - private fun queryLineList() { - BusPassengerServiceManager.queryLineList(context, object : - OchCommonServiceCallback { - override fun onSuccess(data: LineInfoListResponse?) { - if (data?.data == null) return - lineAdapter.setDataList(data.data) - } - - override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("查询线路失败") - } - }) - } - - private fun checkServerStatus() { - if (!CallerTelematicManager.getClientConnStatus()) { - ToastUtils.showShort("断开和司机端连接、请联系安全员") - BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) - endAni() - } - } - - private fun querySitesByLineId(lineId: String,isSelect:Boolean) { - BusPassengerServiceManager.queryLineSiteList( - context, - lineId, - object : OchCommonServiceCallback { - override fun onSuccess(data: SiteInfoResponse?) { - if (data?.data == null) return - siteAdapter.setDataList(data.data) - if (data.data.isNotEmpty()) { - // 计算当前站点是那个 - val calculateCurrentSite = - CharterPassengerModel.calculateCurrentSite(data.data) - val first = calculateCurrentSite.first// 可用站点 - if(first<0){ - // 所有站点不可用 - currentSite = data.data[data.data.size-1] - currentSite!!.isNear = calculateCurrentSite.second - siteAdapter.setEnableIndex(data.data.size-1) - }else{ - // - val index = if(first==0) { - 0 - }else if (first <= data.data.size-1) { - first-1 - } else { - data.data.size - 1 - } - currentSite = data.data[index] - currentSite!!.isNear = calculateCurrentSite.second - siteAdapter.setEnableIndex(index) - } - if(isSelect){ - data.data.last().isCheck = true - tempCheckSite = data.data.last() - }else{ - data.data.forEach { - if (it.siteId == checkSite?.siteId) { - it.isCheck = true - } - } - } - } - } - - override fun onFail(code: Int, msg: String?) { - ToastUtils.showShort("查询站点失败") - } - }) - } -} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_overmap_reset.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_overmap_reset.png deleted file mode 100755 index 2176fbb0be..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_overmap_reset.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_function_bg.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_function_bg.png deleted file mode 100644 index 5b15490684..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_function_bg.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_closedoor_normal.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_closedoor_normal.png deleted file mode 100644 index 6b4e7a5894..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_closedoor_normal.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_closedoor_press.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_closedoor_press.png deleted file mode 100644 index 102f3632af..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_closedoor_press.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_opendoor_normal.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_opendoor_normal.png deleted file mode 100644 index 7bdeb9ef5c..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_opendoor_normal.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_opendoor_press.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_opendoor_press.png deleted file mode 100644 index 41044e2437..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_opendoor_press.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_holder.png b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_holder.png deleted file mode 100644 index 99bfcefc6f..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_holder.png and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-v29/taxi_power_size_seekbar_style.xml b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-v29/taxi_power_size_seekbar_style.xml deleted file mode 100644 index 8710c3ad41..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-v29/taxi_power_size_seekbar_style.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-v29/taxi_video_seekbar_style.xml b/OCH/mogo-och-charter-passenger/src/m1/res/drawable-v29/taxi_video_seekbar_style.xml deleted file mode 100644 index 4a771923d6..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-v29/taxi_video_seekbar_style.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_end_closedoor_selecotr.xml b/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_end_closedoor_selecotr.xml deleted file mode 100644 index 188d7b0179..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_end_closedoor_selecotr.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_line_checked_shape.xml b/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_line_checked_shape.xml deleted file mode 100644 index 138da92fa0..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_line_checked_shape.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_contain_fragment.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_contain_fragment.xml deleted file mode 100644 index 72b87a24f1..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_contain_fragment.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_devices_fragment.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_devices_fragment.xml deleted file mode 100644 index 9712189711..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_devices_fragment.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_early_end.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_early_end.xml deleted file mode 100644 index fb7d333076..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_early_end.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_end.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_end.xml deleted file mode 100644 index 0952f2bb2b..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_end.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml deleted file mode 100644 index 4e300c8f82..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_fragment.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_lineside.xml b/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_lineside.xml deleted file mode 100644 index 79dcb8acb4..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_lineside.xml +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/values/attrs.xml b/OCH/mogo-och-charter-passenger/src/m1/res/values/attrs.xml deleted file mode 100644 index 321bbf2246..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/values/attrs.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/values/strings.xml b/OCH/mogo-och-charter-passenger/src/m1/res/values/strings.xml deleted file mode 100644 index d2b0ab1abf..0000000000 --- a/OCH/mogo-och-charter-passenger/src/m1/res/values/strings.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - 制冷 - 制热 - 通风 - 自动 - - 温度 - - 风速 - - - - - - 关闭顶灯1 - 关闭顶灯2 - 关闭氛围灯 - - 开启顶灯1 - 开启顶灯2 - 开启氛围灯 - - KM/h - - 正在为您靠边停车,请坐稳扶好 - - 请安全员登录司机屏 - 包车将在5分钟后结束,结束后我们将自动为您寻找停车点 - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/assets/m1_style.data b/OCH/mogo-och-charter-passenger/src/main/assets/m1_style.data similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/assets/m1_style.data rename to OCH/mogo-och-charter-passenger/src/main/assets/m1_style.data diff --git a/OCH/mogo-och-charter-passenger/src/m1/assets/m1_style_extra.data b/OCH/mogo-och-charter-passenger/src/main/assets/m1_style_extra.data similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/assets/m1_style_extra.data rename to OCH/mogo-och-charter-passenger/src/main/assets/m1_style_extra.data diff --git a/OCH/mogo-och-charter-passenger/src/main/assets/map_style.data b/OCH/mogo-och-charter-passenger/src/main/assets/map_style.data deleted file mode 100644 index ab077f9849..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/main/assets/map_style.data and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/main/assets/map_style_extra.data b/OCH/mogo-och-charter-passenger/src/main/assets/map_style_extra.data deleted file mode 100644 index 01f7f2116e..0000000000 Binary files a/OCH/mogo-och-charter-passenger/src/main/assets/map_style_extra.data and /dev/null differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/LoopInfo.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/LoopInfo.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/LoopInfo.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/LoopInfo.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/TaxiPassengerVideoPlay.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/TaxiPassengerVideoPlay.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/TaxiPassengerVideoPlay.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/TaxiPassengerVideoPlay.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/Temperature.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/Temperature.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/Temperature.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/Temperature.kt diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/event/DebugView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/event/DebugView.kt new file mode 100644 index 0000000000..b2a2aa2c15 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/event/DebugView.kt @@ -0,0 +1,3 @@ +package com.mogo.och.bus.passenger.bean.event + +data class DebugView(val type: String) \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/event/EventLineSites.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/event/EventLineSites.kt new file mode 100644 index 0000000000..beb65c2882 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/event/EventLineSites.kt @@ -0,0 +1,6 @@ +package com.mogo.och.bus.passenger.bean.event + +import com.mogo.och.bus.passenger.bean.response.LineInfoResponse +import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse + +data class EventLineSites(val lineInfo: LineInfoResponse.LineInfo?, val sites: List?, val clear:Boolean=false) \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/ArriveDestRequest.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/ArriveDestRequest.kt new file mode 100644 index 0000000000..60f5e971ad --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/ArriveDestRequest.kt @@ -0,0 +1,3 @@ +package com.mogo.och.bus.passenger.bean.request + +data class ArriveDestRequest(val sn:String, val lineId:Long,val writeVersion:Long) \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/BusPassengerQueryLineRequest.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/BusPassengerQueryLineRequest.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/BusPassengerQueryLineRequest.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/BusPassengerQueryLineRequest.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/EndOrderRequest.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/EndOrderRequest.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/request/EndOrderRequest.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/request/EndOrderRequest.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusinessStatusResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/BusinessStatusResponse.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusinessStatusResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/BusinessStatusResponse.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusinessTimeResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/BusinessTimeResponse.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusinessTimeResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/BusinessTimeResponse.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/LineInfoListResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/LineInfoListResponse.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/LineInfoListResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/LineInfoListResponse.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/LineInfoResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/LineInfoResponse.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/LineInfoResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/LineInfoResponse.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/LocusResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/LocusResponse.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/LocusResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/LocusResponse.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/M1DriverLoginStatusResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/M1DriverLoginStatusResponse.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/M1DriverLoginStatusResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/M1DriverLoginStatusResponse.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/OrderInfoResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/OrderInfoResponse.kt similarity index 84% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/OrderInfoResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/OrderInfoResponse.kt index c510232abf..6ae6bde5c9 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/OrderInfoResponse.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/OrderInfoResponse.kt @@ -15,17 +15,17 @@ data class OrderInfoResponse(val data: OrderInfo?) : BaseData() { var startSiteId: Int?, var startSiteName: String?, var startSiteNameKr: String?, - val siteId: Long?,//站点id - val siteName: String?,//站点名称 + var siteId: Long?,//站点id + var siteName: String?,//站点名称 val siteNameKr: String?,//站点名称 - val wgs84Lat: Double?, - val wgs84Lon: Double?, + var wgs84Lat: Double?, + var wgs84Lon: Double?, var gcj02Lat: Double?, var gcj02Lon: Double?, val startTime: Long?,//开始时间 val endTime: Long?,//结束时间 val passengerPhone: String?,//乘客手机号 - val arriveStatus:Int?,//1:未到达 2:到达 + var arriveStatus:Int?,//1:未到达 2:到达 ) companion object{ val ARRIVING = 1 diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/SiteInfoResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/SiteInfoResponse.kt similarity index 76% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/SiteInfoResponse.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/SiteInfoResponse.kt index d7f0ffb488..3ba52d8156 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/SiteInfoResponse.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/SiteInfoResponse.kt @@ -1,6 +1,7 @@ package com.mogo.och.bus.passenger.bean.response import com.mogo.eagle.core.data.BaseData +import com.mogo.och.common.module.bean.dpmsg.LineSite import java.util.* /** @@ -20,6 +21,10 @@ data class SiteInfoResponse(val data: List?) : BaseData(){ val type: Int?, var isNear:Boolean=false, var isCheck:Boolean=false, - ) + ){ + fun copy2Mas(): LineSite { + return LineSite(lineId,lineName,siteId,siteName,Wgs84Lon,Wgs84Lat,GcjLon,GcjLat,seq,type) + } + } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt new file mode 100644 index 0000000000..499ec9d66e --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt @@ -0,0 +1,21 @@ +package com.mogo.och.bus.passenger.bean.response + +import com.amap.api.maps.model.LatLng +import com.mogo.eagle.core.data.BaseData +import com.mogo.och.common.module.bean.dpmsg.LineSite +import java.util.* + +/** + * + */ +data class TrajectoriesResponse(val data: List?) : BaseData(){ + data class LatLng( + val latitude: Double?,//维度 + val longitude: Double?,//精度 + ){ + fun exchangeData(): com.amap.api.maps.model.LatLng{ + return com.amap.api.maps.model.LatLng(latitude!!,longitude!!) + } + } +} + diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IBusPassengerControllerStatusCallback.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerControllerStatusCallback.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IBusPassengerControllerStatusCallback.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerControllerStatusCallback.java diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt new file mode 100644 index 0000000000..6adf63cc21 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt @@ -0,0 +1,11 @@ +package com.mogo.och.bus.passenger.callback + +/** + * Created on 2022/3/31 + * + * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) + */ +interface ICharterPassengerAutoStatusChangeCallback { + // 自动驾驶状态发生改变 + fun onAutoStatusChange(newState: Int) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IDistanceTimeCallback.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IDistanceCallback.kt similarity index 56% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IDistanceTimeCallback.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IDistanceCallback.kt index 8703a50e20..c0d1a574fb 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IDistanceTimeCallback.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IDistanceCallback.kt @@ -1,7 +1,5 @@ package com.mogo.och.bus.passenger.callback -interface IDistanceTimeCallback { +interface IDistanceCallback { fun setDistancecAndTime(meters:Long , timeInSecond:Long ) - - fun setOrderTimeCallBack(timeInSecond:Long) } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IOrderChangeCallback.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IOrderChangeCallback.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/callback/IOrderChangeCallback.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IOrderChangeCallback.kt diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ITimeCallback.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ITimeCallback.kt new file mode 100644 index 0000000000..a7283742a2 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ITimeCallback.kt @@ -0,0 +1,5 @@ +package com.mogo.och.bus.passenger.callback + +interface ITimeCallback { + fun setOrderTimeCallBack(timeInSecond: Long) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt index 7e77495a46..09d15e054f 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt @@ -23,6 +23,7 @@ class CharterPassengerConst { // 到达起始点围栏 const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m + const val ARRIVE_SOON_AT_START_STATION_DISTANCE = 100 //100米提示 const val MIN_DISTANCE_STATION = 30 //站点选择小于30m 不能选 } diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt similarity index 65% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt index 412c5e52ee..ce826a078e 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt @@ -3,7 +3,6 @@ package com.mogo.och.bus.passenger.model import android.annotation.SuppressLint import android.content.Context import android.net.ConnectivityManager -import android.os.Build import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager @@ -19,25 +18,29 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Liste import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener import com.mogo.eagle.core.function.call.autopilot.* import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +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.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.* import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.LoopInfo import com.mogo.och.bus.passenger.bean.response.* -import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback -import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback -import com.mogo.och.bus.passenger.callback.IOrderChangeCallback +import com.mogo.och.bus.passenger.callback.* import com.mogo.och.bus.passenger.constant.CharterPassengerConst -import com.mogo.och.bus.passenger.constant.CharterPassengerConst.Companion.Charter_AVERAGE_SPEED import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager import com.mogo.och.bus.passenger.net.BusPassengerServiceManager +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.utils.VoiceFocusManager +import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg +import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager import com.mogo.och.common.module.biz.constant.LoginStatusManager +import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.CharterSendTripInfoManager @@ -46,18 +49,16 @@ import com.mogo.och.common.module.manager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.PinYinUtil +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceManager -import mogo.telematics.pad.MessagePad -import mogo_msg.MogoReportMsg -import system_master.SystemStatusInfo +import com.mogo.och.common.module.voice.VoiceNotice import io.reactivex.Observable import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers -import java.util.TreeMap +import mogo.telematics.pad.MessagePad +import java.util.* import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.TimeUnit -import kotlin.collections.ArrayList -import kotlin.collections.HashMap /** * Created on 2022/3/31 @@ -77,7 +78,7 @@ object CharterPassengerModel { private var mContext: Context = AbsMogoApplication.getApp() //Model->Presenter:自动驾驶状态相关 - var mADASStatusCallback: IBusPassengerADASStatusCallback? = null + var mAutoStatusChnageListener = ConcurrentHashMap() // 定位监听 private val mControllerStatusCallbackMap = @@ -85,24 +86,26 @@ object CharterPassengerModel { // 当前位置坐标 private var mLocationGCJ02: MogoLocation? = null - private var mLocationWgs: MogoLocation? = null // 订单信息 有订单有线路结束订单 + @Volatile private var orderInfo: OrderInfoResponse.OrderInfo? = null // 轨迹信息 用来启动自动驾驶 private var locusInfo: LocusResponse.LocusInfo? = null // 轨迹点、底盘透传的 - private val mRoutePoints: MutableList = ArrayList() + @Volatile + private var mRoutePoints: MutableList? = ArrayList() private var orderStatus: OrderStatusEnum = OrderStatusEnum.NoOrderUnuse - private val orderStatusChangeListeners = - ConcurrentHashMap() + private val orderStatusChangeListeners = ConcurrentHashMap() + private val stationDistanceListener = ConcurrentHashMap() + private val orderLeftTimeListeners = ConcurrentHashMap() - private var iDistanceTimeCallback: IDistanceTimeCallback? = null + private var leftTime = -1L /** * 到站是否播报 key 线路id+业务 value 是否播报 @@ -111,11 +114,17 @@ object CharterPassengerModel { private var broadcastList : MutableMap = HashMap() // 到站仅一次 private val endKey = "arrivedLine" + private val endKeyRequestIng = "arrivedLineRequestIng" + private val ending100Key = "arrivingLine" private val min5Speak = "min5Speak" private var carTypeChageListener: IOrderChangeCallback?=null private var subscribeCountDown: Disposable?=null + var switchLine5minWait: Disposable?=null + + @Volatile + var newCheckedSite: SiteInfoResponse.SiteInfo? = null fun init() { initListeners() @@ -130,7 +139,6 @@ object CharterPassengerModel { CallerAutoPilotStatusListenerManager.removeListener(mGoAutopilotStatusListener) CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) CallerPlanningRottingListenerManager.removeListener(moGoAutopilotPlanningListener) - CallerChassisLocationWGS84ListenerManager.removeListener(TAG) } private fun initListeners() { @@ -140,8 +148,7 @@ object CharterPassengerModel { // 自动驾驶状态变化监听 CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, mMapLocationListener) - CallerChassisLocationWGS84ListenerManager.addListener(TAG, 2, mMapWGS84LocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4 ,mMapLocationListener) // 自动驾驶路线规划接口 返回自动驾驶轨迹 CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) // 登录状态监听 @@ -157,9 +164,13 @@ object CharterPassengerModel { } mControllerStatusCallbackMap[tag] = callback } - - fun setiDistanceTimeCallback(distanceTimeCallback: IDistanceTimeCallback?) { - this.iDistanceTimeCallback = distanceTimeCallback + fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) { + if (tag.isBlank()) return + if (callback == null) { + mAutoStatusChnageListener.remove(tag) + return + } + mAutoStatusChnageListener[tag] = callback } /** @@ -175,6 +186,7 @@ object CharterPassengerModel { // 3、车控页面、 // 4、打开选择线路页面 BusPassengerModelLoopManager.removeLoopFunction(TAGLOGIN) + CallerLogger.d(M_BUS_P + TAG, "结束登录状态轮询") // 启动订单轮 startOrderLoop() } else { @@ -182,6 +194,7 @@ object CharterPassengerModel { TAGLOGIN, LoopInfo(3, ::queryLoginStatus) ) + CallerLogger.d(M_BUS_P + TAG, "启动登录状态轮询") } } }) @@ -200,13 +213,6 @@ object CharterPassengerModel { } } } - private val mMapWGS84LocationListener: IMoGoChassisLocationWGS84Listener = - object : IMoGoChassisLocationWGS84Listener { - override fun onChassisLocationWGS84(gnssInfo: MogoLocation) { - if (null == gnssInfo) return - mLocationWgs = gnssInfo - } - } // 前一个自动驾驶状体 @Volatile @@ -215,28 +221,19 @@ object CharterPassengerModel { // 自动驾驶状态监听 private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {} - override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {} override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { val state = autoPilotStatusInfo.state - when (state) { - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {} - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {} - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {} - IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {} - else -> {} + if(mPreAutoStatus!=state){ + mPreAutoStatus = state + mAutoStatusChnageListener.forEach { + it.value.onAutoStatusChange(state) + } } - mPreAutoStatus = state } - - override fun onAutopilotSNRequest() {} override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { - mADASStatusCallback?.onAutopilotArriveEnd() - CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息") + CallerLogger.d(M_BUS_P + TAG,"底盘给到站信息") arriveDest() } - - override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} } /** @@ -245,12 +242,12 @@ object CharterPassengerModel { private val moGoAutopilotPlanningListener: IMoGoPlanningRottingListener = object : IMoGoPlanningRottingListener { override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { - CallerLogger.d( - M_BUS_P + TAG, - "onAutopilotRotting = ${GsonUtil.jsonFromObject(globalPathResp)}" - ) globalPathResp?.wayPointsList?.let { if (it.size > 0) { + d( + M_BUS_P + TAG, + "收到轨迹:${it.size}--第一个点${it[0]}--最后一个点:${it.last()}" + ) updateRoutePoints(it) startCalculateDistanceLoop() } @@ -259,10 +256,13 @@ object CharterPassengerModel { } fun updateRoutePoints(routePoints: List?) { - mRoutePoints.clear() + mRoutePoints = null val latLngModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(mContext, routePoints) - mRoutePoints.addAll(latLngModels) + mRoutePoints = latLngModels + } + fun cleanRoutePoints(){ + mRoutePoints = null } fun setStatusChangeListener(tag:String,orderStatusChangeListener: IOrderStatusChangeListener?) { @@ -273,6 +273,25 @@ object CharterPassengerModel { } orderStatusChangeListeners[tag] = orderStatusChangeListener } + fun setStationDistanceListener(tag:String,orderStatusChangeListener: IDistanceCallback?) { + if (tag.isBlank()) return + if (orderStatusChangeListener == null) { + stationDistanceListener.remove(tag) + return + } + stationDistanceListener[tag] = orderStatusChangeListener + } + fun setOrderLeftTimeListeners(tag:String,orderStatusChangeListener: ITimeCallback?) { + if (tag.isBlank()) return + if (orderStatusChangeListener == null) { + orderLeftTimeListeners.remove(tag) + return + } + orderLeftTimeListeners[tag] = orderStatusChangeListener + + orderStatusChangeListener.setOrderTimeCallBack(leftTime) + } + fun setCarTypeChangeListener(carTypeChageListener: IOrderChangeCallback?){ this.carTypeChageListener = carTypeChageListener } @@ -280,6 +299,9 @@ object CharterPassengerModel { fun getCurrentOrderStatus(): OrderStatusEnum { return this.orderStatus } + fun getCurrentOrderInfo():OrderInfoResponse.OrderInfo?{ + return orderInfo + } // endregion // region 登录状态逻辑 @@ -318,6 +340,7 @@ object CharterPassengerModel { TAGORDER, LoopInfo(3, ::queryOrder) ) + CallerLogger.d(M_BUS_P + TAG, "启动订单轮询") } /** @@ -325,6 +348,7 @@ object CharterPassengerModel { */ private fun endOrderLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGORDER) + CallerLogger.d(M_BUS_P + TAG, "结束订单轮询") } /** @@ -334,6 +358,7 @@ object CharterPassengerModel { BusPassengerServiceManager.queryOrderInfo( mContext, object : OchCommonServiceCallback { override fun onSuccess(data: OrderInfoResponse?) { + CallerLogger.d(M_BUS_P+TAG,"订单信息:$data") if (data?.data == null){ if(orderInfo!=null){ // 启动车辆服务状态 @@ -341,12 +366,12 @@ object CharterPassengerModel { } }else { // 判断是否有订单 - ordrLagic(data?.data) + ordrLagic(data.data) } } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -378,6 +403,7 @@ object CharterPassengerModel { } } if (order.lineId == null || order.lineId == 0L || order.siteId == null || order.siteId == 0L) { + this.orderInfo = orderData // 去选线路和站点 setOrderStatus(OrderStatusEnum.OrderNoLine) } else { @@ -385,7 +411,11 @@ object CharterPassengerModel { if (this.orderInfo?.lineId != orderData.lineId) {// 线路变更 // 查询自动驾驶轨迹 queryLocusByLineId(order.lineId) + this.orderInfo = orderData setOrderStatus(OrderStatusEnum.OrdersWithLine) + updateAutopilotControlParameters() + }else{ + this.orderInfo = orderData } //计算终点距离 mLocationGCJ02?.let { currentInfo -> @@ -403,14 +433,16 @@ object CharterPassengerModel { coordinateConverterWgsToGcj.latitude ) // 小于15m到站 - if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1") + if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE && calculateLineDistance > 0) { + CallerLogger.d(M_BUS_P + TAG,"小于15米到站1") arriveDest() } + if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE && calculateLineDistance > 0) { + CallerLogger.d(M_BUS_P + TAG, "小于100米到站") + arriveDestSoon() + } } } - // 设置id - this.orderInfo = orderData // 启动时间校准 startCalibrationLoop() } @@ -418,7 +450,7 @@ object CharterPassengerModel { fun hasSetLineAndSite(): Pair? { orderInfo?.let { - if (it.lineId != null && it.lineId > 0 && it.siteId != null && it.siteId > 0) { + if (it.lineId != null && it.lineId > 0 && it.siteId != null && it.siteId!! > 0) { if(it.arriveStatus==OrderInfoResponse.ARRIVED){ return null } @@ -451,6 +483,7 @@ object CharterPassengerModel { */ private fun startCarStatusLoop() { BusPassengerModelLoopManager.setLoopFunction(TAGCARSTATUS, LoopInfo(3, ::queryCarStatus)) + CallerLogger.d(M_BUS_P + TAG, "启动车态轮询") } /** @@ -458,6 +491,7 @@ object CharterPassengerModel { */ private fun endCarStatusLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGCARSTATUS) + CallerLogger.d(M_BUS_P + TAG, "结束车态轮询") } /** @@ -472,7 +506,7 @@ object CharterPassengerModel { } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -489,6 +523,8 @@ object CharterPassengerModel { orderInfo = null locusInfo = null if (data.businessStatus == 2) {// 订单结束 没有还车 + RxUtils.disposeSubscribe(switchLine5minWait) + clearAutopilotControlParameters() setOrderStatus(OrderStatusEnum.NoOrderUse) } else { // 车辆空闲 订单结束已经还车 @@ -509,6 +545,7 @@ object CharterPassengerModel { TAGCALIBRATION, LoopInfo(120, ::queryBusinessTime,immediately = true) ) + CallerLogger.d(M_BUS_P + TAG, "启动时间校准轮询") } /** @@ -516,6 +553,7 @@ object CharterPassengerModel { */ private fun endCalibrationLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGCALIBRATION) + CallerLogger.d(M_BUS_P + TAG, "结束时间校准轮询") } /** @@ -533,14 +571,14 @@ object CharterPassengerModel { it.dispose() } } - val leadTime = endlast / 1000+60 + val leadTime = endlast / 1000 subscribeCountDown = - Observable.intervalRange(0L, leadTime, 0, 1, TimeUnit.SECONDS) + Observable.intervalRange(0L, leadTime, 0, 5, TimeUnit.SECONDS) .map { aLong -> leadTime - aLong } .subscribeOn(Schedulers.io()) .observeOn(Schedulers.io()) .subscribe{millisUntilFinished-> - if (millisUntilFinished <= 360L) { + if (millisUntilFinished <= 300L) { orderInfo?.let { val isPlayed = SharedPrefs.getInstance(mContext) .getBoolean("${it.orderNo}$min5Speak", false) @@ -564,20 +602,18 @@ object CharterPassengerModel { it.dispose() } } - iDistanceTimeCallback?.setOrderTimeCallBack(-1) + invokeOrderLeftTimeListeners(-1) + invokeStationDistanceListener(-1,-1) }else{ - iDistanceTimeCallback?.setOrderTimeCallBack(millisUntilFinished) + invokeOrderLeftTimeListeners(millisUntilFinished) } - CallerLogger.d( - M_BUS_P + TAG, - "倒计时${millisUntilFinished}" - ) + CallerLogger.d(M_BUS_P + TAG, "订单倒计时${millisUntilFinished}") } } } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -598,7 +634,7 @@ object CharterPassengerModel { } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -610,13 +646,18 @@ object CharterPassengerModel { */ private fun startCalculateDistanceLoop() { BusPassengerModelLoopManager.setLoopFunction(TAGDISTANCE, LoopInfo(1, ::calculateDistance)) + CallerLogger.d(M_BUS_P + TAG, "开始路距计算") } /** * 结束启动路距计算 + * ① 订单结束 + * ② 选择站点司机端同意后 + * ③ 到站成功后 */ private fun endCalculateDistanceLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGDISTANCE) + CallerLogger.d(M_BUS_P + TAG, "结束路距计算") } /** @@ -625,95 +666,82 @@ object CharterPassengerModel { private fun calculateDistance() { //mLocation gcj坐标 mLocationGCJ02?.let { - var lastSumLength = 0f orderInfo?.let { order -> + CallerLogger.d(M_BUS_P + "calculateDistance", "订单信息:$order") + if(order.siteId==null||order.siteId==0L|| + order.wgs84Lat==null||order.wgs84Lat==0.0|| + order.wgs84Lon==null||order.wgs84Lon==0.0 + ){ + CallerLogger.d(M_BUS_P + "calculateDistance", "站点信息未获得") + return + } + newCheckedSite?.let { + if(it.siteId!=order.siteId){ + CallerLogger.d(M_BUS_P + "calculateDistance", "站点和已选不吻合") + return + } + } // 启动轨迹计算 - //当前站在轨迹中对应的点 - val currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( - 0, mRoutePoints, it.longitude, it.latitude - ) - var nextRouteIndex: Int = mRoutePoints.size - 1 - + var lastSumLength = 0f val orderLonLat = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj( mContext, order.wgs84Lon!!, order.wgs84Lat!! ) - //要前往的站在轨迹中对应的点 - nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew( - currentRouteIndex, mRoutePoints, - orderLonLat.longitude, - orderLonLat.latitude - ) - // 距离站点最近的轨迹点 - val lastPoints = mRoutePoints.get(nextRouteIndex) - // 站点距离最近点的距离 - val calculateLineDistance = CoordinateUtils.calculateLineDistance( - lastPoints.longitude, lastPoints.latitude, - orderLonLat.longitude, orderLonLat.latitude - ) - if (currentRouteIndex < nextRouteIndex) { - // subList 是[) 需要的是[] - val subList = mRoutePoints.subList(currentRouteIndex, nextRouteIndex + 1) - // 轨迹点所有的距离 - val middlePoingDistancee = - CoordinateCalculateRouteUtil.calculateRouteSumLength(subList) + val mogoLocation = MogoLocation() + mogoLocation.longitude = orderLonLat.longitude + mogoLocation.latitude = orderLonLat.latitude - // 需要加距离 和下一个轨迹点成钝角 - if (nextRouteIndex + 1 < mRoutePoints.size) { - val lastPointsNext = mRoutePoints.get(nextRouteIndex + 1) - val degree = CoordinateCalculateRouteUtil.getDegree( - orderLonLat.longitude,orderLonLat.latitude, - lastPoints.longitude, lastPoints.latitude, - lastPointsNext.longitude, lastPointsNext.latitude, + lastSumLength = CoordinateUtils.calculateLineDistance( + it.longitude, + it.latitude, + mogoLocation.longitude, + mogoLocation.latitude + ) + CallerLogger.d(M_BUS_P + "calculateDistance", "两点距离和站点的直线距离:${lastSumLength}") + if(lastSumLength>100) { + if (mRoutePoints==null||mRoutePoints?.size == 0){ + //ToastCharterUtils.showLong("缺少轨迹数据暂停计算") + CallerLogger.d(M_BUS_P + "calculateDistance两点距离", + "缺少轨迹数据" ) - if (degree > 90) { - lastSumLength = middlePoingDistancee + calculateLineDistance - } + return } - // 需要减距离 和上一个轨迹点成钝角 - if (nextRouteIndex - 1 >= 0) { - val lastPointsPre = mRoutePoints.get(nextRouteIndex - 1) - val degree = CoordinateCalculateRouteUtil.getDegree( - orderLonLat.longitude,orderLonLat.latitude, - lastPoints.longitude, lastPoints.latitude, - lastPointsPre.longitude, lastPointsPre.latitude, + // 计算距离 + val templastSumLength = + CoordinateCalculateRouteUtil.calculateRouteSumLength( + mRoutePoints, + it, + mogoLocation ) - if (degree > 90) { - lastSumLength = middlePoingDistancee - calculateLineDistance - } + CallerLogger.d(M_BUS_P + TAG, "使用轨迹轨迹:${mRoutePoints?.size}--第一个点${mRoutePoints!![0]}--最后一个点:${mRoutePoints!!.last()}") + CallerLogger.d(M_BUS_P + "calculateDistance", "轨迹计算的距离$templastSumLength") + if(templastSumLength>100){ + lastSumLength = templastSumLength } - - } else { - val lastPoints = mRoutePoints.get(nextRouteIndex) - lastSumLength = CoordinateUtils.calculateLineDistance( - lastPoints.longitude, lastPoints.latitude, - it.longitude, it.latitude - ) } - // 距离小于100m 直接计算当前位置距离站点的距离 - if(lastSumLength<=100){ - lastSumLength = CoordinateUtils.calculateLineDistance( - orderLonLat.longitude, - orderLonLat.latitude, - it.longitude, - it.latitude - ) + + val lastTime: Double = lastSumLength / CharterPassengerConst.Charter_AVERAGE_SPEED * 3.6 //秒 + + CallerLogger.d(M_BUS_P + "calculateDistance", + "最终信息:lastSumLength: ${lastSumLength}lastTime : $lastTime thread = ${Thread.currentThread().name}" + ) + if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE&&lastSumLength>0) { + CallerLogger.d(M_BUS_P + TAG,"小于100米到站2") + arriveDestSoon() + } + if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE&&lastSumLength>0) { + CallerLogger.d(M_BUS_P + TAG,"小于15米到站2") + arriveDest() + return + } + if(order.arriveStatus==OrderInfoResponse.ARRIVING) { + invokeStationDistanceListener(lastSumLength.toLong(), lastTime.toLong()) + }else{ + invokeStationDistanceListener(-1,-1) } } - val lastTime: Double = lastSumLength / Charter_AVERAGE_SPEED * 3.6 //秒 - - CallerLogger.d( - SceneConstant.M_BUS_P + "calculateDistance", - "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime - + " thread = " + Thread.currentThread().name - ) - if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站2") - arriveDest() - } - iDistanceTimeCallback?.setDistancecAndTime(lastSumLength.toLong(), lastTime.toLong()) } } // endregion @@ -721,6 +749,7 @@ object CharterPassengerModel { private fun setOrderStatus(orderStatus: OrderStatusEnum) { if (this.orderStatus != orderStatus) { + CallerLogger.d(M_BUS_P + TAG,"${this.orderInfo?.orderNo}新的状态:$orderStatus") this.orderStatus = orderStatus for (callback in orderStatusChangeListeners.values) { callback.onStatusChange(this.orderStatus) @@ -848,44 +877,152 @@ object CharterPassengerModel { BusPassengerServiceManager.endOrder(mContext, it, callback) } } + fun getLineTrajectory(lineId: Long,callback: OchCommonServiceCallback?) { + BusPassengerServiceManager.queryLineLocation(mContext, lineId = lineId.toString(), callback) + } @Synchronized fun arriveDest() { - orderInfo?.lineId?.let { - orderInfo?.siteId?.let { siteId -> - if (orderInfo!!.arriveStatus == OrderInfoResponse.ARRIVING) { - if (broadcastList.get("${siteId}$endKey") == null || broadcastList.get("${siteId}$endKey") == false) { + val (order, lineId, siteId) = getOrderInfo() + if(order!=null&&lineId!=null&&siteId!=null){ + val requestSuccessSign = "${siteId}$endKey" + val requestIngSign = "${siteId}$endKeyRequestIng"//正在请求中 + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, + "requestSuccessSign${isSuccess(requestSuccessSign)}---requestIngSign${isSuccess(requestIngSign)}") + if (order.arriveStatus == OrderInfoResponse.ARRIVING) { + if (isSuccess(requestSuccessSign)&&//true 请求还没有成功 false 请求成功 + isSuccess(requestIngSign)) {// true 还没有正在请求 false 正在请求中 + val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp() + broadcastList[requestIngSign] = true //正在请求中 BusPassengerServiceManager.arriveDest( - mContext, lindId = it, object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - VoiceManager.arrivedStation( - orderInfo!!.siteName!!, - orderInfo!!.siteNameKr ?: "", - VoiceFocusManager.getVoiceCmdCallBack() - ) - broadcastList["${siteId}$endKey"] = true - // 到站结束自驾 - CallerAutoPilotControlManager.cancelAutoPilot() - // 结束路距计算 - endCalculateDistanceLoop() - // 到站置距离位0 - iDistanceTimeCallback?.setOrderTimeCallBack(-1) + mContext, + lindId = lineId, + writtenVersion = currentTimeStamp, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + if (null != data && 0 == data.code) { + arrivedDeskSuccess(currentTimeStamp,true) + broadcastList[requestIngSign] = false + } } - } - override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") - } - }) - } + override fun onFail(code: Int, msg: String) { + ToastCharterUtils.showShort("$code:$msg") + broadcastList[requestIngSign] = false + } + + override fun onError() { + super.onError() + broadcastList[requestIngSign] = false + } + }) } } } } - fun cleanbroadcastListInfo(){ + fun arrivedDeskSuccess( + currentTimeStamp: Long, + needSendDriver:Boolean + ) { + val (order, lineId, siteId) = getOrderInfo() + val requestSuccessSign = "${siteId}$endKey" + + if (!isSuccess(requestSuccessSign)){ + return + } + + if(order!=null&&lineId!=null&&siteId!=null){ + VoiceManager.arrivedStation( + order.siteName!!, + order.siteNameKr ?: "", + VoiceFocusManager.getVoiceCmdCallBack() + ) + // 请求成功了 + broadcastList[requestSuccessSign] = true + // 给司机端 + if (needSendDriver) { + val msg = ChangeDestMsg( + order.orderNo ?: ":", + lineId.toInt(), + order.lineName ?: "", + order.startSiteId ?: 0, + order.startSiteName ?: "", + siteId.toInt(), + order.siteName?:"", + true, + OrderInfoResponse.ARRIVED, + currentTimeStamp + ) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "到站发送数据${msg}") + } + + RxUtils.disposeSubscribe(switchLine5minWait) + // 清理轨迹 + cleanRoutePoints() + // 到站结束自驾 + CallerAutoPilotControlManager.cancelAutoPilot() + // 结束路距计算 + endCalculateDistanceLoop() + // 到站置距离位0 + invokeStationDistanceListener(-1, -1) + } + } + + private fun getOrderInfo():Triple{ + this.orderInfo?.let { order-> + this.orderInfo?.lineId?.let { lineId -> + this.orderInfo?.siteId?.let { siteId -> + return Triple(order,lineId,siteId) + } + } + } + return Triple(null,null,null) + } + + @Synchronized + fun arriveDestSoon() { + orderInfo?.let { order -> + order.siteId?.let { siteId -> + if (order.arriveStatus == OrderInfoResponse.ARRIVING) { + if (isSuccess("${siteId}$ending100Key")) { + val string = mContext.getString(R.string.arrived_station_left_100,order.siteName) + VoiceNotice.showNotice(string) + broadcastList["${siteId}$ending100Key"] = true + } + } + } + } + } + + private fun isSuccess(requestSuccessSign: String) = + broadcastList[requestSuccessSign] == null || broadcastList[requestSuccessSign] == false + + fun cleanbroadcastListInfo(checkSite: SiteInfoResponse.SiteInfo?) { + RxUtils.disposeSubscribe(switchLine5minWait) + switchLine5minWait = RxUtils.createSubscribe(5 * 60 * 1000) { + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "5分钟倒计时可以选择线路了") + } + newCheckedSite = checkSite + cleanRoutePoints() broadcastList.clear() + orderInfo?.let { + it.siteId = checkSite?.siteId + it.wgs84Lon = checkSite?.Wgs84Lon + it.wgs84Lat = checkSite?.Wgs84Lat + it.siteName = checkSite?.siteName + it.arriveStatus = OrderInfoResponse.ARRIVING + } + // 到站结束自驾 + CallerAutoPilotControlManager.cancelAutoPilot() + // 停止路距计算 + endCalculateDistanceLoop() + // 到站置距离位0 + invokeStationDistanceListener(-1, -1) } fun leaveStation() { @@ -907,7 +1044,7 @@ object CharterPassengerModel { */ fun startAutopilot() { if (!OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { - ToastUtils.showLong( + ToastCharterUtils.showLong( OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ", 请稍候重试" ) @@ -915,18 +1052,21 @@ object CharterPassengerModel { } orderInfo?.let { if(it.arriveStatus==OrderInfoResponse.ARRIVED){ - ToastUtils.showLong("已到达目的地请重新选择线路") + ToastCharterUtils.showLong("已到达目的地请重新选择线路") return } val parameters = initAutopilotControlParameters() if (null == parameters) { + ToastCharterUtils.showShort("请选择站点") CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") return } + ToastCharterUtils.showShort("启动自动驾驶中") + cleanRoutePoints() startAutoPilot(parameters) CallerLogger.d( SceneConstant.M_BUS + TAG, - "行程日志-开启自动驾驶====" + com.elegant.network.utils.GsonUtil.jsonFromObject(parameters) + "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) + " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName + "isRestart = " ) @@ -945,7 +1085,7 @@ object CharterPassengerModel { } val parameters = AutopilotControlParameters() orderInfo?.let { orderInfo -> - mLocationWgs?.let { startPoint -> + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().let { startPoint -> val startWgsLon: Double = startPoint.longitude val startWgsLat: Double = startPoint.latitude val endWgsLon: Double = orderInfo.wgs84Lon!! @@ -983,4 +1123,48 @@ object CharterPassengerModel { it.lineName!!,it.startSiteName!!,it.siteName!!,false) } } + + private fun invokeOrderLeftTimeListeners(timeInSecond: Long){ + leftTime = timeInSecond + UiThreadHandler.post({ + for (value in orderLeftTimeListeners.values) { + value.setOrderTimeCallBack(timeInSecond) + } + }, UiThreadHandler.MODE.QUEUE) + } + + private fun invokeStationDistanceListener(meters:Long , timeInSecond:Long){ + var tempMeters = meters + var tempTimeInSecond = timeInSecond + if (orderInfo?.arriveStatus == OrderInfoResponse.ARRIVED) { + tempMeters = -1 + tempTimeInSecond = -1 + } + UiThreadHandler.post({ + for (value in stationDistanceListener.values) { + value.setDistancecAndTime(tempMeters,tempTimeInSecond) + } + }, UiThreadHandler.MODE.QUEUE) + + } + + /** + * 将轨迹文件信息同步到鹰眼 + */ + private fun updateAutopilotControlParameters() { + val parameters = initAutopilotControlParameters() + if (null == parameters) { + e(SceneConstant.M_SWEEPER + TAG, "AutopilotControlParameters is empty.") + return + } + d(M_BUS_P + TAG, "AutopilotControlParameters" + GsonUtil.jsonFromObject(parameters)) + d(M_BUS_P + TAG, "AutopilotControlParameters is update.") + updateAutopilotControlParameters(parameters) + } + + private fun clearAutopilotControlParameters() { + d(M_BUS_P + TAG, "AutopilotControlParameters is clear.") + updateAutopilotControlParameters(null) + } + } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderStatusEnum.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderStatusEnum.kt new file mode 100644 index 0000000000..cda47e3c88 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderStatusEnum.kt @@ -0,0 +1,21 @@ +package com.mogo.och.bus.passenger.model + +/** + * Created on 2022/08/19 + * + * + * 0 初始状态, + * 10 已登录, + * 20 已登出, + */ +enum class OrderStatusEnum() { + Nothing(), + NoOrderUnuse(), //无订单车闲置 m1_order_noorder.xml 无订单页面 + OrderNoLine(), //有订单无线路 m1_order_lineside 选择线路页面 + OrdersWithLine(), //有订单有线路 m1_order_lineside 选择线路页面隐藏掉确定取消 + NoOrderUse(),; //无订单车不闲置 m1_order_end.xml 开门关门页面 +} + +interface IOrderStatusChangeListener { + fun onStatusChange(currentStatus:OrderStatusEnum) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt similarity index 93% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt index 4c1985ad4e..a0b3b6a44f 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt @@ -4,7 +4,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.och.bus.passenger.bean.LoopInfo import com.mogo.och.bus.passenger.constant.CharterPassengerConst -import com.mogo.och.bus.passenger.utils.RxUtils +import com.mogo.och.common.module.utils.RxUtils import io.reactivex.Observable import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers @@ -69,8 +69,9 @@ object BusPassengerModelLoopManager { if (it % loopInfo.interval == 0L) { try { loopInfo.function.invoke() - CallerLogger.d(TAG, "${aLong}正在执行方法${tag}") + CallerLogger.d(TAG, "${aLong}对象${loopInfo}正在执行方法${tag}") }catch (e:Throwable){ + e.printStackTrace() CallerLogger.e(TAG,"$tag:--$e") } } diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt similarity index 86% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt index 6561995bb5..ace0ad5d86 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt @@ -4,10 +4,10 @@ import android.content.Context import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.network.MoGoRetrofitFactory -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.bean.request.ArriveDestRequest import com.mogo.och.bus.passenger.bean.request.EndOrderRequest import com.mogo.och.bus.passenger.bean.response.* +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl @@ -40,7 +40,7 @@ object BusPassengerServiceManager { private fun beforeNet():Boolean{ if (draiverSn.isBlank()) { - ToastUtils.showShort("已断开司机屏连接、请联系安全员") + ToastCharterUtils.showShort("已断开司机屏连接、请联系安全员") return true } return false @@ -107,11 +107,11 @@ object BusPassengerServiceManager { .subscribe(OchCommonSubscribeImpl(context, callback, "serviceEnd")) } @JvmStatic - fun arriveDest(context: Context,lindId: Long ,callback: OchCommonServiceCallback?) { + fun arriveDest(context: Context,lindId: Long ,writtenVersion:Long,callback: OchCommonServiceCallback?) { if(beforeNet()){ return } - val request = ArriveDestRequest(draiverSn,lindId) + val request = ArriveDestRequest(draiverSn,lindId,writtenVersion) mBusPassengerServiceApi.arriveDest(request = request).transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "arriveDest")) } @@ -140,4 +140,13 @@ object BusPassengerServiceManager { mBusPassengerServiceApi.queryBusinessTime().transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime")) } + + @JvmStatic + fun queryLineLocation(context: Context,lineId:String ,callback: OchCommonServiceCallback?) { + if(beforeNet()){ + return + } + mBusPassengerServiceApi.queryLineLocation(lineId = lineId).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "serviceEnd")) + } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt similarity index 88% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt index a466dd6349..aafd120e7c 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt @@ -76,7 +76,7 @@ internal interface PassengerServiceApi { ): Observable /** - * 06结束订单 03 + * 06到达目的地 03 */ @POST("/och-rental-cabin/api/flow/v1/driver/arriveDest") fun arriveDest( @@ -107,4 +107,16 @@ internal interface PassengerServiceApi { @Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token, @Query("sn") sn: String = BusPassengerServiceManager.draiverSn ): Observable + + /** + * 08查询包车业务时间 11 + * 倒计时5分钟 消息盒子、倒计时结束弹窗 + */ + @GET("/och-rental-cabin/api/business/v1/queryLineLocation") + fun queryLineLocation( + @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, + @Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token, + @Query("sn") sn: String = BusPassengerServiceManager.draiverSn, + @Query("lineId") lineId: String + ): Observable } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt similarity index 94% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt index 88290a678d..1596ef34b0 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.Presenter import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.utils.RxUtils +import com.mogo.och.common.module.utils.RxUtils import io.reactivex.disposables.Disposable abstract class BusBasePassengerFunctionDevicePresenter(view: V) : diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerCarUseAndNoOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerCarUseAndNoOrderPresenter.kt new file mode 100644 index 0000000000..66e05e80b9 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerCarUseAndNoOrderPresenter.kt @@ -0,0 +1,12 @@ +package com.mogo.och.bus.passenger.presenter + +import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment + +class BusPassengerCarUseAndNoOrderPresenter(view: M1CarUserNoOrderFragment?) : + BusBasePassengerFunctionDevicePresenter(view){ + companion object { + private const val TAG = "BusPassengerFunctionPresenter" + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt new file mode 100644 index 0000000000..3165f5ed7a --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt @@ -0,0 +1,381 @@ +package com.mogo.och.bus.passenger.presenter + +import androidx.lifecycle.LifecycleOwner +import com.elegant.utils.UiThreadHandler +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +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.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.bean.LoopInfo +import com.mogo.och.bus.passenger.bean.event.EventLineSites +import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse +import com.mogo.och.bus.passenger.bean.response.LineInfoResponse +import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener +import com.mogo.och.bus.passenger.model.OrderStatusEnum +import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager +import com.mogo.och.bus.passenger.net.BusPassengerServiceManager +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1OrderLineFragment +import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg +import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg +import com.mogo.och.common.module.bean.dpmsg.DPMsgType +import com.mogo.och.common.module.bean.dpmsg.LineSite +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.manager.StopSideStatusManager +import com.mogo.och.common.module.utils.RxUtils +import io.reactivex.disposables.Disposable +import org.greenrobot.eventbus.EventBus + +class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : + BusBasePassengerFunctionDevicePresenter(view), IOrderStatusChangeListener { + + companion object{ + const val TAGLINELOOP = "LineSiteViewLineLoop" + const val TAG = "BusPassengerFunctionOrderPresenter" + } + + // 成功提交给后台得线路 + private var checkLine: LineInfoResponse.LineInfo? = null + + // 成功提交给后台得终点站点 + private var checkSite: SiteInfoResponse.SiteInfo? = null + + // 下一个站点 + private var currentSite: SiteInfoResponse.SiteInfo? = null + + // 向司机端端提交的临时线路 + private var tempCheckLine: LineInfoResponse.LineInfo? = null + + // 向司机端临时提交的终点站点 + private var tempCheckSite: SiteInfoResponse.SiteInfo? = null + + + private var subscribeSelectLine: Disposable? = null + private var subscribeSelectSite: Disposable? = null + + override fun onCreate(owner: LifecycleOwner) { + super.onCreate(owner) + CharterPassengerModel.setStatusChangeListener(TAG,this) + CallerTelematicListenerManager.addListener(TAG, msgReceived) + val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus() + onStatusChange(currentOrderStatus) + extracted() + } + + private fun extracted() { + val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus() + if (currentOrderStatus == OrderStatusEnum.OrderNoLine || currentOrderStatus == OrderStatusEnum.OrdersWithLine) { + val hasSetLineAndSite = CharterPassengerModel.hasSetLineAndSite() + if (hasSetLineAndSite != null) {// 已经设置了线路和站点 + checkLine = hasSetLineAndSite.first + checkSite = hasSetLineAndSite.second + } + mView?.setEnableSiteStatus(false) + queryLineList() + } + } + + /** + * 重置数据 + */ + fun resetData() { + tempCheckLine = null + tempCheckSite = null + if(checkLine==null){// 没有提交线路 + queryLineList() + mView?.setEnableSiteStatus(true) + }else{ + checkLine?.let { + mView?.setEnableSiteStatus(false) + mView?.lineAdapterSubmit(it) + querySitesByLineId(it) + } + } + } + + private fun querySitesByLineId(checkLine: LineInfoResponse.LineInfo) { + BusPassengerServiceManager.queryLineSiteList( + context, + checkLine.lineId.toString(), + object : OchCommonServiceCallback { + override fun onSuccess(data: SiteInfoResponse?) { + if (data?.data == null) return + val siteInfos = data.data + EventBus.getDefault().post(EventLineSites(checkLine,siteInfos,false)) + if (siteInfos.isNotEmpty()) { + // 计算当前站点是那个 + val calculateCurrentSite = + CharterPassengerModel.calculateCurrentSite(siteInfos) + val first = calculateCurrentSite.first// 可用站点 + if(first<0){ + // 所有站点不可用 + currentSite = siteInfos[siteInfos.size-1] + currentSite!!.isNear = calculateCurrentSite.second + mView?.siteAdapterEnableIndex(siteInfos.size-1) + }else{ + // + val index = if(first==0) { + 0 + }else if (first <= siteInfos.size-1) { + first-1 + } else { + siteInfos.size - 1 + } + currentSite = siteInfos[index] + currentSite!!.isNear = calculateCurrentSite.second + mView?.siteAdapterEnableIndex(index) + } + siteInfos.forEach { + if (it.siteId == checkSite?.siteId) { + it.isCheck = true + return@forEach + } + } + } + mView?.siteAdapterSetData(siteInfos) + } + + override fun onFail(code: Int, msg: String?) { + ToastCharterUtils.showShort("查询站点失败") + mView?.setVisableByTrun(showNetError = true) + } + + override fun onError() { + super.onError() + ToastCharterUtils.showShort("查询站点失败") + mView?.setVisableByTrun(showNetError = true) + } + }) + } + + private fun queryLineList() { + mView?.setVisableByTrun(showLoading = true) + BusPassengerServiceManager.queryLineList(context, object : + OchCommonServiceCallback { + override fun onSuccess(data: LineInfoListResponse?) { + if (data?.data == null) return + mView?.setVisableByTrun(showBiz = true) + mView?.lineAdapterSetData(data.data,checkLine) + } + + override fun onFail(code: Int, msg: String) { + ToastCharterUtils.showShort("查询线路失败") + mView?.setVisableByTrun(showNetError = true) + } + + override fun onError() { + super.onError() + mView?.setVisableByTrun(showNetError = true) + } + }) + } + + override fun onResume(owner: LifecycleOwner) { + super.onResume(owner) + } + + override fun onDestroy(owner: LifecycleOwner) { + super.onDestroy(owner) + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroy") + RxUtils.disposeSubscribe(subscribeSelectLine) + RxUtils.disposeSubscribe(subscribeSelectSite) + BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) + CharterPassengerModel.setStatusChangeListener(TAG,null) + CallerTelematicListenerManager.removeListener(TAG) + } + + /** + * 接收司机屏反馈信息 + */ + val msgReceived = object : IReceivedMsgListener { + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + UiThreadHandler.post { + if (type == OchCommonConst.BUSINESS_STRING) { + val msg = GsonUtils.fromJson( + String(byteArray), + BaseDPMsg::class.java + ) as BaseDPMsg + if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type) { + val msg = GsonUtils.fromJson( + String(byteArray), + ChangeDestMsg::class.java + ) as ChangeDestMsg + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "接受数据:切换站点${msg}") + if (msg.isConfirmed) { + if(msg.arriveStatus==2){ + return@post + } + ToastCharterUtils.showShort("站点确定") + mView?.setEnableSiteStatus(true) + checkLine = tempCheckLine + checkSite = tempCheckSite + tempCheckLine = null + tempCheckSite = null + checkLine?.let { + mView?.lineAdapterSubmit(it) + } + mView?.hideDataDriverAgree() + CharterPassengerModel.cleanbroadcastListInfo(checkSite) + CharterPassengerModel.queryOrder() + } else { + ToastCharterUtils.showShort("司机端拒绝请重新选择") + mView?.hideDataDriverRefuse() + } + RxUtils.disposeSubscribe(subscribeSelectSite) + BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) + } + } + } + } + } + + fun changeSites(siteList: MutableList){ + if (!CallerTelematicManager.getClientConnStatus()) { + ToastCharterUtils.showLong("乘客屏无法连接司机屏请联系安全员") + return + } + val sentDataSite: MutableList = mutableListOf() + siteList.forEach { + sentDataSite.add(it.copy2Mas()) + } + + tempCheckSite?.let { siteInfo -> + val orderNo = CharterPassengerModel.getCurrentOrderInfo()?.orderNo ?: "" + val msg = ChangeDestMsg( + orderNo, + siteInfo.lineId!!.toInt(), + siteInfo.lineName!!, + currentSite!!.siteId!!.toInt(), + currentSite!!.siteName!!, + siteInfo.siteId!!.toInt(), + siteInfo.siteName!!, + false, + 1, + 0, + sentDataSite + ) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:切换站点${msg}") + } + mView?.hideDataWaitDriverMsg() + // 启动查看和司机端链接 + BusPassengerModelLoopManager.setLoopFunction( + TAGLINELOOP, + LoopInfo(3, ::checkServerStatus) + ) + + RxUtils.disposeSubscribe(subscribeSelectSite) + subscribeSelectSite = RxUtils.createSubscribe(120_000){ + ToastCharterUtils.showShort("请联系安全员确认") + mView?.hideDataDriverRefuse() + } + } + private fun checkServerStatus() { + if (!CallerTelematicManager.getClientConnStatus()) { + ToastCharterUtils.showShort("断开和司机端连接、请联系安全员") + BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) + mView?.hideDataDriverRefuse() + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "endAni666") + } + } + + override fun onStatusChange(currentStatus: OrderStatusEnum) { + UiThreadHandler.post { + when (currentStatus) { + OrderStatusEnum.OrderNoLine -> { + mView?.setVisableByTrun(showBiz = true) + extracted() + } + OrderStatusEnum.OrdersWithLine ->{ + mView?.setVisableByTrun(showBiz = true) + } + else ->{ + mView?.setVisableByTrun(showNorOrder = true) + } + } + } + } + + fun canSwitchLine():Boolean { + val gnssSpeed = + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed + if (gnssSpeed < 0.5) { + when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 + return true + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// + return true + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { + // 自动驾驶中 + when (StopSideStatusManager.stopSiteStatus) { + StopSideStatusManager.Status.EndingSuccess -> { + return true + } + else ->{ + ToastCharterUtils.showShort("自动驾驶中无法切换线路") + return false + } + } + } + IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法切换线路") + return false + } + else -> {} + } + } else { + ToastCharterUtils.showShort("请停车后再修改目的地~") + return false + } + return true + } + + fun checkLineClick(lineInfo: LineInfoResponse.LineInfo) { + checkLine4View() + tempCheckLine = lineInfo + querySitesByLineId(lineInfo) + } + + private fun checkLine4View(){ + tempCheckSite = null + mView?.setEnableSiteStatus(false) + } + + fun checkSiteClick(siteInfo: SiteInfoResponse.SiteInfo?) { + tempCheckSite = siteInfo + if(checkSite!=null){ + checkSite?.let { + if (it.siteId == siteInfo?.siteId) {// 站点相同 隐藏所有提交按钮 + mView?.setEnableSiteStatus(false) + } else { + if(it.lineId == siteInfo?.lineId){// 线路相同显示单独提交 + mView?.setEnableSiteStatus(true) + }else{ + if(siteInfo==null){//没有选站点隐藏所有提交 + mView?.setEnableSiteStatus(false) + }else { + mView?.setEnableSiteStatus(true) + } + } + } + } + }else{ + mView?.setEnableSiteStatus(true) + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt similarity index 57% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt index 641a48e3cd..a1668f7b62 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt @@ -1,13 +1,8 @@ package com.mogo.och.bus.passenger.presenter import androidx.lifecycle.LifecycleOwner -import com.mogo.commons.voice.AIAssist -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.ui.M1ContainFragment -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager -import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment class BusPassengerFunctionPresenter(view: M1ContainFragment?) : BusBasePassengerFunctionDevicePresenter(view) { @@ -21,4 +16,8 @@ class BusPassengerFunctionPresenter(view: M1ContainFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) } + + fun haveOrder(): Boolean { + return CharterPassengerModel.hasOrder() + } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt similarity index 67% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt index c5f1600d00..34f47d9982 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt @@ -4,15 +4,19 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager 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.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.bus.passenger.ui.M1SoftFragment -import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1SoftFragment +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.common.module.manager.devicemanage.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 +import com.mogo.och.common.module.manager.devicemanage.data.LightStatus import io.reactivex.disposables.Disposable class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : BusBasePassengerFunctionDevicePresenter(view), - OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback { + LightAirconditionDoorCallback { companion object { private const val TAG = "BusPassengerFunctionSoftPresenter" } @@ -26,23 +30,23 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) - OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this) + LightAirconditionDoorStatusManager.addListener(TAG, this) } override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) - OCHM1LightAirconditionDoorStatusManager.removeListener(TAG) + LightAirconditionDoorStatusManager.removeListener(TAG) } /** * 空调状态变化 */ - override fun onAirconditionStatusCallback(heaterIsOpen: Boolean,airconditionStatus: OCHM1LightAirconditionDoorStatusManager.AirconditionStatus,isFirst: Boolean) { + override fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, isFirst: Boolean) { CallerLogger.d(SceneConstant.M_BUS_P + TAG, - "回写--空调开关:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.isOpen}、" + - "空调温度:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.temperature}" + - "空调模式:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.pattert}" + - "空调风速:${OCHM1LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}") + "回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}、" + + "空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" + + "空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" + + "空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}") UiThreadHandler.post { if(airconditionStatus.isOpen){ mView?.setAirconditionHeaterView( @@ -66,7 +70,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : /** * 暖风机状态变化 */ - override fun onHeaterStatusCallback(airconditionIsOpen:Boolean,heaterStatue: OCHM1LightAirconditionDoorStatusManager.HeaterStatue,isFirst: Boolean) { + override fun onHeaterStatusCallback(airconditionIsOpen:Boolean, heaterStatue: HeaterStatue, isFirst: Boolean) { CallerLogger.d(SceneConstant.M_BUS_P + TAG, "回写--暖风机开关:${heaterStatue.isOpen}、" + "风速:${heaterStatue.windSpeed}") @@ -93,7 +97,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : /** * 灯状态变化 */ - override fun onLightTop1Callback(lightStatus: OCHM1LightAirconditionDoorStatusManager.LightStatus,isFirst: Boolean) { + override fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) { CallerLogger.d(SceneConstant.M_BUS_P + TAG, "回写--顶灯1开关:${lightStatus.isOpenLight1}、" + "顶灯2开关:${lightStatus.isOpenLight2}、" + @@ -105,7 +109,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : /** * 灯状态变化 */ - override fun onLightTop2Callback(lightStatus: OCHM1LightAirconditionDoorStatusManager.LightStatus,isFirst: Boolean) { + override fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) { CallerLogger.d(SceneConstant.M_BUS_P + TAG, "回写--顶灯1开关:${lightStatus.isOpenLight1}、" + "顶灯2开关:${lightStatus.isOpenLight2}、" + @@ -118,7 +122,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : /** * 灯状态变化 */ - override fun onLightAtmosphereCallback(lightStatus: OCHM1LightAirconditionDoorStatusManager.LightStatus,isFirst: Boolean) { + override fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) { CallerLogger.d(SceneConstant.M_BUS_P + TAG, "回写--顶灯1开关:${lightStatus.isOpenLight1}、" + "顶灯2开关:${lightStatus.isOpenLight2}、" + @@ -137,11 +141,11 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(1,modeCmd,windSpeedCmd,temperatureCmd) disposeSubscribe(airconditionDisposable) airconditionDisposable = createSubscribe(10000){ - if (!OCHM1LightAirconditionDoorStatusManager.airconditionStatus.isOpen&& - OCHM1LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&& - OCHM1LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&& - OCHM1LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) { - ToastUtils.showShort("空调操作未生效,请稍后重试吧~") + if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen&& + LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&& + LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&& + LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -150,8 +154,8 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(2,modeCmd,windSpeedCmd,temperatureCmd) disposeSubscribe(airconditionDisposable) airconditionDisposable = createSubscribe(10000){ - if (OCHM1LightAirconditionDoorStatusManager.airconditionStatus.isOpen) { - ToastUtils.showShort("空调操作未生效,请稍后重试吧~") + if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -163,9 +167,9 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(1,windSpeedCmd) disposeSubscribe(heaterDisposable) heaterDisposable = createSubscribe(10000){ - if (!OCHM1LightAirconditionDoorStatusManager.heaterStatue.isOpen&& - OCHM1LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) { - ToastUtils.showShort("暖风机操作未生效,请稍后重试吧~") + if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen&& + LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) { + ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~") } } } @@ -175,8 +179,8 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(2,0) disposeSubscribe(heaterDisposable) heaterDisposable = createSubscribe(10000){ - if (OCHM1LightAirconditionDoorStatusManager.heaterStatue.isOpen) { - ToastUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的 + if (LightAirconditionDoorStatusManager.heaterStatue.isOpen) { + ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的 } } } @@ -187,15 +191,15 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : if(leftLight){ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1) subscribeLightTop1 = createSubscribe{ - if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2) subscribeLightTop1 = createSubscribe{ - if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -206,15 +210,15 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : if(rightLight){ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1) subscribeLightTop2 = createSubscribe{ - if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2) subscribeLightTop2 = createSubscribe{ - if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -225,15 +229,15 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : if (atmosphereLight) { CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1) subscribeLightAtmosphere = createSubscribe{ - if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } else { CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2) subscribeLightAtmosphere = createSubscribe{ - if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt similarity index 70% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt index 16fccdb1d8..cdc59f1886 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt @@ -1,6 +1,6 @@ package com.mogo.och.bus.passenger.presenter -import com.mogo.och.bus.passenger.ui.M1VideoFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1VideoFragment class BusPassengerFunctionVideoPresenter(view: M1VideoFragment?) : BusBasePassengerFunctionDevicePresenter(view) \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt new file mode 100644 index 0000000000..be25f6b913 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -0,0 +1,360 @@ +package com.mogo.och.bus.passenger.presenter + +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Canvas +import android.view.View +import androidx.lifecycle.LifecycleOwner +import com.amap.api.maps.model.LatLng +import com.mogo.commons.voice.AIAssist +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.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.function.view.SiteMarkerBean +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.SharedPrefs +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.response.LineInfoResponse +import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse +import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse +import com.mogo.och.bus.passenger.bean.response.TrajectoriesResponse +import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback +import com.mogo.och.bus.passenger.callback.IDistanceCallback +import com.mogo.och.bus.passenger.callback.IOrderChangeCallback +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener +import com.mogo.och.bus.passenger.model.OrderStatusEnum +import com.mogo.och.bus.passenger.receive.DriverMessage +import com.mogo.och.bus.passenger.ui.MainFragment +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.view.MakerWithSiteName +import com.mogo.och.bus.passenger.view.MakerWithSiteNamewithCheck +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.manager.StopSideStatusManager +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback +import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.NumberFormatUtil +import com.mogo.och.common.module.voice.VoiceNotice +import me.jessyan.autosize.utils.AutoSizeUtils +import java.util.concurrent.ConcurrentHashMap +import kotlin.math.ceil + +class BusPassengerPresenter(view: MainFragment?) : + BusBasePassengerFunctionDevicePresenter(view), + IDistanceCallback, IOrderChangeCallback, IOrderStatusChangeListener, + StopSideStatusManager.OCHPlanningActionsCallback, LightAirconditionDoorCallback, IBusPassengerControllerStatusCallback { + + private val lindIdAndView = ConcurrentHashMap() + + companion object { + private const val TAG = "BusPassengerPresenter" + const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor" + + } + override fun onCreate(owner: LifecycleOwner) { + super.onCreate(owner) + CharterPassengerModel.init() + // 定位监听 + CharterPassengerModel.setStationDistanceListener(TAG, this) + CharterPassengerModel.setControllerStatusCallback(TAG,this) + CharterPassengerModel.setCarTypeChangeListener(this) + CharterPassengerModel.setStatusChangeListener(TAG, this) + CallerTelematicListenerManager.addListener(TAG, DriverMessage) + StopSideStatusManager.addListener(TAG, this) + setCarChangeListener(R.raw.m1) + + } + + override fun onDestroy(owner: LifecycleOwner) { + super.onDestroy(owner) + CharterPassengerModel.setStationDistanceListener(TAG, null) + CharterPassengerModel.setCarTypeChangeListener(null) + CallerTelematicListenerManager.removeListener(TAG) + StopSideStatusManager.removeListener(TAG) + } + + override fun onCarLocationChanged(location: MogoLocation?) { + location?.let { + setSpeed(it.gnssSpeed) + } + } + + private fun setSpeed(speed: Float) { + UiThreadHandler.post { + val speedKM = (Math.abs(speed) * 3.6f).toInt() + mView?.setSpeed(speedKM.toString()) + } + } + + private fun setDistanceAndTime( + distance: String, + distanceUnit: String, + leftTime: String, + arriveTime: String + ) { + UiThreadHandler.post { + mView?.setDistanceAndTime(distance, distanceUnit, leftTime, arriveTime) + } + } + + /** + * 计算剩余距离和剩余时间 + */ + override fun setDistancecAndTime(meters: Long, timeInSecond: Long) { + if (meters < 0 && timeInSecond < 0) { + setDistanceAndTime("--", context.getString(R.string.m1_distance_unit_km), "--", "--") + return + } + var dis: String? = "0" + var disUnit = "KM" + if (meters > 0) { + if (meters / 1000 < 1) { + disUnit = context.getString(R.string.m1_distance_unit_m) + dis = Math.round(meters.toFloat()).toString() + } else { + disUnit = context.getString(R.string.m1_distance_unit_km) + dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000) + } + } + val time = ceil(timeInSecond / 60f).toInt() + val arriveTime = DateTimeUtil.getAfterSecondTime(timeInSecond.toInt()) + setDistanceAndTime(dis.toString(), disUnit, time.toString(), arriveTime) + } + + override fun setCarChangeListener(productType: Int?) { + when (productType) { + OrderInfoResponse.M1_LOVE -> { + mView?.setCarModle(R.raw.aiqinghao) + } + OrderInfoResponse.M1_FAMILY -> { + mView?.setCarModle(R.raw.jiatinghao) + } + OrderInfoResponse.M1_FRIENDLY -> { + mView?.setCarModle(R.raw.pengyouhao) + } + else -> { + mView?.setCarModle(R.raw.m1) + } + } + } + + fun haveOrder(): Boolean { + return CharterPassengerModel.hasOrder() + } + + override fun onStatusChange(currentStatus: OrderStatusEnum) { + when (currentStatus) { + OrderStatusEnum.Nothing -> {} + OrderStatusEnum.NoOrderUnuse -> { + UiThreadHandler.post { + mView?.closeOpenAndCloseDoor() + clearShowNoviceGuidanceSharedPrefs() + } + } + OrderStatusEnum.OrderNoLine -> { + CallerOrderListenerManager.invokeOrderRemoval(); + showNoviceGuidance() + } + OrderStatusEnum.OrdersWithLine -> {} + OrderStatusEnum.NoOrderUse -> { + when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 + ToastCharterUtils.showShort("设备未就绪请稍等,请安全员主动停止车辆") + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// + ToastCharterUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请安全员主动停止车辆") + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { + // 靠边停车 订单结束 靠边停车 + CallerAutoPilotControlManager.sendPlanningCmd(1) + } + IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请安全员主动停止车辆") + } + else -> {} + } + UiThreadHandler.post { + UiThreadHandler.post { + mView?.showOpenAndCloseDoor() + setDistancecAndTime(-1, -1) + } + } + } + } + } + + private fun clearShowNoviceGuidanceSharedPrefs() { + SharedPrefs.getInstance(context).remove(KEY4SHOWNOVICEGUIDANCE) + } + + private fun showNoviceGuidance() { + CallerLogger.d(M_BUS_P + TAG, "showNoviceGuidance") + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.orderNo?.let {order-> + val stringSet = SharedPrefs.getInstance(context).getStringSet(KEY4SHOWNOVICEGUIDANCE) + + if(stringSet==null){ + + }else{ + if (stringSet.contains(order)) { + return + }else{ + + } + } + UiThreadHandler.post({ + mView?.showNoviceGuidanceFragment() + },UiThreadHandler.MODE.QUEUE) + + } + } + + override fun setEndStationCallBack( + siteId: Long?, + siteName: String?, + gcj_lon: Double, + gcj_lat: Double + ) { + val latLng = LatLng(gcj_lat, gcj_lon) + mView?.cleanEndStation() + mView?.drawEndStation(latLng) + } + + override fun onStartAutopilotFailure( + actionStatus: StopSideStatusManager.Status, + stopSideStatus: Boolean?, + errorInfo: String? + ) { + UiThreadHandler.post { + when (actionStatus) { + StopSideStatusManager.Status.NOSTART -> { + ToastCharterUtils.showShort(errorInfo) + } + StopSideStatusManager.Status.START -> { + VoiceNotice.showNotice( + context.getString(R.string.m1_stop_site_zh), + AIAssist.LEVEL0 + ) + } + StopSideStatusManager.Status.DOING -> { + // 正在靠边停车 + } + StopSideStatusManager.Status.EndingSuccess -> { + ToastCharterUtils.showShort("靠边停车成功") + VoiceNotice.showNotice( + context.getString(R.string.m1_stop_site_success), + AIAssist.LEVEL0 + ) + } + StopSideStatusManager.Status.EndingFaile -> { + ToastCharterUtils.showShort("车辆系统繁忙,请稍后再试") + } + } + } + } + + override fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) { + if (!isFirst) { + if (isOpen) { + ToastCharterUtils.showShort("已开启车门") + } else { + ToastCharterUtils.showShort("已关门车门") + } + } + } + + fun getLineTrajectory( + lineInfo: LineInfoResponse.LineInfo, + sites: List + ) { + CharterPassengerModel.getLineTrajectory(lineInfo.lineId!!,object : OchCommonServiceCallback { + override fun onSuccess(data: TrajectoriesResponse?) { + if (null != data && 0 == data.code) { + data.data?.let { + CallerLogger.d(M_BUS_P + TAG, "getLineTrajectory轨迹点:${data.data.size}") + val trajectoryList = mutableListOf() + it.forEach {latLngMain -> + trajectoryList.add(latLngMain.exchangeData()) + } + drawStationInfo(sites) + mView?.drawOverMapViewTrajectory(trajectoryList) + } + } + } + + override fun onFail(code: Int, msg: String) { + ToastCharterUtils.showShort("$code:$msg") + } + }) + + } + + fun drawStationInfo(sites: List){ + val stationsList: MutableList = mutableListOf() + val stationsNameList: MutableList = mutableListOf() + val stationIcon = BitmapFactory.decodeResource(context.resources, R.drawable.map_staton_icon) + sites.forEach { + stationsList.add(SiteMarkerBean(LatLng(it.GcjLat!!,it.GcjLon!!),stationIcon,0.5f,1f)) + val bitmap = getBitmap(it.siteId!!,it.siteName ?: "", it.isCheck) + stationsNameList.add(SiteMarkerBean(LatLng(it.GcjLat,it.GcjLon),bitmap,0.0f,0.2f)) + } + mView?.drawOverMapViewStation(stationsList,stationsNameList) + } + + private fun getBitmap(siteId:Long,siteName: String,isCheck:Boolean): Bitmap { + var siteView = lindIdAndView[siteId] + if(siteView==null){ + val marker = MakerWithSiteName(context) + marker.setTextAndCheck(siteName,isCheck) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + val bitmap = Bitmap.createBitmap(marker.width, marker.height, Bitmap.Config.ARGB_8888) + marker.draw(Canvas(bitmap)) + siteView = MakerWithSiteNamewithCheck(isCheck,marker,bitmap) + lindIdAndView[siteId] = siteView + }else{ + CallerLogger.d(M_BUS_P + TAG, "缓存View:$siteName---${siteView.isCheck}-----$isCheck") + if (siteView.isCheck != isCheck) { + val marker = siteView.makerWithSiteName + marker.setTextAndCheck(siteName,isCheck) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.UNSPECIFIED) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + val bitmap = Bitmap.createBitmap(marker.width, marker.height, Bitmap.Config.ARGB_8888) + marker.draw(Canvas(bitmap)) + siteView.isCheck = isCheck + siteView.bitmapView = bitmap + } + } + return siteView.bitmapView + } + + fun drawEndStation() { + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.let { + if (it.wgs84Lon != null && it.wgs84Lat != null && it.siteId != null && it.siteName != null) { + val coordinateConverterWgsToGcj = + CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj( + context, + it.wgs84Lon!!, + it.wgs84Lat!! + ) + + val latLng = LatLng(coordinateConverterWgsToGcj.latitude, coordinateConverterWgsToGcj.longitude) + mView?.drawEndStation(latLng) + } + } + + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt new file mode 100644 index 0000000000..c29775333b --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt @@ -0,0 +1,68 @@ +package com.mogo.och.bus.passenger.presenter + +import androidx.lifecycle.LifecycleOwner +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.RxUtils +import io.reactivex.disposables.Disposable + +class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) : + BusBasePassengerFunctionDevicePresenter(view) { + companion object{ + private const val TAG = "BusPassengerFunctionPresenter" + } + + var createSubscribe: Disposable?=null + override fun onCreate(owner: LifecycleOwner) { + super.onCreate(owner) + } + + override fun onResume(owner: LifecycleOwner) { + super.onResume(owner) + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.let { + mView?.setUserPhoneInfo(it.passengerPhone?:"") + try { + mView?.setStartTimeAndEndTime( + DateTimeUtil.formatLongToString(it.startTime!!, DateTimeUtil.HH_mm), + DateTimeUtil.formatLongToString(it.endTime!!, DateTimeUtil.HH_mm)) + }catch (e:Exception){ + e.printStackTrace() + } + when (it.productType) { + OrderInfoResponse.M1_LOVE -> { + mView?.setProductType("爱情号") + } + OrderInfoResponse.M1_FAMILY -> { + mView?.setProductType("家庭号") + } + OrderInfoResponse.M1_FRIENDLY -> { + mView?.setProductType("朋友号") + } + else -> { + mView?.setProductType("") + } + } + } + + } + + override fun onDestroy(owner: LifecycleOwner) { + super.onDestroy(owner) + createSubscribe?.let { + if (!it.isDisposed) { + it.dispose() + } + } + } + + fun exitDialogFragment() { + createSubscribe = RxUtils.createSubscribe(15_000) { + mView?.dismissAllowingStateLoss() + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/DebugWatchDogPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/DebugWatchDogPresenter.kt new file mode 100644 index 0000000000..f451a04c96 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/DebugWatchDogPresenter.kt @@ -0,0 +1,13 @@ +package com.mogo.och.bus.passenger.presenter + +import com.mogo.och.bus.passenger.ui.dialogfragment.DebugViewWatchDogFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment + +class DebugWatchDogPresenter(view: DebugViewWatchDogFragment?) : + BusBasePassengerFunctionDevicePresenter(view){ + companion object { + private const val TAG = "BusPassengerFunctionPresenter" + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt new file mode 100644 index 0000000000..3b47ae8b55 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt @@ -0,0 +1,79 @@ +package com.mogo.och.bus.passenger.presenter + +import androidx.lifecycle.LifecycleOwner +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +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.GsonUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.callback.ITimeCallback +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.OrderInfoFragment +import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg +import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.DateTimeUtil + +class OrderInfoPresenter(view: OrderInfoFragment?) : + BusBasePassengerFunctionDevicePresenter(view), ITimeCallback { + companion object{ + private const val TAG = "OrderInfoPresenter" + } + override fun onCreate(owner: LifecycleOwner) { + super.onCreate(owner) + CharterPassengerModel.setOrderLeftTimeListeners(TAG,this) + getDataInfo() + } + + private fun getDataInfo() { + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.let { + mView?.setPhone(it.passengerPhone?:"") + try { + mView?.setStartTimeAndEndTime( + DateTimeUtil.formatLongToString(it.startTime!!, DateTimeUtil.HH_mm), + DateTimeUtil.formatLongToString(it.endTime!!, DateTimeUtil.HH_mm)) + }catch (e:Exception){ + e.printStackTrace() + } + } + } + + override fun onDestroy(owner: LifecycleOwner) { + super.onDestroy(owner) + CharterPassengerModel.setOrderLeftTimeListeners(TAG,null) + } + + override fun setOrderTimeCallBack(timeInSecond: Long) { + val leftTime = DateTimeUtil.second2Time(timeInSecond) + mView?.setLeftTime(leftTime) + } + + fun endOrder() { + CharterPassengerModel.endOrder(object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + if (null != data && 0 == data.code) { + ToastCharterUtils.showShort("结束成功") + CharterPassengerModel.setEndOrderStatus() + mView?.closeDialogContaion() + val msg = EndOrderMsg( + CharterPassengerModel.getCurrentOrderInfo()?.orderNo?:"", + ) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:结束订单${msg}") + } + } + + override fun onFail(code: Int, msg: String) { + ToastCharterUtils.showShort("$code:$msg") + } + }) + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt new file mode 100644 index 0000000000..3ef66cc329 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt @@ -0,0 +1,84 @@ +package com.mogo.och.bus.passenger.receive + +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.voice.AIAssist +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +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.ActivityUtils +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.common.module.bean.dpmsg.* +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.SoundPoolHelper +import com.mogo.och.common.module.voice.VoiceNotice + +object DriverMessage: IReceivedMsgListener { + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + UiThreadHandler.post { + if (type == OchCommonConst.BUSINESS_STRING) { + val msg = GsonUtils.fromJson( + String(byteArray), + BaseDPMsg::class.java + ) as BaseDPMsg + when (msg.type) { + DPMsgType.TYPE_OPEN_CLOSE_DOOR.type -> { + CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "收到数据:开关门") + val doorStatus = LightAirconditionDoorStatusManager.doorStatus + if (doorStatus.isOpen) { + LightAirconditionDoorManager.go2OpenDoor(false) + } else { + LightAirconditionDoorManager.go2OpenDoor(true) + } + } + DPMsgType.TYPE_COMMON.type -> { + val msg = GsonUtils.fromJson( + String(byteArray), + AppConnectMsg::class.java + ) as AppConnectMsg + CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "收到数据:常规数据:$msg") + if (msg.isViewShow) { //消息盒子显示内容 + pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(), msg.msg) + } + if(msg.isPlay){ + VoiceNotice.showNotice(msg.msg, AIAssist.LEVEL1) + if(msg.msg.contains("核销成功")){ + val string = AbsMogoApplication.getApp().getString(R.string.m1_welcome_tts) + VoiceNotice.showNotice(string, AIAssist.LEVEL1,4_000) + } + } + } + DPMsgType.TYPE_CHANGE_DEST.type -> { + val msg = GsonUtils.fromJson( + String(byteArray), + ChangeDestMsg::class.java + ) as ChangeDestMsg + if (msg.isConfirmed&&msg.arriveStatus== OrderInfoResponse.ARRIVED) { + CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "接受数据:到站${msg}") + CharterPassengerModel.arrivedDeskSuccess(msg.writeVersion?:0,false) + } + } + else -> {} + } + } + } + } + + private fun pushOperationalToMsgBox(time: Long, content: String, type: Int = -1) { + playDI() + OCHSocketMessageManager.pushAppOperationalMsgBox(time, content, type) + } + + private fun playDI() { + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.m1_voice_di) + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt new file mode 100644 index 0000000000..ae0b1ccadc --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt @@ -0,0 +1,324 @@ +package com.mogo.och.bus.passenger.ui + +import android.graphics.BitmapFactory +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.amap.api.maps.model.LatLng +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.mvp.MvpFragment +import com.mogo.eagle.core.data.config.HdMapBuildConfig +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController +import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView +import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView +import com.mogo.eagle.core.function.view.SiteMarkerBean +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.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.map.uicontroller.VisualAngleMode +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.event.DebugView +import com.mogo.och.bus.passenger.bean.event.EventLineSites +import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter +import com.mogo.och.bus.passenger.ui.dialogfragment.DebugViewWatchDogFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment +import com.mogo.och.bus.passenger.view.statusbar.StatusBarView +import com.mogo.och.common.module.biz.constant.LoginStatusManager +import kotlinx.android.synthetic.main.m1_main_fragment.* +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode +import java.lang.ref.WeakReference + +/** + * @author: wangmingjun + * @date: 2022/4/12 + */ +class MainFragment : + MvpFragment() { + + private var bpFunctionGroupDialogFragment: WeakReference? = null + private var debugViewWatchDogFragment: WeakReference? = null + private var m1CarUserNoOrderFragment: WeakReference? = null + private var noviceGuidanceFragment: WeakReference? = null + + private val endStation = + BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, + R.drawable.m1_small_map_view_dir_end) + private val lineTrajectory = + BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, + R.drawable.charter_p_trajectory_line) + + override fun getLayoutId(): Int { + return R.layout.m1_main_fragment + } + + override fun getTagName(): String { + return TAG + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + EventBus.getDefault().register(this) + return super.onCreateView(inflater, container, savedInstanceState) + } + + override fun initViews() { + omvOverMap.hideResetView() + viewBusPM1MsgBoxButton.setClickListener(object : MMsgBoxButtonView.ClickListener { + override fun showMsgBoxList(show: Boolean) { + if (show) { + viewBusPM1MsgBoxList.visibility = View.VISIBLE + viewBusPM1MsgBoxBubble.visibility = View.GONE + viewBusPM1MsgBoxBubble.isShowData(false) + } else { + viewBusPM1MsgBoxList.visibility = View.GONE + viewBusPM1MsgBoxBubble.visibility = View.VISIBLE + viewBusPM1MsgBoxBubble.isShowData(true) + } + } + + }) + + bb_boorombar.setSettingClickListener{ + openSettingPage(M1ContainFragment.SETTINGSOFTTAB) + } + bb_boorombar.setOrderInfoClickListener{ + if (LoginStatusManager.isLogin()) { + if(mPresenter?.haveOrder()==true){ + openSettingPage(M1ContainFragment.ORDERINFO) + }else{ + ToastCharterUtils.showShort("请确认订单") + } + }else{ + ToastCharterUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) + } + } + bb_boorombar.setLineClickListener{ + openSettingPage(M1ContainFragment.SELECTLINE) + } + aciv_enter_video.setOnClickListener{ + openSettingPage(M1ContainFragment.VIDEOTAB) + } + aciv_map_2_default.setOnClickListener { + omvOverMap.displayCustomOverView() + val controller = getMapUIController() + if (controller != null) { + //切换到地图中间 + controller.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null) + // 切换缩放到中视角 + controller.changeZoom2(0.8f) + } + } + + debug_arrive_dest.setOnClickListener { + CharterPassengerModel.arriveDest() + } + debug_show_noviceGuidance.setOnClickListener { + showNoviceGuidanceFragment() + } + debug_change_modle.setOnClickListener { + ToastCharterUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请安全员主动停止车辆") + when (HdMapBuildConfig.currentCarVrIconRes) { + R.raw.aiqinghao -> { + mPresenter?.setCarChangeListener(OrderInfoResponse.M1_FAMILY) + } + R.raw.jiatinghao -> { + mPresenter?.setCarChangeListener(OrderInfoResponse.M1_FRIENDLY) + } + R.raw.pengyouhao -> { + mPresenter?.setCarChangeListener(0) + } + else -> { + mPresenter?.setCarChangeListener(OrderInfoResponse.M1_LOVE) + } + } + + } + + debug_show_endview.setOnClickListener { + showOpenAndCloseDoor() + } + } + + private fun openSettingPage(tab: String) { + if (bpFunctionGroupDialogFragment?.get() == null) { + bpFunctionGroupDialogFragment = WeakReference(M1ContainFragment.newInstance()) + } + val bpFunctionGroup = bpFunctionGroupDialogFragment?.get() + M1ContainFragment.openSettingPage(childFragmentManager,parentFragmentManager,bpFunctionGroup,tab) + } + + private fun showDebugView() { + if (debugViewWatchDogFragment?.get() == null) { + debugViewWatchDogFragment = WeakReference(DebugViewWatchDogFragment.newInstance()) + } + val debugViewFragment = debugViewWatchDogFragment?.get() + DebugViewWatchDogFragment.showDebugView(childFragmentManager,parentFragmentManager,debugViewFragment) + } + + + fun setSpeed(speed: String) { + tv_speed.text = speed + } + + fun setDistanceAndTime( + distance: String, + distanceUnit: String, + leftTime:String, + arriveTime:String + ) { + tv_distance.text = distance + tv_distance_unit.text = distanceUnit + tv_distance_surplus_time.text = leftTime + tv_distance_arrive_time.text = arriveTime + } + + fun setCarModle(rawInfo: Int){ + getMapUIController()?.changeCurrentIcon(rawInfo) + HdMapBuildConfig.currentCarVrIconRes = rawInfo + } + + override fun createPresenter(): BusPassengerPresenter { + return BusPassengerPresenter(this) + } + + override fun initViews(savedInstanceState: Bundle?) { + super.initViews(savedInstanceState) + mapBizView.onCreate(savedInstanceState) + omvOverMap.onCreateView(savedInstanceState) + } + + fun drawEndStation(latLng: LatLng) { + val listOf = listOf(latLng) + omvOverMap.drawSiteMarkers(listOf,endStation,0.5f,1f) + } + fun cleanEndStation(){ + omvOverMap.clearSiteMarkers() + omvOverMap.clearCustomPolyline() + } + + override fun onResume() { + super.onResume() + mapBizView.onResume() + omvOverMap.onResume() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + mapBizView.onSaveInstanceState(outState) + } + + override fun onLowMemory() { + super.onLowMemory() + mapBizView.onLowMemory() + } + + override fun onPause() { + super.onPause() + mapBizView.onPause() + omvOverMap.onPause() + } + + override fun onDestroyView() { + mapBizView.onDestroy() + omvOverMap.onDestroy() + super.onDestroyView() + EventBus.getDefault().unregister(this) + } + + fun showOpenAndCloseDoor() { + val bpFunctionGroup = bpFunctionGroupDialogFragment?.get() + bpFunctionGroup?.dismissAllowingStateLoss() + val noviceGuidanceFragment = noviceGuidanceFragment?.get() + noviceGuidanceFragment?.dismissAllowingStateLoss() + + if (m1CarUserNoOrderFragment?.get() == null) { + m1CarUserNoOrderFragment = WeakReference(M1CarUserNoOrderFragment.newInstance()) + } + val m1CarUserNoOrderFragment = m1CarUserNoOrderFragment?.get() + M1CarUserNoOrderFragment.showOpenAndCloseDoor(childFragmentManager,parentFragmentManager,m1CarUserNoOrderFragment) + } + fun showNoviceGuidanceFragment() { + if (noviceGuidanceFragment?.get() == null) { + noviceGuidanceFragment = WeakReference(NoviceGuidanceFragment.newInstance()) + } + val noviceGuidanceFragmentWeak = noviceGuidanceFragment?.get() + NoviceGuidanceFragment.showNoviceGuidance(childFragmentManager,parentFragmentManager,noviceGuidanceFragmentWeak) + } + fun closeOpenAndCloseDoor(){ + val bpFunctionGroup = m1CarUserNoOrderFragment?.get() + bpFunctionGroup?.let { + bpFunctionGroup.dismissAllowingStateLoss() + } + UiThreadHandler.postDelayed({ + cleanEndStation() + },2_000) + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun changeOverview(eventLineSites: EventLineSites) { + CallerLogger.d(M_BUS_P + TAG, "eventLineSites:${eventLineSites.lineInfo?.lineId}") + if (eventLineSites.clear) { + omvOverMap?.clearSitePolyline() + omvOverMap?.includeSitePointsAndUpdateCamera(mutableListOf()) + omvOverMap?.clearSiteMarkers() + omvOverMap?.clearSiteNameViews() + mPresenter?.drawEndStation() + } else { + if(eventLineSites.lineInfo==null){//更新站点 + mPresenter?.drawStationInfo(eventLineSites.sites!!) + }else{// 更新轨迹和站点 + mPresenter?.getLineTrajectory(eventLineSites.lineInfo,eventLineSites.sites!!) + } + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun changeDebugView(debugView: DebugView) { + when (debugView.type) { + StatusBarView.bizz -> { + if(group_debug.visibility==View.GONE|| + group_debug.visibility==View.INVISIBLE){ + group_debug.visibility = View.VISIBLE + }else{ + group_debug.visibility = View.GONE + } + } + else -> { + if (ToggleDebugView.toggleDebugView.isShowIng()) { + ToggleDebugView.toggleDebugView.dismiss() + }else { + showDebugView() + } + } + } + + } + + fun drawOverMapViewStation(stationsList: MutableList,siteMarkers: List?){ + omvOverMap?.clearSiteMarkers() + omvOverMap?.clearSiteNameViews() + omvOverMap?.drawSiteMarkers(stationsList) + omvOverMap?.drawSiteNameViews(siteMarkers) + } + + fun drawOverMapViewTrajectory(coordinates: List) { + omvOverMap?.drawSitePolyline(coordinates, lineTrajectory) + omvOverMap?.includeSitePointsAndUpdateCamera(coordinates) + } + + companion object { + public const val TAG = "BusPassengerRouteFragment" + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/OrderLineItemAdapter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderLineItemAdapter.kt similarity index 68% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/OrderLineItemAdapter.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderLineItemAdapter.kt index 142998121d..405168a0b7 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/OrderLineItemAdapter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderLineItemAdapter.kt @@ -17,16 +17,34 @@ class OrderLineItemAdapter( private val dataList: MutableList ) : RecyclerView.Adapter() { - private var enable = false - var checkChangeListener: CheckListener? = null - fun setDataList(dataList: List) { + fun setDataList( + dataList: List, + checkLine: LineInfoResponse.LineInfo? + ) { this.dataList.clear() this.dataList.addAll(dataList) + setCheckData(checkLine) notifyDataSetChanged() } + fun setCheckData(checkLine: LineInfoResponse.LineInfo?){ + if(this.dataList.isNotEmpty()) { + var tempCheckLine = checkLine + if (checkLine == null) { + tempCheckLine = dataList.first() + } + this.dataList.forEach { + if (it.lineId == tempCheckLine!!.lineId) { + it.isCheck = true + checkChangeListener?.onCheckListener(tempCheckLine) + return@forEach + } + } + } + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH { val view: View @@ -39,13 +57,17 @@ class OrderLineItemAdapter( val lineInfo = dataList[holder.bindingAdapterPosition] if(lineInfo.isCheck){ holder.lineNameTextView.setBackgroundResource(R.drawable.m1_order_line_checked_shape) + holder.lineNameTextView.setTextColor(context.getColor(R.color.bus_p_m1_1466FB)) }else{ holder.lineNameTextView.setBackgroundResource(android.R.color.transparent) + holder.lineNameTextView.setTextColor(context.getColor(R.color.bus_p_m1_292c39)) } holder.lineNameTextView.text = lineInfo.name holder.lineNameTextView.setOnClickListener { - if (!enable) { - return@setOnClickListener + checkChangeListener?.let { + if(!it.canSwitchLine()){ + return@setOnClickListener + } } if (lineInfo.isCheck) { return@setOnClickListener @@ -62,24 +84,15 @@ class OrderLineItemAdapter( return dataList.size } - fun setEnable(enable: Boolean) { - this.enable = enable - dataList.forEachIndexed { _, lineInfo -> - lineInfo.isCheck = false - } - notifyDataSetChanged() - } - fun submitLine(checkLine: LineInfoResponse.LineInfo) { - this.dataList.clear() - this.dataList.add(checkLine) dataList.forEachIndexed { _, lineInfo -> - lineInfo.isCheck = false + lineInfo.isCheck = lineInfo.lineId==checkLine.lineId } notifyDataSetChanged() } interface CheckListener { + fun canSwitchLine():Boolean fun onCheckListener(lineInfo: LineInfoResponse.LineInfo) } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt new file mode 100644 index 0000000000..76413221d5 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt @@ -0,0 +1,132 @@ +package com.mogo.och.bus.passenger.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.event.EventLineSites +import com.mogo.och.bus.passenger.bean.response.LineInfoResponse +import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse +import org.greenrobot.eventbus.EventBus + +/** + * Created by adityagohad on 06/06/17. + */ +class OrderSiteItemAdapter( + private val context: Context, + private val dataList: MutableList +) : RecyclerView.Adapter() { + + private var enableIndex = -1 + + var checkChangeListener: CheckListener? = null + + + fun setDataList(dataList: List) { + this.dataList.clear() + this.dataList.addAll(dataList) + notifyDataSetChanged() + } + + fun setEnableIndex(enableIndex: Int) { + this.enableIndex = enableIndex + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH { + val view: View + val inflater = LayoutInflater.from(context) + view = inflater.inflate(R.layout.m1_order_site_item, parent, false) + return TextVH(view) + } + + override fun onBindViewHolder(holder: TextVH, position: Int) { + val siteInfo = dataList[holder.bindingAdapterPosition] + if (holder.bindingAdapterPosition > enableIndex) { + if (siteInfo.isCheck) { + holder.iv_site_checked.setImageResource(R.drawable.m1_order_site_checked) + } else { + holder.iv_site_checked.setImageResource(R.drawable.m1_order_site_check) + } + holder.tv_site_site_name.setTextColor( + ContextCompat.getColor( + context, + R.color.bus_p_m1_222222 + ) + ) + } else { + holder.iv_site_checked.setImageResource(R.drawable.m1_order_site_check_enable) + holder.tv_site_site_name.setTextColor( + ContextCompat.getColor( + context, + R.color.bus_p_m1_332C2D31 + ) + ) + } + holder.tv_site_site_name.text = siteInfo.siteName + holder.itemView.setOnClickListener { + if (holder.bindingAdapterPosition > enableIndex) { + checkChangeListener?.let { + if(!it.canSwitchLine()){ + return@setOnClickListener + } + } + var tempInfo:SiteInfoResponse.SiteInfo? = null + dataList.forEachIndexed { index, lineInfo -> + if (index == position) { + if (lineInfo.isCheck) { + lineInfo.isCheck = false + tempInfo = null + } else { + lineInfo.isCheck = true + tempInfo = lineInfo + } + } else { + lineInfo.isCheck = false + } + } + notifyDataSetChanged() + EventBus.getDefault().post(EventLineSites(null,dataList,false)) + checkChangeListener?.onCheckListener(tempInfo) + } else { + if (siteInfo.isNear) { + ToastCharterUtils.showShort("您已在此站点附近") + } else { + ToastCharterUtils.showShort("站点已过,请选择返程路线") + } + } + } + } + + override fun getItemCount(): Int { + return dataList.size + } + + fun clearCheck() { + dataList.forEachIndexed { index, lineInfo -> + lineInfo.isCheck = false + } + notifyDataSetChanged() + } + + interface CheckListener { + fun canSwitchLine():Boolean + fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo?) + } + + inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) { + var tv_site_site_name: TextView + var iv_site_checked: ImageView + + init { + tv_site_site_name = itemView.findViewById(R.id.tv_site_site_name) + iv_site_checked = itemView.findViewById(R.id.iv_site_checked) + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerItemVideoHolder.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerItemVideoHolder.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerItemVideoHolder.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerItemVideoHolder.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java similarity index 94% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java index 18ed099f60..8fac0b6982 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; -import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.bus.passenger.utils.ToastCharterUtils; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.bean.TaxiPassengerVideoPlay; import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack; @@ -102,12 +102,12 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter() { + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 + } + + override fun getLayoutId(): Int = R.layout.m1_debugview_pass + + override fun getTagName(): String = TAG + + override fun initViews() { + dialog?.setCancelable(false) + actv_password_submit.setOnClickListener { + val text = acet_close.text + if(text==null||text.isEmpty()){ + ToastCharterUtils.showShort("请输入密码") + }else{ + if(text.toString() == "123987"){ + dismissAllowingStateLoss() + dialog?.window?.let { + KeyboardUtils.hideSoftInput(it) + } + ToggleDebugView.toggleDebugView.toggle(requireContext()) + }else{ + ToastCharterUtils.showShort("请输入正确密码") + } + } + } + actv_cancle.setOnClickListener { + dialog?.window?.let { + KeyboardUtils.hideSoftInput(it) + } + dismissAllowingStateLoss() + } + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + acet_close.text?.clear() + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + dialog?.window?.let { + BarUtils.hideStatusBarAndSticky(it) + it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) + dialog?.setOnShowListener { _ -> + it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) + BarUtils.hideStatusBarAndSticky(it) + } + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + } + + override fun createPresenter(): DebugWatchDogPresenter = + DebugWatchDogPresenter(this) + + /** + * 重写父类show()方法 + * 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState + */ + override fun show(manager: FragmentManager, tag: String?) { + try { + var cls = this.javaClass.superclass ?: return + while (true) { + if (cls.name == "java.lang.Object") { + break + } + cls = cls.superclass!! + if (cls == DialogFragment::class.java) { + break + } + } + val mDismissed = cls.getDeclaredField("mDismissed") + val mShownByMe = cls.getDeclaredField("mShownByMe") + mDismissed.isAccessible = true + mShownByMe.isAccessible = true + mDismissed.setBoolean(this, false) + mShownByMe.setBoolean(this, true) + if (isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + return + } + val ft: FragmentTransaction = manager.beginTransaction() + ft.add(this, tag) + ft.commitAllowingStateLoss() + } catch (e: Exception) { + Log.e("DialogFragment", "show", e.fillInStackTrace()) + } + } + + override fun onViewStateRestored(savedInstanceState: Bundle?) { + CallerLogger.d(M_BUS_P+ TAG, "onViewStateRestored") + super.onViewStateRestored(savedInstanceState) + } + + companion object { + const val TAG = "DebugViewWatchDogFragment" + @JvmStatic + fun newInstance(): DebugViewWatchDogFragment { + val args = Bundle() + val fragment = DebugViewWatchDogFragment() + CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment") + fragment.arguments = args + return fragment + } + fun showDebugView( + childFragmentManager: FragmentManager, + parentFragmentManager: FragmentManager, + debugViewWatchDogFragment: DebugViewWatchDogFragment? + ) { + + val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(TAG) + if (fragmentByTag is DialogFragment) { + if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { + if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 + CallerLogger.d(M_BUS_P + TAG, "权限验证") + return + } + } + } + if (debugViewWatchDogFragment != null) { + if (debugViewWatchDogFragment.dialog != null && debugViewWatchDogFragment.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (ClickUtils.isFastClick()) { + if (debugViewWatchDogFragment.isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + parentFragmentManager.beginTransaction().remove(debugViewWatchDogFragment) + .commitAllowingStateLoss() + CallerLogger.d(M_BUS_P + TAG, "已经添加正在移除") + } + debugViewWatchDogFragment.show(parentFragmentManager, TAG) + CallerLogger.d(M_BUS_P + TAG, "展示开关门") + } else { + CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次") + } + } + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1CarUserNoOrderFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1CarUserNoOrderFragment.kt similarity index 58% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1CarUserNoOrderFragment.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1CarUserNoOrderFragment.kt index 1cffc70857..16da2dddcd 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1CarUserNoOrderFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1CarUserNoOrderFragment.kt @@ -1,10 +1,9 @@ -package com.mogo.och.bus.passenger.ui +package com.mogo.och.bus.passenger.ui.dialogfragment import android.os.Bundle import android.util.Log import android.view.View import android.view.WindowManager -import android.widget.CompoundButton import androidx.fragment.app.DialogFragment import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager @@ -13,13 +12,14 @@ import com.mogo.commons.mvp.MvpDialogFragment 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_BUS_P +import com.mogo.eagle.core.utilcode.util.AppStateManager import com.mogo.eagle.core.utilcode.util.BarUtils -import com.mogo.eagle.core.utilcode.util.SharedPrefs +import com.mogo.eagle.core.utilcode.util.ClickUtils import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.presenter.BusPassengerCarUseAndNoOrderPresenter -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter -import kotlinx.android.synthetic.m1.m1_contain_fragment.* -import kotlinx.android.synthetic.m1.m1_order_end.* +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager +import com.mogo.och.common.module.voice.VoiceManager +import kotlinx.android.synthetic.main.m1_order_end.* /** * @author: yangyakun @@ -45,10 +45,10 @@ class M1CarUserNoOrderFragment : override fun initViews() { dialog?.setCancelable(false) iv_end_order_opendoor.onClick { - mPresenter?.openDoor() + LightAirconditionDoorManager.go2OpenDoor(true) } iv_end_order_closedoor.onClick { - mPresenter?.closeDoor() + LightAirconditionDoorManager.go2OpenDoor(false) } } @@ -106,19 +106,60 @@ class M1CarUserNoOrderFragment : } override fun onViewStateRestored(savedInstanceState: Bundle?) { - CallerLogger.d(M_BUS_P+TAG, "onViewStateRestored") + CallerLogger.d(M_BUS_P+ TAG, "onViewStateRestored") super.onViewStateRestored(savedInstanceState) } companion object { - const val TAG = "BusPassengerFunctionFragment" + const val TAG = "M1CarUserNoOrderFragment" @JvmStatic fun newInstance(): M1CarUserNoOrderFragment { val args = Bundle() val fragment = M1CarUserNoOrderFragment() + CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment") fragment.arguments = args return fragment } + + + fun showOpenAndCloseDoor( + childFragmentManager: FragmentManager, + parentFragmentManager: FragmentManager, + m1CarUserNoOrderFragment: M1CarUserNoOrderFragment? + ) { + + val fragmentByTag: Fragment? = parentFragmentManager.findFragmentByTag(TAG) + if (fragmentByTag is DialogFragment) { + if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { + if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 + CallerLogger.d(M_BUS_P + TAG, "权限验证") + return + } + } + } + if (m1CarUserNoOrderFragment != null) { + if (m1CarUserNoOrderFragment.dialog != null && m1CarUserNoOrderFragment.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (ClickUtils.isFastClick()) { + if (m1CarUserNoOrderFragment.isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + parentFragmentManager.beginTransaction().remove(m1CarUserNoOrderFragment) + .commitAllowingStateLoss() + CallerLogger.d(M_BUS_P + TAG, "已经添加正在移除") + } + m1CarUserNoOrderFragment.show(parentFragmentManager, TAG) + VoiceManager.endOrder() + CallerLogger.d(M_BUS_P + TAG, "展示开关门") + } else { + CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次") + } + } + } } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt new file mode 100644 index 0000000000..1409785af6 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt @@ -0,0 +1,321 @@ +package com.mogo.och.bus.passenger.ui.dialogfragment + +import android.content.DialogInterface +import android.os.Bundle +import android.util.Log +import android.view.View +import android.view.WindowManager +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentTransaction +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.mvp.MvpDialogFragment +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.* +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.event.EventLineSites +import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1OrderLineFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1SoftFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1VideoFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.OrderInfoFragment +import com.mogo.och.bus.passenger.ui.view.bottom.BottomBar +import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.common.module.biz.constant.LoginStatusManager +import kotlinx.android.synthetic.main.m1_contain_fragment.* +import org.greenrobot.eventbus.EventBus + +/** + * @author: yangyakun + * @date: 2023/1/28 + */ +class M1ContainFragment : + MvpDialogFragment() { + + var tab: String = VIDEOTAB + var fragmentTag: String = M1VideoFragment.TAG + var fragment: Fragment? = null + + var closeThis:ContainDismiss = object :ContainDismiss{ + override fun closeDialog() { + dismissAllowingStateLoss() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + CallerLogger.d(M_BUS_P+ TAG, "onCreate") + super.onCreate(savedInstanceState) + arguments?.let { + tab = it.getString(SELECTTAB, VIDEOTAB) + } + savedInstanceState?.let { + tab = it.getString(SELECTTAB, tab) + } + setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 + } + + private fun setCheckView() { + CallerLogger.d(M_BUS_P+ TAG, "setCheckView") + when (tab) { + VIDEOTAB -> { + fragment =childFragmentManager.findFragmentByTag(M1VideoFragment.TAG) + ?: M1VideoFragment.newInstance() + bb_bottom_bar.setCheckIndex(BottomBar.SelectView.VIDEO) + cl_container.setBackgroundResource(R.drawable.m1_function_bg) + fragmentTag = M1VideoFragment.TAG + } + SETTINGSOFTTAB -> { + fragment =childFragmentManager.findFragmentByTag(M1SoftFragment.TAG) + ?: M1SoftFragment.newInstance() + bb_bottom_bar.setCheckIndex(BottomBar.SelectView.SETTING) + cl_container.setBackgroundResource(R.drawable.m1_function_bg) + fragmentTag = M1SoftFragment.TAG + } + ORDERINFO -> { + fragment =childFragmentManager.findFragmentByTag(OrderInfoFragment.TAG) + ?: OrderInfoFragment.newInstance(closeThis) + bb_bottom_bar.setCheckIndex(BottomBar.SelectView.ORDERINFO) + cl_container.background = null + fragmentTag = OrderInfoFragment.TAG + } + SELECTLINE ->{ + fragment =childFragmentManager.findFragmentByTag(M1OrderLineFragment.TAG) + ?: M1OrderLineFragment.newInstance(closeThis) + bb_bottom_bar.setCheckIndex(BottomBar.SelectView.LINE) + cl_container.background = null + fragmentTag = M1OrderLineFragment.TAG + } + else -> {} + } + CallerLogger.d(M_BUS_P+ TAG, "fragment:$fragment") + + fragment?.let { + val beginTransaction = childFragmentManager.beginTransaction() + beginTransaction + .replace(R.id.fl_function_group, it, fragmentTag) + .commitNow() + } + + } + + override fun getLayoutId(): Int = R.layout.m1_contain_fragment + + override fun getTagName(): String = TAG + + override fun initViews() { + + //dialog?.setCancelable(false) + CallerLogger.d(M_BUS_P+ TAG, "initViews") + setCheckView() + cl_container.setOnClickListener { + dismissAllowingStateLoss() + } + bb_bottom_bar.setSettingClickListener{ + CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab") + if(tab==SETTINGSOFTTAB) { + dismissAllowingStateLoss() + }else{ + tab = SETTINGSOFTTAB + setCheckView() + } + } + bb_bottom_bar.setLineClickListener{ + CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab") + if(tab==SELECTLINE) { + dismissAllowingStateLoss() + }else{ + tab = SELECTLINE + setCheckView() + } + } + bb_bottom_bar.setOrderInfoClickListener{ + if (LoginStatusManager.isLogin()) { + if(mPresenter?.haveOrder()==true){ + + }else{ + ToastCharterUtils.showShort("请确认订单") + return@setOrderInfoClickListener + } + }else{ + ToastCharterUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) + return@setOrderInfoClickListener + } + + CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab") + if(tab==ORDERINFO) { + dismissAllowingStateLoss() + }else{ + tab = ORDERINFO + setCheckView() + } + } + bb_bottom_bar.setApplyClickListener(object : BottomClickView.ApplyClickLintener{ + override fun onApplyClick() { + dismissAllowingStateLoss() + } + }) + } + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + CallerLogger.d(M_BUS_P+ TAG, "onViewCreated") + dialog?.window?.let { + BarUtils.hideStatusBarAndSticky(it) + it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) + dialog?.setOnShowListener { _ -> + it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) + BarUtils.hideStatusBarAndSticky(it) + } + } + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + EventBus.getDefault().post(EventLineSites(null,null,true)) + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState") + context?.let { + SharedPrefs.getInstance(it).putString(SELECTTAB, tab) + } + } + + override fun createPresenter(): BusPassengerFunctionPresenter = + BusPassengerFunctionPresenter(this) + + /** + * 重写父类show()方法 + * 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState + */ + override fun show(manager: FragmentManager, tag: String?) { + try { + var cls = this.javaClass.superclass ?: return + while (true) { + if (cls.name == "java.lang.Object") { + break + } + cls = cls.superclass!! + if (cls == DialogFragment::class.java) { + break + } + } + val mDismissed = cls.getDeclaredField("mDismissed") + val mShownByMe = cls.getDeclaredField("mShownByMe") + mDismissed.isAccessible = true + mShownByMe.isAccessible = true + mDismissed.setBoolean(this, false) + mShownByMe.setBoolean(this, true) + if (isAdded) { + return + } + val ft: FragmentTransaction = manager.beginTransaction() + ft.add(this, tag) + ft.commitAllowingStateLoss() + } catch (e: Exception) { + Log.e("DialogFragment", "show", e.fillInStackTrace()) + } + } + + override fun onViewStateRestored(savedInstanceState: Bundle?) { + CallerLogger.d(M_BUS_P+ TAG, "onViewStateRestored") + when (tab) { + VIDEOTAB -> { + + } + SETTINGSOFTTAB -> {} + ORDERINFO -> {} + SELECTLINE -> {} + else -> {} + } + super.onViewStateRestored(savedInstanceState) + } + + companion object { + const val TAG = "M1ContainFragment" + + /** + * 娱乐视频 + */ + const val VIDEOTAB = "VideoTab" + + /** + * 空调、暖风、灯和剩余设置 + */ + const val SETTINGSOFTTAB = "SettingSoftTab" + + /** + * 订单信息 + */ + const val ORDERINFO = "OrderInfo" + + /** + * 选择线路 + */ + const val SELECTLINE = "SelectLine" + + + + const val SELECTTAB = "SELECTTAB" + + @JvmStatic + fun newInstance(): M1ContainFragment { + val args = Bundle() + val fragment = M1ContainFragment() + CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment") + fragment.arguments = args + return fragment + } + + + fun openSettingPage( + childFragmentManager: FragmentManager, + parentFragmentManager: FragmentManager, + bpFunctionGroup: M1ContainFragment?, + tab: String + ) { + val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(TAG) + if (fragmentByTag is DialogFragment) { + if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { + if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 + CallerLogger.d(M_BUS_P + TAG, "权限验证") + return + } + } + } + bpFunctionGroup?.arguments?.putString(SELECTTAB, tab) + if (bpFunctionGroup != null) { + if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "正在展示") + return + } + if (ClickUtils.isFastClick()) { + if (bpFunctionGroup.isAdded) { + CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "已经添加") + return + } + bpFunctionGroup.show(parentFragmentManager, TAG) + CallerLogger.d(M_BUS_P + TAG, "展示$tab---$bpFunctionGroup") + } else { + CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次") + } + } + } + } + + interface ContainDismiss{ + fun closeDialog() + } + interface ChangeCheck{ + fun changeChange() + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt new file mode 100644 index 0000000000..face4be037 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt @@ -0,0 +1,369 @@ +package com.mogo.och.bus.passenger.ui.dialogfragment + +import android.content.DialogInterface +import android.os.Bundle +import android.util.Log +import android.view.View +import android.view.WindowManager +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentTransaction +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.mvp.MvpDialogFragment +import com.mogo.commons.voice.AIAssist +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.* +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter +import com.mogo.och.bus.passenger.presenter.CharterPassengerNoviceGuidancePresenter +import com.mogo.och.bus.passenger.ui.MainFragment +import com.mogo.och.common.module.voice.VoiceNotice +import kotlinx.android.synthetic.main.m1_novice_guidance_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_1_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_2_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_3_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_4_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_fragment.* + +/** + * 新手引导 + */ +class NoviceGuidanceFragment : + MvpDialogFragment(), + View.OnClickListener { + + private var m1_novice_guidance_tts = true + private var m1_novice_guidance_door_tts = true + private var m1_novice_guidance_stop_site_tts = true + private var m1_novice_guidance_notice_tts = true + private var m1_novice_guidance_complier_tts = true + + private var pageStatus: PageStatus = PageStatus.Startpage + + + var closeThis: ContainDismiss = object : ContainDismiss { + override fun closeDialog() { + dismissAllowingStateLoss() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + CallerLogger.d(M_BUS_P + TAG, "onCreate") + super.onCreate(savedInstanceState) + arguments?.let { + //tab = it.getString(SELECTTAB, VIDEOTAB) + } + savedInstanceState?.let { + //tab = it.getString(SELECTTAB, tab) + } + setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 + } + + override fun getLayoutId(): Int = R.layout.m1_novice_guidance_fragment + + override fun getTagName(): String = TAG + + override fun initViews() { + dialog?.setCancelable(false) + CallerLogger.d(M_BUS_P + TAG, "initViews") + setTargetVisable(startGuidance = true) + + v_clikc_go_explore_bg.setOnClickListener { + if (pageStatus == PageStatus.Startpage) { + setTargetVisable(welcome01 = true) + if (m1_novice_guidance_tts) { + val m1NoviceGuidanceTts = + AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_tts) + VoiceNotice.showNotice(m1NoviceGuidanceTts, AIAssist.LEVEL1) + m1_novice_guidance_tts = false + } + }else if(pageStatus == PageStatus.EndPage){ + dismissAllowingStateLoss() + } + } + v_next_page_select_line.setOnClickListener { + setTargetVisable(welcome02 = true) + if (m1_novice_guidance_door_tts) { + val m1NoviceGuidanceDoorTts = + AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_door_tts) + VoiceNotice.showNotice(m1NoviceGuidanceDoorTts, AIAssist.LEVEL1) + m1_novice_guidance_door_tts = false + } + } + + v_pre_page_go_auto.setOnClickListener { + setTargetVisable(welcome01 = true) + } + v_next_page_go_auto.setOnClickListener { + setTargetVisable(welcome03 = true) + if (m1_novice_guidance_stop_site_tts) { + val m1NoviceGuidanceStopSiteTts = + AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_stop_site_tts) + VoiceNotice.showNotice(m1NoviceGuidanceStopSiteTts, AIAssist.LEVEL1) + m1_novice_guidance_stop_site_tts = false + } + } + + v_pre_page_stop_site.setOnClickListener { + setTargetVisable(welcome02 = true) + } + v_next_page_stop_site.setOnClickListener { + setTargetVisable(welcome04 = true) + if (m1_novice_guidance_notice_tts) { + val m1NoviceGuidanceStopSiteTts = + AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_notice_tts) + VoiceNotice.showNotice(m1NoviceGuidanceStopSiteTts, AIAssist.LEVEL1) + m1_novice_guidance_notice_tts = false + } + } + + v_pre_page_notice.setOnClickListener { + setTargetVisable(welcome03 = true) + } + v_next_page_notice.setOnClickListener { + setTargetVisable(complierGuidance = true) + saveOrderInfo() + if (m1_novice_guidance_complier_tts) { + val m1NoviceGuidanceStopSiteTts = + AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts) + VoiceNotice.showNotice(m1NoviceGuidanceStopSiteTts, AIAssist.LEVEL1) + m1_novice_guidance_complier_tts = false + } + } + + v_welcome_close_01.setOnClickListener(this) + v_welcome_close_02.setOnClickListener(this) + v_welcome_close_03.setOnClickListener(this) + v_welcome_close_04.setOnClickListener(this) + + } + + private fun saveOrderInfo() { + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.orderNo?.let { order -> + val orderNoSet = mutableSetOf(order) + SharedPrefs.getInstance(requireContext()) + .putStringSet(BusPassengerPresenter.KEY4SHOWNOVICEGUIDANCE, orderNoSet) + } + } + + override fun onClick(v: View?) { + dismissAllowingStateLoss() + saveOrderInfo() + } + + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + CallerLogger.d(M_BUS_P + TAG, "onViewCreated") + dialog?.window?.let { + BarUtils.hideStatusBarAndSticky(it) + it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) + dialog?.setOnShowListener { _ -> + it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) + BarUtils.hideStatusBarAndSticky(it) + } + } + } + + fun setUserPhoneInfo(phone: String) { + if (phone.length > 8) { + //截取电话号码前三位 + val phoneNumPre = phone.substring(0, 3); + //截取电话号码后四位 + val phoneNumFix = phone.substring(7); + actv_userinfo.text = "$phoneNumPre****$phoneNumFix" + } else { + actv_userinfo.text = phone + } + } + + fun setStartTimeAndEndTime(startTime: String, endTime: String) { + actv_order_time.text = "$startTime-$endTime" + } + + fun setTargetVisable( + startGuidance: Boolean = false, + welcome01: Boolean = false, + welcome02: Boolean = false, + welcome03: Boolean = false, + welcome04: Boolean = false, + complierGuidance: Boolean = false + ) { + if (startGuidance || complierGuidance) { + if (startGuidance) { + include_welcome.visibility = View.VISIBLE + actv_start_guildance.visibility = View.VISIBLE + group_complete_guidance.visibility = View.GONE + actv_click_go_explore.text = "点击开始探索" + pageStatus = PageStatus.Startpage + } + if (complierGuidance) { + include_welcome.visibility = View.VISIBLE + actv_start_guildance.visibility = View.GONE + group_complete_guidance.visibility = View.VISIBLE + actv_click_go_explore.text = "点我进入主页" + pageStatus = PageStatus.EndPage + mPresenter?.exitDialogFragment() + } + + } else { + include_welcome.visibility = View.GONE + actv_start_guildance.visibility = View.GONE + group_complete_guidance.visibility = View.GONE + } + if (welcome01) { + include_welcome_01.visibility = View.VISIBLE + pageStatus = PageStatus.NoviceGuidanceSelectLine + } else { + include_welcome_01.visibility = View.GONE + } + if (welcome02) { + include_welcome_02.visibility = View.VISIBLE + pageStatus = PageStatus.NoviceGuidanceDoorAndGo + } else { + include_welcome_02.visibility = View.GONE + } + if (welcome03) { + include_welcome_03.visibility = View.VISIBLE + pageStatus = PageStatus.NoviceGuidanceStopSite + } else { + include_welcome_03.visibility = View.GONE + } + if (welcome04) { + include_welcome_04.visibility = View.VISIBLE + pageStatus = PageStatus.NoviceGuidanceNotice + } else { + include_welcome_04.visibility = View.GONE + } + + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + m1_novice_guidance_tts = true + m1_novice_guidance_door_tts = true + m1_novice_guidance_stop_site_tts = true + m1_novice_guidance_notice_tts = true + m1_novice_guidance_complier_tts = true + pageStatus = PageStatus.Startpage + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + CallerLogger.d(M_BUS_P + TAG, "onSaveInstanceState") + } + + override fun createPresenter(): CharterPassengerNoviceGuidancePresenter = + CharterPassengerNoviceGuidancePresenter(this) + + /** + * 重写父类show()方法 + * 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState + */ + override fun show(manager: FragmentManager, tag: String?) { + try { + var cls = this.javaClass.superclass ?: return + while (true) { + if (cls.name == "java.lang.Object") { + break + } + cls = cls.superclass!! + if (cls == DialogFragment::class.java) { + break + } + } + val mDismissed = cls.getDeclaredField("mDismissed") + val mShownByMe = cls.getDeclaredField("mShownByMe") + mDismissed.isAccessible = true + mShownByMe.isAccessible = true + mDismissed.setBoolean(this, false) + mShownByMe.setBoolean(this, true) + if (isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + return + } + val ft: FragmentTransaction = manager.beginTransaction() + ft.add(this, tag) + ft.commitAllowingStateLoss() + } catch (e: Exception) { + Log.e("DialogFragment", "show", e.fillInStackTrace()) + } + } + + override fun onViewStateRestored(savedInstanceState: Bundle?) { + CallerLogger.d(M_BUS_P + TAG, "onViewStateRestored") + super.onViewStateRestored(savedInstanceState) + } + + fun setProductType(type: String) { + actv_start_guildance.text = "欢迎乘坐蘑菇车联自动驾驶$type!" + } + + companion object { + const val TAG = "NoviceGuidanceFragment" + + @JvmStatic + fun newInstance(): NoviceGuidanceFragment { + val args = Bundle() + val fragment = NoviceGuidanceFragment() + CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment") + fragment.arguments = args + return fragment + } + + + fun showNoviceGuidance( + childFragmentManager: FragmentManager, + parentFragmentManager: FragmentManager, + bpFunctionGroup: NoviceGuidanceFragment?, + ) { + val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(TAG) + if (fragmentByTag is DialogFragment) { + if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { + if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 + CallerLogger.d(M_BUS_P + TAG, "权限验证") + return + } + } + } + if (bpFunctionGroup != null) { + if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + TAG, "正在展示") + return + } + if (ClickUtils.isFastClick()) { + if (bpFunctionGroup.isAdded) { + //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + parentFragmentManager.beginTransaction().remove(bpFunctionGroup) + .commitAllowingStateLoss() + CallerLogger.d(M_BUS_P + TAG, "已经添加正在移除") + } + bpFunctionGroup.show(parentFragmentManager, TAG) + CallerLogger.d(M_BUS_P + TAG, "展示") + } else { + CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次") + } + } + } + } + + interface ContainDismiss { + fun closeDialog() + } + + enum class PageStatus { + Startpage, + NoviceGuidanceSelectLine, + NoviceGuidanceDoorAndGo, + NoviceGuidanceStopSite, + NoviceGuidanceNotice, + EndPage + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt new file mode 100644 index 0000000000..54a1b26ed8 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt @@ -0,0 +1,275 @@ +package com.mogo.och.bus.passenger.ui.dialogfragment.fragment + +import android.animation.ObjectAnimator +import android.graphics.drawable.AnimationDrawable +import android.os.Bundle +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.recyclerview.widget.LinearLayoutManager +import com.elegant.utils.UiThreadHandler +import com.mogo.commons.mvp.MvpFragment +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.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.bean.response.LineInfoResponse +import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.model.OrderStatusEnum +import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter +import com.mogo.och.bus.passenger.ui.adapter.OrderLineItemAdapter +import com.mogo.och.bus.passenger.ui.adapter.OrderSiteItemAdapter +import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment +import com.mogo.och.bus.passenger.view.BottomDecoration +import com.mogo.och.common.module.utils.RxUtils +import io.reactivex.disposables.Disposable +import kotlinx.android.synthetic.main.m1_order_fragment.* +import kotlinx.android.synthetic.main.m1_order_loading.iv_loading_wait_ent +import me.jessyan.autosize.utils.AutoSizeUtils + +/** + * @author: yangyakun + * @date: 2023/1/28 + */ +class M1OrderLineFragment : + MvpFragment() { + + private var dismiss: M1ContainFragment.ContainDismiss? = null + + + private lateinit var lineAdapter: OrderLineItemAdapter + private lateinit var siteAdapter: OrderSiteItemAdapter + + val lineList = mutableListOf() + val siteList = mutableListOf() + + private var subscribeDirverAgree: Disposable? = null + private var subscribeDirverRefuse: Disposable? = null + + private val loadingAni = + ObjectAnimator.ofFloat(iv_loading_wait_ent, "rotation", 0f, 90f, 180f, 270f, 360f) + .apply { + repeatCount = -1 + interpolator = LinearInterpolator() + duration = 1000 + } + + + override fun getLayoutId(): Int { + return R.layout.m1_order_fragment + } + + override fun getTagName(): String { + return TAG + } + + override fun initViews() { + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "initViews") + lineAdapter = OrderLineItemAdapter(requireContext(), lineList) + siteAdapter = OrderSiteItemAdapter(requireContext(), siteList) + loadingAni.target = iv_loading_wait_ent + rlv_line_list.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) + rlv_line_list.addItemDecoration( + BottomDecoration( + AutoSizeUtils.dp2px(context, 60f) + ) + ) + rlv_line_list.adapter = lineAdapter + + rv_site_list.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) + rv_site_list.addItemDecoration( + BottomDecoration( + AutoSizeUtils.dp2px(context, 90f) + ) + ) + rv_site_list.adapter = siteAdapter + + initListener() + + } + + private fun initListener() { + lineAdapter.checkChangeListener = object : OrderLineItemAdapter.CheckListener { + override fun canSwitchLine(): Boolean { + return true + } + + override fun onCheckListener(lineInfo: LineInfoResponse.LineInfo) { + mPresenter?.checkLineClick(lineInfo) + siteAdapter.clearCheck() + } + } + siteAdapter.checkChangeListener = object : OrderSiteItemAdapter.CheckListener { + override fun canSwitchLine(): Boolean { + return mPresenter?.canSwitchLine()?:true + } + + override fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo?) { + // 设置临时选中的 + mPresenter?.checkSiteClick(siteInfo) + } + + } + tv_site_cancle.onClick { + mPresenter?.resetData() + } + tv_site_submit.onClick { + CharterPassengerModel.switchLine5minWait?.let { + if (!it.isDisposed) { + ToastCharterUtils.showShort("选择线路后5分钟内不可用选") + return@onClick + } + } + mPresenter?.changeSites(siteList) + } + + } + + + /** + * 设置是否可用选择站点 + */ + fun setEnableSiteStatus(cancleAndSubmit: Boolean) { + if (cancleAndSubmit) { + g_side_cancle_submit_group?.visibility = View.VISIBLE + } else { + g_side_cancle_submit_group?.visibility = View.GONE + } + } + + fun hideDataWaitDriverMsg() { + g_lines_sites_data?.visibility = View.GONE + g_loading_group?.visibility = View.VISIBLE + iv_loading_wait_driver?.let { + val animationDrawable = it.drawable as AnimationDrawable + animationDrawable.start() + } + } + + fun showSelectData() { + UiThreadHandler.post { + g_lines_sites_data?.visibility = View.VISIBLE + g_loading_group?.visibility = View.GONE + group_driver_agrenn_line?.visibility = View.GONE + aciv_driver_refuse_group?.visibility = View.GONE + } + } + + fun hideDataDriverAgree(){ + group_driver_agrenn_line?.visibility = View.VISIBLE + aciv_driver_refuse_group?.visibility = View.GONE + g_loading_group?.visibility = View.GONE + g_lines_sites_data?.let { + it.visibility = View.GONE + subscribeDirverAgree = RxUtils.createSubscribe(3_000) { + dismiss?.closeDialog() + } + } + } + fun hideDataDriverRefuse(){ + group_driver_agrenn_line?.visibility = View.GONE + aciv_driver_refuse_group?.visibility = View.VISIBLE + g_loading_group?.visibility = View.GONE + g_lines_sites_data?.let { + it.visibility = View.GONE + subscribeDirverRefuse = RxUtils.createSubscribe(3_000) { + showSelectData() + } + } + } + + fun setVisableByTrun( + showBiz: Boolean = false, + showNetError: Boolean = false, + showNorOrder: Boolean = false, + showLoading: Boolean = false + ) { + if(showBiz){ + // 选择线路页面 + m1_order_noorder?.visibility = View.GONE + m1_order_neterror?.visibility = View.GONE + lsv_line_site?.visibility = View.VISIBLE + m1_order_loading?.visibility = View.GONE + return + } + if(showNetError){ + m1_order_noorder?.visibility = View.GONE + m1_order_neterror?.visibility = View.VISIBLE + lsv_line_site?.visibility = View.GONE + m1_order_loading?.visibility = View.GONE + return + } + if(showNorOrder){ + m1_order_noorder?.visibility = View.VISIBLE + m1_order_neterror?.visibility = View.GONE + lsv_line_site?.visibility = View.GONE + m1_order_loading?.visibility = View.GONE + return + } + if(showLoading){ + m1_order_noorder?.visibility = View.GONE + m1_order_neterror?.visibility = View.GONE + lsv_line_site?.visibility = View.GONE + m1_order_loading?.visibility = View.VISIBLE + if (!loadingAni.isRunning) { + loadingAni.start() + } + } + } + + + fun go2StartCar() { + dismiss?.closeDialog() + } + + override fun createPresenter(): BusPassengerFunctionOrderPresenter { + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "createPresenter") + return BusPassengerFunctionOrderPresenter(this) + } + + override fun onDestroyView() { + super.onDestroyView() + loadingAni.cancel() + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroyView") + RxUtils.disposeSubscribe(subscribeDirverAgree) + RxUtils.disposeSubscribe(subscribeDirverRefuse) + } + + fun lineAdapterSubmit(lineInfo: LineInfoResponse.LineInfo) { + lineAdapter.submitLine(lineInfo) + } + + fun lineAdapterSetData( + lineInfo: List, + checkLine: LineInfoResponse.LineInfo? + ) { + lineAdapter.setDataList(lineInfo,checkLine) + } + + fun siteAdapterSetData(siteInfo: List) { + siteAdapter.setDataList(siteInfo) + } + fun siteAdapterEnableIndex(index: Int) { + siteAdapter.setEnableIndex(index) + } + + fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) { + this.dismiss = dismiss + } + + companion object { + const val TAG = "M1OrderLineFragment" + + @JvmStatic + fun newInstance(dismiss: M1ContainFragment.ContainDismiss): M1OrderLineFragment { + val args = Bundle() + val fragment = M1OrderLineFragment() + fragment.arguments = args + fragment.setContainDismiss(dismiss) + return fragment + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1SoftFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt similarity index 79% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1SoftFragment.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt index 34aff80614..c6477b0ee9 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1SoftFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt @@ -1,4 +1,4 @@ -package com.mogo.och.bus.passenger.ui +package com.mogo.och.bus.passenger.ui.dialogfragment.fragment import android.animation.ObjectAnimator import android.animation.ValueAnimator @@ -16,20 +16,18 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView import androidx.core.content.ContextCompat -import androidx.core.view.isVisible -import androidx.recyclerview.widget.LinearSnapHelper -import androidx.recyclerview.widget.SnapHelper import com.mogo.commons.mvp.MvpFragment 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.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.ClickUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.Temperature import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionSoftPresenter import com.mogo.och.bus.passenger.ui.adapter.TemperatureAdapter +import com.mogo.och.bus.passenger.ui.layoutmanage.PagerCenterSnapHelper import com.mogo.och.bus.passenger.view.HorizontalDecoration import com.mogo.och.bus.passenger.view.PickerLayoutManager import com.mogo.och.common.module.utils.SoundPoolHelper @@ -37,7 +35,7 @@ import com.yangyakun.main.ui.loading.drawable.MineGradientDrawable import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable -import kotlinx.android.synthetic.m1.m1_soft_fragment.* +import kotlinx.android.synthetic.main.m1_soft_fragment.* import me.jessyan.autosize.utils.AutoSizeUtils import java.util.concurrent.TimeUnit @@ -109,12 +107,14 @@ class M1SoftFragment : private fun setAirConditionAni() { dbv_wind.post { - val measuredHeight = dbv_wind.measuredHeight - animator1 = ObjectAnimator.ofInt(dbv_wind, "showHeight", 0, measuredHeight).apply { - duration = 1000 - repeatCount = ValueAnimator.INFINITE - if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){ - start() + dbv_wind?.let { + val measuredHeight = it.measuredHeight + animator1 = ObjectAnimator.ofInt(it, "showHeight", 0, measuredHeight).apply { + duration = 1000 + repeatCount = ValueAnimator.INFINITE + if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){ + start() + } } } } @@ -228,20 +228,34 @@ class M1SoftFragment : } } val pickerLayoutManager = - PickerLayoutManager(requireContext(), PickerLayoutManager.HORIZONTAL, false) + PickerLayoutManager( + requireContext(), + PickerLayoutManager.HORIZONTAL, + false + ) pickerLayoutManager.isChangeAlpha = true pickerLayoutManager.scaleDownBy = 0.29f pickerLayoutManager.scaleDownDistance = 0.8f val data = getData() - val adapter = TemperatureAdapter(requireContext(), data, rv_aircondition_temperature) - val snapHelper: SnapHelper = LinearSnapHelper() + val adapter = TemperatureAdapter( + requireContext(), + data, + rv_aircondition_temperature + ) + val snapHelper = PagerCenterSnapHelper() snapHelper.attachToRecyclerView(rv_aircondition_temperature) rv_aircondition_temperature.layoutManager = pickerLayoutManager rv_aircondition_temperature.adapter = adapter - HorizontalDecoration.distance = SharedPrefsMgr.getInstance(requireContext()).getInt(HorizontalDecoration.distancekey,0) - val space = AutoSizeUtils.dp2px(context, 22f) - rv_aircondition_temperature.addItemDecoration(HorizontalDecoration(space,data.size-1)) + HorizontalDecoration.distance = SharedPrefsMgr.getInstance(requireContext()).getInt( + HorizontalDecoration.distancekey,0) + val space = AutoSizeUtils.dp2px(context, 15f) + rv_aircondition_temperature.addItemDecoration( + HorizontalDecoration( + space, + data.size - 1 + ) + ) pickerLayoutManager.setOnScrollStopListener { view -> if (view is TextView) { @@ -271,7 +285,7 @@ class M1SoftFragment : } } - private fun setCheckAir(adapter:TemperatureAdapter,tag:Temperature){ + private fun setCheckAir(adapter: TemperatureAdapter, tag:Temperature){ adapter.setCheckIndex(tag.index) currentTemperature = tag if (rv_aircondition_temperature.tag == touchTag) { @@ -361,58 +375,60 @@ class M1SoftFragment : pattern: Int, windSpeed: Int ) { - if (!airIsOpen && !heaterIsOpen) { - tv_aircondition_switch.text = "打开空调" - tv_aircondition_switch.isChecked = false - dbv_wind.visibility = View.GONE - } else { - tv_aircondition_switch.text = "关闭空调" - tv_aircondition_switch.isChecked = true - dbv_wind.visibility = View.VISIBLE - } - if (airIsOpen) { - val adapter = rv_aircondition_temperature.adapter - if (adapter is TemperatureAdapter) { - adapter.data.forEach { - if (it.value == temperatureCmd) { - rv_aircondition_temperature.tag = touchTag - UiThreadHandler.postDelayed({ - rv_aircondition_temperature?.smoothScrollToPosition(it.index) - },500) + tv_aircondition_switch?.let { + if (!airIsOpen && !heaterIsOpen) { + tv_aircondition_switch.text = "打开空调" + tv_aircondition_switch.isChecked = false + dbv_wind.visibility = View.GONE + } else { + tv_aircondition_switch.text = "关闭空调" + tv_aircondition_switch.isChecked = true + dbv_wind.visibility = View.VISIBLE + } + if (airIsOpen) { + val adapter = rv_aircondition_temperature.adapter + if (adapter is TemperatureAdapter) { + adapter.data.forEach { + if (it.value == temperatureCmd) { + rv_aircondition_temperature.tag = touchTag + UiThreadHandler.postDelayed({ + rv_aircondition_temperature?.smoothScrollToPosition(it.index) + },500) + } } } + when (pattern) {//1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度) + 1 -> {rb_pattern_automatic.isChecked = true} + 2 -> {rb_pattern_refrigeration.isChecked = true} + 3 -> {rb_pattern_ventilate.isChecked = true} + else -> {} + } + heaterAirEnable(true) + when (windSpeed) {//1: 1档,2: 2档,3:3档 + 1 -> { + setWind(rb_wind_speed_low,R.drawable.bus_pm1_aircondition_wind_low) + } + 2 -> { + setWind(rb_wind_speed_middle,R.drawable.bus_pm1_aircondition_wind_middle) + } + 3 -> { + setWind(rb_wind_speed_high,R.drawable.bus_pm1_aircondition_wind_high) + } + else -> {} + } } - when (pattern) {//1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度) - 1 -> {rb_pattern_automatic.isChecked = true} - 2 -> {rb_pattern_refrigeration.isChecked = true} - 3 -> {rb_pattern_ventilate.isChecked = true} - else -> {} - } - heaterAirEnable(true) - when (windSpeed) {//1: 1档,2: 2档,3:3档 - 1 -> { - setWind(rb_wind_speed_low,R.drawable.bus_pm1_aircondition_wind_low) + if (heaterIsOpen) { + rb_pattern_heating.isChecked = true + heaterAirEnable(false) + when (windSpeed) {//1: 1档,2: 2档 + 1 -> { + setWind(rb_wind_speed_middle,R.drawable.bus_pm1_warm_wind_middle) + } + 2 -> { + setWind(rb_wind_speed_high,R.drawable.bus_pm1_warm_wind_high) + } + else -> {} } - 2 -> { - setWind(rb_wind_speed_middle,R.drawable.bus_pm1_aircondition_wind_middle) - } - 3 -> { - setWind(rb_wind_speed_high,R.drawable.bus_pm1_aircondition_wind_high) - } - else -> {} - } - } - if (heaterIsOpen) { - rb_pattern_heating.isChecked = true - heaterAirEnable(false) - when (windSpeed) {//1: 1档,2: 2档 - 1 -> { - setWind(rb_wind_speed_middle,R.drawable.bus_pm1_warm_wind_middle) - } - 2 -> { - setWind(rb_wind_speed_high,R.drawable.bus_pm1_warm_wind_high) - } - else -> {} } } } @@ -535,38 +551,44 @@ class M1SoftFragment : } fun setLightTop1View(leftLight: Boolean, isFirst: Boolean){ - if (leftLight) { - tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_close_light1) - tv_light_top_01.isChecked = true - if(!isFirst) ToastUtils.showShort("打开顶灯1") - } else { - tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_open_light1) - tv_light_top_01.isChecked = false - if(!isFirst) ToastUtils.showShort("关闭顶灯1") + tv_light_top_01?.let { + if (leftLight) { + tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_close_light1) + tv_light_top_01.isChecked = true + if(!isFirst) ToastCharterUtils.showShort("打开顶灯1") + } else { + tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_open_light1) + tv_light_top_01.isChecked = false + if(!isFirst) ToastCharterUtils.showShort("关闭顶灯1") + } } } fun setLightTop2View(rightLight: Boolean, isFirst: Boolean){ - if (rightLight) { - tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_close_light2) - tv_light_top_02.isChecked = true - if(!isFirst) ToastUtils.showShort("打开顶灯2") - } else { - tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_open_light2) - tv_light_top_02.isChecked = false - if(!isFirst) ToastUtils.showShort("关闭顶灯2") + tv_light_top_02?.let { + if (rightLight) { + tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_close_light2) + tv_light_top_02.isChecked = true + if(!isFirst) ToastCharterUtils.showShort("打开顶灯2") + } else { + tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_open_light2) + tv_light_top_02.isChecked = false + if(!isFirst) ToastCharterUtils.showShort("关闭顶灯2") + } } } fun setLightAtmosphereView(atmosphereLight: Boolean, isFirst: Boolean){ - if (atmosphereLight) { - tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_close_atmosphere) - tv_light_atmosphere.isChecked = true - iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_select) - if(!isFirst) ToastUtils.showShort("打开氛围灯") - } else { - tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_open_atmosphere) - tv_light_atmosphere.isChecked = false - iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_nor) - if(!isFirst) ToastUtils.showShort("关闭氛围灯") + tv_light_atmosphere?.let { + if (atmosphereLight) { + tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_close_atmosphere) + tv_light_atmosphere.isChecked = true + iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_select) + if(!isFirst) ToastCharterUtils.showShort("打开氛围灯") + } else { + tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_open_atmosphere) + tv_light_atmosphere.isChecked = false + iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_nor) + if(!isFirst) ToastCharterUtils.showShort("关闭氛围灯") + } } } @@ -574,16 +596,18 @@ class M1SoftFragment : * 灯的UI发生变化 */ fun setLightView(leftLight: Boolean, rightLight: Boolean) { - if (leftLight && rightLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_middle_selected)// 都打开 - } else if (!leftLight && !rightLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_nor)// 都关闭 - } else { - if (leftLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_left)// 左面开 - } - if (rightLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_right)// 左面开 + iv_top_light_setting?.let { + if (leftLight && rightLight) { + iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_middle_selected)// 都打开 + } else if (!leftLight && !rightLight) { + iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_nor)// 都关闭 + } else { + if (leftLight) { + iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_left)// 左面开 + } + if (rightLight) { + iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_right)// 左面开 + } } } } @@ -699,7 +723,7 @@ class M1SoftFragment : } companion object { - const val TAG = "BusPassengerFunctionSoftFragment" + const val TAG = "M1SoftFragment" const val touchTagKey = 2 const val touchTag = 2 diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1VideoFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1VideoFragment.kt similarity index 92% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1VideoFragment.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1VideoFragment.kt index bf832a2e49..6708be7aef 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/M1VideoFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1VideoFragment.kt @@ -1,4 +1,4 @@ -package com.mogo.och.bus.passenger.ui +package com.mogo.och.bus.passenger.ui.dialogfragment.fragment import android.os.Bundle import android.view.View @@ -13,7 +13,7 @@ import com.mogo.och.bus.passenger.ui.layoutmanage.CarouselZoomPostLayoutListener import com.mogo.och.bus.passenger.ui.layoutmanage.CenterScrollListener import com.mogo.och.bus.passenger.view.ConsultVideoPlayer import com.shuyu.gsyvideoplayer.video.base.GSYVideoView -import kotlinx.android.synthetic.m1.m1_video_fragment.* +import kotlinx.android.synthetic.main.m1_video_fragment.* import kotlin.math.floor /** @@ -35,7 +35,11 @@ class M1VideoFragment : override fun initViews() { initConsultData() - val carouselLayoutManager = CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL, true) + val carouselLayoutManager = + CarouselLayoutManager( + CarouselLayoutManager.HORIZONTAL, + true + ) carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener()) carouselLayoutManager.maxVisibleItems = 1 rvVideoPlaylist.addOnScrollListener(object : CenterScrollListener() { @@ -81,7 +85,12 @@ class M1VideoFragment : } } } - val recyclerVideoAdapter = RecyclerVideoAdapter(requireContext(), arrayListOf, rvVideoPlaylist) + val recyclerVideoAdapter = + RecyclerVideoAdapter( + requireContext(), + arrayListOf, + rvVideoPlaylist + ) recyclerVideoAdapter.setOnThumbImageClilckListener { val (_: kotlin.Int, player) = getPlayer(carouselLayoutManager) if (player is ConsultVideoPlayer) { @@ -143,7 +152,7 @@ class M1VideoFragment : } companion object { - const val TAG = "BusPassengerFunctionVideoFragment" + const val TAG = "M1VideoFragment" @JvmStatic fun newInstance(): M1VideoFragment { val args = Bundle() diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/OrderInfoFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/OrderInfoFragment.kt new file mode 100644 index 0000000000..ff9a178037 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/OrderInfoFragment.kt @@ -0,0 +1,82 @@ +package com.mogo.och.bus.passenger.ui.dialogfragment.fragment + +import android.os.Bundle +import android.view.View +import com.mogo.commons.mvp.MvpFragment +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.presenter.OrderInfoPresenter +import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment +import kotlinx.android.synthetic.main.m1_devices_fragment.* + +/** + * @author: yangyakun + * @date: 2023/1/28 + */ +class OrderInfoFragment : + MvpFragment() { + + private var dismiss: M1ContainFragment.ContainDismiss?=null + + override fun getLayoutId(): Int = R.layout.m1_devices_fragment + + override fun getTagName(): String = TAG + + override fun initViews() { + initListener() + } + + private fun initListener() { + actv_end_order_submit.setOnClickListener { + mPresenter?.endOrder() + } + actv_contain_order.setOnClickListener { + this.dismiss?.closeDialog() + } + actv_end_order.setOnClickListener { + cl_order_info.visibility = View.GONE + cl_order_info_endorder_comfit.visibility = View.VISIBLE + } + } + + fun setStartTimeAndEndTime(startTime:String,endTime:String){ + actv_order_times.text = "$startTime-$endTime" + } + fun setPhone(phone:String){ + if(phone.length>8) { + //截取电话号码前三位 + val phoneNumPre = phone.substring(0, 3); + //截取电话号码后四位 + val phoneNumFix = phone.substring(7); + actv_order_phone.text = "$phoneNumPre****$phoneNumFix" + }else{ + actv_order_phone.text = phone + } + } + + fun setLeftTime(leftTime:String){ + actv_left_time.text = "剩余时间 $leftTime" + } + + fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) { + this.dismiss = dismiss + } + + fun closeDialogContaion(){ + this.dismiss?.closeDialog() + } + + override fun createPresenter(): OrderInfoPresenter = + OrderInfoPresenter(this) + + companion object { + const val TAG = "OrderInfoFragment" + @JvmStatic + fun newInstance(dismiss: M1ContainFragment.ContainDismiss): OrderInfoFragment { + val args = Bundle() + val fragment = OrderInfoFragment() + fragment.arguments = args + fragment.setContainDismiss(dismiss) + return fragment + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselLayoutManager.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselLayoutManager.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselLayoutManager.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselLayoutManager.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselZoomPostLayoutListener.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselZoomPostLayoutListener.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselZoomPostLayoutListener.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/CarouselZoomPostLayoutListener.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/CenterScrollListener.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/CenterScrollListener.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/CenterScrollListener.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/CenterScrollListener.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/ItemTransformation.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/ItemTransformation.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/layoutmanage/ItemTransformation.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/ItemTransformation.java diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/PagerCenterSnapHelper.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/PagerCenterSnapHelper.kt new file mode 100644 index 0000000000..f0a3f564db --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/layoutmanage/PagerCenterSnapHelper.kt @@ -0,0 +1,81 @@ +package com.mogo.och.bus.passenger.ui.layoutmanage + +import android.view.View +import androidx.recyclerview.widget.OrientationHelper +import androidx.recyclerview.widget.PagerSnapHelper +import androidx.recyclerview.widget.RecyclerView + +class PagerCenterSnapHelper : PagerSnapHelper() { + private var mHorizontalHelper: OrientationHelper? = null + private var pageScollListener: PageScollListener? = null + override fun findSnapView(layoutManager: RecyclerView.LayoutManager): View? { + if (layoutManager.canScrollVertically()) { + return super.findSnapView(layoutManager) + } else if (layoutManager.canScrollHorizontally()) { + return findCenterView(layoutManager, getHorizontalHelper(layoutManager)) + } + return null + } + + private fun findCenterView( + layoutManager: RecyclerView.LayoutManager, + helper: OrientationHelper + ): View? { + val childCount = layoutManager.childCount + if (childCount == 0) { + return null + } + var closestChild: View? = null + val center = helper.startAfterPadding + helper.totalSpace / 2 + var absClosest = Int.MAX_VALUE + for (i in 0 until childCount) { + val child = layoutManager.getChildAt(i) + val params = child!!.layoutParams as RecyclerView.LayoutParams + var childCenter = 0 + childCenter = if (i == 0) { + helper.getDecoratedStart(child) + helper.getDecoratedMeasurement(child) - layoutManager.getDecoratedMeasuredWidth( + child + ) / 2 - params.rightMargin / 2 + } else if (i == childCount - 1) { + (helper.getDecoratedStart(child) + + (helper.getDecoratedMeasurement(child) - layoutManager.getDecoratedMeasuredWidth( + child + ) / 2 - params.leftMargin / 2 - params.rightMargin)) + } else { + helper.getDecoratedStart(child) + helper.getDecoratedMeasurement(child) / 2 + } + val absDistance = Math.abs(childCenter - center) + /* if child center is closer than previous closest, set it as closest */if (absDistance < absClosest) { + absClosest = absDistance + closestChild = child + } + } + if (pageScollListener != null) { + if (closestChild != null) { + pageScollListener!!.onPageSelected(layoutManager.getPosition(closestChild)) + } + } + return closestChild + } + + private fun getHorizontalHelper( + layoutManager: RecyclerView.LayoutManager + ): OrientationHelper { + if (mHorizontalHelper == null || mHorizontalHelper!!.layoutManager !== layoutManager) { + mHorizontalHelper = OrientationHelper.createHorizontalHelper(layoutManager) + } + return mHorizontalHelper!! + } + + fun setPageScollListener(pageScollListener: PageScollListener?) { + this.pageScollListener = pageScollListener + } + + interface PageScollListener { + fun onPageSelected(i: Int) + } + + companion object { + private const val TAG = "PagerSnapHelper " + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/EndOrderView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/EndOrderView.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/EndOrderView.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/EndOrderView.kt diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomBar.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomBar.kt new file mode 100644 index 0000000000..95937be4ea --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomBar.kt @@ -0,0 +1,72 @@ +package com.mogo.och.bus.passenger.ui.view.bottom + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.m1_bottom_bar.view.* + +class BottomBar @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + init { + isClickable = true + LayoutInflater.from(context).inflate(R.layout.m1_bottom_bar, this, true) + setBackgroundResource(R.drawable.charter_p_bottom_bar_bg) + } + + private var checkIndex = SelectView.VIDEO + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + } + fun setOrderInfoClickListener(click:OnClickListener){ + cl_order_time.setOnClickListener(click) + } + fun setSettingClickListener(click:OnClickListener){ + actv_setting.setOnClickListener(click) + } + fun setLineClickListener(click:OnClickListener){ + actv_line.setOnClickListener(click) + } + + fun setApplyClickListener(click:BottomClickView.ApplyClickLintener){ + aciv_center_image.applyClickListener=click + actv_stop_site.applyClickListener=click + actv_close_door.applyClickListener=click + actv_open_door.applyClickListener=click + } + + fun setCheckIndex(index:SelectView){ + if(checkIndex==index){ + return + } + checkIndex = index + if(checkIndex == SelectView.ORDERINFO){ + cl_order_time_press.visibility = VISIBLE + cl_order_time.setCheck(true) + }else{ + cl_order_time_press.visibility = GONE + cl_order_time.setCheck(false) + } + if(checkIndex == SelectView.SETTING){ + actv_setting.setCheckItem(true) + }else{ + actv_setting.setCheckItem(false) + } + if(checkIndex == SelectView.LINE){ + actv_line.setCheckItem(true) + }else{ + actv_line.setCheckItem(false) + } + + } + + enum class SelectView{ + ORDERINFO,SETTING,LINE,VIDEO + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomCheckView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomCheckView.kt new file mode 100644 index 0000000000..a211f57c7e --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomCheckView.kt @@ -0,0 +1,84 @@ +package com.mogo.och.bus.passenger.ui.view.bottom + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.m1_bottom_stop_site.view.* + +open class BottomCheckView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + companion object { + private const val TAG = "StopSiteView" + } + + private var backageViewId: Int = -1 + private var bottomTitle: String = "" + private var selectedDrawable: Int = -1 + private var normalDrawable: Int = -1 + private var backageView: View? = null + + private var isCheck = false + + init { + LayoutInflater.from(context).inflate(R.layout.m1_bottom_stop_site, this, true) + try { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.BottomSelectView) + backageViewId = typedArray.getResourceId(R.styleable.BottomSelectView_backageViewId, -1) + bottomTitle = typedArray.getString(R.styleable.BottomSelectView_bottomTitle) ?: "" + selectedDrawable = typedArray.getResourceId(R.styleable.BottomSelectView_selectedDrawable, -1) + normalDrawable = typedArray.getResourceId(R.styleable.BottomSelectView_normalDrawable, -1) + typedArray.recycle() + initView(context) + } catch (e: Exception) { + e.printStackTrace() + } + + } + + private fun initView(context: Context) { + if (selectedDrawable > 0) { + aciv_center_image.setImageResource(normalDrawable) + } + actv_title.text = bottomTitle + } + + fun setCheckItem(isCheck: Boolean) { + if (isCheck != this.isCheck) { + this.isCheck = isCheck + notifiBackageView() + } + } + + private fun notifiBackageView() { + if (isCheck) { + backageView?.visibility = View.VISIBLE + aciv_center_image.setImageResource(selectedDrawable) + actv_title.setTextColor(context.getColor(android.R.color.white)) + } else { + backageView?.visibility = View.GONE + aciv_center_image.setImageResource(normalDrawable) + actv_title.setTextColor(context.getColor(R.color.bus_p_m1_090f28)) + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + parent?.let { + if (parent is ConstraintLayout) { + if (backageViewId > 0) { + backageView = (parent as ConstraintLayout).findViewById(backageViewId) + } + } + } + if (isCheck) { + backageView?.visibility = View.VISIBLE + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt new file mode 100644 index 0000000000..46d541ca12 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt @@ -0,0 +1,103 @@ +package com.mogo.och.bus.passenger.ui.view.bottom + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.m1_bottom_stop_site.view.* + +open class BottomClickView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + companion object { + private const val TAG = "StopSiteView" + } + + private var backageViewId: Int = -1 + private var bottomTitle: String = "" + private var selectedDrawable: Int = -1 + private var normalDrawable: Int = -1 + private var backageView: View? = null + + var applyClickListener:ApplyClickLintener?=null + + init { + LayoutInflater.from(context).inflate(R.layout.m1_bottom_stop_site, this, true) + try { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.BottomSelectView) + backageViewId = typedArray.getResourceId(R.styleable.BottomSelectView_backageViewId, -1) + bottomTitle = typedArray.getString(R.styleable.BottomSelectView_bottomTitle) ?: "" + selectedDrawable = typedArray.getResourceId(R.styleable.BottomSelectView_selectedDrawable, -1) + normalDrawable = typedArray.getResourceId(R.styleable.BottomSelectView_normalDrawable, -1) + typedArray.recycle() + initView(context) + } catch (e: Exception) { + e.printStackTrace() + } + + } + + private fun initView(context: Context) { + if (selectedDrawable > 0) { + aciv_center_image.setImageResource(normalDrawable) + } + actv_title.text = bottomTitle + setOnTouchListener(object : OnTouchListener { + @SuppressLint("ClickableViewAccessibility") + override fun onTouch(v: View?, event: MotionEvent?): Boolean { + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "ACTION_DOWN") + if (selectedDrawable > 0) { + aciv_center_image.setImageResource(selectedDrawable) + actv_title.setTextColor(context.getColor(android.R.color.white)) + backageView?.visibility = View.VISIBLE + } + } + MotionEvent.ACTION_UP -> { + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "ACTION_UP") + if (selectedDrawable > 0) { + aciv_center_image.setImageResource(normalDrawable) + actv_title.setTextColor(context.getColor(R.color.bus_p_m1_090f28)) + backageView?.visibility = View.GONE + } + } + MotionEvent.ACTION_CANCEL -> { + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "ACTION_CANCEL") + if (selectedDrawable > 0) { + aciv_center_image.setImageResource(normalDrawable) + actv_title.setTextColor(context.getColor(R.color.bus_p_m1_090f28)) + backageView?.visibility = View.GONE + } + } + else -> {} + } + return false + } + }) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + parent?.let { + if (parent is ConstraintLayout) { + if (backageViewId > 0) { + backageView = (parent as ConstraintLayout).findViewById(backageViewId) + } + } + } + } + + interface ApplyClickLintener{ + fun onApplyClick() + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt new file mode 100644 index 0000000000..d444f3c354 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt @@ -0,0 +1,102 @@ +package com.mogo.och.bus.passenger.ui.view.bottom + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.commons.AbsMogoApplication +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.bus.passenger.R +import com.mogo.och.bus.passenger.callback.ITimeCallback +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener +import com.mogo.och.bus.passenger.model.OrderStatusEnum +import com.mogo.och.common.module.utils.DateTimeUtil +import kotlinx.android.synthetic.main.m1_bottom_orderinfo.view.* +import java.util.UUID +import kotlin.random.Random + +open class BottomOrderInfoView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), ITimeCallback, IOrderStatusChangeListener { + + companion object { + private const val TAG = "BottomOrderInfoView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.m1_bottom_orderinfo, this, true) + try { + initView(context) + } catch (e: Exception) { + e.printStackTrace() + } + tag = UUID.randomUUID().toString() + } + + fun setCheck(isCheck:Boolean){ + if(isCheck){ + actv_order_end_time.setTextColor(context.getColor(android.R.color.white)) + actv_order_end_time_title.setTextColor(context.getColor(android.R.color.white)) + }else{ + actv_order_end_time.setTextColor(context.getColor(R.color.bus_p_m1_0050E1)) + actv_order_end_time_title.setTextColor(context.getColor(R.color.bus_p_m1_090f28)) + } + } + + private fun initView(context: Context) { + setViewByOrderStatus(CharterPassengerModel.getCurrentOrderStatus()) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerLogger.d(SceneConstant.M_BUS_P + TAG,"onAttachedToWindow$tag") + CharterPassengerModel.setOrderLeftTimeListeners(tag.toString(),this) + CharterPassengerModel.setStatusChangeListener(tag.toString(),this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerLogger.d(SceneConstant.M_BUS_P + TAG,"onDetachedFromWindow$tag") + CharterPassengerModel.setOrderLeftTimeListeners(tag.toString(),null) + CharterPassengerModel.setStatusChangeListener(tag.toString(),null) + } + + private fun setViewByOrderStatus(currentOrderStatus: OrderStatusEnum) { + when (currentOrderStatus) { + OrderStatusEnum.Nothing, + OrderStatusEnum.NoOrderUse, + OrderStatusEnum.NoOrderUnuse ->{ + actv_order_null.visibility = VISIBLE + clg_order_info.visibility = GONE + actv_order_end_time.text = AbsMogoApplication.getApp().getString(R.string.m1_bottom_reach_time) + } + OrderStatusEnum.OrderNoLine, + OrderStatusEnum.OrdersWithLine -> { + actv_order_null.visibility = GONE + clg_order_info.visibility = VISIBLE + } + } + } + + override fun setOrderTimeCallBack(timeInSecond: Long) { + if(timeInSecond>0){ + val arriveTime = DateTimeUtil.second2Time(timeInSecond) + actv_order_end_time.text = arriveTime + } + UiThreadHandler.post { + setViewByOrderStatus(CharterPassengerModel.getCurrentOrderStatus()) + } + } + + override fun onStatusChange(currentStatus: OrderStatusEnum) { + UiThreadHandler.post { + setViewByOrderStatus(currentStatus) + } + + } +} diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt new file mode 100644 index 0000000000..437beb5442 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt @@ -0,0 +1,28 @@ +package com.mogo.och.bus.passenger.ui.view.bottom.impl + +import android.content.Context +import android.util.AttributeSet +import com.mogo.eagle.core.utilcode.util.ActivityUtils +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager +import com.mogo.och.common.module.utils.SoundPoolHelper + +class CloseDoorView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : BottomClickView(context, attrs, defStyleAttr) { + + init { + setOnClickListener { + go2OpenDoor() + applyClickListener?.onApplyClick() + } + } + + private fun go2OpenDoor(){ + LightAirconditionDoorManager.go2OpenDoor(false) + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt new file mode 100644 index 0000000000..a7ad0f56cd --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt @@ -0,0 +1,132 @@ +package com.mogo.och.bus.passenger.ui.view.bottom.impl + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.View +import androidx.appcompat.widget.AppCompatTextView +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +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.ActivityUtils +import com.mogo.eagle.core.utilcode.util.ClickUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.callback.ICharterPassengerAutoStatusChangeCallback +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager +import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.common.module.utils.SoundPoolHelper +import io.reactivex.disposables.Disposable +import kotlinx.android.synthetic.main.m1_bottom_bar.view.* + +class GoViewWithArrive @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + var applyClickListener: BottomClickView.ApplyClickLintener?=null + + var startAutoTimeOut: Disposable?=null + + companion object{ + private const val TAG = "GoView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.m1_bottom_go, this, true) + setBackgroundResource(R.drawable.charter_p_bottom_center_normal) + setOnTouchListener(object :OnTouchListener{ + @SuppressLint("ClickableViewAccessibility") + override fun onTouch(v: View?, event: MotionEvent?): Boolean { + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + CallerLogger.d(M_BUS_P + TAG, "ACTION_DOWN") + setBackgroundResource(R.drawable.charter_p_bottom_center_press) + } + MotionEvent.ACTION_UP -> { + CallerLogger.d(M_BUS_P + TAG, "ACTION_UP") + setBackgroundResource(R.drawable.charter_p_bottom_center_normal) + } + MotionEvent.ACTION_CANCEL -> { + CallerLogger.d(M_BUS_P + TAG, "ACTION_CANCEL") + setBackgroundResource(R.drawable.charter_p_bottom_center_normal) + } + else -> {} + } + return false + } + }) + setOnClickListener { + if (ClickUtils.isClickTooFrequent(this,3000)) { + ToastCharterUtils.showShort("请稍后点击") + return@setOnClickListener + } + startGo() + applyClickListener?.onApplyClick() + } + } + + private fun startGo(){ + + if (LightAirconditionDoorStatusManager.doorStatus.isOpen) { + val string = AbsMogoApplication.getApp().getString(R.string.m1_close_door_and_startauto) + ToastCharterUtils.showShort(string) + return + } + when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 + ToastCharterUtils.showShort("设备未就绪请稍等") + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// + onceRegisterAutoStatus() + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { + // 重新起步 + CallerAutoPilotControlManager.sendPlanningCmd(2) + CharterPassengerModel.leaveStation() + } + IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") + } + else -> {} + } + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + RxUtils.disposeSubscribe(startAutoTimeOut) + } + + private fun onceRegisterAutoStatus() { + CallerAutoPilotControlManager.sendPlanningCmd(2) + CharterPassengerModel.startAutopilot() + CharterPassengerModel.sendTripInfo() + CharterPassengerModel.setAutoStatusCallback(TAG,null) + CharterPassengerModel.setAutoStatusCallback(TAG,object :ICharterPassengerAutoStatusChangeCallback{ + override fun onAutoStatusChange(newState: Int) { + if(newState==IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + CharterPassengerModel.leaveStation() + } + CharterPassengerModel.setAutoStatusCallback(TAG,null) + } + }) + RxUtils.disposeSubscribe(startAutoTimeOut) + startAutoTimeOut = RxUtils.createSubscribe(20_000) { + if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + val string = AbsMogoApplication.getApp().getString(R.string.m1_start_auto_fail) + ToastCharterUtils.showLong(string) + } + CharterPassengerModel.setAutoStatusCallback(TAG, null) + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/OpenDoorView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/OpenDoorView.kt new file mode 100644 index 0000000000..f7e374ac61 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/OpenDoorView.kt @@ -0,0 +1,30 @@ +package com.mogo.och.bus.passenger.ui.view.bottom.impl + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView +import com.mogo.eagle.core.utilcode.util.ActivityUtils +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView +import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager +import com.mogo.och.common.module.utils.SoundPoolHelper + +class OpenDoorView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : BottomClickView(context, attrs, defStyleAttr) { + + init { + setOnClickListener { + go2OpenDoor() + applyClickListener?.onApplyClick() + } + } + + private fun go2OpenDoor(){ + LightAirconditionDoorManager.go2OpenDoor(true) + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt new file mode 100644 index 0000000000..444c35b3da --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt @@ -0,0 +1,50 @@ +package com.mogo.och.bus.passenger.ui.view.bottom.impl + +import android.content.Context +import android.util.AttributeSet +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.utilcode.util.ActivityUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils +import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView +import com.mogo.och.common.module.utils.SoundPoolHelper + +class StopSiteView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : BottomClickView(context, attrs, defStyleAttr) { + + companion object{ + private const val TAG = "StopSiteView" + } + + init { + setOnClickListener { + stopSite() + applyClickListener?.onApplyClick() + } + } + + private fun stopSite(){ + when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 + ToastCharterUtils.showShort("设备未就绪请稍等,请稍后再试") + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// + ToastCharterUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请稍后再试") + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { + // 靠边停车 + CallerAutoPilotControlManager.sendPlanningCmd(1) + } + IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") + } + else -> {} + } + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/FullVideoUtils.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/FullVideoUtils.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/FullVideoUtils.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/FullVideoUtils.kt diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ToastCharterUtils.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ToastCharterUtils.kt new file mode 100644 index 0000000000..93f17a75f9 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ToastCharterUtils.kt @@ -0,0 +1,46 @@ +package com.mogo.och.bus.passenger.utils + +import android.view.View +import com.mogo.eagle.core.utilcode.util.ActivityUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.view.ToastCharterView +import me.jessyan.autosize.utils.AutoSizeUtils + +object ToastCharterUtils { + fun showTaost(toastText:String){ + val context = ActivityUtils.getTopActivity() + val marker = ToastCharterView(context) + marker.setText(toastText) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + ToastUtils.showShort(marker) + } + fun showLong(toastText:String){ + val context = ActivityUtils.getTopActivity() + val marker = ToastCharterView(context) + marker.setText(toastText) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + ToastUtils.showLong(marker) + } + + fun showShort(toastText:String?){ + toastText?.let { + val context = ActivityUtils.getTopActivity() + val marker = ToastCharterView(context) + marker.setText(toastText) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + ToastUtils.showShort(marker) + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/VoiceFocusManager.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/VoiceFocusManager.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/VoiceFocusManager.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/VoiceFocusManager.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/ZoomDrawable.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ZoomDrawable.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/ZoomDrawable.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ZoomDrawable.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/BottomDecoration.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/BottomDecoration.java similarity index 88% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/BottomDecoration.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/BottomDecoration.java index 78ec3608db..55c4d28cd1 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/BottomDecoration.java +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/BottomDecoration.java @@ -6,10 +6,6 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.mogo.commons.AbsMogoApplication; -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.och.bus.passenger.ui.adapter.TemperatureAdapter; - public class BottomDecoration extends RecyclerView.ItemDecoration { /** * 第一个视图和最后一个视图偏移的距离 diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt similarity index 98% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt index 3bbef62e5d..73c5ba7cb7 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt @@ -18,7 +18,7 @@ import androidx.appcompat.widget.AppCompatImageView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.app.ActivityCompat import com.mogo.eagle.core.utilcode.util.TimeTransformUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.utils.FullVideoUtils @@ -141,7 +141,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { override fun setStateAndUi(state: Int) { super.setStateAndUi(state) if(state==CURRENT_STATE_PLAYING_BUFFERING_START){ - ToastUtils.showShort("加载中请稍等") + ToastCharterUtils.showShort("加载中请稍等") } } @@ -265,7 +265,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { override fun onError(what: Int, extra: Int) { super.onError(what, extra) mThumbImageViewLayout?.visibility = View.VISIBLE - ToastUtils.showLong("哎呀,出错了,看看其他视频吧") + ToastCharterUtils.showLong("哎呀,出错了,看看其他视频吧") currentTime = -1 if(isIfCurrentIsFullscreen){ smalllPlayer?.clearFullscreenLayout(this) diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/DrawBitmapView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/DrawBitmapView.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/DrawBitmapView.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/DrawBitmapView.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/DrawableCheckBox.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/DrawableCheckBox.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/DrawableCheckBox.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/DrawableCheckBox.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/HorizontalDecoration.java diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/MakerWithSiteName.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/MakerWithSiteName.kt new file mode 100644 index 0000000000..3e978b0448 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/MakerWithSiteName.kt @@ -0,0 +1,31 @@ +package com.mogo.och.bus.passenger.view + +import android.content.Context +import android.graphics.Bitmap +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.view_maker_sitename.view.* + +class MakerWithSiteName @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout ( + context, + attrs, + defStyleAttr +) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_maker_sitename, this, true) + } + + fun setTextAndCheck(siteName: String,isCheck:Boolean) { + tv_site_name.text = siteName + tv_site_name.isChecked = isCheck + } +} + +data class MakerWithSiteNamewithCheck(var isCheck: Boolean,val makerWithSiteName:MakerWithSiteName,var bitmapView: Bitmap) \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/PickerLayoutManager.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/PickerLayoutManager.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/PickerLayoutManager.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/PickerLayoutManager.java diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/RecyclerViewCornerRadius.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/RecyclerViewCornerRadius.java similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/RecyclerViewCornerRadius.java rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/RecyclerViewCornerRadius.java diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ToastCharterView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ToastCharterView.kt new file mode 100644 index 0000000000..314280bcf7 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ToastCharterView.kt @@ -0,0 +1,27 @@ +package com.mogo.och.bus.passenger.view + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.charter_p_view_toast.view.* + +class ToastCharterView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout ( + context, + attrs, + defStyleAttr +) { + + init { + LayoutInflater.from(context).inflate(R.layout.charter_p_view_toast, this, true) + } + + fun setText(siteName: String) { + tv_taost_texit.text = siteName + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/drawable/MineGradientDrawable.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/drawable/MineGradientDrawable.kt similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/drawable/MineGradientDrawable.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/drawable/MineGradientDrawable.kt diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/statusbar/M1BlueToothView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/M1BlueToothView.kt similarity index 93% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/statusbar/M1BlueToothView.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/M1BlueToothView.kt index 7a7ce0013f..e193fa8785 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/statusbar/M1BlueToothView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/M1BlueToothView.kt @@ -6,7 +6,7 @@ import android.view.LayoutInflater import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView import com.mogo.och.bus.passenger.R -import kotlinx.android.synthetic.m1.m1_statusview_blue_tooth.view.* +import kotlinx.android.synthetic.main.m1_statusview_blue_tooth.view.* /** * 魔戒蓝牙控件 diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt similarity index 58% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt rename to OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt index 9c9abbefc2..df793fbdf9 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt @@ -2,16 +2,20 @@ package com.mogo.och.bus.passenger.view.statusbar import android.annotation.SuppressLint import android.content.Context +import android.os.SystemClock import android.util.AttributeSet import android.view.LayoutInflater import android.view.ViewGroup import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import chassis.ChassisStatesOuterClass +import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager @@ -20,18 +24,40 @@ import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.util.ClickUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R -import kotlinx.android.synthetic.m1.m1_statusview_datetime.view.* +import com.mogo.och.bus.passenger.bean.event.DebugView +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import kotlinx.android.synthetic.main.m1_statusview_datetime.view.* import me.jessyan.autosize.utils.AutoSizeUtils +import org.greenrobot.eventbus.EventBus import kotlin.math.roundToInt class StatusBarView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener { +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener, IMoGoAutopilotStatusListener { companion object { const val TAG = "StatusBarView" + private const val COUNTS = 4 // 点击次数 + private const val DURATION: Long = 1000 // 规定有效时间 + const val bizz = "bizz" // 业务debug + const val debugView = "debugView" // 业务debug + } + + private var mHits = LongArray(COUNTS) + + private var preStatus = -1 + + private fun continuousClick(type:String) { + //每次点击时,数组向前移动一位 + System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1) + //为数组最后一位赋值 + mHits[mHits.size - 1] = SystemClock.uptimeMillis() + if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) { + mHits = LongArray(COUNTS) //重新初始化数组 + EventBus.getDefault().post(DebugView(type)) + } } init { @@ -56,10 +82,41 @@ class StatusBarView @JvmOverloads constructor( CallerBatteryManagementSystemListenerManager.addListener(TAG,this) + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + updateStatusBarRightView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(this.context)) + bizz_view.setOnClickListener { continuousClick(bizz) } + + iv_biz_icon.setOnClickListener { continuousClick(debugView) } + progress.progress = 50 tv_power_cos.text = "50%" + + val state = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state + setAutoPilotSatusInfo(state) + } + + private fun setAutoPilotSatusInfo(state: Int) { + if(preStatus==state){ + return + } + preStatus = state + when (state) { + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> { + actv_auto_status.text = "安全接管中" + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { + actv_auto_status.text = "安全接管中" + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { + actv_auto_status.text = "自动驾驶中" + } + IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { + actv_auto_status.text = "远程代驾中" + } + else -> {} + } } override fun onSkinModeChange(skinMode: Int) { @@ -69,6 +126,12 @@ class StatusBarView @JvmOverloads constructor( } } + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + UiThreadHandler.post { + setAutoPilotSatusInfo(autoPilotStatusInfo.state) + } + } + override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { } diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/anim/alpha_hide_show.xml b/OCH/mogo-och-charter-passenger/src/main/res/anim/alpha_hide_show.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/anim/alpha_hide_show.xml rename to OCH/mogo-och-charter-passenger/src/main/res/anim/alpha_hide_show.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/color/bus_p_aircondition_enable.xml b/OCH/mogo-och-charter-passenger/src/main/res/color/bus_p_aircondition_enable.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/color/bus_p_aircondition_enable.xml rename to OCH/mogo-och-charter-passenger/src/main/res/color/bus_p_aircondition_enable.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/color/bus_p_function_airconditon_pattern_text_color_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/color/bus_p_function_airconditon_pattern_text_color_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/color/bus_p_function_airconditon_pattern_text_color_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/color/bus_p_function_airconditon_pattern_text_color_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/main/res/color/charter_p_select_city_name_textcolor.xml b/OCH/mogo-och-charter-passenger/src/main/res/color/charter_p_select_city_name_textcolor.xml new file mode 100644 index 0000000000..51e58f87a5 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/color/charter_p_select_city_name_textcolor.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bg_taxi_p_video_index.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bg_taxi_p_video_index.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bg_taxi_p_video_index.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bg_taxi_p_video_index.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bg_taxi_p_video_thumb_big.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bg_taxi_p_video_thumb_big.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bg_taxi_p_video_thumb_big.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bg_taxi_p_video_thumb_big.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bg_taxi_p_video_thumb_small.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bg_taxi_p_video_thumb_small.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bg_taxi_p_video_thumb_small.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bg_taxi_p_video_thumb_small.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bug_p_overmap_car_model.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bug_p_overmap_car_model.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bug_p_overmap_car_model.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bug_p_overmap_car_model.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_car_speed.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_car_speed.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_car_speed.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_car_speed.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_distance_info_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_distance_info_bg.png new file mode 100644 index 0000000000..a2716219ab Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_distance_info_bg.png differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_nor.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_nor.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_nor.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_nor.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_pattern_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_pattern_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_pattern_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_pattern_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_select.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_select.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_select.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_select.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_switch_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_switch_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_aircondition_switch_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_aircondition_switch_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_atmosphere_nor.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_atmosphere_nor.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_atmosphere_nor.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_atmosphere_nor.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_atmosphere_select.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_atmosphere_select.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_atmosphere_select.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_atmosphere_select.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_closedoor_normal_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_closedoor_normal_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_closedoor_normal_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_closedoor_normal_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_closedoor_press_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_closedoor_press_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_closedoor_press_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_closedoor_press_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_go_normal_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_go_normal_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_go_normal_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_go_normal_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_go_press_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_go_press_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_go_press_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_go_press_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_normal.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_normal.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_normal.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_opendoor_normal_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_opendoor_normal_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_opendoor_normal_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_opendoor_normal_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_opendoor_press_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_opendoor_press_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_opendoor_press_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_opendoor_press_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_press.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_press.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_press.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_stopside_normal_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_stopside_normal_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_stopside_normal_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_stopside_normal_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_stopside_press_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_stopside_press_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_device_stopside_press_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_device_stopside_press_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_information_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_information_normal.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_information_normal.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_information_normal.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_information_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_information_press.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_information_press.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_information_press.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_left_bg_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_left_bg_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_left_bg_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_left_bg_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_check_select.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_check_select.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_check_select.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_check_select.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_check_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_check_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_check_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_check_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_middle_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_middle_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_middle_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_middle_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_nor.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_nor.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_nor.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_nor.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_select.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_select.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_select.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_select.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_select_left.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_select_left.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_select_left.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_select_left.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_select_right.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_select_right.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_select_right.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_select_right.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_switch_bg_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_switch_bg_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_light_switch_bg_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_light_switch_bg_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_order_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_order_normal.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_order_normal.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_order_normal.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_order_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_order_press.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_order_press.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_order_press.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_soft_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_soft_normal.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_soft_normal.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_soft_normal.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_soft_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_soft_press.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_soft_press.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_soft_press.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_humb.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_humb.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_humb.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_humb.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_left_select_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_left_select_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_left_select_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_left_select_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_left_selected_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_left_selected_src.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_left_selected_src.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_left_selected_src.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_max.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_max.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_max.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_max.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_middle_select.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_middle_select.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_middle_select.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_middle_select.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_middle_selected.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_middle_selected.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_middle_selected.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_middle_selected.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_min.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_min.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_function_voice_min.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_function_voice_min.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_loading.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_loading.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_loading.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_loading.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_m1_blue_tooth_close.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_m1_blue_tooth_close.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_m1_blue_tooth_close.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_m1_blue_tooth_close.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_m1_blue_tooth_open.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_m1_blue_tooth_open.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_m1_blue_tooth_open.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_m1_blue_tooth_open.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_m1_status_bar_logo.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_m1_status_bar_logo.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_m1_status_bar_logo.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_m1_status_bar_logo.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_overmap_reset.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_overmap_reset.png new file mode 100755 index 0000000000..4506261c44 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_overmap_reset.png differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_player_change_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_player_change_normal.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_p_player_change_normal.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_p_player_change_normal.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_aircondition_wind_high.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_aircondition_wind_high.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_aircondition_wind_high.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_aircondition_wind_high.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_aircondition_wind_low.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_aircondition_wind_low.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_aircondition_wind_low.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_aircondition_wind_low.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_aircondition_wind_middle.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_aircondition_wind_middle.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_aircondition_wind_middle.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_aircondition_wind_middle.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_warm_wind_high.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_warm_wind_high.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_warm_wind_high.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_warm_wind_high.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_warm_wind_lod.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_warm_wind_lod.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_warm_wind_lod.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_warm_wind_lod.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_warm_wind_middle.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_warm_wind_middle.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/bus_pm1_warm_wind_middle.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/bus_pm1_warm_wind_middle.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_bottom_bar_select_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_bottom_bar_select_bg.png new file mode 100644 index 0000000000..d033e0a51c Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_bottom_bar_select_bg.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_end_order_openclosedoor.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_end_order_openclosedoor.webp new file mode 100644 index 0000000000..5d5d74a099 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_end_order_openclosedoor.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_endorder_head.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_endorder_head.png new file mode 100644 index 0000000000..97d123c08b Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_endorder_head.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_bar_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_bar_bg.png new file mode 100644 index 0000000000..8cdac88f73 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_bar_bg.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_center_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_center_normal.png new file mode 100644 index 0000000000..859e4950b1 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_center_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_center_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_center_press.png new file mode 100644 index 0000000000..bdc4276303 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_center_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_closedoor_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_closedoor_normal.png new file mode 100644 index 0000000000..3bf24cf958 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_closedoor_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_closedoor_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_closedoor_press.png new file mode 100644 index 0000000000..6443a62d1a Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_closedoor_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_line_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_line_normal.png new file mode 100644 index 0000000000..8151b5b365 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_line_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_line_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_line_press.png new file mode 100644 index 0000000000..6d66c11c9a Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_line_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_opendoor_normal_nor_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_opendoor_normal_nor_src.png new file mode 100644 index 0000000000..63086453b3 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_opendoor_normal_nor_src.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_opendoor_normal_press_src.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_opendoor_normal_press_src.png new file mode 100644 index 0000000000..154af83406 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_opendoor_normal_press_src.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_softsettiing_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_softsettiing_normal.png new file mode 100644 index 0000000000..8d3c31d0d4 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_softsettiing_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_softsettiing_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_softsettiing_press.png new file mode 100644 index 0000000000..07ab27a462 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_softsettiing_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_stopsite_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_stopsite_normal.png new file mode 100644 index 0000000000..88c6249a7f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_stopsite_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_stopsite_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_stopsite_press.png new file mode 100644 index 0000000000..4fbcdffb9c Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_bottom_stopsite_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_debug_view_password.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_debug_view_password.png new file mode 100644 index 0000000000..7196f29d40 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_debug_view_password.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_driver_agree.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_driver_agree.png new file mode 100644 index 0000000000..fb6fc1375a Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_driver_agree.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_driver_refuse.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_driver_refuse.png new file mode 100644 index 0000000000..f462e5aa15 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_driver_refuse.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_1.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_1.webp new file mode 100644 index 0000000000..c7a69ec5c8 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_1.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_2.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_2.webp new file mode 100644 index 0000000000..9a52c9671a Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_2.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_3.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_3.webp new file mode 100644 index 0000000000..4f732eeb63 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_3.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_4.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_4.webp new file mode 100644 index 0000000000..99bfd7223f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_4.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_info_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_info_bg.png new file mode 100644 index 0000000000..91ebc377c6 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_info_bg.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_nor.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_nor.webp new file mode 100644 index 0000000000..8533cad601 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_nor.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_order_closedoor_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_order_closedoor_normal.png new file mode 100644 index 0000000000..64671eca24 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_order_closedoor_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_order_closedoor_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_order_closedoor_press.png new file mode 100644 index 0000000000..0eb7846bf5 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_order_closedoor_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_right_arrow_go.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_right_arrow_go.png new file mode 100644 index 0000000000..92719bce65 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_right_arrow_go.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_right_arrow_novice_guidance.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_right_arrow_novice_guidance.png new file mode 100644 index 0000000000..72f60523db Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_right_arrow_novice_guidance.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_select_line_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_select_line_bg.png new file mode 100644 index 0000000000..d3f8bcf854 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_select_line_bg.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_trajectory_line.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_trajectory_line.png new file mode 100644 index 0000000000..5d8b34c67a Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_trajectory_line.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_video.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_video.png new file mode 100644 index 0000000000..2cd4c46e7f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_video.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit01.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit01.webp new file mode 100644 index 0000000000..9e806cd695 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit01.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit02.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit02.webp new file mode 100644 index 0000000000..0a3fbde266 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit02.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit03.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit03.webp new file mode 100644 index 0000000000..3d28e24c7d Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit03.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit04.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit04.webp new file mode 100644 index 0000000000..458dd26de0 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit04.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit05.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit05.webp new file mode 100644 index 0000000000..7bcb191449 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit05.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit06.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit06.webp new file mode 100644 index 0000000000..9899f85a6f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit06.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit07.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit07.webp new file mode 100644 index 0000000000..3a54db13cc Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit07.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit08.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit08.webp new file mode 100644 index 0000000000..d8ac4c610e Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit08.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit09.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit09.webp new file mode 100644 index 0000000000..1f7231c2d9 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit09.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit10.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit10.webp new file mode 100644 index 0000000000..b1feddc55f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit10.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit11.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit11.webp new file mode 100644 index 0000000000..f8e38aa30d Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit11.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit12.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit12.webp new file mode 100644 index 0000000000..5a464a2c61 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit12.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit13.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit13.webp new file mode 100644 index 0000000000..69f99544fc Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit13.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit14.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit14.webp new file mode 100644 index 0000000000..4f6ed398c0 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit14.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit15.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit15.webp new file mode 100644 index 0000000000..16aa545e83 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit15.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit16.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit16.webp new file mode 100644 index 0000000000..b4a08f5e4a Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit16.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit17.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit17.webp new file mode 100644 index 0000000000..3004510b20 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit17.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit18.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit18.webp new file mode 100644 index 0000000000..597e938c97 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit18.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit19.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit19.webp new file mode 100644 index 0000000000..8359f171fe Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit19.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit20.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit20.webp new file mode 100644 index 0000000000..72bd01e8b5 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit20.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit21.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit21.webp new file mode 100644 index 0000000000..70130c216f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit21.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit22.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit22.webp new file mode 100644 index 0000000000..38b8e3b2d4 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit22.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit23.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit23.webp new file mode 100644 index 0000000000..4e346b4462 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit23.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit24.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit24.webp new file mode 100644 index 0000000000..fff4e1e074 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit24.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit25.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit25.webp new file mode 100644 index 0000000000..4757a32709 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit25.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit26.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit26.webp new file mode 100644 index 0000000000..f36b82c50c Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit26.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit27.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit27.webp new file mode 100644 index 0000000000..5790ca8d24 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit27.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit28.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit28.webp new file mode 100644 index 0000000000..2744cf3294 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit28.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit29.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit29.webp new file mode 100644 index 0000000000..7b94aa562f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit29.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit30.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit30.webp new file mode 100644 index 0000000000..9e806cd695 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_wait_driver_submit30.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_function_bg.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_function_bg.webp new file mode 100644 index 0000000000..48f8e50b35 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_function_bg.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_line_cancle_submit_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_line_cancle_submit_bg.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_line_cancle_submit_bg.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_line_cancle_submit_bg.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_early_end.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_early_end.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_early_end.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_early_end.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_end.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_end.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_end.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_end.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_end_car.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_end_car.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_end_car.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_end_car.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_net_fail.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_net_fail.png new file mode 100644 index 0000000000..05b348e149 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_net_fail.png differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_noorder.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_noorder.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_noorder.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_noorder.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_opendoor_normal.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_opendoor_normal.png new file mode 100644 index 0000000000..f28f737428 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_opendoor_normal.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_opendoor_press.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_opendoor_press.png new file mode 100644 index 0000000000..0f8ea4bd77 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_opendoor_press.png differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_site_check.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_site_check.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_site_check.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_site_check.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_site_check_enable.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_site_check_enable.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_site_check_enable.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_site_check_enable.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_site_checked.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_site_checked.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_site_checked.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_site_checked.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_switch_line_enable.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_switch_line_enable.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_switch_line_enable.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_switch_line_enable.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_switch_line_unenable.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_switch_line_unenable.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_order_switch_line_unenable.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_switch_line_unenable.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_site_cancle_submit_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_site_cancle_submit_bg.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_site_cancle_submit_bg.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_site_cancle_submit_bg.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_site_submit_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_site_submit_bg.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_site_submit_bg.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_site_submit_bg.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_small_map_view_dir_end.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_small_map_view_dir_end.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/m1_small_map_view_dir_end.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_small_map_view_dir_end.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/map_staton_icon.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/map_staton_icon.png new file mode 100644 index 0000000000..1314028434 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/map_staton_icon.png differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_pause_big.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_pause_big.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_pause_big.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_pause_big.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_pause_small.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_pause_small.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_pause_small.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_pause_small.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_start_big.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_start_big.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_start_big.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_start_big.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_start_small.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_start_small.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/notice_video_start_small.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/notice_video_start_small.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_change_full.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_change_full.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_change_full.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_change_full.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_mogo_video_play.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_mogo_video_play.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_mogo_video_play.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_mogo_video_play.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_bg_bottom.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_bg_bottom.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_bg_bottom.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_bg_bottom.png diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_bg_top.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_bg_top.png similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable-nodpi/taxi_p_video_bg_top.png rename to OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_bg_top.png diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_holder.webp b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_holder.webp new file mode 100644 index 0000000000..d3df5084d4 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/taxi_p_video_holder.webp differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bg_taxi_p_video_bg.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bg_taxi_p_video_bg.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bg_taxi_p_video_bg.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bg_taxi_p_video_bg.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bg_taxi_p_video_bg_shape.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bg_taxi_p_video_bg_shape.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bg_taxi_p_video_bg_shape.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bg_taxi_p_video_bg_shape.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bg_taxi_p_video_bg_top.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bg_taxi_p_video_bg_top.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bg_taxi_p_video_bg_top.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bg_taxi_p_video_bg_top.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_common_bg.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_common_bg.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_common_bg.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_common_bg.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_common_bg_01.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_common_bg_01.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_common_bg_01.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_common_bg_01.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_left_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_left_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_left_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_left_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_left_selected.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_left_selected.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_left_selected.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_left_selected.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_pattern_selecotr.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_pattern_selecotr.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_pattern_selecotr.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_pattern_selecotr.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_pattern_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_pattern_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_pattern_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_pattern_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_switch_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_switch_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_switch_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_switch_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_switch_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_switch_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_aircondition_switch_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_aircondition_switch_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_airconditon_bg_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_airconditon_bg_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_airconditon_bg_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_airconditon_bg_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_airconditon_left_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_airconditon_left_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_airconditon_left_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_airconditon_left_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_airconditon_text_color_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_airconditon_text_color_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_airconditon_text_color_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_airconditon_text_color_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_device_bg_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_device_bg_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_device_bg_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_device_bg_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_information_bg_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_information_bg_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_information_bg_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_information_bg_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_order_bg_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_order_bg_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_order_bg_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_order_bg_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_soft_bg_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_soft_bg_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_bottom_soft_bg_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_bottom_soft_bg_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_closedoor_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_closedoor_normal.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_closedoor_normal.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_closedoor_normal.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_closedoor_press.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_closedoor_press.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_closedoor_press.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_closedoor_press.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_closedoor_press_selecor.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_closedoor_press_selecor.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_closedoor_press_selecor.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_closedoor_press_selecor.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_go_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_go_normal.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_go_normal.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_go_normal.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_go_press.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_go_press.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_go_press.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_go_press.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_go_press_selecor.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_go_press_selecor.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_go_press_selecor.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_go_press_selecor.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_opendoor_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_opendoor_normal.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_opendoor_normal.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_opendoor_normal.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_opendoor_press.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_opendoor_press.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_opendoor_press.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_opendoor_press.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_opendoor_press_selecor.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_opendoor_press_selecor.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_opendoor_press_selecor.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_opendoor_press_selecor.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_stopside_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_stopside_normal.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_stopside_normal.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_stopside_normal.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_stopside_press.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_stopside_press.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_stopside_press.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_stopside_press.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_stopside_press_selecor.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_stopside_press_selecor.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_device_stopside_press_selecor.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_device_stopside_press_selecor.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_distance_split_bg.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_distance_split_bg.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_distance_split_bg.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_distance_split_bg.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_left_bg_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_left_bg_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_left_bg_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_left_bg_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_left_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_left_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_left_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_left_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_left_selected.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_left_selected.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_left_selected.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_left_selected.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_left_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_left_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_left_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_left_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_switch_bg_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_switch_bg_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_switch_bg_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_switch_bg_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_switch_bg_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_switch_bg_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_light_switch_bg_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_light_switch_bg_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_setting_soft_b_shape.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_setting_soft_b_shape.xml similarity index 76% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_setting_soft_b_shape.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_setting_soft_b_shape.xml index 7197abdc70..42a5ef35c1 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_setting_soft_b_shape.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_setting_soft_b_shape.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_switch_left_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_switch_left_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_switch_left_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_switch_left_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_switch_left_selected.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_switch_left_selected.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_switch_left_selected.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_switch_left_selected.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_switch_left_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_switch_left_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_switch_left_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_switch_left_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_change_full.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_change_full.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_change_full.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_change_full.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_change_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_change_normal.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_change_normal.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_change_normal.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_pause_big.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_pause_big.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_pause_big.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_pause_big.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_pause_small.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_pause_small.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_pause_small.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_pause_small.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_start_big.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_start_big.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_start_big.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_start_big.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_start_small.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_start_small.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_start_small.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_start_small.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_thumb_big.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_thumb_big.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_thumb_big.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_thumb_big.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_thumb_samll.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_thumb_samll.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_video_player_thumb_samll.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_video_player_thumb_samll.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_left_select.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_left_select.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_left_select.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_left_select.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_left_selected.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_left_selected.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_left_selected.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_left_selected.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_left_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_left_selector.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_left_selector.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_left_selector.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_right_process_humb.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_right_process_humb.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_function_voice_right_process_humb.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_function_voice_right_process_humb.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_overmap_reset_size.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_overmap_reset_size.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/bus_p_overmap_reset_size.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/bus_p_overmap_reset_size.xml diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_go_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_go_selector.xml new file mode 100644 index 0000000000..9f5ff15f84 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_go_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_normal.xml new file mode 100644 index 0000000000..aa69138bcc --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_normal.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_press.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_press.xml new file mode 100644 index 0000000000..6510c0cfa4 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_press.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_selector.xml new file mode 100644 index 0000000000..5c053a0f30 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_bottom_opendoor_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_bg.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_bg.xml new file mode 100644 index 0000000000..39850c37aa --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_cancle.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_cancle.xml new file mode 100644 index 0000000000..c061ab1fa0 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_cancle.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_edit_bg.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_edit_bg.xml new file mode 100644 index 0000000000..204ecfe5e2 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_edit_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_submit.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_submit.xml new file mode 100644 index 0000000000..cd71d5703f --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_debugview_submit.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_bottom_corner.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_bottom_corner.xml new file mode 100644 index 0000000000..0ea8182fc7 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_bottom_corner.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_normal.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_normal.xml new file mode 100644 index 0000000000..415076833e --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_normal.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_selected.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_selected.xml new file mode 100644 index 0000000000..6c01b69413 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_selected.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_selector.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_selector.xml new file mode 100644 index 0000000000..87564e9bd4 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_selct_site_name_shape_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_cancle_line_site_change.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_cancle_line_site_change.xml new file mode 100644 index 0000000000..18e583918f --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_cancle_line_site_change.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_end_order.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_end_order.xml new file mode 100644 index 0000000000..803c55d451 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_end_order.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_end_order_left.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_end_order_left.xml new file mode 100644 index 0000000000..18e583918f --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_end_order_left.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_line_switch_left.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_line_switch_left.xml new file mode 100644 index 0000000000..483cbfe367 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_line_switch_left.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_order_info.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_order_info.xml new file mode 100644 index 0000000000..c786db4c18 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_order_info.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_submit_line_site_change.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_submit_line_site_change.xml new file mode 100644 index 0000000000..1cc7325f05 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_shape_submit_line_site_change.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_toast_shape.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_toast_shape.xml new file mode 100644 index 0000000000..bfa4b479b1 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_toast_shape.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_wait_driver_submit_ani.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_wait_driver_submit_ani.xml new file mode 100644 index 0000000000..ed41d52de6 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_wait_driver_submit_ani.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_welcome_explore.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_welcome_explore.xml new file mode 100644 index 0000000000..374e3a007f --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_welcome_explore.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_end_closedoor_selecotr.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_end_closedoor_selecotr.xml new file mode 100644 index 0000000000..272dc7dba4 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_end_closedoor_selecotr.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_end_opendoor_selecotr.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_end_opendoor_selecotr.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_end_opendoor_selecotr.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_end_opendoor_selecotr.xml diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_line_checked_shape.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_line_checked_shape.xml new file mode 100644 index 0000000000..06e010b21c --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_line_checked_shape.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_line_shape.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_line_shape.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/m1_order_line_shape.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/m1_order_line_shape.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/taxi_power_size_seekbar_style.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/taxi_power_size_seekbar_style.xml similarity index 74% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/taxi_power_size_seekbar_style.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/taxi_power_size_seekbar_style.xml index 20b5c06d78..3f0c57be06 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/taxi_power_size_seekbar_style.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/taxi_power_size_seekbar_style.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android"> - + @@ -11,7 +11,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/drawable/taxi_video_seekbar_style.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/taxi_video_seekbar_style.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/drawable/taxi_video_seekbar_style.xml rename to OCH/mogo-och-charter-passenger/src/main/res/drawable/taxi_video_seekbar_style.xml diff --git a/OCH/mogo-och-charter-passenger/src/main/res/font/din.ttf b/OCH/mogo-och-charter-passenger/src/main/res/font/din.ttf new file mode 100644 index 0000000000..db558e4dbc Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/font/din.ttf differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/charter_p_view_toast.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/charter_p_view_toast.xml new file mode 100644 index 0000000000..4dc65ef199 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/charter_p_view_toast.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_bar.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_bar.xml new file mode 100644 index 0000000000..2d9cca558f --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_bar.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_go.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_go.xml new file mode 100644 index 0000000000..e7fc539809 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_go.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_orderinfo.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_orderinfo.xml new file mode 100644 index 0000000000..c2bdf80453 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_orderinfo.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_stop_site.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_stop_site.xml new file mode 100644 index 0000000000..43f853b50c --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_bottom_stop_site.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_contain_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_contain_fragment.xml new file mode 100644 index 0000000000..f31d85ae64 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_contain_fragment.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_debugview_pass.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_debugview_pass.xml new file mode 100644 index 0000000000..873316e934 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_debugview_pass.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_devices_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_devices_fragment.xml new file mode 100644 index 0000000000..800c3fda50 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_devices_fragment.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_main_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml similarity index 73% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_main_fragment.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml index 52c5eeaf30..814d50d16b 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_main_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml @@ -25,22 +25,19 @@ app:startPointDrawable="@null" app:resetDrawableMarginRight="34dp" app:resetDrawableMarginBottom="54dp" + app:bottomPadding="200" + app:topPadding="100" app:isClearArrived="true" android:layout_width="0dp" android:layout_height="match_parent"/> - - - - + - + - + - - - - - - - - + android:layout_width="match_parent" + android:layout_height="@dimen/dp_107"/> @@ -251,6 +214,15 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent"/> + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_fragment.xml new file mode 100644 index 0000000000..d8e1afc1a4 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_fragment.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_1_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_1_fragment.xml new file mode 100644 index 0000000000..76edec3018 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_1_fragment.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_2_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_2_fragment.xml new file mode 100644 index 0000000000..08132af8c2 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_2_fragment.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_3_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_3_fragment.xml new file mode 100644 index 0000000000..b076eccf43 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_3_fragment.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_4_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_4_fragment.xml new file mode 100644 index 0000000000..e6a9ba0f9d --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_4_fragment.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml new file mode 100644 index 0000000000..f5cd6e00d2 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml new file mode 100644 index 0000000000..4cd2d81173 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml new file mode 100644 index 0000000000..932725b461 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_line_item.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_line_item.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_line_item.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_line_item.xml diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_loading.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_loading.xml new file mode 100644 index 0000000000..a2c08d102a --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_loading.xml @@ -0,0 +1,38 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_net_fail.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_net_fail.xml new file mode 100644 index 0000000000..4724f5aa1d --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_net_fail.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_noorder.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_noorder.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_noorder.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_noorder.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_site_item.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_site_item.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_order_site_item.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_site_item.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_soft_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_soft_fragment.xml similarity index 99% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_soft_fragment.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_soft_fragment.xml index 47d7a64006..1334bfb082 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_soft_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_soft_fragment.xml @@ -99,7 +99,7 @@ android:layout_marginBottom="@dimen/dp_17" android:background="@drawable/bus_p_function_aircondition_switch_selector" android:button="@null" - android:checked="true" + android:checked="false" android:drawableLeft="@drawable/bus_p_function_switch_left_selector" android:text="打开空调" android:gravity="left|center_vertical" diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_soft_temperature_item.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_soft_temperature_item.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_soft_temperature_item.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_soft_temperature_item.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_statusview_blue_tooth.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_blue_tooth.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_statusview_blue_tooth.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_blue_tooth.xml diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_statusview_datetime.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml similarity index 77% rename from OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_statusview_datetime.xml rename to OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml index b3f84e633f..95bc9a9d70 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/layout/m1_statusview_datetime.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml @@ -7,22 +7,39 @@ tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" tools:ignore="MissingDefaultResource"> + + + + android:progressDrawable="@drawable/taxi_power_size_seekbar_style" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/view_maker_sitename.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/view_maker_sitename.xml new file mode 100644 index 0000000000..f561583e92 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/view_maker_sitename.xml @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/raw/aiqinghao.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d similarity index 86% rename from OCH/mogo-och-charter-passenger/src/m1/res/raw/aiqinghao.nt3d rename to OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d index 1c77386d32..95db07b1e9 100755 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/raw/aiqinghao.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/raw/jiatinghao.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d similarity index 86% rename from OCH/mogo-och-charter-passenger/src/m1/res/raw/jiatinghao.nt3d rename to OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d index 14e07ff1cc..0a8ae1ef31 100755 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/raw/jiatinghao.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/raw/m1.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d similarity index 88% rename from OCH/mogo-och-charter-passenger/src/m1/res/raw/m1.nt3d rename to OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d index d0f375886a..2d51e00594 100644 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/raw/m1.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/raw/m1_voice_di.mp3 b/OCH/mogo-och-charter-passenger/src/main/res/raw/m1_voice_di.mp3 similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/raw/m1_voice_di.mp3 rename to OCH/mogo-och-charter-passenger/src/main/res/raw/m1_voice_di.mp3 diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/raw/pengyouhao.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d similarity index 86% rename from OCH/mogo-och-charter-passenger/src/m1/res/raw/pengyouhao.nt3d rename to OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d index c56e908166..c76eccfd5c 100755 Binary files a/OCH/mogo-och-charter-passenger/src/m1/res/raw/pengyouhao.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/values/attrs.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..2b68f358f0 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/values/attrs.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/values/color.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml similarity index 66% rename from OCH/mogo-och-charter-passenger/src/m1/res/values/color.xml rename to OCH/mogo-och-charter-passenger/src/main/res/values/color.xml index 26fd58da09..ca22013238 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/res/values/color.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml @@ -15,23 +15,40 @@ #A3BDF2 #56C59C #56EFA0 + #6EDBDC #4A5375 #0F1E57 #225EFF + #0050E1 + #1466FB + #331466FB + #43CEFE #3B4056 #23293B #485173 #292C39 #2C2D31 #222222 + #090F28 + #5F7096 + #9AABD2 + #B8C2D7 + #B8C2D8 + #D7E5F5 + #E0EFFF + #101C35 + #20418D #662C2D31 #332C2D31 + #80000000 #80288DFC #3060ABFE #0060ABFE #00EFF6FF + #B3EFF6FF #91EFF6FF #CCFFFFFF #80FFFFFF + #F0E0EFFF \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml new file mode 100644 index 0000000000..e2c3f5116a --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml @@ -0,0 +1,73 @@ + + + 制冷 + 制热 + 通风 + 自动 + + 温度 + + 风速 + + + + + + 关闭顶灯1 + 关闭顶灯2 + 关闭氛围灯 + + 开启顶灯1 + 开启顶灯2 + 开启氛围灯 + + KM/h + + 正在为您靠边停车,扶稳坐好哟 + 靠边停车成功 + + 请安全员登录司机屏 + 包车将在5分钟后结束,结束后我们将自动为您寻找停车点 + + + 距离(KM) + 距离(M) + 剩余(分) + 到达 + + --:-- + + 靠边停车 + 欢迎乘坐\'蘑菇车联\'自动驾驶小巴车,按照桌面屏幕的指引,开始探索吧! + + 接下来由蘑菇小助手为您\'指引方向\'! + 关闭车门后,点击‘出发’按钮启动 + 点击‘停车’按钮后进行靠边停车,车辆停稳后就可以下车游玩啦! + 最后,蘑菇小助手为您送上乘车小贴士~ + 太棒了!您已完成乘车指南,更多功能欢迎探索,蘑菇小助手预祝您旅途愉快 + + 先关闭车门再启动吧~ + 自驾系统繁忙,稍后再试试吧~ + %1$s就要到啦! + 稍后再来看看吧 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/m1/res/values/styles.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/styles.xml similarity index 100% rename from OCH/mogo-och-charter-passenger/src/m1/res/values/styles.xml rename to OCH/mogo-och-charter-passenger/src/main/res/values/styles.xml diff --git a/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt b/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt index 81ae52637e..bdf18afced 100644 --- a/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt +++ b/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt @@ -5,6 +5,7 @@ import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.util.CoordinateTransform import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.utils.DateTimeUtil import org.json.JSONException import org.json.JSONObject import org.junit.Test diff --git a/OCH/mogo-och-charter/build.gradle b/OCH/mogo-och-charter/build.gradle index ad6daeea4b..550170a67d 100644 --- a/OCH/mogo-och-charter/build.gradle +++ b/OCH/mogo-och-charter/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt index e2c4521324..5d22b931c1 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt @@ -22,7 +22,9 @@ data class QueryCurrentOrderResponse(var data: Result):BaseData(){ //线路id , var wgs84Lat: Double = 0.0, var startTime: Long, var endTime: Long, - var passengerPhone: String + var passengerPhone: String, + val arriveStatus:Int?,//1:未到达 2:到达 + val writeVersion: Long = 0 //更新时间戳 ){ override fun equals(o: Any?): Boolean { if (this === o) return true @@ -38,6 +40,15 @@ data class QueryCurrentOrderResponse(var data: Result):BaseData(){ //线路id , && wgs84Lon == result.wgs84Lon && wgs84Lon == result.wgs84Lon && Objects.equals(passengerPhone , result.passengerPhone) + && arriveStatus == result.arriveStatus + && writeVersion == result.writeVersion + && startTime == result.startTime + && endTime == result.endTime + } + + companion object{ + const val ARRIVING = 1 //未到站 + const val ARRIVED = 2 //到站 } } } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt index 68361127d7..8366ad32e1 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt @@ -4,4 +4,5 @@ package com.magic.mogo.och.charter.bean * @author: wangmingjun * @date: 2023/2/24 */ -data class RequestChangeDest(var sn: String,var lineId: Int,var startSiteId: Int,var siteId: Int) +data class RequestChangeDest(var sn: String,var lineId: Int,var startSiteId: Int,var siteId: Int, + val writeVersion: Long) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt index 7a8a8ce957..4b44f958bc 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt @@ -5,3 +5,5 @@ package com.magic.mogo.och.charter.bean * @date: 2023/2/23 */ data class Station(var siteId: Int, var siteName: String, var seq: Int) + +data class ArriveDestRequest(val sn:String, val lineId:Long,val writeVersion:Long) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/WriteOffPassenger.java b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/WriteOffPassenger.java new file mode 100644 index 0000000000..1c97a9edbd --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/WriteOffPassenger.java @@ -0,0 +1,14 @@ +package com.magic.mogo.och.charter.bean; + +import java.io.Serializable; + +/** + * @author: wangmingjun + * @date: 2022/9/23 + */ +public class WriteOffPassenger implements Serializable { + public String phone; + public String orderNo; + public int passengerSize; + public long writeOffTime; +} diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt index 8ad297cf23..47b7067866 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt @@ -1,5 +1,6 @@ package com.magic.mogo.och.charter.fragment +import android.graphics.BitmapFactory import android.os.Bundle import android.os.CountDownTimer import android.view.View.GONE @@ -8,21 +9,30 @@ import com.alibaba.android.arouter.launcher.ARouter import com.magic.mogo.och.charter.R import com.magic.mogo.och.charter.base.CharterBaseFragment import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse.Result.Companion.ARRIVED +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse.Result.Companion.ARRIVING import com.magic.mogo.och.charter.constant.CharterConst.Companion.LOOP_PERIOD_60S import com.magic.mogo.och.charter.net.login.LoginDriverM1Impl import com.magic.mogo.och.charter.presenter.DriverM1Presenter import com.magic.mogo.och.charter.view.SlidePanelView +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.temp.EventLogout 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.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.LoginService import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.createQRCodeWithPicture +import com.mogo.och.common.module.wigets.BindQRCodeDialog import com.mogo.och.common.module.wigets.OCHCommitDialog import kotlinx.android.synthetic.driverm1.bus_no_line_view.* import kotlinx.android.synthetic.driverm1.fragment_driver_m1.* +import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import kotlin.math.ceil +import kotlin.math.roundToInt /** * @author: wangmingjun @@ -48,11 +58,14 @@ class DriverM1Fragment : CharterBaseFragment= 0){ - startCountDownTimer(minutes + LOOP_PERIOD_60S,LOOP_PERIOD_60S) + if (minutes >= 0){ + startCountDownTimer(minutes,LOOP_PERIOD_60S) }else{ + isReturn5MTip = false clearCountDownTimer() } } @@ -93,6 +121,30 @@ class DriverM1Fragment : CharterBaseFragment aLong + 1 } .subscribeOn(Schedulers.io()) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index 2748b32e18..65ca0483fa 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -7,10 +7,7 @@ import com.alibaba.android.arouter.utils.TextUtils import com.amap.api.maps.model.LatLng import com.elegant.network.utils.GsonUtil import com.magic.mogo.och.charter.R -import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse -import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse -import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse -import com.magic.mogo.och.charter.bean.QueryRoutesResponse +import com.magic.mogo.och.charter.bean.* import com.magic.mogo.och.charter.callback.ChangeDestCallback import com.magic.mogo.och.charter.callback.DriverM1OrderCallback import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback @@ -19,8 +16,10 @@ import com.magic.mogo.och.charter.manager.CharterAnalyticsManager import com.magic.mogo.och.charter.manager.CharterTrajectoryManager import com.magic.mogo.och.charter.net.DriverM1ServiceManager import com.mogo.aicloud.services.socket.IMogoOnMessageListener +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager +import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.map.MogoLocation @@ -32,12 +31,15 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToAllClients +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +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.util.* import com.mogo.och.common.module.bean.dpmsg.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.pushAppOperationalMsgBox +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.registerSocketMessageListener import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.releaseSocketMessageListener import com.mogo.och.common.module.biz.common.socketmessage.data.* import com.mogo.och.common.module.biz.constant.OchCommonConst @@ -52,6 +54,7 @@ import com.mogo.och.common.module.manager.CharterSendTripInfoManager.END_TRIP import com.mogo.och.common.module.manager.CharterSendTripInfoManager.START_TRIP import com.mogo.och.common.module.manager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.* +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.data.bean.* import io.reactivex.exceptions.UndeliverableException import io.reactivex.functions.Consumer @@ -114,18 +117,24 @@ class DriverM1Model { OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener) // 监听运营信息 - OCHSocketMessageManager.registerSocketMessageListener( + registerSocketMessageListener( OCHSocketMessageManager.msgMonitorType, mOnSystemMessageListener) //监听开门 - OCHSocketMessageManager.registerSocketMessageListener( + registerSocketMessageListener( OCHSocketMessageManager.msgOperateDoorType, mOnDoorMessageListener) //监听订单结束 - OCHSocketMessageManager.registerSocketMessageListener( + registerSocketMessageListener( OCHSocketMessageManager.msgOrderClosedType, mOnOrderClosedMessageListener) + //监听核销乘客 + registerSocketMessageListener( //监听核销乘客 + OCHSocketMessageManager.msgWriteOffPassengerType, + mWriteOffPassengerOnMessageListener + ) + //监听乘客屏发来的消息 CallerTelematicListenerManager.addListener(TAG,mReceivedMsgListener) @@ -223,8 +232,30 @@ class DriverM1Model { if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type){ val changeDestMsg = GsonUtils.fromJson(String(byteArray), ChangeDestMsg::class.java) as ChangeDestMsg - currentChangeDestMsg = changeDestMsg - showChangerDestCommitDialog(changeDestMsg) + if (changeDestMsg.arriveStatus == 2){//到站 + // 2、到站同步 + sendMsgToClient(changeDestMsg) + }else{ //切换目的地 + showChangerDestCommitDialog(changeDestMsg) + } + }else if (msg.type == DPMsgType.TYPE_TASK_DETAILS.type){ + updateToClientData() + } else if (msg.type == DPMsgType.TYPE_COMMON.type) { + val msg = GsonUtils.fromJson( + String(byteArray), + AppConnectMsg::class.java + ) as AppConnectMsg + CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "收到数据:常规数据:$msg") + if (msg.isViewShow) { //消息盒子显示内容 + pushOperationalToMsgBox( + DateTimeUtil.getCurrentTimeStamp(), + msg.msg, + msg.boxType + ) + } + if(msg.isPlay){ + VoiceNotice.showNotice(msg.msg, AIAssist.LEVEL1) + } } d(SceneConstant.M_CHARTER_D,"onReceivedMsg = "+ GsonUtils.toJson(msg)) }catch (e: Exception){ @@ -236,15 +267,18 @@ class DriverM1Model { } private fun showChangerDestCommitDialog(changeDestMsg: ChangeDestMsg) { - if (!TextUtils.isEmpty(changeDestMsg.destSiteName)){ - UiThreadHandler.post{ - mChangeDestCallback?.showCommitDialog("确认站点", - "请确认是否前往"+ changeDestMsg.destSiteName + "站点") + if (!TextUtils.isEmpty(changeDestMsg.destSiteName) && !TextUtils.isEmpty(changeDestMsg.lineName)){ + if (changeDestMsg.lineId == currentChangeDestMsg?.lineId){//同一条路线切换站点不需要再确认 + currentChangeDestMsg = changeDestMsg + changeDest() + return } - }else if (!TextUtils.isEmpty(changeDestMsg.lineName)){ + + currentChangeDestMsg = changeDestMsg + UiThreadHandler.post{ - mChangeDestCallback?.showCommitDialog("确认路线", - "请确认是否切换"+ changeDestMsg.lineName + "路线") + mChangeDestCallback?.showCommitDialog("确认路线站点", + "请确认是否前往 "+ changeDestMsg.lineName+ changeDestMsg.destSiteName + " 站点") } } } @@ -261,7 +295,7 @@ class DriverM1Model { pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(), obj.context) } if (list != null && list.contains(2)){ //发送乘客屏 - sendMsgToClient(DPCommonOperationMsg(obj.context)) + sendMsgToClient(AppConnectMsg(msg = obj.context)) } } @@ -300,6 +334,20 @@ class DriverM1Model { } } + private val mWriteOffPassengerOnMessageListener: IMogoOnMessageListener = + object : IMogoOnMessageListener { + override fun target(): Class { + return WriteOffPassenger::class.java + } + + override fun onMsgReceived(passenger: WriteOffPassenger?) { + //进行播报 + i(SceneConstant.M_BUS + TAG, "passenger = " + GsonUtil.jsonFromObject(passenger)) + val appMsg = AppConnectMsg(false,true,"核销成功") + sendMsgToClient(appMsg) + } + } + fun pushOperationalToMsgBox(time : Long,content : String,type: Int = -1){ playDI() pushAppOperationalMsgBox(time, content,type) @@ -376,11 +424,79 @@ class DriverM1Model { } private fun onArriveAt() { - isArrivedStation = true - d(SceneConstant.M_CHARTER_D + TAG, "onArriveAt = " + GsonUtil.jsonFromObject(mCurrentOrder)) + + if (isArrivedStation) return + if (mCurrentOrder == null) return + + d(SceneConstant.M_CHARTER_D + TAG, "onArriveAt = " + GsonUtil.jsonFromObject(mCurrentOrder)) + //到站接口请求 + + mContext?.let { + mCurrentOrder?.lineId?.let { it1 -> + DriverM1ServiceManager.arriveDest( + it, it1.toLong(),DateTimeUtil.getCurrentTimeStamp(),object :OchCommonServiceCallback{ + override fun onSuccess(data: BaseData?) { + d(SceneConstant.M_CHARTER_D + TAG, "onArriveAt = " + GsonUtil.jsonFromObject(data)) + if (data?.code == 0){ + onArriveAtSuccess() + } + } + + override fun onFail(code: Int, msg: String?) { + d(SceneConstant.M_CHARTER_D + TAG, "onArriveAt = onFail= $code,$msg" ) + } + }) + } + } + } + + private fun onArriveAtSuccess() { + isArrivedStation = true CharterSendTripInfoManager.sendCharterTripInfo(ARRIVE_STATION,mCurrentOrder?.lineName!! ,mCurrentOrder?.startSiteName!!,mCurrentOrder?.siteName!!,false) + + if (currentChangeDestMsg != null){ + currentChangeDestMsg?.isConfirmed = true + currentChangeDestMsg?.arriveStatus = 2 + } + } + + private fun updateToClientData() { + if (mCurrentOrder == null) { + currentChangeDestMsg = ChangeDestMsg("",-1,"",0 + ,"",0,"",false,1 + ,DateTimeUtil.getCurrentTimeStamp()) + sendMsgToClient(currentChangeDestMsg) + return + } + if (currentChangeDestMsg == null){ + mCurrentOrder?.let { + currentChangeDestMsg = ChangeDestMsg( + mCurrentOrder!!.orderNo, + mCurrentOrder!!.lineId + ,mCurrentOrder!!.lineName + , mCurrentOrder!!.startSiteId + ,mCurrentOrder!!.startSiteName + ,mCurrentOrder!!.siteId + ,mCurrentOrder!!.siteName + ,true + ,mCurrentOrder!!.arriveStatus + ,if(mCurrentOrder!!.writeVersion == 0L){ + DateTimeUtils.getCurTimeInMillis() + }else{ + mCurrentOrder!!.writeVersion + }) + } + } + + currentChangeDestMsg?.writeVersion = if(mCurrentOrder!!.writeVersion == 0L){ + DateTimeUtils.getCurTimeInMillis() + }else{ + mCurrentOrder!!.writeVersion + } + + sendMsgToClient(currentChangeDestMsg) } /** @@ -461,7 +577,7 @@ class DriverM1Model { * 将业务订单信息保存,鹰眼可取用 */ fun updateAutopilotControlParameters() { - // TODO: 业务信息保存 + // 业务信息保存 val parameters = initAutopilotControlParameters() if (null == parameters) { d(SceneConstant.M_CHARTER_D + TAG, "AutopilotControlParameters is empty.") @@ -524,14 +640,17 @@ class DriverM1Model { /** * 司机端发送消息给乘客屏 */ - fun sendCommitMsgToClient(isConfirmed: Boolean) { - if (currentChangeDestMsg !== null) { + fun sendCommitMsgToClient(isConfirmed: Boolean,writeVersion: Long) { + if (currentChangeDestMsg != null) { + d(SceneConstant.M_CHARTER_D + TAG, "confirmed station $isConfirmed" ) currentChangeDestMsg?.isConfirmed = isConfirmed + currentChangeDestMsg?.writeVersion = writeVersion sendMsgToClient(currentChangeDestMsg) } } private fun sendMsgToClient(msg: BaseDPMsg?){ + d(SceneConstant.M_CHARTER_D + TAG, "sendMsgToClient" + GsonUtils.toJson(msg)) sendMsgToAllClients( OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(msg).toByteArray() @@ -569,17 +688,24 @@ class DriverM1Model { if (data.data.businessStatus == 2){//订单为空,则是要换车状态 if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态 mOrderCallback?.updateReturnCarStatus(false) - mCurrentOrder == null + mCurrentOrder = null + currentChangeDestMsg = null sendCharterEndTripInfo() startOrStopCheckCountDown(false) - }else{ // 订单不为空,有服务中订单,去查询订单 - mOrderCallback?.updateReturnCarStatus(true) - startQueryCurrentOrder() + updateToClientData() + isArrivedStation = false } +// else{ // 订单不为空,有服务中订单,等待去查询订单 +// mOrderCallback?.updateReturnCarStatus(true) +// } }else{ //车辆无订单,闲置状态 + mOrderCallback?.updateReturnCarStatus(true) clearAutopilotControlParameters() mCurrentOrder = null + currentChangeDestMsg = null + isArrivedStation = false startOrStopCheckCountDown(false) + updateToClientData() } } @@ -603,7 +729,6 @@ class DriverM1Model { isArrivedStation = false mCurrentOrder = null queryCurrentServiceStatus() - stopQueryCurrentOrder() return } if (data.data.equals(mCurrentOrder)){ @@ -616,16 +741,19 @@ class DriverM1Model { mCurrentOrder = data.data + updateToClientData() + + mOrderCallback?.updateOrderUI(data.data) + // 包车时间倒计时校验开始 + startOrStopCheckCountDown(true) + if (TextUtils.isEmpty(data.data.lineName)){ d(SceneConstant.M_CHARTER_D + TAG, "lineName = null") return } - mOrderCallback?.updateOrderUI(data.data) //给工控机发轨迹 checkoutContrail() - // 包车时间倒计时校验开始 - startOrStopCheckCountDown(true) //鹰眼存参数 updateAutopilotControlParameters() //给前后屏发数据 @@ -674,21 +802,24 @@ class DriverM1Model { fun changeDest(){ if (currentChangeDestMsg == null) return - if (TextUtils.isEmpty(currentChangeDestMsg?.destSiteName)){//确认路线 - d(SceneConstant.M_CHARTER_D + TAG, "confirm line .") - sendCommitMsgToClient(true) - return - } +// if (TextUtils.isEmpty(currentChangeDestMsg?.destSiteName)){//确认路线 +// d(SceneConstant.M_CHARTER_D + TAG, "confirm line .") +// sendCommitMsgToClient(true) +// return +// } + val writeVersion = DateTimeUtil.getCurrentTimeStamp() DriverM1ServiceManager.changeDest(mContext,currentChangeDestMsg!!.lineId, currentChangeDestMsg!!.startSiteId, currentChangeDestMsg!!.destSiteId, + writeVersion, object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { if (data != null && data.code == 0){ d(SceneConstant.M_CHARTER_D + TAG, "confirmed station .") + isArrivedStation = false CallerAutoPilotControlManager.cancelAutoPilot() queryCurrentServiceStatus() - sendCommitMsgToClient(true) + sendCommitMsgToClient(true,writeVersion) } } @@ -722,7 +853,6 @@ class DriverM1Model { } fun onAutopilotArriveAtStation() { - if (isArrivedStation) return onArriveAt() } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt index 392d501c2d..dc2c462b1d 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt @@ -9,6 +9,7 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl import com.mogo.och.common.module.biz.network.interceptor.transformTry +import com.mogo.och.common.module.utils.DateTimeUtil /** * Created by pangfan on 2021/8/19 @@ -66,15 +67,25 @@ object DriverM1ServiceManager { ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "checkOrderCountDown")) } - fun changeDest(context: Context?,lineId: Int,startSiteId: Int,siteId: Int, + fun changeDest(context: Context?,lineId: Int,startSiteId: Int,siteId: Int,writeVersion: Long, callback: OchCommonServiceCallback?){ mDriverM1ServiceApi.changeDest(MoGoAiCloudClientConfig.getInstance().serviceAppId, MoGoAiCloudClientConfig.getInstance().token, - RequestChangeDest(MoGoAiCloudClientConfig.getInstance().sn,lineId,startSiteId,siteId) + RequestChangeDest(MoGoAiCloudClientConfig.getInstance().sn,lineId,startSiteId,siteId, + writeVersion) )?.transformTry() ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "changeDest")) } + fun arriveDest(context: Context,lindId: Long ,writeVersion:Long + ,callback: OchCommonServiceCallback?){ + mDriverM1ServiceApi.arriveDest(MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + ArriveDestRequest(MoGoAiCloudClientConfig.getInstance().sn,lindId,writeVersion) + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context!!, callback, "arriveDest")) + } + fun checkoutContrail(context: Context?,lineId: Int, callback: OchCommonServiceCallback?){ mDriverM1ServiceApi.checkoutContrail(MoGoAiCloudClientConfig.getInstance().serviceAppId, diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt index f6f919a0dc..6c2a45b380 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt @@ -1,6 +1,7 @@ package com.magic.mogo.och.charter.net import com.magic.mogo.och.charter.bean.* +import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.BaseData import io.reactivex.Observable import retrofit2.http.* @@ -56,4 +57,13 @@ interface IDriverM1Service { @Query("sn") sn: String? ,@Query("lineId") lineId:Int): Observable? + /** + * 到达目的地 + */ + @POST("/och-rental-cabin/api/flow/v1/driver/arriveDest") + fun arriveDest( + @Header("appId") appId: String, + @Header("ticket") ticket: String, + @Body request: ArriveDestRequest + ): Observable } \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 176e8236c7..2b13464cfd 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -16,13 +16,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager 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.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean import com.mogo.och.common.module.biz.callback.ILoginCallback import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.OPERATION_ROAD_SIDE_TYPE -import com.mogo.och.common.module.biz.constant.LoginStatusManager import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager +import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.utils.DateTimeUtil import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg @@ -33,7 +33,7 @@ import mogo_msg.MogoReportMsg */ class DriverM1Presenter(view: DriverM1Fragment?) : Presenter(view),ILoginCallback, DriverM1OrderCallback, ChangeDestCallback, - IMoGoAutopilotStatusListener, OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback, + IMoGoAutopilotStatusListener, StopSideStatusManager.OCHPlanningActionsCallback, IDriverM1ControllerStatusCallback { private val TAG = DriverM1Presenter::class.java.name @@ -47,14 +47,14 @@ class DriverM1Presenter(view: DriverM1Fragment?) : private fun registerListener() { //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 CallerAutoPilotStatusListenerManager.addListener(TAG, this) - OCHPlanningStopSideStatusManager.addListener(TAG,this) + StopSideStatusManager.addListener(TAG,this) DriverM1Model.get().setDriverM1OrderCallback(this) DriverM1Model.get().setChangeDestCallback(this) DriverM1Model.get().setControllerStatusCallback(this) } private fun releaseListener() { - OCHPlanningStopSideStatusManager.removeListener(TAG) + StopSideStatusManager.removeListener(TAG) CallerAutoPilotStatusListenerManager.removeListener(TAG) DriverM1Model.get().setDriverM1OrderCallback(null) DriverM1Model.get().setChangeDestCallback(null) @@ -72,6 +72,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) : if(isLogin()){ // 查询服务状态 DriverM1Model.get().queryCurrentServiceStatus() + DriverM1Model.get().startQueryCurrentOrder() }else{ CharterTrajectoryManager.stopTrajReqLoop() } @@ -118,7 +119,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) : } fun sendCommitMsgToClient(isAffirm: Boolean){ - DriverM1Model.get().sendCommitMsgToClient(isAffirm) + DriverM1Model.get().sendCommitMsgToClient(isAffirm,DateTimeUtils.getCurTimeInMillis()) } fun changeDest(){ @@ -162,15 +163,23 @@ class DriverM1Presenter(view: DriverM1Fragment?) : } override fun onStartAutopilotFailure( - actionStatus: OCHPlanningStopSideStatusManager.Status, + actionStatus: StopSideStatusManager.Status, stopSideStatus: Boolean?, errorInfo: String? ) { when (actionStatus) { - OCHPlanningStopSideStatusManager.Status.START -> { // 靠边停车 to 消息盒子 + StopSideStatusManager.Status.START -> { // 靠边停车 to 消息盒子 DriverM1Model.get().pushOperationalToMsgBox( DateTimeUtil.getCurrentTimeStamp(), - "", + "靠边停车", + OPERATION_ROAD_SIDE_TYPE + ) + } + StopSideStatusManager.Status.EndingFaile, + StopSideStatusManager.Status.NOSTART-> { + DriverM1Model.get().pushOperationalToMsgBox( + DateTimeUtil.getCurrentTimeStamp(), + "靠边停车失败", OPERATION_ROAD_SIDE_TYPE ) } diff --git a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml index db8169df70..3e41cb7213 100644 --- a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml +++ b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml @@ -82,10 +82,12 @@ android:id="@+id/cur_station_title1" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/dp_10" android:layout_marginTop="@dimen/dp_50" android:textSize="@dimen/dp_34" android:text="@string/bus_arrive_to_next_tag1" android:textColor="@color/station_title_color" + app:layout_constraintBottom_toTopOf="@+id/driverm1StationName2Tv" app:layout_constraintTop_toBottomOf="@+id/driverm1StationName1Tv" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginLeft="@dimen/dp_96"/> @@ -112,7 +114,7 @@ android:layout_height="wrap_content" android:text="--" android:textSize="@dimen/module_mogo_och_bus_station_name_text_size" - android:layout_marginTop="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_20" android:textStyle="bold" android:textColor="@color/bus_arrived_station_name_text_color" android:includeFontPadding = "false" @@ -121,7 +123,7 @@ android:marqueeRepeatLimit="marquee_forever" app:layout_constraintLeft_toLeftOf="@+id/cur_station_title1" app:layout_constraintRight_toRightOf="@+id/driverm1_order_count_down" - app:layout_constraintTop_toBottomOf="@+id/cur_station_title1" /> + app:layout_constraintBottom_toTopOf="@+id/line3"/> @@ -167,32 +169,31 @@ android:id="@+id/line3" android:layout_width="0dp" android:layout_height="@dimen/dp_1" - android:layout_marginTop="@dimen/dp_40" + android:layout_marginBottom="@dimen/dp_40" android:background="#33FFFFFF" - app:layout_constraintTop_toBottomOf="@+id/driverm1StationName2Tv" - app:layout_constraintLeft_toLeftOf="@+id/driverm1nextCircleIv" - app:layout_constraintRight_toRightOf="@+id/driverm1_order_count_down"/> + app:layout_constraintLeft_toLeftOf="@id/driverm1_line_name" + app:layout_constraintRight_toRightOf="@+id/driverm1_order_count_down" + app:layout_constraintBottom_toTopOf="@+id/during_time"/> + app:layout_constraintBottom_toTopOf="@+id/passenger_phone"/> + app:layout_constraintBottom_toBottomOf="parent"/> + + \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt index 4121812a2e..0527ff1675 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt @@ -15,7 +15,6 @@ import com.magic.mogo.och.charter.view.SlidePanelView import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.mvp.Presenter -import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo @@ -24,7 +23,6 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initAi 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.call.map.CallerVisualAngleManager.updateLongSightLevel 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 @@ -32,6 +30,7 @@ import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView import com.mogo.eagle.core.function.smp.view.SmallMapView import com.mogo.eagle.core.function.view.MapBizView +import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -39,6 +38,7 @@ import com.mogo.map.listener.IMogoMapListener import com.mogo.map.listener.MogoMapListenerHandler.Companion.mogoMapListenerHandler 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.* @@ -109,20 +109,14 @@ abstract class CharterBaseFragment?>() : if (controller != null) { //切换地图的远近视图 if (controller.currentMapVisualAngle.isLongSight) { - updateLongSightLevel(false) 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) { - updateLongSightLevel(true) - if (FunctionBuildConfig.isRomaMode) { - controller.setRomaMode(1) - } else { - Objects.requireNonNull(getMapUIController()) + 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) @@ -166,6 +160,10 @@ abstract class CharterBaseFragment?>() : ) } + module_mogo_och_arrived_tv.onClick { + onArriveStation() + } + mSettingBtn = findViewById(R.id.module_mogo_och_setting_layout) mSettingBtn!!.setOnClickListener { v: View? -> // TODO: 2021/12/9 @@ -215,6 +213,8 @@ abstract class CharterBaseFragment?>() : smallMapView!!.onResume() } + protected abstract fun onArriveStation() + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup? , savedInstanceState: Bundle?): View? { EventBus.getDefault().register(this) @@ -246,6 +246,20 @@ abstract class CharterBaseFragment?>() : } } + /** + * 到站按钮状态切换 + */ + open fun setArrivedClickable(isClickable: Boolean) { + requireActivity().runOnUiThread { + module_mogo_och_arrived_tv.isEnabled = isClickable + if (isClickable) { + module_mogo_och_arrived_tv.setTextColor(resources.getColor(R.color.bus_white)) + } else { + module_mogo_och_arrived_tv.setTextColor(resources.getColor(R.color.bus_arrived_btn_un_clickable_color)) + } + } + } + /** * 隐藏滑动按钮 */ diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt index 2a9aeba1f9..09cabd4b95 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt @@ -49,7 +49,7 @@ class CharterConst { const val ARRIVE_AT_END_STATION_DISTANCE = 10 // 轮询 - const val LOOP_3M = 5 * 60 * 1000L + const val LOOP_5M = 5 * 60 * 1000L const val LOOP_2S = 2 * 1000L const val LOOP_1S = 1 * 1000L const val LOOP_DELAY_500 = 500L diff --git a/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml b/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml index 58da7ef5a2..08318efc67 100644 --- a/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml +++ b/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml @@ -11,6 +11,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> + + - - - + + 取消 暂无服务订单 + 等待乘客选择 diff --git a/OCH/mogo-och-common-module/build.gradle b/OCH/mogo-och-common-module/build.gradle index 0b9856e476..84eb21a653 100644 --- a/OCH/mogo-och-common-module/build.gradle +++ b/OCH/mogo-och-common-module/build.gradle @@ -2,15 +2,11 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' -apply plugin: 'com.alibaba.arouter' android { compileSdkVersion rootProject.ext.android.compileSdkVersion - buildToolsVersion "30.0.2" - defaultConfig { - minSdkVersion 23 - targetSdkVersion 31 + minSdkVersion rootProject.ext.android.minSdkVersion versionCode 1 versionName "1.0" diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt index e47d5900fd..26f52b5a4e 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt @@ -6,9 +6,11 @@ package com.mogo.och.common.module.bean.dpmsg */ enum class DPMsgType(val type: Int) { TYPE_COMMON(0), //常规 - TYPE_CHANGE_DEST(1),// 变更目的地确认 + TYPE_CHANGE_DEST(1),// 变更目的地确认/到站 TYPE_OPEN_CLOSE_DOOR(2),//开关门 TYPE_ORDER_CLOSED(3), // 订单结束 TYPE_TASK_DETAILS(4), //路线任务详情 - TYPE_LOGIN_STATUS(5) //login status + TYPE_LOGIN_STATUS(5), //login status + TYPE_ARRIVEDEST_STATUS(6), //到站通知 status + TYPE_ORDER_CLOSED_BY_M1_STATUS(7) //到站通知 status } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt index 2fae88bbb1..a8a65b3dfb 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt @@ -9,7 +9,12 @@ object BusCacheKey{ const val BUS_LOGIN_STATUS_CACHE = "bus_login_status_cache" } -open class BaseDPMsg(open var type: Int) // 0: 常规 1:确认路线/站点 2:开/关车门 3:结束订单 +open class BaseDPMsg(open var type: Int){// 0: 常规 1:确认路线/站点 2:开/关车门 3:结束订单 + companion object{ + const val TAG = "BaseDPMsg" + } +} + data class LoginCacheStatus( var loginStatus: Int, @@ -17,15 +22,48 @@ data class LoginCacheStatus( ): BaseDPMsg(DPMsgType.TYPE_LOGIN_STATUS.type) data class ChangeDestMsg( + var orderNo: String,// 订单号 var lineId: Int, //线路id var lineName: String = "", //线路名称 var startSiteId: Int= 0, //当前站点 var startSiteName: String = "", var destSiteId: Int= 0, //目的地 var destSiteName: String = "", - var isConfirmed: Boolean = false //司机端是否同意 + var isConfirmed: Boolean = false, //司机端是否同意 + var arriveStatus:Int?, //1:未到达 2:到达 + var writeVersion:Long?, //版本标记 + var lineSiteList: MutableList? = null ): BaseDPMsg(DPMsgType.TYPE_CHANGE_DEST.type) +data class LineSite( + val lineId: Long?,//线路Id + val lineName: String?,//线路名称 + val siteId: Long?,//线路Id + val siteName: String?,//站点名称 + val Wgs84Lon: Double?,//高精坐标 + val Wgs84Lat: Double?,//高精坐标 + val GcjLon: Double?,//高德坐标 + val GcjLat: Double?,//高德坐标 + val seq: Double?, + val type: Int?, +) + +data class ArriveDestMsg( + var orderNo: String, //订单id + var lineId: Int, //线路id + var lineName: String = "", //线路名称 + var startSiteId: Int= 0, //当前站点 + var startSiteName: String = "", + var destSiteId: Int= 0, //目的地 + var destSiteName: String = "", + var arriveStatus:Int?, //1:未到达 2:到达 + var writtenVersion:Long?, //版本标记 +): BaseDPMsg(DPMsgType.TYPE_ARRIVEDEST_STATUS.type) + +data class EndOrderMsg( + var orderNo: String, //订单id +): BaseDPMsg(DPMsgType.TYPE_ORDER_CLOSED_BY_M1_STATUS.type) + data class DPCommonOperationMsg( var msg: String ): BaseDPMsg(DPMsgType.TYPE_COMMON.type) @@ -35,11 +73,12 @@ data class DPOperateDoorMsg( ): BaseDPMsg(DPMsgType.TYPE_OPEN_CLOSE_DOOR.type) data class DPOrderClosedMsg( - var closed: Boolean = true // true: 开门, false: 关门 + var closed: Boolean = true // true: 结束 ): BaseDPMsg(DPMsgType.TYPE_ORDER_CLOSED.type) -data class AppConnectMsg(var isViewShow: Boolean, var isPlay: Boolean, var msg: String, -): BaseDPMsg(DPMsgType.TYPE_COMMON.type) +data class AppConnectMsg( + var isViewShow: Boolean = true, var isPlay: Boolean = false, var msg: String,var boxType:Int=-1 +) : BaseDPMsg(DPMsgType.TYPE_COMMON.type) data class TaskDetailsMsg( var msg: String?, diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt index 4b48f87c59..27f4b19f7b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt @@ -3,8 +3,6 @@ package com.mogo.och.common.module.biz.model import android.annotation.SuppressLint import android.content.Context import com.mogo.eagle.core.data.BaseData -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.SharedPrefs @@ -26,17 +24,13 @@ import com.mogo.och.common.module.utils.ToastUtilsOch * 网约车 - 出租车业务逻辑处理 */ @SuppressLint("StaticFieldLeak") -object OchCommonLoginModel : IMoGoChassisLocationGCJ02Listener { +object OchCommonLoginModel { private val TAG = "TaxiLoginModel" private var mContext: Context? = null var iTaxiLoginCallback: ITaxiLoginCallback? = null - private var mLongitude = 0.0 - private var mLatitude = 0.0 fun init(context: Context) { mContext = context.applicationContext - // 达到起始站围栏监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) } fun hasInit(): Boolean { @@ -46,13 +40,6 @@ object OchCommonLoginModel : IMoGoChassisLocationGCJ02Listener { return true } - override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) { - gnssInfo?.let { - mLongitude = it.longitude - mLatitude = it.latitude - } - } - fun getiTaxiLoginCallback(): ITaxiLoginCallback? { return iTaxiLoginCallback } @@ -64,8 +51,6 @@ object OchCommonLoginModel : IMoGoChassisLocationGCJ02Listener { fun release() { mContext = null iTaxiLoginCallback = null - // 注销到达起始站围栏监听 - CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) } /** @@ -105,7 +90,8 @@ object OchCommonLoginModel : IMoGoChassisLocationGCJ02Listener { fun gotoLogin(phone: String, code: String) { mContext?.let { - val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) + val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + val location4Login = TaxiLoginReqBean.Location4Login(location.latitude, location.longitude) OchCommonServiceManager.gotoLoginBycode(it, phone, code, location4Login, object : OchCommonServiceCallback { override fun onSuccess(data: TaxiLoginRespBean?) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/DriverMoFangFunctionManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/DriverMoFangFunctionManager.kt new file mode 100644 index 0000000000..6b4d5a6194 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/DriverMoFangFunctionManager.kt @@ -0,0 +1,76 @@ +package com.mogo.och.common.module.manager + +import android.annotation.SuppressLint +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendOperatorSetAcceleratedSpeed +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendOperatorSetHorn +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import java.util.* + + +/** + * 魔方连接状态和设备管理 + */ +@SuppressLint("StaticFieldLeak") +class DriverMoFangFunctionManager private constructor() { + + companion object { + val driverMoFangFunctionManager: DriverMoFangFunctionManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DriverMoFangFunctionManager() + } + } + + private val TAG = "DriverMoFangFunctionManager" + private var timerHorn: Timer? = null + private var timerAcc: Timer? = null + /** + * 发送加速和减速,复位的时候,isSend为false,其他都是true,acc就是具体的值 + * acc -1 是减速, -2是刹停 0是复位时候传 + */ + @Synchronized + fun sendAcc(isSend: Boolean, acc: Double) { + if (isSend) { + if (timerAcc == null) { + timerAcc = Timer() + timerAcc!!.schedule(object : TimerTask() { + override fun run() { + d(SceneConstant.M_CHARTER_D + TAG,"sendOperatorSetAcceleratedSpeed $isSend $acc") + sendOperatorSetAcceleratedSpeed(acc) + } + }, 0, 500) + } + } else { + if (timerAcc != null) { + timerAcc!!.cancel() + timerAcc = null + } + d(SceneConstant.M_CHARTER_D + TAG,"sendOperatorSetAcceleratedSpeed $isSend $acc") + sendOperatorSetAcceleratedSpeed(acc) + } + } + + fun reset(){ + d(SceneConstant.M_CHARTER_D + TAG,"sendAcc false 0.0") + sendAcc(false,0.0) + } + + /** + * 鸣笛,鸣笛需要手动结束 + */ + fun sendOperatorSetHornByDriver(){ + d(SceneConstant.M_CHARTER_D + TAG,"sendOperatorSetHorn(1.0)") + sendOperatorSetHorn(1.0) + if (timerHorn == null) { + timerHorn = Timer() + } + timerHorn!!.schedule(object : TimerTask() { + override fun run() { + d(SceneConstant.M_CHARTER_D + TAG,"sendOperatorSetHorn(2.0)") + sendOperatorSetHorn(2.0) + timerHorn = null + } + }, 500) + } + +} + diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/LanSocketManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/LanSocketManager.kt new file mode 100644 index 0000000000..4e07bf5b0f --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/LanSocketManager.kt @@ -0,0 +1,29 @@ +package com.mogo.och.common.module.manager + +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +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.GsonUtils +import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg +import com.mogo.och.common.module.biz.constant.OchCommonConst + +object LanSocketManager { + private const val TAG = "LanSocket" + fun sendMsgToClient(msg: BaseDPMsg?) { + CallerLogger.d(SceneConstant.M_CHARTER_D + TAG, "sendMsgToClient" + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToAllClients( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + fun sendMsgToServer(msg: BaseDPMsg?) { + CallerLogger.d(SceneConstant.M_CHARTER_D + TAG, "sendMsgToServer" + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHPlanningStopSideStatusManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/StopSideStatusManager.kt similarity index 99% rename from OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHPlanningStopSideStatusManager.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/StopSideStatusManager.kt index 16c1c0a2a9..e0f6e39b0a 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHPlanningStopSideStatusManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/StopSideStatusManager.kt @@ -7,7 +7,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import mogo.telematics.pad.MessagePad import java.util.concurrent.ConcurrentHashMap -object OCHPlanningStopSideStatusManager : IMoGoAutopilotPlanningActionsListener { +object StopSideStatusManager : IMoGoAutopilotPlanningActionsListener { private const val TAG = "OCHPlanningActionsManager" init { 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/LightAirconditionDoorCallback.kt new file mode 100644 index 0000000000..69e1292ef4 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorCallback.kt @@ -0,0 +1,26 @@ +package com.mogo.och.common.module.manager.devicemanage + +import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus +import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue +import com.mogo.och.common.module.manager.devicemanage.data.LightStatus + +interface LightAirconditionDoorCallback { + + fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, + isFirst: Boolean) { + } + + fun onHeaterStatusCallback(airconditionIsOpen: Boolean, heaterStatue: HeaterStatue, + isFirst: Boolean) { + } + + fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) {} + + fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) { + } + + fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {} + + fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {} + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt new file mode 100644 index 0000000000..01262dba66 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt @@ -0,0 +1,76 @@ +package com.mogo.och.common.module.manager.devicemanage + +import com.mogo.commons.voice.AIAssist +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg +import com.mogo.och.common.module.manager.LanSocketManager +import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.common.module.voice.VoiceNotice +import io.reactivex.disposables.Disposable + +object LightAirconditionDoorManager { + private const val TAG = "LightAirconditionDoorManager" + + private var dooorSubscribe: Disposable? = null + private var doorStatusSubscribe: Disposable? = null + + fun go2OpenDoor(go2Open:Boolean){ + val canOpenOrCloseDoor = canOpenOrCloseDoor() + if(!canOpenOrCloseDoor.isNullOrBlank()){ + ToastUtils.showLong(canOpenOrCloseDoor) + return + } + RxUtils.disposeSubscribe(dooorSubscribe) + dooorSubscribe = RxUtils.createSubscribe(1000) { + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) + } + if(go2Open) { + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1) + }else{ + CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2) + } + RxUtils.disposeSubscribe(doorStatusSubscribe) + doorStatusSubscribe = RxUtils.createSubscribe(6000) { + if (LightAirconditionDoorStatusManager.doorStatus.isOpen) { + if(!go2Open) {// 关门失败 + ToastUtils.showShort("车辆系统繁忙,稍后再试试吧~") + VoiceNotice.showNotice( + "车辆系统繁忙,稍后再试试吧~", + AIAssist.LEVEL0 + ) + sendMsg2Server("车门关闭失败") + } + }else{ + if(go2Open) {//开门失败 + ToastUtils.showShort("车辆系统繁忙,稍后再试试吧~") + VoiceNotice.showNotice( + "车辆系统繁忙,稍后再试试吧~", + AIAssist.LEVEL0 + ) + sendMsg2Server("车门开启失败") + } + } + } + } + + private fun sendMsg2Server(msg:String){ + val appConnectMsg = AppConnectMsg( + isViewShow = true, + isPlay = false, + msg = msg, + boxType = 3 + ) + LanSocketManager.sendMsgToServer(appConnectMsg) + } + + private fun canOpenOrCloseDoor(): String? { + val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + return if(location.gnssSpeed<0.01){ + null + }else{ + "车辆行驶中不可以开关门哦~" + } + } +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHM1LightAirconditionDoorStatusManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt similarity index 76% rename from OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHM1LightAirconditionDoorStatusManager.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt index a6057afea8..9f514b0204 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHM1LightAirconditionDoorStatusManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorStatusManager.kt @@ -1,11 +1,15 @@ -package com.mogo.och.common.module.manager +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.data.AirconditionStatus +import com.mogo.och.common.module.manager.devicemanage.data.DoorStatus +import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue +import com.mogo.och.common.module.manager.devicemanage.data.LightStatus import java.util.concurrent.ConcurrentHashMap -object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListener { +object LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListener { private const val TAG = "OCHM1LightAirconditionDoorStatusManager" init { @@ -13,7 +17,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen CallerRoboBusJinlvM1StatesListenerManager.setListenerHz(TAG,5) } - val M_LISTENERS: ConcurrentHashMap = + val M_LISTENERS: ConcurrentHashMap = ConcurrentHashMap() val airconditionStatus = AirconditionStatus(false, 0, 26, 2) @@ -23,7 +27,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen fun addListener( tag: String, - listener: OCHM1LightAirconditionDoorCallback + listener: LightAirconditionDoorCallback ) { if (M_LISTENERS.containsKey(tag)) { return @@ -47,7 +51,7 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen * 删除监听 * @param listener 要删除的监听对象 */ - fun removeListener(listener: OCHM1LightAirconditionDoorCallback) { + fun removeListener(listener: LightAirconditionDoorCallback) { if (!M_LISTENERS.containsValue(listener)) { return } @@ -58,36 +62,6 @@ object OCHM1LightAirconditionDoorStatusManager : IMoGoRoboBusJinlvM1StatesListen } } - - interface OCHM1LightAirconditionDoorCallback { - - fun onAirconditionStatusCallback(heaterIsOpen:Boolean,airconditionStatus: AirconditionStatus,isFirst: Boolean){} - - fun onHeaterStatusCallback(airconditionIsOpen: Boolean,heaterStatue: HeaterStatue,isFirst: Boolean){} - - fun onDoorStatusCallback(isOpen: Boolean,isFirst: Boolean){} - - fun onLightTop1Callback(lightStatus: LightStatus,isFirst: Boolean){} - fun onLightTop2Callback(lightStatus: LightStatus,isFirst: Boolean){} - fun onLightAtmosphereCallback(lightStatus: LightStatus,isFirst: Boolean){} - - } - - data class AirconditionStatus( - var isOpen: Boolean, - var pattert: Int, - var temperature: Int, - var windSpeed: Int - ) - - data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int) - data class DoorStatus(var isOpen: Boolean) - data class LightStatus( - var isOpenLight1: Boolean, - var isOpenLight2: Boolean, - var isOpenatmosphere: Boolean - ) - override fun onRoboBusJinlvM1States(states: VehicleStateOuterClass.RoboBusJinlvM1State) { val airConditionerState = states.airConditionerState val heaterState = states.heaterState diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/AirconditionStatus.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/AirconditionStatus.kt new file mode 100644 index 0000000000..31bc8a474a --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/AirconditionStatus.kt @@ -0,0 +1,8 @@ +package com.mogo.och.common.module.manager.devicemanage.data + +data class AirconditionStatus( + var isOpen: Boolean, + var pattert: Int, + var temperature: Int, + var windSpeed: Int +) 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 new file mode 100644 index 0000000000..370f8a5dac --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/DoorStatus.kt @@ -0,0 +1,3 @@ +package com.mogo.och.common.module.manager.devicemanage.data + +data class DoorStatus(var isOpen: Boolean) \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/HeaterStatue.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/HeaterStatue.kt new file mode 100644 index 0000000000..80d2ef5690 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/HeaterStatue.kt @@ -0,0 +1,3 @@ +package com.mogo.och.common.module.manager.devicemanage.data + +data class HeaterStatue(var isOpen: Boolean, var windSpeed: Int) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/LightStatus.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/LightStatus.kt new file mode 100644 index 0000000000..69f047a7cf --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/data/LightStatus.kt @@ -0,0 +1,7 @@ +package com.mogo.och.common.module.manager.devicemanage.data + +data class LightStatus( + var isOpenLight1: Boolean, + var isOpenLight2: Boolean, + var isOpenatmosphere: Boolean +) \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/BlinkAnimationUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/BlinkAnimationUtil.java index 02c67cf910..a860a9d7e9 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/BlinkAnimationUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/BlinkAnimationUtil.java @@ -22,8 +22,8 @@ public class BlinkAnimationUtil { AnimatorSet animationSet = new AnimatorSet(); imageView.setTag(imageView.getId(),animationSet); - ObjectAnimator valueAnimator = ObjectAnimator.ofFloat(imageView, "alpha",0f, 1.0f); - ObjectAnimator valueAnimatorDisappare = ObjectAnimator.ofFloat(imageView, "alpha",1.0f, 0f); + ObjectAnimator valueAnimator = ObjectAnimator.ofFloat(imageView, "alpha",0.3f, 1.0f); + ObjectAnimator valueAnimatorDisappare = ObjectAnimator.ofFloat(imageView, "alpha",1.0f, 0.3f); valueAnimator.setDuration(1000); valueAnimatorDisappare.setDuration(800); diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java index df36d2f672..c4c38034c1 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java @@ -14,6 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import kotlin.Triple; import mogo.telematics.pad.MessagePad; /** @@ -69,6 +70,104 @@ public class CoordinateCalculateRouteUtil { return sumLength; } + public static float calculateRouteSumLength(List mRoutePoints, MogoLocation location, MogoLocation station){ + if (null == mRoutePoints || mRoutePoints.size() == 0) return 0; + + float lastSumLength = 0f; + + //当前位置距离轨迹中最近的点 + int currentRouteIndex = getArrivedPointIndexNew( + 0, mRoutePoints, location.getLongitude(), location.getLatitude() + ); + // 距离当前位置轨迹中最近的轨迹点坐标 + MogoLocation currentPoint = mRoutePoints.get(currentRouteIndex); + // 当前位置距离最近的点的距离 + float calculateCurrentdex = CoordinateUtils.calculateLineDistance( + location.getLongitude(), location.getLatitude(), + currentPoint.getLongitude(), currentPoint.getLatitude() + ); + + + //要前往的站在轨迹中对应的点 + int stationPointInRouteIndex = getArrivedPointIndexNew( + currentRouteIndex, mRoutePoints, + station.getLongitude(), + station.getLatitude() + ); + // 距离站点最近的轨迹点 + MogoLocation stationPointInRoute = mRoutePoints.get(stationPointInRouteIndex); + // 站点距离轨迹中最近点的距离 + float calculateLineDistance = CoordinateUtils.calculateLineDistance( + stationPointInRoute.getLongitude(), stationPointInRoute.getLatitude(), + station.getLongitude(), station.getLatitude() + ); + + if (currentRouteIndex < stationPointInRouteIndex) { + // subList 是[) 需要的是[] + List subList = mRoutePoints.subList(currentRouteIndex, stationPointInRouteIndex + 1); + // 轨迹点所有的距离 + lastSumLength = calculateRouteSumLength(subList); + // region 站点坐标和 站点坐标对应轨迹点的坐标距离 + // 需要加距离 和下一个轨迹点成钝角 + if (stationPointInRouteIndex + 1 < mRoutePoints.size()) { + MogoLocation lastPointsNext = mRoutePoints.get(stationPointInRouteIndex + 1); + double degree = getDegree( + station.getLongitude(),station.getLatitude(), + stationPointInRoute.getLongitude(), stationPointInRoute.getLatitude(), + lastPointsNext.getLongitude(), lastPointsNext.getLatitude()); + if (degree > 90) { + lastSumLength = lastSumLength + calculateLineDistance; + } + } + // 需要减距离 和上一个轨迹点成钝角 + if (stationPointInRouteIndex - 1 >= 0) { + MogoLocation lastPointsPre = mRoutePoints.get(stationPointInRouteIndex - 1); + double degree = getDegree( + station.getLongitude(),station.getLatitude(), + stationPointInRoute.getLongitude(), stationPointInRoute.getLatitude(), + lastPointsPre.getLongitude(), lastPointsPre.getLatitude()); + if (degree > 90) { + lastSumLength = lastSumLength - calculateLineDistance; + } + } + // endregion + + // region 当前位置和 对应轨迹点的坐标距离 + // 需要加距离 和下一个轨迹点成钝角 + if (currentRouteIndex + 1 < stationPointInRouteIndex) { + MogoLocation currentPointsNext = mRoutePoints.get(currentRouteIndex + 1); + double degree = getDegree( + location.getLongitude(),location.getLatitude(), + currentPoint.getLongitude(), currentPoint.getLatitude(), + currentPointsNext.getLongitude(), currentPointsNext.getLatitude()); + if (degree > 90) { + lastSumLength = lastSumLength - calculateCurrentdex; + } + } + + // 需要减距离 和上一个轨迹点成钝角 + if (currentRouteIndex - 1 >= 0) { + MogoLocation lastPointsPre = mRoutePoints.get(currentRouteIndex - 1); + double degree = getDegree( + location.getLongitude(),location.getLatitude(), + currentPoint.getLongitude(), currentPoint.getLatitude(), + lastPointsPre.getLongitude(), lastPointsPre.getLatitude()); + if (degree > 90) { + lastSumLength = lastSumLength + calculateCurrentdex; + } + } + // endregion + + } else { + MogoLocation lastPoints = mRoutePoints.get(stationPointInRouteIndex); + lastSumLength = CoordinateUtils.calculateLineDistance( + lastPoints.getLongitude(), lastPoints.getLatitude(), + location.getLongitude(), location.getLatitude() + ); + } + return lastSumLength; + } + public static List coordinateConverterWgsToGcjListCommon(Context mContext, List models) { //转成MogoLatLng集合 List list = new ArrayList<>(); @@ -327,6 +426,16 @@ public class CoordinateCalculateRouteUtil { return currentIndex; } + /** + * https://blog.csdn.net/Jeanne_0523/article/details/106056255 + * @param vertexPointX + * @param vertexPointY + * @param point0X 角 + * @param point0Y 角 + * @param point1X + * @param point1Y + * @return + */ public static int getDegree(double vertexPointX, double vertexPointY, double point0X, double point0Y, double point1X, double point1Y) { //向量的点乘 double vector = (point0X - vertexPointX) * (point1X - vertexPointX) + (point0Y - vertexPointY) * (point1Y - vertexPointY); @@ -340,4 +449,56 @@ public class CoordinateCalculateRouteUtil { //弧度转角度制 return (int) (180 * radian / Math.PI); } + + + private static Triple ball2xyz(Double thera,Double fie,Double r){ + double x = r * Math.cos(thera) * Math.cos(fie); + double y = r * Math.cos(thera) * Math.sin(fie); + double z = r * Math.sin(thera); + return new Triple(x,y,z); + } + + /** + * https://blog.csdn.net/reborn_lee/article/details/82497577 + * 将地理经纬度转换成笛卡尔坐标系 + */ + private static Triple geo2xyz(double lat,double lng){ + double thera = (Math.PI * lat) / 180; + double fie = (Math.PI * lng) / 180; + return ball2xyz(thera, fie,6400.0); + } + + /** + * 计算3个地理坐标点之间的夹角 + * @param l1 顶点坐标 + * @param l2 + * @param l3 + * @return l1为顶点的角度 精度没有angleOflocation高 + */ + public static double getDegree(LatLng l2,LatLng l1,LatLng l3) { + Triple p1 = geo2xyz(l1.latitude,l1.longitude); + Triple p2 = geo2xyz(l2.latitude,l2.longitude); + Triple p3 = geo2xyz(l3.latitude,l3.longitude); + + double x1 = p1.getFirst(); + double y1 = p1.getSecond(); + double z1 = p1.getThird(); + + double x2 = p2.getFirst(); + double y2 = p2.getSecond(); + double z2 = p2.getThird(); + + double x3 = p3.getFirst(); + double y3 = p3.getSecond(); + double z3 = p3.getThird(); + + // 计算向量 P2P1 和 P2P3 的夹角 https://www.zybang.com/question/3379a30c0dd3041b3ef966803f0bf758.html + double p1P2 = Math.sqrt(Math.pow(x2 - x1,2.0) + Math.pow(y2 - y1,2.0) + Math.pow(z2 - z1,2.0)); + double p2p3 = Math.sqrt(Math.pow(x3 - x2,2.0) + Math.pow(y3 - y2,2.0) + Math.pow(z3 - z2,2.0)); + + double p = (x1 - x2) * (x3 - x2) + (y1 - y2) * (y3 - y2) + (z1 - z2) * (z3 - z2); //P2P1*P2P3 + + return (Math.acos(p / (p1P2 * p2p3)) / Math.PI) * 180; + } + } 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 37550ad892..3b8465e65f 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 @@ -110,4 +110,43 @@ public class DateTimeUtil { calendar.set(Calendar.SECOND,0); return calendar.getTimeInMillis(); } + + public static String getAfterSecondTime(int timeInSecond,String formate){ + Calendar beforeTime = Calendar.getInstance(); + beforeTime.add(Calendar.SECOND, timeInSecond); + return formatCalendarToString(beforeTime, formate); + } + public static String getAfterSecondTime(int timeInSecond){ + Calendar beforeTime = Calendar.getInstance(); + beforeTime.add(Calendar.SECOND, timeInSecond); + return formatCalendarToString(beforeTime, DateTimeUtil.HH_mm); + } + + /** + * @param second 秒 + * @description: 秒转换为时分秒 HH:mm:ss 格式 仅当小时数大于0时 展示HH + */ + public static String second2Time(Long second) { + if (second == null || second < 0) { + return "00:00"; + } + + long h = second / 3600; + long m = (long) Math.ceil((second % 3600) / 60.0);// 向上取整 + long s = second % 60; + StringBuilder stringBuffer = new StringBuilder(); + if(m==60){ + m=0; + h = h+1; + } + if (h > 0) { + stringBuffer.append(h < 10 ? ("0" + h) : h).append(":"); + }else { + stringBuffer.append("00:"); + } + stringBuffer.append(m < 10 ? ("0" + m) : m); + //str += (s < 10 ? ("0" + s) : s); + return stringBuffer.toString(); + + } } diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/RxUtils.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt similarity index 95% rename from OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/RxUtils.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt index 9f3e691023..cb6cbd7dbd 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/utils/RxUtils.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/RxUtils.kt @@ -1,4 +1,4 @@ -package com.mogo.och.bus.passenger.utils +package com.mogo.och.common.module.utils import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/DriverMoFangFunctionView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/DriverMoFangFunctionView.kt new file mode 100644 index 0000000000..788f31e491 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/DriverMoFangFunctionView.kt @@ -0,0 +1,48 @@ +package com.mogo.och.common.module.wigets + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.och.common.module.R +import com.mogo.och.common.module.manager.DriverMoFangFunctionManager +import kotlinx.android.synthetic.main.driver_mofang_function_view.view.* + +/** + * @author: wangmingjun + * @date: 2023/4/20 + */ +class DriverMoFangFunctionView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null +) : ConstraintLayout(context, attrs) { + init { + LayoutInflater.from(context).inflate(R.layout.driver_mofang_function_view,this,true) + initClickEvent() + } + + private fun initClickEvent() { + moderateIv.onClick { + DriverMoFangFunctionManager.driverMoFangFunctionManager.sendAcc(true,-1.0) + } + + brakeStopIv.onClick { + DriverMoFangFunctionManager.driverMoFangFunctionManager.sendAcc(true,-2.0) + } + + resetIv.onClick { + DriverMoFangFunctionManager.driverMoFangFunctionManager.reset() + } + + whistleIv.onClick { + DriverMoFangFunctionManager.driverMoFangFunctionManager.sendOperatorSetHornByDriver() + } + + whistleIv.setOnLongClickListener { + DriverMoFangFunctionManager.driverMoFangFunctionManager.sendOperatorSetHornByDriver() + true + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java index 22702e5ee9..a69aeadc7d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHBorderShadowLayout.java @@ -85,7 +85,7 @@ public class OCHBorderShadowLayout extends LinearLayout { public OCHBorderShadowLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - this.setLayerType(LAYER_TYPE_SOFTWARE, null);//取消硬件加速 +// this.setLayerType(LAYER_TYPE_SOFTWARE, null);//取消硬件加速 TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ShadowLayout); shadowColor = typedArray.getColor(R.styleable.ShadowLayout_shadowColor, Color.BLUE); blurRadius = typedArray.getDimension(R.styleable.ShadowLayout_blurRadius, SHADOW_DEFAULT_BLUR_RADIUS); diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHCommitDialog.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHCommitDialog.kt index 835c82411a..1d546fe19e 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHCommitDialog.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHCommitDialog.kt @@ -1,10 +1,21 @@ package com.mogo.och.common.module.wigets import android.content.Context +import android.view.View +import android.view.animation.Animation +import android.view.animation.AnimationUtils +import android.view.animation.LinearInterpolator import android.widget.TextView +import androidx.appcompat.widget.AppCompatImageView import androidx.lifecycle.LifecycleObserver import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.R +import io.reactivex.Observable +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers +import kotlinx.android.synthetic.main.dialog_bus_commit.* +import java.util.concurrent.TimeUnit /** * 带有title, tip,confirm,cancel的dialog @@ -15,14 +26,30 @@ class OCHCommitDialog: BaseFloatDialog, LifecycleObserver { private var commonCancel : TextView? = null private var commonTitle : TextView? = null private var commonTips : TextView? = null + private var countDownTxt: TextView? = null + private var countdownRotateIv: AppCompatImageView? = null private var clickListener: ClickListener? = null + private var subscribeCountDown: Disposable? = null + + private var mCountdownValue: Int = 0 + constructor(builder: Builder,context: Context) : super(context) { commonTitle?.text = builder.titleStr commonTips?.text = builder.tipsStr commonCancel?.text = builder.cancelStr commonConfirm?.text = builder.confirmStr + countDownTxt?.text = builder.countDownValue.toString() + mCountdownValue = builder.countDownValue + + if (mCountdownValue > 0){ + countDownTxt?.visibility = View.VISIBLE + countdownRotateIv?.visibility = View.VISIBLE + }else{ + countDownTxt?.visibility = View.GONE + countdownRotateIv?.visibility = View.GONE + } } init{ @@ -34,6 +61,8 @@ class OCHCommitDialog: BaseFloatDialog, LifecycleObserver { commonCancel = findViewById(R.id.common_cancel) commonTitle = findViewById(R.id.common_title) commonTips = findViewById(R.id.common_tips) + countDownTxt = findViewById(R.id.sec_count_down) + countdownRotateIv = findViewById(R.id.count_down_rotate_iv) commonConfirm?.setOnClickListener{ clickListener?.confirm() @@ -54,11 +83,64 @@ class OCHCommitDialog: BaseFloatDialog, LifecycleObserver { fun cancel() } + override fun onAttachedToWindow() { + super.onAttachedToWindow() + if (mCountdownValue > 0){ + startCountDown() + } + } + + private fun startCountDown() { + subscribeCountDown?.let { + if (!it.isDisposed) { + it.dispose() + } + } + val mAnimation: Animation = AnimationUtils.loadAnimation(context, R.anim.count_down_rotate) + val lin = LinearInterpolator() + mAnimation.interpolator = lin + countdownRotateIv?.startAnimation(mAnimation) + + subscribeCountDown = Observable.intervalRange(0L + , mCountdownValue.toLong(), 0, 1, TimeUnit.SECONDS) + .map { aLong -> mCountdownValue - aLong } + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe { + UiThreadHandler.post { + mCountdownValue -= 1 + countDownTxt?.text = mCountdownValue.toString() + if (mCountdownValue == 0){ + mAnimation.cancel() + countdownRotateIv?.clearAnimation() + countDownTxt?.visibility = View.GONE + countdownRotateIv?.visibility = View.GONE + dialogCancel() + } + } + } + } + + private fun dialogCancel() { + clickListener?.cancel() + dismiss() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + subscribeCountDown?.let { + if (!it.isDisposed) { + it.dispose() + } + } + } + class Builder{ var titleStr:String = "" var tipsStr:String = "" var confirmStr:String = "" var cancelStr:String = "" + var countDownValue: Int = 0 fun title(title: String) : Builder{ this.titleStr = title @@ -75,6 +157,14 @@ class OCHCommitDialog: BaseFloatDialog, LifecycleObserver { return this } + /** + * 不传倒计时没有, >0 有倒计时 + */ + fun countdownValue(value: Int): Builder{ + this.countDownValue = value + return this + } + fun cancelStr(cancel: String) : Builder{ this.cancelStr = cancel return this diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHRoundConstraintLayout.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHRoundConstraintLayout.java index 5280174fd2..15228f5970 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHRoundConstraintLayout.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHRoundConstraintLayout.java @@ -21,19 +21,19 @@ import com.mogo.och.common.module.R; * desc : * version: 1.0 */ -public class OCHRoundConstraintLayout extends ConstraintLayout implements GestureDetector.OnGestureListener { +public class OCHRoundConstraintLayout extends ConstraintLayout { private float roundLayoutRadius = 14f; private Path roundPath; private RectF rectF; // 上次滑动的坐标 - private int mLastXIntercept; - private int mLastYIntercept; +// private int mLastXIntercept; +// private int mLastYIntercept; private IScrollListener mScrollListener; - private GestureDetector mDetector; +// private GestureDetector mDetector; public OCHRoundConstraintLayout(Context context) { this(context, null); @@ -57,7 +57,7 @@ public class OCHRoundConstraintLayout extends ConstraintLayout implements Gestur setWillNotDraw(false);//如果你继承的是ViewGroup,注意此行,否则draw方法是不会回调的; roundPath = new Path(); rectF = new RectF(); - mDetector = new GestureDetector(getContext(), this); +// mDetector = new GestureDetector(getContext(), this); } private void setRoundPath() { @@ -92,72 +92,42 @@ public class OCHRoundConstraintLayout extends ConstraintLayout implements Gestur super.draw(canvas); } - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - boolean intercepted = false; - int x = (int) ev.getX(); - int y = (int) ev.getY(); - switch (ev.getAction()) { - case MotionEvent.ACTION_MOVE: - int deltaX = x - mLastXIntercept; - int deltaY = y - mLastYIntercept; - if (Math.abs(deltaX) > Math.abs(deltaY)) { - intercepted = true; - } - break; - default: - break; - } - mLastXIntercept = x; - mLastYIntercept = y; - return intercepted; - } +// @Override +// public boolean onDown(MotionEvent e) { +// return true; +// } +// +// @Override +// public void onShowPress(MotionEvent e) { +// } - @Override - public boolean onTouchEvent(MotionEvent event) { - if (mDetector != null) { - return mDetector.onTouchEvent(event); - } else { - return super.onTouchEvent(event); - } - } +// @Override +// public boolean onSingleTapUp(MotionEvent e) { +// return true; +// } +// +// @Override +// public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { +// return true; +// } - @Override - public boolean onDown(MotionEvent e) { - return true; - } - - @Override - public void onShowPress(MotionEvent e) { - } - - @Override - public boolean onSingleTapUp(MotionEvent e) { - return true; - } - - @Override - public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { - return true; - } - - @Override - public void onLongPress(MotionEvent e) { - } - - @Override - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - if (e2 != null) { - float deltaX = e2.getX() - (e1 != null ? e1.getX() : 0f); - float deltaY = e2.getY() - (e1 != null ? e1.getY() : 0f); - if (Math.abs(deltaX) > Math.abs(deltaY)) { - if (mScrollListener != null) { - mScrollListener.onScroll(velocityX < 0); - } - } - } - return true; - } +// @Override +// public void onLongPress(MotionEvent e) { +// } +// +// @Override +// public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { +// if (e2 != null) { +// float deltaX = e2.getX() - (e1 != null ? e1.getX() : 0f); +// float deltaY = e2.getY() - (e1 != null ? e1.getY() : 0f); +// if (Math.abs(deltaX) > Math.abs(deltaY)) { +// if (mScrollListener != null) { +// mScrollListener.onScroll(velocityX < 0); +// } +// } +// } +// return true; +// } public interface IScrollListener { void onScroll(boolean isNextPage); diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt index 200ebaea1c..b61739f75b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt @@ -12,9 +12,8 @@ import androidx.viewpager.widget.PagerAdapter import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions -import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean -import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload -import com.mogo.eagle.core.utilcode.breakpoint.utils.DownloadUtils +import com.mogo.eagle.core.utilcode.download.* +import com.mogo.eagle.core.utilcode.download.callback.* import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant @@ -154,8 +153,7 @@ class AdvanceVideoView @JvmOverloads constructor( Logger.d(ImageVideoRotationView.TAG, "startDownLoadVideo") FileUtils.createFileDir(mVideoDirPath) DownloadUtils.downLoad( - context, fileNetPath, mVideoDirPath, downloadVideoName, 5, downListener - ) + context, fileNetPath!!, mVideoDirPath!!, downloadVideoName, downListener) } fun startPlay(localVideoPath: String?) { @@ -196,40 +194,33 @@ class AdvanceVideoView @JvmOverloads constructor( } } - private val downListener = object : IDownload { - override fun onStart(url: String?) { + private val downListener = object : IDownloadListener { + + override fun onStart(url: String) { setCacheImageViewVisible() Logger.d(ImageVideoRotationView.TAG, "download-onStart") } - override fun onPause(url: String?, threadBean: ThreadBean?) { - Logger.d(ImageVideoRotationView.TAG, "download-onPause") -// UiThreadHandler.postDelayed(Runnable { -// startDownLoadVideo() -// },DOWNLOAD_DELAY) - // todo 测试下网络断掉是否会走onpause,且网络回复也不会继续下载 + override fun onProgress(url: String, downloaded: Long, total: Long) { + Logger.d(ImageVideoRotationView.TAG, "download-onProgress== ${ (downloaded * 100 / total).toInt() }") } - override fun onProgress(url: String?, length: Int) { - Logger.d(ImageVideoRotationView.TAG, "download-onProgress== $length") - } - - override fun onFinished(url: String?, threadBean: ThreadBean?) { + override fun onFinished(url: String, path: String) { Logger.d(ImageVideoRotationView.TAG, "download-onFinished = $url") - if (url.equals(fileNetPath)) { //发现下载工具在断网又连网后,已完成的任务又都下载,跳转播放出现问题 + if (url == fileNetPath) { //发现下载工具在断网又连网后,已完成的任务又都下载,跳转播放出现问题 //下载完成 ThreadUtils.runOnUiThread { - startPlay(Uri.fromFile(File(mVideoDirPath + downloadVideoName)).toString()) + startPlay(Uri.fromFile(File(path)).toString()) } } else {//如果当前文件不存在再次去下载当前的 Logger.d( ImageVideoRotationView.TAG, "download-onFinished = not current" + ",currentUrl = $fileNetPath " ) - if (FileUtils.isFileExists(mVideoDirPath + downloadVideoName)) { + if (FileUtils.isFileExists(path)) { Logger.d(ImageVideoRotationView.TAG, "have download startPlay") ThreadUtils.runOnUiThread { - startPlay(Uri.fromFile(File(mVideoDirPath + downloadVideoName)).toString()) + startPlay(Uri.fromFile(File(path)).toString()) } return } else { @@ -238,14 +229,10 @@ class AdvanceVideoView @JvmOverloads constructor( } } - override fun onError(url: String?, errorMsg: String?) { - Logger.d(ImageVideoRotationView.TAG, "download-onError-$errorMsg") + override fun onError(url: String, error: String?) { + Logger.d(ImageVideoRotationView.TAG, "download-onError-$error") //出错再次下载 - if (errorMsg != null) { - if (errorMsg.startsWith("initFailed")) { - startDownLoadVideo() - } - } + startDownLoadVideo() } } } diff --git a/OCH/mogo-och-common-module/src/main/res/anim/count_down_rotate.xml b/OCH/mogo-och-common-module/src/main/res/anim/count_down_rotate.xml new file mode 100644 index 0000000000..cd58374b98 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/anim/count_down_rotate.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/brake_stop.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/brake_stop.png new file mode 100644 index 0000000000..ba8d48e24a Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/brake_stop.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/brake_stop_un.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/brake_stop_un.png new file mode 100644 index 0000000000..1728ad0b4a Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/brake_stop_un.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/count_down_bg.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/count_down_bg.png new file mode 100644 index 0000000000..8d3650e9ba Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/count_down_bg.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/count_down_rotate_bg.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/count_down_rotate_bg.png new file mode 100644 index 0000000000..9f33e0d8dd Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/count_down_rotate_bg.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/driver_mofang_function_bg.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/driver_mofang_function_bg.png new file mode 100644 index 0000000000..b0c8eb25ba Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/driver_mofang_function_bg.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/moderate.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/moderate.png new file mode 100644 index 0000000000..1cf6ad1798 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/moderate.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/moderate_un.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/moderate_un.png new file mode 100644 index 0000000000..a477bcd438 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/moderate_un.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/reset_icon.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/reset_icon.png new file mode 100644 index 0000000000..65884ac663 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/reset_icon.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/reset_un_icon.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/reset_un_icon.png new file mode 100644 index 0000000000..4e4cf034ba Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/reset_un_icon.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/whistle.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/whistle.png new file mode 100644 index 0000000000..b820701bb9 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/whistle.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/whistle_un.png b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/whistle_un.png new file mode 100644 index 0000000000..ae7623ede6 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-nodpi/whistle_un.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable/brake_stop_btn_selector.xml b/OCH/mogo-och-common-module/src/main/res/drawable/brake_stop_btn_selector.xml new file mode 100644 index 0000000000..e84f3b901b --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/drawable/brake_stop_btn_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/drawable/moderate_btn_selector.xml b/OCH/mogo-och-common-module/src/main/res/drawable/moderate_btn_selector.xml new file mode 100644 index 0000000000..35d7ad314d --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/drawable/moderate_btn_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/drawable/reset_btn_selector.xml b/OCH/mogo-och-common-module/src/main/res/drawable/reset_btn_selector.xml new file mode 100644 index 0000000000..712f8a123a --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/drawable/reset_btn_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/drawable/whistle_btn_selector.xml b/OCH/mogo-och-common-module/src/main/res/drawable/whistle_btn_selector.xml new file mode 100644 index 0000000000..def73512fa --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/drawable/whistle_btn_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/layout/dialog_bus_commit.xml b/OCH/mogo-och-common-module/src/main/res/layout/dialog_bus_commit.xml index 6eb23e17ce..355b6a4a3f 100644 --- a/OCH/mogo-och-common-module/src/main/res/layout/dialog_bus_commit.xml +++ b/OCH/mogo-och-common-module/src/main/res/layout/dialog_bus_commit.xml @@ -2,11 +2,35 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/values/strings.xml b/OCH/mogo-och-common-module/src/main/res/values/strings.xml index 5aed40ce2e..132b2e8eb1 100644 --- a/OCH/mogo-och-common-module/src/main/res/values/strings.xml +++ b/OCH/mogo-och-common-module/src/main/res/values/strings.xml @@ -23,7 +23,7 @@ The next station is %1$s 전방에서 역에 도착하는 %1$s - 距离包车结束剩余5分钟,请您合理安排游玩时间 + 5分钟后包车就要结束了,稍后小助手会自动为您寻找停车点 There are 5 minutes left from the end of chartering. Please arrange your time reasonably 전세버스 종료 후 5분 남았습니다. 여행 시간을 합리적으로 안배해 주십시오 diff --git a/OCH/mogo-och-data/build.gradle b/OCH/mogo-och-data/build.gradle index 6947c919ef..ae9cbd0b40 100644 --- a/OCH/mogo-och-data/build.gradle +++ b/OCH/mogo-och-data/build.gradle @@ -4,12 +4,9 @@ plugins { } android { - compileSdkVersion 31 - + compileSdkVersion rootProject.ext.android.compileSdkVersion defaultConfig { - minSdkVersion 23 - targetSdkVersion 31 - + minSdkVersion rootProject.ext.android.minSdkVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" } diff --git a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java index 20baf93478..12fac3ad93 100644 --- a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java +++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java @@ -109,7 +109,7 @@ public class BusStationBean { && drivingStatus == that.drivingStatus && leaving == that.leaving && name.equals(that.name) - && nameKr.equals(that.nameKr); + && (nameKr == null || nameKr.equals(that.nameKr)); } @Override diff --git a/OCH/mogo-och-noop/build.gradle b/OCH/mogo-och-noop/build.gradle index 79d34406b0..b387a1dd5b 100644 --- a/OCH/mogo-och-noop/build.gradle +++ b/OCH/mogo-och-noop/build.gradle @@ -3,7 +3,6 @@ plugins { id 'kotlin-android' id 'kotlin-android-extensions' id 'kotlin-kapt' - id 'com.alibaba.arouter' } android { diff --git a/OCH/mogo-och-shuttle-passenger/build.gradle b/OCH/mogo-och-shuttle-passenger/build.gradle index 3bdddf460d..a871f02aee 100644 --- a/OCH/mogo-och-shuttle-passenger/build.gradle +++ b/OCH/mogo-och-shuttle-passenger/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' @@ -72,7 +71,7 @@ dependencies { implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.amapnavi3dmap - api project(":OCH:mogo-och-common-module") + implementation project(":OCH:mogo-och-common-module") compileOnly project(":libraries:mogo-map") implementation project(':core:mogo-core-res') testImplementation 'junit:junit:4.12' diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java index 7d462c954d..d50adb656a 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java @@ -2,18 +2,16 @@ package com.mogo.och.bus.passenger.adapter; import android.content.Context; import android.text.TextUtils; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.constraintlayout.widget.Group; import androidx.recyclerview.widget.RecyclerView; import com.mogo.och.bus.passenger.R; -import com.mogo.och.bus.passenger.bean.BusPassengerStation; import com.mogo.och.common.module.utils.BlinkAnimationUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; import com.mogo.och.data.bean.BusStationBean; @@ -53,55 +51,69 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "可以接受轨迹"); + return null; + }); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "接受轨迹中"); if (null != routePoints && routePoints.size() > 0){ updateRoutePoints(routePoints); startToRouteAndWipe(); @@ -529,7 +552,7 @@ public class BusPassengerModel { } }; - public void updateRoutePoints(List routePoints){ + public synchronized void updateRoutePoints(List routePoints){ mRoutePoints.clear(); List latLngModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(mContext,routePoints); diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java index a40cebf641..e7dd425241 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java @@ -123,7 +123,7 @@ public class BaseBusPassengerPresenter extends Presenter mView.updatePlateNum(plateNumber)); +// runOnUIThread(() -> mView.updatePlateNum(plateNumber)); } @Override @@ -160,6 +160,6 @@ public class BaseBusPassengerPresenter extends Presenter mView.setProgressBarMax()); +// runOnUIThread(() -> mView.setProgressBarMax()); } } diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/provider/B1StatusViewManager.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/provider/B1StatusViewManager.java new file mode 100644 index 0000000000..d37690eb07 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/provider/B1StatusViewManager.java @@ -0,0 +1,33 @@ +package com.mogo.och.bus.passenger.provider; + +import android.content.Context; +import android.view.View; + +import com.mogo.och.bus.passenger.ui.BusPStatusBarView; +import androidx.annotation.NonNull; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.eagle.core.data.constants.MogoServicePaths; +import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout; + +/** + * @author congtaowang + * @since 2020-01-06 + *

+ * 根据优先级控制显示 window view. + */ +@Route( path = MogoServicePaths.PATH_STATUS_VIEW_MANAGER ) +public class B1StatusViewManager implements IStatusViewLayout { + + + @NonNull + @Override + public View getStatusView(Context context) { + return new BusPStatusBarView(context); + } + + @Override + public void init(Context context) { + + } +} diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt new file mode 100644 index 0000000000..2254892bfd --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPBlueToothView.kt @@ -0,0 +1,37 @@ +package com.mogo.och.bus.passenger.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener +import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.jinlvvan.p_bus_view_blue_tooth.view.* + +/** + * 魔戒蓝牙控件 + * 放置于StatusBar右侧位置 + * todo arrow + */ +class BusPBlueToothView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : BlueToothView(context, attrs, defStyleAttr),IMoGoDevaToolsListener { + + init { + LayoutInflater.from(context).inflate(R.layout.p_bus_view_blue_tooth, this, true) + } + + override fun mofangStatus(status: Boolean) { + ThreadUtils.runOnUiThread { + if (status) { + blueView.setImageResource(R.drawable.bus_p_blue_tooth_close) + } else { + blueView.setImageResource(R.drawable.bus_p_blue_tooth_open) + } + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPStatusBarView.kt b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPStatusBarView.kt new file mode 100644 index 0000000000..4bb0bd9403 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPStatusBarView.kt @@ -0,0 +1,71 @@ +package com.mogo.och.bus.passenger.ui + +import android.annotation.* +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.constraintlayout.widget.ConstraintLayout +import chassis.ChassisStatesOuterClass +import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager +import com.mogo.eagle.core.utilcode.kotlin.* +import com.mogo.eagle.core.utilcode.util.ClickUtils +import com.mogo.och.bus.passenger.R +import kotlinx.coroutines.* +import me.jessyan.autosize.utils.AutoSizeUtils + +/** + * @author: wangmingjun + * @date: 2023/2/14 + */ +class BusPStatusBarView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : ConstraintLayout(context, attrs), IViewControlListener, IMoGoSkinModeChangeListener{ + + companion object { + const val TAG = "BusPStatusBarView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.p_bus_view_status_bar, this, true) + setBackgroundResource(R.drawable.bg_status_bar) + isClickable = true + isFocusable = true + } + + + @SuppressLint("ClickableViewAccessibility") + override fun onAttachedToWindow() { + super.onAttachedToWindow() + post { + val params: ViewGroup.LayoutParams = getLayoutParams() + params.height = AutoSizeUtils.dp2px(context,40f) + layoutParams = params + } + //添加view控制 + CallerHmiViewControlListenerManager.addListener(TAG,this) + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + } + + override fun onSkinModeChange(skinMode: Int) { + when (skinMode) { + 0 -> setStatusBarDarkOrLight(false) + 1 -> setStatusBarDarkOrLight(true) + } + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(TAG) + CallerSkinModeListenerManager.removeListener(TAG) + CallerDevaToolsManager.hideStatusBar() + } +} \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java index fa686d846f..73fd07a86e 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java @@ -9,19 +9,25 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.core.widget.ContentLoadingProgressBar; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; +import com.mogo.eagle.core.data.multidisplay.TelematicConstant; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener; +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager; +import com.mogo.eagle.core.function.hmi.ui.widget.DriverMonitorView; import com.mogo.eagle.core.function.view.MapBizView; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.common.module.utils.NumberFormatUtil; +import com.mogo.och.common.module.wigets.OCHBorderShadowLayout; /** * Created on 2022/3/31 @@ -32,19 +38,7 @@ public abstract class BusPassengerBaseFragment 0){ - if (meters / 1000 < 1){ - disUnit = "米"; - dis = String.valueOf(Math.round(meters)); - }else { - disUnit = "公里"; - dis = NumberFormatUtil.formatLong((double)meters / 1000); - } - } - String strHtml2 = "距离 " + "" + dis + "" + " "+disUnit+"" - + "   剩余 " + "" + (int)Math.ceil((double)timeInSecond/ 60f) + "" + " 分钟"; - mCurrentArriveTip.setText(Html.fromHtml(strHtml2)); - } - - private void updateProgressBar(long meters) { - int haveDriven = new Long(meters).intValue(); - int progressInt = SharedPrefsMgr.getInstance(getContext()) - .getInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS,0) - haveDriven; - mProgressBar.setProgress(progressInt); - } - - public void setProgressBarMax(){ - int max = SharedPrefsMgr.getInstance(getContext()) - .getInt(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS,0); - mProgressBar.setMax(max); - } - - public void onAutopilotStatusChanged(int status) { - getActivity().runOnUiThread(() -> { - // 3. 其他过程直接更新 - if (mPrevAPStatus != status){ - AutopilotStatusChanged(status); - } - mPrevAPStatus = status; - }); - } - - public void AutopilotStatusChanged(int status) { - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { - mAutopilotIv.setImageResource(R.drawable.bus_p_auto_nor); - } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == status){ - mAutopilotIv.setImageResource(R.drawable.bus_p_un_auto_nor); - } else { - mAutopilotIv.setImageResource(R.drawable.bus_p_un_auto_nor); - } - - } - - public void showOverviewFragment() { - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - } - },5000L); - } } diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index dcc64d082e..672bb15b87 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -66,7 +66,7 @@ public class BusPassengerMapDirectionView private List mLineMarkers = new ArrayList<>(); - private IBusPassengerMapViewCallback mIBusPassengerMapViewCallback; +// private IBusPassengerMapViewCallback mIBusPassengerMapViewCallback; private BitmapDescriptor mArrivedRes; private BitmapDescriptor mUnArrivedRes; @@ -87,9 +87,9 @@ public class BusPassengerMapDirectionView } } - public void setTaxiPassengerMapViewCallback(IBusPassengerMapViewCallback iBusPassengerMapViewCallback) { - this.mIBusPassengerMapViewCallback = iBusPassengerMapViewCallback; - } +// public void setTaxiPassengerMapViewCallback(IBusPassengerMapViewCallback iBusPassengerMapViewCallback) { +// this.mIBusPassengerMapViewCallback = iBusPassengerMapViewCallback; +// } private void initView(Context context) { CallerLogger.INSTANCE.d(M_BUS_P + TAG, "initView"); @@ -189,23 +189,27 @@ public class BusPassengerMapDirectionView mCarMarker.setToTop(); } - //圈定地图显示范围 - LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); + try { + //圈定地图显示范围 + LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); - if (mCoordinatesLatLng.size() > 0){ - //存放经纬度 - for (int i = 0; i < mCoordinatesLatLng.size(); i++) { - boundsBuilder.include(mCoordinatesLatLng.get(i)); - } - //第二个参数为四周留空宽度 - }else if (mLineStationLatLng.size() > 0){ - for (int i = 0; i< mLineStationLatLng.size();i++){ - boundsBuilder.include(mLineStationLatLng.get(i)); + if (mCoordinatesLatLng.size() > 0){ + //存放经纬度 + for (int i = 0; i < mCoordinatesLatLng.size(); i++) { + boundsBuilder.include(mCoordinatesLatLng.get(i)); + } + //第二个参数为四周留空宽度 + }else if (mLineStationLatLng.size() > 0){ + for (int i = 0; i< mLineStationLatLng.size();i++){ + boundsBuilder.include(mLineStationLatLng.get(i)); + } } + + boundsBuilder.include(currentLatLng); + mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(),100,100,100,100)); + }catch (Exception e){ + } - - boundsBuilder.include(currentLatLng); - mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(),100,100,100,100)); } @@ -219,7 +223,7 @@ public class BusPassengerMapDirectionView addRouteColorList(); CallerLogger.INSTANCE.d(M_BUS_P + TAG, "mLinePointsLatLng.size() = " +mLineStationLatLng.size() +" mCoordinatesLatLng.size()= " + mCoordinatesLatLng.size()); - if (mLineStationLatLng.size() >= 2 && mCoordinatesLatLng.size() > 2) { + if (mLineStationLatLng.size() >= 2 && mCoordinatesLatLng.size() >= 2) { //设置线段纹理 PolylineOptions polylineOptions = new PolylineOptions(); polylineOptions.addAll(mCoordinatesLatLng); @@ -336,7 +340,7 @@ public class BusPassengerMapDirectionView @Override public void onCameraChange(CameraPosition cameraPosition) { - mIBusPassengerMapViewCallback.onCameraChange(cameraPosition.bearing); +// mIBusPassengerMapViewCallback.onCameraChange(cameraPosition.bearing); } @Override diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index df4fe18d6c..00834c42d4 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -2,7 +2,9 @@ package com.mogo.och.bus.passenger.ui; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; +import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; +import android.text.Html; import android.view.View; import android.view.animation.Animation; import android.view.animation.RotateAnimation; @@ -10,13 +12,17 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatTextView; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.Group; import androidx.recyclerview.widget.RecyclerView; import com.amap.api.maps.model.LatLng; import com.elegant.utils.UiThreadHandler; import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.map.MogoLocation; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.och.bus.passenger.R; @@ -27,7 +33,9 @@ import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager; import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils; +import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; +import com.mogo.och.common.module.wigets.OCHGradientTextView; import com.mogo.och.data.bean.BusStationBean; import java.util.ArrayList; @@ -38,26 +46,32 @@ import java.util.List; * @date: 2022/4/12 */ public class BusPassengerRouteFragment extends - BusPassengerBaseFragment - implements IBusPassengerMapViewCallback { + BusPassengerBaseFragment { public static final String TAG = "BusPassengerRouteFragment"; private final List mStationsList = new ArrayList<>(); - private TextView mSpeedTv; + private OCHGradientTextView mSpeedTv; private ConstraintLayout mNoLineInfoView; - private TextView mCarPlateNum; private MarqueeTextView mLineName; - private TextView mOperationTime; - private ConstraintLayout mRouteInfoView; + private Group mRouteInfoView; private RecyclerView mStationsListRv; private BusPassengerMapDirectionView mMapDirectionView; - private ImageView mMapArrowIcon; - private RotateAnimation rotateAnimation; - private float lastBearing = 0; private BusPassengerLineStationsAdapter mAdapter; private TextView emptyTv; + private AppCompatImageView mAutopilotIv; + private AppCompatTextView mCurrentArriveStation; + private AppCompatTextView mCurrentArriveStationTitle; + private AppCompatTextView mCurrentArriveTip; + private AppCompatImageView mSpeakArrivedIv; + + /** + * 改变自动驾驶状态 + * + * @param status 2 - running 1 - enable 2 - disable + */ + private int mPrevAPStatus = -1; @Override public int getStationPanelViewId() { @@ -75,13 +89,22 @@ public class BusPassengerRouteFragment extends super.initViews(); mSpeedTv = findViewById(R.id.bus_p_speed_tv); + mSpeedTv.setVertrial(true); + mSpeedTv.setmColorList(new int[]{getResources().getColor(R.color.bus_p_speed_color_start), + getResources().getColor(R.color.bus_p_speed_color_end)}); mNoLineInfoView =findViewById(R.id.bus_p_no_order_data_view); emptyTv = findViewById(R.id.no_order_data_tv); - mCarPlateNum = findViewById(R.id.bus_p_driver_num_plate_tv); +// mCarPlateNum = findViewById(R.id.bus_p_driver_num_plate_tv); mLineName = findViewById(R.id.bus_p_line_name_tv); - mOperationTime = findViewById(R.id.line_operation_time_tv); + mAutopilotIv = findViewById(R.id.auto_status_iv); + mCurrentArriveStation = findViewById(R.id.bus_p_cur_station_name); + mCurrentArriveStationTitle = findViewById(R.id.bus_p_cur_station_title); + mCurrentArriveTip = findViewById(R.id.bus_p_cur_station_tip); + mSpeakArrivedIv = findViewById(R.id.speak_arrived_iv); + +// mOperationTime = findViewById(R.id.line_operation_time_tv); mRouteInfoView = findViewById(R.id.bus_p_line_cl); mStationsListRv = findViewById(R.id.bus_p_line_stations_rl); @@ -91,7 +114,7 @@ public class BusPassengerRouteFragment extends mAdapter = new BusPassengerLineStationsAdapter(getContext(), mStationsList); mStationsListRv.setAdapter(mAdapter); - mMapArrowIcon = findViewById(R.id.bus_p_arrow_nor); +// mMapArrowIcon = findViewById(R.id.bus_p_arrow_nor); //测试 if (DebugConfig.isDebug()){ @@ -110,7 +133,6 @@ public class BusPassengerRouteFragment extends super.initViews(savedInstanceState); mMapDirectionView = findViewById(R.id.bus_p_line_map_view); mMapDirectionView.onCreateView(savedInstanceState); - mMapDirectionView.setTaxiPassengerMapViewCallback(this); } @Override @@ -194,6 +216,7 @@ public class BusPassengerRouteFragment extends emptyTv.setText(getString(R.string.bus_p_no_out)); mNoLineInfoView.setVisibility(View.VISIBLE); mRouteInfoView.setVisibility(View.GONE); + mLineName.setText(getContext().getString(R.string.bus_p_no_line)); updateArrivedStation(null,0,true); clearMapView(); clearMapMarkers(); @@ -204,6 +227,7 @@ public class BusPassengerRouteFragment extends if (mNoLineInfoView.getVisibility() == View.GONE){ mNoLineInfoView.setVisibility(View.VISIBLE); mRouteInfoView.setVisibility(View.GONE); + mLineName.setText(getContext().getString(R.string.bus_p_no_line)); updateArrivedStation(null,0,true); clearMapView(); clearMapMarkers(); @@ -218,17 +242,17 @@ public class BusPassengerRouteFragment extends } } - public void updatePlateNum(String plateNum){ - if ("".equals(plateNum) || null == plateNum) { - mCarPlateNum.setText("-- --"); - }else { - mCarPlateNum.setText((plateNum)); - } - } +// public void updatePlateNum(String plateNum){ +// if ("".equals(plateNum) || null == plateNum) { +// mCarPlateNum.setText("-- --"); +// }else { +// mCarPlateNum.setText((plateNum)); +// } +// } public void updateLineInfo(String lineName, String lineDurTime) { mLineName.setText(lineName); - mOperationTime.setText(lineDurTime); +// mOperationTime.setText(lineDurTime); } /** @@ -261,8 +285,6 @@ public class BusPassengerRouteFragment extends private void updateWayPointList(List stations,int currentStationIndex) { List mLineStationsList = new ArrayList<>(); for (int i = 0; i< stations.size(); i++) {//站点集合 -// LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(getContext() -// ,stations.get(i).getLon(),stations.get(i).getLat());// lat,lon LatLng latLng = new LatLng(stations.get(i).getGcjLat(),stations.get(i).getGcjLon());// lat,lon mLineStationsList.add(latLng); } @@ -277,26 +299,26 @@ public class BusPassengerRouteFragment extends } } - @Override - public void onCameraChange(float bearing) { - startIvCompass(bearing); - } +// @Override +// public void onCameraChange(float bearing) { +//// startIvCompass(bearing); +// } - /** - * 设置指南针旋转 - * - * @param bearing - */ - private void startIvCompass(float bearing) { - bearing = 360 - bearing; - CallerLogger.INSTANCE.d(M_BUS_P + TAG, "startIvCompass: " + bearing); - rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF - , 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - rotateAnimation.setFillAfter(true); - - mMapArrowIcon.startAnimation(rotateAnimation); - lastBearing = bearing; - } +// /** +// * 设置指南针旋转 +// * +// * @param bearing +// */ +// private void startIvCompass(float bearing) { +// bearing = 360 - bearing; +// CallerLogger.INSTANCE.d(M_BUS_P + TAG, "startIvCompass: " + bearing); +// rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF +// , 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); +// rotateAnimation.setFillAfter(true); +// +// mMapArrowIcon.startAnimation(rotateAnimation); +// lastBearing = bearing; +// } public void onCarLocationChanged(MogoLocation location) { updateSpeedView((float) location.getGnssSpeed()); @@ -312,4 +334,85 @@ public class BusPassengerRouteFragment extends mStationsListRv.smoothScrollToPosition(position); } } + + public void updateArrivedStation(String station,int currentIndex,boolean isArrived){ + if (null == station){ + mCurrentArriveStation.setText("----"); + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_station_title)); + mCurrentArriveTip.setText(getResources().getString(R.string.bus_p_cur_station_arrived_tip)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_arrived_bg); + handleArrivingSpeakIconDrawable(); + }else { + mCurrentArriveStation.setText(station); + if (currentIndex == 0){ + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_station_title)); + mCurrentArriveTip.setText(getResources().getString(R.string.bus_p_cur_station_arrived_tip)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_arrived_bg); + handleArrivingSpeakIconDrawable(); + return; + } + if (isArrived){ + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_station_title)); + mCurrentArriveTip.setText(getResources().getString(R.string.bus_p_cur_station_arrived_tip)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_arrived_bg); + handleArrivedSpeakIconDrawable(); + }else { + mCurrentArriveStationTitle.setText(getResources().getString(R.string.bus_p_cur_next_station_title)); + mCurrentArriveTip.setBackgroundResource(R.drawable.cur_station_un_arrived_bg); + handleArrivingSpeakIconDrawable(); + } + } + + } + + private void handleArrivedSpeakIconDrawable(){ + AnimationDrawable animationDrawable = (AnimationDrawable) mSpeakArrivedIv.getDrawable(); + animationDrawable.start(); + mSpeakArrivedIv.setVisibility(View.VISIBLE); + } + + private void handleArrivingSpeakIconDrawable(){ + AnimationDrawable animationDrawable = (AnimationDrawable) mSpeakArrivedIv.getDrawable(); + animationDrawable.stop(); + mSpeakArrivedIv.setVisibility(View.GONE); + } + + public void updateRoutePlanningToNextStation(long meters, long timeInSecond){ + //更新进度条 + String dis = "0"; + String disUnit = "公里"; + if (meters > 0){ + if (meters / 1000 < 1){ + disUnit = "米"; + dis = String.valueOf(Math.round(meters)); + }else { + disUnit = "公里"; + dis = NumberFormatUtil.formatLong((double)meters / 1000); + } + } +// String strHtml2 = "距离 " + "" + dis + "" + " "+disUnit+"" +// + "   剩余 " + "" + (int)Math.ceil((double)timeInSecond/ 60f) + "" + " 分钟"; + String str = dis+disUnit+" | "+(int)Math.ceil((double)timeInSecond/ 60f)+"分钟"; + mCurrentArriveTip.setText(Html.fromHtml(str)); + } + + public void onAutopilotStatusChanged(int status) { + getActivity().runOnUiThread(() -> { + // 3. 其他过程直接更新 + if (mPrevAPStatus != status){ + AutopilotStatusChanged(status); + } + mPrevAPStatus = status; + }); + } + + 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/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/widget/BusPTurnLightView.kt b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/widget/BusPTurnLightView.kt new file mode 100644 index 0000000000..a822623d22 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/widget/BusPTurnLightView.kt @@ -0,0 +1,16 @@ +package com.mogo.och.bus.passenger.ui.widget + +import android.content.Context +import android.util.AttributeSet +import com.mogo.eagle.core.function.hmi.ui.vehicle.TurnLightViewStatus + +/** + * @author: wangmingjun + * @date: 2023/2/13 + */ +class BusPTurnLightView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : TurnLightViewStatus(context, attrs) { + + +} \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/auto_close.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/auto_close.png new file mode 100644 index 0000000000..bed91e16ee Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/auto_close.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/auto_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/auto_open.png new file mode 100644 index 0000000000..8ecc2ca1e9 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/auto_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_end_tag_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_end_tag_bg.png new file mode 100644 index 0000000000..a679341790 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_end_tag_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_start_tag_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_start_tag_bg.png new file mode 100644 index 0000000000..c0fcf5d0ea Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bg_bus_p_start_tag_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_line_logo.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_line_logo.png new file mode 100644 index 0000000000..60064ae514 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_line_logo.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_blue.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_blue.png new file mode 100644 index 0000000000..88247c204f Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_blue.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_green.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_green.png new file mode 100644 index 0000000000..0fd2398cfb Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_arrive_line_green.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_close.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_close.png new file mode 100644 index 0000000000..0c292d2cf3 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_close.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_open.png new file mode 100644 index 0000000000..cccf9e10fa Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_blue_tooth_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png index 445906d280..fea5cfd033 100644 Binary files a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_arrived.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png index 99d8bd7b56..254662d297 100644 Binary files a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_map_arrow_un_arrive.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png index a1a5aed070..65625ca374 100755 Binary files a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_no_order_data.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png index bc88e93c1d..ef08c49f25 100755 Binary files a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_blue.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png index ca325eb42e..deec63de9d 100755 Binary files a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_gray.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_green.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_green.png deleted file mode 100755 index 865097cbad..0000000000 Binary files a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_point_green.png and /dev/null differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_right_route_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_right_route_bg.png new file mode 100644 index 0000000000..5d9bf564af Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_right_route_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_route_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_route_bg.png new file mode 100644 index 0000000000..5c4f302cc2 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_route_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_status_bar_logo.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_status_bar_logo.png new file mode 100644 index 0000000000..ffaacad3c6 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_status_bar_logo.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_open.png new file mode 100644 index 0000000000..fb728e515e Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_un_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_un_open.png new file mode 100644 index 0000000000..4de98ca6dd Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_youzhuan_un_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_open.png new file mode 100644 index 0000000000..5762da6053 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_un_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_un_open.png new file mode 100644 index 0000000000..ae29f98f34 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/bus_p_zuozhuan_un_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/card_split_line_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/card_split_line_bg.png new file mode 100644 index 0000000000..2f392c64b6 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/card_split_line_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_arrived_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_arrived_bg.png new file mode 100644 index 0000000000..355af19afc Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_arrived_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_un_arrived_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_un_arrived_bg.png new file mode 100644 index 0000000000..ea4214cf51 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/cur_station_un_arrived_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/m2_blue_tooth_open.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/m2_blue_tooth_open.png new file mode 100644 index 0000000000..cccf9e10fa Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/m2_blue_tooth_open.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/route_line_name_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/route_line_name_bg.png new file mode 100644 index 0000000000..a680b6ea18 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/route_line_name_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_0.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_0.png new file mode 100644 index 0000000000..24a13e704e Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_0.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_1.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_1.png new file mode 100644 index 0000000000..c15a70a3ee Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_1.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_2.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_2.png new file mode 100644 index 0000000000..8c1c118673 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable-nodpi/speak_arrived_icon_2.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_bus_p_end_tag_bg.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_bus_p_end_tag_bg.xml deleted file mode 100644 index ca8ad81fe2..0000000000 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_bus_p_end_tag_bg.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_bus_p_start_tag_bg.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_bus_p_start_tag_bg.xml deleted file mode 100644 index 7a6d44a4c8..0000000000 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_bus_p_start_tag_bg.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_p_speak_icon_arrived.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_p_speak_icon_arrived.xml new file mode 100644 index 0000000000..a007c6d711 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_p_speak_icon_arrived.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_status_bar.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_status_bar.xml new file mode 100644 index 0000000000..5b8da3c82c --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bg_status_bar.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/brakelight_background_daytime.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/brakelight_background_daytime.xml new file mode 100644 index 0000000000..6409baca2f --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/brakelight_background_daytime.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bus_p_route_bg.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bus_p_route_bg.xml deleted file mode 100644 index 94dd7c0007..0000000000 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/bus_p_route_bg.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_bg.png new file mode 100644 index 0000000000..405d2cddaa Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_press_bg.png b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_press_bg.png new file mode 100644 index 0000000000..a0b2ab93d9 Binary files /dev/null and b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/iv_roma_bus_passenger_press_bg.png differ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/roma_bus_p_bg_selector.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/roma_bus_p_bg_selector.xml new file mode 100644 index 0000000000..191ec2e51f --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/drawable/roma_bus_p_bg_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml index 06f31d335e..b3dbf98f8c 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_base_fragment.xml @@ -1,17 +1,24 @@ + + - + android:visibility="gone" + app:roma_close="@drawable/roma_bus_p_bg_selector" + app:roma_open="@drawable/iv_roma_bus_passenger_press_bg" /> - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_no_data_common_view.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_no_data_common_view.xml index 2eefe569cf..8d3bd854ec 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_no_data_common_view.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_no_data_common_view.xml @@ -5,11 +5,17 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/bus_p_no_order_data_view"> - + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml index 8567a7a783..5ada0511f4 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_route_fragment.xml @@ -1,182 +1,278 @@ + android:background="@drawable/bus_p_right_route_bg"> - - + android:layout_marginTop="@dimen/dp_10" + android:layout_marginRight="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_10" + app:bgColor="#00000000" + app:blurRadius="@dimen/dp_28" + app:shadowColor="#45688AE1" + app:shadowRadius="@dimen/dp_40" + app:shadow_position="outer" + app:xOffset="0dp" + app:yOffset="0dp"/> - - - - - - - + app:roundLayoutRadius="@dimen/dp_40"> - - + android:layout_width="@dimen/bus_p_route_info_panel_width" + android:layout_height="match_parent" + android:background="@drawable/bus_p_route_bg" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - - + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_goneMarginLeft="0dp" + app:useCustomGap="true" /> - + android:layout_marginRight="@dimen/dp_20" + android:src="@drawable/bus_line_logo" + app:layout_constraintBottom_toBottomOf="@+id/bus_p_line_name_tv" + app:layout_constraintRight_toLeftOf="@+id/bus_p_line_name_tv" + app:layout_constraintTop_toTopOf="@+id/bus_p_line_name_tv" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/bus_p_cur_station_name" /> + + + - - - - + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml index 33dfb22485..3bd9615a30 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/bus_p_stations_common_item.xml @@ -10,75 +10,50 @@ android:layout_height="wrap_content" android:text="--" android:textSize="@dimen/bus_p_station_txt_size" - android:textStyle="bold" android:includeFontPadding = "false" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:layout_marginRight="@dimen/dp_60" + android:layout_marginTop="@dimen/dp_68" + android:textStyle="bold" android:textColor="@color/bus_p_station_txt_color" android:layout_marginLeft="@dimen/dp_90" app:customGap="0.5" app:useCustomGap="true" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintRight_toLeftOf="@+id/bus_p_tag" - app:layout_constraintTop_toBottomOf="@+id/bus_p_cur_arrow_bg"/> + app:layout_constraintRight_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintRight_toRightOf="@+id/bus_p_circle" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="@+id/bus_p_circle"/> + + + - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/p_bus_view_blue_tooth.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/p_bus_view_blue_tooth.xml new file mode 100644 index 0000000000..69ae14c394 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/p_bus_view_blue_tooth.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/p_bus_view_status_bar.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/p_bus_view_status_bar.xml new file mode 100644 index 0000000000..fef63bbd25 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/p_bus_view_status_bar.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/view_roma_busp_bg.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/view_roma_busp_bg.xml new file mode 100644 index 0000000000..cc7e2f5c9c --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/view_roma_busp_bg.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/view_turn_light_status_daytime.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/view_turn_light_status_daytime.xml new file mode 100644 index 0000000000..f206e99831 --- /dev/null +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/layout/view_turn_light_status_daytime.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/colors.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/colors.xml index 8e63faf83d..4bcd3db004 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/colors.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/colors.xml @@ -1,10 +1,10 @@ - #2D3E5F + #5D7199 #CCE9EFFC #C7D2E1 #2D3E5F - #0043FF + #203555 #2D3E5F #596A8A #D8E5F8 @@ -27,4 +27,15 @@ #33394C63 #2D3E5F #33394C63 + + #43CEFE + #1466FB + + #17417B + #6617417B + #A9B6CA + #1F82FB + + #992D3E5F + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/dimens.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/dimens.xml index e738022b0d..7e055aedf1 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/dimens.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/dimens.xml @@ -1,13 +1,14 @@ - 700dp + 750dp + 804dp 40dp 40dp - 40dp + 48dp 40dp 110dp 224dp - 510dp + 422dp 3dp 158dp @@ -23,14 +24,14 @@ 224dp 50dp 50dp - 44dp + 34dp 130dp 38dp - 36dp + 38dp - 110dp - 42dp + 90dp + 27dp 4dp 10dp @@ -40,7 +41,7 @@ 20dp 50dp 6dp - 50dp + 38dp 36dp 80dp 100dp @@ -56,6 +57,9 @@ 55dp 40dp + 495dp + 309dp + 584dp 550dp \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/strings.xml b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/strings.xml index e98feed5f5..cf8142edc1 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/strings.xml +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/res/values/strings.xml @@ -3,11 +3,12 @@ KM/H 您已收车 暂无班次 + 暂无线路 - 到达站: - 下一站: - 始发站: - 请携带好随身物品下车。 - 欢迎乘坐蘑菇车联自动驾驶车。 + 已到站: + 前方到站: + + 请按秩序下车 + \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt index 7682f74217..214f37bbf2 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt @@ -46,9 +46,11 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.BusTransferData +import io.reactivex.disposables.Disposable import mogo.telematics.pad.MessagePad import kotlin.math.abs @@ -79,6 +81,9 @@ class PM2DrivingModel private constructor() { private var operationStatus: PM2OperationStatusResponse.Result? = null + @Volatile + private var globalPathTruncation: Disposable? = null + private val handler = Handler(Handler.Callback { msg -> if (msg.what == MSG_QUERY_BUS_P_STATION) { queryDriverOperationStatus() @@ -250,23 +255,40 @@ class PM2DrivingModel private constructor() { } private val moGoAutopilotPlanningListener = object : IMoGoPlanningRottingListener{ + + @Synchronized override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { d(SceneConstant.M_BUS_P + TAG, "och-rotting==globalPathResp = " + GsonUtils.toJson(globalPathResp)) globalPathResp?.let { d(SceneConstant.M_BUS_P + TAG, "och-rotting==wayPointsSize = " + it.wayPointsList.size) + + if (globalPathTruncation != null && !globalPathTruncation!!.isDisposed) { + d(SceneConstant.M_BUS_P + TAG, "1s内不可以接受轨迹") + return@let + } + + globalPathTruncation = RxUtils.createSubscribe(1_000) { + d(SceneConstant.M_BUS_P + TAG, "可以接受轨迹") + } + d(SceneConstant.M_BUS_P + TAG, "接受轨迹中") updateRoutePoints(it.wayPointsList) } } } + @Synchronized fun updateRoutePoints(routePoints: List?) { mRoutePoints.clear() val latLngModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(mContext, routePoints) d(SceneConstant.M_BUS_P + TAG, "och-rotting==latLngModels = " + latLngModels.size) mRoutePoints.addAll(latLngModels) - calculateTwoStationsRoute() + + if (isGoingToNextStation){ + mTwoStationsRouts.clear() + startRemainRouteInfo() + } } private fun updateSpeed(mogoLocation: MogoLocation) { @@ -354,7 +376,7 @@ class PM2DrivingModel private constructor() { if (data == null || data.result == null){ if (routesResult != null) { - routesResult == null + routesResult = null updateLocalOrder() d(SceneConstant.M_BUS_P+TAG, "queryDriverSiteByCoordinate= result is null") return @@ -408,6 +430,7 @@ class PM2DrivingModel private constructor() { } private fun updateLocalOrder(){ + mRoutePoints.clear() routesResult = null mNextStationIndex = 0 isGoingToNextStation = false @@ -442,21 +465,25 @@ class PM2DrivingModel private constructor() { if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && station.isLeaving && i + 1 < stations.size) { mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false) - if (mNextStationIndex != i + 1) { + d(SceneConstant.M_BUS_P+TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") +// if (mNextStationIndex != i + 1) { d(SceneConstant.M_BUS_P+TAG,"och-rotting--start ") mTwoStationsRouts.clear() startRemainRouteInfo() - } +// } isGoingToNextStation = true mNextStationIndex = i + 1 return } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { + d(SceneConstant.M_BUS_P+TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") d(SceneConstant.M_BUS_P+TAG,"och-rotting--arrived ") mPreRouteIndex = 0 isGoingToNextStation = false startOrStopCalculateRouteInfo(false) mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true) return + }else{ +// d(SceneConstant.M_BUS_P+TAG,"och-rotting--BusStationBean = " + GsonUtils.toJson(station)) } } } diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt index de47518d3b..b3d6ab2894 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt @@ -30,7 +30,7 @@ class PM2ADASPresenter(view: PM2HPMapFragment?) : override fun updateHDMapStations(stations: MutableList>) { for (i in stations.indices){ - mView?.setMapMaker(M2_MAP_STATION_MAKER,stations[i]) + mView?.setMapMaker(M2_MAP_STATION_MAKER+i,stations[i]) } } diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt index 05b1101cfd..11934b3cd2 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt @@ -1,12 +1,12 @@ package com.mogo.och.bus.passenger.ui import android.os.Bundle -import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMarkerManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverlayManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d -import com.mogo.map.marker.MogoMarkerOptions +import com.mogo.map.overlay.core.Level +import com.mogo.map.overlay.point.Point 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 @@ -82,26 +82,33 @@ class PM2HPMapFragment : val setMapMarkerRunnable = Runnable { d("setMapMaker= " + Thread.currentThread().name, uuid + "=latitude=" + station[1] + ",longitude=" + station[0]) - val options = MogoMarkerOptions() - .owner(TYPE_MARKER_M2_LINE) + + val builder = Point.Options.Builder( + TYPE_MARKER_M2_LINE, + Level.MAP_MARKER + ) + .setId(uuid) .anchor(0.5f, 0.5f) .set3DMode(true) - .gps(true) + .isUseGps(true) .controlAngle(true) .icon3DRes(R.raw.star_marker) .longitude(station[0]) .latitude(station[1]) - val marker = Objects.requireNonNull( - getMarkerManager(AbsMogoApplication.getApp()) - )?.addMarker(uuid, options) - val centerLine = - getMapUIController()!! - .getCenterLineInfo( - station[0], station[1], -1f - ) - if (null != centerLine && marker != null) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 - marker.setRotateAngle(centerLine.angle!!.toFloat()) + 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()) + } + } } + val overlayManager = getOverlayManager() + overlayManager?.showOrUpdatePoint(builder.build()) } OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable) } @@ -112,9 +119,8 @@ class PM2HPMapFragment : //开启线程移除起终点marker设置 val removeMapMarkerRunnable = Runnable { d("RemoveMapMaker=" + Thread.currentThread().name, uuid) - Objects.requireNonNull( - getMarkerManager(AbsMogoApplication.getApp()) - )?.removeMarkers(uuid) + val overlayManager = getOverlayManager() + overlayManager?.removeAllPointsInOwner(TYPE_MARKER_M2_LINE) } OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable) } diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt index 8999c7ab14..fdb12a594f 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt @@ -6,18 +6,15 @@ import android.net.Uri import android.util.AttributeSet import android.widget.ImageView import android.widget.RelativeLayout -import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean -import com.mogo.eagle.core.utilcode.breakpoint.callback.IDownload -import com.mogo.eagle.core.utilcode.breakpoint.utils.DownloadUtils +import com.mogo.eagle.core.utilcode.download.* +import com.mogo.eagle.core.utilcode.download.callback.* import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider import com.mogo.och.bus.passenger.R import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack -import me.jessyan.autosize.utils.AutoSizeUtils import java.io.File /** @@ -159,9 +156,13 @@ class AdvanceVideoView @JvmOverloads constructor( //下载视频, 下载成功后再播放 Logger.d(ImageAndVideoRotation.TAG, "startDownLoadVideo") FileUtils.createFileDir(mVideoDirPath) - DownloadUtils.downLoad( - context, fileNetPath, mVideoDirPath, downloadVideoName, 5, downListener - ) + val downloadUrl = fileNetPath + val downloadDir = mVideoDirPath + if (downloadUrl != null && downloadDir != null) { + DownloadUtils.downLoad( + context, downloadUrl, downloadDir, downloadVideoName, downListener + ) + } } fun startPlay(localVideoPath: String?) { @@ -202,40 +203,40 @@ class AdvanceVideoView @JvmOverloads constructor( } } - private val downListener = object : IDownload { - override fun onStart(url: String?) { + private val downListener = object : IDownloadListener { + override fun onStart(url: String) { setCacheImageViewVisible() Logger.d(ImageAndVideoRotation.TAG, "download-onStart") } - override fun onPause(url: String?, threadBean: ThreadBean?) { - Logger.d(ImageAndVideoRotation.TAG, "download-onPause") -// UiThreadHandler.postDelayed(Runnable { -// startDownLoadVideo() -// },DOWNLOAD_DELAY) - // todo 测试下网络断掉是否会走onpause,且网络回复也不会继续下载 +// override fun onPause(url: String, threadBean: ThreadBean?) { +// Logger.d(ImageAndVideoRotation.TAG, "download-onPause") +//// UiThreadHandler.postDelayed(Runnable { +//// startDownLoadVideo() +//// },DOWNLOAD_DELAY) +// // todo 测试下网络断掉是否会走onpause,且网络回复也不会继续下载 +// } + + override fun onProgress(url: String, downloaded: Long, total: Long) { + Logger.d(ImageAndVideoRotation.TAG, "download-onProgress== ${ (downloaded * 1.0f * 100/total).toInt() }") } - override fun onProgress(url: String?, length: Int) { - Logger.d(ImageAndVideoRotation.TAG, "download-onProgress== $length") - } - - override fun onFinished(url: String?, threadBean: ThreadBean?) { + override fun onFinished(url: String, path: String) { Logger.d(ImageAndVideoRotation.TAG, "download-onFinished = $url") if (url.equals(fileNetPath)) { //发现下载工具在断网又连网后,已完成的任务又都下载,跳转播放出现问题 //下载完成 ThreadUtils.runOnUiThread { - startPlay(Uri.fromFile(File(mVideoDirPath + downloadVideoName)).toString()) + startPlay(Uri.fromFile(File(path)).toString()) } } else {//如果当前文件不存在再次去下载当前的 Logger.d( ImageAndVideoRotation.TAG, "download-onFinished = not current" + ",currentUrl = $fileNetPath " ) - if (FileUtils.isFileExists(mVideoDirPath + downloadVideoName)) { + if (FileUtils.isFileExists(path)) { Logger.d(ImageAndVideoRotation.TAG, "have download startPlay") ThreadUtils.runOnUiThread { - startPlay(Uri.fromFile(File(mVideoDirPath + downloadVideoName)).toString()) + startPlay(Uri.fromFile(File(path)).toString()) } return } else { @@ -244,14 +245,10 @@ class AdvanceVideoView @JvmOverloads constructor( } } - override fun onError(url: String?, errorMsg: String?) { - Logger.d(ImageAndVideoRotation.TAG, "download-onError-$errorMsg") + override fun onError(url: String, error: String?) { + Logger.d(ImageAndVideoRotation.TAG, "download-onError-$error") //出错再次下载 - if (errorMsg != null) { - if (errorMsg.startsWith("initFailed")) { - startDownLoadVideo() - } - } + startDownLoadVideo() } } } \ No newline at end of file diff --git a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data index ab077f9849..8e06219090 100644 Binary files a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data and b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style.data differ diff --git a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data index 01f7f2116e..e5a16d46be 100644 Binary files a/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data and b/OCH/mogo-och-shuttle-passenger/src/main/assets/map_style_extra.data differ diff --git a/OCH/mogo-och-shuttle/build.gradle b/OCH/mogo-och-shuttle/build.gradle index 9b8e2e5d59..07d4756de7 100644 --- a/OCH/mogo-och-shuttle/build.gradle +++ b/OCH/mogo-och-shuttle/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 6c353544a0..2afd1c117d 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -145,18 +145,12 @@ public abstract class BaseBusTabFragment if (controller != null) { //切换地图的远近视图 if (controller.getCurrentMapVisualAngle().isLongSight()) { - CallerVisualAngleManager.INSTANCE.updateLongSightLevel(false); 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()) { - CallerVisualAngleManager.INSTANCE.updateLongSightLevel(true); - if (FunctionBuildConfig.isRomaMode) { - controller.setRomaMode(1); - } else { - Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMapUIController()).setLockMode(false); - controller.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); - } + 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); diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index d2bf3a6cf7..737a96683a 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -25,8 +25,10 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; 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.ToastUtils; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.MogoMarkerOptions; +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; @@ -486,20 +488,29 @@ public class BusFragment extends BaseBusTabFragment CallerLogger.INSTANCE.d(M_BUS + "setMapMaker= "+Thread.currentThread().getName(), uuid + "=latitude=" + lat + ",longitude=" + longi); - MogoMarkerOptions options = new MogoMarkerOptions() - .owner(BusConst.TYPE_MARKER_BUS_ORDER) + Point.Options.Builder builder = new Point.Options.Builder(BusConst.TYPE_MARKER_BUS_ORDER, Level.MAP_MARKER) + .setId(uuid) .anchor(0.5f, 0.5f) .set3DMode(true) - .gps(true) + .isUseGps(true) .controlAngle(true) .icon3DRes(resourceId) .latitude(lat) .longitude(longi); - IMogoMarker marker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).addMarker(uuid, options); - CenterLine centerLine = CallerMapUIServiceManager.INSTANCE.getMapUIController().getCenterLineInfo( - longi,lat,-1); - if (null != centerLine && marker != null) { // 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 地图未初始化会返回空 - marker.setRotateAngle(centerLine.getAngle().floatValue()); + 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()); } }; @@ -509,7 +520,7 @@ public class BusFragment extends BaseBusTabFragment Runnable removeMapMarkerRunnable = () -> { CallerLogger.INSTANCE.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(), uuid+"=latitude="+lat+",longitude="+longi); - Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid); + Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getOverlayManager()).removePoint(uuid); }; OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable); } diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java index a1c23413a0..7fe377e205 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -227,9 +227,15 @@ public class OrderModel { private final IReceivedMsgListener mReceivedMsgListener = new IReceivedMsgListener() { + @Override + public void onReceivedServerSn(@Nullable String sn) { + + } + @Override public void onReceivedMsg(int type, @NonNull byte[] byteArray) { if (OchCommonConst.BUSINESS_STRING == type){ + CallerLogger.INSTANCE.d(M_BUS + BaseDPMsg.TAG,new String(byteArray)); BaseDPMsg msg = GsonUtils.fromJson(new String(byteArray),BaseDPMsg.class); if (msg!=null && msg.getType() == DPMsgType.TYPE_TASK_DETAILS.getType()){ sendTaskDetailsToClients(); @@ -261,7 +267,7 @@ public class OrderModel { } if (list != null && list.contains(2)){ //乘客屏 - AppConnectMsg msg = new AppConnectMsg(true,false,obj.getContext()); + AppConnectMsg msg = new AppConnectMsg(true,false,obj.getContext(),-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(msg).getBytes()); } @@ -838,7 +844,7 @@ public class OrderModel { private void sendArrivedStationToClient(String arriveStation) { AppConnectMsg arrivedMsg = new AppConnectMsg(false,true,String.format(mContext .getString(R.string.bus_arrived_station_tip), - arriveStation)); + arriveStation),-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(arrivedMsg).getBytes()); } @@ -846,7 +852,7 @@ public class OrderModel { private void sendStartStationToClient(String nextStation) { AppConnectMsg startMsg = new AppConnectMsg(false,true,String.format(mContext .getString(R.string.bus_leave_station_tip), - nextStation)); + nextStation),-1); UiThreadHandler.postDelayed(()-> CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, @@ -855,14 +861,14 @@ public class OrderModel { private void sendEndTaskToClient() { AppConnectMsg endMsg = new AppConnectMsg(false,true,mContext - .getString(R.string.bus_end_task_tip)); + .getString(R.string.bus_end_task_tip),-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(endMsg).getBytes()); } public void sendWriteOffNumToClient(String msg){ - AppConnectMsg passengerMsg = new AppConnectMsg(false,true,msg); + AppConnectMsg passengerMsg = new AppConnectMsg(false,true,msg,-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(passengerMsg).getBytes()); diff --git a/OCH/mogo-och-shuttle/src/main/res/layout/bus_base_fragment.xml b/OCH/mogo-och-shuttle/src/main/res/layout/bus_base_fragment.xml index 04f8739e01..6aea05d01b 100644 --- a/OCH/mogo-och-shuttle/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/mogo-och-shuttle/src/main/res/layout/bus_base_fragment.xml @@ -36,11 +36,6 @@ - - - () { @Override diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index d74028ff9d..d61feb6cc9 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -11,6 +11,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.order.CallerOrderListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; @@ -162,6 +163,7 @@ public class BaseTaxiPassengerPresenter extends Presenter { mView.showOrHideServingOrderFragment(false,true); + mView.showOrHideOverMapViewFragment(false); mView.showOrHideStartAutopilotView(false,false); mView.showOrHidePressengerCheckPager(false, "", "", "", "", ""); @@ -208,6 +210,9 @@ public class BaseTaxiPassengerPresenter extends Presenter { mView.showOrHideServingOrderFragment(false,true); mView.showOrHideArrivedEndLayout(true, order.endSiteAddr,order.orderNo); + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false); }); clearV2XMarkers(); return; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt index ee3174b8ee..bacbed20e7 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt @@ -5,12 +5,27 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.mogo.commons.mvp.BaseFragment +import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.function.view.OverMapView +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.taxi.passenger.constant.TaxiPassengerOrderStatusEnum +import com.mogo.och.taxi.passenger.model.TaxiPassengerModel +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import java.util.concurrent.TimeUnit class OverviewFragment : BaseFragment() { private var overmapview: OverMapView?=null + private var lifeVisable2User = false + private var finalVisable2User = false + + private var subscribe: Disposable?=null + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -23,24 +38,83 @@ class OverviewFragment : BaseFragment() { viewGroup.removeView(overmapview) } overmapview?.onCreateView(savedInstanceState) + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onCreateView") + statusChange(TaxiPassengerModel.getInstance().curOrderStatus) return overmapview!! } override fun onResume() { super.onResume() overmapview?.onResume() + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onResume") + lifeVisable2User = true + checkVisable() } override fun onPause() { super.onPause() overmapview?.onPause() + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onPause") + lifeVisable2User = false + checkVisable() + } + + private fun checkVisable() { + + subscribe?.let { + if (!it.isDisposed) { + it.dispose() + } + } + subscribe = Observable.timer(500, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + if(lifeVisable2User){//展示 + if(!finalVisable2User){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"正在展示") + finalVisable2User = true + statusChange(TaxiPassengerModel.getInstance().curOrderStatus) + } + + }else{//没有展示 + if(finalVisable2User){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"已经隐藏") + finalVisable2User = false + stopAndClear() + } + } + } } override fun onDestroy() { super.onDestroy() overmapview?.onDestroy() + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onDestroy") } + private fun statusChange(currentStatusEnum: TaxiPassengerOrderStatusEnum){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"状态变更最新状态:$currentStatusEnum") + when (currentStatusEnum) { + TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> { + CallerFuncBizManager.bizProvider.getAllV2XEvents() + } + TaxiPassengerOrderStatusEnum.ArriveAtEnd,TaxiPassengerOrderStatusEnum.JourneyCompleted, + TaxiPassengerOrderStatusEnum.Cancel -> { + // stop clear + stopAndClear() + } + else -> {} + } + } + + private fun stopAndClear(){ + CallerFuncBizManager.bizProvider.stopQueryV2XEvents() + UiThreadHandler.post({ + overmapview?.clearV2XMarkers() + }, UiThreadHandler.MODE.QUEUE) + } + + override fun getLayoutId(): Int { return 0 } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 1a15d6abc4..3254104ca0 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -11,14 +11,13 @@ import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.Lifecycle; import com.mogo.commons.module.status.MogoStatusManager; import com.mogo.commons.mvp.MvpFragment; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; -import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager; import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView; import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxButtonView; import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxListView; @@ -52,7 +51,7 @@ import java.util.Objects; * @author tongchenfei */ public class TaxiPassengerBaseFragment extends MvpFragment - implements IMogoMapListener, TaxiPassengerTaxiView, ITPClickStartAutopilotCallback{ + implements IMogoMapListener, TaxiPassengerTaxiView, ITPClickStartAutopilotCallback { public static final String TAG = "TaxiPassengerBaseFragment"; @@ -109,11 +108,11 @@ public class TaxiPassengerBaseFragment extends MvpFragment { - if(show){ + if (show) { viewPassengerMsgBoxList.setVisibility(View.VISIBLE); viewPassengerMsgBoxBubble.setVisibility(View.GONE); viewPassengerMsgBoxBubble.isShowData(false); - }else{ + } else { viewPassengerMsgBoxList.setVisibility(View.GONE); viewPassengerMsgBoxBubble.setVisibility(View.VISIBLE); viewPassengerMsgBoxBubble.isShowData(true); @@ -146,18 +145,12 @@ public class TaxiPassengerBaseFragment extends MvpFragment { - OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity(),0,true,-1,true); + OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity(), 0, true, -1, true); //showOrHideArrivedEndLayout(true, "北京北京北京", "1527481606997577728"); //showOrHidePressengerCheckPager(true, "开始站点开", "开始站点开始站点开始", "2", "京A888888", "18811539480"); //OCHFloatWindowManager.getInstance().ShowFloatWindow(getContext()); @@ -364,21 +357,25 @@ public class TaxiPassengerBaseFragment extends MvpFragment 2) { + if (mCoordinatesLatLng.size() >= 2) { // 设置开始结束Marker位置 LatLng startLatLng = mCoordinatesLatLng.get(0); LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); + if (mStartMarker != null) { + mStartMarker.setPosition(startLatLng); + mStartMarker.setVisible(true); + } - mStartMarker.setPosition(startLatLng); - mEndMarker.setPosition(endLatLng); - mStartMarker.setVisible(true); - mEndMarker.setVisible(true); + if (mEndMarker != null) { + mEndMarker.setPosition(endLatLng); + mEndMarker.setVisible(true); + } } } @@ -241,7 +245,7 @@ public class TaxiPassengerMapDirectionView addRouteColorList(); - if (mCoordinatesLatLng.size() > 2) { + if (mCoordinatesLatLng.size() >= 2) { //设置线段纹理 PolylineOptions polylineOptions = new PolylineOptions(); polylineOptions.addAll(mCoordinatesLatLng); diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/iv_roma_passenger_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/iv_roma_passenger_bg.png new file mode 100644 index 0000000000..41378d1b41 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/iv_roma_passenger_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/iv_roma_taxi_passenger_press_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/iv_roma_taxi_passenger_press_bg.png new file mode 100644 index 0000000000..59c45b7c18 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/iv_roma_taxi_passenger_press_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/roma_taxi_p_bg_selector.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/roma_taxi_p_bg_selector.xml new file mode 100644 index 0000000000..05c96dc351 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/roma_taxi_p_bg_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml index 5473f300af..85eba2cdd4 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -40,11 +40,6 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - + + - + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi/build.gradle b/OCH/mogo-och-taxi/build.gradle index f4e3a975d6..3d5e7a6590 100644 --- a/OCH/mogo-och-taxi/build.gradle +++ b/OCH/mogo-och-taxi/build.gradle @@ -1,5 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.alibaba.arouter' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index d0d6536505..d07526da74 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -3,6 +3,7 @@ package com.mogo.och.taxi.model; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -129,7 +130,7 @@ public class TaxiModel { private volatile boolean isRestartAutopilot = false; - private List mRoutePoints = new ArrayList<>(); + private final List mRoutePoints = new ArrayList<>(); private int mPreRouteIndex = 0; private double mLongitude, mLatitude; @@ -898,12 +899,27 @@ public class TaxiModel { clientPkFileName = "sn" ) public void startAutoPilot() { + if (!checkCurrentOCHOrder()) { CallerLogger.INSTANCE.e(M_TAXI + TAG, "no order or order is empty."); ToastUtils.showShort("当前订单不存在或异常!"); return; } + //根据开关和后台是否发布轨迹启动自驾 + if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrl) + && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrlDPQP)){ + ToastUtils.showLong("无发布轨迹, 请发布后重试"); + CallerLogger.INSTANCE.e(M_TAXI + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand + + "busRoutesResult.csvFileUrl = "+ mCurrentOCHOrder.csvFileUrl + + "busRoutesResult.csvFileUrlDPQP = "+mCurrentOCHOrder.csvFileUrlDPQP); + return; + } + + CallerLogger.INSTANCE.e(M_TAXI + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand); + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试"); @@ -1160,7 +1176,6 @@ public class TaxiModel { @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { - if (autopilotStatusInfo == null) return; int state = autopilotStatusInfo.getState(); if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (state != mPrevAPStatus && mADASStatusCallback != null){ @@ -1400,7 +1415,9 @@ public class TaxiModel { , "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime + " thread = "+ Thread.currentThread().getName()); - mCurrentOCHOrder.decreaseTravelDistance(lastSumLength); + if (mCurrentOCHOrder != null){ + mCurrentOCHOrder.decreaseTravelDistance(lastSumLength); + } if (mOrderStatusCallback != null) { mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) lastSumLength, (long) lastTime); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java index 3a771ca3ae..6574a6ca89 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java @@ -128,9 +128,9 @@ public class TaxiModelLoopManager { CallerLogger.INSTANCE.i(M_TAXI + TAG, "startCalculateRouteInfoLoop()"); if (mCalculateRouteDisposable != null) return; - if (mCalculateRouteDisposable == null){ - mCalculateRouteDisposable = new CompositeDisposable(); - } + + mCalculateRouteDisposable = new CompositeDisposable(); + Disposable disposable = loopDynamicCalculateRouteInfo() .doOnSubscribe(new Consumer() { @Override diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index d43dddc681..72c76408eb 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -13,6 +13,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.order.CallerOrderListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; @@ -243,7 +244,11 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){ TaxiModel.getInstance().startDynamicCalculateRouteInfo(); - runOnUIThread(() -> mView.updateCtvAutopilotStatusTag(true)); + runOnUIThread(() -> { + mView.updateCtvAutopilotStatusTag(true); + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(true); + }); + } if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus || @@ -251,6 +256,11 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiOrderStatusEnum.JourneyCompleted.getCode() == order.orderStatus){ TaxiModel.getInstance().startOrStopCalculateRouteInfo(false); TaxiModel.getInstance().setRouteLineMarker(null); + runOnUIThread(() -> { + if(TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus){ + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false); + } + }); } runOnUIThread(() -> mView.updateCurrentOrderStatusChanged(order)); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index 8b408dc38d..2bd1fc7c0d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -25,7 +25,6 @@ import androidx.fragment.app.FragmentTransaction; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; @@ -33,7 +32,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener 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.call.map.CallerVisualAngleManager; 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; @@ -43,7 +41,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; 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; -import com.mogo.map.MogoMapUIController; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; @@ -84,7 +81,6 @@ public abstract class BaseTaxiTabFragment { - if(show){ + if (show) { viewDriverMsgBoxList.setVisibility(View.VISIBLE); viewDriverMsgBoxList.notifyData(); viewDriverMsgBoxBubble.setVisibility(View.GONE); viewDriverMsgBoxBubble.isShowData(false); - }else{ + } else { viewDriverMsgBoxList.setVisibility(View.GONE); viewDriverMsgBoxBubble.setVisibility(View.VISIBLE); viewDriverMsgBoxBubble.isShowData(true); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index f03cec0009..793bb24cb6 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -17,7 +17,6 @@ import androidx.annotation.RequiresApi; import androidx.constraintlayout.widget.ConstraintLayout; import com.amap.api.navi.model.NaviLatLng; -import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; @@ -26,8 +25,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.DateTimeUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.MogoMarkerOptions; +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.common.module.map.AmapNaviToDestinationModel; import com.mogo.och.common.module.map.ICommonNaviChangedCallback; import com.mogo.och.common.module.utils.DateTimeUtil; @@ -44,7 +45,6 @@ import com.mogo.och.taxi.model.TaxiModel; import java.util.Calendar; import java.util.List; -import java.util.Objects; /** * @author congtaowang @@ -428,8 +428,8 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment dis = NumberFormatUtil.formatLong( (double) distance/ 1000); } - String strHtml2 = "距离 " + "" + dis + "" + " 公里" - + ",用时 " + "" + (int)Math.ceil( (double) duration/ 60) + "" + " 分钟"; + String strHtml2 = "全程 " + "" + dis + "" + " 公里" + + ",总用时 " + "" + (int)Math.ceil( (double) duration/ 60) + "" + " 分钟"; if (mContentModule2 != null && mContentModule2.getVisibility() == View.VISIBLE) { mDistanceAndTime2.setText(Html.fromHtml(strHtml2)); } else if (mContentModule3 != null && mContentModule3.getVisibility() == View.VISIBLE) { @@ -752,20 +752,29 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment CallerLogger.INSTANCE.d(M_TAXI + "setMapMaker= " + Thread.currentThread().getName(), uuid + "=latitude=" + station.get(1) + ",longitude=" + station.get(0)); - MogoMarkerOptions options = new MogoMarkerOptions() - .owner(TaxiConst.TYPE_MARKER_TAXI_ORDER) + Point.Options.Builder builder = new Point.Options.Builder(TaxiConst.TYPE_MARKER_TAXI_ORDER, Level.MAP_MARKER) + .setId(uuid) .anchor(0.5f, 0.5f) .set3DMode(true) - .gps(true) + .isUseGps(true) .controlAngle(true) .icon3DRes(resourceId) .latitude(station.get(1)) .longitude(station.get(0)); - IMogoMarker marker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).addMarker(uuid, options); - CenterLine centerLine = CallerMapUIServiceManager.INSTANCE.getMapUIController().getCenterLineInfo(station.get(0) - , station.get(1), -1); - if (null != centerLine && marker != null) {// 有可能鹰眼map为空没有角度。判空使用后可能造成maker角度跟道路角度不一致 - marker.setRotateAngle(centerLine.getAngle().floatValue()); + IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController(); + if (mapUIController != null) { + CenterLine centerLine = mapUIController.getCenterLineInfo(station.get(0) + , station.get(1), -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()); } }; OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable); @@ -774,7 +783,11 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment Runnable removeMapMarkerRunnable = () -> { CallerLogger.INSTANCE.d(M_TAXI + "RemoveMapMaker=" + Thread.currentThread().getName(), uuid + "=latitude=" + station.get(1) + ",longitude=" + station.get(0)); - Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid); +// Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp())).removeMarkers(uuid); + IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); + if (overlayManager != null) { + overlayManager.removePoint(uuid); + } }; OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java index b2fa0f7929..055610d004 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java @@ -179,32 +179,35 @@ public class TaxiMapDirectionView if (gnssInfo == null){ return; } - LatLng currentLatLng = new LatLng(gnssInfo.getLatitude(), gnssInfo.getLongitude()); - - if (mCoordinatesLatLng.size() > 1) { - //圈定地图显示范围 - LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); - //存放经纬度 - LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); - boundsBuilder.include(currentLatLng); - boundsBuilder.include(endLatLng); - //第二个参数为四周留空宽度 - mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100,100,100,100)); + try { + LatLng currentLatLng = new LatLng(gnssInfo.getLatitude(), gnssInfo.getLongitude()); + if (mCoordinatesLatLng.size() > 1) { + //圈定地图显示范围 + LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); + //存放经纬度 + LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); + boundsBuilder.include(currentLatLng); + boundsBuilder.include(endLatLng); + //第二个参数为四周留空宽度 + mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100,100,100,100)); // CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2--moveCamera :" + location.getLatitude()+", "+location.getLongitude()); - } else { - //设置希望展示的地图缩放级别 - CameraPosition cameraPosition = new CameraPosition.Builder() - .target(mCarMarker.getPosition()).tilt(0).bearing((float) gnssInfo.getHeading()).zoom(zoomLevel).build(); - mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); - } - //更新车辆位置 - if (mCarMarker != null) { + } else { + //设置希望展示的地图缩放级别 + CameraPosition cameraPosition = new CameraPosition.Builder() + .target(mCarMarker.getPosition()).tilt(0).bearing((float) gnssInfo.getHeading()).zoom(zoomLevel).build(); + mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); + } + //更新车辆位置 + if (mCarMarker != null) { // CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "location.getBearing() = " + location.getBearing()); - mCarMarker.setRotateAngle((float) (360 - gnssInfo.getHeading())); - mCarMarker.setPosition(currentLatLng); + mCarMarker.setRotateAngle((float) (360 - gnssInfo.getHeading())); + mCarMarker.setPosition(currentLatLng); // CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2--loacation :" + location.getLatitude()+", "+location.getLongitude()); - mCarMarker.setToTop(); + mCarMarker.setToTop(); + } + }catch (Exception e){ + } } @@ -225,11 +228,14 @@ public class TaxiMapDirectionView // 设置开始结束Marker位置 LatLng startLatLng = mCoordinatesLatLng.get(0); LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); - - mStartMarker.setPosition(startLatLng); - mEndMarker.setPosition(endLatLng); - mStartMarker.setVisible(true); - mEndMarker.setVisible(true); + if (mStartMarker != null) { + mStartMarker.setPosition(startLatLng); + mStartMarker.setVisible(true); + } + if (mEndMarker != null) { + mEndMarker.setPosition(endLatLng); + mEndMarker.setVisible(true); + } } } diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_normal.png b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_normal_och.png similarity index 100% rename from OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_normal.png rename to OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_normal_och.png diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_select.png b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_select_och.png similarity index 100% rename from OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_select.png rename to OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_ai_select_och.png diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_normal.png b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_normal_och.png similarity index 100% rename from OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_normal.png rename to OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_normal_och.png diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_select.png b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_select_och.png similarity index 100% rename from OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_select.png rename to OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/icon_bad_case_select_och.png diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/ai_collect_selector.xml b/OCH/mogo-och-taxi/src/main/res/drawable/ai_collect_selector.xml deleted file mode 100755 index 879be14e27..0000000000 --- a/OCH/mogo-och-taxi/src/main/res/drawable/ai_collect_selector.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/ai_collect_selector_och.xml b/OCH/mogo-och-taxi/src/main/res/drawable/ai_collect_selector_och.xml new file mode 100755 index 0000000000..a130b0115b --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/res/drawable/ai_collect_selector_och.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/bad_case_selector.xml b/OCH/mogo-och-taxi/src/main/res/drawable/bad_case_selector.xml deleted file mode 100755 index b0e7932bd4..0000000000 --- a/OCH/mogo-och-taxi/src/main/res/drawable/bad_case_selector.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/bad_case_selector_och.xml b/OCH/mogo-och-taxi/src/main/res/drawable/bad_case_selector_och.xml new file mode 100755 index 0000000000..fbc6c83a08 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/res/drawable/bad_case_selector_och.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml index bdc8f211c2..7eee534d3c 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml @@ -9,7 +9,7 @@ + android:layout_height="match_parent" /> + android:textColor="#FFFFFF" + android:textSize="74dp" /> + android:textSize="32dp" /> @@ -58,8 +56,8 @@ android:id="@+id/module_mogo_och_autopilot_status" android:layout_width="@dimen/taxi_tab_autoaploit_width" android:layout_height="@dimen/taxi_tab_autoaploit_height" - android:layout_marginTop="20dp" android:layout_marginLeft="220dp" + android:layout_marginTop="20dp" android:background="@drawable/taxi_autopilot_bg_selector" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -71,33 +69,28 @@ + android:layout_gravity="center_horizontal" + android:layout_marginTop="@dimen/dp_56" + android:src="@drawable/taxi_ic_autopilot" /> + - - - + app:layout_constraintTop_toTopOf="parent" /> + tools:visibility="visible" /> + app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon" /> @@ -254,16 +246,17 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" /> + + android:textColor="@color/taxi_role_text_color" + android:textSize="@dimen/taxi_diver_role_size" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" /> + + android:background="@drawable/bad_case_selector_och"/> - - - + + + + + + + + + + + + + + + + + + +