diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
index 7f0d56e8ad..a9bb7c5d84 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
@@ -305,6 +305,7 @@ class MogoOCHTaxiModel {
*/
public void setOnTheWay2EndStation( boolean isOnTheWay2EndStation ) {
this.mIsOnTheWay2EndStation = isOnTheWay2EndStation;
+ OCHTaxiUiController.getInstance().onTheWay2EndStation();
}
/**
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
index c74e7a86f3..341119683a 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
@@ -1,18 +1,18 @@
package com.mogo.och.taxi.ui;
import android.os.Bundle;
-import android.widget.Button;
-import android.widget.TextView;
+import android.view.View;
import androidx.annotation.NonNull;
-import com.mogo.commons.mvp.MvpFragment;
import com.mogo.module.common.MogoApisHandler;
+import com.mogo.och.BaseOchFragment;
import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback;
import com.mogo.och.taxi.MogoOCHTaxiModel;
import com.mogo.och.taxi.OCHOrderStatus;
import com.mogo.och.taxi.OCHOrderStatusCallback;
import com.mogo.och.taxi.R;
+import com.mogo.och.view.SlidePanelView;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.logger.Logger;
@@ -24,7 +24,7 @@ public
*
* 网约车-出租车UI
*/
-class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > implements OCHTaxiView,
+class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > implements OCHTaxiView,
IMogoStatusChangedListener, IMogoOCHTaxiArriveCallback {
public static final String TAG = "OCHTaxiFragment";
@@ -38,46 +38,14 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple
return fragment;
}
- private TextView orderInfo;
- private Button autoPilot;
-
@Override
- protected int getLayoutId() {
- return R.layout.module_och_taxi_fragment;
+ public int getStationPanelViewId() {
+ return R.layout.module_och_taxi_panel;
}
@Override
protected void initViews() {
-
- orderInfo = findViewById( R.id.orderInfo );
- autoPilot = findViewById( R.id.autoPilot );
- orderInfo.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().toString() );
- autoPilot.setOnClickListener( view -> {
- if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) {
- Logger.w( TAG, "已到达终点" );
- return;
- }
- MogoOCHTaxiModel.getInstance().startAutoPilot();
- MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true );
- MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.OnTheWayToEndStation, new OCHOrderStatusCallback() {
- @Override
- public void onSuccess( Object data ) {
- Logger.d( TAG, "更新状态成功" );
- }
-
- @Override
- public void onFail() {
- Logger.d( TAG, "更新状态失败" );
- }
-
-
- @Override
- public void onError() {
- Logger.d( TAG, "更新状态失败2" );
- }
- } );
- } );
-
+ super.initViews();
if ( MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
@@ -124,14 +92,19 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple
private void initOrderStatus() {
if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) {
Logger.d( TAG, "已经达到终点" );
+ slidePanelView.setVisibility( View.VISIBLE );
+ slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_end_station ) );
return;
}
if ( MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) {
Logger.d( TAG, "已经去往终点" );
+ slidePanelView.setVisibility( View.GONE );
return;
}
if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() ) {
Logger.d( TAG, "已经达到起点" );
+ slidePanelView.setVisibility( View.VISIBLE );
+ slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) );
return;
}
}
@@ -139,11 +112,14 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple
@Override
public void onArriveAtStartStation() {
Logger.d( TAG, "通知达到起点" );
+ initOrderStatus();
}
@Override
public void onArriveAtEndStation() {
Logger.d( TAG, "通知达到终点" );
+ onAutopilotStatusChanged( false );
+ initOrderStatus();
MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.ArriveAtEndStation, new OCHOrderStatusCallback() {
@Override
public void onSuccess( Object data ) {
@@ -166,6 +142,8 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple
@Override
public void onTheWay2EndStation() {
Logger.d( TAG, "通知去往终点" );
+ onAutopilotStatusChanged( true );
+ initOrderStatus();
}
@Override
@@ -177,4 +155,56 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple
.unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null );
}
+
+ @Override
+ public SlidePanelView.OnSlidePanelMoveToEndListener getSlidePanelOnEndListener() {
+ return this::onSlidePanelMoveToEnd;
+ }
+
+ private void onSlidePanelMoveToEnd() {
+ // 已到达终点,需要结束订单
+ if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) {
+ MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.Completed, new OCHOrderStatusCallback() {
+ @Override
+ public void onSuccess( Object data ) {
+ Logger.d( TAG, "更新状态成功" );
+ MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder();
+ OCHTaxiUiController.getInstance().removeFragment();
+ }
+
+ @Override
+ public void onFail() {
+ Logger.d( TAG, "更新状态失败" );
+ }
+
+ @Override
+ public void onError() {
+ Logger.d( TAG, "更新状态失败2" );
+ }
+ } );
+ return;
+ // 已到达起点,前往下一站并开启自动驾驶
+ } else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation()
+ && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) {
+ MogoOCHTaxiModel.getInstance().startAutoPilot();
+ MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true );
+ MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.OnTheWayToEndStation, new OCHOrderStatusCallback() {
+ @Override
+ public void onSuccess( Object data ) {
+ Logger.d( TAG, "更新状态成功" );
+ }
+
+ @Override
+ public void onFail() {
+ Logger.d( TAG, "更新状态失败" );
+ }
+
+
+ @Override
+ public void onError() {
+ Logger.d( TAG, "更新状态失败2" );
+ }
+ } );
+ }
+ }
}
diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_fragment.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml
similarity index 79%
rename from OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_fragment.xml
rename to OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml
index efa9185d26..30ea93e8e1 100644
--- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_fragment.xml
+++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml
@@ -18,4 +18,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开启自动驾驶" />
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/values/strings.xml b/OCH/mogo-och-taxi/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..2cbae68623
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+
+
+ 乘客已上车,准备出发
+ 到达站点,乘客已下车
+
\ No newline at end of file
diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java b/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java
index b67939da70..f6c8db5b2a 100644
--- a/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java
+++ b/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java
@@ -19,7 +19,7 @@ import com.mogo.och.view.SlidePanelView;
* @author tongchenfei
*/
public abstract class BaseOchFragment> extends MvpFragment {
- private SlidePanelView slidePanelView;
+ protected SlidePanelView slidePanelView;
private TextView tvNotice;
private CheckedTextView ctvAutopilotStatus;
private FrameLayout flStationPanelContainer;
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/MapStyleController.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/MapStyleController.java
index 4a081d996f..43d2cc140b 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/MapStyleController.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/MapStyleController.java
@@ -24,6 +24,7 @@ class MapStyleController {
private MapStyleController() {
mVrAreaFilters.add( new ShunYiArea() );
+ mVrAreaFilters.add( new OCHArea() );
}
public static MapStyleController getInstance() {
@@ -85,7 +86,21 @@ class MapStyleController {
}
public interface VrAreaFilter {
- boolean isVrArea( MogoLocation location );
+ default boolean isVrArea( MogoLocation location ) {
+ if ( location == null ) {
+ return false;
+ }
+ return location.getLat() > getLeftBottomLat() && location.getLon() > getLeftBottomLon()
+ && location.getLat() < getRightTopLat() && location.getLon() < getRightTopLon();
+ }
+
+ double getLeftBottomLat();
+
+ double getLeftBottomLon();
+
+ double getRightTopLat();
+
+ double getRightTopLon();
}
public static class ShunYiArea implements VrAreaFilter {
@@ -97,12 +112,46 @@ class MapStyleController {
private final double rightTopLon = 116.74804;
@Override
- public boolean isVrArea( MogoLocation location ) {
- if ( location == null ) {
- return false;
- }
- return location.getLat() > leftBottomLat && location.getLon() > leftBottomLon
- && location.getLat() < rightTopLat && location.getLon() < rightTopLon;
+ public double getLeftBottomLat() {
+ return leftBottomLat;
+ }
+
+ @Override
+ public double getLeftBottomLon() {
+ return leftBottomLon;
+ }
+
+ @Override
+ public double getRightTopLat() {
+ return rightTopLat;
+ }
+
+ @Override
+ public double getRightTopLon() {
+ return rightTopLon;
+ }
+ }
+
+ public static class OCHArea implements VrAreaFilter {
+
+ @Override
+ public double getLeftBottomLat() {
+ return 39.97645;
+ }
+
+ @Override
+ public double getLeftBottomLon() {
+ return 116.41673;
+ }
+
+ @Override
+ public double getRightTopLat() {
+ return 0;
+ }
+
+ @Override
+ public double getRightTopLon() {
+ return 0;
}
}
}