diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java index 711e9d911f..c15f77d484 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java @@ -7,11 +7,11 @@ package com.mogo.och.taxi.passenger.bean; */ public class TaxiPassengerOrderQueryReqBean { - public String sn; + public String driverSn; public String orderNo; - public TaxiPassengerOrderQueryReqBean(String sn, String orderNo) { - this.sn = sn; + public TaxiPassengerOrderQueryReqBean(String driverSn, String orderNo) { + this.driverSn = driverSn; this.orderNo = orderNo; } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java index 0c90f88f24..49437c86de 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java @@ -17,6 +17,6 @@ public interface IOCHTaxiPassengerOrderStatusCallback { void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order); // 当前位置距离上车点的距离(米)、预估时间(秒) - void onCurrentOrderDistToEndChanged(long meters, long timeInSecond); + void onCurrentOrderDistToEndChanged(int meters, int timeInSecond); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 16feaea347..3d4a2da445 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -4,9 +4,11 @@ import android.content.Context; import android.content.Intent; import android.location.Location; import android.net.ConnectivityManager; +import android.text.TextUtils; import androidx.annotation.Nullable; +import com.amap.api.navi.model.NaviLatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.commons.debug.DebugConfig; @@ -34,6 +36,7 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBea import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; @@ -51,13 +54,15 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * Created by pangfan on 2021/8/19 * * 网约车 - 出租车业务逻辑处理 */ -public class TaxiPassengerModel { +public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback { private static final String TAG = TaxiPassengerModel.class.getSimpleName(); @@ -76,10 +81,11 @@ public class TaxiPassengerModel { private volatile List mWaitServiceList = Collections.emptyList(); //待服务订单 private IOCHTaxiPassengerADASStatusCallback mADASStatusCallback; //Model->Presenter:自动驾驶状态相关 - private IOCHTaxiPassengerControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等 - private IOCHTaxiPassengerOrderStatusCallback mOrderStatusCallback; //Model->Presenter:订单变更 private IOCHTaxiPassengerAutopilotPlanningCallback mAutopilotPlanningCallback; //Model->Presenter:自动驾驶线路规划 + private Map mOrderStatusCallbackMap = new ConcurrentHashMap<>(); + private Map mControllerStatusCallbackMap = new ConcurrentHashMap<>(); + private ITaxiPassengerVeloctityCallback mVeloctityCallback;//道路限速返回 private double mLongitude, mLatitude; @@ -96,12 +102,27 @@ public class TaxiPassengerModel { this.mADASStatusCallback = callback; } - public void setControllerStatusCallback(IOCHTaxiPassengerControllerStatusCallback callback) { - this.mControllerStatusCallback = callback; + public void setControllerStatusCallback(String tag,IOCHTaxiPassengerControllerStatusCallback callback) { + if (tag == null || "".equals(tag)) return; + + if (callback == null) { + mControllerStatusCallbackMap.remove(tag); + return; + } + + mControllerStatusCallbackMap.put(tag,callback); + } - public void setOrderStatusCallback(IOCHTaxiPassengerOrderStatusCallback callback) { - this.mOrderStatusCallback = callback; + public void setOrderStatusCallback(String tag ,IOCHTaxiPassengerOrderStatusCallback callback) { + if (tag == null || "".equals(tag)) return; + + if (callback == null) { + mOrderStatusCallbackMap.remove(tag); + return; + } + + mOrderStatusCallbackMap.put(tag,callback); } public void setVeloctityCallback(ITaxiPassengerVeloctityCallback callback){ @@ -218,8 +239,10 @@ public class TaxiPassengerModel { if (mCurrentOCHOrder == null) { //1.1.1. 当本地无currentOrder(已经完成or取消),则更新currentOrder,并通知ui更新 updateNativeCurrentOrder(data.data.servicing.get(0)); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + if (mOrderStatusCallbackMap.size() > 0) { + for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ + callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + } } } else { //1.1.2. 当本地有currentOrder: @@ -227,10 +250,13 @@ public class TaxiPassengerModel { //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) { queryCurOrderStatus(); - } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { +// } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { + } else { //todo 订单拦截放到各自实现去做 updateNativeCurrentOrder(data.data.servicing.get(0)); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + if (mOrderStatusCallbackMap.size() > 0) { + for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ + callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + } } } } @@ -268,8 +294,10 @@ public class TaxiPassengerModel { } else { updateNativeCurrentOrder(data.data); } - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(data.data); + if (mOrderStatusCallbackMap.size() > 0) { + for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ + callback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + } } } } @@ -346,12 +374,27 @@ public class TaxiPassengerModel { endLon, endLat, carLocation.getLongitude(), carLocation.getLatitude()); mCurrentOCHOrder.decreaseTravelDistance(distance); - if (mOrderStatusCallback != null && distance >= 0) { - mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) distance, 0); - } +// if (mOrderStatusCallback != null && distance >= 0) { +// mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) distance, 0); +// } } } + /** + * 计算订单起终距离 + * @return + */ + public int calculateOrderDistanceSum(){ + double endLon = mCurrentOCHOrder.endSiteGcjPoint.get(0); + double endLat = mCurrentOCHOrder.endSiteGcjPoint.get(1); + double startLon = mCurrentOCHOrder.startSiteGcjPoint.get(0); + double startLat = mCurrentOCHOrder.startSiteGcjPoint.get(1); + double distance = CoordinateUtils.calculateLineDistance( + endLon, endLat, + startLon, startLat); + return new Double(distance).intValue(); + } + //监听网络变化,避免启动机器时无网导致无法更新订单信息 private IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() { @Override @@ -372,8 +415,10 @@ public class TaxiPassengerModel { @Override public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { if (StatusDescriptor.VR_MODE == descriptor) { - if (mControllerStatusCallback != null) { - mControllerStatusCallback.onVRModeChanged(isTrue); + if (mControllerStatusCallbackMap.size() > 0) { + for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ + callback.onVRModeChanged(isTrue); + } } } } @@ -419,8 +464,8 @@ public class TaxiPassengerModel { } mLongitude = location.getLongitude(); mLatitude = location.getLatitude(); - if (mControllerStatusCallback != null) { - mControllerStatusCallback.onCarLocationChanged(location); + for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ + callback.onCarLocationChanged(location); } } }; @@ -529,6 +574,29 @@ public class TaxiPassengerModel { } } }; + + /** + * + */ + public void naviOrderStartToEnd() { + NaviLatLng startNaviLatLng = new NaviLatLng(mLongitude,mLatitude); + NaviLatLng endNaviLatLng = new NaviLatLng(mCurrentOCHOrder.endSiteGcjPoint.get(1), mCurrentOCHOrder.endSiteGcjPoint.get(0)); + TaxiPassengerNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng); + TaxiPassengerNaviToDestinationModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this); + } + + @Override + public void onCurrentNaviDistAndTimeChanged(int meters, int timeInSecond) { + for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ + callback.onCurrentOrderDistToEndChanged(meters,timeInSecond); + } + } + + @Override + public void reInitNaviAmap(boolean isPlay, boolean isRestart) { + + } + /** * END */ diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java index cbc1a8de73..9806e1b9ac 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java @@ -60,6 +60,7 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { mAMapNavi = AMapNavi.getInstance(mContext); mAMapNavi.addAMapNaviListener(this); mAMapNavi.setUseInnerVoice(true, true); + mAMapNavi.stopSpeak(); sList.add(startLatLng); eList.add(endLatLng); }catch (Exception e) { @@ -76,10 +77,6 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { } } - public AMapNavi getmAMapNavi() { - return mAMapNavi; - } - public void destroyAmaNavi(){ if (mAMapNavi != null){ isPlay = false; @@ -249,27 +246,6 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { @Override public void showLaneInfo(AMapLaneInfo aMapLaneInfo) { //显示车道信息 -// StringBuffer sb = new StringBuffer(); -// sb.append("共" + aMapLaneInfo.frontLane.length + "车道"); -// for (int i = 0; i < aMapLaneInfo.frontLane.length; i++) { -// //当前车道可以选择的动作 -// int background = aMapLaneInfo.backgroundLane[i]; -// //当前用户要执行的动作 -// int recommend = aMapLaneInfo.frontLane[i]; -// -// Log.e("ggb", "---->>> background is " + background + " ; recommend is " + recommend); -// //根据文档中每个动作对应的枚举类型,显示对应的图片 -// try { -// sb.append(",第" + (i + 1) + "车道为" + array[background]); -// if (recommend != 255) { -// sb.append(",当前车道可 " + actions[recommend]); -// } -// -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// Log.e("showLaneInfo", sb.toString()); } @Override @@ -347,87 +323,4 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { } - /** - * 车道信息说明: - *

- * 0xFF, 无对应车道 - * 0, 直行 - * 1, 左转 - * 2, 直行+左转 - * 3, 右转 - * 4, 直行+右转 - * 5, 左掉头 - * 6, 左转+右转 - * 7, 直行+左转+右转 - * 8, 右掉头 - * 9, 直行+左掉头 - * 10, 直行+右掉头 - * 11, 左转+左掉头 - * 12, 右转+右掉头 - * 13, 直行+扩展 - * 14, 左转+左掉头+扩展 - * 15, 保留 - * 16, 直行+左转+左掉头 - * 17, 右转+左掉头 - * 18, 左转+右转+左掉头 - * 19, 直行+右转+左掉头 - * 20, 左转+右掉头 - * 21, 公交车道 - * 22, 空车道 - * 23 可变车道 - */ - - String[] array = { - "直行车道" - , "左转车道" - , "左转或直行车道" - , "右转车道" - , "右转或直行车道" - , "左掉头车道" - , "左转或者右转车道" - , " 左转或右转或直行车道" - , "右转掉头车道" - , "直行或左转掉头车道" - , "直行或右转掉头车道" - , "左转或左掉头车道" - , "右转或右掉头车道" - , "直行并且车道扩展" - , "左转+左掉头+扩展" - , "不可以选择该车道" - , "直行+左转+左掉头车道" - , "右转+左掉头" - , "左转+右转+左掉头" - , "直行+右转+左掉头" - , "左转+右掉头" - , "公交车道" - , "空车道" - , "可变车道" - }; - - String[] actions = { - "直行" - , "左转" - , "左转或直行" - , "右转" - , "右转或这行" - , "左掉头" - , "左转或者右转" - , " 左转或右转或直行" - , "右转掉头" - , "直行或左转掉头" - , "直行或右转掉头" - , "左转或左掉头" - , "右转或右掉头" - , "直行并且车道扩展" - , "左转+左掉头+扩展" - , "不可以选择" - , "直行+左转+左掉头" - , "右转+左掉头" - , "左转+右转+左掉头" - , "直行+右转+左掉头" - , "左转+右掉头" - , "公交车道" - , "空车道" - , "可变车道" - }; } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java index 74de6dc5ba..96ba82cacc 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java @@ -22,12 +22,13 @@ interface TaxiPassengerServiceApi { /** * 查询全部服务中/待服务订单(没有的时候返回code 0,空列表) - * @param sn + * @param driverSn * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @GET("/autopilot-car-hailing/order/v2/driver/taxi/orderInService/query") - Observable queryOrdersInAndWaitService(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + @GET("/autopilot-car-hailing/order/v2/driver/taxi/passenger/orderInService/query") + + Observable queryOrdersInAndWaitService(@Header("appId") String appId, @Header("ticket") String ticket, @Query("driverSn") String driverSn); /** @@ -37,7 +38,7 @@ interface TaxiPassengerServiceApi { * @deprecated v2.1_0930需求中暂不再使用此接口 */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/order/v2/driver/taxi/queryOrderById" ) + @POST( "/autopilot-car-hailing/order/v2/driver/taxi/passenger/queryOrderById" ) Observable queryOrderById(@Header ("appId") String appId,@Header("ticket") String ticket,@Body TaxiPassengerOrderQueryReqBean data); /** diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java index 6b89e55f61..47b2401b74 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java @@ -48,7 +48,7 @@ public class TaxiPassengerServiceManager { */ private String getDriverAppSn(){ // return CallerTelematicManager.INSTANCE.getServerToken(); - return "X2020211215MEGXQZJ"; + return "X2020211111NG0XNFK"; } /** 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 8a1aa4c861..64a6827865 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 @@ -30,6 +30,8 @@ public class BaseTaxiPassengerPresenter extends Presenter mView.updateSpeedView(location.getSpeed())); - } } @Override public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) { Log.d(TAG,"order = "+order.toString()); - if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus){ + if (mCurrentPassengerOrder == null){ + mCurrentPassengerOrder = order; //当前无订单 + updateOrderView(mCurrentPassengerOrder); + }else if (mCurrentPassengerOrder.orderStatus != order.orderStatus) { + updateOrderView(order); + } + } + + private void updateOrderView(TaxiPassengerOrderQueryRespBean.Result order) { + if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus + || TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus){ mView.showOrHideServingOrderFragment(true); return; } - if (TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus){ + if (TaxiPassengerOrderStatusEnum.ArriveAtEndStation.getCode() == order.orderStatus){ mView.showOrHideServingOrderFragment(false); return; } } @Override - public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) { + public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) { } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java new file mode 100644 index 0000000000..ac42091c69 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java @@ -0,0 +1,109 @@ +package com.mogo.och.taxi.passenger.presenter; + +import android.location.Location; +import android.os.Build; + +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; +import androidx.lifecycle.LifecycleOwner; + +import com.mogo.commons.mvp.Presenter; +import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo; +import com.mogo.eagle.core.data.map.MogoLatLng; +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback; +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; +import com.mogo.och.taxi.passenger.model.TaxiPassengerModel; +import com.mogo.och.taxi.passenger.ui.TaxiPassengerServingOrderFragment; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/3/14 + */ +public class TaxiPassengerServingOrderPresenter extends Presenter + implements IOCHTaxiPassengerAutopilotPlanningCallback, IOCHTaxiPassengerOrderStatusCallback + , IOCHTaxiPassengerControllerStatusCallback, ITaxiPassengerVeloctityCallback { + + private static final String TAG = TaxiPassengerServingOrderPresenter.class.getSimpleName(); + + private volatile TaxiPassengerOrderQueryRespBean.Result mCurrentPassengerOrder = null; //当前订单 + + public TaxiPassengerServingOrderPresenter(TaxiPassengerServingOrderFragment view) { + super(view); + initListener(); + } + + @Override + public void onResume(@NonNull LifecycleOwner owner) { + super.onResume(owner); + } + + private void initListener() { + TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(this); + TaxiPassengerModel.getInstance().setOrderStatusCallback("TaxiPassengerServingOrderPresenter",this); + TaxiPassengerModel.getInstance().setControllerStatusCallback("TaxiPassengerServingOrderPresenter",this); + TaxiPassengerModel.getInstance().setVeloctityCallback(this); + } + + public void releaseListener(){ + TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(null); + TaxiPassengerModel.getInstance().setOrderStatusCallback("TaxiPassengerServingOrderPresenter",null); + TaxiPassengerModel.getInstance().setControllerStatusCallback("TaxiPassengerServingOrderPresenter",null); + TaxiPassengerModel.getInstance().setVeloctityCallback(null); + + } + + @Override + public void routeResult(List models) { + if (models == null) return; + List latLngList = new ArrayList<>(); + for (AutopilotRouteInfo.RouteModels routeModel : models) { + latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon())); + } + mView.routeResult(latLngList); + } + + @Override + public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) { + if (mCurrentPassengerOrder == null){ + mCurrentPassengerOrder = order; //当前无订单 + mView.updateOrderStatusView(order); + }else if (mCurrentPassengerOrder.orderStatus != order.orderStatus) { + mView.updateOrderStatusView(order); + } + } + + @RequiresApi(api = Build.VERSION_CODES.N) + @Override + public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) { + mView.onCurrentOrderDistToEndChanged(meters,timeInSecond); + } + + @Override + public void onVRModeChanged(boolean isVRMode) { + + } + + @Override + public void onCarLocationChanged(Location location) { + if (location != null){ + mView.onCarLocationChanged(location); + } + } + + @Override + public void onLimitingVelocityChange(int limitingVelocity) { + mView.onLimitingVelocityChange(limitingVelocity); + } + + @Override + public void onDestroy(@NonNull LifecycleOwner owner) { + super.onDestroy(owner); + releaseListener(); + } +} 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 e841b15b3c..2bb232e69a 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 @@ -31,9 +31,10 @@ import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter; * * @author tongchenfei */ -public class TaxiPassengerBaseFragment extends MvpFragment implements IMogoMapListener, TaxiPassengerTaxiView { +public class TaxiPassengerBaseFragment extends MvpFragment + implements IMogoMapListener, TaxiPassengerTaxiView { - static final String TAG = "BaseOchFragment"; + static final String TAG = "TaxiPassengerBaseFragment"; private FrameLayout flNaviPanelContainer; private ImageView mAutopilotImage; @@ -41,7 +42,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment + implements TaxiPassengerTaxiView, ITaxiPassengerMapViewCallback { - private final String TAG = ITaxiPassengerServingOrderFragment.class.getSimpleName(); + private final String TAG = TaxiPassengerServingOrderFragment.class.getSimpleName(); private TextView mTPSpeedTv; @@ -61,11 +68,11 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements private int mLimitingVelocity;// 返回的道路限速值 - public static ITaxiPassengerServingOrderFragment newInstance() { + public static TaxiPassengerServingOrderFragment newInstance() { Bundle args = new Bundle(); - ITaxiPassengerServingOrderFragment fragment = new ITaxiPassengerServingOrderFragment(); + TaxiPassengerServingOrderFragment fragment = new TaxiPassengerServingOrderFragment(); fragment.setArguments(args); return fragment; } @@ -111,7 +118,7 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements } list.add(routeModels); } - routeResult(list); + mPresenter.routeResult(list); return true; } }); @@ -124,16 +131,21 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements mMapDirectionView = findViewById(R.id.taxi_p_order_map_view); mMapDirectionView.onCreateView(savedInstanceState); mMapDirectionView.setTaxiPassengerMapViewCallback(this); + } - initListener(); - + @NonNull + @Override + protected TaxiPassengerServingOrderPresenter createPresenter() { + return new TaxiPassengerServingOrderPresenter(this); } /** * 设置进度条最大值为 起点终点首次规划出的值 - * @param maxInt */ - private void setSeekBarMax(int maxInt){ + private void setSeekBarMax(){ + //计算订单起点和终点距离 + int maxInt = TaxiPassengerModel.getInstance().calculateOrderDistanceSum(); + Logger.d(TAG,"maxInt = "+maxInt); mProgressSeekBar.setMax(maxInt); } @@ -142,39 +154,11 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements */ @RequiresApi(api = Build.VERSION_CODES.N) private void updateDriveProcessLoading(int progressLoading){ - mProgressSeekBar.setProgress(progressLoading, true); -// mProgressSeekBar.setMax(55); -// mProgressSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { -// @Override -// public void onProgressChanged(SeekBar bar, int i, boolean b) { -// -// } -// -// @Override -// public void onStartTrackingTouch(SeekBar bar) { -// -// } -// -// @Override -// public void onStopTrackingTouch(SeekBar bar) { -// -// } -// }); + mProgressSeekBar.setProgress( + TaxiPassengerModel.getInstance().calculateOrderDistanceSum() - progressLoading + , true); } - private void initListener() { - TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(this); - TaxiPassengerModel.getInstance().setOrderStatusCallback(this); - TaxiPassengerModel.getInstance().setControllerStatusCallback(this); - TaxiPassengerModel.getInstance().setVeloctityCallback(this); - } - - public void releaseListener(){ - TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(null); - TaxiPassengerModel.getInstance().setOrderStatusCallback(null); - TaxiPassengerModel.getInstance().setControllerStatusCallback(null); - TaxiPassengerModel.getInstance().setVeloctityCallback(null); - } @Override public void onResume() { @@ -182,6 +166,7 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements if (mMapDirectionView != null) { mMapDirectionView.onResume(); } + TaxiPassengerModel.getInstance().naviOrderStartToEnd(); } @Override @@ -199,17 +184,10 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements if (mMapDirectionView != null) { mMapDirectionView.onDestroy(); } - releaseListener(); + TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); } - @Override - public void routeResult(List models) { - if (models == null) return; - - List latLngList = new ArrayList<>(); - for (AutopilotRouteInfo.RouteModels routeModel : models) { - latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon())); - } + public void routeResult(List latLngList) { Log.d(TAG, "routeResult:" + latLngList.size()); if (latLngList.size() > 0) { drawablePolyline(latLngList); @@ -245,17 +223,13 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements } } - @Override - public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) { - updateOrderStatusView(order); - } - - private void updateOrderStatusView(TaxiPassengerOrderQueryRespBean.Result order) { + public void updateOrderStatusView(TaxiPassengerOrderQueryRespBean.Result order) { mTPOrderStartStation.setText(order.startSiteAddr); mTPOrderEndStation.setText(order.endSiteAddr); if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus){ mTPOrderStatus.setText(getString(R.string.taxi_p_arrive_to_start)); + setSeekBarMax(); return; } @@ -265,14 +239,15 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements } } - @Override - public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) { + @RequiresApi(api = Build.VERSION_CODES.N) + public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) { Calendar calendarArrive = TaxiPassengerUtils.formatLongToCalendar(System.currentTimeMillis() + timeInSecond); String arriveTime = TaxiPassengerUtils.formatCalendarToString(calendarArrive, TaxiPassengerUtils.TAXI_HH_mm); DecimalFormat fnum = new DecimalFormat("##0.00"); String remainDis = fnum.format((float) meters / 1000); int remainTime = (int) timeInSecond / 60; updateOrderDisAndTimeView(remainDis,remainTime,arriveTime); + updateDriveProcessLoading(meters); } private void updateOrderDisAndTimeView(String remainDis, int remainTime, String arriveTime) { @@ -281,19 +256,10 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements mTPOrderRemainArriveTime.setText(arriveTime); } - @Override - public void onVRModeChanged(boolean isVRMode) { - - } - - @Override public void onCarLocationChanged(Location location) { - if (null != location){ - runOnUIThread(() -> updateSpeedView(location.getSpeed())); - } + runOnUIThread(() -> updateSpeedView(location.getSpeed())); } - @Override public void onLimitingVelocityChange(int limitingVelocity) { mLimitingVelocity = limitingVelocity; } @@ -323,7 +289,7 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements , 0xFFCEEEFF ,0xFFA1DAFF); }else {//超速 return TaxiPassengerUtils.getGradientFontSpan(content - ,0xFFCEEEFF ,0xFFA1DAFF);//todo 换成报警颜色 + ,0xFFFE2505 ,0xFFFF6F62); } } @@ -350,7 +316,8 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements private void startIvCompass(float bearing) { bearing = 360 - bearing; Log.d(TAG, "startIvCompass: " + bearing); - rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); + rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF + , 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setFillAfter(true); mMapArrowIcon.startAnimation(rotateAnimation); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/OrderRouteUpdateReqBean.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/OrderRouteUpdateReqBean.java index 587d14fe58..470869b5a8 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/OrderRouteUpdateReqBean.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/OrderRouteUpdateReqBean.java @@ -12,8 +12,8 @@ public class OrderRouteUpdateReqBean { public List points; public static class Result { - public Double lat; - public Double lon; + public Double latitude; + public Double longitude; } public OrderRouteUpdateReqBean(String orderNo, List points) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java index ba2b7d20ad..b6c229a305 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java @@ -1060,8 +1060,8 @@ public class MogoOCHTaxiModelNew { for (int i =0; i < models.size(); i++){ OrderRouteUpdateReqBean.Result point = new OrderRouteUpdateReqBean.Result(); - point.lat = models.get(i).getLat(); - point.lon = models.get(i).getLon(); + point.latitude = models.get(i).getLat(); + point.longitude = models.get(i).getLon(); points.add(point); } diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 2f404eaa93..b0c38da4f5 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -107,6 +107,12 @@ public class MogoApplication extends MainMoGoApplication { HmiBuildConfig.isShowTurnLightView = false; } + if (DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxiPassenger")){ + //是否显示 限速UI + HmiBuildConfig.isShowLimitingVelocityView = false; + //是否显示 红绿等 + HmiBuildConfig.isShowTrafficLightView = false; + } //och模块 MogoModulePaths.addModuleFunction(new MogoModule("/och/api", "IMoGoFunctionProvider"));