diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 740794bd48..771c1f74d7 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -89,7 +89,6 @@ diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoOCHTaxiArriveCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoOCHTaxiArriveCallback.java index 1832059020..b3f683b843 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoOCHTaxiArriveCallback.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IMogoOCHTaxiArriveCallback.java @@ -25,4 +25,9 @@ interface IMogoOCHTaxiArriveCallback { * 去往目的地的路上 */ void onTheWay2EndStation(); + + /** + * 乘客已到达站点 + */ + void onUserArriveAtStartStation(); } 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 a9bb7c5d84..b8956f2f0a 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 @@ -81,6 +81,11 @@ class MogoOCHTaxiModel { */ private boolean mIsArriveAtEndStation = false; + /** + * 乘客已到达上车站点 + */ + private boolean mIsUserArriveAtStartStation = false; + /** * 查询订单信息重试次数 */ @@ -125,7 +130,8 @@ class MogoOCHTaxiModel { *

* 已结束、已取消:清除订单状态 * 已到达目的地:更新UI,显示到达目的地状态 - * 已到达起始地:更新UI,显示已到达起始地状态 + * 车辆已到达起始地:等待乘客上车,并确认上车 + * 乘客已上车:更新UI,显示已到达起始站,等待安全员确认开启自动驾驶 * 在去往目的地的路上:显示去往目的地的路上 * 在去往起始地的路上、未获取具体状态:以新接收订单开始处理 * @@ -150,18 +156,28 @@ class MogoOCHTaxiModel { mIsArriveAtEndStation = true; mIsArriveAtStartStation = true; mIsOnTheWay2EndStation = false; + mIsUserArriveAtStartStation = true; OCHTaxiUiController.getInstance().addFragment(); break; case ArriveAtStartStation: mIsArriveAtStartStation = true; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; + mIsUserArriveAtStartStation = false; + OCHTaxiUiController.getInstance().addFragment(); + break; + case UserArriveAtStartStation: + mIsArriveAtStartStation = true; + mIsArriveAtEndStation = false; + mIsOnTheWay2EndStation = false; + mIsUserArriveAtStartStation = true; OCHTaxiUiController.getInstance().addFragment(); break; case OnTheWayToEndStation: mIsArriveAtStartStation = true; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = true; + mIsUserArriveAtStartStation = true; OCHTaxiUiController.getInstance().addFragment(); break; case OnTheWayToStartStation: @@ -169,6 +185,7 @@ class MogoOCHTaxiModel { mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; + mIsUserArriveAtStartStation = false; mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); break; } @@ -220,6 +237,7 @@ class MogoOCHTaxiModel { @Override public void onCarLocationChanged2( Location location ) { + Logger.d( TAG, "定位已判断是否达到上车站点" ); onLocationChanged( location ); } @@ -245,6 +263,10 @@ class MogoOCHTaxiModel { unregisterCarLocationListener(); return; } + if ( mIsUserArriveAtStartStation ) { + unregisterCarLocationListener(); + return; + } judgeStationStation( location ); } @@ -298,6 +320,15 @@ class MogoOCHTaxiModel { return mIsArriveAtEndStation; } + /** + * 用户是否达到上车站点 + * + * @return + */ + public boolean isUserArriveAtStartStation() { + return mIsUserArriveAtStartStation; + } + /** * 设置去往终点状态 * @@ -400,6 +431,11 @@ class MogoOCHTaxiModel { clearCurrentOCHOrder(); OCHTaxiUiController.getInstance().removeFragment(); break; + case UserArriveAtStartStation: + mIsArriveAtStartStation = true; + mIsUserArriveAtStartStation = true; + OCHTaxiUiController.getInstance().onUserArriveAtStartStation(); + break; default: Logger.d( TAG, "current order status: %s", status ); break; @@ -519,6 +555,7 @@ class MogoOCHTaxiModel { mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; + mIsUserArriveAtStartStation = false; SharedPrefsMgr.getInstance( mContext ).remove( SP_KEY_OCH_TAXI_ORDER ); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHOrderStatus.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHOrderStatus.java index 93817ac3ab..c140332764 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHOrderStatus.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHOrderStatus.java @@ -7,21 +7,23 @@ public * * 未派单 0 * 去往上车站点 1 - * 已到达上车站点 2 - * 去往下车站点 3 - * 到达下车站点 4 - * 已完成 5 - * 已取消 6 + * 车辆已到达上车站点 2 + * 乘客已到达上车站点 3 + * 去往下车站点 4 + * 到达下车站点 5 + * 已完成 6 + * 已取消 7 */ enum OCHOrderStatus { None( 0 ), OnTheWayToStartStation( 1 ), ArriveAtStartStation( 2 ), - OnTheWayToEndStation( 3 ), - ArriveAtEndStation( 4 ), - Completed( 5 ), - Cancel( 6 ); + UserArriveAtStartStation( 3 ), + OnTheWayToEndStation( 4 ), + ArriveAtEndStation( 5 ), + Completed( 6 ), + Cancel( 7 ); private int code; 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 231b02e613..89c15ecbf8 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 @@ -57,6 +57,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i mEndStationName = findViewById( R.id.module_och_taxi_order_end_station ); mDistance = findViewById( R.id.module_och_taxi_order_distance ); + initListeners(); + initOrderStatus(); if ( MogoApisHandler.getInstance() .getApis() .getStatusManagerApi() @@ -65,8 +67,6 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } else { flatMode(); } - initListeners(); - initOrderStatus(); } private void initListeners() { @@ -93,11 +93,19 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } private void vrMode() { - + if ( mRootView != null ) { + mRootView.setVisibility( + View.VISIBLE + ); + } } private void flatMode() { - + if ( mRootView != null ) { + mRootView.setVisibility( + View.GONE + ); + } } private void initOrderStatus() { @@ -117,9 +125,12 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i mOrderStatus.setText( "去往下车地点" ); } else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() ) { Logger.d( TAG, "已经达到起点" ); - slidePanelView.setVisibility( View.VISIBLE ); - slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); mOrderStatus.setText( "已到达上车地点,等待乘客上车" ); + if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) { + Logger.d( TAG, "乘客已上车" ); + slidePanelView.setVisibility( View.VISIBLE ); + slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); + } } else if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { Logger.d( TAG, "去往上车站点" ); slidePanelView.setVisibility( View.GONE ); @@ -170,6 +181,12 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i initOrderStatus(); } + @Override + public void onUserArriveAtStartStation() { + Logger.d( TAG, "通知乘客已上车" ); + initOrderStatus(); + } + @Override public void onDestroyView() { super.onDestroyView(); @@ -207,8 +224,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } } ); return; - // 已到达起点,前往下一站并开启自动驾驶 - } else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() + // 乘客已确认到达起点,前往下一站并开启自动驾驶 + } else if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { MogoOCHTaxiModel.getInstance().startAutoPilot(); MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true ); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java index 6b696fef07..62bd07a80a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java @@ -126,6 +126,15 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { } ); } + @Override + public void onUserArriveAtStartStation() { + runOnUIThread( () -> { + if ( mOCHTaxiArriveCallback != null ) { + mOCHTaxiArriveCallback.onUserArriveAtStartStation(); + } + } ); + } + private void runOnUIThread( Runnable executor ) { if ( executor == null ) { return; @@ -136,4 +145,5 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback { executor.run(); } } + }