diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/IOCHTaxiAutopilotPlanningCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/IOCHTaxiAutopilotPlanningCallback.java new file mode 100644 index 0000000000..bdd1d074cc --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/IOCHTaxiAutopilotPlanningCallback.java @@ -0,0 +1,15 @@ +package com.mogo.och.taxi.callback; + + +import com.amap.api.maps.model.LatLng; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2021/11/1 + */ +public interface IOCHTaxiAutopilotPlanningCallback { + void setLineMarker(List models); + void routeResult(List models, int haveArrivedIndex); +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java index c34e576b46..af980f8aea 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiOrderStatusCallback.java @@ -49,6 +49,10 @@ public interface ITaxiOrderStatusCallback { // 司机已确认开启自动驾驶环境 void onDriverHasCheckedPilotCondition(boolean isSafe); - //高德导航到达目的地 - void onNaviToEndAmap(boolean isVoicePlay); + /** + * 导航到目的地 + * @param isAmap 是否是高德导航 + * @param isVoicePlay 是否播报声音 + */ + void onNaviToEnd(boolean isAmap, boolean isVoicePlay); } 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 4abbde17e1..2d6570af5f 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 @@ -54,6 +54,7 @@ import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean; import com.mogo.och.taxi.bean.QueryOrderRouteResp; import com.mogo.och.taxi.bean.TaxiDataBaseRespBean; import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean; +import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback; import com.mogo.och.taxi.callback.ITaxiADASStatusCallback; import com.mogo.och.taxi.callback.ITaxiCarStatusCallback; import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback; @@ -117,6 +118,7 @@ public class TaxiModel { private ITaxiCarStatusCallback mCarStatusCallback; //Model->Presenter:接单状态、登录状态和司机今日接单状态 private ITaxiControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等 private ITaxiOrderStatusCallback mOrderStatusCallback; //Model->Presenter:订单变更 + private IOCHTaxiAutopilotPlanningCallback mAutopilotPlanningCallback; private volatile boolean isRestartAutopilot = false; @@ -129,6 +131,11 @@ public class TaxiModel { private TaxiModel() { } + public void setMoGoAutopilotPlanningListener(IOCHTaxiAutopilotPlanningCallback + moGoAutopilotPlanningCallback) { + this.mAutopilotPlanningCallback = moGoAutopilotPlanningCallback; + } + public void setADASStatusCallback(ITaxiADASStatusCallback callback) { this.mADASStatusCallback = callback; } @@ -1360,6 +1367,18 @@ public class TaxiModel { } reportOrderRemain((long) lastSumLength, (long) lastTime); + + routeAndWipe(); + } + } + + private void routeAndWipe() { + if (mRoutePoints != null && mRoutePoints.size() > 0){ + int haveArrivedIndex = CoordinateCalculateRouteUtil + .getArrivedPointIndex(mRoutePoints,mLongitude,mLatitude); + if (mAutopilotPlanningCallback != null){ + mAutopilotPlanningCallback.routeResult(mRoutePoints,haveArrivedIndex); + } } } @@ -1547,10 +1566,12 @@ public class TaxiModel { //导航去订单终点目的地 public void startNaviToEndStation(boolean isVoicePlay){ if (mRoutePoints.size() > 0 ){ //使用自驾轨迹 - + if (mOrderStatusCallback != null){ + mOrderStatusCallback.onNaviToEnd(false,isVoicePlay); + } }else {//使用高的导航 if (mOrderStatusCallback != null){ - mOrderStatusCallback.onNaviToEndAmap(isVoicePlay); + mOrderStatusCallback.onNaviToEnd(true,isVoicePlay); } } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java new file mode 100644 index 0000000000..d6050f2e0c --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java @@ -0,0 +1,79 @@ +package com.mogo.och.taxi.presenter; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; + +import android.os.Looper; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LifecycleOwner; + +import com.amap.api.maps.model.LatLng; +import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.mvp.Presenter; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback; +import com.mogo.och.taxi.model.TaxiModel; +import com.mogo.och.taxi.ui.TaxiRottingNaviFragment; + +import java.util.List; + +/** + * @author congtaowang + * @since 2021/1/18 + * + * 描述 + */ +public class NaviPresenter extends Presenter implements IOCHTaxiAutopilotPlanningCallback { + + private static final String TAG = NaviPresenter.class.getSimpleName(); + + public NaviPresenter(TaxiRottingNaviFragment view) { + super(view); + TaxiModel.getInstance().init(AbsMogoApplication.getApp()); + initListeners(); + } + + @Override + public void onCreate( @NonNull LifecycleOwner owner ) { + super.onCreate( owner ); + CallerLogger.INSTANCE.d( M_TAXI + TAG, " onCreate" ); + } + + @Override + public void onDestroy( @NonNull LifecycleOwner owner ) { + super.onDestroy( owner ); + + releaseListeners(); + TaxiModel.getInstance().release(); + } + + private void initListeners() { + TaxiModel.getInstance().setMoGoAutopilotPlanningListener(this); + } + + private void releaseListeners() { + TaxiModel.getInstance().setMoGoAutopilotPlanningListener(null); + } + + private void runOnUIThread( Runnable executor ) { + if ( executor == null ) { + return; + } + if ( Looper.myLooper() != Looper.getMainLooper() ) { + UiThreadHandler.post( executor ); + } else { + executor.run(); + } + } + + @Override + public void setLineMarker(List models) { + + } + + @Override + public void routeResult(List models, int haveArrivedIndex) { + mView.routeResult(models,haveArrivedIndex); + } +} 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 89e7acb720..2cd80ce226 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 @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.lifecycle.LifecycleOwner; +import com.amap.api.maps.model.LatLng; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; @@ -19,6 +20,7 @@ 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.constant.LoginStatusManager; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback; import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiDriverRoleEnum; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; @@ -314,8 +316,8 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } @Override - public void onNaviToEndAmap(boolean isVoicePlay) { - runOnUIThread( () -> mView.onNaviToEndAmap(isVoicePlay)); + public void onNaviToEnd(boolean isAmap, boolean isVoicePlay) { + runOnUIThread( () -> mView.onNaviToEnd(isAmap,isVoicePlay)); } @Override 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 ba79f28e51..00d7f11be7 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 @@ -76,7 +76,8 @@ public abstract class BaseTaxiTabFragment { - showNaviToStationFragment(false); + showAmapNaviToStationFragment(false); }); } @@ -562,26 +563,26 @@ public abstract class BaseTaxiTabFragment